DAVID Маланки: Добре, ми повернулися. Так що для збудлива висновок, наш останній розділ на веб-програмування, який я думали, що ми використовуємо в якості загального терміна щоб захопити кілька залишилися тем. Так що в кінці день, ми насправді робимо трохи практичний веб-програмування з мовою називається JavaScript. І я думаю, що ми будемо дивитися на щось пов'язане з зображеннями і відкривати щось таємно заховані в зображенні, а також поглянути на Google API Карт, прикладного програмування Інтерфейс, як щось представник від типу програмного забезпечення це все більш і вільно доступних сьогодні. Але чому не ми подивимося як інгредієнт в цьому світі що ми частково було приймаючи як належне існує протягом деякого часу, база даних. Упродовж минулої доби і півтора ми припускали що у нас є доступ до бази даних, але Яку проблему вирішити бази даних? Що це робить для нас? Що це? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: містить всю інформацію, ОК, а які види інформації ви могли б покласти в нього? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Будь-яка інформація ви поклали в нього, ви отримаєте назад. Це правда. А на типового веб-сайту або веб додаток, які види інформації, зокрема, могли б ви поклали в? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Користувачі. Так що користувач? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: OK, зареєстровано Користувач сайту. А що це значить Зберігати інформацію користувачів? Що складає користувача? Користувач має те, що? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так, особистий дані, і мені це подобається. Давайте бути більш точним. Таким чином, користувач, як правило, має ім'я, що ще може мати користувач? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: addr-- ОК, тому спочатку ім'я, прізвище. Добре. Насправді, давайте виправимо що, так як це буде щоб відкрити можливість для обговорення, як і раніше, в подальшому. Ім'я, прізвище, стать. ID якийсь. Що ще? Я чув дещо ще раніше, теж. Електронна пошта, поштова адреса. Так що давайте зупинимося там і тепер розглянемо не те, що ми зберігаємо в базі даних, но--, а не чому, так як це, можливо, Очевидно, що після реєстрації користувача, Ви хочете, щоб пам'ятати про них протягом деякого часу. Ви не хочете його просто зберігати в ОЗУ і бути forgotten-- так давайте зосередимося на як. Виявляється, що в світ баз даних, є принаймні два типи в ці дні. Те, що називається базою даних SQL, Мова Структурованих Запитів, або, симпатично по імені, NoSQL, який не є SQL. І остання є приклад того, що може можна назвати об'єктно-орієнтованим, або об'єкт магазин, база даних який зберігає об'єкти, а не, вибачте мені, як ми незабаром побачимо, рядки. Таким чином, ми зосередимося на мить на перший з них, а саме, SQL бази даних, якщо тільки тому, що так добре знайомі вже, кому-небудь який використовував Excel або Таблиці Google або Apple, Числа або будь-який стандартний програми електронних таблиць, або, що те ж саме, або більш витончено, щось на зразок Microsoft Доступ або Oracle або MySQL або PostgreSQL, всі з яких є назви продуктів для реалізацій в наступній ідеї. Реляційна база даних просто то, що є рядки і стовпці. І по рядках і стовпцях, Я буквально маю на увазі щось як це, так, де ми могли б мати ім'я поля і його тип тут. І насправді, дозвольте мені Тепер починають відобразити їх. Так що насправді, я не знаю, чому я звернув окрему діаграму. Давайте тримати це просто. Ми маємо право тут Початок нашого столу, де це ім'я поля і це тип даних, а також за типом Я маю на увазі наступне. Чи є це число, чи дійсно це рядок, короткий рядок, як слово, це абзац, це двійкові дані, такі як зображення? І давайте просто дражнити це один від одного на мить. Отже, перше ім'я, номер, Рядок, великий шматок text-- ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так, тому рядок. І в контексті бази даних, ми будемо зазвичай називаємо це поле CHAR. Скажу тільки напівкоксу зараз, але ми збирається уточнити це в один момент. Характер поля. Прізвище, ймовірно, те ж саме. Стать? Чоловік або жінка, так це те, може бути полем символ. Це може бути або цитата, кінець цитати "Чоловічий" або цитата, кінець цитати "жіночий" або це може бути або підшкірно. Якщо ви хочете бути більш широким, вам може знадобитися третє значення або якийсь інший області в цілому. І таким чином ви могли б використовувати вірно невірно. Поле можна назвати чоловіком, і то можна сказати, що істинним або хибним. Але це не обов'язково захоплювати всю інформацію, ви можете захотіти. Так виходить, що є інший тип поля, які можуть бути корисними тут в типовій базі даних, називається перерахування, де це поле характер, але ви, дизайнер, дістатися до перерахувати можливі значення, як цитата, Unquote "чоловічий", цитата, Unquote "жіночий" і так далі. Так що будь-яке значення знаходиться у вашій базі даних, насправді характер на основі, але він повинен бути одним з цих значень. Ми, ймовірно, не бажали б мати перерахування для імені або прізвища. В іншому випадку ми мали б перерахувати, як ім'я походить від, буквально кожен можливе перше ім'я і прізвище. ОК, так що ID повинен бути ідентифікатор? Так, так, може бути кілька. Так давайте дотримуватися що на даний момент число. І за кількістю, число це трохи занадто широкий в даний час. На кінець другого день, я відчуваю, що ми повинен бути трохи точнішим. Номер може означати, як, це може бути щось на зразок 1.236. І це, мабуть, не що ми маємо на увазі під ідентифікатором. Що ми, ймовірно, маємо на увазі під ідентифікатором? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: О, добре, так що може бути, це навіть не число. Може бути, це насправді унікальний ідентифікатор це рядок, як ім'я користувача. Так що зовсім, може бути. Я думаю, що хто-то, ймовірно, мав на увазі числові, хоча. Так що давайте залишимося з цим. Що це за номер? Що більше precise-- ціле число. Так як число 0, 1, 2, 3, тому ми будемо називати це ціле число. І навіть тоді, я міг бути причіпки, це насправді не просто загальне число ви хочете. Ви, ймовірно, не хочуть негативні значення, тільки тому, що він просто відчуває себе дивно. Ви, ймовірно, хочете позитивні цілі числа. Таким чином, ви можете також висловити що в базі даних, але зараз ми будемо говорити ціле число. E-mail? Це, ймовірно, просто-- що? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Цей лист, але це символи, чи не так? У нього є тільки боягузливий характер, як ЕН "на символ" або щось інше, але це як і раніше символьне поле. І поштову адресу? Характер поля. Так що це гарний початок, але давайте бути трохи точнішим в даний час. Так виходить, що в бази даних, ви часто є вибір над більш витонченою версії цих речей. Насправді, в типовій базі даних SQL, SQL, або в більш загальному плані, реляційна база даних, бази даних з рядами і колони, часто отримати вказати не тільки від типу field-- дозвольте мені зробити деяку кімнату here-- але і довжину. Так як довго це ім'я? Я думаю, D-A-V-I-D. ОК, я отримав його ймовірно, просто ображені як половина людей в кімнаті, праворуч, так як ваші імена довше, ніж п'ять листи, так що п'ять здається трохи егоїстично і наївні, так що найкраща цінність? 10, все в порядку, і я думаю, ми все в порядку в кімнаті. 13? 30? Чому б мені не взяти Підхід раніше, коли ми говорили про масивах і пам'яті? Чому я не можу просто сказати, як 1000 ° Ім'я Ніхто не збирається щоб бути більше, ніж 1000. Відсунути. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так, це марнотратно, право, особливо якщо більшість імен тільки п'ять або 10 або 15 символів, це дуже марнотратно. Таким чином, ви знаєте, що? Це свого роду складне питання. Тепер ми можемо, звичайно, аналізувати англійську мову і назви будь-якого іншого мови в і з'ясувати, добре, що таке average-- середньому не реально допомогти us-- що максимальна є ймовірно, що ми дійсно хочемо. Але виявляється, у нас навіть є деякий вибір за типом тут. У типовій базі даних SQL, ви є щось, зване голець поле а також VARCHAR, V-A-R, для змінного поля напівкоксу. А різниця полягає в наступному. Поле голець, ви дизайнер, повинні вказати заздалегідь точна довжина поля. Так що, може бути, перше ім'я як 20 відчуває себе свого роду сейф. Можливо, доведеться зробити деякі Googling до побачити, якщо це насправді досить безпечно. Там, напевно, ім'я з 21 персонажі, але зараз, припустимо, 20 є безпечним. Поле символ буде означати, в базі даних, вам використовують 20 і завжди 20 символів. Тепер, якщо це тільки D-A-V-I-D, 15 з них тільки збирається бути порожнім символів, але ви все ще використовуєте всі 20 байт. Поле VARCHAR, навпаки, означає, Рядок повинен бути до 20 символів але якщо це тільки п'ять, ви тільки збираєтеся використовувати п'ять, шість або, може бути, для особливе значення в кінці, як що 0 ми обговорювали, що означає кінець символу Послідовність в пам'яті. Так що, коли ви думаєте ви можете вибрати символ в порівнянні з VARCHAR, враховуючи, що компроміс? Char використовує це багато символів, VARCHAR використовує не більше, що багато персонажів. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Добре, коли ви знаєте, довжина рядка досить переконливим просто використовувати символ, тому що, якщо ви це знаєте, просто покласти його вниз. А може бути, це вірно для блискавки код, в США, по крайней мере, 02138, це завжди буде п'ять символи, поки додати тире чотири. Але ви могли б мати деякі значення який ви завжди знаєте довжину. Або, може бути, державні символи, як Нью-Йорк в Нью-Йорк, і MA для штату Массачусетс в США. Може бути, у вас є якісь ситуації, де це цілком розумно, але за цією логікою, чому ми навіть overthinking це? Чому б нам не використовувати VARCHAR, а потім ми просто завжди використовуйте два символу в будь-якому випадку, чи завжди використовувати п'ять символів в будь-якому випадку? Чому б не просто зберегти для VARCHAR все, за цією логікою? Там повинно бути підступ. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Могли написати щось неправильно. Так що це правда. Але навіть тоді, вони не можуть використовувати більше пам'яті, ніж я виділяю. Я до сих пір остаточне кажуть по всій довжині, тому вони не можуть випадково зробити ця помилка, але хороша думка. Це більш тонкий, але це дуже споріднений до нашої дискусії, насправді, масивів і пов'язані списки раніше. Виявляється, що в базі даних, якщо він знає, що все значення є фіксованої довжини, навіть якщо деякі з цих значень є порожніми, вид естетично порожнім, D-A-V-I-D, а потім 15 заготовок, виходить, що якщо кожен Поле має ту ж довжину, так само, як масив були всі його речі спина до спини, щоб спина до спини, так що ви могли б просто плюс 1, щоб дістатися до наступного значення, та ж ідея в таблиці бази даних. Якщо все вашого персонажа рядки мають однакову довжину, у вас є те, що називається довільним доступом. Якщо всі рядки мають довжина 20, ви не просто зробити плюс 1 ви просто робите плюс 20, плюс 20, плюс 20, плюс 20, і ви можете дуже швидко прокрутити або пошук за всіма даними. Поле змінної символ, навпаки, не завжди має 20 символів. Це може мати 20, а потім 15, а потім 19, а потім 10, і тому, якщо ви хочете знайти через нього, ви не можете просто сліпо додати 20 байт, щоб дістатися до наступного. Ви в буквальному сенсі доведеться шукати через так як край структури даних, якщо ви будете, є нерівним. Це частково входить і виходить на основі за фактичною довжині рядка. Отже, коли ви знаєте довжину, як Каріма каже, використовуйте поле голець, тому що ви отримуєте, що ефективність буття вміє шукати через нього швидше коли ви шукаєте даних, в іншому випадку використовувати змінну. На жаль, у мене немає доброї відповіді як довго назва має бути, але щось на кшталт ім'я, я б сказав, VARCHAR є загальним тому що він не збирається бути фіксованої довжини для всіх. 20, я не знаю, 20 відчуває себе трохи жорсткою. Давайте просто скажемо, 50, 50. Це насправді не варто вам, що набагато більше, щоб сказати 50 замість 40, але в якийсь момент, що вам потрібно щоб зробити дзвінок судження. Дуже часто, якщо чесно, для [? історичне?] причини, навіть якщо це надмірним, є 255, тому що деякий час тому, в популярних системах баз даних, як MySQL, безкоштовний інструмент з відкритим вихідним кодом що багато компаній як навіть Facebook використовується, це був максимум за замовчуванням так що люди просто пішли з ним. Так що не позбавлене сенсу, але ми будемо використовувати трохи більше інтуїції і сказати, впевнений 50, це ймовірно, трохи надмірним. Пол, я, як перерахування, і тому ми можемо тому перерахувати чоловіки або жінки, або, може бути більш ефективно, м або е або будь-якої іншої символізм, але перелічувальний відчуває, як хороший вибір там. Щоб було ясно, статі може бути просто VARCHAR, і ми могли б просто все згоден, як хороші люди, завжди ставити одні й ті ж цінності там. Чоловік або жінка або етажерку. Але проблема те, що ми могли б допущена помилка, так як [нерозбірливо] запропонував раніше в іншому контексті. Якщо ми робимо помилку, ми могли б отримати неправильні значення в нашій базі. Так що приємно про базах даних як Oracle і MySQL і інші, є те, що у вас є ця остання рівень захисту де адміністратор АБД, бази даних, хто розробляє цю таблицю, як ми в усній формі, могли б поставити на місце перерахування, що захищає проти цього, вказавши чоловік, жінка, і так ніхто не ще не програміст може випадково вставити будь-яке інше значення. Так що це було б добре. Це особливість. Так ідентифікатор, припускаючи, що числовий ідентифікатор, його ймовірно, повинен бути позитивним цілим числом. І іноді ми маємо можливість обговорити довжину. Ви не зазвичай вказати номер тут, ви б замість того, щоб вказати це INT, або великий INT, так як вони зазвичай називають. Але, як правило, ціле число було б, скажімо, 4 байта. І якщо це 4 байта, це скільки біт? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: 32 біта. Так скільки користувачів ми можемо мати в в нашій базі даних, якщо всі вони мають ідентифікатор і цей ідентифікатор повинен бути унікальним? 32 біта означає, що ми маємо шаблони одного, два, три, чотири, five-- так як багато різних моделей нулів і ті, ви можете мати, якщо є 32? Це те ж саме, питаючи, що це від двох до 32? Це велике число, Я зовсім не можу отримати право, але я знаю, що це приблизно 4 млрд. Таким чином, це означає, що ваша таблиця бази даних може чотири мільярди користувачів, і це все. Так що це цікаво дизайн підтекст. Пристойну кількість компаній вирішили, можливо, не так багато для їх користувачів таблиці, тому що наявність 4 мільярди користувачів є рідкісною проблемою. Це свого роду Facebook-стилі проблема, а не типова проблема компанії. Але, може бути, якщо у вас є журнали транзакцій або якийсь дані, які постійно буде записано в вашу базу даних що абсолютно може мати мільярди і мільярди рядків, і Ви використовуєте ціле число для нього, що станеться, як тільки ви отримуєте номер рядка 4 млрд а потім ви намагаєтеся вставити Четирёхміліардное і 1, так би мовити? Я спростивши число біт. Ви можете відрізати тому, я маю на увазі вас повинні впоратися з цим так чи інакше. І те, що комп'ютер, як правило, роблять, думати про це навіть з ранку, якщо у вас є 4-бітове значення як 1, 1, 1, 1, яка, просто, щоб зв'язати ранок разом у другій половині дня, то, робить це число представляють в двійковій системі? Добре, ми зробимо це простіше. Що робить цей номер представляють в двійковій системі? Добре, ми зробимо це простіше, ніж це являє в двійковій системі? ГЛЯДАЧІ: Три. DAVID Маланки: Три, тому що ми маємо ті column-- [Сміх] Уф! Ми мали стовпець з них і стовпець двійок. Тому припустимо, що, дійсно, наш [? присадибної ділянки?] не 32 біта, але це були два біта, ми можемо рахувати від числа 0, 1, 2, 3 користувача, а потім ми начебто назад до користувача 00 разів. Так що це те, що зазвичай відбувається. Якщо ви коли-небудь чули expression-- ймовірно, немає, але якщо ви have-- Целочисленное переповнення, де ви тримати гортати всі ваші біти щоб бути найбільшими можливими значеннями, а потім ви з бітів, що зазвичай відбувається? Чому я говорю 00? Ну, це три. Як я уявляю 4? як представляють для числа 4 в двійковій системі? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: одно-- так, не кажіть, 100 саме по собі, тому що він має неправильний конотація, але 1-0-0. Так що номер 1-0-0 дійсно правильно, але якщо у вас є тільки два біта, що ви дійсно зробили? Ви перекинулася 00. І справді, це те, що буде відбуватися. Насправді, ви можете думати про це більш фамільярно. Якщо ви пам'ятаєте, то, що, 16 років тому, світ повинна була закінчитися, коли проблема Y2K сталося. Чому це було? Ну більшість комп'ютерів, для розумні рішення, зберігали номера Сподобався 1975 рік або 1999 рік тільки за допомогою двох цифр в пам'яті комп'ютера. Так що, звичайно, що відбувається, коли ви отримуєте до 2000 року, ви йдете до цього, або, вірніше, так. Таким чином, ви йдете до 2000 року, але якщо ви використовуєте тільки дві цифри це виглядає як рік 00 і так що ви перекинулася. І ось чому багато систем необхідно оновити в той час. Так з цим сказав, такі компанії, як Facebook запустити проти цього. Таким чином, єдиний спосіб впоратися з Ситуація, відверто кажучи, передбачити його. Або чистий спосіб впоратися з цією ситуацією це передбачити його, так що ви не повинні внести зміни пізніше. Таким чином, замість 8 байт, ви знаєте, що? Я збираюся бути далекоглядними тут, навіть якщо це трохи оптимістично, що ми будемо мати 4 млрд і 1 користувачів на нашому сайті. Але давайте просто використовувати 8 байт, або 64 біта, які в цілому будуть називається велике ціле число, дуже технічний. І це просто означає, що ви можете мати ще більше цифр вашого номера. Але це важливо проектне рішення, тому що якщо ви вибираєте номер, має занадто мало бітів виразності ви могли б насправді створити помилка в вашому програмному забезпеченні. Добре, так що давайте укутати з електронною поштою і поштову адресу. Так електронна пошта, як довго повинен адреса електронної пошти буде? 50. Я дійсно поняття не маю, але це ймовірно, щось подібне, бо інакше ніхто не збирається написати вам, якщо він стає занадто довго, так що 50, давайте йти з ним на даний момент. Поштова адреса, як довго це має бути? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Це не просто поштовий індекс, хоча. Поштова адреса, я чув. Так що це як 1 Brattle площі, кома, Cambridge Mass., кома, 02138. І справді, дозвольте мені просто тягнути до невеликого листа тут. Це відчуває, як це упущена можливість. Якщо у нас є 1 Brattle площа, кома, Cambridge MA 02138, Я відчуваю, що ми можемо зробити краще ніж просто поштова адреса. Чому ми не вибухають це трохи? Що я хилю? Що ми повинні замість того, щоб мати для наших рядів тут, можливо? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так, так що давайте називають його street_number, і підкреслення просто загальний спосіб мати те, що виглядає як простір, але це не так, насправді. Стріт, а потім city-- шкода? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Ми могли б зробити це. Лінія одна, друга рядок. Чому б нам не буде тримати його просто на даний момент, але це абсолютно прийнятне рішення. А потім стан, а потім давайте бути трохи американо-орієнтованих зараз і просто зробити поштовий індекс, тільки тому, що це призведе до цікавої помилку або проблема тут. Тому припустимо, що тепер нашу адресу. Це трохи більше дратує, що у нас є всі ці додаткові поля, але тепер ми можемо помітити речі трохи краще. Так що тепер номер вулиці, ймовірно, не повинен бути символ, чи повинен? Що це має бути? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Може бути, ряд як ціле число раз? Велике число? Ви, напевно, не живуть в 4 мільярди Main Street або що-небудь божевільний, як це. Так ціле число, ймовірно, добре, але хто-небудь коли-небудь жив за адресою, як 1A Brattle площі, або 1 і 1/2? Ці речі існують, на жаль, навіть якщо ви не жили там, Є ці аномалії як квартира 1A, 1B, 1C. Таким чином, ви знаєте, що ми, ймовірно, не повинні йти з цілими, в іншому випадку ми будемо втратити деякі продажу. Char поле, може бути? Я не знаю, як довго. Це, ймовірно, не буде що довго, так що 10 або щось. Ніхто не збирається писати довший номер, може бути. Але знову ж таки, ми повинні, ймовірно, більше думати про те, що. Може бути, Google, зробити деякі дослідження, але ми підемо з нашими потрохами на даний момент. Вулиці, голець, 50, я не знаю. В якийсь момент, ніхто не збирається написати його на конверті, теж, так що там, напевно, деякі верхні межі там. Місто, такий же, впевнений, так що обвуглюється 50. Держава, може бути США, орієнтованих на даний момент. Так що це може бути список, так що вид судового рішення виклику, держави. Це може бути як два символи. Так що насправді, може бути, я повторював напівкоксу. Я маю на увазі, ймовірно, VARCHAR, як раз для деякої ефективності, але ми повернемося до що рішення в даний момент. Може бути символ довжини 2 для держави. Якщо в США вони мають, як MA, Массачусетс, Нью-Йорк, Нью-Йорк, штат Нью-Джерсі, Нью- Джерсі, і так далі. Так що це може бути виправлено в цьому. DC для Вашингтона, округ Колумбія. Але я думаю, Олів'є, ти запропонував інший підхід. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так, так що це трохи дратує ввести, але перерахування може мати більше сенсу, тому що таким чином, по крайней мере, в США, ви могли б перерахувати, якщо утомливо, але Ви робите це тільки один раз у вашій базі даних і ніколи більше не доведеться думати про це, все 50 кодів двох символів. Так що я люблю ENUM. Давайте дотримуватися цього там, тому що це свого роду забезпечує дотримання більш строгість. А потім поштовий індекс? Я думаю, що Ендрю була думка про те, що ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так, п'ять або дев'ять. Давайте просто тримати його просто. Просто зробіть п'ять зараз. Але, можливо, я міг би просто зробити ціле число, чи не так? Я міг би, але ви знаєте, що я зробив ця помилка одного разу, в якомусь сенсі. Кілька років тому я був перенастроюванню з Microsoft Перспективи для Gmail, і перспективи є спосіб експорту всі ваші контакти, як файлу Excel, файл CSV, значення, розділені комами файл. І я зробив помилку, я думаю, з подвійного клацання по ньому, як тільки я скачав експорт, щоб переконайтеся, що він виглядав, як я очікував. Повинно бути, я вдарив Зберегти або дозволити автосохранение удар в або щось. Тому що, коли я потім імпортувати це в Gmail, все це працювало. Але протягом багатьох років, і до цього дня, і Я зробив це п'ять, 10 років тому, Я до сих пір знайти друзів, які мають адреси, які виглядають, як це. Чому? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Знадобилося вперед 0, ну, це, скоріше, взяв весь поштовий індекс, як ряд, і, отже, це провідний 0, що означає це не має ніякого значення. І так 2138, здається, мій поштовий індекс. І це, чесно кажучи, дратує Excel особливість якої я думаю, що за замовчуванням, навіть якщо це означало просто бути текст, Microsoft Excel вирішує, дозвольте мені бути корисним, і про, я бачу тільки цифри. Давайте розглядати їх як числа. І це усічення нулі. Я клянусь перед Богом, кожна пара місяців я знайти адресу, і зі свого роду обсесивно-компульсивного розладу, я повертаюся в і додати 0, хоча я ніколи послати людей листи або що-небудь. Але я до сих пір знаходять залишки цього. Так що це сказати, чи є це гарною ідеєю? ОК, немає, тому що хтось в Массачусетс, в цій області, матиме O провідну їх. Так що давайте йти з подібним голець, напевно, п'ять. І ось, ми розуміємо, може використовувати перерахування і ми може перерахувати 10000 можливі коди ZIP, але це відчуває, як це, ймовірно, перетинаючи лінію, як, вигоди. Якщо ви повинні ввести, що великий обсяг даних в вашу базу даних для захисту від чогось. Так символ зрозумів, що ви могли б ввести в Н-Е-Л-Л-О, як ваш поштовий індекс, який, очевидно, не числовий. Так що немає ніякого способу, в типова база даних, вказати тільки числові і тільки п'ять символів, таким чином, ми будемо мати щоб зробити це в коді. Ми збираємося зробити це в PHP або Java або будь-який інший мову ми використовуючи на сервері для забезпечення такого роду обмеження. Ого! Добре, тому всі питання тільки поки що? Давайте зробимо ще одне проектне рішення. Виявляється, що вам також можете вибрати, при проектуванні бази даних SQL, або типові реляційні database-- де знову ж таки, реляційна просто означає рядки і стовпці, ось як ви організувати ваші data-- і усвідомити, що це означає, Я вводить в оману що, я це drawing-- то, що називається схема для таблиці бази даних. це як специфікації для table-- але коли приходить час, насправді зберігання даних, і ми будемо робити це тільки приклад тут. Я збираюся відкрити Excel, тому що Excel дасть мені рядки і стовпці. І це саме те, що Oracle і MySQL і інші інструменти дадуть мені. Так що я просто буду використовувати це заради Обговорення в. Дозвольте мені йти вперед і відкрити Представник документ тут, збільшити трохи. Так, наприклад, наші заголовки тепер прізвище, ім'я, стать, ID, адреса електронної пошти, номер вулиці, вулиця, вигуки. Вулиця, місто, штат, просто про поміщається на екрані. Так що ж це означає, що, коли Спочатку користувач реєструється на моєму сайті, це буде щось на зразок Давид, Малан, м, скажімо, 1, malan@harvard.edu, вулиця номер буде бути як 1 Brattle площі, Кембридж, Массачусетс, 02138, а потім так далі. Тому, коли я говорю, що реляційна база даних або бази даних SQL це рядки і стовпці, Я маю на увазі це. Що фактичні дані зберігаються в рядках і стовпцях. Це просто збіг, що ми говорили, і я був просто малюнок його в рядках і стовпцях. Це просто схема, всеосяжна визначення. Так що з цих полів тут, або що то ж, там, які є поля, які ви думаєте Я, ймовірно, шукати на, якщо я є користувачем або якщо я є адміністратором бази даних? Мовляв, які поля я такий насправді буде шукати далі? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Ім'я, та так Мені подобається той факт, that-- так, електронна пошта може бути досить поширеним явищем. На жаль, ви сказали ім'я. Так maybe-- і знову, ми вид говорити абстрактно. Я не знаю, чому ви б шукати для імені, але це відчуває себе розумним, якщо ви шукаєте користувач. Може бути, стверджує, звичайно, ID. І це слизький схил, тому що я міг зуміти сценарій, при якому може бути, мій бос попросив мене, скільки чоловіків у нас є на нашому сайті? Скільки жінок у нас є на нашому сайті? І ось в цей момент, ви можете захотіти шукати по гендерної області, теж, і нічого іншого. Таким чином, є компроміс тут. Знову ж таки, немає ніяких правильну відповідь, але є це функція в більшості баз даних SQL відомий як індексації, в результаті чого ви, дизайнер, адміністратор бази даних, можете вирішити заздалегідь, які Поля бази даних повинні оптимізувати для пошуку по. Ви могли б дуже наївно сказати, оптимізувати це, оптимізувати, що, оптимізувати це, оптимізації, що і в цьому, і база даних буде зробити деякі магічні речі під капот, і робити щось таким чином, що наступного разу ви будете шукати на будь-якому з цих полів, це, по суті, буде швидше. Це можливо. Це не скасовує сам себе. Але повинна бути розплата. Якщо ви по наївності, або з надмірним ентузіазмом скажімо, індекс всіх цих областях, так би мовити, зробити їх усіх ефективного пошуку, яку ціну ви, ймовірно, платити? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Продуктивність. Що ви маєте на увазі? Ну продуктивність, принаймні в Контекст я обговорюю, це краще зараз. Це визначення індексації. Це зробить пошук швидше. Так що час зменшується, так би мовити. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Space. Отже, ще раз, це загальна торгівля. Я можу прискорити пошук, але це буде коштувати вам більше байт простору. Чому? Ну, за замовчуванням, якщо у нас немає жодного з ці червоні зірки, жоден з цих показників, як я кажу, як ви пошук імені в цій базі даних? Отже, давайте звернемо Увага до цього прикладу. Якщо у нас є Девід і Скаллі і Kareem і Arwa і інші в цих рядках, наприклад. Так що давайте робити саме це. Скаллі знаходиться тут, а потім ми маємо Каріма і Arwa, і всі інші, якщо ви цього не зробите мають певний індекс, так би мовити, краще, що ви можете зробити, це лінійний пошук. Якщо ви шукаєте Arwa, ми не матиме можливість перейти прямо до неї швидко. Ми збираємося почати вершину і пройти весь шлях до дна, не в відміну від нашого оригіналу Майк Сміт приклад. Однак, якщо я говорю, агов, бази даних, Індекс перше поле ім'я, то це буде щось робити вправнішим і підтримувати щось як бінарний пошук. Це, ймовірно, не бінарний пошук по собі. Бази даних, як правило, використовувати інший Структура даних під назвою B-дерева, не слід плутати з бінарними деревами, що просто зробити це швидше шукати щось логарифмічна в природі. Але ціна, яку ви платите, щоб створити що особливість, що структура даних в пам'яті, це більше байт. Так що це може зайняти кілька мегабайт, деякі гігабайти, хто знає? Це залежить від даних. Так що в якийсь момент, ви повинні вирішити, це, ймовірно, не є загальним випадком. Так що ж фактична загальна випадки, якщо ви дійсно повинні були вибрати, що ваші улюблені поля можуть бути? Електронна пошта. І мені подобається, тому що адреса електронної пошти, в теорії, повинні бути унікальними. А так зазвичай, коли ви знаєте, заздалегідь, що один з ваших полів або буде унікальним, що як правило, гарне поле шукати далі, бо таким чином, коли ви шукаєте щось, ви збираєтеся отримати назад один або нуль відповідей, а потім ви зробили. Вам не потрібно тримати шукає все ж інші. І тому в даному випадку тут, електронна пошта, до тих пір поки ви не можете двічі зареєструватися з тієї ж електронної пошти, є хорошим. ID за визначенням, в інформатика світ, якщо ви говорите про ID, що краще бути унікальним. Це свого роду конотацією посвідчення особи або ідентифікатора. А решта з них можуть бути, давайте назвемо їх приємно імущими, але насправді не потрібно. І тому в базі даних, Ви визначаєте індекси, але ви можете бути ще більш точним. Ви можете сказати, агов, бази даних, переконайтеся, що кожен ідентифікатор в цій таблиці є унікальним. Навіть не дозволяйте програміста випадково покласти в дублікаті електронній пошті або дублювати ідентифікаційний номер. Так само, як перерахувань захистити нас так само, вас може мати такі заперечення нижчого рівня. І тому проектування баз даних, в Певною мірою, це свого роду задоволення, тому що ви робите це захищаючись. Ви начебто припустити, що ви працюєте з жахливий, жахливий програмістів і ви хочете, щоб покласти в стільки оборони як ви можете захистити ваші дані, але одночасно ви хочете щоб допомогти їм працювати краще вибравши який поля для оптимізації. Але ви не можете обов'язково робити це в вакуум, як ми начебто тут. Ви повинні знати, які ці загальні випадки буття. якщо розробники здійснення адресної книги, ви можете дуже добре хочете, щоб мати можливість шукати майже на кожному полі, тільки за своєю природою додатки. Так що, може бути, ви проводите що додатковий простір. Право, всі питання? Так. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Немає ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: OK. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: О, так що ми мова йде в дорозі Тепер це повністю залежить від конкретної мови. Таким чином, ми зараз говоримо про реляційних баз даних, в більш загальному плані або SQL бази даних в більш загальному плані. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Краще слово, щоб використовувати це, може бути використаний будь-яку мову. Так що я можу писати код JavaScript, C код код, C ++, Java-код, Ruby код, всі з яких говорять до бази даних і виконувати запити. Насправді, це не погано безпосередньо перейти до приклад запиту. І знову ж таки, ми не збираємося вдаватися в Java або C ++ або будь-який з цього більше, але в SQL, мова, до якого я продовжую посилаючись, Structured Query Language, це саме по собі є мовою програмування, але це означало бути використаний для, немає здивування, структурованих запитів запитів. Під цим я маю на увазі це. Спосіб вибору даних з бази даних MySQL це ви в буквальному сенсі типу у вашій програмі щось на кшталт виберіть зірку від користувачів. Я припускаю, що ця таблиця, відтепер називається користувачів. Я міг би назвати це все, що ми хочемо, але це свого роду має сенс. І тому вибір дуже загальний дієслово, якщо ви буде, в SQL, яка буквально робить це. Як ви думаєте, зірка означає, що в даному контексті? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Я шкодую? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Не потрібно, це ширшим, ніж це, насправді. Це дикий символ карти. Зірка майже завжди означає що-небудь, так що це означає, що, в даному випадку, вибрати все з бази даних. Тому, коли я говорю про це, я маю на увазі поверни мені кожен стовпець від мого столу називається користувачів. Так дайте мені набір результатів, як це називається. Іншими словами, дайте мені копію електронними таблицями, є те, що я хилю. Але якби я сказав, виберіть зірка від користувачів де ID дорівнює 1, наскільки великою має мій результуючий набір буде тоді? Або той же, скільки рядків має Я бути переданий назад з бази даних? Напевно, тільки один, якщо у мене є насправді обробляють ID в якості унікального ідентифікатора, і якщо Девід має той унікальний ідентифікатор, я повинні отримати назад одну і тільки один рядок що містить всю інформацію Давида. Якби я сказав, що це де ID дорівнює 99, я повинен повернутися, У цьому контексті, нульові рядки, принаймні на даний момент. Однак, якщо я насправді не хвилює про всю цю інформації, Я міг би просто сказати, де живе Девід? Виберіть поштовий індекс з користувачів, де ідентифікатор 1. Це дозволить вибрати для мене тільки поштовий Давида код, а не повнота цього рядка. Чому я міг би зробити це замість того, зірка запиту, дика карта? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так, я, можливо, буде потрібно тільки його. Так що продуктивність знову тут відповідь. Навіщо просити більше інформації, ніж вам потрібно, тому що навіть якщо це все в порядку разом, ви все одно повинні скопіювати ці дані, здавалося б, з бази даних в вашу програму так чи інакше, і це просто нерозумно, якщо вам потрібно тільки п'ять з цих цифр, не сукупність ряду. Так як же я вставляю користувача? Припустимо, що користувач має тільки зареєстрований в перший раз. Синтаксис зазвичай виглядає наступним чином. Вставити в користувачів, і то ми сказали б значення, і тоді ми сказали б значення як, скажімо, Лорен Скаллі, наш відеооператор прямо тут. І наступне поле є підлогу. Так що ми будемо говорити цитата, кінець цитати "Е", тобто ідентифікатор і я збираюся say-- давайте вдавати, що вона насправді не тут, тому ми перемотати в історії. Так 2 буде її ID. А потім наступне поле Ось її електронна пошта. Так що це буде схоже Лорен Скаллі і так далі, і ми просто точка точка точка його звідси на. Тепер він буде отримувати трохи утомливо, але запит вставки в кінцевому підсумку виглядати. Якщо я хочу, щоб позбутися від Скаллі, е-е-о, давайте дерегістріровать її, вона видаляє її рахунок, видалити з користувачів, де ID дорівнює 2, позбудуться Скаллі. Або я можу сказати встановити оновлення користувачів, скажімо, що ми можемо змінити? Припустимо, що вона рухається. Набір на блискавки дорівнює 021-- Нема, це її струм блискавки. 90210. Єдиний інший поштовий індекс Я знаю, що в світі. Так що зміниться її поштовий code-- насправді, це не змінило б її поштовий індекс. Що я тільки що робити? Незважаючи на те, що синтаксис, ймовірно, новий. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так, я переїхав всіх в Беверлі-Хіллз, штат Каліфорнія. Так що я повинен насправді сказати, де ID дорівнює 2. І так далі. Так що SQL все про них види інструкцій. Виберіть, вставляти, видаляти, оновлювати, з цими предикатами в кінці ці пункти, де, так би мовити. І є набагато більше, ви можете робити, але це насправді просто зводиться просто, якщо arcanely, висловлюючи що ви хочете зробити базу даних. А потім база даних буде з'ясувати, коли вставити Lauren Скаллі в бази даних, куди помістити її в пам'яті так що ми можемо дуже швидко отримати вона заснована на її адресу електронної пошти або на основі її ідентифікаційний номер або тощо. Так, Ден. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Дійсно хороший питання. Чи будуть ці сценарії переходу від Microsoft Access в Oracle до MySQL в PostgreSQL? Коротка відповідь: це залежить. Теоретично існує дуже значне загальне підмножина SQL який використовується у всіх з цих реалізацій. Проте, різні виробники мають додаткові функції до їх баз даних, щоб робити певні речі виходить за рамки цих функцій, які могли б, справді, перерва. Так що розробники шляху хеджувати проти цього, є те, що замість того, щоб писати сирої SQL-код, як я пишу тут, вони замість того, щоб використовувати бібліотеку, загальна бібліотека, яка сама по собі є свого роду більш високого рівня і тези геть, який продукт ви використовуєте. І це дає вам функції і процедури щоб зателефонувати, так що ви ніколи насправді писати сирої SQL. У теорії, то ви можете змінити продукти з Oracle в Microsoft або навпаки, або що-небудь ще, і ви в буквальному сенсі нічого не змінюють про вашому коді. Реальність, однак, є те, ви іноді відмовитися від функції в якості результату. Ви могли б вибрати продукт, тому що він отримав ці функції з доданою вартістю, і ви тільки зараз не використовуючи їх свідомо. І Цікаво, що більшість компаній, як правило, ніколи не відходити від своєї бази даних. Таким чином, в той час як це приємно є особливість, реальність Тобто, якщо ви капітального ремонту ваша база даних, ви ймовірно, що робить грона інших змін у всякому разі, що ви не обов'язково повинні передбачати, що. Так що, можливо, над-інженерні проблеми, але це дійсно залежить від контексту. Але в теорії, SQL спільно через ці різні продукти. Дійсно хороші питання. Так. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так, так ви можете думати базу даних це просто сервер, в кінці на наступний день, і всередині цього сервера це ціла купа таблиць, рядків і стовпців. І коли ви посилаєте запит, як це з вашої програми, ваш веб-сайт, написана на Java, Ruby, Python, незалежно, сервер отримує цю команду і інтерпретації його в буквально так само, як ми обговорювали раніше з інтерпретовані мови, а потім виконує будь-яку дію на нуль або більше рядків в нуль або більше таблиць. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Точно, точно. Так псевдокод для чогось як це могло б бути це. У файлі PHP або ваші файл Python або файл Java, ви б псевдокод код, або Скретч-подібні блоки, як, якщо користувач відвідує acme.com/register~~V вперше, потім вставити в користувачів і так далі. І ми б перевести це конкретніший код в кінці. Але насправді, у нас є все будівельні блоки тут, незважаючи на те, що ми пропускаючи деякі з етапів реалізації. Отже, дозвольте мені чіплятися, що ми чудово зробив тільки хвилину назад. Ви створили досить Повна таблиця для користувачів. Слід визнати, що ми могли б реалізувати це в кілька різних способів, але ви насправді призвело нас вниз по path-- і я кажу вам, але це, ймовірно, мій fault-- з досить неефективна реалізація бази даних. Це не нормовано. І я маю на увазі нормована там буде, з плином часу, значна надмірність, і, отже, неефективність, що це марна трата простору. На підставі тільки те, що ви бачите тут, може Ви бачите, де це марна трата простору збирається прибути з плином часу, , Як зареєструвати більше і більше користувачів для вашого сайту? Які дані можуть стати зайвими? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Чому ви маєте на увазі, що? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так. І давайте припустимо, що для цілей На сьогоднішній день, що це правда. Виявляється, і ми дізналися це важкий шлях, це не так. Якось кілька міст є, так чи інакше, той же поштовий індекс, який руйнує цю чудову інтуїцію. Але давайте припустимо, що це правда, тому що це майже завжди вірно. Тому припустимо, що поштовий індекс завжди пов'язане з тим же містом і стан, яке є свого роду розумного припущення, але невірно, виходить. Але розумне припущення для сьогоднішніх цілей. Тепер припустимо, що я живу в Кембриджі, MA, відповідно до таблиці цього користувача, і припустимо, що Лорен Скаллі живе в Кембриджі, штат Массачусетс, і припустимо, що Каріма живе в Кембриджі, штат Массачусетс, і Arwa живе в Кембриджі, MA, всі ми в 02138. Чому ми пам'ятати, Кембридж, MA, 02138 для всіх нас чотирьох? Що повинно бути достатньо, щоб згадати? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Просто поштовий індекс. Тільки те, що 02138 існує, тому що Ви знаєте, що ми можемо зробити? Ми могли б отримати трохи фантазії тут і тут, визначити іншу таблицю де це збирається бути ім'я, це буде тип, це збирається бути довжина, і в подальшому, я буду називати це мій стіл міста. Це було названо, з Звичайно, мої користувачі таблиця. І так, що я повинен поставити тут для моєї таблиці міст, як ви думаєте? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так. Так блискавки і штат і місто. І тому тип тут, ми будемо говорити це буде символ 5 разів, за умови дискусії раніше. Це буде перерахування, можливо, як раніше, і місто буде VARCHAR 50. Так що тепер я отримую щоб стерти з цієї таблиці щоб усунути цю неефективність? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Ніцца. Держава і місто піти, тому я прямо зараз ліквідували потенційну неефективність для надлишково запам'ятовування, Кембридж, MA, Кембридж, Массачусетс, Кембридж, Массачусетс, Кембридж, штат Массачусетс, який, ми сподіваємося, ніколи не зміниться. І навіть якщо це робить, це minorly дратує, тепер що я повинен змінити він в кілька рядків, в той час як тут, я міг би просто змінити його в одному місці. Тепер те, що компроміс, можливо? Це було супер зручно. Якби всі мої дані добре разом. Але те, що так воно є зараз? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Абсолютно вірно, і я радий, що ви використовували слово приєднатися, тому що це насправді ключове слово, в світі реляційних баз даних в SQL, це фактичне слово, яке ви може ввести або, принаймні, передати. І справді, що ми тепер повинні зробити щоб вибрати повну інформацію Девіда щось на зразок вибору зірки з користувачі, приєднатися міста, on-- і зараз Я збираюся просто перейти на другий лінії так що ця fits-- users.zip дорівнює cities.zip, де users.ID дорівнює 1. Так що ж відбувається? Це негарно виглядає, але ви можете вид прочитати його зліва направо, зверху вниз. Вибір зірок від користувачів такий же, як і раніше, але це не від користувачів, які самі по собі. Це від користувачів приєднатися міст. Що я, що з'єднує ці дві таблиці на? Що ж, судячи з усього, користувачів таблиці поштовий індекс поля, і цей період просто особливим синтаксис, щоб висловити цю ідею, і це таблиці міст поштовий індекс поля. Я хочу, щоб ці двоє бути рівними, але я хочу, щоб в кінцевому підсумку вибрати тільки ті рядки, в яких ID в таблиці користувачів дорівнює 1, що сталося з моїм. І просто щоб бути ясно, А програміст, як правило, коли жорстко щось на зразок числа 1, так як в противному випадку тільки веб-сайт підтримує Давида або тому Найперший користувач, ви замість цього робити щось на зразок ID, де Це являє собою змінна, то, що може змінюватися з плином часу, аналогічно в дусі того, що я вже говорив раніше з цими видами наповнювачів. Але зараз ми просто жорстко його як 1. Так що ж це означає? Що ж, хороший спосіб візуалізувати це що якщо ця рука таблиця користувачів, і ця рука промельківала стіл, ми свого роду finding-- а кінчики моїх пальців на блискавки тут, а кінчики моїх пальців ось застібка-блискавка, ви вид блокування його так що ви отримаєте назад отриманий вихідна таблиця, по-справжньому приєднатися ці дві таблиці за загальним полю. І це не повинно бути на блискавці. Це може бути саме що-небудь ще, але застібка-блискавка хороша, тому що один, це коротко, два, це завжди такої ж довжини, так що є реальний коефіцієнт корисної дії до того, що Олів'є запропонував тут з факторізуя блискавку, і [Нерозбірливо] пропонує, щоб ми позбавляємося міста та країни. Так що це процес відомий як нормалізація. Є питання з цього приводу? Ну дозвольте мені зазначити, це такі речі, незважаючи на те, що це досить низького рівня, це обговорення, що ви могли б подумати ви начебто отримання втратили в бур'янах, це прояв досить можливість для розробників, щоб бути поганим. І справді, навіть тоді, коли ми, в курси я вчив, коли у нас було, наприклад, недосвідчений Бакалаврат програмісти створювати веб-сайти, на перший погляд, веб-сайти можуть виглядати приголомшливо. І у них є все з функціональність ми просили, розробники проробили гарну роботу. Але вони не обов'язково знати досить про проектування баз даних або вони не думали, важко досить про типах даних і типи користувачів: Сайт матиме, і ми знаходимо, то, через шість місяців, після того, як вони закінчили або рушили далі, що, чорт візьми, наш веб-сайт насправді, по-справжньому повільно. І я навіть не кажу про те, мільйони або тисячі користувачів. Я маю на увазі кілька сотень користувачів в університетському містечку, всі з яких люблять, наприклад, магазин для курсів в в той же час, вони використовуючи цей каталог курсів Застосування я згадав і річ стає дійсно уповільнити, тому що не було ніяких індексів. Там не було ніяких червоних зірок, так кажуть, або у нас було не обов'язково факторізовано загальні дані отримати деяку економію простору. І тому, коли зондаж розробник або базу даних особи або т.п., види питань, продумувати навіть при розгляді чийсь код, сказати, не обов'язково шукати через все їх коду, але кажуть, давайте подивимося через таблиці бази даних. Що ти зберігати? А потім сказати, ну, зачекайте хвилина, чому ви використовуєте ціле число? Що робити, якщо у нас є 4 млрд і 1 з цих рядків? І ці види питань є можливість щоб частково відтіснити і отримати почуття, де якщо ви не зручно робити він, маючи когось більш технічний задати ці питання, від того, чи ні людина дійсно знає свою справу. І це свого роду матеріал теж, що люди в Інтернеті, який самоучки, може бути, дізнатися рідше, тому що ви не обов'язково попадався стільки ж, тому що ви можете отримати база даних і працює, але якщо ви не читали на підручники або були розповів про нормалізацію баз даних і індексації та продуктивність, ці види речей що збираються заподіяти вам шкоди. І ви могли б подумати, чи поганий інженер Можна сказати, ну, добре, ми краще платити для більшої бази даних або швидше бази даних або просто викинути гроші на це, вертикально масштаб, не обов'язково так. Якщо ви йдете in-- і ви можете піти в після fact-- і додати індекси, і це може зайняти кілька годин для бази даних, щоб створити що нові дані Структура, що я згадував раніше, ви все ще можете виправити це після того, як той факт, що це, де ви починають розрізняти хороші дизайнери з погано дизайнери, а не тільки естетично, але з точки зору продуктивності, а також. Які-небудь питання? Немає? Так що для NoSQL, який був інший тип бази даних, до якої я згадував раніше, у вас немає рядки і стовпці. Замість цього, ви б щось що виглядає трохи більше, як це. Я збираюся використовувати загальний синтаксис. Фігурні дужки, трапляється використовується тут досить багато. Ви могли б мати щось як перше ім'я Давид, ви, можливо, в останній раз ім'я Малан, цитати, Ви могли б мати ID is-- вибачте, whoops-- ID 1, електронна пошта malan@harvard.edu, і я не буду морочитися друкувала інше, а потім деякі інші речі. Іншими словами, це текстове представлення від того, що ми зазвичай називаємо об'єкт в комп'ютерній програмі. І об'єкт, як правило, просто колекція пар ключ-значення. Так знову ж таки, це повторення тема. Ми бачили пари ключ значення в HTML, ми побачили пари ключ-значення в даний час в контексті баз даних, і ми бачив пари ключ-значення в контексті о, я думаю, мова раніше сьогодні. Тримає придумують. І справді, це дійсно які дані зводиться до того, дані і метадані, або значення і ключі, відповідно. Тому нереляційних бази даних, щось на основі на об'єктах, де ви просто клубок всі разом і покласти його в пам'ять, як правило, буде на фото, як, або думали, як це. І я залишу, що тепер, як свого роду альтернативний підхід. І одне не обов'язково краще, ніж інші. Насправді, дуже в моді в ці дні системи управління базами даних як MongoDB і Redis і деякі з них інші такі інструменти, у вільному доступі, але вони все більше в моді. Частково тому, що вони пропонують додаткові особливості над цими табличними підходів, але і тому, що вони трохи простіше у використанні, тому що ви не повинні, як важко думати, про багатьох з цих проектних рішень. Так плюси і мінуси. Так розумію, є варіанти понад те, що ми тільки що витратили час на. Так давайте зробимо це. Давайте перехід трохи тепер назад до веб-програмування, так що ми якось укласти сьогодні з чимось це трохи практичний, заповнюючи деякі прогалини з учорашнього дня. Дозвольте мені перейти до цього в першу чергу. Так Нагадаємо, що вчора ми мали деяку канонічну HTML сторінки, які були спочатку, тільки HTML, а потім в другу чергу мав CSS, Каскадні таблиці стилів. Це новий тег, який ми не зробили см вчора, або зупинитися на, так званий скрипт тегів. Виявляється, насправді ви можете вбудувати мова, званий JavaScript у вашому веб сторінки і зробити свій веб сторінки зробити щось. Так що ж я маю на увазі під цим? Що ж, дозвольте мені йти вперед і просто запозичувати цей код на мить. Я не буду вдаватися в Cloud9, немає необхідності туди себе тільки все ж, і я буду називати цю alert.HTML. Я збираюся вставити в мій файл тут. І тільки уточнити, що я зробив, нехай мені піти на цю адресу і йти, щоб попередити, і ви побачите Hello World. Але це свого роду нищівної. Я хочу зробити щось трохи по-іншому. Так що я збираюся зробити це насправді. Я збираюся йти в тут е, і між моїми тегами сценарію, кажуть попередження ( "Привіт, світ"); тому повідомлення це трохи кострубато, але у мене є HTML, всередині якого знаходиться мова називається JavaScript, і це те, що називається виклик функції або виклику процедури. Це дієслово, в буквальному сенсі, в даному випадку, і я виклику функції коду що хтось написав. Так що функціональність є попередження, так що давайте підемо на цю сторінку Зараз і натисніть кнопку перезавантаження, і тепер ви побачити трохи інтерактивності. Це свого роду старої школи і некрасиво. Цей вид нагадує вам про спливаючі вікна, можливо, минулих років але це дійсно зробити щось трохи більше програмної. Так що більше, ніж це, давайте зробимо щось більш цікаве. Пусти тут і позбутися від цього. І я збираюся йти вперед і створити форму, як ми робили вчора. Насправді, ви знаєте, що? Я збираюся йти в google.html, який ми розпочав учора, який виглядав це, за допомогою якого ми шукали кота Але зверніть увагу, що є добро з помилка в поточній версії. Вона працює для кішок, але припустимо, що Я не співпрацювати, і я не вводити нічого, і я просто натисніть кнопку. Це начебто дивної поведінки. Взяв мене до реального Google, не дав мені повідомлення про помилку. Я хотів би сказати користувачеві Ви повинні дати нам значення. Отже, як ми могли б це зробити? Ну дозвольте мені повернутися в Cloud9 і відпусти мене в верхній частині моєї сторінки і додати тег сценарію, як це, де Я збираюся ввести деякий код JavaScript. І я збираюся зробити наступне. Якщо (document.getelementByID-- і відгук що ми говорили про те, що раніше, ця функція. Що ID ви хочете отримати? Я хочу, щоб отримати д, і я збираюся скажемо не одно нічого, як this-- насправді дозволити мені використовувати подвійні лапки тільки для consistency-- не дорівнює нічого, потім оповіщення ( "Будь ласка, введіть запит") тут. Так що у мене є те, що, як видається, щось на кшталт стану. Ми вже бачили цю загальну ідею в порожньому місці. Це як один з тих, головоломки частини, які виглядали як це. І що я говорю? Ну, тут, я помічаю збирається зробити наступне. Я збираюся дати цю форму поле не тільки ім'я д, який то, що отримує передається в Google, але я збирається дати йому локальний ідентифікатор, також називається д. Але я міг би назвати це все, що я хочете, я просто хочу, щоб тримати його просто а також називають його д, тільки для простоти. А тепер я збираюся зробити щось трохи більше. На поля форми тут, я збираюся додати те, що називається обробник події. На уявити, я хочу подзвонити функція називається Validate. Це ще не існує, це слово, або це дієслово Validate, тому що я збираюся зробити тут тепер додати деякий код. Я хочу сказати, функція Validate. Я збираюся відступу це і додати ще фігурна дужка тут і ще один тут. Подумайте, що це робить зараз. У мене є now-- думати про це як створив свій власний шматок головоломки, які раніше не існують, і я назвав цю головоломку шматочках шматок головоломки Validate. Його мета в житті, щоб виконати чотири рядки коду всередині нього. якщо document.getElementById так концептуально, що збирається йти в елемент, HTML-елемент, унікальний ідея просто д, а потім, навіть якщо синтаксис виглядає трохи дивно, що рівне одно просто означає, що рівних. Таким чином, це означає, що якщо елемент з унікальний ідентифікатор д, коли отримав, не має значення, вона просто дорівнює цитата кінець цитати, нічого там, то, що я хочу зробити? Я хочу кричати на користувача. І ми не будемо дуже детально тут. Я збираюся повернутися помилковим. Тобто помилка. В іншому випадку, я збираюся повернутися правда. Так що або це спрацювало, чи ні. Брехня або правда. І тепер, якщо я не зробив жодної помилки, дозвольте мені зберегти це і перезавантажити це. І дозвольте мені просто двічі перевірити, що Я не, насправді, робити будь-які помилки, так що я не зганьбитися. Давайте подивимося, якщо це працює. Так що тепер я буду набирати кішок. Він як і раніше працює, або половина працює, по крайней мере. Тепер дозвольте мені перезавантажити його, а тепер давайте я спробую уявити без введення anything-- чорт забирай, він зламався. Хвилинку. Дозвольте мені відкрити консоль, [Нерозбірливо] журнал, перезавантажте сторінку. Дозвольте мені спробувати це знову. О, чорт забирай. Я забув. Я зробив помилку. Я пам'ятаю, що це таке. .value. Я мав на увазі, якщо значення говорять елемента з ідентифікатором д одно що, то кричати на користувача. Так що тепер дозвольте мені знову затримати дихання. Ось і ми. Там ми йдемо. Будь ласка, введіть запит. Так що це не даючи мені до кінця. Я можу бути свого роду грайливі з цим, і замість того, щоб перевірка не мають цінності, Я можу сказати щось подібне, Більше не доведеться шукати для кішок, і тепер ми можемо тільки більш грайливо нехай пошук користувача для собак, якщо він або вона хоче, або якщо я піду сюди і шукати кішок, тепер я не можу. Так що винос тут? Так що, ми ввели в наш світ HTML і CSS, функціональні можливості програмування. Я можу насправді в даний час приймати рішення в коді. Раніше все, що я міг зробити, це позначити текстовий зміст або графічний зміст і сказати йому, що подивитися як і де, щоб відобразити. Тепер я можу реально запитати питання веб-сторінки і приймати рішення, засновані на ньому, і запропонує користувачеві якщо мені потрібно кричати на нього або неї. Так давайте спробуємо що-небудь самостійно з цим. Ідіть вперед, дозвольте мені відкрити наступний слайд тут, і просто вказати на одну річ. Так само, як за допомогою CSS, ми можемо винести наш код JavaScript в окремий файл, ви можете зробити те ж саме з JavaScript, як за допомогою CSS. І ви використовуєте, що за допомогою джерела атрибут тега сценарію. Але ми не будемо ускладнювати зараз. Замість цього, якщо ви могли б перейти на цю сторінку ні, но-- дозвольте мені перемістити цю навколо в order-- йти, якщо ви могли б, цю сторінку тут. Цей URL-адресу тут. Це в сьогоднішніх гірками. Ви, можливо, доведеться перезавантажити, тому що Я додав пару річ. Але туди, де деякі головоломки чекають. І це дасть нам шанс, в трохи більше задоволення контексті, балуватися з деякими JavaScript. І коли ви там, Я поясню, що чекає. Отримати зелений. Набір синій. Встановлює зелений, встановлює червоний. На жаль. Вибачте. Це ступінь нашої документація для цього завдання. І це буде працювати наступним чином. Так що у вас є з цього питання сторінка представляє собою цілий букет головоломок зображення по приятелем в Стенфордському університеті. Так що ви бачите тут майже вид однієї з тих чарівних очей головоломок, але якщо ви просто дивитися на нього, нічого не збирається вискочити на тебе. Швидше за все, щось прихований в цьому образі. І він прихований в такий спосіб. Зображення, як ви знаєте, може бути що складається всього з трьох кольорів. Деякі червоний, трохи синього, а також деякі зелені. І ми можемо зробити все кольорів у веселці шляхом змішування цих трьох кольорів так чи інакше. Так це виглядає в основному зелений і синій, але, як каже тут Нік, це залізо-головоломка зображення головоломка. Він містить зображення щось відомим, однак, зображення було спотворено. Знаменитий об'єкт знаходиться в червоних значень. Проте, червоні значення є всі були розділені на 10. Таким чином, вони занадто малі, на коефіцієнт 10. Отже, іншими словами, Нік прийняв вихідне зображення, і він ненасичений все почервоніння від нього, зниження кількості червоного чорнило, якщо ви будете в ньому. Сині та зелені значення все просто безглуздо, випадкові величини, інакше шум розроблений щоб приховати реальне зображення. Так що Нік зробив він пом'якшив червоний, а потім він просто кинув випадковий кількість синього і зеленого на зображенні у вигляді неясними що насправді все ще там. Необхідно скасувати ці спотворення щоб розкрити образ. По-перше, встановити всі сині і зелені значення до нуля, щоб отримати їх з шляху, і подивитися на результат. Потім Помножимо кожне значення червоного на 10, згортають до приблизно в його кінцеве значення. Що таке знаменитий об'єкт? Так що все у вас є цей прямокутник в вашому браузері прямо зараз. І зверніть увагу, що є деякі стартовий код, якщо можна так висловитися. Це код JavaScript, який Нік написав для вас. І зверніть увагу, що є лінія в середині, що починається з косою риси косою риси, це що зазвичай називають коментарем. Це означає, що це фраза для програміста що не має ніякого функціонального сенсу. Це просто візуальний сигнал до людини. Таким чином, ви можете піти далі і видалити тільки ту лінію, і бути супер обережні, щоб не видалити або змінити що-небудь ще. І дозвольте мені вас через що робить цей код, і я залишу його для вас, щоб з'ясувати секретне зображення. Це перша лінія тут, що я просто виділений дає вам наступне. З лівого боку, у вас є те, що називається змінна, Нік довільно, але обгрунтовано називається IM для зображення. На правій стороні цього знака рівності, він говорить, дайте мені новий цитата, кінець цитати "простий образ". Просте зображення, в цьому контексті це те, що називається класом, ну, це ніби як class-- технічно prototype-- але насправді, це дає мені новий об'єкт, зміст якого є файл, залізо-puzzle.png. Іншими словами, Нік створив це поняття простого зображення так що ми можемо, крім педагогічної мети, грати з зображенням і змінити його червоний, зеленого і синього кольорів. І як ми робимо це? Це зашифроване синтаксис тут ніби як повтору блоку що деякі з вас бачили в порожньому місці раніше Сьогодні, де ви можете повторити 10 разів. У цьому випадку, Нік не жорстко число, наприклад 10. Замість цього він говорить, форматувати змінна з ім'ям х 0, перевірити, якщо х менше ширина зображення. І так, щоб бути більш правильним, зображення є Змінна, точка означає йти всередині нього і отримати його ширину, і потім відкрити дужка, закритий дужка просто шлях програміста сказати, що це функція. Це процедура. це функціональність хтось написав. Використовуйте його і поверни мені відповідь. І тоді х ++ є химерним способом кажучи, після того, як ви зробили це один раз, приріст х на 1. Іншими словами, це це шлях програміста індукувати петлю, що це збирається перебрати всі стовпці в зображенні. Зображення просто сітка точок, рядків і стовпців точок. Це спосіб ітерірованія над усіма цими колонами. А на внутрішній стороні, У той же час, ми переборі над висот, тут і тут і тут. Так що це просто спосіб тащась, майже як старий шкільний машинці, просто йти над Всі зображення итеративно. Навіть це не зовсім повністю ясно, просто прийняти на віру зараз, що ці три лінії коду разом, збирається, щоб дозволити вам виглядати итеративно на кожен піксель, кожна точка в зображенні. Що таке піксель? Ну, щоб бути ясним, якщо ми подивимося в оригіналі і збільшити масштаб, якщо ви дійсно покласти ваші очі на екран комп'ютера, це просто ціла купа точок, кілька тисячі точок упаковані разом там. І так, що ви збираєтеся робити? Кожен з цих точок, остаточне визначення, є результатом того, що це взагалі називається RGB, червоний, зелений, синій, який знову ж таки, можуть бути об'єднані в дати вам будь-яку кількість квітів. Насправді, якщо ви пам'ятаєте, від багатьох, багато років тому, Екрани для проекторів, як ці речі Раніше у мене не один об'єктив, а три. Один з них виплюнути червоне світло, один з їх виплюнути зелене світло, один з них виплюнути синє світло. І якщо ви були в середній школі як я там, де вони ніколи не були вирівняні, ви були завжди дивитися історичні фільми які були дещо спотворені, тому що три кольори не були комбінуючи належним чином. Але виявляється, що кожен з ці значення червоного, зеленого і синього кольорів, може мати ряд пов'язаних з ними. Наприклад, 0 для червоного означає відсутність червоний, 0 для зеленого означає не зелений, і 0 для синього означає відсутність синього кольору. Так що якщо у вас немає червоного, немає зеленого, немає і не синій, якого кольору у вас є? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Ви б сподіваюся, це білий. На жаль, це operates-- шкода? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так що ви насправді мають чорну, в цьому випадку. Так що якщо у вас немає жодного з них кольори включений, у вас є чорний. Проте, якщо у вас є, скажімо, багато з них, як багато червоного, 255 з нього, багато зелені, і багато синього, тобто білий. Таким чином, ці дві крайності. Таким чином, за цією логікою, якщо у мене є багато червоного і зеленого і синього, який колір є те, що? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: справа, очевидно. І тоді немає червоного, багато зелений, синій немає, а потім якщо ви have-- добре, ми просто закінчити це, просто тому, що, але це, звичайно, Тепер, синій. І тепер ви можете комбінувати ці кольори. Тепер, як і в сторону, якщо будь-який з вас є коли-небудь робив деякі фактичні дизайн веб-сайту, Ви могли б насправді см символи, як це. FFF-- і насправді, це ймовірно, навіть це не так. Це FFFFFF. Хто-небудь бачив F-е і Е і А through-- так виходить, ми говорили вчора про десятковій системі, і сьогодні, на кшталт про десятковій системі. Сьогодні ми говорили про двійковій системі. Виявляється, шестнадцатеричное дуже загальна базова система для використання в обчисленнях. Binary два, десяткове 10, шестнадцатеричное 16. І виходить, як зробити ви розраховуєте в шістнадцятковому? Нуль, один, два, три, чотири, п'ять, шість, сім, вісім, дев'ять, що ви використовуєте після дев'яти? Який наступний номер? Ми вже звикли до нуля. Мені потрібно 16 з них. Нуль, один, два, три, чотири, п'ять, шість, сім, вісім, дев'ять, Ви потребуєте в деякій довільній конвенції. І те, що людство вирішило якийсь час тому, що після того, як дев'ять приходить лист А, а потім B, а потім С. Таким чином, як ви розраховувати в шістнадцятковому дорівнює нулю, один, два, три, чотири, п'ять, шість, сім, вісім, дев'ять, A, B, C, D, E, F, і що буде розраховувати ви всі шляхи, виявляється, до 15. Таким чином, від нуля до 15 дорівнює нулю через F. Тепер чому це важливо? Добре, коли у вас є два F-х, ось як ви висловлюєте 255. Так Коротше кажучи, в світ Photoshop, що графічний дизайн програмного забезпечення, в світі веб-розробки, де у вас є багато квітів, звичайно, грати, часто програмісти висловити ті, в шістнадцятковій системі, тільки тому, що, як правило, щоб бути трохи простіше. Навіть якщо на перший погляд це набагато складніше. Таким чином, в будь-якому випадку, це важливо тому що Нік в Стенфорді дав нам шість шматків функціональності що ви, початківці програмісти, тепер матимуть можливість використовувати. Вбудований в цю мережу сторінка шість функцій, шість процедур, які Нік написав. Троє з них отримає Вас номер, червоний, зелений або синій значення. Три з них буде встановлено, що значення. І ці символи підкреслення просто наповнювачі, так що ви повинні знати, що це таке. Так що з цими трьома функціями, перший з цих речей буде х-координат, і другий з цих речей буде у ваше положення. Іншими словами, які Дот, яка пікселів ви хочете отримати зелений колір, отримати синій колір, отримати червоний колір. А потім тут, це буде х, це буде мати значення у, і це буде номер. Так давайте зробимо перший лінія це разом а потім я залишу його вам щоб спробувати вивести все інше. Таким чином, відповідно до інструкцій На цій сторінці, нам потрібно збільшити червоний колір з коефіцієнтом 10, і нам потрібно видалити зелений і видаліть синій колір. Давайте почнемо з останніх сценаріїв. Так що, якщо я хочу, і я збираюся для відступу за допомогою деяких просторів, якщо я хочу, щоб встановити червоний, зелений або синій значення, Я збираюся зробити наступне. Зображення, im.setBlue, а потім заснований на моїх інструкцій тут, які три речі я повинен типу всередині дужок зараз? Мені потрібен х значення, у значення, і яке число я повинен поставити тут, якщо я хочу, щоб позбутися від на рівному місці, на основі цієї історії тут? Просто нуль. Якщо я не хочу, не голубий, я просто збирається змінити його до нуля. Тепер давайте просто резюмувати те, що це робить. У мене є тут на вершині Друга і третя рядки, Я стверджував, дві петлі, вкладені цикли, якщо ви буде, що будемо мати ефект прогресуючої зліва направо, зверху вниз по всіх х цінності і все значення у. Бо знову ж таки, картина просто сітку з рядків і стовпців. Так що це збирається отримати позбавитися від всіх синього. Дозвольте мені залишити в наступному рядку для вас. Як позбутися від усіх зелених? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Ніцца. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Ніцца. І я буду видаляти, а просто взяти піклуватися про те, що ви не зробили жодних помилок. І якщо ви відчуваєте себе комфортно з тим, що ви зробили, йти вперед і натисніть на кнопку Виконати / Зберегти і подивіться, що вийде. І знову ж таки, ми зробили всього три зміни. Ми видалили, що перший коментарі та замінити його з цими двома рядками коду. І це нормально, якщо вам потрібно потрапити кнопку Виконати / Зберегти пару раз щоб щось виправити. І дозвольте мені також збільшити на мій код, так що ви можете транскрибувати. Добре. Так що я бачу Ендрю що здається помилкою. Він тільки що отримав великий чорний прямокутник на його екрані. Хто-небудь ще є великий чорний прямокутник? ГЛЯДАЧІ: Так. DAVID Маланки: Великий чорний прямокутник? ОК, так що давайте думати про те, що це означає. Ми сказали, що нуль, нуль, нуль, так що не зелений, ні червоний, ні синій, збирається дати вам чорний. І виходить, що більшість наших ноутбуків просто не вистачає вірності. Ви не можете точно сказати, є насправді щось є. І якщо ви вид, може бути, нахилитися ваш екран вперед і назад, може бути, ви бачите дещо там? Може бути, свого роду, свого роду? Це не зовсім чорний. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Спойлер! Існує певний червоний є, але пам'ятаєте з специфікацій проблеми, Нік тоноване його вниз. Він ненасичений його трохи, але не всі шляхи до нуля. Так що, якщо ми хочемо, щоб збільшити кількість червоного кольору, дозвольте мені запропонувати цей трюк. Дозвольте мені збільшити на моєму екрані. І дозвольте мені йти вперед і сказати, сума дорівнює im.getRed (х, у). Цей рядок коду дає мені то, що називається змінною. У мене є довільно, але, можливо, обґрунтовано назвав свою змінну, що, мабуть? Сума. Просто сума. Я міг би назвати його все, що я хочу, але я використовуючи цю іншу функцію що я описав раніше щоб отримати кількість червоного кольору в точці х кома у. Чому я зробив це? Що ви хочете тут робити? Вам потрібно add-- ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так, може бути, помножити його на 10. І якщо ви не знаєте цього, я йти вперед і робити це. Я збираюся йти вперед і скажімо, я хочу кількість червоного кольору Я хочу бути що завгодно знаходиться в мінусі, раз 10, і зірка, зірочка на вашому клавіатура the-- не використовують х. Використовуйте зірку. Ось як ви примножуєте речі в більшості мов програмування. Так, по інтуїції Kareem, в зберігається в цій змінній називається сума, наскільки корисний Я хочу, щоб в точці ху. Як зараз, я роблю що Піксельні це число? Ви вже зробили це раніше. Ви встановлюєте зелений і синього до ніякого значення, до нуля. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так, добре ви не хочете його 10. Ви вже зробили математику тут. Таким чином, ми отримуємо значення червоного кольору, який представляє собою невелике число, мабуть. Ми множачи до +10. Те, що ви хочете зробити з змінна величина в даний час? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Ніцца. Так im.set-- що? ГЛЯДАЧІ: setRed. DAVID Маланки: setRed, в точці ху. Так. І тільки сума. Іншими словами, змінна тимчасовий заповнювач що ви можете покласти все, що ви хочете в. Ми, трапляється, вважаючи а кількість в ньому, в даний момент. Ми помноживши його на 10, щоб зробити його більше. І тепер я підставляючи цю змінну як то третій аргумент, або введіть встановити червоний. І так, що як тільки ви закінчити це, і взяти до відома з точки з коми і в дужках. Ідіть вперед і натисніть запустити / зберегти знову, і ви повинні бачити, чарівним чином, що було насправді там. [? Arwa ,?], Що там? Ейфелева вежа в повноправних червоний, не зовсім темно. вона повинна бути більш очевидним зараз, так? ДОБРЕ. І Андрій, не більше чорний ящик? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Добре. Так що я буду тримати це на екрані. Якщо ви хочете грати з цим пізніше, я відтворити це для вас. Але цей код тут зробив саме це. Чому ми не робимо один одного. Дозвольте мені прокрутити вниз трохи. Так що в цьому випадку, проектор насправді не роблять це справедливість. Але на ваших екранах, ви, ймовірно, мають дуже корисний і дуже чорний ящик. Це теж загадка, що показує щось відомий. Проте, зображення було спотворено. Істинне зображення, на цей раз, є в синіх і зелених цінностей. Проте, вони всі були розділені на 20 так що значення дуже малі. Червоні значення просто випадкові числа, шум. Скасувати ці спотворення розкрити істинний образ. Так що Нік тоді каже вам, що робити. Встановити червоні значення до нуля, і то не зіпсує, що це таке. Потім помножте синій і зелені значення на 20. Так що це майже та ж програма, як і раніше, але ви заднім ходом процесу. І я помістить свій код з поки на екрані в разі Ви хочете, щоб повернутися до нього або грати далі з тим. Дозвольте мені збільшити на це. Але вирішити мідний зображення головоломка, номер два. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Добре, так що це один я не збирається давати стільки підказок. Так що я would-- ой, давайте Розумієте, у вас є помилка тут. Так що пам'ятайте, це тут насправді потрібно йти туди. Так що я хотів би запропонувати, якщо ви хочете зосередити увагу на цьому, є відповідь. Якщо ви хочете записати, що, що повинен отримати перший один робочий. І тоді ви можете використовувати його в якості натхнення для другої. Ніцца. Добре. І для цікавих, це простий приклад науки або мистецтва називається стеганографія, Мистецтво приховування інформації в зображеннях. Як правило, зображення можуть бути водяними дуже грубо з логотипом в нижній частині кут, але ясно, що ви може бути набагато складнішими про це і насправді приховати інші зображення в зображеннях як-то з цією технікою. Візьміть ще 30 секунд, а потім ми по крайней мере, оголосити, що ви повинні побачити. І я залишу третій один, як в домашніх умовах вправи, якщо ви хочете більше з виклик в ці вихідні. І я думаю, що Андрій може отримали його в першу чергу. Що таке друге зображення, Ендрю? ГЛЯДАЧІ: Статуя Свободи. DAVID Маланки: Статуя Свободи буде відповіддю на цей раз. Так знову ж таки, просто деякі прості приклади, мета яких щоб дати вам відчуття того, як ми перевели образотворчий Подряпину блоки до більш дратівливим і багато іншого складний код, але все ідеї до сих пір точно так же, хоча і з введенням Тепер поняття змінної, будучи в стані зберігати щось тимчасово. Давайте зробимо ще один практичний, тільки тепер з'єднують точки до чогось трохи більше реального світу. Коли ви будете готові, якщо ви могли б перейти до цього URL на екрані. Це також в свою копію слайди, developers.google.com/maps~~V. Давайте насправді зробити щось реальний, так би мовити, на веб-сайті за допомогою API Карт Google, або інтерфейс прикладного програмування, наступним чином. Google, як і багато інших компаній, забезпечує багато вільного функціональності що ви можете використовувати, щоб побудувати свій власні цікаві програми. Насправді, якщо ви коли-небудь використовували Uber, щоб отримати таксі або автомобіль, Ви, напевно, знаєте, що є Uber карту, і це показує автомобілі на ньому. Тобто, як найкраще, як я можу скажіть, Google Maps API. Вони насправді за допомогою карт Google, але Uber не є відображенням компанії, і не буде, що буде Особливо цікавою проблемою вирішити на вершині своєї проблема автосервісу. І ось вони стоять, знову ж таки, на плечах інших, Google в цьому випадку. Таким чином, вони використовують карти Google, але їхні власні автосервіси та інші подібні функції. Отже, ми збираємося, щоб скористатися це зробити наступне. І якщо я зайшов занадто швидко, просто зателефонуйте мене в даний момент. Щасливий резюмувати деякі речі зображення. Ви повинні бачити себе на сторінці, як це. Так приємно Google, і вони одними з кращих забезпечити не тільки API-інтерфейси, але вільні API-інтерфейси, які ви може грати з або використовувати в комерційних цілях. Вони починають, якщо ваше використання справляння плати висока, але я пішов вперед, заздалегідь і підписав нас для безкоштовної облікового запису що, сподіваюся, 10 комп'ютерів НЕ буде дискваліфікувати нас за раптово. Таким чином, ми сподіваємося, це демонстрація буде працювати. І зауважте, що у них є API-інтерфейси для Android, IOS, веб, і веб-сервіси, що б це ні. Давайте зосередимося на Інтернеті. Таким чином, натисніть на рожевий ящик, веб-сторінок, і що приведе вас, сподіваюся, на сторінку тут. І у них є ціла купа API. І це може бути трохи переважною спочатку, але я буду направити нас через те, що ми хочемо. У лівому верхньому кутку знаходиться Карт Google JavaScript API, то API JavaScript. Так йти вперед і натисніть цю. І це призведе вас тепер до наступна сторінка, демонстраційні та приклади коду. Дозвольте мені збільшити тут. І дозвольте мені змусити нас прокрутити вниз, метою яких де він говорить, що швидкі кроки запуску. Ваш екран повинен виглядати, як у мене. І є два кроки, отримати ключ і приступити до розробки. Я вже зробив крок один для нам, отримуючи так звану ключ. І це загальна ідея. Ключ API, як правило, тільки велике випадкове число або рядок що ви повинні вставити в код, так що Google знає, хто ти, коли ви використовуєте їх служби, їх API. Це не означає, що ми заряджається нічого. А зараз, натисніть, замість того, щоб один, натисніть почати розробку. Якби ви могли просто помахати мені більше, якщо не впевнені, де ми знаходимося. Таким чином, ми просто подряпати поверхню, тут, але те, що Я думав, що було б переконливим це насправді є всі ми, використовуючи Cloud9 в одному вікні і цей підручник в іншому вікні, дозволяє фактично отримати наші власні додатків і працює яка вбудовує звичай Google карту в нашому власному веб-сторінці, а потім додає одну або дві функції. Але ми просто подряпати поверхню того, що ми можемо зробити. Так просто швидка перевірка осудності. Це все на цій сторінці, Google Maps JavaScript API? Повинен сказати, почати роботу. Ми не збираємося пройти через все це будь-якими засобами. ОК, в іншій вкладці, якщо ви цього не зробите відкрити його, не йдуть в Cloud9 і отримати себе тільки нова вкладка, в кінцевому рахунку. Так знову ж, c9.io з учорашнього дня, c9.io, і просто створити новий файл. І йти вперед і виклик це все, що ви хочете. Я назвав моє map.html. Назвіть це що-небудь закінчується на .html. І ви повинні бути приблизно де я перебуваю в цьому процесі тільки з миготливою рядка в порожній вкладка під назвою щось на зразок map.html. Або файл, новий файл на цей раз. А тепер, на протязі Google Maps JavaScript API, ми пропустимо читання через весь цей текст. Але зауважте, що це привіт світ насправді скрізь, ви бачите його зараз. Привіт світ має такий великий барвистий Приклад цілою купою HTML. Йдемо далі і скопіювати і вставити тільки що HTML, тому від типу документа у верхній всі шляхи до тісної HTML тега, перейдіть вперед і скопіювати всі that-- знову, це під привіт світ example-- і вставте його в вашу вкладку Cloud9, так що тепер ваш екран повинен виглядати приблизно як у мене. І ви можете зберегти його, але не завантажувати його тільки поки. Давайте спочатку подивимося на код і подивитися, якщо ми не може вивести або дізнатися від того, що це Google була нам сліпо копіювати і вставляти. Вони просто хочуть, щоб допомогти, в буквальному сенсі, щоб нас почали, але там не так багато складність насправді є. Є питання тільки поки що? Ми в безпеці, щоб просуватися вперед? ДОБРЕ. Так швидко, давайте просто робити деякі оперативні перевірки розсудливість. Лінія один з того, що я см, і, сподіваюся, вам Розумієте, що це означає, DOCTYPE HTML? Каріма, нагадати? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Так. Ось йде HTML 5. У той же час, лінія два на Екран тут означає, агов браузер, тут приходить фактичний HTML. Лінія три є ей-браузер, тут йде голова. Лінія чотири, звичайно ж, агов браузер, тут приходить назва. Що лінія п'ять робити? Насправді, це не дійсно зробити що-небудь для нас. У цьому випадку він просто змінює розміри сторінка до дефолту. Лінія шість, ми не говорили про це, але це визначає кодування. Там в різні способи кодування файлів, особливо для іноземних мов. UTF-8 просто, як правило, за замовчуванням. Так що тепер ми побачимо в рядку сім через 16 років, деякі CSS. І незважаючи на те, що ми не бачили всі ці речі раніше, ми можемо зробити висновок, свого роду. Так лінія вісім засобів, агов браузер, застосувати всі наступні, до яких два тега, мабуть? HTML і тіло тексту. Так кома нова річ є. І це просто спосіб вказавши кілька тегів відразу. Тоді у нас є фігурні дужки. Так що, мабуть, це говорить браузеру, зробити висоту сторінки 100%. Так що навіть якщо є дуже мало зміст, зробити всю сторінку, зробити річ заповнення сторінки. Зробити карту в кінцевому рахунку, заповнення сторінки. Маржа, що це значить? Це, як правило, як довільне білий простір по краях що деякі браузера дизайнер просто вирішив повинен бути там, тому що вид робить речі виглядають чистіше. Але ми не хочемо цього. Ми хочемо, щоб карта збирається всі шляхи до країв. Перетяжка, подібні за духом до околиць. Поля означають зовні, кошти оббивка всередині, але це той же самий вид угоди. Це трохи буфера між вами і краями. І тоді лінія 13 є хорошим шанс для швидкого огляду. Що робить різкий знак карти значить, або хештегом карта означає? Що означає, що відносяться, в принципі? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Абсолютно вірно. Це властивість, ця властивість CSS відноситься до тільки одну річ, тег HTML що має ідентифікатор цитати, Unquote "карті". А тепер давайте швидко вперед, прокручування аж до нижньої частини файлу, який не дуже далеко, і повідомлення про лінії 19, якщо вставити його в точності, як я зробив, рядок 19 має тільки DIV, який є розділ сторінки, який я вчора називається прямокутна область. Це не має нічого в ньому. Це відкритий тег, що закриває тег. Але у нього є унікальний ідентифікатор. Так що, як видається, що тут відбувається Google готує нашу веб-сторінку мають повну висоту 100%, і без відступів, без полів, тому що то, що ми збираємося покласти всередину цього DIV, унікальний ідентифікатор карта, є актуальною вбудованої карти. І ми хочемо, щоб заповнити сторінки, а не тільки бути якийсь маленький прямокутник в центрі. Таким чином, лінія 14 так само підкреслює, то карта сама повинна мати висоту 100%. Так що тепер помітити між лініями 20 і 28, це JavaScript код. І це, навіть якщо це синтаксично трохи дивно, там не все, що багато тут відбувається. У рядку 21, це оголошує то, що називається змінною. Замість того, щоб називати його складає, як ми це робили раніше, ми більш точно кажучи змінна, яка просто означає змінну. Ми могли б використовувати, що в код Ніка, але він цього не зробив, так що я не потрудився робити це або. Це змінна називається карту, а потім є функцію, яка мабуть, називається initMap. Так що це як наш власний користувальницький шматок головоломки в порожньому місці. Ми створили шматок Функціональність називається initMap, і ви можете частково зробити висновок що тут відбувається. З лівого боку, у нас є змінна, тому ми збираємося поставити наступне річ всередині цієї змінної, справа наліво. Права рука говорить, агов браузер, дайте мені нову карту Google. І google.maps.Map це просто обладнаний спосіб вказівки, що ця функціональність належить Google Maps. Після того, як в дужках, ми вже бачили це раніше, агов браузер, отримати мені елементи на сторінці, то тег на сторінці, чий унікальний ідентифікатор is-- ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: --map. А що відбувається, ну, ця лінія разом, рядок 23, по суті кажучи, агов браузер, іди зі мною що порожній DIV на сторінці чий унікальний ідентифікатор карти, тому що я хочу, щоб вставити в it-- впорснути в нього, якщо ви will-- цілу купу контенту що трапляється, приходить з Інтернету, згодом. І Google, робити все, що для нас. Отже, ще раз, в самому кінці дня, у нас є цей приклад абстракції. Я поняття не маю, що таке карта або як реалізувати карту API. Нам не потрібно. Нам просто потрібно сказати карту де поставити себе, і залишити що лежать в основі реалізації деталі до Google. В даний час існує, мабуть дві частини даних що цей приклад надання в API Google. Мабуть, центр карти, і рівень масштабування, так би мовити. І хто-небудь розпізнати їх координати, широта і довгота? Швидше за все, немає, але ми можемо повернутися в підручнику, в буквальному сенсі бачити. Але ми побачимо його в мить. Рівень масштабування є значення між, я не знаєте, один в 13 або щось в цьому роді. Це просто потрібно зробити з тим, як далеко ви стиснута або розтягнута, і це все. І тепер в самому кінці сторінка, повідомлення лінії 29-- це трохи негарно, тому що вона wraps-- цей рядок коду що завантажує до браузер фактичної API Google. Весь код, що компанії Google інженери написали, що реалізують Вся ця особливість вложімих карт. Тепер давайте нічого не зміниться. Якщо ви прямуєте, йти вперед і просто збережіть цей файл, якщо у вас дійсно є що у мене є. Перейти до його URL. Ви можете натиснути кнопку Run нагорі і що скаже Вам URL вашого веб-сервера знову. І це приведе вас до нової вкладки. Якщо для Вас натисніть кнопку Відкрити map.html, і шанси ви збирається отримати попередження, повідомлення про помилку, так? Повідомлення про помилку, повідомлення про помилки? Таким чином, на жаль, помилка повідомлення не те, що просвітницька якщо ви насправді не відкрити Консоль, що вкладка спеціальний ми відкривав вчора і трохи раніше сьогодні. Але я натрапив це раніше, так що я вже зрозумів, що рішення. В сьогоднішніх слайдів, або скоріше, в Cloud9, повідомлення що ми не робили щось навмисно. Зверніть увагу на те, що цей сценарій тег рядок 29, якщо ви подивитеся на його, це як maps.googleapis.com/~~pobj щось, щось, щось, зверніть увагу на те хтось, один з розробників, пише у всій столиці листи, ваш ключ API. Нам потрібно вставити щось там. І це був крок Я зробив для нас перш, і знову вони могли б чорний список нам, якщо раптом, 12 або більше з нас почати використовувати один і той же ключ, але давайте подивимося, що станеться. Так що якщо ви йдете в сьогоднішніх слайди, один слайд пізніше, є це дуже просто супер вид рядки тексту. Ідіть вперед і просто скопіювати, що і вставити його, де він говорить, що ваш ключ API. Це той, який я підписався на. І, безумовно, не намагайтеся набравши його вручну, тому що він відчуває себе таїть в собі з друкарськими помилками, потенційно. Так просто скопіювати і вставити це. І це збирається зробити лінію більше, але зараз, просто щоб бути ясно, вона повинна виглядати трохи більше як це, де ключ не дорівнює капіталізуються кричати на вас. Збережіть сторінку, поверніться назад на вкладку інший, перезавантажити, і сподіваємося побачити карту, де? ГЛЯДАЧІ: Австралія. DAVID Маланки: Австралія. Так що, мабуть, є ті, GPS-координати Австралії. І дозвольте мені ходити на мить і допомогти всім, хто не зовсім там, але дозвольте мені запропонувати, за допомогою Google, знайти GPS-координати вашого рідного міста або ваш власний рідній країні. І, ймовірно, Google може перетворити це вгору або Wikipedia може сказати вам. Але вибрати два різних значення для широти і довготи, повернутися і вставити їх, і Потім перезавантажте сторінку після збереження і подивитися, якщо ви можете мати карта для вашого рідного міста. А коли ви закінчите з що подальша діяльність challenge-- і я дам трохи менше напрямок, свідомо, так що ви свідомо доведеться боротися за пару хвилин з документацією, змінити карту, щоб бути не в цьому мультяшним за замовчуванням, але супутникова карта. Так що ви насправді бачите супутник образи замість красивих квітів. І натяк я дам вам це змінити тип карти. Повернутися до того, що отримання почав сторінку для натхнення. Як ви почерпнули, якщо ви шукаєте, Є так багато більше речі, які ви можете зробити. Деякі з вас вже змінений тип карти. Але ви можете do--, наприклад, дозвольте мені перейти до чогось ми зробили для курсу Я teach-- maps.cs50.net. Один з наших старшокурсників зробив це. Ми центрування нашу карту над Harvard Yard і Накладення всіх цих назв будівель, і ми повинні були його додати це. Так що, якщо я хочу, щоб шукати, наприклад, Меттьюз зал, у нас є трохи меню, що випадає. І я думаю, що він використовує Bootstrap, в Бібліотека ми обговорювали раніше для цього. І якщо ви натиснете на Matthews Хол, він негайно стрибки карту до певного розташування, і це показує, ви картина в цьому маленькому спливаючому вікні. Але навіть ця маленька спливаючих вікон, ми не реалізували. Якщо я перейдіть на нашому отриманні почав сторінку і шукати інформаційні вікна, ви побачите, що деякі з функціональність ви самі можна додати, хоча і з трохи більше складності, щось, зване інформаційне вікно. І якщо я натискаю приклад тут, і це те, що цікаво, ви можете зробити щось на зразок цього, натиснувши на маркер, а потім вуаля, інформація спливає. Таким чином, ми не зовсім введені досить особливості JavaScript щоб намалювати картину того, як саме вам може підключити всі ці речі разом, але ми-то подряпав поверхню. Насправді, що я тільки що зробив, коли Я натиснув на цей маркер, був викликаючи подія, так зване на подію клацання. І ми насправді побачив подія раніше сьогодні, так званий уявити подія, коли ми запобігали користувач від пошуку для кішок. Отже, ми вибрали вид і вибрав з числа всіх цих різних функцій, щоб дати вам відчуття того, ми сподіваємося, про те, що ви можете насправді робити з трохи більше комфорт в програмуванні, і повністю вільні ресурси. Які-небудь питання? Немає? Це ваш останній шанс, принаймні сьогодні, в п'ятницю, щоб отримати що-небудь від грудей так що ти виходиш звідси відчуваючи себе впевнено і комфортно. Так. ГЛЯДАЧІ: Чому не Ви додаєте ще одну річ? DAVID Маланки: О, боже мій. Мені потрібно, щоб відпочити в ці вихідні, я думаю. Інші питання? ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Ви в can-- Internet Explorer, в іншому світі, ви використовували, щоб мати можливість поставити VB Сценарій, віртуальний базовий сценарій, але це насправді ніколи не прижився. Тому короткий відповідь просто JavaScript. Інші питання? Добре, ну, дозвольте мені зробити це. Дозвольте мені захопити з нашими колегами за межами. Вони мають деяку оцінку форми, які вони хочуть, щоб все щоб провести кілька хвилин заповнення. Вони хочуть, щоб зібрати цю форму і будь-які відмови, які ви могли б мати зовні. Вони також матимуть сертифікати. Я припускаю, що є ще деякі закуски зовні. Дозвольте мені передати їх, і якщо вам є будь-які питання в той же час, Я буду ходити навколо більш індивідуально і ми можемо вам почати. Так, звісно. ГЛЯДАЧІ: [нерозбірливо] DAVID Маланки: Це як правило, правда, в ці дні. Звичайно, з веб програмне забезпечення, ви покладаєтеся на інших ви або естетично використовуючи речі як Bootstrap, так що ви не повинні реалізувати низький рівень Детальна інформація про меню і кнопки і все таке. Ви, спираючись на кого-то як Google, так що ви не повинні будувати Uber бізнес і відображення бізнес, і будь-яку кількість подібне додатків, а також. Насправді, логіни популярні, теж. Якщо ви використовували Spotify або будь-яку кількість веб-сайтів, ви будете увійти до деяких сайтів за допомогою Facebook. Так що добре, там є API-інтерфейси для входу в систему в даний час, так що ви не маєте щоб мати свій власний стіл користувачів і все вашої власної бази даних обов'язково в тій же мірі. Ви можете дозволити Facebook зробити все з цієї складності для вас. Так що це захоплююче час, якщо чесно, в програмуванні, тому що є так багато третя сторона послуги, які ви можете побудувати на вершині. І знову ж таки, ціна, яку ви платите або фінансових або часу простою. Якщо Google йде вниз, так що робить Uber, можливо, але, можливо, що це розумний компроміс. І знову ж таки, це було однією з тем, Будемо сподіватися, що за останні пару днів, ці компроміси. І рідко там відбувається щоб бути правильною відповіддю. Це насправді, тим краще з двох або більше відповідей. Передайте їх навколо. І ці рахунки Cloud9 триватиме працювати, в теорії, на необмежений термін. Ви можете виявити, якщо ви будете чекати кілька днів або в тиждень або більше, щоб знову увійти в них, це може зайняти як один або п'ять хвилин, щоб відкрити назад вгору, але це тільки тому, що вони поклали в сплячий режим, щоб заощадити ресурси.