Дејвид MALAN: Добро, ние сме назад. Така и за возбудливи Како заклучок, нашиот последен дел на веб програмирање, за што јас сме мислеле дека би се користи како општ термин да го фати неколку преостанати теми. Па на крајот на ден, ние всушност ќе направи малку на рацете на веб програмирање со јазик наречен JavaScript. И мислам дека ние ќе ги разгледаме во нешто во врска со слики и откривам нешто тајно скриена во сликата, а исто така се погледне во Google Maps API, апликација програмирање интерфејс, како нешто претставник на вид на софтвер тоа е повеќе и слободно достапна денес. Но, зошто да не можеме да ги разгледаме на состојка на овој свет дека ние сме вид на се земајќи здраво за готово постои за некое време, база на податоци. За изминатите ден и пол ние претпоставуваме дека имаме пристап до базата на податоци, но што проблемот го решава база на податоци? Што значи тоа за нас? Што е тоа? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Смета дека сите информации, Добро, и какви видови на информации може да се стави во неа? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Секоја информација се стави во неа, ќе се вратам. Тоа е вистина. И на еден типичен веб-базирани сајт или веб- апликација, она што видови на информации, конкретно, може да се стави во? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Корисници. Значи она што е корисник? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Океј, регистрирани корисник на сајтот. И што значи тоа да се информации на корисниците продавницата? Во што се состои корисник? Корисникот има што? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, лични податоци, и ми се допаѓа тоа. Да бидеме попрецизни. Значи, корисникот обично има име, што друго може да корисничко имаат? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Еден addr-- ред, па прво име, презиме. Тоа е добро. Всушност, да се утврдат тоа, затоа што тоа се случува да се отвори можност за дискусија, сепак, понатаму. Име, презиме, пол. Еден проект на некој вид. Што друго? Слушнав нешто друго пред, исто така. Е-пошта, поштенска адреса. Значи, да се откажеш таму и сега се разгледа а не она што ние сме чување во базата на податоци, but-- и зошто да не, бидејќи тоа е можеби очигледно е дека еднаш ќе се регистрирате на корисникот, сакате да се сеќаваат на нив за некое време. Вие не сакате тоа да се само да се чуваат во RAM меморија и да се forgotten-- така Да се ​​фокусира на тоа како. Излегува дека во светот на бази на податоци, има најмалку два вида на овие денови. Нешто што се нарекува SQL база на податоци, Структурно јазик за пребарување, или, cutely име, NoSQL, што не е SQL. А вториот е пример за тоа што би можело да да се нарече објектно-ориентирано, или објект продавница, база на податоци кој ги зачувува објекти, а не, изговор мене, како што наскоро ќе видиме, редови. Па ние ќе се фокусираат за само еден миг на Првиот од овие, имено, на SQL база на податоци, само затоа што тоа е толку познато, веќе за никого кој се користи во Excel или Табели на Google или Епл Броеви или било кој стандард програма за табеларни, Или, еквивалентно, или повеќе софистицирано, нешто како што е Microsoft Пристап или Oracle или MySQL или PostgreSQL, од кои сите се имиња на производи за имплементација од следниве идеја. Релациона база на податоци е едноставно нешто што редови и колони. И од страна на редови и колони, Јас буквално значи нешто вака, па каде што ние би можеле да имаат име на поле, а нејзиниот вид овде. И всушност, дозволете ми да сега почнуваат да се покрие овие. Така, всушност, не знам зошто јас привлече посебна табела. Ајде да ја задржите оваа едноставна. Имаме право тука Почетоците на нашата маса, каде што ова е името на полето и ова е тип на податоци, и по видот мислам следново. тоа е голем број, тоа е стринг, кратка серија како збор, тоа е став, тоа е бинарни податоци, како на сликата? И ајде да се закачам овој освен за само еден миг. Значи прво име, број, стринг, голем дел од text-- ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, стринг. И во контекст на база на податоци, ние ќе обично го нарекуваме ова поле знак. Јас само ќе кажам знак за сега, но ние сме ќе се насочите тоа во еден момент. поле карактер. Презиме е веројатно истото. Пол? Машки или женски, така што може да биде поле знак. Тоа би можело да биде или цитат unquote "Машки" или цитат unquote "женски" или тоа би можело да биде m или f. Ако сакате да бидете повеќе инклузивна, можеби ќе треба трета вредност или некој вид на друга област целосно. И така можете да го користите точно неточно. Полето може да се нарече мажи, а тогаш може да се каже точно или неточно. Но, тоа не мора да го фати сите информации кои ви се потребни. Значи излегува постои друг вид на полето дека може да биде корисно тука во типичен база на податоци, наречен enum, каде што е поле на ликот, Но вие, дизајнер, да се наведеме можни вредности, како цитат unquote "машки", цитат, unquote "женски" и така натаму. Така што без оглед на вредноста е во вашата база на податоци, е навистина карактер-базирани, но тоа треба да биде еден од оние вредности. Ние сме веројатно нема да сакате enum за име или презиме. Во спротивно ќе имаме да наведеме, како што името произлегува од, буквално секој можно име и презиме. Добро, па проект што треба да биде проект? Да, па можеби и повеќе. Значи, да се држи со дека засега број. И по број, број е малку премногу широка сега. За крајот на вториот ден, јас се чувствувам како ние треба да биде малку попрецизен. Број може да значи како, може да биде нешто како 1,236. И тоа веројатно не е она што ние подразбираме под лична карта. Што ние најверојатно значи од лична карта? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: О, во ред, така можеби тоа не е дури и голем број. Можеби тоа е всушност единствен идентификатор тоа е стринг, како корисничко име. Значи апсолутно, може да биде. Мислам дека некој веројатно значеше нумерички, иако. Значи, да остане со тоа. Каков вид на број? Што е повеќе precise-- цел број. Така голем број како 0, 1, 2, 3, па ние ќе се јавите на оваа цел број. Па дури и тогаш, би можел се Nitpicking, тоа е навистина не е само Општи број што го сакате. Вие веројатно нема да сакате негативни вредности, само затоа што, тоа само се чувствува чудно. Веројатно сакате позитивни цели броеви. Значи, вие исто така може да се изрази дека во базата на податоци, но сега за сега, ќе речеме цел број. E-mail? Ова е веројатно just-- што? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Тоа е е-маил, но тоа е карактери, нели? Тоа само има фанки карактер како како "по" симбол или нешто друго, но тоа е сепак поле лик. И поштенска адреса? поле карактер. Значи тоа е убав почеток, но ајде да бидеме малку попрецизни сега. Значи излегува дека во база на податоци, често имаат избор во текот на повеќе рафинирано верзии на овие работи. Всушност, во типичен SQL база на податоци, SQL, или поопшто, релациона база на податоци, бази на податоци со редови и колони, често се да се определи не само на видот на field-- дозволете ми да се направи некои here-- соба но исто така и должина. Значи колку долго е првото име? Мислам, Д-А-В-I-Д. ОК, добив јас веројатно само навреден како половина на луѓе во соба, десно, од вашите имиња се подолги од пет букви, па пет изгледа малку себична и наивна, па што е подобро вредност? 10, во ред, и мислам дека ние сме во ред во собата. 13? 30? Зошто не можам да се земе пристап на порано, кога се зборува за низи и меморија? Зошто не можам да кажам како 1000? име никој не е ќе да биде подолг од 1.000. Притисни назад. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, тоа е непотребното, право, особено ако повеќето имиња се само пет или 10 или 15 карактери, тоа е многу непотребното. Па да знаете што? Ова е вид на тешко прашање. Сега, ние сигурно може да се анализира на англиски јазик и имињата на било кој друг јазик е и да дознаам, добро, што е average-- просек навистина не помогне us-- што е е макс Веројатно она што навистина го сакате. Но излегува дека ние дури и да има некои избор во однос на видот тука. Во една типична SQL база на податоци, имаат нешто што се нарекува знак поле и, исто така, varchar, V-A-R, за променлива поле знак. И разликата е тоа. поле знак, можете дизајнер, Треба да ја наведете во однапред точната должина на полето. Па можеби првото име како 20 се чувствува вид на безбедно. Можеби ќе мора да направи некои Googling да види дали тоа е доволно, всушност безбедно. Има најверојатно името со 21 знаци, но сега за сега, да речеме 20 е безбеден. поле знак би значело во базата на податоци што ќе ги користат 20 и секогаш 20 карактери. Сега, ако тоа е само Д-А-В-I-Д, 15 од овие само се случува да биде празно карактери, но ти си уште со користење на сите 20 бајти. поле varchar А, од друга страна, значи стринг треба да биде до 20 карактери но ако тоа е само пет, ти си само случува да се користи пет, шест или можеби за посебна вредност на крајот, како што 0 ние разговаравме за тоа дека го означува крајот на лик низа во меморијата. Значи, кога мислите можете да изберете знак наспроти varchar, со оглед дека трампа? Знак дека го користи многу ликови, varchar не се користи повеќе од тоа што многу ликови. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Добро, кога знаеш должината на стрингот прилично привлечна да се користи само знак, зашто ако да го знам тоа, само да го спушти. И можеби тоа е точно за поштенски код, во САД, во најмала рака, 02138, таа секогаш ќе биде пет знаци додека не го додадете цртичка четири. Но, може да има некои вредности за кои секогаш се знае должината. Или можеби државните симболи, како Њујорк за Њујорк, и м-р за Масачусетс во САД. Можеби немате некои ситуации онаму каде што тоа е сосема разумно, но со таа логика, зошто се ние дури overthinking ова? Зошто да не се само користење varchar, а потоа ние само ќе секогаш да користите два лика во секој случај, или секогаш користете пет карактери и покрај тоа? Зошто да не се спаси за varchar сè, од таа логика? Мора да постои фатат. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: можам напишам нешто погрешно. Па тоа е вистина. Но, дури и тогаш, тие не можат да го користат повеќе меморија отколку што се распредели. Јас се уште го имаат последниот Во текот на должина, па затоа не случајно може да се направи таа грешка, но и добра мисла. Тоа е посуптилно, но тоа е многу сродни за нашата дискусија, всушност, на низи и поврзани листи порано. Излегува дека базата на податоци, ако таа знае дека сите вредности се на фиксна должина, дури и ако некои од тие вредности се празни, вид на естетски празно, Д-А-В-I-Д, а потоа 15 празни места, излегува дека ако секој поле не е иста должина, многу како низа имаше сите нејзини работи назад да се врати да се врати назад, така што може само плус 1 да се дојде до следното вредност, истата идеја во одредена база на табелата. Ако сите на вашиот карактер стрингови се со иста должина, имате она што се нарекува случаен пристап. Ако сите стрингови се на должина 20, не само да направи плус 1 едноставно направи плус 20, плус 20 плус 20 плус 20, и можете многу брзо да се движите низ или пребарување низ сите на вашите податоци. променлива поле знак, од друга страна, не е секогаш од 20 карактери. Тоа би можело да има 20, а потоа 15, а потоа 19, а потоа 10, и така, ако сакате да пребарувате преку неа, не може само слепо додадете 20 бајти за да се дојде до следното. Вие буквално треба да го бара преку бидејќи работ на податоци структура, ако сакате, е парталав. Тој вид на оди во и надвор со седиште на вистински должината на стрингот. Значи, кога ќе се знае должината, како Карим вели, искористете го полето знак, бидејќи ќе се добие дека ефикасноста на се можете да пребарувате преку него побрзо кога сте во потрага за податоци, на друг начин користи променлива. За жал, немам добар одговор на тоа колку долго треба да биде името, но за такво нешто име, јас би рекол на varchar е заеднички затоа што тоа не се случува да биде фиксна должина за секого. 20, не знам, 20 се чувствува малку тесни. Да речеме 50, 50. Тоа навистина не ве чини дека многу повеќе да се каже 50, наместо на 40, но во одреден момент, ќе треба да се направи проценка на повик. Многу честа појава, искрено, за [? историски?] причини, иако тоа е претерано, е да се каже 255, затоа што пред некое време, во популарната база на податоци системи, како и MySQL, бесплатна алатка со отворен код дека голем број на компании како дури и Фејсбук се користи, ова беше максимална стандардно па луѓето само отиде со него. Затоа, не е неразумно, но ќе се користи малку повеќе интуиција и да каже, дека на 50, тоа е веројатно малку претерано. Пол, ми се допаѓа enum, и така тоа може да наведеме машки или женски, или можеби поефикасно, m или ѓ или некои други симболи, но enum се чувствува како добар избор таму. Да биде јасно, полот Можеби е само varchar, и ние може само да се се согласувам со убави луѓе, секогаш да ги содржат истите вредности таму. Машки или женски или какво ли не. Но, проблемот тогаш, е во тоа што ние би можеле да направи грешка, како што предложи [Беззвучен] порано во различен контекст. Ако се направи грешка, ние може да се добие неточни вредности во нашата база на податоци. Значи она што е убаво за бази на податоци како Oracle и MySQL и други, е дека имате овој последен слој на одбраната, каде што со администраторот на Велика Британија, база на податоци, кој е и дизајнирање на оваа табела како што се вербално, може да се стави во место на enum дека штити од кои со впишување машки, женски, и така никој не друго не програмер може случајно внесете било која друга вредност. Па ова ќе биде добра работа. Ова е карактеристика. Значи проект, претпоставувајќи нумерички проект што, веројатно треба да биде позитивен цел број. И ние понекогаш имаат можност да разговараат за должина. Вие не би обично се определи бројот тука, наместо тоа ќе се утврди ова е цел број, или голема цел број, како што тие се обично се нарекува. Но, обично, цел број ќе биде, да речеме, 4 бајти. И ако тоа е 4 бајти, тоа е колку битови? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: 32 бита. Значи колку корисниците можат да ја имаме во нашата база на податоци, ако сите тие имаат проект и овој проект треба да биде уникатен? 32 бита значи дека ние имаме модели на еден, два, три, четири, five-- па како многу различни модели на нули и оние што може да има, ако има 32? Тоа е исто што и прашуваат што е два до 32? Тоа е голем број, кој Јас не сосема може да се добие право, но знам дека тоа е околу 4 милијарди долари. Па тоа значи дека вашите база на податоци маса може да има четири милијарди корисници и тоа е тоа. Значи ова е интересна дизајн импликација. А пристоен број на компании одлучија, можеби не толку многу за нивната маса корисници, бидејќи има 4 милијарди корисници е редок проблем. Ова е вид на Фејсбук стил проблем, а не типичен компанија проблем. Но, можеби ако имаш трансакцијата логови или некој вид на податоци кои постојано добива напишани во вашата база на податоци дека апсолутно може да имаат милијарди и милијарди редови, и користите број за тоа, што ќе се случи што е можно ќе го добиете на ред број 4 милијарди а потоа ќе се обидат да го вметнете 4 милијардити и 1, така да се каже? Јас сум поедноставување на броеви малку. Можете да ги намалат назад, јас мислиш мора да се справи со тоа на некој начин. И што е компјутер обично би го направил, се размислува за тоа, дури и од утрово, ако имаш вредноста на 4-битно како 1, 1, 1, 1, кое, само да се врзуваат на утро заедно во попладневните часови, што го прави ова претставува број во бинарен? Добро, ние ќе го направи тоа полесно. Она што го прави овој број претставуваат во бинарна? Добро, ние ќе се направи полесно, што дали ова претставува во бинарен? ПУБЛИКАТА: Три. Дејвид MALAN: Три, бидејќи имаме оние column-- [СМЕА] Whew! Имавме колона оние и колона две. Па претпоставувам дека, навистина, нашите [? infield?] не беа 32 бита, но тоа беа два бита, може да се брои од број 0, 1, 2, 3 корисникот, а потоа ние сме вид на Назад кон корисникот 00 повторно. Значи ова е она што обично се случува. Ако некогаш сте слушнале expression-- најверојатно имаат не, но ако have-- број преливник, каде што задржи нервира сите ваши битови да биде што е можно поголем вредности, а потоа сте надвор на битови, што обично ќе се случи? Зошто велам 00? Па, ова е три. Како можам да претставуваат 4? Како можам да претставуваат за број 4 во бинарна? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: One-- да, не велат дека 100 по себе, поради тоа што има погрешно конотација, но 1-0-0. Така што бројот 1-0-0 е навистина точно, но ако имате само две парчиња, она што навистина го прави тоа? Сте префрла во 00. И навистина, тоа е она што ќе се случи. Всушност, може да се мисли во врска со оваа поголема позната. Ако се сеќавате, што, Пред 16 години, светот требаше да заврши кога проблемот со Y2K случило. Зошто беше тоа? Па повеќето компјутери, за разумни одлуки, ги чуваат броеви како 1975 година или 1999 година само со помош на два бројки во меморијата на компјутерот. Па се разбира, она што се случува кога ќе стигнете до 2000 година, ќе отидете на овој, или подобро кажано, да. А ти оди со 2000 година, но ако ти си само со две цифри што изгледа како и 00 година Значи сте префрла. И тоа е причината зошто многу системи се потребни за да се ажурираат во тоа време. Значи со тоа, рече, компаниите како Facebook работи против тоа. Па единствениот начин да се справи со ситуација, искрено, е да го предвиди. Или најчистиот начин за справи со оваа ситуација е да се предвиди, за да не треба да се прават промени подоцна. Така, наместо на 8 бајти, знаеш што? Јас ќе одам да се напред-размислување тука, дури и покрај тоа што е малку оптимист дека ние ќе треба да имаат 4 милијарди долари и 1 корисници на нашата веб страница. Но, ајде да го користат 8 бајти, или 64 парчиња, кои генерално ќе биде наречен голем број, многу технички. И тоа само значи дека ќе може да има дури и повеќе цифри во вашиот број. Но, ова е важен дизајн на одлуки, бидејќи ако изберете број кој има премногу неколку битови на експресивност всушност би можеле да се создаде грешка во софтверот. Сите во право, па ајде да ги заврши со е-мејл и поштенска адреса. Така е-мејл, колку време треба да e-mail адреса да биде? 50. Јас навистина немам идеја, но тоа е веројатно нешто како што, затоа што во спротивно никој не се случува да се ви пишувам ако станува премногу долго, па 50, ајде да одиме со него за сега. Поштенска адреса, колку долго треба да биде? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Тоа не е само поштенски код, иако. Поштенска адреса, слушнав. Значи ова е како 1 Brattle плоштад, запирка, Кембриџ, Масачусетс., запирка, 02138. И всушност, дозволете ми да се повлече по малку лист тука. Ова се чувствува како да е пропуштена можност. Ако имаме 1 Brattle плоштад, запирка, Кембриџ М-р 02138, Се чувствувам како можеме да направиме подобро од само поштенска адреса. Зошто не можеме да експлодира оваа малку? Што сум јас да речам? Што треба да наместо да за нашите редови тука, можеби? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, па ајде го нарекуваат street_number, и долна црта е само една заедничка начин да се има она што личи на просторот, но тоа не е, всушност. Улица, а потоа city-- жал? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Ние би можеле да го направите тоа. Линија еден, линија два. Зошто не ние ќе го задржи тоа едноставно за сега, но тоа е апсолутно прифатливо решение. И тогаш државата, а потоа ајде да биде малку американско-центрични за сега и само го прават поштенски код, само затоа што тоа ќе доведе до една интересна грешка или проблем тука. Па претпоставувам дека е сега нашата адреса. Тоа е малку повеќе досадни дека имаме сите овие повеќе полиња, но сега можеме да ја означите работите малку подобро. Па сега улица број најверојатно не треба да биде знак, треба тоа? Што треба да биде? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Можеби, голем број како цел број повторно? Голем број? Вие веројатно нема да живее на 4 милијарди Широк Сокак или нешто лудо како што. Значи цел број е веројатно во ред, но има некој некогаш живеел на адреса како 1A Brattle плоштад, или 1 и 1/2? постојат овие нешта, за жал, дури и ако не сте живееле таму, постојат овие аномалии како стан 1а, 1б, 1C. Па да знаете што, веројатно не треба да се оди со цел број, во спротивно ние ќе да се изгуби некои продажбата. поле знак, можеби? Не знам колку долго. Тоа е веројатно нема да биде толку долго, па 10 или така нешто. Никој не се случува да се напише подолг број, можеби. Но, повторно, тогаш, веројатно посвети повеќе време на тоа. Можеби Google, дали некои истражувања, но ние ќе одиме со нашите храброст за сега. Улици, знак, 50, јас не знам. Во одреден момент, никој нема да го напише на плик, исто така, па таму е веројатно некои горните граници таму. Градот, исто, сигурно, така char 50. Држава, може да биде американско-центрични за сега. Па тоа би можело да биде листа, толку вид на пресуда повик, држава. Тоа може да биде како два лика. Така, всушност, можеби, јас се чуваат велејќи знак. Јас веројатно значи varchar, само поради некоја ефикасност, но ние ќе се вратам на таа одлука во еден момент. Би можело да биде знак на должина 2 за државата. Ако во САД, тие имаат, како м-р, Масачусетс, Њујорк, Њујорк, Њу Џерси, Њу Џерси, и така натаму. Така што може да се поправат во тоа. DC за Вашингтон. Но, мислам дека, Оливие, ќе предложи поинаков пристап. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, па тоа е малку досадно да напишете, но enum може да се направи повеќе смисла, бидејќи на овој начин, барем во САД, можете да наведеме, ако tediously, но го прават тоа само еднаш во вашата база на податоци и никогаш повторно да се размислува за тоа, сите 50 две карактер кодови. Така ми се допаѓа enum. Ајде да се држиме со тоа таму, бидејќи тоа на некој начин го засилува повеќе строгост. А потоа поштенски код? Мислам дека Андреј мислеше на тоа ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, пет или девет. Ајде само да биде едноставно. Едноставно направете пет засега. Но, можеби едноставно можев направи цел број, нели? Можев, но знаеш што, не сум направил оваа грешка еднаш, во некоја смисла. Пред неколку години, бев мигрирање од Microsoft Outlook за Gmail, и Outlook има свој начин на извозот сите твои контакти како датотека Excel, CSV датотека, разделени со запирки вредности датотека. И не сум направил грешка, јас мислам, на двојно кликнување на него, еднаш јас ја преземале извозот да бидете сигурни дека тоа изгледаше како што очекував. Јас мора да се погоди или да ги зачувате Автоматско зачувување удар или нешто слично. Затоа што кога јас потоа увезени што во Gmail, сето тоа работел. Но, за години, на овој ден, и Го направив ова пет, пред 10 години, Јас сум уште пронаоѓање на пријателите кои имаат адреси кои изгледаат вака. Зошто? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Тоа траеше 0, и, наместо тоа, ја зеде целата ZIP код како што е голем број, а со тоа тоа е водечки 0, што значи тоа нема значење. И така 2138 година се чини дека мојата поштенски код. И ова е, искрено, досадни Excel функција која мислам дека по дифолт, дури и ако тоа е со цел да се само да биде текст, Microsoft Excel одлучува, дозволете ми да биде од корист, и ох, го гледам само броеви. Ајде да се третираат овие што се броеви. И тоа truncates водечки нули. Се колнам во Бога, на секои неколку месеци да најдам адреса, и надвор од еден вид на OCD, ќе се вратам и да го додадете на 0, иако никогаш не испрати луѓе писма или ништо. Но, јас сум уште изнаоѓање остатоци од ова. Значи ова е да се каже, ова е добра идеја? Добро, не, затоа што некој во Масачусетс, во оваа област, се случува да имаат o ги води. Па ајде да одиме со слични знак, најверојатно, пет. И тука, ние се реализира може да се користи на enum и ние би можеле да наведеме 10.000 можно кодови ZIP, но тоа се чувствува како тоа е веројатно премин на линија, како, бенефиции. Ако треба да се инпут многу податоци во вашата база на податоци да се заштити од нешто. Значи знак реализира можете да напишете во H-Е-Л-Л-О како вашиот поштенски код, што не е, очигледно, форматот на бројките. Така што не постои начин, во типичен база на податоци, да се определи само нумерички и долг само пет карактери, па ние се случува да треба да го стори тоа во кодот. Ние ќе го сторат тоа во PHP или Јава или на кој било јазик ние сме користење на серверот за да се спроведе тој вид на ограничување. Whoo! Сите во право, па било какви прашања само уште? Ајде да се направи уште една одлука дизајн. Излегува дека исто така да се изберат, кога дизајнирање на SQL база на податоци, или типичен релациона database-- каде повторно, само релациона значи редови и колони, тоа е како да ги организирате вашите data-- и да сфатат дека она што ова значи, Сум бил во заблуда тоа, јас сум drawing-- ова е она што се нарекува на шемата за одредена база на табелата. Ова е како спецификации за table-- но кога станува збор време всушност чување на податоци, и ние ќе го направите ова само како пример тука. Одам да се отвори Excel, бидејќи Excel ќе ми даде редови и колони. А тоа е токму она што Oracle и MySQL и други алатки, ќе ми даде. Па јас сум само се случува да се користи тоа за доброто на дискусијата е. Дозволете ми да оди напред и да се отвори претставник документ тука, зумирате малку. Така на пример, нашиот заглавија се сега име, презиме, пол, проект, е-пошта, број улица, улица, Whoops. Улица, град, држава, само околу одговара на екранот. Значи она што ова значи е дека кога корисникот првиот регистри за мојот вебсајт, тоа се случува да биде нешто како Давид, Malan, m, да речеме 1, malan@harvard.edu, улица број ќе биде како 1 Brattle плоштад, Cambridge, MA, 02138, а потоа и така натаму. Значи, кога ќе речам дека релациона база на податоци или SQL база на податоци е редови и колони, Мислам ова. Дека вистинските податоци се чуваат во редови и колони. Ова е само случајност, дека станува збор, а јас бев само цртање во редови и колони. Ова е само шема, Општата дефиниција. Значи на овие полиња тука, или еквивалентно, таму, кои се областите во кои мислите Јас сум веројатно да пребарувате на ако јас сум корисник или ако сум во базата на податоци администратор? Како, што полиња сум јас всушност, се случува да пребарувате на? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Името, па је Ми се допаѓа фактот that-- да, e-mail може да биде прилично честа појава. Жал ми е, ми кажа дека името. Значи maybe-- и повторно, ние сме вид на разговор во апстрактот. Не знам зошто Вие би се во потрага по име, но тоа се чувствува разумен, ако сте во потрага по корисник. Можеби се наведува, сигурни, проект. И тоа е лизгава падина, затоа што може да смогвам сценарио, каде што Можеби мојот шеф ме побара, колку луѓе имаме на нашиот сајт? Колку жени имаме на нашиот сајт? И така, во тој момент, можеби ќе сакате за пребарување на полето на родова, исто така, и ништо друго. Значи има трампа тука. Повторно, не постои вистинскиот одговор, но има е карактеристика во повеќето SQL бази на податоци познат како индексирање, при што вас, дизајнер, база на податоци администратор, да се одлучи однапред кој Полињата на базата на податоци треба да се оптимизира за пребарувања на. многу наивно може да се каже, се оптимизира ова, се оптимизира тоа, се оптимизира овој, оптимизирање на тоа и тоа, и базата на податоци ќе направи некоја магична работа под хауба, и направи нешто на таков начин дека следниот пат кога ќе пребарување на која било од овие области, тоа ќе се, всушност, да биде побрзо. Тоа е можно. Тоа не се поништи. Но, мора да има цена платена. Ако наивно, или над-ентузијастички да речеме, индекс на сите овие полиња, така да се каже, да ги направи сите ефикасно да се бараат, која цена се најверојатно да плаќаат? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: перформанси. Што мислиш? И перформанси, барем во контекст сум дискутирање, е подобро сега. Тоа е дефиницијата за индексирање. Тоа ќе го направи пребарувања побрзо. Толку време се намалува, така да се каже. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: простор. Значи, повторно, овие се честа трговија. Јас може да го забрза вашиот пребарувања, но тоа е нема да ве чини повеќе бајти на просторот. Зошто? Па, по дифолт, ако имаме ниту еден од овие црвени ѕвезди, ниту еден од овие индекси, како што јас велам, како да пребарување за името во оваа база на податоци? Значи, да се подготви нашите внимание на овој пример. Ако имаме Давид и Scully и Карим и Arwa и други, во овие редови, на пример. Значи, да го прават токму тоа. Scully е тука, а потоа имаме Карим и Arwa, и секој друг, ако не имаат индекс дефинирана, така да се каже, најдобро можете да направите е линеарно пребарување. Ако барате Arwa, ние не сме ќе биде во можност да скокаат право да ја брзо. Ние се случува да започне врвот и одат по целиот пат до дното, не за разлика од нашата изворна Мајк Смит пример. Ако, пак, ви велам, еј, база на податоци, индексот на првото поле име, тогаш тоа се случува да се направи нешто познавач и поддршка на нешто како бинарни пребарување. Тоа веројатно не е бинарни пребарување по себе. Бази на податоци имаат тенденција да користат друг податочна структура наречена б дрвја, не треба да се меша со бинарни дрва, дека само се направи тоа побрзо да се бараат нешто логаритамски во природата. Но, цената што ја плаќате за да се изгради дека функција, таа структура на податоците во меморијата, е повеќе бајти. Па тоа би можело да потрае неколку мегабајти, некои гигабајти, кој знае? Тоа зависи од податоците. Па во одреден момент, ќе мора да се одлучи, тоа веројатно не е чест случај. Значи она што се вистински заеднички случаи, ако навистина мораше да се избере, што би можело да биде вашата омилена полиња? Е-мејл. И јас како е-мејл, бидејќи е-мејл, во теорија, треба да биде уникатен. И така обично, кога знаеш однапред дека една од вашите полиња е или ќе биде уникатен, тоа има тенденција да биде добра поле за пребарување на, бидејќи на тој начин, кога ќе бараат нешто, си оди за да се вратам еден или нула одговори, а потоа ќе завршиш. Вие не треба да се задржи во потрага по уште луѓе. И така, во овој случај тука, електронска пошта, толку долго како што не може да се регистрираат два пати со ист е-мејл, е добра. Проект по дефиниција, во компјутерски науки свет, ако зборуваме за еден Проект, кој беше подобро да се биде уникатен. Тоа е вид на конотација од лична карта или идентификатор. И остатокот од овие може да биде, ајде да ги наречеме убаво да се haves, но навистина не е потребно. И така во базата на податоци, ќе се определи индекси, но може да биде дури и попрецизно. Може да се каже, еј, база на податоци, бидете сигурни дека дека секој проект во оваа табела е уникатен. Дури и не дозволувајте програмер случајно се стави во дупликат-маил или дупликат ID број. Толку многу како enums не заштити Слично на тоа, може да имаат оние кои се одбрани од пониско ниво. И така, база на податоци дизајн, во на некој начин, е вид на забава, затоа што тоа го направи во одбраната. На некој начин да се претпостави дека се работи со страшна, ужасна програмери и сакате да се стави во што поголем број одбрана што може да се заштити вашите податоци, но истовремено сакате да им помогне да се претстават подобро со избирање на кој области за да се оптимизира за. Но, вие не мора да може да го направи тоа во вакуум како ние вид на се тука. Имаш да се знае што се оние заеднички случаи се. Ако им се спроведување на адреса книга, вие многу добро може да сакаат да бидат во можност за пребарување на речиси секое поле, само со природата на апликацијата. Па можеби ќе потрошите дека дополнителен простор. Право, било какви прашања? Да. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Не ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Добро. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: О, па ние се зборува на начин сега тоа е сосема јазик агностик. Значи зборуваме сега за релациони бази на податоци поопшто, или SQL бази на податоци генерално. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: подобар збор за користење е, може да се користи од страна на било кој јазик. За да можам да пишувам JavaScript код, C код, C ++ код, Java код, Руби код, од кои сите се зборува за база на податоци и извршување на пребарувања. Всушност, тоа не е лоша segue на пример на прашалник. И повторно, ние нема да се оди во Java или C ++ или било што повеќе, но во SQL јазик, јазикот на кој јас ги се однесуваат, Структурно јазик за пребарување, ова само по себе е програмски јазик, но тоа е со цел да се користи за, нема изненадување, структурирани прашања пребарување. Со тоа мислам тоа. Начинот на кој ќе го изберете податоци од MySQL база на податоци е буквално тип во вашата програма нешто како изберете ѕвезда од корисниците. Јас сум под претпоставка дека оваа табела, отсега ќе се нарекува корисници. Јас може да се нарече нешто што сакаме, но тој вид на смисла. И така одберете е многу заедничка глагол, ако ќе, во SQL, кој буквално го прави тоа. Што мислите ѕвезда значи во овој контекст? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Жал ми е? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: не е потребно, тоа е посеопфатен од тоа, всушност. Тоа е дива карактер на картичката. Ѕвезда речиси секогаш значи нешто, така што ова значи, во овој случај, изберете сè, од базата на податоци. Значи, кога го велам ова, мислам Дај ми врати секоја колона од масата ми вика корисници. Па ми даде резултат во собата, како што се вика. Со други зборови, да ми даде копија од табела, е она што сакам да речам. Но ако реков изберете ѕвезда од корисниците каде проект еднакво на 1, Како се големи треба мојот резултат сет биде тогаш? Или еквивалентно, колку редови треба Јас се враќала од базата на податоци? Веројатно само една, ако имам навистина проект третираат како единствен идентификатор, и ако Давид вели дека единствен број, јас да се вратам еден и само еден ред ги содржи сите информации на Давид. Ако ова го реков каде проект еднаква на 99, јас треба да се врати, во овој контекст, нула редови, барем на момент. Меѓутоа, ако јас не се грижам за сите тие информации, Јас само може да се каже, каде што Давид се живее? Одберете поштенски код од корисници, каде проект е 1. Ова ќе избере за мене само ZIP Давид код, а не на целината на тој ред. Зошто можам да го направите ова, наместо на пребарување ѕвездата, џокер? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, јас само може да им е потребно. Така што претстава е повторно на одговор тука. Зошто да побара повеќе информации отколку што треба, бидејќи дури и ако тоа е во ред заедно, се уште треба да го копирате податоците, се чини, од базата на податоци во вашата програма на некој начин, и тоа е само глупо ако треба само пет од овие бројки, не целината на ред. Па како можам да вметнете корисник? Да претпоставиме дека корисникот има само регистрирани за прв пат. Синтаксата обично ќе изгледа вака. Вметнете во корисниците, и тогаш ние би рекле вредности, и тогаш би рекол вредности како, да речеме, Лорен Scully, нашите videographer, токму тука. И следниот поле не е полот. Па ние ќе се каже цитат unquote "Ѓ", тогаш имаме еден проект а јас ќе одам да се say-- ајде се преправаат дека не е всушност тука, па ние ќе ја премотам касетата во приказната. Значи 2 ќе биде нејзиниот проект. И потоа на следниот поле тука е нејзиниот е-мејл. Значи тоа се случува да биде како Лорен Скали и така натаму, а ние само ќе точка точка таа точка од тука. Сега тоа ќе се добие малку досадни, но барањето за вметнување на крајот ќе изгледа тоа. Ако сакам да се ослободи од Scully, Ух-ах, да одјават неа, таа се брише нејзиниот профил, избришете од корисници каде проект еднакво на 2, ќе се ослободи од Scully. Или можам да кажам ажурирање на корисниците во собата, да речеме, што би можело да се промени? Да претпоставиме дека таа се движи. Постави ZIP еднаква 021-- бе, тоа е нејзината моментална код. 90210. Единствената друга ZIP код Знам дека во светот. Така што ќе се менува нејзиниот ZIP code-- всушност, дека нема да се промени нејзиниот поштенски код. Што направив јас само го направи? Иако синтаксата е веројатно ново. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, јас се пресели сите во Беверли Хилс, Калифорнија. Па јас треба, всушност, каже каде проект изнесува 2. И така натаму. Па SQL е за сите овие видови на инструкции. Изберете, вметнете, бришење, ажурирање, со овие предикати на крајот овие клаузули, каде што, така да се каже. И има многу повеќе може да се се направи, но тоа е навистина само се сведува едноставно, ако arcanely, изразувајќи она што го сакате базата на податоци да се направи. А потоа и на база на податоци ќе дознаам, кога Лорен Scully да ја вметнете во база на податоци, каде да ја стави во меморија така што можеме да многу брзо се ја врз основа на нејзиниот е-мејл адреса или врз основа на нејзиниот матичен број или слично. Да, Дан. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Навистина добро прашање. Дали овие скрипти се менува од Microsoft пристап до Oracle на MySQL, PostgreSQL? На кратко одговорот е тоа зависи. Во теорија, постои многу значајна заедничка подгрупа на SQL тоа е заедничка за сите на овие имплементации. Меѓутоа, различни производители имаат додадени карактеристики до нивните бази на податоци да се направи некои работи надвор од опсегот на овие карактеристики, кои би можеле, всушност, се скрши. Па начинот на кој програмерите хеџ против ова, е дека наместо пишување необработени SQL код како што јас пишувам тука, тие наместо да го користите библиотека, заедничка библиотека која сама по себе е вид на повисоко ниво и извадоци далеку што производот кој го користите. И тоа ви дава функции и процедури да се јавите, така што никогаш всушност пишува суровини SQL. Во теорија, тогаш ќе може да се промени производи од Oracle на Microsoft или обратно или нешто друго, а вие буквално промени ништо во врска со вашиот код. Во реалноста, сепак, е, можете понекогаш се откажат карактеристики, како резултат. Вие би можеле да имаат избрано производ, бидејќи тоа е мора овие карактеристики на додадена вредност, и вие не сте само сега да ги користите свесно. А делумно, повеќето компании имаат тенденција да никогаш нема да се движат подалеку од нивната база на податоци. Така, додека тоа е убаво да се има функција, реалноста е, ако сте реконструкција Вашата база на податоци, ти си веројатно правејќи гроздовете на други промени сепак, тоа не мора да значи треба да се предвиди тоа. Така, тоа е веројатно над-инженеринг на проблемот, но тоа навистина зависи од контекстот. Но, во теорија, SQL се дели во овие различни производи. Навистина добри прашања. Да. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, па може да се мисли на база на податоци е само еден сервер, на крајот на на денот, и во внатрешноста на тој сервер е еден куп на маси, редови и колони. И кога ќе се испрати пребарување вака од својата програма, вашиот сајт, напишан во Java, Ruby, Python, што, серверот е добивањето на оваа команда и толкување во буквално на ист начин што беше порано со толкува јазици, а потоа се врши некоја акција на нула или повеќе редови со нула или повеќе табели. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Точно, точно. Значи pseudocode за нешто како тоа би можело да биде тоа. Во вашиот PHP фајл или вашиот Пајтон датотека или вашите Java датотека, вие ќе треба pseudocode код, или Нула-како блокови, а доколку корисникот посети acme.com/register~~V за прв пат, потоа вметнете во корисниците и така натаму. И ние ќе се претвори ова да повеќе конкретни код на крајот. Но, навистина, сите ние имаме блокови во зградата тука, иако ние сме прескокнувајќи некои на чекори за спроведување. Значи, дозволете ми да најде мана со она што го прекрасно направив пред само еден миг. Ќе се создаде убава комплетна табела за корисниците. Мора да се признае, ние би можеле да спроведат тоа во неколку различни начини, но ти си, всушност, ни доведе одредување на path-- и јас да ви кажам, но тоа е веројатно мојата fault-- на прилично неефикасно спроведување базата на податоци. Тоа не е нормализиран. И со нормализирани Мислам таму се случува да биде, со текот на времето, значителен вишок, а со тоа и неефикасност, тоа е губење на просторот. Врз основа на само она што го гледате тука, може да гледаш кога тоа губење на просторот се случува да дојде од, со текот на времето, како се повеќе и повеќе корисници се регистрираат за вашиот вебсајт? Кои податоци можат да станат излишни? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Зошто ви значи тоа? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да. И да претпоставиме за целите од денес дека тоа е вистина. Излезе, и ние го научил тоа на потешкиот начин, тоа не е точно. Некако повеќе градови имаат, на некој начин, исто поштенски код, кој ги прекршува овој прекрасен интуиција. Но, ајде да претпоставиме дека тоа е вистина, бидејќи тоа е речиси секогаш точно. Па претпоставувам дека поштенски код е секогаш поврзан со истиот град и државата, која е вид на разумна претпоставка, но неточни, излегува. Но разумна претпоставка за денешните цели. Тогаш претпоставувам дека живеам во Кембриџ, М-р, според табелата на корисникот, и се претпоставува дека Лорен Scully живее во Кембриџ, м-р, и претпоставуваат дека Карим живее во Кембриџ, м-р, и Arwa живее во Кембриџ, М-р, на сите нас во 02138. Зошто сме сеќавајќи Кембриџ, М-р, 02138 за сите четири од нас? Што треба да бидат доволни да се сеќаваш? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Само поштенски код. Само што 02138 постои, затоа знаеш што можеме да направиме? Ние може да се добие малку фенси тука и овде, се дефинира нова табела кога тоа се случува да биде име, тоа се случува да биде од типот, тоа се случува да биде должина, а сега па натаму, јас сум да се јавите на оваа мои градови маса. Ова беше наречен, на Се разбира, мојата маса корисници. И така она што треба да го ставам овде за мојата градови маса, што мислиш? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да. Значи zip и државата и градот. И така од типот тука, ние ќе се каже тоа се случува да биде знак 5 повторно, предмет на дебата од порано. Ова ќе биде enum, можеби како пред, а градот ќе биде varchar 50. И така сега што можам да добијам да се избрише од оваа табела да се отстрани таа неефикасност? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Ница. Државата и градот оди си, па јас сега елиминиран потенцијалниот неефикасност за redundantly помнење, Кембриџ, М-р, Cambridge, MA, Cambridge, MA, Cambridge, MA, која, се надевам никогаш нема да се промени. И дури и ако го прави тоа, тоа е minorly досадни, сега дека јас треба да се промени тоа во повеќе редови, со оглед на тоа тука, едноставно можев го промени во едно место. Сега што е трампа, можеби? Ова е супер лесен. Имаше сите мои податоци убаво заедно. Но, она што е јасно случај сега? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Точно, и јас сум мило ми е што го користел зборот се приклучат, затоа што тоа е всушност клучниот збор, во светот на релациони бази на податоци во SQL, тоа е вистинскиот збор ќе може да се тип или барем да се пренесе. И всушност, она што ние сега треба да направите за да го изберете целосни информации Давид е нешто како изберете ѕвезда од корисниците, да се придружите градови, on-- и сега Одам да се движат само на втора линија така што овој fits-- users.zip еднаква на cities.zip, каде users.ID е еднакво на 1. Значи она што се случува? Тоа е грда изглед, но може да се вид на прочитајте го лево кон десно, врвот до дното. Изберете ѕвезда од корисниците е иста како и досега, но тоа не е од корисниците, сама по себе. Тоа е од корисниците се приклучат градови. Што сум јас спојување на овие две маси? Па, очигледно, корисниците маси поштенски поле, и овој период е само посебен синтакса да ги изразат оваа идеја, и ова е маси градовите поштенски област. Сакам овие две да бидат еднакви, но сакам на крајот да изберете само оние редови каде Проект во табелата на корисници еднакво на 1, што се случи да биде моја. И само за да биде јасно, програмер, обично кога hardcode нешто како на бројот 1, бидејќи во спротивно само на веб-сајтот Дејвид поддржува или првиот корисник, наместо тоа, ќе се направи нешто како проект, каде што ова претставува променлива, нешто што може да се промени со текот на времето, слично во духот на она што реков на почетокот со овие видови на места за чување. Но, за сега ние само ќе го hardcode како 1. И така она што значи тоа? Па, еден убав начин да се визуелизира ова е дека ако оваа страна е масата на корисниците, а тоа пак, е на патентите маса, ние сме вид на finding-- и на врвовите на прстите се компресирани овде, и на врвовите на прстите тука се и ZIP, ти си вид на ИТ испреплетени така што ќе се вратам како резултат на оригиналната табела, со навистина се приклучи двете плочи на заедничко поле. И тоа не мора да биде код. Тоа може да биде повеќето ништо друго, туку Zip е убаво, затоа што еден, тоа е кратко, два, тоа е секогаш иста должина, така што е вистински ефикасноста на она што Оливие предложи тука со разложување на код, и [Беззвучен] предлагам е ние да се ослободи на градот и држави. Значи ова е процес познат како нормализација. Било какви прашања во врска со тоа? Па дозволете ми да истакнам ова е вид на работи, иако тоа е прилично ниско ниво, оваа дискусија, што ќе помислите ти си вид на добивање на изгуби во плевел, ова е манифестација на обилна можност за програмери за да биде лошо. И всушност, дури и кога, во предмети Јас сум предавал, кога сум имал, на пример, неискусни додипломски програмери изгради веб-сајтови, на прв поглед, на веб-сајтови може да изгледа страшно. И тие ги имаат сите на функционалност што се бара, програмерите не е добра работа. Но, тие не мора да знаете доволно за база на податоци дизајн или тие не се мисли тешко доволно за типови на податоци и видот на корисници веб-сајт се случува да имаат, и ќе најдеме, а потоа, по шест месеци, откако ќе се дипломирани или се преселиле на, што по ѓаволите, нашата веб-страница е навистина, навистина бавно. И јас дури и не зборувам за луѓе кои имаат милиони или илјадници корисници. Мислам неколку стотици корисници на кампусот, од кои сите сакаат да се, на пример, магазин за курсеви во исто време, тие се со користење дека разбира каталог апликација што споменав И она е добивање на навистина забави, бидејќи немаше индекси. Немаше црвени ѕвезди, така да зборува, ние не мора да констатирано и од заеднички податоци за добијат некои заштеди на простор. И така, кога проверка на инвеститорот или лице база на податоци или слично, видови на прашања кои треба да се мисли преку е дури, при разгледување код нечија, да кажам, не мора да се погледне низ сите на нивниот код, но велат, ајде да се погледне преку базата на податоци маси. Што чување? А потоа да се каже, добро, почекајте минута, зошто со користење на број? Што ако имаме 4 милијарди и 1 на овие редови? И овие видови на прашања е можност да се вид на притисни назад и добие чувство за тоа каде ако не сте удобно тоа тоа, има некој повеќе технички прашам овие прашања, за тоа дали или не лицето не знае нивни работи. И ова е вид на работи, исто така, дека луѓето на интернет кои се самоук, можеби научат поретко, затоа што не мора да се среќаваме со тоа како многу, затоа што може да се добијат на базата на податоци и трчање, но ако не сте ја прочитате врз вежби или е изјави за нормализација база на податоци и индексирање и перформанси, овие се видови на нештата кој се случува да ви наштети. И што мислат, или лошо инженер може да се каже, добро де, ние подобри плати за поголема база на податоци или побрзо база на податоци или само фрлаат пари на ова, вертикално ниво, не мора да е така. Ако одите in-- и можете да одите во по fact-- и додадете индекси, и тоа би можело да потрае неколку часа за база на податоци за да се изгради дека новите податоци структура што се алудира погоре, сеуште можете да го надминете овој по Всушност, дека ова е местото каде што почне да се прави разлика добри дизајнери од лошо дизајнери, а не само естетски, но перформанси-мудар, како и. Некакви прашања? Не? Значи за NoSQL, кој беше друг вид на базата на податоци на која што се алудира погоре, немате редови и колони. Наместо тоа, ќе треба нешто што изгледа малку повеќе се допаѓа ова. Одам да се користи здрав синтакса. Кадрави загради се случи да се користи тука доста. Вие би можеле да имаат нешто како прво име е Дејвид, може да има последен име е Malan, цитати, може да има проект is-- извинете, whoops-- проект е 1, е-пошта е malan@harvard.edu, и јас нема пречи пишување надвор на одмор, а потоа некои други работи. Со други зборови, ова е на текстуална претстава на она што ние обично би го нарекол објект во компјутерска програма. И објект е генерално само збирка на клучните вредност парови. Значи, повторно, тоа периодично тема. Видовме клучните вредност парови во HTML, видовме клучните вредност парови сега во контекст на бази на податоци, и ние видов клучните вредност парови во контекст , мислам дека, јазик порано и денес. Постојано доаѓа. И навистина, тоа е навистина она што податоците се сведува на, податоци и метаподатоци, или вредности и клучеви, соодветно. Значи, не-релациони база на податоци, нешто врз основа на објекти, каде што само талог сето заедно и го стави во меморијата, генерално ќе биде сликата што се, или се мисли на, што е оваа. И јас ќе го оставиме тоа сега како алтернатива за пристап. И не е нужно подобро од другите. Всушност, многу многу во мода овие денови се база на податоци системи како MongoDB и Redis и неколку други такви алатки, слободно достапни, но тие се повеќе en мода. Делумно затоа што тие нудат дополнителни карактеристики во текот на овие табеларен пристапи, но, исто така, затоа што тие се малку полесно да се користи, бидејќи вие не треба да се размислува толку тешко за многу од овие одлуки дизајн. Значи предности и minuses. Значи реализира постојат опции подалеку од она што ние само трошат време на. Па ајде да го направите тоа. Ајде да се транзиција малку назад сега за веб програмирање, така што ние вид на заклучиме денес со нешто што е малку практично, пополнување во некои празнини од вчера. Дозволете ми да одат на овој прв план. Значи се потсетиме дека вчера имавме некои канонски HTML страници кои првично, само HTML, а потоа секундарно имаше CSS, Cascading Style Sheets. Ова е нова ознака што ние не види вчера, или живеат на, т.н. скрипта таг. Излегува дека всушност може да го вградите јазик наречен JavaScript во вашиот веб- страница и направете ја вашата веб- страници се направи нешто. Значи она што мислам кога го велам тоа? Па, дозволете ми да оди напред и само позајмите, овој код за момент. Одам да се оди во Cloud9, нема потреба да се оди таму си само уште, а јас ќе одам да се јавите оваа alert.HTML. Одам да го поставите во мојата датотека. И само да се појасни она што го направив, ајде ме на оваа адреса и да си одат за да се алармираат, и ќе видите Здраво светот. Но, ова е вид на underwhelming. Сакам да се направи нешто малку различен. Па јас ќе одам да всушност го направите тоа. Одам да се оди тука е, и помеѓу мојата скрипта тагови, велат alert ( "Здраво, свет"); така најава тоа е малку невешт, но јас имам HTML, во внатрешноста на кој е јазик наречен JavaScript, и тоа е она што се нарекува повик на функција или процедура повик. Ова е глагол, буквално, во овој случај, и јас сум повикувајќи код функционалност дека некој друг го напишал. Така што функционалноста е предупредување, па ајде да одиме на оваа страница сега и кликнете Вчитај ја страната повторно, и сега може види малку на интерактивност. Тоа е вид на старата школа и грдото. Овој вид на ве потсетува на pop-up прозорци, можеби, на недалечното минато но тоа не се направи нешто малку повеќе програмски. Па и повеќе од тоа, да го направиме нешто поинтересно. Дозволете ми да одам од тука и ослободете се од оваа. И јас одам да се оди напред и да создаде форма, како што направивме вчера. Всушност, знаеш што? Одам да се оди во google.html, што ние започна вчера, која изгледаше како ова, преку која бара мачка Но забележите дека е вид на грешка во сегашната верзија. Се работи за мачки, но се претпоставува дека Јас не соработуваат и да сум тип ништо, и јас едноставно кликнете на Прати. Тоа е вид на чудно однесување. ме одведе до вистинска Google, мене не ми даде порака за грешка. Би сакал да му кажете на корисникот треба да ни даде вредност. Па, како би можеле да го направите ова? Па дозволете ми да се врати во Cloud9 и дозволете ми да одат во врвот на мојата страница и додадете скрипта таг како ова, во Одам да напишете некои кодот JavaScript. И јас одам да го направите следново. Ако (document.getelementByID-- и отповикување кои ние разговаравме за тоа дека порано, таа функција. Што проект сакам да се добие? Сакам да се Q, а јас ќе одам да се да речеме еднаква на ништо, како this-- всушност, дозволете ми да користат двојни наводници само за consistency-- еднаква на ништо, потоа alert ( "Ве молиме напишете пребарување") тука. Па јас се она што се појавува да биде нешто како услов. Видовме оваа општа идеја во Scratch. Тоа е како еден од оние загатка дела кои изгледа вака. И она што сум јас зборуваш? Па, овде, да се забележи дека сум се случува да го направите следново. Јас ќе одам да им даде на оваа форма поле не е само името на q, која е она што ќе поминуваат на Google, но јас сум ќе го даде на локалните идентификатор, исто така, повика q. Но, јас би го нарекле нешто што можам сакате, јас сум само ќе ја задржиш едноставен а исто така да го наречеме q, само за едноставност. И сега јас ќе одам да направите нешто малку повеќе. На полиња тука, јас ќе одам да додадете она што се нарекува настан управувачот. На достави, сакам да се јавите функција наречена валидирајте. Ова сеуште не постои, тоа збор, или овој глагол провери, затоа што она што јас ќе одам да се направи овде сега е да додадете некои код. Јас ќе одам да се каже функција валидирајте. Одам да се вовлекува ова и додадете уште кадрава голема заграда тука и уште еден тука. Размислете за тоа што тоа е сега се прави. Имам now-- мислам на тоа како создаде мојата сопствена сложувалка што претходно не постои, и јас сум се нарекува оваа загатка парче парче валидирајте загатка. Неговата цел во животот е да се изврши четири линии на код во него. Ако document.getElementByID така концептуално, што се случува да одат во елемент, на HTML елемент чија единствена Идејата е едноставно q, а потоа, иако синтаксата изгледа малку чудно, еднаков еднаква на само значи еднаквите. Па тоа значи дека ако на елементот со единствен идентификатор на q, кога добиле, нема вредност, тоа едноставно е еднаква на цитат unquote, ништо таму, тогаш што сакам да направам? Сакам да се развикам на корисникот. И ние нема да се големи детали тука. Одам да се врати лажни. Тоа е грешка. Друго, јас ќе одам да се врати вистина. Значи или тоа работел или не. Лажни или вистинити. И сега ако јас не се прават грешки, дозволете ми да се спаси оваа ја и повторно пробајте. И нека ме само двојно проверете дали Јас не, всушност, прават грешки, па јас не се посрамоти. Ајде да видиме дали тоа функционира. Па сега јас ќе одам да напишете мачки. Таа се уште работи, или половина работи, во најмала рака. Сега дозволете ми да ја превчитате, а сега да ми да се обиде поднесување без внесување anything-- по ѓаволите, се скрши. Еден момент. Дозволете ми да се отвори конзола, [Беззвучен] најавите, вчитајте ја страницата. Дозволете ми да се обидеме повторно. Ах, по ѓаволите. Заборавив. Направив грешка. Се сеќавам на тоа што е. .value. Мислев да се каже ако вредноста на елементот чии ID е q е еднаква на тоа, тогаш се развикам на корисникот. Па сега дозволете ми да се одржи мојот здив повторно. Еве ќе одиме. Таму ќе одиме. Ве молиме напишете пребарување. Значи, тоа не ме пропуштање. Јас може да се вид на игрива со ова, и наместо на проверка за да нема вредност, Можам да кажам нешто како, Нема повеќе пребарување за мачки, и сега ние може само уште да разиграно на корисникот за пребарување за кучиња ако тој или таа сака, или ако одам тука и пребарување за мачки, сега не можам. Значи она што е готова брза тука? Значи еден, ние сме воведени во нашиот свет на HTML и CSS, програмирање функционалност. Јас всушност може да сега донесуваат одлуки во кодот. Претходно, сите можам да направите е да ги означите текстуалната содржина или графички содржини и да се каже што да барате како и каде да се прикаже. Сега јас всушност може да побара прашања на веб-страница и одлучуваат врз основа на неа, и го извести корисникот ако треба да се развикам на него или неа. Значи, да се обиде нешто на нашите сопствени со ова. Оди напред, дозволете ми да се отвори следниот слајд тука, и само се истакне една работа. Исто како и со CSS, ние може да се фактор на нашата JavaScript код на посебна датотека, можете да го прават истото со JavaScript како со CSS. И да го користите дека за користење на извор припишуваат на тагот сценариото. Но, ние нема да се комплицира работите за сега. Наместо тоа, ако може одат за да не оваа страница, but-- дозволете ми да се помести ова наоколу во order-- одат, и ако може, оваа страница тука. Овој URL тука. Тоа е во денешниот слајдови. Можеби ќе треба да ја превчитате, бидејќи Јас додадов неколку работа. Но, оди таму каде што некои загатки кои чекаат на вас. И тоа ќе ни даде шанса, во малку повеќе да се забавуваат контекст, да плискам со некои JavaScript. И кога ќе одам таму, Ќе објасни она што го чека. Добија зелено. Поставете сина боја. Поставува зелена, поставува црвено. Упс. Жал ми е. Ова е степенот на нашите документација за овој предизвик. И ова се случува да работат како што следи. Значи она што го имате на овој страница е еден куп на сликата загатки со пријателот на Универзитетот Стенфорд. Значи она што го гледате тука е речиси вид на една од тие магично око загатки, но ако сте само зјапа во неа, ништо не се случува да се појави надвор во вас. Наместо тоа, нешто не е во скриени во оваа слика. И тоа е скриено во следниот начин. Слики, како што можеби знаете, може да биде составен од само три бои. Некои црвени, некои сина, и некои зелени. И ние може да направи сите бои на виножитото со мешање на овие три бои некако. Значи ова изгледа претежно зелени и сина, но како Ник вели дека овде, ова железо загатка сликата е загатка. Таа содржи слика на нешто познати, сепак, сликата е искривена. Познатиот објектот е во црвено вредности. Сепак, црвени вредности сите се поделени со 10. Така што тие се премногу мали за фактор 10. Значи со други зборови, Ник се на оригиналната слика, и тој desaturated сите на црвените од него, намалување на износот на црвено мастило, ако сакате, во него. Сина и зелена вредности се само бесмислени, случајни вредности, ака бучава дизајниран да се прикријат вистинската слика. Значи она што не беше тој Ник тон одредување на црвено, а потоа тој само фрли по случаен избор количини на сина и зелена боја на сликата да се вид на нејасни што е, всушност, уште се таму. Мора да го вратите овие нарушувања да се открие на сликата. Прво, во собата сите сини и зелени вредности на нула да им се излезе од патот, и се погледне на резултатот. потоа дуплираат црвена вредност од 10, пожарникарска назад до околу својата конечна вредност. Што е познатиот објект? Значи, сите од вас ја имаат оваа правоаголник во вашиот интернет пребарувач во моментов. И ќе забележите дека има некои стартер код, така да се каже. Ова е JavaScript код кој Ник има напишано за вас. И ќе забележите дека има линија во средината во која започнува со коса црта црта, тоа е она што обично се нарекува коментар. Тоа значи дека е една фраза на програмерот која нема функционална смисла. Тоа е само визуелен знак на човекот. Така може да се оди напред и да избришете само таа линија, и да биде супер внимателни да избришете или промените било што друго. И дозволете ми да ви прошетка низ она што овој код го прави, а јас ќе го оставиме за да можете да дознаам тајната на сликата. Оваа прва линија тука дека јас сум само означена ви дава следново. На левата страна, имате она што се нарекува променлива која Ник има произволно, но разумно наречен im за слика. На десната страна на тој знак за еднаквост, тој е велејќи ми даде нова цитат unquote "едноставна слика". Едноставна слика, во овој контекст е она што се нарекува класа, добро, тоа е вид на како class-- технички prototype-- но, навистина, ова ми дава нов објект, содржините на кои се на датотеката, железо puzzle.png. Со други зборови, Ник создаде овој поим на едноставна слика така што можеме, за педагошка цели, си играат со слика и го промени својот црвена, зелена, и сина вредности. И како го правиме тоа? Ова донекаде криптичната синтакса тука е вид на како повтори блок дека некои од вас го видов во Скреч порано денес, каде што може да се повтори 10 пати. Во овој случај, Ник не има Hardcoded голем број како 10. Наместо тоа, тој е велејќи дека, се иницијализира променлива наречена x е 0, провери ако X е помалку од ширината на сликата. И така да биде повеќе соодветно, на сликата е променлива, точка значи одат во него и да добијат неговата ширина и тогаш отворена заграда, затворен заграда е само начин на програмерот на велејќи дека ова е во функција. Ова е постапка. Ова е функционалност некој друг напишал. Користете го и дај ми врати одговор. И тогаш x ++ е фенси начин велејќи: Откако сте го направиле ова уште еднаш, подигање x од 1. Со други зборови, е начин на програмерот на поттикнување на циклус кој е ќе iterate во текот сите колони на сликата. Сликата е само мрежа на точки, редови и колони на точки. Ова е начин на процесирањето во текот на сите овие колони. И во внатрешноста, Во меѓувреме, ние сме процесирањето во текот на височините, тука и тука и тука. Значи ова е само начин на traipsing, речиси како старата школа машина за пишување, да се оди само во текот на Целата слика iteratively. Дури и тоа не е сосема целосна јасно, само е потребно за верата, за сега, дека тие три линии на кодот заедно се ќе ви овозможи да се погледне iteratively на секој пиксел, секоја точка во сликата. Што е пиксели? Па, да биде јасно, ако се погледне во оригинална и да зумирате, Ако навистина се стави вашите очи на екранот на компјутерот, тоа е само еден куп на точки, неколку илјади точки спакувани заедно таму. И така она што сте за да се направи? Секој еден од овие точки, конечна дефиниција, е резултат на она што е генерално се нарекува RGB, црвена, зелена, сина, кои повторно, може да се комбинираат за да се ви даде било кој број на бои. Всушност, ако се сеќавате од пред многу, многу години, проектор екрани како овие работи се користи за да не имаат еден објектив но три. Еден од нив плукаат црвено светло, еден од ги плукаат зелено светло, еден од нив плукаат сина светлина. И ако сте биле во средно училиште како да сум таму каде што никогаш не беа правилно подредени, бевте секогаш гледа историјата на филмови кои беа малку искривени, бидејќи три бои не беа комбинирање правилно. Но, се покажа дека секој од овие вредности црвена, зелена, и сина, може да има голем број поврзани со нив. На пример, 0 за црвено значи дека нема црвена, зелена 0 значи дека нема зелена, и 0 за сини значи дека нема сина боја. Значи, ако имате не се црвени, без зелена, и без сини, каква боја имате? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: ќе надевам дека е така, тоа е бела боја. За жал, ова operates-- жал? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Значи вие всушност имаат црна боја, во овој случај. Значи, ако имате ниту еден од овие бои е вклучено, може да имаат црно. Сепак, ако имате, да речеме многу од нив, како многу црвени, 255 од него, многу зелена, и многу од сина, дека е бело. Значи овие се две крајности. Значи со оваа логика, ако имам многу на црвена и зелена нема и нема сина, она што боја е тоа? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Добро, очигледно. И тогаш не се црвени, многу зелена, сина нема, а потоа ако have-- добро, ние само ќе заврши тоа, само затоа што, но тоа, се разбира, сега, е сино. И сега може да се комбинираат овие бои. Сега како настрана, ако некој од вас има направено некои вистински веб дизајн, всушност би можеле да види симболи се допаѓа ова. FFF-- а всушност, тоа е веројатно нема ни тоа. Тоа е ffffff. Некој некогаш видел Ф, како и на E и А through-- така што се испоставува, зборувавме вчера околу децимален, и денес, вид на врска децимални. Денес ние разговаравме за бинарни. Излегува, хексадецимален е многу заедничка основа систем да се користи во компјутерите. Бинарни е два, децимални е 10, хексадецимален е 16. И што излезе, како да ви смета во хексадецимален? Нула, еден, два, три, четири, пет, шест, седум, осум, девет, што се користи по девет? Што е следниот број? Ние веќе се користи нула. Ми треба 16 од нив. Нула, еден, два, три, четири, пет, шест, седум, осум, девет, ви треба некоја произволна конвенција. И она што човештвото одлучи некое време Пред дека по девет доаѓа писмо А и тогаш Б, а потоа C. Значи, начинот на кој се смета во хексадецимален е нула, еден, два, три, четири, пет, шест, седум, осум, девет, A, B, C, D, E, F, и дека ќе се смета сите вас на патот, што се испоставува, до 15. Значи нула до 15 е нула преку Ѓ А зошто е тоа значајно? Па, кога ќе имаат по две на F, тоа е како да го изразат 255. Па скратам приказната, во светот на Фотошоп, дека графички софтвер за дизајн, во светот на веб развој, каде што ќе имаат многу бои, се разбира, да си играат со, често програмери ќе изразување на тоа во хексадецимален, само затоа што тоа се стреми да биде малку поедноставно. Иако на прв поглед тоа е многу покомплексна. Значи во секој случај, тоа е важно бидејќи Ник во Стенфорд ни даде шест парчиња на функционалноста што, на илјадниците програмери, сега ќе имаат можност да го користите. Вградена во овој веб- страница е шест функции, шест процедури кои Ник напиша. Три од нив ќе добиете голем број, црвена, зелена, или сина вредност. Три од нив ќе ја постави таа вредност. И овие Долни се само местата за чување, така што треба да се знае она што тие се. Така да со овие три функции, Првиот од овие работи ќе биде х-координатата, и втората од овие работи ќе биде y-координата. Со други зборови, кои точка, која пиксели сакате да се добие зелено на, се синилото, да добијат црвено. И тогаш тука, тоа се случува да биде x, тоа се случува да биде вредност на y, и тоа се случува да биде број. Значи, да го направите првиот линија на овој заедно а потоа јас ќе го оставам за вас да се обиде да се заклучи останатите. Значи во согласност со инструкциите На оваа страница, треба за зголемување на црвени со фактор на 10, и ние треба да се отстрани зелено и извадете го од сината боја. Да почнеме со вториот сценарија. Значи, ако сакам, а јас ќе одам да вовлекувате со помош на некои места, ако сакам да го поставите на црвена, зелена, или сина вредност, Одам да го направите следново. Слика, im.setBlue, а потоа врз основа на моите инструкции тука, Кои три нешта што треба да тип внатрешноста на загради сега? Ми треба x вредност, на y вредност, и што бројот треба да се стави тука ако сакам да се ослободи од ведро небо, врз основа на оваа приказна овде? Само нула. Ако сакам без сини, јас сум само нема да го промени на нула. Сега ајде да повториме она што ова го прави. Имам тука на овие врвот вториот и третиот линии, Се тврди дека две рунди, вгнездени јамки, ако ќе, тоа се случува да имаат ефект за напредување, од лево кон десно, врвот до дното во текот на сите x вредности и сите вредности на y. Бидејќи повторно, слика само мрежа на редови и колони. Значи ова се случува да се ослободи од сите сини. Дозволете ми да ја напушти во следната линија за вас. Како можам да се ослободи од сите на зелените? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Ница. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Ница. И јас одам да одзумирате, и само се се грижи за тоа што не го направиле било какви грешки. И ако сте удобно со она што сте го направиле, оди напред и да кликнете на копчето Работи / Зачувување и да видиме што може да се добие. И повторно, ние сме направени само три измени. Ние избришани тој прв коментира и да се замени со овие две линии на код. И тоа е во ред, ако треба да ја погоди на копчето Изврши / Save неколку пати да поправи нешто. И дозволете ми да зумирате на мојот код, така што можете да ги транскрибира. Добро. Гледам Андреј го има она што се чини дека е грешка. Тој само се здобија со голема црна правоаголник на неговиот екран. Дали некој друг има голем црн правоаголник? ПУБЛИКАТА: Да. Дејвид MALAN: Големи црн правоаголник? Добро, па ајде да размислиме за тоа што значи тоа. Рековме дека нула, нула, нула, па не е зелена, не се црвени, без сина, ќе ви се даде црно. И излегува дека повеќето од нашите лаптопи едноставно немаат доволно верност. Вие не може едноставно да се каже има е всушност нешто таму. И ако вид на можеби се потпреме вашиот екран напред и назад, Можеби сакаш да ја видите малку нешто таму? Можеби, вид на, вид? Тоа не е сосема црна. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Спојлер! Има некои црвени таму, но се сеќавам од спецификациите на проблемот, Ник го смири. Тој го desaturated на некој начин, но не сите на патот до нула. Значи, ако сакаме да го зголемува износот на црвена, дозволете ми предложи овој трик. Дозволете ми да зумирате на мојот екран. И дозволете ми да оди напред и да каже износ еднаков на im.getRed (x, y). Оваа линија код ми дава нешто што се нарекува променлива. Имам произволно, но, секако, разумно да се нарекува променлива ми што, очигледно? Износ. Само износ. Можев да го нарече се што сакам, но јас сум со користење на друга функција што е опишано претходно да се добие износот на црвено x y запирка. Зошто го направи тоа? Што сакате да направите тука? Вие треба да add-- ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, можеби множете се него од 10. И ако не го знаат ова, јас сум да се оди напред и да го направите тоа. Одам да се оди напред и да да речеме, сакам износот на црвено Сакам да бидам она што е во црвена, 10 пати, и ѕвезда, ѕвезда на вашиот Тастатурата е the-- не користат x. Користете ѕвезда. Тоа е како да се размножуваат работи во повеќето програмски јазици. Значи според интуиција Карим е, чуваат во оваа променлива наречена износ, е колку црвена сакам на локацијата XY. Како, сега, да го направам пиксел има тој број? Веќе сте го направиле тоа порано. Да го поставите зелени и сина да нема вредност, на нула. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да, и не го сакам до 10. Вие веќе го направи математика тука. Значи ние се добива вредноста на црвена, кој е мал број, се претпоставува. Ние се размножуваат од страна на 10. Што сакате да направите со на варијабилниот износ сега? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Ница. Im.set-- па што? ПУБЛИКАТА: setRed. Дејвид MALAN: setRed, на локација XY. Да. И само износ. Со други зборови, променлива е привремено случаеви кои може да се стави се што сакаш. Ние се случи да се стави на број во него, во моментот. Ние сме го множи со 10 да се направи поголеми. И сега сум замена на таа променлива како што третиот аргумент, или влез да се постави црвена боја. И, така што откако ќе заврши тоа, и да се забележи на полу-запирки и заградата. Оди напред и да кликнете работи / зачувате повторно, и вие треба да се види, магично, она што беше, всушност, таму. [? Arwa,?] Она што е таму? Ајфеловата кула во полноправно црвена, не е сосема темно. таа треба да биде очигледно сега, да? ДОБРО. И Андреј, не повеќе црна кутија? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Во ред. Па јас ќе го задржите ова на екранот. Ако сакате да си игра со оваа подоцна, јас ќе се рекреираат на оваа за вас. Но, овој код овде го направи токму тоа. Зошто не можеме да се направи еден на друг. Дозволете ми да дојдете долу малку. Значи во овој случај, проекторот навистина не го прават тоа на правдата. Но, на вашиот екран, најверојатно имаат многу црвени и многу црна кутија. Ова, исто така, е загатка што покажува нешто познат. Сепак, сликата е искривена. Вистинската слика, овој пат, е во сина и зелена боја вредности. Сепак, тие сите се поделени 20 па вредности се многу мали. Црвената вредности се само случајни броеви, бучава. Вратите овие нарушувања да се открие вистинската слика. Значи Ник ви кажува што да прави. Поставување на црвено вредности на нула, и тогаш не ја расипам што е тоа. Потоа се размножуваат сината и зелени вредности од 20. Така, тоа е речиси истата програма како и досега, но ти си обратен процес. И јас ќе ја ставам кодот од пред на екранот во случај сакате да се навратиме на тоа или да игра повеќе со оној. Дозволете ми да зумирате на тоа. Но реши бакар слика мозаик, број два. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Добро, така што ова сум нема да се даде како многу загатки. Па јас would-- ох, ајде види, имаш грешка тука. Значи се сеќавам, овој овде всушност треба да оди таму. Значи она што јас би им предложил, ако сакате да се се фокусираат на ова, тука е одговорот. Ако сакате да транскрибирам тоа, дека треба да ја добие првата работа. А потоа можете да го користите како инспирација за второто. Ница. Добро. И за љубопитни, ова е еден едноставен пример на наука или уметност наречен steganography, уметноста на криење информации во слики. Типично, слики може да биде воден печат многу очигледно со лого на дното корнер, но јасно, може да биде многу пософистицирани за тоа и, всушност, кријат други слики во Слики некако со оваа техника. Земете уште 30 секунди, а потоа ние ќе најмалку го објави она што треба да се види. И јас ќе ја напушти третата еден како вежба дома, ако сакате повеќе на оспори овој викенд. И мислам дека би можеле Андреј го добиле во прв план. Која е втората слика, Андреј? ПУБЛИКАТА: Статуата на слободата. Дејвид MALAN: Статуата на слободата ќе биде одговорот на овој период. Значи, повторно, само некои едноставни примери, чија цел е да ви даде чувство за тоа колку ние сме преведен сликовно гребење блокови за да се повеќе досадни и многу повеќе комплициран код, но сите идеи се уште е иста, иако со воведување сега на поимот на променлива, се можност за привремено зачувување на нешто. Ајде да го направиме уште еден практично, само за да сега се поврзете на точки на нешто малку повеќе реалниот свет. Кога ќе бидете подготвени, ако може да одат на овој URL на екранот. Тоа е, исто така, во вашата копија на слајдови, developers.google.com/maps~~V. Ајде да всушност направи нешто реално, така да се каже, на веб користење на API на Google Maps, или интерфејс за програмирање апликации, на следниов начин. Google, како и многу други компании, обезбедува голем број на бесплатни функционалноста дека можете да го користите да се изгради вашиот сопствена интересни апликации. Всушност, ако некогаш сте се користат Желбата да се добие кабината или автомобил, што веројатно знаете дека желбата има карта и тоа покажува автомобили на неа. Тоа е, како најдобро што можам каже, Google Maps API. Тие се всушност користење на мапи на Google, но желбата не е компанија мапирање, ниту пак тоа ќе биде особено интересен проблем да се реши на врвот на нивните Проблемот автомобил услуга. И така тие си стои, повторно, на рамениците на другите, на Google во овој случај. Па тие ги користат мапите на Google, но нивните автомобилски сервиси и други такви карактеристики. Значи ние се случува да ги искористат предностите на ова за да го направите следново. И ако јас си отиде премногу брзо, само ме викаат во некој момент. Среќен да повториме некои работи на сликата. Вие треба да се види на страницата се допаѓа ова. Значи убаво на Google, и тие се меѓу најдобрите за обезбедување не само API-јата, но API што ќе може да игра со или користете комерцијално. Тие се проектот за полнење вас ако вашиот употреба е висока, но отидов напред однапред и да ни се пријавиле за бесплатна сметка кои, се надевам, 10 компјутери нема да не дисквалификува за одеднаш. Па се надевам дека овој демонстрација ќе работат. И ќе забележите дека тие имаат API-јата за Андроид, iOS, интернет, и интернет услуги, што и да е. Да се ​​фокусира на интернет. Па кликнете на розова кутија, интернет, и дека ќе те води, се надевам, на страница овде. И тие го добивме целиот куп на API-јата. И тоа може да биде малку големо во прв, но јас ќе ни се управува преку она што го сакате. Во горниот лев агол е на Google Maps Го вклучите Javascript-API, API JavaScript. Така одат напред и да кликнете тој. И тоа ќе ве доведе до сега на следната страница, демонстрации и примерен код. Дозволете ми да зумирате од тука. И дозволете ми да ни to-- дојдете долу до местото каде што се вели брз почеток чекори. Вашиот екран треба да изгледа како мојот. И има два чекори, се клуч и да почне развој. Јас веќе го направи првиот чекор за САД, добивање на т.н. клуч. И тоа е заедничка идеја. клуч за API е обично се само голем случаен број или стринг дека вие би требало за вметнување на вашиот код, така што Google не знае кој сте кога сте со користење на нивните услуги, нивните API. Тоа не значи дека ние сме беше обвинет за ништо. И сега, клик, наместо еден, кликнете на проектот во развој. Ако може само да ми се бранува повеќе ако не сте сигурни каде сме. Па ние само ќе ја изгребат површина, тука, но она што Мислев дека ќе биде огромна, е всушност да ги имаат сите од нас, користење Cloud9 во еден прозорец и ова упатство во друг прозорец, Ви овозможува да се всушност нашите сопствени примена и трчање дека вградува сопствен Google карта во нашата сопствена веб страница, а потоа се додава една или две функции. Но, ние само ќе ја изгребат површината на она што можеме да направиме. Па само брза проверка разумност. Е секој на оваа страница, Google Мапи го вклучите Javascript-API? Треба да се каже за да започнете. Ние нема да одат преку целата работа од страна на било каков начин. Во ред, во друга табот, ако не го отвори, одат во Cloud9 и да си на само нов таб, во крајна линија. Значи, повторно, c9.io од вчера, c9.io, и само се создаде нова датотека. И да оди напред и повик без оглед на тоа што би сакале. Се јавив map.html рудникот. Наречи го тоа нешто што завршува во html. И треба да биде приближно каде што сум во овој процес со само трепка брзо во празен јазиче наречено нешто како map.html. Или датотека, новата датотека ова време. И сега, во текот на Google Мапи го вклучите Javascript-API-то, ние ќе го прескокнете читање низ сите на овој текст. Но забележите дека светот е здраво навистина насекаде во светот, ќе го видите сега. Здраво светот има овој голем шарени пример на целиот куп на HTML. Оди напред и да копирате и залепите само дека HTML, па од типот на doc на врвот сите на патот до крајот HTML таг, одете напред и да ги копирате сите that-- повторно, кој е под свет здраво example-- и ставете дека во табот на Cloud9, така што сега на вашиот екран треба да изгледа приближно како мојот. И може да се спаси, но не ќе го вчита само уште. прва да ја погледнеме го кодот и да видиме дали можеме не може да се заклучи или да научат од она што е на Google има ни слепо да копирате и залепите. Тие само сакаат да помогнат, буквално, да ни се отворени, но таму не е толку многу комплексноста всушност таму. За било какви прашања само уште? Ние сме безбедни да се движам? ДОБРО. Толку брзо, ајде да се направи Со неколку брзи сигурносни проверки. Линија еден од она што сум види, и се надевам, ќе види, што значи тоа, DOCTYPE HTML? Карим, да се потсетиме? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Да. Еве доаѓа HTML 5. Во меѓувреме, се редат два на екран овде значи еј прелистувач, тука доаѓа вистинските HTML. Линија три е еј прелистувач, тука доаѓа главата. Линија четири е, се разбира, еј пребарувачот, тука доаѓа насловот. Што значи линија пет направам? Всушност, тоа не навистина направи нешто за нас. Во овој случај, тоа само ја менува големината на на страната на стандардните. Линија шест, не сме разговарале за тоа, но тоа одредува карактерот кодирање. Има различни начини за шифрирање на датотеки, особено за странски јазици. UTF-8 само има тенденција да биде стандардно. Па сега ќе видиме во линија седум до 16 години, некои CSS. И иако не сум видел сите овие работи пред тоа, можеме да заклучиме вид. Значи линија осум средства, еј интернет пребарувач, ќе се применуваат сите од следните на кои две ознаки, очигледно? HTML и текст на. Значи запирката е нова работа таму. И тоа е само начин на наведувајќи повеќе тагови одеднаш. Тогаш ние го добивме големите загради. Значи очигледно, овој му кажува на прелистувачот, направи висината на страница 100%. Па дури и ако има многу малку содржина, направи целата страница, направи нешто пополни оваа страница. Направи мапа на крајот се пополни оваа страница. Маргина, што значи тоа? Тоа е обично како произволна бел простор околу рабовите дека некои пребарувач дизајнер само одлучи треба да биде таму, бидејќи тоа вид на прави работите изгледаат почист. Но, ние не го сакаат тоа. Ние сакаме на сајтот ќе сите на патот на рабовите. Баласт, слични во духот на маргините. Маргините значи надвор, баласт средства внатре, но тоа е од ист вид на договор. Тоа е малку на тампон помеѓу вас и на рабовите. И тогаш линија 13 е добар можност за брз преглед. Што значи остар мапа знак значи, или хаш-сајтот значи? Што значи тоа да се однесува, во принцип? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Токму така. Овој имот, ова имотот CSS се однесува на само една работа, HTML таг дека има проект на понуда, unquote "мапа". И сега ајде да брзо напред, скролувајте надолу кон дното на датотеката, која не е премногу далеку, и ќе забележите на линија 19, ако го поставите токму како што го направив, линија 19 има само div, што е поделба на страница, која вчера се наречен правоаголни регионот. Таа нема ништо во него. Тоа е отворен таг, блиски таг. Но, тоа не имаат единствен број. Значи она што се чини дека е се случи тука е Google се подготвуваат нашата веб-страница за да имаат комплетен висина 100%, и без баласт, маргини, бидејќи она што се случува да се стават во на овој div, чиј единствен број е мапа, е вистински вградени сајтот. И ние сакаме тоа да се пополни страницата, а не само да има некои мали правоаголник во средината на теренот. Значи линија 14 на сличен начин нагласува, на карта себе треба да имаат висина од 100%. Па сега забележите помеѓу линиите 20 и 28 години, ова е JavaScript код. И ова е, дури и покрај тоа што е синтаксички малку чудно, таму не е толку многу се случува тука. Во линија 21, ова е прогласување нешто што се нарекува променлива. Наместо нарекувајќи износи, како и порано, ние сме поточно велејќи var, што само значи променлива. Ние би можеле да го користат тоа во код Ник, но тој не го сторил, па јас не се мачат го прави тоа или. Тоа е променлива наречена карта, а потоа, тука е функција која е очигледно наречен initMap. Значи ова е како нашите сопствени загатка парче во Scratch. Ние создадовме парче функционалност наречена initMap, и може да се вид на заклучиме Што се случува овде. На левата страна, имаме променлива, па ние ќе се стави на следниов нешто во таа променлива, од десно кон лево. Од десната страна вели, еј прелистувачот, ми даде нова карта на Google. И google.maps.map е само фанки начин на наведувајќи дека оваа функционалност припаѓа на Google Maps. По загради, видовме тоа порано, еј прелистувач, се ме елементи во страната, таг во страница чиј единствен број is-- ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: --map. И она што се случува, добро, оваа линија заедно, линија 23, е во суштина велејќи: еј пребарувач, одете да ме тој празен div на страницата чиј единствен број е сајтот, затоа што сакате да го вметнете во it-- внесе во неа, ако will-- целиот куп на содржината што се случува да се доаѓа од интернет, последователно. И Google ќе го прави сето тоа за нас. Значи, повторно, на самиот крај на денот, имаме овој пример на апстракција. Јас немам идеја што сајтот е или како да се имплементира на сајтот API. Ние не треба да се. Ние само треба да му кажете на сајтот каде да се стави и да ја напушти оние основните имплементација детали на Google. Сега таму е очигледно две парчиња на податоци дека овој пример е обезбедување на API на Google. Очигледно центарот на мапата, и нивото на зум, така да се каже. И дали некој ги признае овие координати, Ширина и должина? Веројатно не, но можеме да се вратиме на туториал, буквално ја видите. Но, ние ќе го видиме во само еден миг. Ниво на зумирање е вредност помеѓу, јас не знаете, една во 13 или нешто слично. Тоа едноставно мора да се направи со тоа колку сте зумира во или надвор, и тоа е тоа. И сега на самиот крај на страницата, информации линија 29-- тоа е малку грди, бидејќи тоа wraps-- оваа линија код е она што преземања на прелистувачот вистинските API на Google. Сите кодот што на Google инженери имаат напишано дека се имплементира целата оваа карактеристика на приклучок мапи. Сега ајде да не се промени ништо. Ако си по должината, оди напред и само ја зачувате оваа датотека, ако навистина имаат што го имам. Оди на нејзиниот URL. Можете да кликнете на копчето Изврши до врвот и дека ќе покаже ќе ја URL адресата на вашиот веб сервер повторно. И тоа ќе ве доведе до ново јазиче. Ако кликнете Отвори за map.html, и шансите се сте ќе добиете известување, порака за грешка, да? порака за грешка, порака за грешка? Така, за жал, на грешка пораката не е дека просветителската освен ако не сте всушност се отвори конзола, тој посебен таб ние чуваат отворање вчера и малку порано и денес. Но, јас се тетеравеше низ ова порано, па јас веќе сфатиле што е решение. Во денешниот слајдови или Наместо тоа, во Cloud9, известување дека ние не се нешто намерно. Забележете дека оваа скрипта таг во линија 29, ако го прочитате низ него, тоа е како maps.googleapis.com/ нешто, нешто, нешто, тогаш се забележи некој, еден од програмерите, пишува во сите капитални писма, вашите клучни API. Ние треба да ги пренесете нешто таму. И ова беше чекор Јас го направи за нас досега, и повторно би можеле црната листа ни ако одеднаш, 12 или повеќе од нас започнете со користење на истото копче, но ајде да видиме што се случува. Значи, ако одите во денешните слајдови, еден слајд подоцна, има овој фанки изглед низа на текст. Оди напред и само копија на тоа и ставете го каде што вели: вашиот клуч за API. Тоа е една јас се регистрираа за. И дефинитивно не се обиде да го пишувате надвор рачно, затоа што се чувствува полн со грешки, потенцијално. Па само да копирате и залепите тоа. И тоа се случува да се направи линија подолго, но сега, само за да бидат јасни, таа треба да изгледа малку повеќе како овој, каде што клучните не е еднаква на капитализирани вика на вас. Зачувајте ја вашата страница, врати се назад на други јазичето, ја превчитате, и се надевам да се види на сајтот каде? ПУБЛИКАТА: Австралија. Дејвид MALAN: Австралија. Значи очигледно тоа се GPS координати на Австралија. И дозволете ми да се шетаат за само еден миг и помогне на секој кој не е баш таму, но дозволете ми предложи, преку Google, најдете на GPS координатите на вашиот роден град или вашиот дом земјата. И веројатно Google може да го претвори ова , или на Википедија да ви кажам. Но да изберат две различни вредности за географска ширина и должина, се врати и ставете ги и а потоа повторно вчитајте ја страницата по спасување и види дали ќе може да има карта за свој роден град. А кога ќе завршиш со тоа, следење challenge-- и ќе ти дадам малку помалку насока, намерно, така што ќе намерно треба да се избориме за неколку минути со документацијата, промена на мапата да биде не овој cartoonish стандардно, но сателитска мапа. Така што всушност се види сателитска слики, наместо на прилично бои. И закажаната Јас ќе ти дадам е да го промените типот на мапата. Се врати во тоа добива започна страница за инспирација. Како што може да се собере, ако сте во потрага, има толку многу повеќе работи што можете да направите. Некои од вас веќе имаат смените типот на сајтот. Но, можете да do-- на пример, дозволете ми да одат на нешто што го направивме за курсот Јас teach-- maps.cs50.net. Еден од нашите undergrads го направи ова. Ние центар Нашата карта врз Харвард јард и шалче сите од овие имиња на зградата, а ние го додадете ова. Па ако сакате да пребарувате, на пример, Метјуз сала, имаме малку опаѓачкото мени. И мислам дека тој е користење на подигање, на библиотека што беше порано за ова. И ако кликнете на Метјуз Сала, таа веднаш скокови на сајтот на одреден локација, и тоа покажува можете слика во оваа мала pop-up. Но, дури и овој мал Pop-up, ние не се имплементира. Ако јас дојдете долу на нашата добивање започна страница и информации за прозорци се погледне, ќе видите дека некои од функционалност ќе се да додадете, иако со малку повеќе комплексност, нешто што се нарекува прозорец информации. И ако јас кликнете пример тука, и тоа е она што е забавно, можете да ги правите нештата како тоа, кликнување на маркер, а потоа Voila, информации се појавува. Значи ние не сме сосема воведе доволно опции на JavaScript да се наслика слика на токму онака како што може да се жица сите овие работи заедно, но ние сме вид на изгребани на површината. Всушност, она што јас само направив кога Јас кликна на тој маркер, се активира настан, т.н. клик на настанот. И ние всушност го видов настан порано и денес, т.н. поднесат настан, кога бевме спречување корисникот од пребарувањето за мачки. Значи ние сме вид на бере и choosed Од сите овие различни карактеристики, да ви даде чувство, се надевам, на она што може, всушност, да стори со малку повеќе удобност во програмирање, и целосно бесплатни ресурси. Некакви прашања? Не? Ова е вашата крајна шанса, барем денес, во петок, да се добие нешто градите така што ќе одат од тука чувство уверени и удобно. Да. ПУБЛИКАТА: Зошто не можете да додадете уште нешто? Дејвид MALAN: О добрина. Јас треба да се одморат овој викенд, си мислам. Други прашања? ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Вие can-- во Internet Explorer, почивај во мир, се користи за да биде во можност да се стави VB сценариото, виртуелната основните скрипта, но тоа навистина не влезе во употреба. Значи кратко одговорот е само JavaScript. Други прашања? Добро, добро, дозволете ми да го направите тоа. Дозволете ми да го зграби нашите колеги надвор. Тие имаат некои евалуација форми кои тие сакаат сите да поминат неколку минути за пополнување. Тие сакаат да се соберат што формата и било откажување дека можете да имате надвор. Тие исто така ќе имаат сертификати. Јас сум Сомневајќи се има уште некои грицки надвор. Пушти ме да поминам овие надвор, и ако имате било какви прашања во меѓувреме, Ќе се шетаат поиндивидуално а ние може да ви започна. Да секако. ПУБЛИКАТА: [Беззвучен] Дејвид MALAN: Тоа е вообичаено е вистина овие денови. Се разбира, со веб- софтвер, вие се приклонуваат на другите сте или естетски користење на нешта како подигање, така да не се треба да се спроведе на ниско ниво детали за менија и копчиња и сето тоа. Вие сте потпирајќи се на некој како Google, така што ќе не треба да се изгради на желбата бизнис и бизнис мапирање, и било кој број на слични апликации, како и. Всушност, најави се популарни, исто така. Ако сте користеле или Spotify било кој број на веб-сајтови, ќе влезете во некоја веб-сајтови користат Фејсбук. Значи она што е убаво, има се API-јата за најава Во денешно време, така што ќе не мора да имаат свој маса корисници и сите на вашата база на податоци мора да се во иста мера. Можете да ги споделите на Фејсбук направи сите на сложеноста за вас. Така, тоа е возбудливо време, чесно, програмирање, затоа што има толку многу трети лица услуги кои може да се изгради на врвот на. И повторно, цената што ја плаќате е или финансиски или престој. Ако Google оди надолу, така и желбата, веројатно, но можеби тоа е разумен трампа. И повторно, тоа беше една од темите, се надевам, во изминатите неколку дена, Токму овие размени. И ретко се случува таму да биде вистинскиот одговор. Тоа навистина е подобар на две или повеќе одговори. Помине овие наоколу. И овие сметки Cloud9 ќе продолжи на работа, во теорија, за вечни времиња. Може да се најде, ако чекате неколку дена или една недела или повеќе за да влезете назад во нив, тоа би можело да се земе како една или пет минути за да се отвори врати, но тоа е само затоа што тие се стави тоа да спијам да ги зачувате на ресурси.