DAVID Humala: Olgu, me oleme tagasi. Nii põnev Kokkuvõttes on meie viimane osa veebi programmeerimine, mis ma arvasin, et me tahaks kasutada üldmõistena jäädvustada mõned allesjäänud teemasid. Nii et lõpuks päev, siis me tegelikult teha natuke käed-veebi programmeerimine keelega nimetatakse JavaScript. Ja ma arvan, et me vaatleme millegi seotud pildid ja avastanud midagi salaja peidetud pilt, ja ka heita pilk Google Maps API, rakendusliidese interface, kui midagi esindaja tüüpi tarkvara see on üha ja vabalt kättesaadavad juba täna. Aga miks me ei võta pilk kell koostisosa selles maailmas et me oleme omamoodi olnud võttes iseenesestmõistetavana olemas juba mõnda aega, andmebaasi. Viimase päeva ja pool oleme eeldada et meil on juurdepääs andmebaasi, kuid Mis probleem ei andmebaasis lahendada? Mida see teeb meie jaoks? Mis see on? Publik: [kuuldamatu] DAVID Humala: hoiab kõiki andmeid, OK, ja milliseid andmeid Võib paned seda? Publik: [kuuldamatu] DAVID Humala: Igasugune teave paned ta, saad tagasi. See on tõsi. Ja tüüpiline veebipõhine kohapeal või veebi taotluse, millist liiki teavet, Konkreetsemalt võib paned? Publik: [kuuldamatu] DAVID Humala: Kasutajad. Mis siis kasutaja? Publik: [kuuldamatu] DAVID Humala: OK, registreeritud objekti kasutaja. Ja mida see tähendab, et poest kasutajate informatsiooni? Mis komponeerib kasutaja? Kasutajal on mis? Publik: [kuuldamatu] DAVID Humala: Jah, isiklik andmed, ja mulle meeldib, et. Olgem täpsem. Nii kasutaja tavaliselt on nimi, mida veel võiks kasutaja on? Publik: [kuuldamatu] DAVID Humala: an addr-- OK, nii eesnimi, perekonnanimi. See on hea. Tegelikult olgem määrata et kuna see läheb avada võimaluse arutelu, veel täiendavalt. Eesnimi, perekonnanimi, sugu. ID mingisugune. Mida veel? Kuulsin midagi enne ka. E-posti, posti aadressi. Nii saab peatada seal ja nüüd kaaluma mitte seda, mida me salvestamise andmebaasis Aga-- mitte miks, sest see on võib-olla ilmne, et kui sa registreerid kasutaja, soovite mäleta neid mõnda aega. Sa ei taha, et see lihtsalt salvestatakse RAM ja olla forgotten-- nii olgem keskenduda, kuidas. Selgub, et maailma andmebaasid seal vähemalt kahte tüüpi nendel päevadel. Midagi nimetatakse SQL andmebaasi, Structured Query Language, või cutely nimega, NoSQL, mis ei ole SQL. Ja viimane on Näiteks, mida võiks nimetada objektorienteeritud, või objekti poe andmebaasi mis talletab objektid ja ei, vabandust mind, nagu me varsti näeme, rida. Nii me keskenduda vaid hetkeks Neist esimese, nimelt SQL andmebaasi, kui ainult, sest see on nii tuttav juba, et keegi kes on kasutanud Exceli või Google lehed ja Apple Numbrit ega standard tabelarvutusprogrammi, või võrreldavalt või rohkem sophisticatedly, midagi nagu Microsoft Access või Oracle või MySQL või PostgreSQL, mis kõik on toote nimed rakendused järgmistest idee. Relatsioonandmebaasile on lihtsalt midagi, millel on read ja veerud. Ja read ja veerud, Ma sõna otseses mõttes midagi tähendama nagu see, et kus me võiks olla nime valdkonnas ja selle tüübi siin. Ja tegelikult, las ma Nüüd hakkavad kaardistada. Seega tegelikult ma ei tea miks ma joonistasin omaette diagrammi. Hoidkem seda lihtne. Meil on õigus siin algus meie lauda, ​​kus see on nimi valdkonnas ja see on andmetüüp, ja tüübi järgi mõtlen järgmise. Kas see number on seda jada, lühikese string nagu sõna, on see punkt, on see binaarandmete, nagu pildi? Ja olgem lihtsalt kiusupunn see peale hetkeks. Nii esimene nimi, telefoninumber, string, suure tüki text-- Publik: [kuuldamatu] DAVID Humala: Jah, nii string. Ja andmebaasis kontekstis, jagame tavaliselt nimetame seda char valdkonnas. Ma lihtsalt ütlen char nüüd aga oleme läheb täpsustada seda korraks. Märkide valdkonnas. Viimane nimi on ilmselt sama. Sugu? Mees või naine, nii et see võiks olla char valdkonnas. See võib olla kas tsiteerida, lõppeb "Mees" või tsiteerida, lõppeb "naiste" või see võib olla m või f. Kui soovite olla kaasav, Sul vaja kolmandat väärtus või mingi muu valdkonnas hoopis. Ja nii võid kasutada tõsi vale. Valdkonnas võiks nimetada mees, ja siis võiks öelda, õige või vale. Aga see ei pruugi lüüa kõik andmed, mida tahta. Nii selgub seal on teist tüüpi on valdkond, mis võib olla kasulik siin tüüpilises andmebaas, mida nimetatakse ENUMi, kus see on märk valdkonnas, aga sa, disainer, saada loetleda võimalikud väärtused, tsiteerida, lõppeb "mees", tsiteerida, lõppeb "naiste" ja nii edasi. Nii et mida iganes väärtus on oma andmebaasi, on tõepoolest Märgipõhiste, kuid see peab olema üks neist väärtustest. Me ilmselt ei taha ENUMi eest eesnimi või perekonnanimi. Vastasel juhul oleks meil loetleda, nagu nimigi tuleneb, sõna otseses mõttes iga võimalik ees- ja perekonnanimi. OK, nii ID milline peaks ID-olla? Jah, nii võib-olla mitmeid. Nii saab jääda et nüüd, number. Ja number, number on natuke liiga lai nüüd. Suhe lõpuks teise päev, ma tunnen, et me tuleks vähe täpsemaks. Number võib tähendada, nagu see võiks olla midagi sellist 1,236. Ja et ilmselt ei ole mida me mõistame ID. Mida me ilmselt silmas ID? Publik: [kuuldamatu] DAVID Humala: Oh, OK, nii võibolla see ei ole isegi mitu. Võib-olla see on tegelikult kordumatu tunnus see on string, nagu kasutaja nime. Nii absoluutselt, võiks olla. Ma arvan, et keegi ilmselt tähendas numbriline, kuigi. Nii jäägem selle. Millist number? Mis on rohkem precise-- täisarv. Nii mitmeid nagu 0, 1, 2, 3, nii me nimetame seda täisarv. Ja isegi siis, suutsin saab Syynääminen, see on ei tõesti ainult Üldiselt täisarv soovite. Sa ilmselt ei taha negatiivsed väärtused, lihtsalt sellepärast, et see lihtsalt tundub imelik. Sa ilmselt tahad positiivset täisarvu. Nii saab väljendada ka et Andmebaasis kuid nüüd, me ütleme täisarv. E-? See on ilmselt lihtsalt-- Misasi? Publik: [kuuldamatu] DAVID Humala: See e-posti, aga see on märki, eks? See lihtsalt on funky iseloomu nagu "at" sümbol või midagi muud, kuid see on ikka iseloomu valdkonnas. Ja postiaadress? Märkide valdkonnas. Nii et see kena algus, kuid olgem veidi täpsem nüüd. Nii selgub, et andmebaasi, siis sageli on valik rohkem rafineeritud versioonid nendest asjadest. Tegelikult tüüpilises SQL andmebaas, SQL, või üldisemalt relatsioonandmebaasile, andmebaase rida ja veerud, siis sageli saada mitte ainult kindla tüübi field-- las ma tegema ruumi siin-- vaid ka pikkus. Kui kaua on eesnimi? Ma arvan, D-A-V-I-D. OK, sain ma ilmselt lihtsalt solvunud nagu pool inimesed ruumis, paremale, kuna teie nimed on enam kui viis tähed, nii viis tundub veidi isekas ja naiivne, et mis on parem väärtus? 10, eks, ja ma arvan, me OK ruumis. 13? 30? Miks ma ei võta lähenemisviisi varem, kui me rääkisid massiivid ja mälu? Miks ma ei öelda nagu 1000? Keegi nimi läheb olema pikem kui 1000. Lükka tagasi. Publik: [kuuldamatu] DAVID Humala: Jah, see on raiskav, paremale, eriti Kui enamik nimed on ainult viis või 10 või 15 märki, et on väga raiskav. Nii et sa tead, mida? See on omamoodi raske küsimus. Nüüd saame kindlasti analüüsida English ja mis tahes muu keel nimed ja aru saada, noh, mis on average-- keskmine ei ole tegelikult aidata us-- milline on max ilmselt mida me tõesti tahame. Aga selgub, meil on isegi mõned valik üle tüüp siin. Tüüpilises SQL andmebaasi, siis on midagi, mida nimetatakse char valdkonnas ja ka varchar, V-A-R, muutuja char valdkonnas. Ja vahe on see. Char valdkonnas, siis projekteerija, pea eelnevalt täpsustama täpne pikkus valdkonnas. Ehk eesnimi nagu 20 tundub selline ohutu. Võib-olla teha mõned googeldamist kuni kas see on tegelikult piisavalt ohutu. Seal on ilmselt nime 21 märki, kuid nüüd oletame, 20 on ohutu. Char valdkonnas tähendaks andmebaasis, mida sa kasutavad 20 ja alati 20 tähemärki. Nüüd, kui see on lihtsalt D-A-V-I-D, neist 15 lihtsalt läheb tühjaks märki, aga sa ikka kasutades kõiki 20 baiti. Varchar valdkonnas seevastu tähendab string olema kuni 20 tähemärki aga kui see on ainult viis, sa ainult kavatse kasutada viis, või ehk kuue jaoks eriline väärtus lõpus, niimoodi 0 arutasime, et tähistab lõppu iseloomu järjestuse mällu. Nii et kui sa arvad võite valida char versus varchar, arvestades, et kompromiss? Char kasutab nii palju tähti, varchar kasutab mitte enamat palju märke. Publik: [kuuldamatu] DAVID Humala: OK, kui sa tead stringi pikkusena päris kaalukad lihtsalt kasutada sütt, sest kui sa tead seda, lihtsalt pane see alla. Ja võib-olla see on tõsi zip kood, USA, vähemalt, 02138, see on alati saab olema viis tähemärki, kuni lisate kriips neli. Aga sa võisid mõned väärtused mis sa alati teada, pikkus. Või äkki riigi sümbolid, nagu NY New York, ja MA Massachusetts USA. Võib-olla sa ei ole teatud olukordades kus see on täiesti põhjendatud, kuid selle loogika, miks me isegi overthinking seda? Miks me lihtsalt ei kasuta varchar ja siis me lihtsalt kasutage alati kaks märki niikuinii, või alati kasutada viis tähemärki ikkagi? Miks mitte lihtsalt säästa varchar eest kõike, mida see loogika? Ei tohi olla saagi. Publik: [kuuldamatu] DAVID Humala: kas kirjutada midagi valesti. Nii et see on tõsi. Aga isegi siis, nad ei saa kasutada rohkem mälu kui ma eraldada. Mul on veel lõplik öelda pikkuse, nii et nad ei saa kogemata teha mis viga, aga hea mõte. See on peenem, kuid see on väga seotud meie arutelu, tegelikult massiivid ja ahelloendid varem. Selgub, et andmebaasi, kui ta teab, et kõik väärtused on fikseeritud pikkusega, isegi kui mõned neist väärtustest on tühi, omamoodi esteetiliselt tühi, D-A-V-I-D ja siis 15 toorikud, Selgub, et kui iga valdkonnas on ühepikkused, palju nagu massiivi olid kõik tema asjad seljad et seljad et võid lihtsalt pluss 1, et saada järgmine väärtus, sama mõte andmebaasi tabelisse. Kui kõik oma iseloomu stringid on sama pikk, teil on, mida nimetatakse muutmälu. Kui kõik stringid on pikkus 20, siis ei ole lihtsalt teha pluss 1 sa lihtsalt teha pluss 20 pluss 20 pluss 20 pluss 20, ja saab väga kiiresti kerida või otsida läbi kõik oma andmed. Muutuva paalia valdkonnas seevastu ei pea alati 20 tähemärki. See võib olla 20 ja seejärel 15 ja siis 19 ja siis 10, ja nii et kui soovite otsida läbi, sa ei saa lihtsalt pimesi lisada 20 baiti, et saada järgmise üks. Sa sõna otseses mõttes pea otsima läbi sest serva andmestruktuur, kui soovite, on narmendav. See liik läheb sisse ja välja, mis põhineb tegeliku stringi pikkusena. Nii et kui sa tead, pikkus, kui Kareem ütleb, kasutage char valdkonnas, sest sa saada, et efektiivsus on võimalik otsida neist kiiremini Kui otsite andmeid, muul viisil kasutada muutuja. Kahjuks ei ole mul hea vastus kui kaua nimi peaks olema, kuid midagi Nime, ma ütleks varchar on ühine sest ta ei kavatse olema fikseeritud pikkusega kõigile. 20, ma ei tea, 20 tunneb veidi kitsas. Ütleme nii, et 50, 50. See ei ole tegelikult maksab teile, et palju öelda 50 asemel 40, kuid mingil hetkel pead teha otsuse kõne. Väga sageli, otsekoheselt, jaoks [? ajalooliste?] põhjustel, kuigi see on liiga suur, ehk 255, sest mõni aeg tagasi, populaarne andmebaasi süsteemid, nagu MySQL, tasuta avatud lähtekoodiga tööriista et palju ettevõtteid nagu ka Facebook kasutatud, See oli suurim vaikimisi et inimesed lihtsalt läks sellega. Nii ei ole mõistlik, kuid me kasutada veidi rohkem intuitsiooni ja öelda, kindlasti 50, mis on ilmselt natuke liiga suur. Sugu, ma nagu ENUMi, ja nii saame seega loetleda mees või naine, või äkki tõhusamalt m või f või mõne muu sümbolimääratlus, kuid ENUMi tundub hea valik seal. Et asi oleks selge, sugu võiks lihtsalt olla varchar ja saime ainult kõik lepivad kokku toredaid inimesi, alati panna samu väärtusi seal. Mees või naine või tühi-tähi. Aga probleem siis, et me võiks teed vea, kui [kuuldamatu] pakutud varem teises kontekstis. Kui me teeme vea, võiksime saada vale väärtused meie andmebaasis. Mis siis tore andmebaasid nagu Oracle ja MySQL ja teised, on see, et sul on see viimane kihi kaitse, kus Teie DBA, andmebaasi administraator, kes on projekteerimisel seda tabelit, nagu me verbaalselt, võiks panna paika ENUMi et kaitseb, et määrates mehed, naised, ja et keegi muidu ei programmeerija saab kogemata lisada tahes muu väärtusega. Nii et see oleks hea. See on funktsioon. Nii ID, eeldades numbriline ID, see ilmselt peaks olema positiivne täisarv. Ja mõnikord me teeme on võimaluse arutada pikkus. Sa ei tavaliselt täpsustada mitmeid siin siis oleks selle asemel määrata see on int, või suur int, nagu nad tavaliselt nimetatakse. Aga tavaliselt, täisarv oleks, oletame, 4 baiti. Ja kui see on 4 baiti, see, kuidas paljud bitti? Publik: [kuuldamatu] DAVID Humala: 32 bitti. Niisiis, kuidas paljud kasutajad saavad meil Meie andmebaasis, kui nad kõik on ID ja see ID peab olema unikaalne? 32 bitti tähendab, et oleme mustrid ühe, kahe, kolme, nelja, five-- nii, kui palju erinevaid mustreid nulli ja need võivad teil on, kui seal on 32? See on sama asi nagu küsida, mida on kaks kuni 32? See on suur number, et Ma ei ole päris saada õigus, aga ma tean, et see umbes 4 miljardit. Nii et see tähendab, et teie andmebaasi tabeli saab on neli miljard kasutajat ja ongi. Nii et see on huvitav disain mõjuta. Korralik ettevõtete arv on otsustanud, võibolla mitte niivõrd nende kasutajate tabelis, sest on 4 miljardit kasutajad on haruldane probleem. See on omamoodi Facebook stiilis probleem, mitte tüüpiline firma probleem. Aga võib-olla, kui teil on tehingute registrid või mingi andmeid, mis pidevalt saab kirjutatud oma andmebaasi et absoluutselt võiks olla miljardeid ja miljardeid reas ning kasutate täisarv seda, Mis juhtub nii kiiresti kui saad rea number 4 miljardit ja siis proovida sisestada 4000000000. ja 1, nii et rääkida? Ma lihtsustada numbrid natuke. Võite kärpida, ma mõtlen sulle pea hakkama kuidagi. Ja milline arvuti on tavaliselt teevad, mõtle selle peale isegi täna hommikul kui sul on 4-bitine väärtus nagu 1, 1, 1, 1, mis saavutab lihtsalt siduda hommikul koos pärastlõunal, mida see number esindavad binaarne? OK, me oleks lihtsam. Mida see number esindavad binaarne? OK, me oleks lihtsam, mida see esindavad binaarne? Publik: Kolm. DAVID Humala: Kolm, sest meil on need column-- [NAER] Huh! Meil oli need veerg ja kahekaupa kolonnis. Nii oletame, et tõepoolest, meie [? Infield?] ei olnud 32 bitti, aga see oli kaks bitti, saame loe kasutajaga number 0, 1, 2, 3, ja siis me oleme omamoodi tagasi kasutaja 00 uuesti. Nii et see on see, mida tavaliselt juhtub. Kui olete kunagi kuulnud expression-- ilmselt ei ole, aga kui sa have-- täisarv ülevoolu, kus te flipping kõik oma bitti olla suurim võimalik väärtusi, ja siis sa oled out of bits, mis oleks tavaliselt juhtub? Miks ma öelda 00? Noh, see on kolm. Kuidas ma esindan 4? Kuidas esindavad Numbri 4 kahendsüsteemis? Publik: [kuuldamatu] DAVID Humala: One-- jaa, ei ütle 100 per se, sest see on vale värvinguga, kuid 1-0-0. Nii et number 1-0-0 on tõepoolest õige, aga kui sul on ainult kaks bitti, mida sa tõesti teha? Olete valtsitud üle 00. Ja tõepoolest, see, mis juhtub. Tegelikult saab mõelda sellest rohkem lähedalt. Kui te mäletate, mida, 16 aastat tagasi, maailma pidi lõppema, kui Y2K probleemi juhtus. Miks see oli? Noh enamik arvuteid jaoks mõistlikud otsused, talletame numbrid nagu 1975 või 1999. aastal lihtsalt kahe numbriga arvuti mällu. Nii et loomulikult, mis juhtub kui sa saad aastal 2000 lähete seda, või pigem, jah. Nii et sa minna 2000. aastal, kuid kui sa ainult kahe numbriga tundub nagu aastal 00 ja Nii et olete valtsitud üle. Ja see on põhjus, miks paljud süsteemid vaja ajakohastada ajal. Nii et öelda, firmad nagu Facebook eel vastu. Nii et ainus viis käepide olukorda, ausalt öeldes on ennetada seda. Või puhtaim viis Selle olukorra lahendamiseks on ette näha seda, et sa seda ei tee on hiljem muudatusi teha. Nii et selle asemel 8 baiti, tead mis? Ma lähen ettemõtlevat Siit, kuigi see on veidi optimistlik, et me lähed on 4 miljardit ja 1 kasutajad meie kodulehel. Kuid olgem lihtsalt kasutada 8 baiti või 64 bitti, mis üldjuhul nimetatakse suur täisarv, väga tehniline. Ja see tähendab, et sa ei pea Veelgi numbrit oma number. Aga see on oluline disaini otsuse sest kui valid numbri, et on liiga vähe bitti ekspressiivsus siis võiks tegelikult luua viga teie tarkvara. Olgu, nii et olgem pakkima e-posti aadress ja postiaadress. Nii e-maili, kui kaua peaks E-posti aadressi olla? 50. Ma tõesti ei tea, aga see on ilmselt midagi sellist, sest muidu keegi läheb kirjuta teile, kui ta saab liiga pikk, nii 50, lähme koos seda nüüd. Postiaadress, kui kaua peaks see olema? Publik: [kuuldamatu] DAVID Humala: See ei ole lihtsalt zip code, kuigi. Postiaadress kuulsin. Nii et see on nagu 1 Brattle Square, koma, Cambridge Mass., koma 02138. Ja tegelikult, las ma lihtsalt tõmba natuke tööleht siin. See kõik tundub nii jäänud võimalus. Kui meil on 1 Brattle Square, koma, Cambridge MA 02138, Ma tunnen, et me saame teha paremini kui lihtsalt postiaadress. Miks me ei plahvatada seda natuke? Mida ma saan vähemalt? Mida me peaksime selle asemel on Meie read siin, ehk? Publik: [kuuldamatu] DAVID Humala: Jah, nii et olgem nimetame seda street_number, ja alljooneta on vaid ühised viis millel milline näeb ruumi, kuid see ei ole tegelikult. Street ja seejärel city-- kahju? Publik: [kuuldamatu] DAVID Humala: Me võiks teha. Line üks, teine ​​rida. Miks me ei hoiab oleks lihtne nüüd, kuid see on absoluutselt vastuvõetava otsuse. Ja siis riik ja siis lähme olla natuke USA-kesksemaks nüüd ja just seda postiindeks, lihtsalt sellepärast, see saab tekitada huvitav viga või probleem. Nii oletame, et on nüüd meie aadress. See on veidi rohkem tüütu, et meil on kõik need rohkem valdkondades, kuid nüüd saame sildistada asju veidi paremini. Nüüd majanumbrile ilmselt ei tohiks olla paalia, peaks see? Mis see olema peaks? Publik: [kuuldamatu] DAVID Humala: Võib-olla on mitmed nagu täisarv jälle? Suur täisarv? Sa ilmselt ei ela kell 4 miljardit Main Street või midagi hull niimoodi. Nii täisarv on ilmselt hea, kuid on keegi kunagi elas aadressi nagu 1A Brattle Square, või 1 ja 1/2? Need asjad on olemas, kahjuks isegi kui sa ei ole seal elanud, seal on need anomaaliad nagu korter 1A, 1B, 1C. Nii et sa tead, mida me ilmselt ei tohiks minna täisarv, muidu me läheme kaotada osa müük. Char valdkonnas, äkki? Ma ei tea, kui kaua. See on ilmselt ei kavatse olla et pikk, nii 10 või midagi. Keegi ei kirjutada Pikema arvu, võib-olla. Aga jälle, peaksime ilmselt sügavamalt ka seda. Võibolla Google, teha mõned uuringud, aga me läheme meie sisikond nüüd. Tänavad, paalia, 50, ma ei tea. Mingil hetkel, keegi läheb kirjutada see ümbrik, liiga, nii et seal on ilmselt mõned ülemised piirid olemas. City, sama, kindel, et char 50. Riik, saab USA-kesksemaks nüüd. Nii võiks see olla nimekirjas, nii lahke resoluutse otsuse riigi. See võiks olla nagu kaks märki. Seega tegelikult olla, ütlesin: char. Ma ilmselt tähenda varchar lihtsalt mõned tõhususe, kuid me tuleme tagasi selle otsuse praegu. Võiks olla tähemärk pikkus 2 riik. Kui USA on neil, nagu MA, Massachusetts, NY, New York, NJ, New Jersey, ja nii edasi. Nii võiks see olla fikseeritud, et. DC Washington DC. Aga ma arvan, Olivier, siis kavandatud teistsugust lähenemist. Publik: [kuuldamatu] DAVID Humala: Jah, nii see on natuke tüütu kirjuta, kuid ENUMi võib mõttekam, sest sel viisil, vähemalt USAs, siis võiks loetleda, kui tüütult, kuid sa seda ainult üks kord oma andmebaasi ja mitte kunagi enam pead mõtlema see kõik 50 kahekohaliste koodide. Nii mulle meeldib ENUMi. Jääme koos, et seal, sest see omamoodi jõustab jõulisem. Ja siis zip code? Ma arvan, Andrew oli mõte, et Publik: [kuuldamatu] DAVID Humala: Jah, viis või üheksa. Ütleme nii hoida lihtsa. Tee viis nüüd. Aga äkki ma võiks lihtsalt teha täisarv, eks? Suutsin, kuid sa tead, mida ma teinud see viga kord, mõnes mõttes. Aastaid tagasi oli mul rännet Microsoft Outlook Gmaili, ja Outlook on viis eksportivat kõik oma kontaktid Exceli failina, CSV faili, komaga eraldatud väärtused faili. Ja ma tegin vea, ma arvan, topelt klikkides, kui ma alla eksporti, et veendumaks, et see nägi välja nagu ma ootasin. Ilmselt sattusin Salvesta või lasta auto-save kick või midagi. Sest kui ma siis imporditud see Gmail, see kõik töötas. Aga aastaid, et sellel päeval, ja Ma tegin seda viis, 10 aastat tagasi, Ma olen ikka leida sõpru, kes on aadressid, mis näeb välja selline. Miks? Publik: [kuuldamatu] DAVID Humala: Kulus 0, noh, pigem on võttis kogu sihtnumbri numbrile ja seega see juhtiv 0, mis tähendab, see ei ole mingit tähendust. Ja nii 2138 tundub olevat minu postiindeks. Ja see on ausalt öeldes tüütu Excel funktsioon, mille Arvan vaikimisi isegi siis, kui see on mõeldud ainult olla tekst, Microsoft Excel otsustab, andke mulle abiks olla, ja oh, ma näen ainult numbrid. Olgem ravida neid numbreid. Ja see kärbib nullid. Ma vannun, iga paari kuud ma leida aadressi, ja sealt mingi OCD, ma lähen tagasi ja lisada 0, kuigi ma ei ole kunagi Kirjuta inimesed tähti ega midagi. Aga ma olen ikka leida jäänuseid seda. Nii et see on öelda, on see hea mõte? OK, ei, sest keegi Massachusetts, selles valdkonnas, läheb on o sundinud neid. Nii lähme koos nagu char ilmselt viis. Ja siin, mõistame me võiks kasutada ENUMi ja me võiks loetleda 10000 võimalik postiindeksid, kuid mis tunne see on ilmselt ületamisel rida, nagu kasu. Kui teil on sisend, mis palju andmeid oma andmebaasi kaitseks midagi. Nii char aru, siis võiks kirjutada H-E-L-L-O oma postiindeks, mis ei ole muidugi numbriline. Nii ei ole nii, et Tüüpilise andmebaas, täpsustada ainult numbriline ja ainult viis märki, nii et me lähed on mida teha, et koodi. Me teeme, et PHP või Java või mis iganes keeles me oleme kasutades serverisse jõustada sellist piirangut. Uuh! Olgu, nii küsimusi veel? Teeme teise disaini otsuse. Selgub, et teil Samuti saad valida, projekteerimisel SQL andmebaasi või Tüüpiline relatsiooniline database-- kus uuesti, relatsiooniline lihtsalt tähendab ridu ja veerge, et kuidas teil korraldada oma data-- ja mõistavad, et mida see tähendab,, Olen olnud eksitav et ma olen drawing-- seda on see, mida nimetatakse skeemi jaoks andmebaasi tabelisse. See on nagu kirjeldused table-- aga kui on aeg tegelikult andmete salvestamiseks, ja me teeme seda lihtsalt näide. Ma lähen avada Excel, sest Excel annab mulle ridu ja veerge. Ja see on täpselt see, mida Oracle ja MySQL ja muud vahendid annab mulle. Nii et ma olen lihtsalt kavatse kasutada aruteluks pärast. Lubage mul minna ja avada esindaja dokument siin suumida natuke. Nii näiteks meie päised on nüüd eesnimi, perekonnanimi, sugu, ID e-posti, majanumber, tänav, whoops. Street, linn, riik, vaid umbes sobib ekraanil. Nii tähendab see, et kui kasutaja kõigepealt registreerib minu kodulehel, see saab olema midagi sellist David, Humala, m, oletame, et 1, malan@harvard.edu, tänaval number olla nagu 1 Brattle Square, Cambridge, MA, 02138, ja siis nii edasi. Nii et kui ma ütlen, et relatsioonandmebaasile või SQL andmebaas on ridade ja veergude Ma mõtlen seda. See tegelikud andmed on salvestatud ridade ja veergudena. See on lihtsalt kokkusattumus, et me ei räägi, ja ma just joonistus see läbi ridade ja veergude. See on lihtsalt skeemi, üldine määratlus. Nii need väljad siin või samaväärselt, seal, mis on valdkonnad, mis te arvate Ma olen tõenäoliselt otsida, kui ma olen kasutaja või kui ma olen andmebaasi administraator? Nagu, mida väljad olen ma tegelikult läheb otsida? Publik: [kuuldamatu] DAVID Humala: nimi, jah nii Mulle meeldib, selle-- jaa, e-olla päris tavalised. Vabandame, sa ütlesid nime. Nii maybe-- ja jälle, et me oleme Selline räägi abstraktselt. Ma ei tea, miks Sa otsima nimi, kuid mis tundub mõistlik, kui mida te otsite kasutaja. Võib-olla öeldakse, kindel, ID. Ja see on libe kalle, sest suutsin leiutama stsenaarium, kus võibolla minu ülemus kutsus mind, kui palju mehi on meil meie leheküljel? Kui palju naisi on meil meie leheküljel? Ja nii sel hetkel, võite otsi soo välja ka ja ei midagi muud. Nii et kompromiss siin. Jällegi, ei ole õige vastus, kuid seal on funktsioon enamikus SQL andmebaasid tuntakse indekseerimine, kusjuures sa, disainer, siis andmebaasi administraator, saada eelnevalt otsustada, mis põldude andmebaas peaks optimeerida otsijate jaoks. Sa võid väga naiivselt öelda, optimeerida see, optimeerida, et optimeerida seda, optimeerida seda ja seda, ja andmebaas teha mõned maagiline asi all hood, ja midagi nii et järgmine kord, kui otsida ühelgi neist väljad see tegelikult olla kiirem. See on võimalik. See ei saa tühistada ise välja. Aga seal peab olema tasutud hind. Kui te naiivselt, või entusiastlikult ütleme, indeks kõik need väljad, niiöelda, need kõik tõhusalt otsida, mis hinnaga sa ilmselt maksab? Publik: [kuuldamatu] DAVID Humala: Performance. Mida sa silmas pead? Noh jõudlust, vähemalt kontekstis ma arutada, on nüüd parem. See on mõiste indekseerimist. Ta teeb otsinguid kiiremini. Nii lüheneb, kui nii võib öelda. Publik: [kuuldamatu] DAVID Humala: Space. Nii jälle, need on ühine kaubandus. Ma ei kiirendada oma otsinguid, kuid see on läheb teile maksma rohkem baiti ruumi. Miks? Noh, vaikimisi, kui meil ei ole ükski need punased tähed, ükski neist indeksid, kui ma räägin, kuidas sa otsida Nime andmebaasis? Nii saab juhtida meie tähelepanu sellele näitele. Kui meil on David ja Scully ja Kareem ja ARWA ja teised need read, näiteks. Nii teeme just nii. Scully on siin ja siis meil Kareem ja ARWA, ja kõigile teistele, kui te ei on määratletud indeksit, nii et rääkida, parim, mida saate teha on lineaarne otsing. Kui otsite ARWA, me ei ole saab olema võimeline hüppama õigus tema kiiresti. Me läheme alustada ülemise ja minna kõik viis põhja, ei ole erinevalt meie algne Mike Smith näiteks. Kui aga ma öelda, hei, andmebaasi, indeks eesnimi valdkonnas, siis see läheb midagi Kasvataja ja toetada midagi nagu Kahendotsingupuu. See on ilmselt ei Kahendotsingupuu per se. Andmebaasid kalduvad kasutama teise andmestruktuur nimetatakse b-puud, ei tohi segi ajada kahendpuuks, et lihtsalt teha seda kiiremini otsida midagi logaritmiline looduses. Aga auto hind üles ehitada, et funktsioon, mis andmestruktuur mälu, on rohkem baiti. Nii et see võib võtta mõned megabaiti, mõned gigabaiti, kes teab? See sõltub andmed. Nii mingil hetkel, tuleb teil otsustada, see ilmselt ei ühine puhul. Mis on ühist tegelikku juhtudel, kui tõesti oleks valida, milline võiks oma lemmik väljad on? E-post. Ja mulle meeldib e-posti, sest e-maili, teoreetiliselt peaks olema unikaalne. Ja nii tavaliselt, kui sa tead ette, et üks sinu väljad on või saab olema unikaalne, et kipub olema hea valdkonnas otsi, sest nii, kui otsite midagi, sa lähed, et saada tagasi üks või null vastuseid ja siis ongi valmis. Sa ei pea hoidma otsin veel teised. Ja nii sel juhul siin, e-posti nii kaua, kui te ei saa registreerida kaks korda sama e-posti, on hea. ID definitsiooni järgi on infotehnoloogia maailmas, kui sa räägi ID, mis oli parem olla unikaalne. See on omamoodi värvinguga ID või tunnust. Ja ülejäänud neist võiks olla, nimetame neid tore rikaste, kuid tegelikult ei vaja. Ja nii andmebaasi, saab määrata indeksid, kuid võite olla veelgi täpsem. Sa ei saa öelda, hei, andmebaasi, veenduge, et iga ID tabelis on ainulaadne. Ärge isegi lasta programmeerija kogemata kasutusele eksemplaris posti või dubleerida ID number. Nii palju nagu nimekirjadest kaitsta meid samamoodi, siis võib olla need madalama taseme kaitsemehhanisme. Ja nii andmebaasi disain, in Mõnes mõttes on selline tore, kuna sa seda kaitsele. Sa justkui eeldada, et sa tööd koos jube, jube programmeerijad ja sa tahad panna nii palju kaitsemehhanisme kui võimalik, et kaitsta oma andmeid, kuid samal ajal soovite et aidata neil täita paremini valides, mis valdkondades, et optimeerida. Aga sa ei saa tingimata seda teha vaakum, nagu me sellist siin. Sa pead teadma, mida on nende ühiste juhtudel on. Kui arendajad rakendades aadressiraamatu võite väga hästi tahan olla võimeline otsida peaaegu igas valdkonnas, lihtsalt looduse taotluse. Ehk sa kulutad et lisaruumi. Parem, küsimusi? Jah. Publik: [kuuldamatu] DAVID Humala: Ei Publik: [kuuldamatu] DAVID Humala: OK. Publik: [kuuldamatu] DAVID Humala: Oh, nii et me räägime nii nüüd, et on täiesti keeles agnostik. Nii et me räägime praegu umbes relatsioonandmebaasides üldisemalt või SQL andmebaasid üldisemalt. Publik: [kuuldamatu] DAVID Humala: parem sõna kasutada on, võib kasutada mis tahes keeles. Nii et ma ei kirjuta JavaScripti koodi, C kood, C ++ koodi, Java koodi, Ruby koodi mis kõik rääkida andmebaasi ja päringuid. Tegelikult see ei ole halb rännata näide päring. Ja jälle, me ei lähe Java või C ++ või mistahes sellise enam, kuid SQL keel, mida ma hoida viidates, Structured Query Language, See iseenesest on programmeerimiskeel, kuid see on nii mõeldud kasutada, no üllatus, struktureeritud päringu päringuid. Autor et ma mõtlen seda. See, kuidas sa valida andmeid alates MySQL andmebaasi on sul sõna otseses mõttes kirjutada oma programmi midagi valige tähe kasutajad. Eeldan, et see tabel, Edaspidi nimetatakse kasutajad. Ma võiks seda kõike tahame, kuid sellist mõtet. Ja nii vali on väga ühise verb, kui te tahet, SQL, mis sõna otseses mõttes ei tee seda. Mis te arvate, star antud kontekstis tähendab? Publik: [kuuldamatu] DAVID Humala: Vabandust? Publik: [kuuldamatu] DAVID Humala: Pole nõutud, et see on kaasavamaks kui tegelikult. See on looduses kaardi iseloomu. Star peaaegu alati midagi tähendab, nii et see tähendab, antud juhul vali kõik andmebaasist. Nii et kui ma ütlen seda, ma mõtlen anna mulle tagasi iga veerg minu laua nimetatakse kasutajad. Nii et anna mulle tulemuse hulka, nagu seda nimetatakse. Teisisõnu, mulle koopia tabelisse, on see, mida ma saan vähemalt. Aga kui ma ütlesin valige tähe kasutajad kus ID võrdub 1, kui suur peaks minu tulemus komplekt on siis? Või samaväärselt, kui palju ridades Ma antakse tagasi andmebaasist? Tõenäoliselt vaid üks, kui mul on tõepoolest käsitletakse ID kui kordumatu tunnus, ja kui David on see unikaalne ID, ma peaks tagasi saada ainult üks rida mis sisaldab kõiki Davidi teavet. Kui ma ütlesin seda, kui ID võrdub 99, ma saan tagasi, Selles kontekstis null ridades vähemalt hetkel. Samas, kui ma tõesti ei hooli umbes kõik, et teave, Ma võiks öelda, et kui ei David elada? Vali postiindeksi kasutajate, kus ID on 1. See valib mulle ainult Davidi zip koodi ja mitte kogu selle rea. Miks võiks ma seda selle asemel, star päringu looduses kaardi? Publik: [kuuldamatu] DAVID Humala: Jah, ma võin ainult seda vajavad. Nii jõudlus on jälle siin vastus. Miks küsida rohkem informatsiooni, kui teil on vaja, sest isegi kui see on kõik õige koos, sul on veel kopeerida, et andmed, tundub, andmebaasist oma programmi kuidagi, ja see on lihtsalt rumal, kui sa vaja ainult viit nende numbrit, mitte kogu rida. Niisiis, kuidas ma sisestada kasutaja? Oletame, et kasutaja peab lihtsalt Registreeritud esmakordselt. Süntaks tavaliselt näeb välja selline. Lisada kasutajaid ja siis ütleks väärtused, ja siis me ütleks väärtused nagu, ütleme, Lauren Scully, Meie Harrastusvideograaf siin. Ja järgmine valdkonnas on sugu. Nii me öelda, tsiteerida, lõppeb "F", siis on meil ID ja ma lähen say-- olgem teeselda, et ta on tegelikult siin, nii me kerida lugu. Nii 2 on tema ID. Ja siis järgmisele väljale Siin on tema e-mail. Nii et see saab olema nagu Lauren Scully ja nii edasi, ja me lihtsalt dot dot dot eemale siin. Nüüd siis natuke tüütu, kuid sisestada päringu lõppkokkuvõttes välja nägema. Kui ma tahan vabaneda Scully, uh-oh, lähme arvelt maha võtta teda, ta kustutab oma konto kustutada kasutajate kus ID võrdub 2, vabaneda Scully. Või ma ei saa öelda uuendus kasutajad seatud, oletame, milline võiks me muuta? Oletame, et ta liigub. Määra zip võrdub 021-- nope, see on tema praegune zip. 90210. Ainuke sihtnumber Ma tean, et maailmas. Nii, mis muudaks tema zip code-- tegelikult, mis ei muudaks tema postiindeks. Mida ma teen? Kuigi süntaks on ilmselt uus. Publik: [kuuldamatu] DAVID Humala: Jah, ma kolisin igaühele Beverly Hills, California. Nii et ma tegelikult peaks öelda, kus ID võrdub 2. Ja nii edasi. Nii SQL on kõike neid liiki juhiseid. Vali sisestada, kustutada, uuendada Nende predikaadid lõpus Nende kus punkte, nii rääkida. Ja seal on palju rohkem võite teha, kuid see on tõesti lihtsalt taandub lihtsalt, kui arcanely, väljendades mida soovite andmebaasi teha. Ja siis andmebaasi nuputada, kui Sisestades Lauren Scully sisse andmebaasi, kuhu panna oma mälu nii et me saame väga kiiresti saada tema põhineb tema e-posti aadress või põhineb tema ID number vms. Jah, Dan. Publik: [kuuldamatu] DAVID Humala: Tõesti hea küsimus. Kas need skriptid muutuda Microsoft Access Oracle MySQL PostgreSQL? Lühike vastus on, see sõltub. Teoreetiliselt on väga ühine oluline alagrupis SQL mis on jagatud kõigi Nende rakendamist. Kuid erinevate tootjate on lisafunktsioonid oma andmebaasidele teha teatud asju väljuvad need omadused, mis võivad tegelikult murda. Nii, kuidas arendajad maandada see, on see, et mitte kirjutada toores SQL koodi, nagu ma olen kirjalikult siin nad kasutavad selle asemel raamatukogu ühine raamatukogu, mis iseenesest on omamoodi kõrgema taseme ja teesid ära millist toodet te kasutate. Ja see annab teile funktsioonid ja protseduurid helistada, et sa kunagi tegelikult kirjutada toores SQL. Teoorias siis saab muuta tooteid Oracle Microsoft või vastupidi või midagi teine, ja sa sõna otseses mõttes muuta midagi oma koodi. Reaalsus on aga, mõnikord loobuma funktsioone tõttu. Te olete valinud toote, sest see ju need lisandväärtusega omadused, ja sa oled lihtsalt nüüd ei kasutades neid teadlikult. Ja Anecdotally enamik ettevõtteid kipuvad kunagi eemalduda oma andmebaasi. Niisiis, kui see on tore on funktsioon, reaalsus on, kui sa renoveerimisel oma andmebaasi, et sa oled ilmselt tegemist kobarad muud muutused Igatahes, et sa ei pruugi vaja ette näha, et. Nii et see on vaieldamatult üle-inseneri probleem, kuid tegelikult sõltub kontekstist. Aga teoreetiliselt SQL jagatakse nendest eri tooteid. Tõesti head küsimused. Jah. Publik: [kuuldamatu] DAVID Humala: Jah, nii sa ei mõtle andmebaasis on lihtsalt server, lõpus päeval ja sees et server on terve hunnik tabelid, read ja veerud. Ja kui saadate päringu niimoodi oma programmi oma veebilehel, kirjutatud Java, Ruby, Python, ükskõik, server võtab see käsk ja tõlgendades seda sõna otseses mõttes samamoodi Arutasime varem tõlgendada keeles ja siis täita mõned tegevus null või mitu rida null või enam tabelites. Publik: [kuuldamatu] DAVID Humala: Täpselt, täpselt. Nii pseudokoodi midagi niimoodi võib olla see. Oma PHP faili või oma Python faili või Java-fail, siis oleks pseudokoodi koodi või Scratch-like blokeerib nii, kui kasutaja külastab acme.com/register~~V esimest korda, Seejärel lisada kasutajaid ja nii edasi. Ja me tõlkida see, et konkreetsemad koodi lõpus. Aga tõesti, me kõik oleme ehituskivid siin kuigi me vahele mõned rakendamise sammud. Nii et lubage mul norima, mida me Imeliselt tegi hetk tagasi. Te olete loonud päris täielik tabel kasutajad. Tõsi, me võiks rakendada seda mitu erinevat võimalust, aga sa tegelikult viinud meid alla path-- ja ma ütlen teile, aga see on ilmselt minu fault-- on üsna ebaefektiivne andmebaasi rakendamine. See ei ole normaliseerunud. Ja normaliseeritud ma mõtlen seal saab olema, Aja jooksul oluliselt koondamise ja seetõttu ebaefektiivsus, see on raiskamine ruumi. Tuginedes ainult seda, mida sa näed siin, saab sa kujutlevad, kus see raiskamine ruumi läheb tulema, aja jooksul, rohkem ja rohkem kasutajaid registreerida oma koduleheküljel? Mis andmed võivad muutuda ülearuseks? Publik: [kuuldamatu] DAVID Humala: Miks sa mõtled seda? Publik: [kuuldamatu] DAVID Humala: Jah. Ja Oletame jaoks täna, et see on tõsi. Selgub, ja me oleme õppinud seda raske tee, et see pole tõsi. Kuidagi mitu linnad, millegipärast sama postiindeks, mis lõhub see suurepärane intuitsioon. Aga oletame, et on tõsi, sest see on peaaegu alati tõsi. Nii oletame, et postiindeksi on alati seotud sama linna ja riik, mis on selline on mõistlik eeldada, aga vale, selgub. Aga mõistlik eeldada tänapäeva eesmärkidel. Siis oletame, et ma elan Cambridge, MA sõnul selle kasutaja lauda ja oletame, et Lauren Scully elab Cambridge, MA, ja oletame, et Kareem elab Cambridge, MA, ja ARWA elab Cambridge, MA, meile kõigile 02138. Miks me mäleta Cambridge, MA, 02138 kõigi nelja juures? Mida peaks piisama, et mäletad? Publik: [kuuldamatu] DAVID Humala: Just sihtnumber. Lihtsalt, et 02138 on olemas, sest sa tead, mida me võiksime teha? Me võiks saada veidi fancy siin ja siin, määratleda teises tabelis kus see saab olla nimi see saab olema tüüpi, see saab olema pikkus ja edaspidi, ma olen läheb nimetame seda minu linnad tabelis. Seda nimetatakse, on Muidugi, minu kasutajate tabelis. Ja mis ma peaksin siia minu linnad tabelis, kas sa arvad? Publik: [kuuldamatu] DAVID Humala: Jah. Nii zip ning riigi ja linna. Ja nii tüübist siin, me ütleme see saab olema char 5 jälle, teema arutelus varem. Sellest saab ENUMi, nagu ehk Enne ja linna saab varchar 50. Ja nii nüüd, mida ma saan kustutada sellest tabelist kõrvaldada, et ebaefektiivsus? Publik: [kuuldamatu] DAVID Humala: Nice. Riigi ja linna minema, nii et ma olen nüüd kõrvaldada potentsiaalne ebaefektiivsus jaoks liigselt mäleta, Cambridge, MA, Cambridge, MA, Cambridge, MA, Cambridge, MA, mis loodetavasti on muutu kunagi. Ja isegi kui see juhtub, on see minorly tüütu, nüüd et pean muutma seda mitu rida, samas siin, ma võiks lihtsalt muuta see ühes kohas. Nüüd, mis on kompromiss, ehk? See oli super mugav. Olid kõik minu andmed kenasti kokku. Aga mis on selgelt ka praegu? Publik: [kuuldamatu] DAVID Humala: Täpselt, ja ma olen rõõmus, et sa kasutada sõna liituda, sest see on tegelikult märksõna, maailma relatsioonandmebaasides SQL, see on tegelik sõna, mida Võib kirjutada või vähemalt edasi. Ja tegelikult, mida me nüüd peame tegema valida David täielikku teavet midagi valige täht kasutajate liituda linnad, nüüd-- ja nüüd Ma lähen lihtsalt liikuda teise liini nii et see fits-- users.zip võrdub cities.zip, kus users.ID võrdub 1. Mis siis toimub? See on kole vaadata, kuid saate liiki lugeda vasakult paremale, ülevalt alla. Vali täht kasutajad on sama nagu enne, kuid see ei ole kasutajate iseenesest. See on kasutajad liituda linnades. Mida ma liitumist nende kahe tabeleid? Noh, ilmselt kasutajate tabelid zip valdkonnas, ja selle aja jooksul on lihtsalt eriline süntaks väljendada, et idee, ja see on linnad tabelid zip valdkonnas. Ma tahan, et need kaks on võrdsed, aga ma tahan lõpuks valida ainult need read, kus ID-kasutajad tabelis võrdub 1, mis juhtus olema minu. Ja just olema selge, et programmeerija, tavaliselt siis, kui hardcode midagi arvu 1, sest muidu veebilehel ainult toetab David või Kõige esimene kasutaja, siis oleks selle asemel teha midagi ID, kus See kujutab endast muutuja, midagi, mis võib aja jooksul muutuda, mis on sarnane vaimus, mida ma ütlesin kus selliseid kohatäitjaid. Aga nüüd me lihtsalt hardcode seda 1. Ja mis see tähendab? Noh, kena viis visualiseerida see on et kui see käes on kasutajate tabelis, ja see käsi on lukud laud, me oleme omamoodi finding-- ja näpunäiteid mu sõrmed on zip siin, ja näpunäiteid oma sõrmi siin on zip, sa oled Selline blokeeringuga see nii et saad tagasi tulemuseks originaal tabel, mida tõeliselt liitumisel kaks tabelit ühise valdkonnas. Ja see ei pea olema zip. See võib olla kõige midagi muud, kuid zip on tore, sest üks, see on lühike, kaks, see on alati sama pikk, seega ei tõeline efektiivsus, mida Olivier pakutud siin Faktooringuga välja zip ja [Kuuldamatu] ettepaneku, et me vabaneda linna ja riigid. Nii et see on protsess tuntakse normaliseerumist. Kõik küsimused on? Noh lubage mul rõhutada, See on selline värk, kuigi see on üsna madala, Selle arutelu, et sa arvad sa omamoodi saada kadunud umbrohu See on märk rohkelt võimaluse arendajatel olla halb. Ja tegelikult, isegi kui me, et Kursused Olen õpetanud, kui me oleme olnud, Näiteks kogenematu bakalaureuse programmeerijad ehitada veebilehed, esimesel pilgul, veebilehed võiks vaadata kohutav. Ja nad on kõik funktsionaalsuse palusime, arendajad tegid head tööd. Aga nad ei pruugi teada, piisavalt informatsiooni andmebaasi disain või nad ei usu, et raske piisavalt informatsiooni tüüpi andmeid ja tüüpi kasutajatele kodulehel pidi olema, ja leiame, siis kuus kuud hiljem, pärast olen lõpetanud või liikunud, et kurat, meie kodulehel on tõesti, tõesti aeglane. Ja ma ei räägi isegi võttes miljonid või tuhandeid kasutajaid. Ma mõtlen paarsada kasutajad ülikoolilinnakus kellest kõik meeldib, näiteks ostke kursustel Samal ajal on nad kasutades, et muidugi kataloogi taotluse mainisin ja asi muutub väga aeglane, kuna puudusid indeksid. Puudusid punane tähte, nii et rääkida, või me ei pruugi tegureid ühised andmeid saaksin säästa ruumi. Ja nii, kui kontrollil arendaja või andmebaasi isik vms liiki küsimusi läbi mõelda isegi, kui vaatame kellegi koodi öelda, ei pruugi otsida läbi kõik oma koodi, kuid öelda, Vaatame läbi andmebaasi tabeleid. Mida te hoidmiseks? Ja siis öelda, noh, oota minutis, miks sa kasutad täisarv? Mis siis, kui meil on 4 miljardit ja 1 neist read? Ja selliseid küsimused on võimalus et selline tagurdamise ja tajuksid, kus kui sa ei ole mugav teha see, et keegi rohkem tehnilisi neid küsimusi, kas või mitte inimene tõesti teab oma kraami. Ja see on selline värk ka, et inimesed Internetis kes on iseõppinud, võibolla õppida harvem, sest sa ei pruugi kohanud seda nii palju, sest saad andmebaasi ja töötab, aga kui olete lugenud üles õpetused või olnud rääkis andmebaasi normaliseerimine ja indekseerimine ja tulemuslikkust, need on asju mis hakkavad haiget teha. Ja siis võiks arvata, või halb insener Võib öelda, oh, noh, me parem palk Suurema andmebaasi või kiirem andmebaas või lihtsalt visata raha selles, vertikaalselt skaalal, mitte tingimata nii. Kui te lähete in-- ja võid minna pärast fact-- ja lisada indeksid, ja see võib võtta paar tundi andmebaasi üles ehitada, et uute andmete struktuur, mis ma vihjas varem saate siiski määrata see tagantjärele, et see on koht, kus sa alustada eristada hea disainerid halb disainerid, mitte ainult esteetiliselt, kuid tulemuslikkuse tark ka. Kas küsimusi on? Ei? Nii NoSQL, mis oli teist tüüpi Andmebaasi mida ma vihjas varem sa ei pea ridu ja veerge. Selle asemel, siis oleks midagi mis näeb välja natuke rohkem niimoodi. Ma lähen kasutada ühist süntaks. Looksulg juhtub kasutatakse siin üsna palju. Sul võib olla midagi nagu esimene nimi on David, siis võib-olla viimane nimi on Humala, hinnapakkumisi, sa võisid ID on-- vabandage, whoops-- ID on 1, email on malan@harvard.edu, ja ma ei viitsinud kirjutada välja puhata ja siis mõned muud asjad. Teisisõnu, see on tekstilise esindatuse mida me tavaliselt nimetame Objekti arvutiprogramm. Ja objekt on üldiselt lihtsalt kogumise põhiväärtus paari. Nii jälle see teemaks. Nägime põhiväärtus paari HTML, nägime põhiväärtus paari nüüd kontekstis andmebaasid, ning me nägi põhiväärtus paari kontekstis ja ma arvan, et keel juba täna. Hoiab tulemas. Ja tõepoolest, see on tõesti milliseid andmeid taandub, andmed ja metaandmed või väärtused ja võtmed võrra. Nii mitte-relatsiooniline andmebaas, midagi põhineb esemete kohta, kus sa lihtsalt salk kõik kokku ja pane see mällu, oleks üldiselt pildil on, või mõelnud, kui see. Ja ma jätan selle nüüd kui omamoodi alternatiivset lähenemist. Ja üks ei pruugi parem kui teised. Tegelikult väga moes nendel päevadel on andmebaasi süsteemid nagu MongoDB ja Redis ja mõned muud sellised vahendid, vabalt kättesaadavad, kuid nad on üha en vogue. Osaliselt seetõttu, et nad pakuvad täiendavat funktsioonid üle need tabelina lähenemisviise, vaid ka sellepärast, et nad on veidi lihtsam kasutada, sest sa ei pea mõtlema nii raske umbes palju neid disaini otsuseid. Nii plussid ja miinused. Nii mõistame, on võimalusi kaugemale sellest, mis me lihtsalt aega kulutada. Nii teeme seda. Olgem üleminek veidi nüüd tagasi veebi programmeerimine, nii et meil selline sõlmida täna midagi see on natuke käed, täites Mõnes lüngad eile. Lubage mul minna seda esimesena. Nii meenutada, et eile meil oli kanooniline HTML lehekülgi, mis oli algselt ainult HTML ja seejärel alles seejärel oli CSS, Kaskaadlaadistik. See on uus silt, et me ei vaata eile, või rääkida, Niinimetatud script tag. Selgub saab tegelikult kinnistada keeles nimetatakse JavaScript oma veebi lehele ja teha oma veebi lehekülgede midagi teha. Mida ma öelda, et? Noh, lubage mul minna ja lihtsalt laenata see kood hetkeks. Ma lähen minema Cloud9, ei ole vaja sinna minna ise veel, ja ma lähen nimetame seda alert.HTML. Ma lähen kleepida minu pilt siin. Ja just, et selgitada, mida ma olen teinud, las mul läheb sellele aadressile ja minna hoiatada, ja sa näed Hello World. Aga see on selline underwhelming. Ma tahan teha midagi veidi erinev. Nii et ma lähen tegelikult seda teha. Ma lähen siin e, ja vahel mu skript silte öelda alert ( "Hello, world"); nii teate see on natuke lohakas, kuid mul HTML, mille sees on keeles nimetatakse JavaScript, ja see on, mida nimetatakse funktsioon kõne või protseduuri kõne. See on verb, sõna otseses mõttes, sel juhul ja ma viitamine koodi funktsionaalsus et keegi kirjutas. Nii et funktsionaalsus on märguanne, et lähme see leht nüüd ja klõpsa Laadi uuesti ja nüüd sa vaata natuke interaktiivsust. See on selline vana kooli ja kole. Selline meenutaks hüpikaknad ehk Läinud kuid see ei tee midagi veidi rohkem programmiline. Nii üle, et teeme midagi huvitavat. Lubage mul minna siia ja vabaneda sellest. Ja ma lähen edasi minna ja luua vormi, nagu me tegime eile. Tegelikult, sa tead, mida? Ma lähen minema google.html, mida me algas eile, mis tundus see, mille kaudu me otsinud kass Aga märgata seal on selline viga praeguse versiooni. See töötab kassid, kuid arvan, et Ma ei tee koostööd ja writing midagi, ja ma lihtsalt käsku esitada. See on selline imelik käitumine. Tegi mulle tõeline Google, ei andnud mulle veateade. Sooviksin öelda kasutaja sa pead andma meile väärtust. Niisiis, kuidas võiks seda teha? Noh lase mul minna tagasi Cloud9 ja lase mul minna peale minu leheküljel lisada skripti tag niimoodi, kus Ma lähen kirjutada mõned JavaScript koodi. Ja ma lähen tegema järgmist. Kui (document.getelementByID-- ja tagasikutsumine et me rääkisime, et varem et funktsioon. Mis ID ma tahan saada? Ma tahan saada q, ja ma lähen ütleme võrdub midagi, nagu see-- tegelikult las ma kasutada jutumärkide lihtsalt consistency-- võrdub midagi, Seejärel alert ( "Palun sisesta päring") siin. Nii et mul on, mida tundub olevat midagi seisukorras. Me oleme näinud seda üldist ideed nullist. See on nagu üks neist puzzle tükki, mis nägi välja selline. Ja mida ma öelda? Noh, siin, märkate ma olen kavatseb teha järgmist. Ma annan selle vormi valdkonnas mitte ainult nime q, mis on see, mida saab edastada Google'ile, kuid ma olen annan selle kohalik tunnus nimetatakse ka q. Aga ma võiks nimetada seda kõike ma tahad, ma lihtsalt hoida lihtsa ja ka seda nimetada q, just lihtsus. Ja nüüd ma lähen tegema midagi veidi. Vormil väljad siin, ma lähen lisada mida nimetatakse sündmuse käitleja. On esitada, ma tahan helistada funktsioon nimega valideerima. See ei ole veel seda Sõna või see verb valideerida, sest mida ma lähen tegema siin nüüd on lisada mõned koodi. Ma ütlen funktsiooni valideerima. Ma lähen treppimistasemel seda ja lisada veel lokkis traksidega siin ja teine ​​siin. Mõtle, mida see nüüd teeme. Mul on now-- mõelda sellele, kui loodud minu enda pusletükk, mis varem ei olnud olemas, ja ma olen seda nimetanud puzzle panema Kinnita pusletükk. Selle eesmärk elus on täita nelja rida koodi sees on. Kui document.getElementById nii kontseptuaalselt et läheb minema element, HTML element, mille unikaalne Idee on lihtsalt q ja seejärel kuigi süntaks tundub veidi imelik, mis võrdub võrdub lihtsalt tähendab võrdsete. Nii et see tähendab, kui elemendi kordumatu tunnus q, siis saanud, ei ole väärtust, vaid see võrdub tsitaat lõppeb, midagi seal, siis mida ma tahan teha? Ma tahan karjuda kasutaja. Ja me ei hakka väga täpselt siin. Ma lähen tagasi vale. See on viga. Else, ma lähen tagasi true. Nii kas see töötas või ta ei ole. Vale või õige. Ja nüüd, kui ma ei teinud vigu, las ma salvestada ja uuesti laadida. Ja las ma kontrollige, et Ma ei tegelikult teha kirjavigu nii et ma ei häbistada ennast. Vaatame, kas see toimib. Nüüd ma lähen kirjuta kassid. See töötab, või pool tööd, vähemalt. Nüüd lubage mul seda uuesti laadida ja nüüd lase mul proovida, esitades ilma kirjutades anything-- kurat, see lagunes. Üks hetk. Lubage mul avada konsool [Kuuldamatu] sisse laadige leht. Las ma proovin seda uuesti. Oh, kurat võtaks. Ma unustasin. Ma teinud kirjaviga. Mäletan, mis see on. .value. Ma mõtlesin, et öelda, kui väärtus Elemendi kelle ID on q võrdub, et siis kisa kasutaja. Nüüd lubage mul hoidke mu hinge uuesti. Siin me läheme. Seal me läheme. Palun kirjutage päring. Nii, et see ei lase mind läbi. Ma võin olla selline mänguline seda, ja selle asemel, et kontrollimine ei ole väärtust, Ma ei saa öelda midagi sellist, Ei enam otsivad kassid, ja nüüd saame lihtsalt rohkem vallatult lasta kasutaja Otsi koeri, kui ta tahab, või kui ma lähen siin ja otsida kassid, nüüd ma ei saa. Mis siis Buffee siin? Nii et üks, oleme kasutusele võetud meie maailma HTML ja CSS, programmide funktsionaalsust. Ma ei saa tegelikult nüüd teha otsuseid koodi. Varem suutsin ma ei märgi üles teksti sisu või graafilist sisu ja öelda seda, mida otsida näeb ja kus näidata. Nüüd ma ei saa tegelikult küsida küsimused veebilehe ja teha otsuseid, mis põhinevad seda ja palub kasutajal kui mul on vaja kisa teda. Nii proovime midagi meie endi seda. Lase käia, las ma avada järgmisele slaidile siin, ja lihtsalt meelde üks asi. Just nagu CSS, saame teguri välja Meie JavaScripti koodi eraldi faili, võite teha sama asja JavaScript nagu CSS. Ja te kasutate, et kasutades allikat atribuut script tag. Aga me ei keeruliseks asju nüüd. Selle asemel, kui sa saaksid mine ei see leht, aga-- lase mul liikuda selle ümber order-- minna, kui sa saaksid seda lehekülge siin. See URL siin. See on tänapäeva slaidid. Sul võib olla uuesti laadida, sest Olen lisanud paar asja. Aga sinna, kus mõned mõistatusi ootavad. Ja see annab meile võimaluse, veidi lõbusam kontekstis võõpama mõned JavaScript. Ja kui sa sinna, Ma seletan, mis ootab. Saada roheline. Määra sinine. Määrab roheline seab punane. Oih. Vabandust. See on niivõrd meie dokumentatsiooni selle väljakutse. Ja see läheb tööle järgmiselt. Nii et mida sa pead selle leht on terve hulk pilt mõistatusi poolt sõber Stanfordi ülikoolis. Nii, mida te näete siin on peaaegu Selline üks neist magic eye mõistatusi, aga kui sa lihtsalt vahtima see, midagi läheb näima. Pigem on midagi peidetud selle pildi. Ja see on peidetud järgmisel viisil. Pilte, nagu te teate, võib olla koosneb vaid kolm värve. Mõned punased, mõned sinised, mõned rohelised. Ja me saame teha kõik värvid vikerkaar segades neid kolme värvi kuidagi. Nii et see tundub enamasti roheline ja sinine, kuid Nick ütleb siin, See raud puzzle pilt on puzzle. See sisaldab pilt midagi kuulus siiski pilt on moonutatud. Kuulus objekt on punane väärtusi. Siiski punane väärtused kõik on jagatud 10. Nii nad on liiga väikesed teguriga 10. Nii teisisõnu, Nick võttis originaalpildile, ja ta desaturated kõik Punase sellest, koguse vähendamise punane tint, kui soovite, ta. Sinine ja roheline väärtused on kõik lihtsalt mõttetu, juhuslikud väärtused, aka müra loodud varjata tegelikku pilti. Mis Nick tegi, oli ta mahendanud punane ja seejärel ta lihtsalt viskas juhuslik koguses sinist ja rohelist kell kujutise omamoodi segased Mis on tegelikult ikka olemas. Sa pead tagasi võtta need moonutused esile pilt. Esiteks, määrata kõik sinised ja rohelised väärtused nulli saada neid välja viis, ja vaadata tulemust. siis korrutab iga punase väärtus 10, tagi tagasi üles umbes lõpliku väärtusega. Mis on kuulsa objekti? Nii et kõik teist on selle ristküliku Teie brauseris praegu. Ja teate, et on olemas starteri koodi, nii rääkida. See on JavaScript koodi Nick on kirjutatud teile. Ja märgata, et seal on joon keskel, et algab kaldkriipsuga kaldkriipsuga, see on milline on tavaliselt nimetatakse kommentaari. See tähendab, et see fraas programmeerijale millel puudub funktsionaalne tähendus. See on lihtsalt visuaalne kii inimese. Nii saab minna ja kustutada lihtsalt, et joon, ja super ettevaatlik, et mitte kustutada või muuta midagi. Ja las ma sõelub mida see kood teeb ja ma jätan teile, et aru saada saladuse pilti. See esimene rida siin, et ma olen lihtsalt esiletõstetud annab teile järgmist. Vasakul pool, teil on, mida nimetatakse muutuja, mis Nick on meelevaldselt, kuid mõistlikult nimetatakse im pildi. Paremal pool Selle võrdusmärki, Ta ütleb mulle uus tsiteerida, lõppeb "lihtne pilti". Lihtne pilt, selles kontekstis on see, mida nimetatakse klassis, noh, see on selline nagu class-- Tehniliselt prototype-- aga tõesti, See annab mulle uue objekti, mille sisu on fail, raua-puzzle.png. Teisisõnu, Nick on loonud See mõiste on lihtne pilti nii et saame pedagoogiliseks eesmärkidel, mängida pilti ja muuta selle punase, rohelise ja sinise väärtused. Ja kuidas me teeme seda? See mõnevõrra segasena süntaks siin on selline nagu kordus plokk et mõned nägid Scratch varem täna, kus saab korrata 10 korda. Sel juhul Nick ei ole kõva kodeeritud mitmete nagu 10. Selle asemel, et ta ütleb, initsialiseerida muutuva nimetatakse x 0, kontrollida, kas x on väiksem kui laiusega pilt. Ja nii olla õige, pilt on muutuja dot tähendab minna sees on ja saada selle laius ja Seejärel avatud paren, suletud paren on lihtsalt programmeerija viis öeldes on see funktsioon. Tegemist on menetlusega. See on funktsionaalsus keegi kirjutas. Kasutage seda ja anna mulle tagasi vastuse. Ja siis x ++ on fancy viis öeldes, pärast oled teinud seda kunagi, juurdekasvu x 1. Teisisõnu, see on programmeerija viis esilekutsumise silmus, mis on läheb Käi kõik veerud pilt. Pilt on lihtsalt võre täpid, veergude ja ridade dots. See on viis itereerimine üle kõik need kolonnid. Ja sees, Vahepeal me iterating üle kõrgused, siin ja siin ja siin. Nii et see on lihtsalt viis traipsing, peaaegu nagu vana kooli kirjutusmasina minge üle Kogu pilti korduvalt. Isegi see ei ole päris täielikult selge, võtke usu nüüd, et need kolm rida kood on koos läheb võimaldavad korduvalt otsima igal piksli iga dot pildi. Mis on pixel? Noh, et oleks selge, kui me vaatame algse ja suumida, kui sa tõesti panna oma silmad arvuti ekraani, mis on lihtsalt terve hunnik täpid, mitu tuhat dots kokku pakkida seal. Ja mis sa nüüd teha? Iga üks neist punktidest, lõplik määratlus, on tulemus, mis on üldiselt nimetatakse RGB, punane, roheline, sinine, mis jällegi võib kombineerida anna teile mingit värvide arvu. Tegelikult, kui sa mäletad alates palju, palju aastaid tagasi, ekraanid nagu need asjad harjunud mitte üks lääts kuid kolm. Üks neist sülitama punane tuli üks neid sülitama roheline tuli, üks neist sülitama sinist valgust. Ja kui sa olid mo nagu ma olin, kus nad olid kunagi õigesti reguleeritud, siis olid alati vaadates ajalugu filme mis oli veidi moonutatud, sest kolme värvi ei olnud ühendades korralikult. Aga selgub, et iga Nende väärtuste punane, roheline ja sinine, võib olla mitmeid nendega. Näiteks 0 Punane tähendab, et punane, 0 roheline tähendab, roheline, ja 0 sinise tähendab, sinine. Nii et kui teil ei ole punane, no roheline, ja mitte sinine, mis värvi sul on? Publik: [kuuldamatu] DAVID Humala: Sa ei teeks loodan, et see on valge. Kahjuks see operates-- kahju? Publik: [kuuldamatu] DAVID Humala: Nii et sa tegelikult on must, antud juhul. Nii et kui teil on ükski neist värvid sisse lülitatud, siis on must. Siiski, kui teil on, oletame, et palju neist, nagu palju punast, 255 see, palju rohelist ja palju sinine, mis on valge. Nii et need on kaks äärmust. Nii et see loogika, kui mul on palju punane ja mingit rohelist ega sinist, mis värvi see on? Publik: [kuuldamatu] DAVID Humala: Õige, ilmselt. Ja siis ei ole punane, palju roheline, ei ole sinine, ja seejärel kui te have-- hästi, me lihtsalt lõpetada see lihtsalt sellepärast, kuid see loomulikult Nüüd on sinine. Ja nüüd saab ühendada need värvid. Nüüd, kui kõrvale, kui keegi teist on kunagi teinud tegelik veebilehe kujunduse, Sa võid tegelikult vaata sümbolid sellist. FFF-- ja tegelikult on see ilmselt isegi mitte seda. See on FFFFFF. Igaüks näinud F-ja Ed ja A-through-- nii selgub, me rääkisime eile kohaga, ja täna, selline umbes kohaga. Täna me rääkisime binaarne. Selgub, kuueteistkümnendsüsteemis on väga ühisbaas süsteemi kasutada arvuti. Binary on kaks, koma on 10, hex on 16. Ja selgub, kuidas teha loete kuueteistkümnendsüsteemis? Null, üks, kaks, kolm, neli, viis, kuus, seitse, kaheksa, üheksa, mida sa kasutada pärast üheksa? Mis on järgmine number? Meil on juba kasutatud null. Mul on vaja 16 neist. Null, üks, kaks, kolm, neli, viie, kuue, seitsme, kaheksa, üheksa, teil on vaja mõned suvalise konventsiooni. Ja mida inimkond otsustas mõnda aega tagasi, et pärast üheksat kaasas kiri A ja seejärel B ja seejärel C. Nii kuidas sa loota kuueteistkümnendsüsteemis on null, üks, kaks, kolm, neli, viie, kuue, seitsme, kaheksa, üheksa, A, B, C, D, E, F, ja et loeb sa kõik teed, selgub, et 15. Nii nullist 15 on nullist F. Nüüd, miks on see, et olulised? Noh, kui sul on kaks F-ndatel, see on, kuidas sa väljendad 255. Nii pikk lugu lühike, et maailma Photoshop, et graafilise disaini tarkvara, maailma veebi arengut, kus sul on palju värve, muidugi, mängida, sageli programmeerijad väljendada need, kuueteistkümnesüsteemis lihtsalt sellepärast, et see kipub olema veidi lihtsam. Kuigi esmapilgul see on palju keerulisem. Seega igal juhul on see oluline sest Nick Stanfordi on andnud meile kuus tükki funktsionaalsus mis sa, lootustandev programmeerijad, Nüüd on võime kasutada. Ehitatud seda veebi leht on kuus ülesannet, kuus korra, et Nick kirjutas. Kolm neist on sulle mitmeid, punane, roheline või sinine väärtus. Kolm neist on seatud, et väärtus. Ja need allkriipsud on vaid kohatäitjaid, nii et sa pead teadma, millised need on. Nii need kolm funktsiooni, esimene neist asjadest saab olema x-koordinaat, ja teine ​​neid asju läheb y-koordinaat. Teisisõnu, mis dot, mis piksli sa tahad saada roheline, saada sinine, saada punane. Ja siis siin, see saab olema x, see saab olla y väärtus, ja see saab olla mitmeid. Nii teeme esimese line see kokku ja siis ma jätan selle teile proovida tuletada puhata. Nii juhendite järgi Sellel leheküljel peame suurendada punane teguriga 10 ja meil on vaja eemaldada roheline ja eemaldage sinine. Alustame viimane stsenaariume. Nii et kui ma tahan, ja ma lähen taandamiseks abil mõned ruumid, kui ma tahan, et määrata punast, roheline või sinine väärtus, Ma lähen tegema järgmist. Pilt, im.setBlue ja seejärel põhineb minu juhiseid siin Mis kolm asja ma peaksin kirjuta sees sulgudes nüüd? Vajan x väärtus, y väärtus, ja mis number ma peaksin siin, kui ma tahan lahti saada sinine, põhineb see lugu siin? Just null. Kui ma tahan mingit sinist, ma olen lihtsalt muutu see nulli. Nüüd lihtsalt sulgege mida see teeb. Mul on siin need top teine ​​ja kolmas rida, Ma väitis kaks ahelat, nested silmad, kui te siis, et ei kavatse mõjuda edeneb vasakult paremale, ülevalt alla üle kõik x väärtused ja kõik y väärtused. Sest jälle, pildil on vaid grid ridu ja veerge. Nii et see ei hakka lahti kõik sinised. Las ma jätta järgmisele reale teile. Kuidas vabaneda kõik roheline? Publik: [kuuldamatu] DAVID Humala: Nice. Publik: [kuuldamatu] DAVID Humala: Nice. Ja ma lähen välja suumida ja lihtsalt võtta hoolt, et olete ei teinud ühtegi kirjavigu. Ja kui sa oled mugav mida olete teinud, minna ja klõpsake nuppu Käivita / Salvesta ja vaata, mida sa saad. Ja jälle oleme teinud Vaid kolm muutusi. Me kustutasime, et esimene kommenteerida ja asendada see need kaks rida koodi. Ja see on OK, kui sa pead lüüa Run / Salvesta nuppu paar korda midagi kinnitada. Ja andke mulle ka suumida minu koodi, nii et saate transkribeerida. Väga hea. Nii ma näen Andrew on, mida Tundub, et viga. Ta sai just suur must ristkülik oma ekraanil. Kas keegi on suur must ristkülik? Publik: Jah. DAVID Humala: Big must ristkülik? OK, nii et mõtleme kohta, mida see tähendab. Me ütlesime, et null, null, null, seega ei ole roheline, ei punaste, siniste, annan sulle must. Ja selgub, et enamik meie sülearvutid lihtsalt ei ole piisavalt truudust. Sa ei saa päris öelda, et on tegelikult midagi seal. Ja kui sa mingi võibolla lahja ekraani edasi ja tagasi, äkki sa näed natuke midagi seal? Võib-olla selline, omamoodi? See ei ole täiesti must. Publik: [kuuldamatu] DAVID Humala: Spoiler! Seal on mõned punased olemas, kuid mäletan spetsifikatsioonid probleemi, Nick toonides see maha. Ta desaturated see mõnevõrra kuid mitte kõik viis null. Nii et kui me tahame, et suurendada summa punane, andke mulle ettepaneku see trikk. Las ma suumida minu ekraanil. Ja las ma minna ja öelda summa võrdub im.getRed (x, y). See koodirida annab mulle midagi, mida nimetatakse muutuja. Mul on omavoliliselt, kuid väidetavalt mõistlikult helistasin oma muutuja, mida, ilmselt? Summa. Just summa. Ma võiks olen nimetatakse seda midagi, ma tahan, aga ma olen Kasutades seda muud ülesanded et ma varem kirjeldatud saada summa punane x koma y. Miks ma seda teen? Mida sa tahad teha siin? Sa pead add-- Publik: [kuuldamatu] DAVID Humala: Jah, võib-olla korrutada see 10. Ja kui te ei tea seda, ma olen läheb edasi minna ja seda teha. Ma lähen edasi minna ja ütleme, ma tahan summa punane Ma tahan olla mis iganes on punane, korda 10 ja täht, tärn oma Klaviatuur on the-- ei kasuta x. Kasutage täht. See, kuidas sa korrutada asju Enamikus programmeerimiskeeltes. Nii kohaselt Kareem intuitsioon, salvestatakse see muutuja nimega summa, kui palju punase tahan Kohapeal xy. Kuidas nüüd, ma teha, et Pixel on see number? Olete juba teinud enne. Te seate roheline ja sinine mingit väärtust, nulli. Publik: [kuuldamatu] DAVID Humala: Jah, noh sa ei taha, et see 10. Sa juba tegid matemaatika siin. Nii saame väärtust punane, mis on vähe, arvatavasti. Me korrutades kuni 10. Mida sa tahad teha muutuva summa nüüd? Publik: [kuuldamatu] DAVID Humala: Nice. Nii im.set-- mida? Publik: setRed. DAVID Humala: setRed, Kohapeal xy. Jah. Ja just summa. Teisisõnu, muutuva on ajutine kohatäide mida saab panna midagi tahad. Meil juhtub olema laskmise number seda, hetkel. Meil on korrutatud seda 10 suureks teha. Ja nüüd ma asendades muutuja kui kõnealune kolmas argument, või sisend seada punane. Ja nii, et kui sul lõpeta seda, ja võtta teadmiseks on semikoolonite ja sulgudes. Lase käia ja kliki joosta / salvestada kord, ja te nägema, maagiliselt, mis oli tegelikult seal. [? ARWA,?] Mis seal on? Eiffeli torn täieõiguslik punane, mitte päris pime. see peaks olema selgem nüüd, jah? OKEI. Ja Andrew, enam musta kasti? Publik: [kuuldamatu] DAVID Humala: Hea küll. Nii et ma hoian seda ekraanil. Kui sa tahad mängida seda hiljem, ma taasluua seda teile. Aga see kood siin just tegigi. Miks me ei tee veel ühe. Las ma keri veidi. Nii sel juhul projektorit tegelikult ei tee seda õiglust. Aga oma ekraane, siis ilmselt on väga punane ja väga musta kasti. Ka see on mõistatus, et näitab midagi kuulus. Kuid pilt on moonutatud. Tõeline kujutis, seekord on sinise ja rohelise väärtused. Kuid nad on kõik jagatud 20 nii väärtused on väga väike. Punane väärtused on vaid juhuslike arvude, müra. Tühista need moonutused paljastada tõelist pilti. Nii Nick siis ütleb teile, mida teha. Määra punane väärtusi nulli ja siis ei riku, mis see on. Siis korrutada sinine ja rohelised väärtused 20. Nii et see on peaaegu sama programmi nagu enne, kuid sa tagasi pöörata. Ja siis ma panen koodi enne ekraanile korral soovite naasta see või mängida edasi, et üks. Las ma suumida seda. Aga lahendada vask pilti puzzle, number kaks. Publik: [kuuldamatu] DAVID Humala: OK, nii et see, mida ma olen ei kavatse anda nii palju näpunäiteid. Nii et ma would-- oh, lähme vaata, sul on kirjaviga siin. Seega pidage meeles, see siin tegelikult vajab sinna minna. Mida ma teen ettepaneku, kui soovite keskenduda selle ühe, seal on vastus. Kui soovite transkribeerida, et see peaks saama esimene töö. Ja siis saab kasutada seda inspiratsiooni teine. Nice. Väga hea. Ja kummaline, See on lihtne näide on teaduse või kunsti nimetatakse steganography, kunst peidus teavet pilte. Tavaliselt pilte olla vesimärgiga väga jultunult Logoga põhjas nurgas, kuid selgelt, siis võib olla palju keerukam seda ja tegelikult peita teiste piltide pildid kuidagi seda tehnikat. Võtke veel 30 sekundit, ja siis me vähemalt teada, mida sa peaksid nägema. Ja ma jätan kolmanda üks kui kodus kasutamise, Kui soovite rohkem vaidlustada sel nädalavahetusel. Ja ma arvan, Andrew võiks saanud see esimene. Mis on teine ​​pilt, Andrew? Publik: vabadussammas. DAVID Humala: Vabadussammas saab vastuse seekord. Nii jälle, lihtsalt mõned lihtsad näited, mille eesmärgiks on anda teile ettekujutuse oleme tõlgitud pildiline Scratch blokeerib rohkem tüütu ja rohkem keeruline kood, kuid kõik ideed veel täpselt sama, kuigi kasutuselevõtt Nüüd mõiste muutuv, olles võimalik salvestada midagi ajutiselt. Teeme veel ühe käed-, lihtsalt nüüd ühendage punktid midagi natuke rohkem reaalse maailma. Kui olete valmis, kui sa saaksid mine selle URL ekraanil. See on ka oma koopia slaidid, developers.google.com/maps~~V. Olgem tegelikult midagi tõeline, nii et rääkida, netis kasutades Google Maps API või rakenduse programmeerimise liidest, järgmisel viisil. Google, nagu paljud ettevõtted, pakub palju vaba funktsionaalsus mida saab kasutada ehitada oma ise huvitavaid rakendusi. Tegelikult, kui olete kunagi kasutada Uber saada kabiini või auto, te ilmselt teate, et uber on kaart ja see näitab, autod peal. See tähendab, et nii hästi kui suudan öelda, Google Maps API. Nad on tegelikult kasutades Google Maps, kuid Uber ei ole kaardistamine firma ega oleks üldse Eriti huvitav probleem lahendada peal oma autoteenindus probleem. Ja nii nad seisma, uuesti, õlgadel teised, Google antud juhul. Nii nad kasutavad Google Maps, kuid oma autoteenindus ja muud sellised omadused. Nii et me läheme ära Selle teha järgmist. Ja kui ma olen läinud liiga kiiresti, lihtsalt helista mulle üle ühe hetkega. Palju sulgege mõned pildi värk. Sa peaksid nägema ennast kell lehekülje niimoodi. Nii Google'i kena ja nad ühed parimad pakkuda mitte ainult API, kuid vaba API, mis sa saab mängida või äriliselt. Nad alustada laadimist, kui teie kasutamine on kõrge, kuid ma läksin edasi ette ja allkirjastatud meid üles tasuta konto et loodetavasti 10 arvutid ei diskvalifitseerida meid ootamatult. Loodetavasti see tutvustamise töötab. Ja märgata, et neil on API jaoks Android, iOS, veebi ja veebiteenused, mis iganes see on. Olgem keskenduda veebis. Nii klõpsake roosa kasti, web, ja et viib teid loodetavasti lehele siin. Ja nad ju terve hulk API. Ja see võib olla veidi valdav alguses, aga ma juhtida meid läbi, mida me tahame. Ülaosas vasakul on Google Maps JavaScript API, JavaScripti API. Nii et laske käia ja klõpsake, et üks. Ja mis viib teid nüüd, et järgmise lehekülje, demod ja proovi kood. Lubage mul suumimiseks siin. Ja las ma meid mina-- keri et kui ta ütleb quick start samme. Ekraani peaks nägema minu. Ja seal on kaks sammu, saada võtme ja hakata välja. Ma juba tegin sammu üks Meie, saada nn võti. Ja see on üldine idee. API võti on üldiselt lihtsalt suur juhusliku arvu või stringi et sa peaksid kleepida oma koodi, nii, et Google teab, kes sa oled, kui te kasutate oma teenust, oma API. See ei tähenda, et me oleme süüdistatakse midagi. Ja nüüd, kliki asemel üks, klõpsa hakata välja. Kui sa saaksid lihtsalt laine mind üle, kui ei tea, kus me oleme. Nii me lihtsalt kriimustada pinnal, siin aga mida Ma arvasin, et oleks kaalukaid on tegelikult meile kõigile, kasutades Cloud9 ühes aknas ja Sel juhendaja teises aknas, laseb tegelikult saada oma taotluse ja töötab mis manustab kohandatud Google map omaenda veebilehe ja lisab seejärel ühe või kahe iseärasusi. Aga me lihtsalt kriimustada pind, mida me saame teha. Nii lihtsalt kiire meelerahu kontrolli. Kas igaüks sel lehel Google Maps JavaScript API? Peaks ütlema alustanud. Me ei lähe läbi kogu asi mis tahes viisil. OK, teises tab, kui te ei see oli avatud, ei lähe Cloud9 ja end lihtsalt uue kaardi lõpuks. Nii jälle c9.io eile, c9.io ja lihtsalt luua uus fail. Ja minna ja kõne see iganes soovite. Ma helistasin minu map.html. Kõne see midagi lõpeb .html. Ja siis peaks olema enam-vähem kus ma olen selles protsessis vaid vilgub kiire tühjas tab nimega midagi map.html. Või faili, uue faili seekord. Ja nüüd, üle kohta Google Maps JavaScript API, me vahele lugemine läbi kõik selle teksti. Aga märgata, et tere on tõepoolest kõikjal, näete nüüd. Tere maailm on see suur värviline Näiteks terve hulk HTML. Lase käia ja kopeerida ainult, et HTML, nii et alates doc tüübist tipus kõik viis tihedas HTML tag minna käia ja kopeerida kogu selle-- uuesti see on alla tere example-- ja kleepida, et oma Cloud9 tab, nii et nüüd ekraani peaks vaatama umbes nagu minul. Ja saate salvestada, kuid ärge laadige see veel. Vaatame kõigepealt pilk kood ja vaata, kas me ei saa järeldada või õppida mis see on Google on olnud meie pimesi kopeerida ja kleepida. Nad lihtsalt tahavad aidata, sõna otseses mõttes, et meid alanud kuid seal ei ole nii palju keerukust tegelikult olemas. Kõik küsimused veel? Oleme ohutu liikuda edasi? OKEI. Nii kiiresti, lähme lihtsalt teha mõned kiired meelerahu kontrolli. Line üks, mida ma vaata, ja loodetavasti teile vaata, mida see tähendab, doctype HTML? Kareem, meenutavad? Publik: [kuuldamatu] DAVID Humala: Jah. Siin on HTML 5. Vahepeal liinile kaks kohta ekraan tähendab siin hey brauser, siin on tegelik HTML. Line kolm on hey brauser, siin on head. Line neli on muidugi, hei brauser, siin on pealkiri. Mida line viis teha? Tegelikult see ei ole tõesti midagi meie jaoks. Sel juhul see lihtsalt muudab suurust Lehe vaikimisi. Line kuus, me ei rääkinud, kuid see määrab kodeeringu. Seal on erinevaid viise, kuidas kodeerida faile, eriti võõrkeeli. UTF-8 vaid kipub olema vaikimisi. Nüüd me näeme kooskõlas seitsme kuni 16, mõned CSS. Ja kuigi me oleme ei näinud kõik need asjad enne, saame mingi järeldada. Nii liinile kaheksa vahenditega, hei brauser, kohaldatakse kõik järgmised mille kaks silte ilmselt? HTML ja teksti järele. Nii koma on uus asi seal. Ja see on lihtsalt viis täpsustades mitme sildi korraga. Siis on meil olemas looksulg. Nii ilmselt see ütleb brauser, Kaubamärk kõrgus leht 100%. Nii et isegi kui seal on väga vähe sisu, muuta kogu lehel teeb asja täitke lehel. Tehke kaart lõpuks täita lehekülje. Margin, mida see tähendab? See on tavaliselt nagu suvalise ümbritsevad valged servad et mõned brauseri disainer lihtsalt otsustas peaks olema seal, sest see ajab asju otsima puhtamaks. Aga me ei taha seda. Me soovime, et kaart läheb kõik viis servi. Polster sarnase sisuga marginaale. Marginaalid tähenda väljaspool, polster vahendid sees, aga see on samasugune asi. See on natuke puhver Teie ja servad. Ja siis joon 13 on hea võimalus kiire ülevaade. Mida teeb terava märk kaart Tähendab, või hashtag kaart tähendab? Mida see viidata põhimõtteliselt? Publik: [kuuldamatu] DAVID Humala: Täpselt. See omadus on see CSS vara kehtib ainult üks asi, HTML tag mis on ID tsiteerida, lõppeb "map". Ja nüüd lähme kiiresti edasi, leidke alaserva faili, mis ei ole liiga kaugel ja teate line 19, kui te kleepige see täpselt nagu mina, rida 19 on vaid div, mis on jagamise leheküljel, mis eile nimetatakse ristkülikukujuline piirkond. See ju midagi ta. See on avatud tag, sulgemissilti. Aga see ei ole unikaalne ID. Mis tundub olevat siin toimub on Google on readying meie veebilehe on täielik 100% kõrgusest, ja ei polster ei marginaale, kuna me läheme sinna sisse panna Selle div, kelle unikaalne ID on kaart, on tegelikult varjatud kaart. Ja me tahame seda täitma lehe ja mitte ainult mõned väikesed ristküliku keskele. Nii line 14 rõhutab samuti on map ise peaks kõrgus olema 100%. Nüüd märkate ridade vahele 20 ja 28, see on JavaScript koodi. Ja see on, kuigi see on süntaktiliselt vähe imelik, Seal ei ole kõik, et palju siin toimub. Vastavalt 21, see kuulutati midagi, mida nimetatakse muutuja. Selle asemel, nimetades seda ulatub, nagu me tegime enne, me täpsemalt öeldes var, mis tähendab lihtsalt muutuja. Me oleks võinud kasutada, et Nicki koodi, kuid ta ei ole, nii et ma ei viitsinud teeme seda. See muutuja nimega kaardistada, ja siis seal on funktsioon, mis on ilmselt nn initMap. Nii et see on nagu meie omatehtud pusletükk Scratch. Oleme loonud tükk funktsionaalsust nimega initMap, ja saab omamoodi järeldada Mis siin toimub. Vasakul pool, meil on varieeruv, nii et me läheme panna järgmise asi sees, et muutuja, paremalt vasakule. Parempoolsed ütleb, hei brauser, anna mulle uue Google kaart. Ja google.maps.map on lihtsalt funky viis täpsustades, et seda funktsiooni kuulub Google Maps. Pärast sulgudes oleme näinud seda enne, hei brauser saada mulle elementide lehel tag lehel kelle unikaalne ID on-- Publik: [kuuldamatu] DAVID Humala: --map. Ja mis toimub, noh, see rida koos, joon 23, sisuliselt öeldes hey brauser, minge mind et tühjad div lehel kelle unikaalne ID kaart, sest ma tahan lisada arvesse see-- süstige see, kui te will-- terve hunnik sisu mis juhtub tulevad veebist hiljem. Ja Google teeme kõik, et meie jaoks. Nii jälle päris lõpus päeval, meil on see näide võtmiseks. Ma ei tea, mida kaardil on või kuidas rakendada kaardil API. Me ei pea. Me lihtsalt vaja öelda kaart kuhu panna ise ja jätke nende põhjal rakendamine andmed, et Google. Nüüd on ilmselt kaks tükki andmeid et see näide on pakkudes Google'i API. Ilmselt kaardi keskel, ja Suumimistaseme nii rääkida. Ja kas keegi ka neid koordinaadid, pikkus- ja laiuskraadi? Tõenäoliselt mitte, kuid me ei saa minna tagasi Õpetus, sõna otseses mõttes näha. Aga eks me näeme seda vaid hetkeks. Zoom tase on väärtus vahemikus, ma ei tean, üks 13 või midagi sellist. See lihtsalt on pistmist kui kaugele sa oled suumimise ajal, ja ongi kõik. Ja nüüd päris lõpus Lehe teate line 29-- see on natuke kole, sest see wraps-- see koodirida on see, mis laeb kuni brauseri Google tegelik API. Kõik koodi, et Google insenerid on kirjutanud, et rakendada kogu see omadus põimitava kaarte. Nüüd ei muuda midagi. Kui sul järgmised mööda, edasi minna ja lihtsalt salvestada see fail, kui te tõepoolest mida ma olen. Mine oma URL. Võite nuppu Käivita kuni ülemise ja mis ütleb sa URL veebiserver uuesti. Ja see viib teid uue kaardi. Kui klõpsate Avatud map.html ja koefitsiendid on sul hakka hoiatuse, veateate, jah? Veateade veateate? Nii kahjuks viga sõnum ei ole, et valgustav kui sa tegelikult avada konsooli, et erilist tab meil hoida avamisel eile ja natuke täna. Aga ma komistas kogu See varem, nii et ma juba arvasin, milline lahendus on. Tänapäeva slaidid, või Pigem Cloud9, teate et me ei tee midagi teadlikult. Pange tähele, et see skript sildi line 29, kui sa loed läbi selle, see on nagu maps.googleapis.com/ midagi, midagi, midagi, siis märkad, et keegi, üks arendajad, kirjutas kõik kapitali tähed, oma API võti. Meil on vaja kleepida sinna midagi. Ja see oli samm Ma tegin meile enne, ja jälle nad võivad musta nimekirja meid, kui äkki 12 või rohkem meist hakata kasutama sama võtit, aga vaatame, mis juhtub. Nii et kui te lähete tänapäeva slaidid, üks klapp hiljem seal See on väga funky välimusega tekstistringi. Lase käia ja lihtsalt kopeerida seda ja kleebi see, kus ta ütleb oma API võti. See on üks ma registreerusin. Ja kindlasti ei püüa kirjutades seda käsitsi sest ta tunneb täis koos kirjavigu, potentsiaalselt. Nii lihtsalt kopeeri ja kleebi et. Ja see läheb teha rida enam, kuid nüüd, vaid peab olema selge, see peaks välja nägema veidi nagu see, kus peamine võrdub ei kapitaliseeritud karjuma sa. Salvesta oma lehele, mine tagasi teisele tab, reload, ja loodame, et näha kaardil, kus? Publik: Austraalias. DAVID Humala: Austraalias. Nii ilmselt need on GPS koordinaadid Austraalias. Ja las ma jalutan hetkeks ja aita kedagi, kes ei ole päris seal, aga las ma ettepaneku, via Google, leida GPS koordinaadid oma kodulinnas või oma kodumaal. Ja ilmselt Google saate selle üles või Wikipedia teile öelda. Aga valida kaks erinevat väärtust laiuskraadi ja pikkuskraadi tagasi minna ja kleebi need, ja pange lehele pärast salvestamist ja vaata, kas sul võib olla kaart oma kodulinna. Ja kui sa oled teinud et järelmeetmete challenge-- ja ma annan veidi vähem suunas, teadlikult, et sa sihilikult pea vaeva paar minutit dokumentatsiooni, kaardi vahetamiseks, et ei ole see multifilmilikke vaikimisi, kuid satelliit-kaart. Nii et sa tegelikult näha satelliidi kujundlikkus asemel ilus värv. Ja vihje ma annan sulle on muuta kaardi tüübi. Mine tagasi, et saada hakkas lehel inspiratsiooni. Nagu te võib-olla väita, kui te otsite, seal on nii palju rohkem asju saab teha. Mõned teist on juba muutunud kaardi tüübist. Aga sa võid do-- näiteks, las ma minna midagi tegime käigus Ma teach-- maps.cs50.net. Üks meie üliõpilastele, tegid seda. Me keskele meie kaart üle Harvard Yard ja superpositsioneerimisega kõik need hoone nimed, ja meil oli temaga lisada see. Nii et kui ma tahan otsida, Näiteks Matthews Hall, meil on vähe rippmenüüst. Ja ma arvan, et ta kasutab Bootstrap on raamatukogu arutasime varem selle eest. Ja kui klõpsate Matthews Hall, see kohe hüppab kaardi teatud asukoha, ja see näitab sa pildi see väike pop-up. Aga isegi see väike pop-up, me ei rakendanud. Kui ma keri meie saada hakkas lehele ja otsida infot aknad, näete, et mõned funktsionaalsuse te ise lisada, kuigi natuke rohkem keerukust, on midagi, mida nimetatakse infot akent. Ja kui ma vajutan näide siin, ja see on see, mis on lõbus, saate teha selliseid asju, Klikkides marker ja siis voila, informatsiooni hüppab. Nii et me ei ole päris sisse piisavalt funktsioone JavaScript et maalida täpselt, kuidas võiks traat kõik see kraam kokku, kuid me oleme omamoodi õhkõrnalt. Tegelikult, mis ma just tegin, kui Ma klõpsanud seda markerit, oli vallandada puhul olemas Niinimetatud kohta klõps. Ja me tegelikult nägin Kui täna, nn esitada juhul, kui olime ära hoida kasutaja alates otsivad kassid. Nii oleme omamoodi korjatud ja choosed hulgast kõik need erinevaid funktsioone, anda teile tunne, loodetavasti mida saate tegelikult teha natuke rohkem mugavust programmeerimine, ja täiesti vabad vahendid. Kas küsimusi on? Ei? See on teie viimane võimalus, vähemalt täna, reedel, saada midagi välja oma rinnale nii, et jalutad siit tunne kindel ja mugav. Jah. Publik: Miks mitte lisada veel üks asi? DAVID Humala: Oh jumal. Mul on vaja puhata sel nädalavahetusel, ma arvan. Muud küsimused? Publik: [kuuldamatu] DAVID Humala: Sa can-- sisse Internet Explorer, puhka rahus, sa kasutada saaks panna VB script, virtuaalne põhi script, kuid mis tegelikult kunagi püütud. Nii lühike vastus on lihtsalt JavaScript. Muud küsimused? Olgu, hästi, lubage mul seda teha. Las ma haarata kolleegidega väljaspool. Nad on mõned hindamine vorme, et nad tahavad kõik kulutada paar minutit täites. Nad tahavad, et koguda mis kujul ja mis tahes loobumisi, et siin võib olla väljaspool. Nad on ka sertifikaadid. Olen aim seal veel mõned suupisted väljaspool. Lubage mul läbivad need läbi, ja kui sa Küsimuste vahepeal Ma kõndida ümber rohkem individuaalselt ja me saame võite alustada. Jah, muidugi. Publik: [kuuldamatu] DAVID Humala: Ongi tavaliselt tõsi nendel päevadel. Kindlasti veebi tarkvara, siis on lahjad teised sa kas esteetiliselt kasutades asju nagu Bootstrap, et sa seda ei tee peavad rakendama madal üksikasjad menüüde ja nupud ja kõik. Sa toetudes keegi nagu Google, et sa ei pea ehitama Uber Äri ja kaardistamise äri ja olla palju selliseid rakenduste samuti. Tegelikult sisselogimist on populaarsed ka. Kui oled kasutanud Spotify või mis tahes mitmeid veebisaite, saate sisse mõned veebilehed kasutades Facebook. Mis on tore, seal on mõeldud API sisse logima tänapäeval, nii et sa ei pea on oma kasutajate tabelis ja kõik oma andmebaasi tingimata samal määral. Võite lasta Facebook teha kõik selle keerukust teile. Nii et see on põnev aeg, ausalt, programmeerimine, sest seal on nii palju kolmanda osapoole teenuseid, mida on võimalik ehitada peal. Ja jälle, auto hind on rahalisi või seisakuid. Kui Google läheb alla, nii ei Uber väidetavalt aga võibolla see on mõistlik kompromiss. Ja jälle, et oli üks teemadest, Loodetavasti on viimase paari päeva jooksul, on need kompromissid. Ja harva on seal läheb olla õige vastus. See on tõesti parem Kahe või enama vastuseid. Pass nende ümber. Ja need Cloud9 kontod jätkub töötada teoreetiliselt andma. Te võite leida, kui sa oodata paar päeva või nädal või rohkem tagasi sisse logida neid, see võib võtta nagu ühe või viis minutit, et avada uuesti üles, aga see on lihtsalt sellepärast, et nad panid see magama säästa ressursse.