>> DAVID Малан: Добре, ние сме назад.
Така че за вълнуващите заключение, нашият последен раздел
за уеб програмиране, което аз смятахме, че ще използва като общ термин
да улови няколко останалите теми.
Така че в края на ден, ние всъщност ще направя
малко ръце на уеб програмиране с език, наречен JavaScript.
И аз мисля, че ние ще разгледаме в нещо, свързано с изображения
и откриване на нещо тайно, скрито в едно изображение,
и също така да погледнете на Google Maps API, приложно програмиране
интерфейс, като нещо, представител на вида на софтуер
това е все по-често и свободно достъпни днес.
>> Но защо да не можем да разгледаме при съставка на този свят
че ние сме вид бил като за даденост съществува
за известно време, а базата данни.
За изминалото денонощие и половина сме Предполага
че ние имаме достъп до база данни, но какъв проблем се реши на база данни?
Какво прави той за нас?
Какво е?
>> АУДИТОРИЯ: [недоловим]
DAVID Малан: Приема, цялата информация, ОК, и какви видове информация
може да ви постави в него?
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: Всяка информация ще ви постави в нея, ще се върна.
Това е вярно.
И на един типичен уеб-базиран сайт или уеб заявление, какви видове информация,
конкретно, може да ви постави в?
АУДИТОРИЯ: [недоловим]
DAVID Малан: Потребители.
Така че това, което е потребител?
>> АУДИТОРИЯ: [недоловим]
DAVID Малан: ОК, регистриран потребител на сайта.
И какво означава това за информация на потребителите магазин "?
Какво композира потребител?
Всеки потребител има какво?
АУДИТОРИЯ: [недоловим]
DAVID Малан: Да, лично данни, и това ми харесва.
Нека да бъдем по-точни.
Така че един потребител обикновено има име, какво друго може един потребител да има?
АУДИТОРИЯ: [недоловим]
DAVID Малан: An addr-- OK, така че първо име, фамилия.
Това е добре.
Всъщност, нека да се определи че, тъй като това ще
да се отвори възможност за дискусия, все пак, по-нататък.
Първо име, фамилия, пол.
Един ID на някакъв вид.
Какво друго?
Чух нещо друго преди, също.
Един имейл, пощенски адрес.
>> Така че нека да спре там и сега разгледаме Не това, което ние съхранение в базата данни,
but-- и не защо, тъй като това е може би Очевидно е, че след като се регистрирате на потребител,
искате да ги помни, за известно време.
Вие не го искат, за да просто да се съхранява в RAM
и се forgotten-- така нека да се съсредоточи върху това как.
>> Оказва се, че в света на бази данни,
има най-малко два вида тези дни.
Нещо, наречено SQL база данни, Език за структурирани заявки,
или, cutely име, NoSQL, което не е SQL.
И последната е пример за това какво биха могли
се нарича обектно-ориентиран, или обект магазин, база данни
която съхранява предмети, и не, извинение ми, тъй като ние скоро ще видите, редове.
>> Така че ние ще се съсредоточим само за миг на Първият от тях, а именно, на SQL
база данни, ако само, защото това е толкова познато вече, на никого
който е използвал Excel или Google Таблици или Apple
Numbers или всеки стандартен програма за електронни таблици,
или, което е същото, или повече sophisticatedly,
нещо като Microsoft Access или Oracle
или MySQL или PostgreSQL, всички от които са имена на продукти за реализации
на следния идея.
>> А релационна база данни е просто нещо, което има редове и колони.
И от редове и колони, Аз буквално означава нещо
по този начин, така че, където бихме могли да имат Име на поле, и неговия вид тук.
И действително, нека Сега започнете да картографира тези.
Така че всъщност, аз не знам Затова аз привлече отделна диаграма.
Нека да запази тази проста.
>> Ние имаме право тук начало на нашата маса, където
това е името на областта и това е тип данни,
и по вид искам да кажа следното.
това е число, то е низ, кратък низ като една дума,
това е точка, е, че двоични данни, като изображение?
И нека просто дразни това освен само за миг.
Така че първото име, номер, низ, голяма част от text--
АУДИТОРИЯ: [недоловим]
DAVID Малан: Да, така низ.
И в контекста на база данни, ние ще обикновено наричаме тази област Чар.
Ще кажа само Чар за сега, но ние сме Ще се усъвършенства това в един момент.
поле на символи.
Фамилия е може би една и съща.
Пол?
>> Мъж или жена, така че може да бъде поле на Чар.
Тя би могла да бъде или цитат, край на цитата "Мъжки" или цитат, край на цитата "женски"
или тя може да бъде или М е.
Ако искате да бъдете по-всеобхватно, може да се наложи една трета стойност
или някаква друга сфера като цяло.
И така, можете да ползвате вярно невярно.
Полето може да се нарече мъжки и тогава може да се каже, вярно или невярно.
Но това не е задължително да улови цялата информация, може да искате.
>> Така се оказва, че има друг тип на поле, което може да бъде полезно тук
в типичен база данни, наречена ENUM, където тя е поле характер,
но вие, дизайнерът, стигна до изброят възможните стойности,
като цитат, край на цитата "мъжки", цитат, край на цитата "женски" и така нататък.
Така че каквото и стойност е във вашата база данни,
наистина характер основа, но тя трябва да бъде един от тези стойности.
Ние вероятно няма да искат ENUM за собствено или фамилно име.
В противен случай ние ще трябва да се изброят, като име
произлиза от, буквално всеки Възможно първо име и фамилия.
>> ОК, така ID какво трябва да бъде ID?
Да, така че може би един номер.
Така че нека да се придържаме с че за сега, номер.
И от номер, номер е малко прекалено широк сега.
За края на втория ден, аз се чувствам като ние
трябва да е малко по-прецизно.
Брой би могло да означава като това може да бъде нещо като 1.236.
И това вероятно не е какво имаме предвид под идентификационен номер.
Какво би означавало с ID?
>> АУДИТОРИЯ: [недоловим]
DAVID Малан: О, ОК, така че Може би това не е дори един брой.
Може би това е действително уникален идентификатор това е низ, като потребителско име.
Така че абсолютно, би могло да бъде.
Мисля, че някой вероятно означаваше, цифров, все пак.
Така че нека да остане с това.
Какъв брой?
Какво е по-precise-- цяло число.
Така че редица като 0, 1, 2, 3, така че ние ще наричаме това е цяло число.
И дори тогава, можех се nitpicking, това е
не наистина само общото число, което искате.
Може би не искате отрицателни стойности, Просто защото, то просто се чувства странно.
Може би искате положителни числа.
Така че можете да се изразя че в база данни,
но за сега, ние ще кажем число.
>> Електронна поща?
Това е може би just-- на какво?
>> АУДИТОРИЯ: [недоловим]
>> 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, за променливо поле Чар.
И разликата е това.
поле A Чар, можете проектанта, Трябва да се уточни предварително
точната дължина на полето.
Така че може би първото име като 20 се чувства вид безопасно.
Може да се наложи да се направят някои Googling да да видим дали това е достатъчно, всъщност безопасно.
Там вероятно е име с 21 знаци, но за сега, предполагам 20
е безопасно.
>> поле A Чар би означавало в база данни, която ви
използвате 20 и винаги 20 символи.
Сега, ако това е просто D-A-V-I-D, 15 от тези, просто ще бъде празни символи,
но все още използвате всички 20 байта.
поле A VARCHAR, за разлика от това, означава низ трябва да бъде до 20 символа
но ако това е само пет, вие само ще използвате
пет, или може би шест за особена стойност в края,
като че 0 обсъдихме, че обозначава края на герой
последователност в паметта.
>> Така че, когато си мислиш може да изберете Чар
срещу VARCHAR, имайки предвид, че компромис?
Чар използва, че много герои, VARCHAR използва не повече от това, че много герои.
АУДИТОРИЯ: [недоловим]
DAVID Малан: OK, когато знаете за дължина на низа доста непреодолими
да се използва само Чар, защото ако вие го знаете, просто го остави.
И може би това е вярно за цип код, в САЩ, най-малко, 02138,
тя винаги ще бъде пет символи, докато не добавите таблото четири.
Но може да се наложи някои стойности за които винаги ще знаете дължината.
Или може би държавните символи, като NY за Ню Йорк,
и MA за Масачузетс в САЩ.
Може би ви е нужно някои ситуации където това е напълно разумна,
но по тази логика, защо са ние дори overthinking това?
Защо просто не се използват VARCHAR и тогава ние просто ще
Винаги използвайте два знака, така или иначе, или Винаги използвайте пет знака, така или иначе?
Защо просто не спести VARCHAR за всичко, от тази логика?
Не трябва да има уловка.
АУДИТОРИЯ: [недоловим]
DAVID Малан: Възможно ли е напиши нещо не е наред.
Така че това е вярно.
Но дори и тогава, те не могат да използват повече памет, отколкото мога да разпределят.
Аз все още имам финала каже по дължината,
така че те не могат случайно да тази грешка, но една добра мисъл.
Това е по-фина, но това е много свързаното за нашата дискусия, всъщност, на масиви
и свързани списъци по-рано.
>> Оказва се, че една база данни, ако той знае, че всички стойности са
на фиксирана дължина, дори и ако някои от тези стойности са празни,
сортиране на естетически празно, D-A-V-I-D и след това 15 заготовки,
Оказва се, че ако всеки област е със същата дължина,
много прилича на масив имаше всички свои неща успоредно с гръб до гръб, така че
бихте могли просто плюс 1 за да стигнем до следващото стойност, същата идея в таблица на база данни.
Ако всички от вашия характер струни са с еднаква дължина,
Имате ли какво се нарича случаен достъп.
Ако всички струни са на дължина 20, не е просто
направя плюс 1 просто правя плюс 20, плюс 20, плюс 20, плюс 20,
и вие може много бързо да преминете през или търси чрез всичките си данни.
>> променлива поле A Чар, за разлика от това, не винаги има 20 знака.
Тя може да има 20, а след това 15 и след 19 и след 10,
и така, ако искате да търсите през него, не може просто сляпо
добавете 20 байта, за да стигнем до следващото.
Вие буквално трябва да се търси чрез защото в края на структурата на данните,
ако щете, е окъсани.
Тя вид влиза и излиза основава на действителната дължина на низ.
Така че, когато знаеш, дължината, като Карим казва, използвайте полето на Чар,
защото ще спечелите, че ефективност е
може да се търси чрез него по-бързо когато търсите за данни,
в противен случай се използва променлива.
>> За съжаление, нямам добър отговор за колко време трябва да е името,
но за нещо подобно име, бих казал,
а VARCHAR е обща защото това не се случва
да бъде фиксирана дължина за всеки.
20, аз не знам, 20 се чувства малко по здраво.
Нека просто кажем, 50, 50.
Това няма да ви струва, че много повече, за да се каже, на 50 вместо на 40,
но в един момент, което трябва да се направи преценка повикване.
>> Много чести, честно казано, за [? историческо?]
причини, въпреки че това е прекалено, е да се каже, 255, защото преди известно време,
в популярните системи за бази данни, като MySQL, безплатен инструмент за отворен код
че много компании като дори Facebook използва,
това е максималната подразбиране така че хората просто отиде с него.
Така че не е неразумно, но ние ще използвате малко повече интуиция
и да кажа, сигурен 50, това е може би малко прекалено.
>> Пол, което правя като ENUM, и така ние следователно
изброят мъж или жена, или може би по-ефективно,
m е или или друга символи, но ENUM се чувства като един добър избор там.
За да е ясно, пол може да бъде само една VARCHAR,
и бихме могли просто всички Съгласен като добри хора,
винаги да постави същите стойности там.
Мъж или жена, или какво ли не.
>> Но проблемът тогава, е, че можем да направите грешка, както е предложено [недоловим]
рано в различен контекст.
Ако направите грешка, бихме могли да получите неправилни стойности в нашата база данни.
Така че това, което е хубаво за бази данни като Oracle и MySQL и други,
е, че имате тази последна слой на защита, където
вашия администратор DBA, база данни, всеки, който е проектиране тази таблица като ние
са устно, може да постави на мястото на ENUM, че
предпазва от това, като се посочва мъжки, женски, и така никой
друго не програмист може случайно въведете друга стойност.
Така че това ще бъде нещо добро.
Това е функция.
>> Така че за самоличност, ако приемем, че цифровата ID него, може би трябва да е положително число.
И ние понякога имаме възможност за обсъждане на дължина.
Може би не типично зададени редица тук,
вместо ще посочите това е междинно съединение, или голям ср,
като те са обикновено се нарича.
Но обикновено цяло число би било, да речем, 4 байта.
И ако това е 4 байта, това е колко бита?
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: 32 бита.
Така че колко потребители може да имаме в нашата база данни, ако всички те имат ID
и това ID трябва да бъде уникален?
32 бита означава, че сме модели на едно, две, три, четири, five--
И така, как много различни модели на нули и такива, може да имате, ако има 32?
Това е същото като пита какво е два до 32?
Това е голям брой, че Не мога да се прави,
но знам, че това е грубо 4 милиарда.
Така че това означава, че вашият таблица на база данни може да имат четири милиарда потребители и това е всичко.
>> Така че това е една интересна дизайн отражение.
Приличен брой компании са решили, може би не толкова много
за тяхната маса потребителите, тъй като 4 милиарда потребители е рядък проблем.
Това е нещо като Facebook стил проблем, не типична компания проблем.
Но може би, ако имате по сделката трупи или някакъв вид данни, които постоянно
получава писмено в базата си данни че абсолютно може да има милиарди
и милиарди редове, и използвате цяло число, за това,
какво ще се случи веднага след като можете да получите на ред номер 4 милиарда
и след това се опитате да вмъкнете 4 милиардна и 1, така да се каже?
Аз съм опростяване цифрите малко.
>> Можете да се намалят, аз ви кажа трябва да се справя някак си.
И това, което компютър обикновено би направил, мисля за това, дори от тази сутрин,
ако имате стойност на 4-битов като 1, 1, 1, 1, който,
просто да се връзвам на сутринта заедно с следобед, какво
е този брой представлява в двоичен?
Добре, ще направи по-лесно.
Какво прави този номер представлява в двоичен?
Добре, ще направи по-лесно, това, което изобразява това в двоичен?
АУДИТОРИЯ: Three.
DAVID Малан: Три, защото имаме тези column--
[СМЯХ]
Уф!
Имахме колоната за еденици и колоната на двойки.
Така че предполагам, че наистина ни [? обработваема земя?] не са били 32 бита,
но това са два бита, което можем брои от номер 0, 1, 2, 3 потребител,
и след това ние сме вид обратно към потребителското 00 отново.
Така че това е, което обикновено се случва.
Ако някога сте чували за expression-- вероятно има не, но ако have--
число преливник, където можете запази обръщане на всички ваши бита
да бъде възможно най-големите стойности, и след това сте извън бита,
това, което обикновено би се случило?
Защо казвам 00?
Е, това е три.
Как да представляват 4?
Как да представляват за номер 4 в двоичен?
АУДИТОРИЯ: [недоловим]
DAVID Малан: One-- да, да не кажа 100 сама по себе си,
защото тя е с грешно конотация, но 1-0-0.
Така че номер 1-0-0 е наистина правилно, но ако имате само два бита,
какво сте наистина направи?
Ти се прехвърлят за 00.
И наистина, това е, което ще се случи.
Всъщност, можете да се сетите за това по-известна.
Ако си спомняте, какво, преди 16 години, светът
е трябвало да приключи, когато Проблемът на Y2K случило.
Защо беше това?
Ами повечето компютри, за разумни решения,
бяха съхраняване на номера харесва 1975 година или през 1999 г.
само с помощта на две цифри в паметта на компютъра.
Така че, разбира се, това, което се случва, когато стигнем до 2000 г.,
отидете на този, или по-скоро, да.
Така че и да отидете до 2000 година, но ако използвате само две цифри това изглежда
като годината 00 и така сте се претърколи.
И това е причината много от системите е необходимо да се актуализира в момента.
>> Така че с това каза, компании като Facebook работи против това.
Така че единственият начин да се справят с ситуация, честно казано, е да го изпревари.
Или най-чистият начин за справим с това положение
е да го изпревари, така че не Трябва да се направят промени по-късно.
Така че, вместо на 8 байта, знаете ли какво?
Отивам да бъде напред-мислене тук, въпреки че е
малко оптимист, че ние ще имаме 4 милиарда
и 1 потребители на нашия уебсайт.
Но нека просто използвайте 8 байта, или 64 бита, които обикновено биха били
наречен голям число, много технически.
И това просто означава, че може да има дори повече цифри в номера си.
Но това е важен проектиране на решения,
защото, ако изберете номер, който има твърде малко бита на изразителност
в действителност можете да създадете бъг в софтуера си.
>> Добре, така че нека да приключи с електронна поща и пощенски адрес.
Така имейл, колко дълго трябва имейл адрес да е?
50.
Аз наистина нямам представа, но това е Вероятно нещо подобно,
защото в противен случай никой няма да пишете ако стане твърде дълго, така че 50,
нека да отида с него за сега.
Пощенски адрес, колко време трябва да бъде това?
АУДИТОРИЯ: [недоловим]
>> DAVID Малан: Това не е само на пощенски код, все пак.
Пощенски адрес, чух.
Така че това е като един Братъл Square, запетая, Cambridge Mass., запетая, 02138.
И в действителност, нека просто дръпнете нагоре малко лист тук.
Това се чувства като това е пропусната възможност.
Ако имаме 1 Братъл Square, запетая, Кеймбридж MA 02138,
Имам чувството, че можем да направим по-добре не само пощенски адрес.
Защо да не се взривят това малко?
Какво получавам в?
Какво трябва да вместо да има за нашите редове тук, може би?
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: Да, така че нека го наричат ​​street_number,
и долна черта е само една обща начин да има нещо, което прилича на пространството,
но това не е, всъщност.
Street, и след това city-- съжалявам?
>> АУДИТОРИЯ: [недоловим]
DAVID Малан: Бихме могли да направим това.
Line една, втора линия.
Защо не можем да се запази тя просто за сега,
но това е абсолютно приемливо решение.
И след това състояние, а след това нека да е малко US-ориентирана за сега
и просто правя пощенски код, просто защото това ще доведе до интересна грешка
или проблем тук.
Така че предполагам, че сега е нашият адрес.
Това е малко по-досадно, че имаме всички тези повече полета,
но сега можем да маркирате нещата малко по-добри.
>> Така че сега улица брой вероятно не трябва да бъде знак, трябва да го?
Какво трябва да бъде?
АУДИТОРИЯ: [недоловим]
DAVID Малан: Може би, един брой като цяло число, отново?
Голяма число?
Може би не живеят при 4 милиарда Main Street
или нещо толкова луд.
Така число е вероятно добре, но има ли някой
някога е живял на адрес, като 1А Братъл Square, или 1 и 1/2?
съществуват Тези неща, за съжаление, дори ако не са живели там,
там са тези аномалии като апартамент 1A, 1B, 1C.
Така ли, че това, което ние вероятно не трябва да отида с цяло число,
в противен случай отиваме да загуби част от продажбите.
>> поле Char, може би?
Аз не знам колко време.
Това вероятно няма да бъде че дълго, така че 10 или нещо такова.
Никой няма да напише по-дълъг номер, може би.
Но отново, ние вероятно даде повече мисъл за това.
Може би в Google, се направят някои изследвания, но ние ще отидем с червата ни за сега.
Streets, Чар, 50, аз не знам.
В един момент, никой няма да го напиша на един плик,
също, така че вероятно има някои горна граници там.
Сити, същото, разбира се, така Чар 50.
>> Членка, може да бъде US-ориентирана за сега.
Така че това би могло да бъде в списъка, така любезен на съдебно решение повикване, състояние.
Тя може да бъде като два символа.
Така че в действителност, може би, аз непрекъснато повтаряше Чар.
Аз може би означава, VARCHAR, само за някои ефективност,
но ние ще се върнем към това решение в един миг.
Може да е знак на дължина 2 за състояние.
Ако в САЩ те имат, като MA, Масачузетс, Ню Йорк, Ню Йорк, Ню Джърси, Ню
Джърси, и така нататък.
Така че това би могло да се фиксира на това.
DC за Вашингтон.
>> Но аз мисля, Olivier, вие предложен друг подход.
АУДИТОРИЯ: [недоловим]
DAVID Малан: Да, така че това е малко досадно да напишете,
но ENUM може да направи повече смисъл, защото по този начин, поне в САЩ,
бихте могли да се изброят, ако досадно, но можете да го направите само веднъж в базата си данни
и никога повече не трябва да се мисли за това, всички 50 дву-символни кодове.
Така ми харесва ENUM.
Нека да се придържаме към това там, защото това нещо като налага по-тежки.
И тогава пощенски код?
Мисля, че Андрю имаше мисъл за това
АУДИТОРИЯ: [недоловим]
DAVID Малан: Да, пет или девет.
Нека просто да го прости.
Просто направи пет за сега.
Но може би бих могъл просто направя цяло число, нали?
Можех, но знаеш ли какво, аз направих тази грешка веднъж, в известен смисъл.
Преди години бях мигриране от Microsoft Outlook за Gmail,
и Outlook има начин за експортиране всичките си контакти като файл Excel,
на CSV файл, разделени със запетая стойности файл.
И аз направих грешката, аз мисля, на двукратно щракване,
веднъж Свалих износа, за да уверете се, че тя изглеждаше като очаквах.
Аз трябва да са хит Запазване или нека автоматично спаси удар или нещо такова.
Защото, когато аз след това се внасят то в Gmail, всичко работи.
Но в продължение на години, и до днес, и Направих това, пет, преди 10 години,
Аз съм все още намирането на приятели, които имат адреси, които изглеждат по този начин.
Защо?
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: Отне за 0, добре, по-скоро това,
превзе цялата пощенски код като редица, и поради това, че е
водеща 0, което означава, това няма никакво значение.
И така 2138 изглежда да бъде моя пощенски код.
И това е, честно казано, едно досадно Excel функция, при която мисля, че по подразбиране,
дори ако е предназначен за точно да бъде текстова, Microsoft Excel
реши, нека ми бъде от полза, и о, виждам само цифри.
Нека лечение на тези като номера.
И го отрязва водещите нули.
>> Кълна се в Бога, всяка двойка на месеца да намеря един адрес,
и от един вид OCD, се връщам в и добавете 0, въпреки че аз никога не
изпрати на хората букви или нищо.
Но аз съм все още се намери останки от това.
Така че това е, за да се каже, е, това е добра идея?
ОК, не, защото някой в Масачузетс, в тази област,
ще има по-о ги води.
Така че нека да отидат с подобно Чар, вероятно, пет.
>> И тук, осъзнаваме, че може да се използва ENUM и ние
биха могли да се изброят 10000 възможни кодове ZIP,
но, че се чувства като това е може би пресичане на линията на, като, ползи.
Ако трябва да вход, че много данни в базата данни
за защита срещу нещо.
Така Чар реализира можете да въведете в Н-Е-Л-Л-О като вашия пощенски код,
което не е очевидно, цифров.
Така че няма начин, в типичен база данни,
да се уточни само цифров и дълги само пет знака,
така че ние ще имаме да направя, че в кода.
Ние ще направим това в PHP или Java или какъвто и език ние сме
използване на сървъра, за да наложат този вид ограничение.
>> Ууу!
Добре, така че всички въпроси, просто все още?
Нека да направим друго решение дизайн.
Оказва се, че сте също да избереш,
при проектиране на SQL база данни, или типични релационни database-- където
отново, релационна просто означава редове и колони,
Ето как можете да организирате data-- и осъзнават, че това, което означава, че това е,
Аз съм бил подвеждащ по че, аз съм drawing-- това
е това, което се нарича схемата за база данни таблица.
Това е като спецификации за table--
но когато дойде време действително да съхраняват данни,
и ние ще направим това само чрез пример тук.
Отивам да отвори Excel, защото Excel ще ми даде редове и колони.
И това е точно това, което Oracle и MySQL и други инструменти ще ми дават.
Така че аз съм просто ще използвате то заради обсъждане на.
Нека да вървим напред и да се отворят по- представител документ тук,
увеличите малко.
Така например, нашите заглавията са сега първо име, фамилия, пол, ID,
електронна поща, номер на улица, улица, Опа.
Street, град, държава, просто около пасва на екрана.
>> И така, какво означава това е, че когато един потребителското първи регистрира за моя сайт,
това ще бъде нещо като Дейвид, Малан, м, да речем 1,
malan@harvard.edu, улица номер ще да бъде като един Братъл Square, Cambridge, MA,
02138, и след това така нататък.
Така че, когато казвам, че една релационна база данни или SQL база данни е на колони и редове,
Искам да кажа това.
Че актуалните данни се съхраняват в редове и колони.
Това е просто съвпадение, че ние говорим,
и аз просто го рисуване в редове и колони.
Това е само на схемата, всеобхватна дефиниция.
>> Така че на тези области тук, или еквивалентно, там,
кои са областите, които смятате, че Аз съм вероятно да търсите по ако аз съм потребител
или ако аз съм администратор на база данни?
Подобно на това, което полета съм аз всъщност ще се търси в?
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: Името, да, така Харесва ми това, that-- да,
имейл може да е доста често срещано.
За съжаление, ти каза името.
Така maybe-- и отново, ние сме вид говори абстрактно.
Аз не знам защо вие бихте да се търси име,
но, че се чувства разумно, ако като търси потребител.
Може би се посочва, сигурен, ID.
>> И това е хлъзгав наклон, защото можех
планират сценарий, при който Може би шефът ми ме помоли,
колко мъже имаме на нашия сайт?
Колко жени имаме на нашия сайт?
И така, в този момент, може да искате да търсите в полето за пол, твърде,
и нищо друго.
Така че има компромис тук.
Отново, няма верен отговор, но има
е функция в повечето SQL бази данни известен като индексиране, при което
вие, дизайнерът, на администратор на база данни,
получите да се реши по-рано, което Полетата за данни трябва да се оптимизира
за търсения от.
>> много наивно Може да се каже, оптимизиране това, оптимизиране, че се оптимизира този,
оптимизиране че и това, и базата данни ще
се направят някои магически нещо под качулка, и да направим нещо по такъв начин,
че следващия път, когато търсите на някоя от тези области,
ще, в действителност, да бъде по-бързо.
Това е възможно.
Тя не се анулира.
Но трябва да има цена, платена.
>> Ако наивно, или над-ентусиазирано да речем, индекс на всички тези области,
така да се каже, да ги направят всички ефективно търсене,
каква цена са най-вероятно да плащат?
АУДИТОРИЯ: [недоловим]
DAVID Малан: Изпълнение.
Какво имаш предвид?
Е изпълнение, най-малко в контекст аз съм обсъждане, е по-добре сега.
Това е определението за индексиране.
Това ще направи по-бързи.
Така че времето намалява, така да се каже.
АУДИТОРИЯ: [недоловим]
DAVID Малан: Space.
Така че отново, те са на обща търговия.
Мога да ускорят търсенията ви, но това е ще ви струва повече байта пространство.
Защо?
Е, по подразбиране, ако имаме нито един от тези червени звезди, нито един от тези индекси,
както аз казвам, как да търсите за името в тази база данни?
Така че нека да се направи нашата внимание на този пример.
Ако имаме Дейвид и Скъли и Карим и Arwa и други в тези редове,
например.
>> Така че нека да направим точно това.
Скъли е тук, и след това имаме Карим, и Arwa,
и всеки друг, ако не имат индекс дефиниран, така да се каже,
най-доброто, което можете да направите, е линейно търсене.
Ако търсите Arwa, ние не сме ще бъде в състояние да скочи право към нея
бързо.
Отиваме да започне отгоре и отидем по целия път до дъното,
не за разлика от първоначалното ни Майк Смит например.
>> Ако, обаче, аз казвам, хей, база данни, индекс на първото поле име,
След това то се случва да се направи нещо любител и подкрепи нещо
като двоично търсене.
Това вероятно не е двоично търсене по себе си.
Бази данни са склонни да използват друг структура от данни, наречена B-дървета,
да не се бърка с двоични дървета, че просто да го направи по-бързо да търсите
нещо логаритмична в природата.
Но цената, която плащате, за да се изгради, че черта, че структурата на данните в паметта,
е повече байта.
Така че това може да отнеме няколко мегабайта, някои гигабайта, кой знае?
Това зависи от данните.
>> Така че в един момент, че трябва да се реши, вероятно не е общ случай.
Така че това, което сме действителната срещаните случаи, ако наистина трябваше да избирам,
Какви могат да бъдат любимите си области?
Електронна поща.
И аз като имейл, тъй като електронна поща, на теория, трябва да бъде уникално.
И така, обикновено, когато знаеш, предварително, че един от вашите полета
или ще бъде уникален, че има тенденция да бъде добър поле
да търсите за, защото по този начин, когато търсите нещо,
започваш да се върна един или нула отговори и след това сте готови.
Вие не трябва да се запази търси още други.
>> И така, в този случай тук, електронна поща, толкова дълго, колкото не може да се регистрира два пъти
със същия имейл адрес, е добра.
ID по дефиниция, в компютърни науки свят,
ако говорим за един ID, че е по-добре да е уникално.
Това е нещо като конотация на ID или идентификатор.
А останалите от тях може да бъде, нека да ги наречем хубаво да имащите,
но не е наистина необходимо.
>> И така, в една база данни, укажете индекси,
но може да бъде още по-прецизно.
Може да се каже, хей, база данни, се уверете, че всеки ID в тази таблица е уникална.
Дори не си позволи един програмист случайно поставени в два екземпляра имейл
или дублира ID номер.
Така че много прилича enums защитят нас по подобен начин, вие
може да има тези защити по-ниско ниво.
И така, дизайн база данни, в известен смисъл, е вид на шега,
защото можете да го направите в защита.
Ти нещо се предположи, че работите с ужасни, ужасни програмисти
и искате да вкарате толкова защити колкото можете да защитите данните си,
но едновременно искате да им помогне да се представят по-добре
от избора, който полета с цел оптимизиране за.
Но не може да е задължително да го направи в вакуум като ние вид са тук.
Трябва да се знае какви са тези общи случаи са.
Ако разработчиците са прилагане адресна книга,
може много добре да бъде в състояние да търсите в почти всяка област,
само от природата на заявлението.
Така че може би ще прекарат че допълнително пространство.
>> Точно така, на всички въпроси?
Да.
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: No.
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: OK.
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: О, така че ние говорим по начин,
Сега това е напълно език агностик.
Така че ние говорим сега за релационни бази данни по-общо,
или SQL бази данни по-общо.
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: по-добра дума за използване е, може да се използва от всеки език.
Така че мога да пиша JavaScript код, C код, C ++ код, Java код, Ruby код,
всички от които се говори за бази данни и изпълняват заявки.
В действителност, това не е лошо идва и например заявка за.
И отново, ние няма да отидат в Java или C ++ или всеки от които вече,
но в SQL, на езика, на които държа позовавайки, Structured Query Language,
Това от своя страна е език за програмиране, но тя е предназначена да се използва за, не
изненада, структурирани заявки за заявки.
>> С това искам да кажа това.
Начинът, по който изберете данни от база данни MySQL
е буквално написали във вашата програма нещо като изберете звезда от потребителите.
Аз съм се предположи, че тази таблица, оттук нататък се нарича потребители.
Можех да го наречем нещо, което искаме, но този вид има смисъл.
И така, изберете е много Общата глагол, ако
ще, в SQL, че буквално прави това.
Какво мислите звезда означава в този контекст?
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: Съжалявам?
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: Не е необходимо, това е по-обхватна от това, всъщност.
Това е див характер на карта.
Star почти винаги означава нещо, Това означава, в този случай,
изберете всичко от базата данни.
Така че, когато казвам това, имам предвид дайте ми обратно всяка колона
от моята маса, наречена потребители.
Така че ми даде набор резултат, както се нарича.
С други думи, да ми даде копие от електронни таблици, е това, което аз съм се при.
>> Но ако кажа, изберете звезда от потребители където ID равно на 1, колко голям трябва
моя резултат набор бъде след това?
Или еквивалентно, колко много редове трябва Аз се върна от базата данни?
Вероятно само един, ако имам наистина третира ID като уникален идентификатор,
и ако Дейвид има това уникално ID, I трябва да се върнем един и само един ред
съдържащ цялата информация на Дейвид.
Ако аз казах това, когато ID е равно на 99, аз трябва да се върна,
в този контекст, нулеви редове, най-малко в момента.
>> Въпреки това, ако аз не ми пука за цялата тази информация,
Можех само да кажа, където се Дейвид да живее?
Изберете пощенски код от Потребителите, където ID е 1.
Това ще избере да ме само цип на Давид код и не целостта на този ред.
Защо бих могъл да направи това вместо заявката за звезда, дивата карта?
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: Да, може само нужда от нея.
Така че производителността е отново отговорът тук.
Защо искаме повече информация, отколкото трябва,
защото дори и ако всичко е наред заедно, все още трябва да копирате, че данните,
то ще изглежда, от базата данни в програмата си по някакъв начин,
и това е само глупаво, ако Необходимо е само пет от тези цифри,
не целостта на реда.
>> И така, как да вмъкна един потребител?
Да предположим, че даден потребител има само регистрирана за първи път.
Синтаксисът обикновено ще изглежда така.
Поставете в потребителите, и След това ние ще кажем, ценности,
и тогава ние ще кажем, ценности като, да речем, Лорън Скъли,
нашата видеографиата точно тук.
И следващото поле е пол.
Така че ние ще кажем, цитат, край на цитата "F", след това имаме ID
и аз ще say-- нека преструвам, тя всъщност не е тук,
така че ние ще се върнем назад в историята.
Така че 2 ще бъде неин ID.
И тогава следващото поле тук е нейният имейл.
Така че това ще бъде като Лорън Скъли и така нататък,
и ние просто ще Дот точка го точка, далеч от тук нататък.
Сега тя ще получи малко досаден, но заявката за вложка
в крайна сметка ще изглежда по този начин.
>> Ако искате да се отървете от Скъли, ъ-ъ-о, нека да се дерегистрира
си, тя изтрива профила си, изтриете от потребители, където ID равнява на 2,
ще се отървете от Скъли.
Или мога да кажа за актуализация на потребителите, определени, нека да кажем, това, което бихме могли да се промени?
Да предположим, че тя се движи.
Set цип равнява 021-- Не, това е сегашната й цип.
90210.
Единственият друг пощенски код, Знам, че в света.
Така че ще се промени й цип code-- всъщност,
че няма да се промени нея пощенски код.
>> Какво съм просто правя?
Въпреки че синтаксисът е вероятно ново.
>> АУДИТОРИЯ: [недоловим]
DAVID Малан: Да, аз се мести всеки до Бевърли Хилс, Калифорния.
Така че аз трябва действително каже къде ID е равно на 2.
И т.н.
Така SQL е всичко за тях видове инструкции.
Изберете, вмъкване, изтриване, обновяване, с тези предикати в края
тези точки, в които, така да се каже.
И има много повече можете да направя, но това наистина просто се свежда
просто, ако arcanely, изразявайки това, което искате на базата данни, за да се направи.
>> И след това на базата данни ще разбера, когато
поставите Lauren Скъли в база данни, в която да я поставите в памет
така че ние може много бързо да получите й въз основа на имейл адреса й
или въз основа на нея ID номер или други подобни.
Да, Дан.
АУДИТОРИЯ: [недоловим]
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 отново,
предмет на дебата от по-рано.
Това ще бъде ENUM, може би като преди, и град ще бъде VARCHAR 50.
И така, сега това, което мога да получа да изтрие от тази таблица
да се премахне, че неефективност?
>> АУДИТОРИЯ: [недоловим]
DAVID Малан: Ница.
Членка и град да си отиде, така че съм сега елиминира потенциалния неефективността
за излишно спомни, Кеймбридж, MA, Cambridge, MA, Cambridge, MA,
Cambridge, MA, който, да се надяваме никога няма да се промени.
И дори ако това е така, това е minorly досадно, сега
че аз трябва да се промени то в няколко реда,
като има предвид тук, можех просто го промените на едно място.
>> Сега това, което е компромис, може би?
Това е супер удобно.
Ако всичките ми данни добре заедно.
Но това, което е ясно случаят сега?
>> АУДИТОРИЯ: [недоловим]
DAVID Малан: Точно така, и аз съм Радвам се, че се използва думата се присъединят,
защото това е всъщност ключовата дума, в света на релационни бази данни
в SQL, това е действително дума, която може да пишете или поне предадат.
И в действителност, това, което сега трябва да направите, за да изберете пълна информация на Давид е
нещо като изберете звезда от Потребителите, се присъединяват към градовете, on-- и сега
Отивам да се движат само до втора линия така че това fits-- users.zip равнява
cities.zip, където users.ID равнява 1.
>> Е, какво става?
Това е грозно търси, но можете да вид Прочети го отляво надясно и отгоре надолу.
Изберете звезда от потребители е същата, както и преди,
но това не е от потребители, сами по себе си.
Това е от потребители се присъединяват към градовете.
Какво съм аз, свързваща тези две таблици за?
Е, изглежда, потребители маси цип поле,
и този период е просто специален синтаксис, за да изразят тази идея,
и това е таблици градове цип поле.
Искам тези двамата да бъдат равни, но искам да в крайна сметка изберете
само тези редове, където е ID в таблицата с потребители
е равно на 1, което се е случило, за да бъде моя.
>> И само за да бъде ясно, а програмист, обикновено, когато
кодирате твърдо нещо като броят 1, защото в противен случай само на сайта
подкрепя Дейвид или Първият потребител,
вместо това ще направя нещо подобно ID, където
това представлява променлива, нещо, което
може да се промени с течение на времето, подобно в духа на това, което казах по-рано
с тези видове контейнери.
Но за сега, ние просто ще го кодирате твърдо като 1.
И така, какво означава това?
Е, по-добър начин да се визуализира това е че ако тази ръка е масата на потребителите,
и тази ръка е на ципове маса, ние сме нещо като finding--
и върховете на пръстите ми са с цип насам, и върховете на пръстите ми
тук са с цип, ти си вид на това заключване
така че да получите обратно получения оригиналната таблица, от наистина присъединяване
двете плочи за общата областта.
И това не е задължително да е с цип.
Тя може да бъде най-всичко друго, но цип е хубаво, защото едно, че е кратък,
две, тя винаги е на същата дължина, така че има
реална ефективност за какво Olivier предложен тук
с факторинг от ципа, и [Недоловим] предлагам да се отървете
от града и щата.
>> Така че това е процес, известен като нормализиране.
Всякакви въпроси за това?
Ами нека да се отбележи Това е вид на неща,
въпреки че е сравнително ниско ниво, тази дискусия, че човек би си помислил
сте нещо като удар изгубени в плевелите,
това е проява на достатъчно възможност на разработчиците да бъде лошо.
И в действителност, дори когато, в курсове съм научени, когато сме имали,
например, неопитен бакалавърски програмисти
изграждане на уеб сайтове, на пръв поглед, уебсайтовете могат да изглеждат страхотно.
И те имат всички изброени по- функционалност поискахме,
разработчиците свърши добра работа.
>> Но те не знае непременно достатъчно за проектиране на база данни
или те не мисля, че трудно достатъчно за вида на данните
и вида на потребителите уебсайт щеше да има,
и ние откриваме, тогава, шест месеца по-късно, след като е завършил или преместени,
че дявол да го вземе, нашия уебсайт е наистина, наистина бавно.
А аз дори не говоря за имащ милиони или хиляди потребители.
Искам да кажа няколко стотин потребители на територията на колежа, всички от които искали да, например,
магазин за курсове в В същото време, те са
използване на този курс на стоките заявление споменах
и това нещо става наистина забави, тъй като не е имало индекси.
Не са червени звезди, така че да говори, или ние не трябваше задължително
отчетени общи данни за получите някои икономии на пространство.
>> И така, когато проверката за надеждност разработчик или човек база данни или други подобни,
видове въпроси да мислят чрез е дори, когато се преразглежда код на някого,
да се каже, не е задължително да изглежда през целия си код, но се каже,
нека да погледнем чрез таблиците в базата данни.
Какво съхранение?
И след това да се каже, добре, чакай минути, защо, който използвате цяло число?
Какво става, ако имаме 4 милиарда и 1 от тези редове?
И тези видове въпроса е възможност
за вид на бутане и се получи усещане за, където
ако не сте достатъчно комфортно тя, като някой по-техническо
задават тези въпроси, за това дали или не лицето не знае техните неща.
И това е вид неща, твърде, че хората
в интернет, които са самоук, може би
научат по-рядко, защото не е задължително да се намира той
толкова, защото можете да получите копие на базата данни и управлението,
но ако не сте чели нагоре на уроци или е
разказа за нормализиране на база данни и индексиране и производителност,
това са различни неща че ще ви нарани.
И може би си мислите, или лош инженер Може да се каже, ох, добре, ние по-добро заплащане
за по-голяма база данни или по-бързо база данни
или просто да хвърлят пари на този, вертикално мащаб, не е задължително така.
Ако отидете in-- и можете да отидете в след fact-- и добавяне на индексите,
и това може да отнеме няколко часа за база данни, за да се създаде тази нова информация
структура, която споменах по-рано, Все още можете да се определи това, след факта,
че това е мястото, където започне да се разграничат
добри дизайнери от лошо дизайнери, а не само естетически,
но гледна точка на производителността, както добре.
Някакви въпроси?
Не?
Така NoSQL, което е друг вид на база данни, до която споменах по-рано,
не е нужно редове и колони.
Вместо това, вие ще трябва нещо че изглежда малко по-така.
Отивам да се използва общ синтаксис.
Фигурни скоби се случват се използва тук доста.
Може да се наложи нещо като първо име е Дейвид,
може да се наложи миналата име е Малан, кавички,
може да се наложи ID is-- извинете ме, whoops-- ID е 1,
имейл е malan@harvard.edu, и аз няма да притеснява пишете на останалата част, и след това
някои други неща.
>> С други думи, това е представяне на текста
от това, което ние обикновено наричаме обект в компютърна програма.
И обект е обикновено просто колекция от ключови двойки стойност.
Така че отново, този повтаряща се тема.
Видяхме ключова стойност двойки в HTML, видяхме ключови двойки стойност сега
в контекста на бази данни и ние Видях ключови двойки стойност в контекста
на, мисля, на език, по-рано днес.
Поддържа идва.
И наистина, това е наистина какви данни се свежда до,
данни и метаданни, или стойности и ключове, съответно.
>> Така че не-релационна база данни, нещо основава
на обекти, където можете просто да се слепват всичко заедно и да я тури
в паметта, като цяло би било Представи както, или мисли, тъй като това.
И аз ще си тръгна, че сега като сортиране на алтернативен подход.
И един не е задължително по-добре от другия.
В действителност, много на мода тези дни са системи за бази данни
като MongoDB и Redis и няколко други подобни инструменти, свободно достъпни,
но те са все по-често на мода.
Частично, защото те предлагат допълнителен функции над тези таблични подходи,
но също така, защото те са малко по-лесно за използване,
защото не е нужно да се мисли толкова силно, за много от тези дизайнерски решения.
Така че плюсове и минуси.
Така че разбирам, че има възможности отвъд това, което ние просто отделя повече време на.
>> Така че нека да направим това.
Нека преход малко назад към уеб програмиране,
така че ние вид сключва днес с нещо
Това е малко практически, пълнене в някои пропуски от вчера.
Нека отида на тази първа.
Така Припомняме, че вчера имахме някои канонични HTML
страници, които първоначално са се, само HTML, и след това на второ място има CSS,
Cascading Style Sheets.
Това е нов маркер, че ние не направихме виж вчера, или живеят по,
така наречения скрипт тагове.
>> Оказва се, че всъщност можете да вградите език, наречен JavaScript във вашия уеб
страница и да направи своя уеб страници правят нещо.
Така че това, което мога да кажа от това?
Е, нека да вървим напред и просто заеме този код за миг.
Отивам да отидат в Cloud9, няма нужда да отида там себе си, просто все още,
и аз ще се обадя тази alert.HTML.
Отивам да поставите в досието ми тук.
И само за да се изясни това, което съм направил, нека отида на този адрес и си отиват, за да предупреди,
и ще се видим на Hello World.
>> Но това е вид underwhelming.
Искам да направя нещо малко по-различна.
Така че аз отивам да всъщност правят това.
Отивам да отида в тук е, и между моите скриптови тагове,
каже предупреждение ( "Здравей, свят"); така известие това е малко помия, но аз имам HTML,
вътрешността на който е език, наречен JavaScript,
и това е, което се нарича извикване на функция или процедура повикване.
Това е глагол, буквално, в този случай, и аз съм се позовава код функционалност
че някой друг е написал.
>> Така че тази функционалност е сигнал, така че нека да отиде в тази страница
Сега и кликнете презареждане, а сега виж малко интерактивност.
Това е вид на старата школа и грозно.
Този вид напомня на изскачащи прозорци, може би, от недалечното минало
но го е направил да направим нещо по- Малко по-програмна.
>> Така че повече от това, нека да направим нещо по-интересно.
Нека отида в тук и се отърви от тази.
И аз ще отида напред и създаване на форма, както направихме вчера.
Всъщност, знаете ли какво?
Отивам да отидат в google.html, които
започна на вчера, което приличаше това, чрез което търсихме котка
Но забележете там е нещо като бъг в настоящата версия.
Тя работи за котки, но предполагам, че Аз не си сътрудничат и да пиша нищо,
и аз просто кликнете бутона.
Това е вид странно поведение.
Отне ми към реалния Google, не ми даде съобщение за грешка.
Бих искал да кажа на потребителя което трябва да ни даде стойност.
>> Е, как може да правим това?
Ами нека да се върнем в Cloud9 и нека да отидат в горната част на страницата ми
и добавяне на скрипт тагове като тази, в която Отивам да напишете някакъв код JavaScript.
И аз ще направя следното.
Ако (document.getelementByID-- и изземване че ние говорихме за това по-рано,
тази функция.
Какво ID искам да получа?
Аз искам да отида р, и аз ще да речем равнява на нищо, като this--
Всъщност нека да използвате двойни кавички само за consistency-- равнява на нищо,
След това предупреждение ( "Моля, пишете заявка") тук.
>> Така че аз имам това, което изглежда да бъде нещо подобно състояние.
Видяхме тази обща идея в Scratch.
Това е като един от тези, пъзел парчета, които изглеждаха като този.
И аз какво казвам?
Е, тук долу, забележите, че съм ще направим следното.
Отивам да се даде тази форма Невярно е само едно име на р, който
е това, което получава премина към Google, но аз съм Ще го дам на местния идентификатор,
Също така се нарича р.
Но мога да наричаме това нещо, което мога искате, аз съм просто ще го прости
и също така го наричат ​​р, само за простота.
>> И сега аз ще направя нещо малко повече.
На форма полета тук, аз ще добавете онова, което се нарича един манипулатор събитие.
На представя, аз искам да се обадя функция, наречена потвърдим.
Това все още не съществува, това дума, или този глагол Проверка,
защото това, което аз ще направя тук сега, е да добавите някакъв код.
>> Отивам да кажа функция потвърдим.
Отивам да отстъп, това и се добавят още фигурна скоба тук и още един тук.
Помислете за това, което сега това е правене.
Имам now-- мисля за това, както е създаден ми собствен пъзел парче, че не е направил по-рано
съществува, и аз съм нарича този пъзел парче парче Проверка пъзел.
Неговата цел в живота е да се изпълни четирите реда код вътре в него.
>> Ако document.getElementById така концептуално,
че ще отидат в елемента, на HTML елемент, чиято уникална
Идеята е просто Q, и след това, въпреки че синтаксиса изглежда малко странно,
че равен равнява просто означава равни.
Това значи, че ако елемента с най- уникален идентификатор на р, когато намерила,
няма никаква стойност, тя просто се равнява цитат цитата, нищо там,
След това, което искам да направя?
Искам да крещи на потребителя.
>> И ние няма да отиде много подробно тук.
Отивам да се върне фалшива.
Това е грешка.
Иначе, аз отивам да се върне вярно.
Така че или тя работи или не.
Фалшиви или вярно.
И сега, ако не се направят каквито и да било грешки, нека да спаси това и презаредете.
И ме остави просто двойна проверка, че Не, всъщност, прави всякакви печатни грешки,
така че не се притеснява.
Да видим дали това работи.
>> Така че сега аз отивам да въведете котки.
Той все още работи, или половината произведения, най-малко.
Сега нека да я презаредите, а сега нека ми се опита подаване, без да пишете
anything-- дявол да го вземе, да го счупи.
Един момент.
Нека да отворите конзолата, [Недоловим] влезете, презаредите страницата.
Нека да опитаме отново.
О, по дяволите.
Забравих.
Аз направили правописна грешка.
Спомням си какво е то.
.value.
Исках да кажа, ако стойността на елемента, чието ID е р
се равнява на тази, после вика на потребителя.
>> Така че сега да ме задържи дъха си отново.
Ето ни.
Ето.
Моля, въведете заявката.
Така че не ме остави сам.
Мога да бъда нещо като игриво с това, и вместо да се проверява за никаква стойност,
Мога да кажа нещо подобно, Не повече търсене за котки,
и сега ние можем просто по-игриво нека на потребителското търсене на кучета, ако той или тя
иска, или ако отида в тук и търси за котки, сега не мога.
>> Така че това, което е храна за вкъщи тук?
Така един, ние въведохме в нашия свят на HTML и CSS,
програмиране функционалност.
Аз всъщност може сега да взема решения в код.
Преди това, всичко, което може да направите, е да маркирате текстово съдържание или графично съдържание
и да го каже какво да гледам и къде да се покаже.
Сега аз всъщност може да поиска въпроси на уеб страницата
и да вземат решения, основани върху него, и напомни на потребителя
ако трябва да крещи на него или нея.
>> Така че нека да се опитаме нещо на собствената ни с това.
Давай напред, нека да отвори следващия слайд тук, и просто посоча едно нещо.
Точно както с CSS, ние можем фактор навън нашата JavaScript код в отделен файл,
можете да направите същото нещо с JavaScript, както с CSS.
И вие използвате, че с помощта на източник атрибут на тага на скрипт.
Но ние няма да усложни нещата за сега.
Вместо това, ако бихте могли да отида да не тази страница,
but-- да ме премести тази наоколо в order-- отидете, ако може, тази страница тук.
Този URL тук.
Това е в днешните пързалки.
Може би трябва да се презареди, защото Добавих няколко неща.
>> Но там, където някои пъзели очакват.
И това ще ни даде шанс, в малко по-забавно контекст,
да се бъркам с някои JavaScript.
И когато стигнем там, Аз ще обясня какво очаква.
Вземи зелено.
Определете синьо.
Задава зелено, определя червено.
Ами сега.
Извинете.
>> Това е степента на нашия документация за това предизвикателство.
И това ще работи както следва.
Така че това, което имате на тази страница е цял куп
на картинни пъзели с приятел в Станфордския университет.
Така че това, което виждате тук, е почти вид на един от тези магически очни пъзели,
но ако просто се взират в него, Нищо няма да се появи пред вас.
По-скоро нещо е скрита в този образ.
И това е скрит по следния начин.
Снимки, както може би знаете, могат да бъдат съставен от само три цвята.
Някои червено, някои синьо, а някои зелено.
И ние може да направи всичко цветове в дъгата
чрез смесване на тези три цвята по някакъв начин.
>> Така че това изглежда най-вече зелени и синьо, но като Ник казва тук,
това желязо пъзел изображение е пъзел.
Тя съдържа изображение на нещо известен, обаче,
изображението е изкривено.
Известният обектът е в червените стойности.
Въпреки това, на червено стойности всички са били разделени от 10.
Така че те са твърде малки, с фактор 10.
С други думи, Ник взе оригинален имидж,
и той desaturated всички на червено от него,
намаляване на размера на червено мастило, ако щете, в него.
>> Сините и зелените стойности всички са просто безсмислени,
произволни стойности, известен още като шум, предназначени да закрие реалния образ.
Така че това, което Ник направих беше той смекчен на червено и след това
той просто хвърли случаен количества синьо и зелено
най-голям вид неясна това, което е в действителност все още там.
Трябва да отмените тези изкривявания за да разкрие на изображението.
Първо, настройте всички сини и зелени стойности до нула, за да ги получите от пътя,
и виж резултата. Тогава умножава всяка червена стойност от 10,
мащабиране обратно до приблизително окончателното му стойност.
Какво е най-известният обект?
>> Така че всички вие имате този правоъгълник в браузъра си точно сега.
И забележи, че има някаква стартер код, така да се каже.
Това е JavaScript код, който Ник е написана за вас.
И забележи, че има линия, в средата, която
започва с наклонена черта черта, че е това, което е обикновено се нарича коментар.
Това означава, че това е израз на програмиста че не е функционално значение.
Това е просто една визуална реплика към човека.
>> Така че можете да отидете напред и изтриете само тази линия,
и да е супер не внимателни, за да изтриване или промяна на нещо друго.
И нека само да ви преведе през това, което този код прави и аз ще го напусне
От вас зависи да разбера тайната изображението.
Тази първа линия тук, че аз току-що Осветената дава следното.
От страна на лявата ръка, Имате ли какво се нарича
променлива, която Ник е произволно, но разумно, наречена Им за изображение.
На дясната страна на това знак за равенство,
той казва ми даде нов цитат, край на цитата "прост образ".
>> Обикновено изображение, в този контекст е това, което се нарича клас, добре,
това е нещо като class-- технически по prototype-- но наистина,
това ми дава нов обект, съдържанието на които са на файла,
желязо-puzzle.png.
С други думи, Ник създаде това понятие на прост образ
така че ние можем, за педагогическа цели, играят с изображението
и промени в червено, зелени и сини стойности.
>> И как ще правим това?
Това донякъде загадъчен синтаксис тук е нещо като повторение блок
че някои от вас видяха в Scratch-рано днес, където можете да се повтаря 10 пъти.
В този случай, Ник не е кодиран номер като 10.
Вместо това той казва, инициализира променлива, наречена х 0,
проверете дали х е по-малко от ширината на изображението.
>> И така, за да бъде по-правилно, изображението е променлива, точка означава, отидете вътре в него
и да получите своята ширина, и След отворени скоба, затворени
скоба е просто начин на програмиста да се каже, това е функция.
Това е процедура.
Това е функционалност някой друг е написал.
Използвайте го и ми даде обратно отговор.
И тогава х ++ е един луксозен начин на казвайки, след като сте направили това веднъж,
увеличение х от 1.
С други думи, тази е начин на програмиста
за предизвикване на една линия, която е ще обхождане
всички колони в един образ.
>> Изображението е само решетка от точки, редове и колони от точки.
Това е начин на следващите стъпки над всички тези колони.
И от вътрешната страна, В същото време, ние сме итерации
над височините, тук и тук и тук.
Така че това е просто начин на traipsing, почти като старата школа пишеща машина,
просто да отидем на Целият образ итеративно.
Дори и това не е съвсем изцяло ясно, просто приемете на вяра за сега,
че тези три линии на код заедно са
ще ви позволи да итеративно погледнем при всеки пиксел, всяка точка в изображението.
>> Какво е един пиксел?
Е, за да бъде ясно, ако погледнем в оригинала и увеличавате,
ако наистина сложи очите си към екрана на компютъра, това е
просто един куп точки, няколко хиляда точки опаковани заедно там.
И така, това, което предстои да се направи?
Всяка една от тези точки, окончателно определение,
е резултат от това, което е като цяло наречен RGB, червен, зелен, син, който
отново, могат да бъдат комбинирани, за да ви даде неограничен брой цветове.
>> В действителност, ако си спомняте от много отдавна, много години,
проектор екрани като тези неща използва, за да има не един обектив, но три.
Един от тях плюе червена светлина, един от ги изплюе зелена светлина, един от тях
изплюе синя светлина.
И ако сте били в средното училище като бях където те никога не са били
правилно подравнени, бяхте Винаги гледам история филми
че са били леко изкривено, защото трите цвята не бяха
комбиниране правилно.
>> Но се оказва, че всеки един от тези стойности червени, зелени и сини,
може да има редица свързани с тях.
Например, 0 в червено означава, че няма червено, 0 за зелено означава, че няма зелено,
и 0 за синьо означава, че няма син.
Така че, ако вие нямате червено, не зелено, и не синьо, какъв цвят имаш?
>> АУДИТОРИЯ: [недоловим]
DAVID Малан: Може би Надявам се, че е бял.
За съжаление, тази operates-- съжалявам?
>> АУДИТОРИЯ: [недоловим]
DAVID Малан: Значи всъщност има черен, в този случай.
Така че, ако имате нито един от тях цветове включен, имате черно.
Все пак, ако имате, да кажем много от тях, като много червено, 255 от него,
много зелено, и много на синьо, че е бял.
Така че това са двете крайности.
Така че по тази логика, ако имам много на червено и не зелена и не синьо,
какъв цвят е това?
АУДИТОРИЯ: [недоловим]
DAVID Малан: Добре, очевидно.
И тогава не червена, много зелен, не синьо, а след това
ако have-- добре, ние просто ще завърши то, просто защото, но това, разбира се,
сега, е синьо.
А сега можете да комбинирате тези цветове.
Сега като се отмени, ако някой от вас има правил някои действителната уеб дизайн,
Може би всъщност виж символи като този.
FFF-- и всъщност, това е Вероятно не, дори това.
Това е FFFFFF.
>> Всеки, който някога е виждал F и Е е и A through-- така се оказва,
ние говорихме вчера за десетична, и днес, вид на около десетични.
Днес ние говорихме за двоичен.
Оказва се, шестнадесетичен е много обща система за база да се използва в компютрите.
Binary е две, десетични е 10, шестнадесетичен е 16.
И се оказва, как броите в шестнадесетичен?
Нула, едно, две, три, четири, пет, шест, седем, осем,
девет, какво ще се използва след девет?
Какво е следващото число?
Ние вече се използва нула.
Имам нужда от 16 от тях.
Нула, едно, две, три, четири, пет, шест, седем, осем, девет,
имате нужда от някаква произволна конвенция.
>> И това, което човечеството реши известно време преди, че след девет идва писмото
А и след това B и след това C. Така че начина, по който се брои в шестнадесетичен
е нула, едно, две, три, четири, пет, шест, седем, осем, девет,
A, B, C, D, E, F, и се брои по целия път, се оказва, че до 15.
Така нула до 15 е нула чрез F. Сега защо е, че значителна?
Е, когато имате две F е, това е начина да изразите 255.
>> Така дълга история кратко, в в света на Photoshop,
че графичен дизайн софтуер, в света на уеб разработки,
където имате много цветове, Разбира се, за да играе с,
често програмисти ще изразят тези в шестнадесетичен,
просто защото тя е склонна да бъде малко по-лесно.
Въпреки че на пръв поглед това е много по-сложно.
>> Така във всеки случай, това е важно защото Ник в Станфорд
ни е дал шест парчета функционалност че вие, начинаещи програмисти,
Сега ще имате възможността да се използва.
Вграден в този уеб страница е шест функции,
шест процедури, че Ник е написал.
Три от тях ще получите номер, червен, зелен или син стойност.
Три от тях ще определи тази стойност.
И тези долни са само контейнери,
така че трябва да се знае какви са тези.
>> Така че с тези три функции, първата от тези неща
ще бъде на х-координата, и втората от тези неща
ще бъде по-Y-координата.
С други думи, които са разпръснати, които пиксел искате да получите най-зелените,
получите най-синьото, получи червено на.
И след това тук, това ще бъде х, това ще бъде на стойност Y,
и това ще бъде един брой.
Така че нека да направим първата линия на това заедно
и след това аз ще го оставя на вас да се опита да извлече останалото.
Така че според инструкциите На тази страница, ние се нуждаем от
за увеличаване на червено с фактор 10, и ние трябва да се отстрани зеленият
и отстраняване на синьото.
Нека да започнем с последните сценарии.
Така че, ако искам да, и аз ще съм на тире чрез използване на някои пространства,
ако искате да зададете на червено, зелено или синьо стойност,
Отивам да направите следното.
>> Изображение, im.setBlue, и след това въз основа на инструкциите ми тук,
какво три неща трябва да съм въведете вътре в скобите в момента?
Имам нужда от х стойността на това Y стойност, и какъв номер
трябва да сложа тук, ако искате да се отървете от ясно небе, на базата на тази история тук?
Просто нула.
Ако искам никой синьо, аз съм просто няма да го промени на нула.
>> Сега нека просто обобщим това, което това се прави.
Аз имам тук на тези отгоре втори и трети ред,
Заявих два кръга, вложени цикъла, ако
ще, че ще има ефект на напредва от ляво на дясно,
горе до долу над всички на х ценности и всички стойности на у.
Защото отново, една снимка Просто решетка от редове и колони.
Така че това ще се получи, отървете от всички синьото.
Нека оставим в следващия ред за вас.
Как да се отървете от всички зелени?
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: Ница.
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: Ница.
И аз отивам да го намалите, и просто да вземе погрижи за това, че не съм правил някакви правописни грешки.
И ако сте доволни с това, което сте направили,
давай напред и да кликнете върху бутона Стартирай / Запазване и да видим това, което получаваш.
И отново, че сме допуснали само три промени.
Ние изтрит че първата коментар и го заменя
с тези два реда код.
И това е ОК, ако трябва да се удари бутона Run / Save няколко пъти
да се определи нещо.
>> И нека да се фокусирам върху моята код, така че можете да преписвам.
Добър.
Така че аз виждам Андрю има какво изглежда е грешка.
Той просто имам една голяма черна правоъгълник на екрана си.
Дали някой друг има голям черен правоъгълник?
>> АУДИТОРИЯ: Да.
>> DAVID Малан: Big черен правоъгълник?
ОК, така че нека да мислим за това какво означава това.
Ние казахме, че нула, нула, нула, така че няма зелено, не червен, не синьо,
ще ви даде черно.
И се оказва, че повечето от нашите лаптопи
просто не разполагат с достатъчно вярност.
Вие не можете да доста кажа там е всъщност нещо там.
И ако нещо може би се опре екрана напред и назад,
може би искаш да видиш малко нещо там?
Може би, вид, нещо?
Това не е напълно черна.
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: спойлери!
Има някои червено там, но спомняте от спецификациите
на проблема, Ник го смекчен.
Той го desaturated донякъде, но не чак до нула.
Така че, ако искаме да увеличите размера на червено, нека да предложи този трик.
Нека да увеличите на екрана си.
И нека да вървим напред и да се каже, количество се равнява на im.getRed (X, Y).
>> Тази линия на код ми дава нещо нарича променлива.
Имам произволно, но, може би, разумно нарича променлива ми какво,
очевидно?
Количество.
Просто сума.
Можех да го нарича всичко, което искам, но аз съм
използването на тази друга функция че описах по-рано
за да получите сумата на червено в х запетая у.
Защо го правя?
Какво искате да направите тук?
Трябва да add--
АУДИТОРИЯ: [недоловим]
DAVID Малан: Да, може би тя се умножава по 10.
И ако не знаете това, аз съм ще отида напред и да направим това.
Отивам да се продължи напред и да речем, че искате размерът на червено
Искам да бъда каквото е в червено, пъти 10,
и звездата, звездичката на вашия клавиатура е the-- не използвайте х.
Използвайте звездата.
Ето как те умножи неща в повечето езици за програмиране.
>> Така че според интуицията Карим е, съхраняват в тази променлива, наречена сума,
е колко червено Искам на място XY.
Как, сега, мога да направя, че пиксел има този номер?
Вие вече сте направили това и преди.
Задавате зелено и синьо, за да няма никаква стойност, до нула.
АУДИТОРИЯ: [недоловим]
DAVID Малан: Да, добре вие не го искат до 10.
Вече направихме по математика тук.
Така че ние сме все стойността на червено, който е по-малък брой, вероятно.
Ние сме се умножи с 10.
Какво искате да правите с променливата сума сега?
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: Ница.
Така im.set-- какво?
>> АУДИТОРИЯ: setRed.
>> DAVID Малан: setRed, на място при XY.
Да.
И точно количество.
С други думи, една променлива е временен заместител
че можете да сложите всичко, което искате инча
Ние се случи, за да се постави Номер в него, в момента.
Ние сме го умножава по 10, за да го по-голяма.
И сега съм заместване, че променлива като тази трета аргумент, или вход
да зададете червено.
И така, че след като довърши това, и да вземат под внимание
на точка и запетая и скобите.
>> Давай напред и кликнете тичам / спаси отново, и вие
трябва да видите, магически, какво е всъщност там. [? Arwa,?] Какво е там?
Айфеловата кула в пълноправен червен, не е съвсем тъмно.
тя трябва да бъде по-ясно сега, нали?
ДОБРЕ.
И Андрю, не повече черна кутия?
АУДИТОРИЯ: [недоловим]
DAVID Малан: Добре.
Така че аз ще запази тази на екрана.
Ако искате да си играе с тази по-късно, аз ще пресъздаде това за вас.
Но този код тук е направил точно това.
Защо да не направим един друг.
Нека да превъртите надолу леко.
>> Така че в този случай, на проектора наистина не го направя правосъдието.
Но на вашите екрани, най-вероятно имат много червено и много черна кутия.
Това също е един пъзел, който показва нещо известен.
Въпреки това, като изображението е изкривено.
Истинският образ, този път, е в сините и зелените стойности.
Въпреки това, всички те са разделени от 20 така стойностите са много малки.
Червените стойности са само случайни числа, шум.
Отмяна на тези изкривявания да разкрие истинската изображението.
>> Така че Ник след това ви казва какво да правя.
Определете червените стойности на нула, и тогава не се развали какво е то.
След това умножете синьото и зелени стойности от 20.
Така че това е почти същата програма, както и преди,
но сте обрат в процеса.
И аз ще си сложа код от преди на екрана в случай
искате да направите справка в нея или да играе по-нататък от това.
Нека да се фокусирам върху това.
Но реши мед изображение пъзел, номер две.
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: ОК, така че това, че съм не ще да даде колкото се може повече съвети.
Така че аз would-- о, нека виж, че имате правописна грешка тук.
Така че не забравяйте, това тук всъщност трябва да отиде там.
Така че това, което ще предложи, ако искате да се съсредоточи върху това, там е отговорът.
Ако искате да преписвам, че, че трябва да получи първия работен.
И тогава можете да използвате, че като вдъхновение за втория.
Ница.
Добър.
>> И за любопитните, това е един прост пример
на науката или изкуството наречен стеганография,
изкуството на скриване на информация в изображения.
Обикновено изображения могат да бъдат воден знак, много безочливо
с логото на дъното корнер, но ясно, вие
може да бъде много по-сложни за това и всъщност
скриване на други изображения в образите по някакъв начин с тази техника.
>> Вземете още 30 секунди, а след това ще най-малко обявим това, което трябва да се види.
И аз ще напусне третата един като упражнение в дома,
ако искате повече от едно оспори този уикенд.
И мисля, че Андрю мощ са го придобили първа.
Какво е второто изображение, Андрю?
>> АУДИТОРИЯ: Статуята на свободата.
>> DAVID Малан: Статуята на свободата ще бъде отговорът този път.
Така че отново, просто някои прости примери, чиято цел
е да ви даде усещане за това как ние сме преведена изобразително Scratch
блокове за по-досадно и повече сложен код, но всички идеи
все още са точно същите, макар и с въвеждането
Сега на понятието променлива, бидейки може временно съхраняване на нещо.
>> Нека да направим още един практически, Просто сега свържете точките
за нещо малко по-реалния свят.
Когато сте готови, ако бихте могли да отидете на този адрес на екрана.
Това е също така във вашето копие на пързалки, developers.google.com/maps~~V.
Нека всъщност направи нещо реалния, така да се каже, в интернет
използване на API на Google Maps, или приложен програмен интерфейс,
по следния начин.
>> Google, подобно на много фирми, осигурява много свободно функционалност
които можете да използвате, за да изгради своя собствени интересни приложения.
В действителност, ако някога сте се използва Uber да получите такси или кола,
вие вероятно знаете, че Uber има карта и я показва автомобили върху него.
Това е, както е най-добре, колкото мога кажа, Google Maps API.
Те действително се използва карти на Google, но произведение не е компания, картографиране,
нито че би било особено интересен проблем
за решаване на върха на тяхната проблем автосервиз.
И така, те са постоянни, отново на раменете
на другите, Google в този случай.
Така че те използват карти на Google, но тяхната собствена кар услуги и други такива функции.
>> Така че ние ще се възползваме на това да направите следното.
И ако аз съм отишъл твърде бързо, просто ми се обади отново в един миг.
Честит да обобщим някои от нещата на изображението.
Трябва да се види най-страница като тази.
Така че хубаво на Google, и те са сред най-добрите
на предоставяне не само APIs, но свободни APIs, че сте
може да играе с или използват в търговската мрежа.
Те не започват ви зарежда, ако Ви употреба е висока, но аз отидох напред в аванс
и ни се регистрирали за безплатен акаунт че, надявам се, 10 компютъра
няма да ни дисквалифицират за внезапно.
Така че се надяваме това демонстрация ще работи.
>> И забележете, че те имат APIs за Android, IOS, уеб, и уеб услуги,
каквото и да е.
Нека се съсредоточим върху уеб.
Така кликнете розовата кутия, интернет, и че ще ви води, да се надяваме, към страница
тук.
И те имат цял ​​куп APIs.
И това може да бъде малко по- преобладаващото в началото,
но ще ни направляват чрез това, което искаме.
>> В горния ляв ъгъл е на Google Maps JavaScript API, на API JavaScript.
Така че продължавайте напред и кликнете че един.
И това ще ви доведе предприятието до следваща страница, демонстрации и примерен код.
Нека отдалечаване тук.
И нека да ни to-- превъртете надолу до мястото, където се казва бързи начални стъпки.
Вашият екран трябва да изглежда като моя.
>> А има и две крачки, се ключ и да започне да се развива.
Аз вече направих стъпка по един за ни, получаване на т.нар ключ.
И това е една обща идея.
ключ за 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
е имал ни сляпо копиране и поставяне.
Те просто искат да помогнат, буквално, да ни започна,
но там не е толкова много сложност действително има.
Всякакви въпроси, просто все още?
Ние сме в безопасност, за да продължат напред?
ДОБРЕ.
>> Така бързо, нека просто да се направи някои бързи проверки по.
Line едно от това, което съм виж, и да се надяваме, можете
виж, какво означава това, DOCTYPE HTML?
Карим, припомни?
АУДИТОРИЯ: [недоловим]
DAVID Малан: Да.
Тук идва HTML 5.
Междувременно, ред две на екран тук означава, хей браузър,
тук идва действителното HTML.
Line три е хей браузър, Тук идва на главата.
Line четири е, разбира се, хей браузър, тук идва заглавието.
Какво означава линия пет направя?
Всъщност, това не наистина направи нещо за нас.
В този случай, той просто преоразмерява страницата, за да по подразбиране. Line шест,
не сме говорили за това, но то определя кодова таблица.
Има различни начини да се кодират файлове, особено за чужди езици.
UTF-8 просто има тенденция да бъде по подразбиране.
>> Така че сега ще видим в съответствие седем до 16, някои CSS.
И въпреки, че ние не сме виждали всички тези неща преди,
можем да заключим вид.
Така се подредят осем средства, хей браузър, се прилагат всички от изброените до която две тагове,
очевидно?
HTML и тялото текст.
Така че запетаята е новото нещо там.
И това е само един начин на уточняване на множество етикети наведнъж.
>> Тогава ние имаме фигурните скоби.
Така че очевидно, това казва на браузъра, направи височината на страница 100%.
Така че, дори ако има много малко съдържание, да направи цялата страница,
направи нещо, което да запълни страницата.
Направете карта в крайна сметка запълване на страницата.
Margin, какво означава това?
Това е обикновено като произволна бяло пространство около ръбовете
че някои браузър дизайнер просто реши трябва да има, защото тя
вид прави нещата да изглеждат по-чисти.
Но ние не искаме това.
Искаме карта ще по целия път към краищата.
Padding, сходен по дух до маржове.
Полета означават извън, уплътнителни средства вътре, но това е един и същ вид сделка.
Това е малко по-буфер между вас и ръбовете.
>> И тогава линия 13 е добър възможност за бърз преглед.
Какво прави рязък карта знак означава, или маркер диез карта означава?
Какво означава, че се отнасят до по принцип?
>> АУДИТОРИЯ: [недоловим]
DAVID Малан: Точно така.
Този имот, това CSS имот се отнася до само едно нещо, на HTML тагове
че има идентификационен номер на цитат, край на цитата "карта".
А сега нека бързо напред, превъртане надолу към дъното на файла, който
не е твърде далеч, и известие на линия 19, ако го поставите точно както направих аз,
линия 19 има само един DIV, което е разделение на страницата, която вчера
нарича правоъгълна област.
Няма нищо в него.
Това е един отворен край, близо тагове.
Но тя има уникален идентификатор.
>> Така че това, което изглежда да бъде случва тук е Google
подготвя нашата уеб страница, за да имаме пълна височина 100%,
и не подплата, без полета, защото това, което ние ще се сложат
на този DIV, чийто уникален идентификатор, е карта, е действително вградена карта.
И ние искаме това да се запълни на страницата, а не само
бъде някакъв малък правоъгълник в средата.
Така линия 14 се набляга на това Карта самата трябва да има височина от 100%.
>> Така че сега забележи между линиите 20 и 28, това е JavaScript код.
И това е, въпреки че е синтактично малко странно,
Там не е чак толкова много, става тук.
В ред 21, това е обявяване нещо нарича променлива.
Вместо да го наричаш възлиза, както направихме преди,
ние сме по-точно казва Var, което просто означава променлива.
Бихме могли да се използват, че в код на Ник, но той не го направи, така че аз
не се притеснява да го прави един от двамата.
Това е променлива, наречена карта, а след това има
функция, която е очевидно наречен initMap.
>> Така че това е като нашия собствен потребителски пъзел парче в Scratch.
Ние създадохме парче функционалност, наречена initMap,
и можете да вид заключим какво става тук.
От страна на лявата ръка, ние имаме една променлива,
така ние ще изведе следното нещо вътре, че променлива,
от дясно на ляво.
Дясната ръка казва, хей браузър, дайте ми един нов Google карта.
И google.maps.map е просто фънки начин от уточнява, че тази функционалност
принадлежи на Google Maps.
>> След скобите, които сме виждали това преди, хей браузър, може да получи
ме елементите в страницата, маркер в страницата, чийто уникален идентификатор is--
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: --map.
И какво се случва, добре, тази линия заедно, линия 23,
всъщност казва, хей браузър, отидете ме
че празен Разделение на страницата чийто уникален идентификатор, е карта,
защото искам да вмъкнете в it-- инжектира в нея,
ако will-- цял куп съдържание че се случва да идва от интернет,
впоследствие.
И на Google прави всичко това за нас.
>> Така че отново, в самия край на деня, ние имаме този пример на абстракция.
Нямам представа какво карта е или как да се приложи карта API.
Ние не трябва да.
Ние просто трябва да се каже на картата къде да се сложи, и се оставя
тези основни изпълнение подробности за Google.
Сега там е очевидно две парчета данни
че този пример е предоставяне на API на Google.
Очевидно центъра на картата, и нивото на увеличение, така да се каже.
>> И няма кой да признае тези координати, ширина и дължина?
Вероятно не, но ние можем да се върнем за начинаещи, буквално се види.
Но ние ще го видим в един момент.
Степен на увеличение е на стойност между, аз не правя знам, един от 13 или нещо подобно.
Тя просто има нещо общо с колко далеч сте увеличени в или извън, и това е всичко.
И сега в самия край на на страница, известие линия 29--
това е малко грозно, защото тя wraps-- този ред на код
е това, което изтегля към браузър действителната API на Google.
Всичко на кода, че на Google инженери са писали, че приложат
Цялата тази функция на вграждане карти.
>> Сега нека да не променя нищо.
Ако след заедно, давай напред и Просто запишете този файл, ако наистина имате
това, което имам.
Отиди на своя URL.
Можете да кликнете върху бутона Run до върха и, че ще кажа
ти на URL адреса на уеб сървъра отново.
И това ще ви доведе до нов раздел.
Ако щракнете върху Open за map.html, и шансовете са, че си
Ще получите сигнал, съобщение за грешка, нали?
Съобщение за грешка, съобщение грешка?
>> Така съжаление, грешката съобщение не е, че поучително
ако наистина не се отвори конзола, че специален раздел ние
съхраняват отваряне вчера и малко по-рано днес.
Но аз попаднах това по-рано, така че аз вече
разбра какво е решението.
В днешните пързалки, или по-скоро, в Cloud9, известие
че не сме направили нещо умишлено.
Забележете, че този скрипт тагове в линия 29, ако четете това,
това е като maps.googleapis.com/ нещо, нещо, нещо,
след това забележите някой, един от разработчиците,
пише във всички капитали писма, вашият ключ API.
>> Ние трябва да поставите нещо там.
И това е стъпка Направих за нас преди,
и отново те може черния списък ни, ако изведнъж, 12 или повече от нас
започнете да използвате същия клавиш, но нека да видим какво ще стане.
Така че, ако отиде в днешния пързалки, един слайд-късно, има
Това много фънки изглеждащ низ от текст.
Давай напред и просто да копирате, че и да го поставите, където се казва вашият ключ API.
Това е този, аз се регистрирали за.
>> И определено не се опитвайте да го напишете изцяло ръчно,
защото тя се чувства изпълнен с правописни грешки, потенциално.
Така че просто да копирате и поставите това.
И това ще ви накара линията по-дълго, но сега, само за да бъде ясно,
то трябва да изглежда малко по- като този, където ключовата не е равно на
капитализирани крещи на вас.
Запазване на страницата ви, върнете до другата раздела, презареди,
и се надявам да видите карта на къде?
>> АУДИТОРИЯ: Австралия.
>> DAVID Малан: Австралия.
Така че очевидно това са GPS координати на Австралия.
И нека да се разхожда само за миг и да помогне на всеки, който не е съвсем там,
но нека да предложи, чрез Google, намери на GPS координатите на собствения си роден град
или собствения си дом страна.
И най-вероятно Google може да се превърне това нагоре, или Wikipedia мога да ви кажа.
Но изберете две различни стойности за географска ширина и дължина,
се върна в и ги поставете, и След това се презарежда страницата след спасяването
и да видим дали можете да имате Карта за собствения си роден град.
>> И когато сте готови с че последващите действия challenge--
и аз ще дам малко по-малко посока, умишлено, така че да можете съзнателно
трябва да се борят за една двойка минути с документацията,
промяна на картата, за да бъде не по този анимационни подразбиране, но една сателитна карта.
Така че вие ​​всъщност виждате сателитна образност вместо хубави цветове.
>> И намек аз ще ви дам е промените типа на картата.
Върни се, че все започна страница за вдъхновение.
Както може би сте се възприема, ако търсите,
има толкова много повече неща, които можете да направите.
Някои от вас вече имат променила вида на картата.
Но можете да do-- например, нека отидете на нещо, което направихме за курса
Аз teach-- maps.cs50.net.
Един от нашите undergrads направил това.
Ние центрирате нашата карта над Харвард Ярд и наслагване на всички тези имена строителни,
и ние трябваше да го добавите това.
Така че, ако искате да търсите, например, Matthews Hall,
имаме малко падащо меню.
И мисля, че той е с помощта на фърмуера, на библиотека ние обсъдихме по-рано за това.
И ако щракнете върху Matthews Хол, тя незабавно
скача на картата до известна местоположение, и го показва
ви една снимка в този малък изскачащ.
>> Но дори и това малко поп-нагоре, ние не се прилагат.
Ако аз превъртете надолу върху нашата получаване започна страница и за информационните прозорци изглежда,
ще видите, че някои от функционалност себе си
може да се добави, макар и с малко по-голяма сложност,
е нещо, което се нарича информационен прозорец.
И ако аз кликнете пример тук, и това е, което е забавно,
можете да правите неща като това, кликнете върху маркер и след това готово,
информация се появи.
>> Така че ние не сме съвсем въведен достатъчно функции на JavaScript
да нарисува картина на това как точно може да тел на всички тези неща заедно,
но ние сме вид надраска повърхността.
В действителност, това, което току-що е направил, когато Щракнах върху които маркер,
се задейства събитие, а така наречените при кликване събитие.
И ние всъщност видях един събитие по-рано днес,
т.нар представя събитието, когато бяхме предотвратяване
потребителя от търсене за котки.
Така че ние сме вид качват и избра измежду всички тези различни функции,
да ви даде усещане, да се надяваме, на това, което действително може да
общо с малко по- комфорт в програмирането,
и напълно свободни ресурси.
>> Някакви въпроси?
Не?
Това е крайната си шанс, най-малко днес, в петък,
да получи нищо от гърдите си така че да излезе от тук
чувствате уверени и комфортно.
Да.
>> АУДИТОРИЯ: Защо да не направим можете да добавите още нещо?
>> DAVID Малан: О боже мой.
Имам нужда от почивка през уикенда, мисля.
Други въпроси?
>> АУДИТОРИЯ: [недоловим]
>> DAVID Малан: Вие can-- в Internet Explorer, Почивай в мир,
ви използва, за да бъде в състояние да сложи VB скрипт, виртуална основния сценарий,
но че наистина никога не хванал.
Така че краткият отговор е просто JavaScript.
Други въпроси?
Добре, добре, нека да направим това.
Нека да вземем нашите колеги отвън.
Те имат някаква оценка форми, които те искат всички
да прекара няколко минути попълване.
Те искат да се съберат, че форма и всеки откази, които може да имат отвън.
Те също ще имат сертификати.
Аз съм се познае има все още някои закуски отвън.
Нека да мине тези навън, и ако имате въпроси в същото време,
Ще се разхожда по-индивидуално и ние можем да започна.
Да разбира се.
АУДИТОРИЯ: [недоловим]
DAVID Малан: Това е обикновено вярно тези дни.
Разбира се с уеб софтуер, вие се наведе
на другите, че си или естетично използване на нещата
като Bootstrap, така че не е трябва да прилагат ниското ниво
подробности за менюта и бутони и всичко това.
Вие сте се облегнал на някого като Google, така че да
не е нужно да се изгради Uber бизнес и бизнес карти,
и всеки брой подобни приложения, както и.
>> В действителност, данни за вход са популярни, също.
Ако сте използвали Spotify или произволен брой сайтове,
вие ще влезете в някои уеб сайтове, използвайки Facebook.
Така че това, което е хубаво, там са APIs за вход
в днешно време, така че не е нужно да имат свой собствен маса потребители
и всичко на собствената си база данни непременно в същата степен.
Можете да споделите с Facebook направи всичко на тази сложност за вас.
Така че това е едно вълнуващо време, честно, в програмирането,
защото има толкова много от трета страна услуги, които може да се изгради на върха.
>> И отново, цената, която плащате, е или финансова или престой.
Ако Google върви надолу, така че няма Uber, може би,
но може би това е разумен компромис.
И отново, че е една от темите, надявам се, за последните няколко дни,
е тези компромиси.
И рядко е там ще да бъде верен отговор.
Това наистина е по-добре на две или повече отговори.
>> Премини тези наоколо.
>> И тези сметки Cloud9 ще продължат да работят, на теория, за вечни времена.
Може да откриете, ако изчакат няколко дни или една седмица или повече, за да влезете отново в тях,
той може да отнеме като един или пет минути, за да се отварят обратно нагоре,
но това е само защото те поставят го да спи, за да се запишете на ресурси.