DAVID Malan: Të gjithë të drejtë, ne jemi të kthyer. Kështu për emocionuese konkluzioni, seksioni ynë i fundit në programimin e web, e cila I menduar ne do të përdorim si term i përgjithshëm për të kapur disa tema mbetura. Pra, në fund të ditë, ne do të vërtetë të bëjë pak e duart-në programimin e web me një gjuhë të quajtur JavaScript. Dhe unë mendoj se ne do të hedhim një vështrim diçka që lidhet me imazhe dhe të zbuluar diçka fshehur fshehurazi në një imazh, dhe gjithashtu të marrin një vështrim në Google Maps API, e programimit të aplikacionit interface, si diçka përfaqësues i llojit të softuerit kjo është gjithnjë e më shumë dhe lirisht në dispozicion sot. Por pse nuk kemi marrë një sy në një përbërës në këtë botë se ne kemi qenë lloj duke marrë për të dhënë ekziston për disa kohë, një bazë të dhënash. Për ditën e kaluar dhe gjysmë ne kemi supozuar se ne kemi qasje në një bazë të dhënash, por çfarë problemi i zgjidh një bazë të dhënash? Çfarë do të bësh për ne? Çfarë është kjo? AUDIENCA: [padëgjueshme] DAVID Malan: Mban të gjitha informatat, OK, dhe çfarë lloje të informatave mund të ju vënë në të? AUDIENCA: [padëgjueshme] DAVID Malan: Çdo informacion ju vënë në të, ju do të merrni mbrapa. Kjo eshte e vertete. Dhe në një vend tipik web-bazuar ose web Aplikimi, çfarë lloje të informatave, në mënyrë të veçantë, mund të keni vënë në? AUDIENCA: [padëgjueshme] DAVID Malan: Users. Pra, çfarë është një përdorues? AUDIENCA: [padëgjueshme] DAVID Malan: OK, regjistruar përdorues i faqes. Dhe çfarë do të thotë të Informacione përdoruesit dyqan '? Ajo që përbën një përdorues? Një përdorues ka çfarë? AUDIENCA: [padëgjueshme] DAVID Malan: Yeah, personal të dhënave, dhe unë si se. Le të jetë më i saktë. Kështu që një përdorues zakonisht ka një emër, çfarë tjetër mund të ketë një përdorues? AUDIENCA: [padëgjueshme] DAVID Malan: Një OK addr--, Emri kështu, mbiemri. Kjo eshte e mire. Në fakt, le të rregulluar se, për shkak se ajo do për të hapur një mundësi për diskutim, ende, edhe më tej. Emri, mbiemri, gjinia. Një ID e disa lloj. Çfarë tjetër? Dëgjova diçka tjetër më parë, too. Një email, adresa postare. Pra, le të ndalemi atje dhe tani e konsiderojnë jo atë që ne jemi ruajtjen në bazën e të dhënave, but-- dhe pse jo, pasi kjo është ndoshta qartë se sapo ju të regjistruar një përdorues, ju doni të mbani mend ato për disa kohë. Ju nuk doni që ajo të vetëm të ruhen në RAM dhe të forgotten-- kështu le të përqëndrohet në how. Ajo rezulton se në bota e bazave të të dhënave, ka të paktën dy lloje këto ditë. Diçka që quhet një bazë të dhënash SQL, Structured Query Language, ose, i quajtur cutely, NoSQL, e cila nuk është e SQL. Dhe kjo e fundit është një shembull i asaj fuqisë të quhet një object-oriented, ose një dyqan objekt, një bazë të dhënash që ruan objektet, dhe jo, justifikim me, si ne së shpejti do të shohim, rreshtave. Pra, ne do të fokusohemi për vetëm një moment i pari i tyre, domethënë, një SQL bazës së të dhënave, në qoftë se vetëm për shkak se është aq të njohur tashmë, për të gjithë që ka përdorur Excel ose Sheets Google ose Apple Numrat apo ndonjë standarde program spreadsheet, ose, në mënyrë ekuivalente, ose më sophisticatedly, diçka si Microsoft Qasja apo Oracle ose MySQL ose PostgreSQL, të gjitha nga të cilat janë emrat e produktit për implementimin i idesë në vijim. Një databazë relacionale është thjesht diçka që ka rreshtave dhe kolonave. Dhe me rreshta dhe kolona, Unë fjalë për fjalë do të thotë diçka si kjo, kështu që kur ne të kemi emrin e një fushe dhe llojin e saj mbi këtu. Dhe në fakt, më lejoni tani të fillojë të ndajë këto. Pra, në fakt, unë nuk e di pse unë tërhoqi një tabelë të veçantë. Le të mbajtur këtë të thjeshtë. Ne kemi të drejtë këtu Fillimet e tryezën tonë, ku ky është emri i fushës dhe ky është lloji e të dhënave, dhe sipas llojit unë do të thotë në vijim. A është një numër, është një varg, një varg të shkurtër si një fjalë, është një paragraf, është ajo të dhënat binare, si një imazh? Dhe le të vetëm të vë në lojë këtë përveç për vetëm një moment. Pra emri, numri, string, copë e madhe e text-- AUDIENCA: [padëgjueshme] DAVID Malan: Po, kështu string. Dhe në një kontekst bazës së të dhënave, ne do të zakonisht e quajmë këtë fushë char. Unë do të them vetëm char tani për tani, por ne jemi do të përmirësojmë këtë në një moment. fushë Character. Emri i fundit është ndoshta e njëjtë. Gjinia? Mashkull apo femër, kështu që ajo mund të jetë një fushë char. Kjo mund të jetë ose të japin kuotën, mbyll thonjëzat "Mashkull" ose quote, mbyll thonjëzat "femër" ose ajo mund të jetë m apo f. Nëse ju doni të jenë më përfshirëse, ju mund të kenë nevojë një vlerë të tretë ose një lloj fushe tjetër krejt. Dhe kështu që ju mund të përdorni false I vërtetë. Fusha mund të quhet mashkull, dhe atëherë ju mund të thoni vërtetë apo e rreme. Por kjo nuk do të kapur të gjitha informatat që ju mund të dëshironi. Pra, rezulton se ka një lloj tjetër i fushës që mund të jenë të dobishme këtu në një bazë të dhënash tipike, quhet enum, ku ajo është një fushë karakter, por ju, projektuesi, të merrni për të numëroj vlerat e mundshme, si quote, siç janë quajtur "mashkull", quote, mbyll thonjëzat "femra", e kështu me radhë. Kështu që çdo gjë që vlera është në bazën e të dhënave tuaj, është me të vërtetë karakter me bazë, por ajo duhet të jetë një prej këtyre vlerave. Ne ndoshta nuk do të duan një enum për emrin e parë ose emrin e kaluar. Përndryshe ne do të kemi të numëroj, si emër buron nga, fjalë për fjalë çdo të jetë e mundur emrin dhe mbiemrin. OK, kështu ID çfarë duhet të jetë një ID? Po, kështu që ndoshta një numër. Pra, le të rrinë me se tani për tani, numri. Dhe nga numri, numrin e pak a shumë të gjerë tani. Për nga fundi i dytë ditë, unë ndjehem si ne duhet të jetë pak më të saktë. Numri mund të thotë si, atë mund të jetë diçka si 1.236. Dhe kjo ndoshta nuk është çfarë ne do të thotë nga një ID. Çfarë ndoshta do të thotë nga një ID? AUDIENCA: [padëgjueshme] DAVID Malan: Oh, OK, kështu ndoshta nuk është edhe një numër. Ndoshta kjo është në fakt një identifikues unik kjo është një varg, si një emër përdoruesi. Pra absolutisht, mund të jetë. Unë mendoj se dikush ndoshta do të thotë numerike, pse. Pra, le të qëndrojë me atë. Çfarë lloj i numrit? Çfarë është një më të precise-- një numër të plotë. Kështu një numër si 0, 1, 2, 3, kështu që ne do të quajmë këtë një numër të plotë. Dhe, edhe atëherë, unë mund të të nitpicking, është e jo të vërtetë vetëm një integer përgjithshëm që ju dëshironi. Ju ndoshta nuk dëshironi vlera negative, vetëm për shkak se, ajo vetëm ndjehet i çuditshëm. Ju ndoshta dëshironi integers pozitiv. Kështu që ju mund të shprehë se në një bazë të dhënash, por tani për tani, ne do të themi numër i plotë. Email? Kjo është ndoshta një just-- çfarë? AUDIENCA: [padëgjueshme] DAVID Malan: Kjo është një e-mail, por kjo është karaktere, apo jo? Ajo vetëm ka një karakter i shokuar si një "në" simbol apo diçka tjetër, por është ende një fushë karakter. Dhe adresën postare? fushë Character. Pra, kjo është një fillim i mirë, por le të jetë pak më të saktë tani. Pra, rezulton se në një bazë të dhënash, ju shpesh kanë një zgjedhje mbi më të rafinuar versionet e këtyre gjërave. Në fakt, në një bazë të dhënash tipike SQL, SQL, ose më në përgjithësi, bazës së të dhënave relacionale, bazat e të dhënave me radhë dhe kolona, ​​ju shpesh të marrë të përcaktojë jo vetëm llojin e të nëpër fusha, më lejoni të bëjë disa here-- dhomë por edhe gjatësia. Pra, për sa kohë është një emër i parë? Unë mendoj se, D-A-V-I-D. OK, I got it ndoshta vetëm ofenduar si gjysma e njerëzve në dhomë, e drejtë, pasi që emrat tuaj janë më shumë se pesë letra, kështu që pesë duket pak egoist dhe naive, kështu që çfarë është një vlerë më të mirë? 10, të gjithë të drejtë, dhe unë mendoj se ne jemi OK në dhomë. 13? 30? Pse nuk kam marrë më të Qasja e parë kur ne ishin duke folur për vargjeve dhe kujtesës? Pse nuk e them vetëm si 1000? Emri askujt po shkon të jetë më shumë se 1,000. Zbyth. AUDIENCA: [padëgjueshme] DAVID Malan: Po, është e kota, të drejtë, sidomos nëse shumica e emrave janë vetëm pesë apo 10 ose 15 karaktere, kjo është shumë e kota. Kështu që ju e dini se çfarë? Kjo është lloj i një pyetje të vështirë. Tani, ne me siguri mund të analizuar Anglisht dhe emrat e çdo gjuhë tjetër dhe të kuptoj se, mirë, çfarë është mesatare average-- nuk ka të vërtetë ndihmuar us-- çfarë është max është ndoshta ajo që ne të vërtetë duan. Por kjo rezulton ne kemi edhe disa zgjidhje mbi tipin këtu. Në një bazë të dhënash SQL tipike, ju kanë diçka të quajtur një fushë char dhe gjithashtu një VARCHAR, V-A-R, për fushën e ndryshueshme char. Dhe ndryshimi është kjo. Një fushë char, ju projektuesi, duhet të përcaktojë paraprakisht gjatësia e saktë të fushës. Pra, ndoshta emri i parë si 20 ndihet lloj i sigurtë. Mund të keni për të bërë disa googling për të shohim nëse kjo është e mjaftueshme në të vërtetë e sigurt. Ka ndoshta një emër me 21 karaktere, por tani për tani, mendoj 20 është i sigurt. Një fushë char do të nënkuptonte në një bazë të dhënash që ju janë duke përdorur 20 dhe gjithmonë 20 karaktere. Tani në qoftë se ajo është vetëm D-A-V-I-D, 15 nga ata janë vetëm do të jetë karaktere bosh, por ju jeni ende duke përdorur të gjitha 20 bytes. Një fushë VARCHAR, nga ana tjetër, do të thotë string duhet të jetë deri në 20 karaktere por në qoftë se kjo është vetëm pesë, ju jeni vetëm do të përdorin pesë, ose ndoshta gjashtë për një vlerë të veçantë në fund, si se 0 diskutuam se nënkupton fundin e një karakter Sekuenca në kujtesë. Pra, kur mendoni ju ju mund të zgjidhni char kundrejt VARCHAR, duke pasur parasysh se të tregtisë-off? Char përdor atë shumë karaktere, VARCHAR përdor jo më shumë se që shumë karaktere. AUDIENCA: [padëgjueshme] DAVID Malan: OK, kur ju e dini gjatësia e vargut mjaft bindëse për të përdorur vetëm char, 'shkaku nëse ju e dini atë, vetëm vënë atë poshtë. Dhe ndoshta kjo është e vërtetë për një zip Kodi, në SHBA, të paktën, 02138, ajo gjithmonë do të jetë pesë karaktere deri ju shtoni dash katër. Por ju mund të keni disa vlera për të cilat ju gjithmonë e di gjatësinë. Apo ndoshta simbolet shtetërore, si NY për në Nju Jork, dhe MA për Massachusetts në SHBA. Ndoshta ju keni disa situata ku kjo është krejtësisht e arsyeshme, por deri në atë logjikë, pse janë ne edhe overthinking kjo? Pse nuk përdorni vetëm VARCHAR dhe pastaj ne vetëm do të që të përdorni përherë dy karaktere gjithsesi, ose përdorni gjithmonë pesë karaktere anyway? Pse jo vetëm të shpëtojë VARCHAR për çdo gjë, nga kjo logjikë? Nuk duhet të jetë një kapur. AUDIENCA: [padëgjueshme] DAVID Malan: Mund shkruani diçka të gabuar. Kështu që është e vërtetë. Por edhe atëherë, ata nuk mund të përdorin më shumë memorie se unë ndajë. Unë ende kam finale thonë se mbi gjatësinë, kështu që ata nuk mund të aksidentalisht të bëjë se gabim, por një mendim të mirë. Kjo është më delikate, por është shumë e lidhur për diskutimin tonë, në të vërtetë, e vargjeve dhe listat e lidhur më parë. Ajo rezulton se një bazë të dhënash, në qoftë se ajo e di se të gjitha vlerat janë e një gjatësi të caktuar, edhe në qoftë se disa nga këto vlera janë bosh, lloj aesthetically bosh, D-A-V-I-D dhe pastaj 15 boshllëqet, rezulton se në qoftë se çdo fushë është të njëjtën gjatësi, shumë si një grup kishte të gjitha të stuff e saj për të kthyer prapa për të mbështetur për të mbështetur në mënyrë që ju mund vetëm plus 1 për të marrë për të ardhshëm vlera, të njëjtën ide në një tryezë bazës së të dhënave. Nëse të gjithë i karakterit tuaj vargjet janë të njëjtën gjatësi, ju keni atë që quhet e gjallë. Nëse të gjitha vargjet janë të gjatësi 20, ju nuk e bëni vetëm bërë plus 1 ju vetëm bëni plus 20, plus 20, plus 20, plus 20, dhe ju mund shumë shpejt të lëvizni nëpër ose të kërkoni përmes të gjitha të dhënat tuaja. Një fushë e ndryshueshme char, nga ana tjetër, nuk ka gjithmonë të ketë 20 karaktere. Ajo mund të ketë 20 dhe pastaj 15 dhe pastaj 19 dhe pastaj 10, dhe kështu që nëse ju doni të kërkoni nëpërmjet saj, ju nuk mund vetëm verbërisht shtoni 20 bytes për të marrë në një tjetër. Ju fjalë për fjalë duhet të kërkoni përmes sepse buzë të strukturës së të dhënave, nëse do, është shprishur. Ai lloj i shkon në dhe në bazë në gjatësinë e vërtetë të vargut. Pra, kur ju e dini gjatësinë, si Kareem thotë, përdorni një fushë char, për shkak se ju të fitojë se efikasitetit të qenë gjendje për të kërkuar nëpërmjet saj të shpejtë kur ju jeni duke kërkuar për të dhëna, ndryshe përdorur një ndryshore. Për fat të keq, unë nuk kam asnjë përgjigje të mirë për sa kohë emri duhet të jetë, por për diçka si një emër, unë do të thoja një VARCHAR është e zakonshme sepse nuk do të jetë një gjatësi të caktuar për të gjithë. 20, unë nuk e di, 20 ndjen një shtrënguar të vogël. Le të them vetëm 50, 50. Ajo nuk ka të vërtetë të kushtojë ju që shumë më tepër për të thënë 50 në vend të 40, por në disa pika, ju duhet për të bërë një telefonatë gjykim. Shumë e zakonshme, sinqerisht, për [? historike?] arsye, edhe pse është e tepruar, do të thotë 255, për shkak se disa kohë më parë, në sistemet e bazës së të dhënave të njohura, si MySQL, një mjet i lirë me burim të hapur se shumë kompani si edhe Facebook përdoret, ky ishte maksimumi i parazgjedhur kështu që njerëzit vetëm shkoi me të. Pra, nuk e paarsyeshme, por ne do të përdorin pak më shumë intuitë dhe thonë, i sigurt 50, kjo është ndoshta pak e tepruar. Gjinia, unë si enum, dhe kështu që ne mund të për këtë arsye numëroj mashkull apo femër, ose ndoshta në mënyrë më efikase, m apo f apo ndonjë symbology të tjera, por enum ndjehet si një zgjedhje e mirë atje. Për të qenë të qartë, gjinia mund të jetë vetëm një VARCHAR, dhe ne mund vetëm të gjitha bien dakord si njerëz të bukur, që gjithmonë të vënë të njëjtat vlera atje. Mashkull apo femër apo gjësend. Por problemi, atëherë, është se ne mund të bëni një gabim, pasi [padëgjueshme] propozuar më parë në një kontekst të ndryshëm. Nëse bëjmë një gabim, ne mund të marrë Vlerat e pasakta në database tonë. Pra, çfarë është e bukur për bazat e të dhënave si Oracle dhe MySQL dhe të tjerët, është se ju e keni këtë të fundit shtresë e mbrojtjes ku administratori juaj DBA, bazës së të dhënave, kushdo që është projektuar këtë tabelë si ne janë me gojë, mund të vënë në vend një ENUM që mbron kundër që duke specifikuar mashkull, femër, dhe kështu që askush nuk tjetër nuk ka programues mund të aksidentalisht futur ndonjë vlerë tjetër. Pra, kjo do të ishte një gjë e mirë. Ky është një tipar. Pra një ID, duke supozuar një ID numerike, atë ndoshta duhet të jetë një numër i plotë pozitiv. Dhe ne ndonjëherë kemi mundësi për të diskutuar gjatësi. Ju nuk do të zakonisht specifikoni një numër këtu, ju në vend të kësaj do të specifikojë kjo është një int, ose një int i madh, pasi ata janë quajtur zakonisht. Por zakonisht, një numër i plotë do të ishte, le të themi, 4 bytes. Dhe në qoftë se kjo është 4 bytes, kjo është sa bit? AUDIENCA: [padëgjueshme] DAVID Malan: 32 bit. Pra, sa përdoruesit mund të kenë në database ynë në qoftë se ata të gjithë kanë një ID dhe kjo ID duhet të jetë unike? 32 bit do të thotë ne kemi modele e një, dy, tre, katër, five-- kështu që si shumë modele të ndryshme të zero dhe ato mund të keni në qoftë se ka 32? Kjo është e njëjta gjë si duke i kërkuar se çfarë është dy në 32? Është një numër i madh se Unë nuk mund të mjaft të drejtë, por unë e di se është rreth 4 miliardë. Pra, kjo do të thotë tavolina juaj bazës së të dhënave mund të kanë katër miliardë përdorues dhe kjo është ajo. Pra, kjo është një interesante Dizajni Implikimi. Një numër i mirë i kompanive kanë vendosur, ndoshta jo aq shumë për tryezën përdoruesit e tyre, sepse ka 4 miliard përdorues është një problem i rrallë. Kjo është lloj i një Facebook-style problem, nuk është një problem tipik kompani. Por ndoshta në qoftë se ju keni shkrimet e transaksionit ose një lloj i të dhënave që vazhdimisht merr e shkruar në bazën e të dhënave tuaj që absolutisht mund të ketë miliarda dhe miliarda rreshtave, dhe ju përdorni një numër të plotë për të, se çfarë do të ndodhë sa më shpejt që që ju të merrni në rresht numrin 4 miliardë dhe pastaj ju të përpiqet për të futur në 4000000000 dhe 1, kështu që të flasin? Unë jam thjeshtimi numrat a bit. Ju mund të prerë përsëri, unë do të thotë të kanë për të trajtuar atë disi. Dhe çfarë një kompjuter zakonisht do të bëjë, mendoni rreth saj edhe nga ky mëngjes, në qoftë se ju keni një vlerë 4-bit si 1, 1, 1, 1, e cila, vetëm për të lidhin në mëngjes së bashku për të pasdites, çfarë bën ky numër përfaqëson në binar? OK, ne do të bëjë më të lehtë. Çfarë e bën këtë numër përfaqësojnë në binar? OK, ne do të bëjë më të lehtë, çfarë e bën këtë të përfaqësojë në binar? AUDIENCA: Tre. DAVID Malan: Three, sepse ne kemi ato column-- [Qeshura] Uf! Ne kishim ato të kolonën dhe kolona twos. Pra mendoj se, me të vërtetë, tona [? tokë e punueshme?] nuk ishin 32 bit, por ishin dy copa, ne mund të mbështeteni nga numër 0, 1, 2, 3 përdoruesi, dhe pastaj ne jemi lloj i Kthehu ne 00 herë. Pra, kjo është ajo që ndodh zakonisht. Nëse ju keni dëgjuar ndonjëherë expression-- ndoshta nuk kanë, por nëse ju have-- overflow integer, ku ju mbajtur flipping të gjitha copa tuaj të jenë vlerat më të mëdha të mundshme, dhe pastaj ju jeni jashtë copa, çfarë do të ndodhë zakonisht? Pse them 00? E pra, kjo është tre. Si mund të përfaqësojnë 4? Si mund të përfaqësojë për numrin 4 në binar? AUDIENCA: [padëgjueshme] DAVID Malan: One-- yeah, nuk po them 100 në vetvete, për shkak se ajo ka gabuar konotacion, por 1-0-0. Kështu që numri 1-0-0 është me të vërtetë e saktë, por në qoftë se ju keni vetëm dy copa, çfarë ke bërë me të vërtetë? Ju keni mbështjellë mbi të 00. Dhe me të vërtetë, kjo është ajo që do të ndodhë. Në fakt, ju mund të mendoni për këtë më shumë ceremoni. Nëse ju kujtohet, çfarë, 16 vjet më parë, bota ishte menduar për t'i dhënë fund, kur problemi Y2K ndodhur. Pse ishte kjo? Dhe shumica e kompjuterëve, për vendime të arsyeshme, janë ruajtur numrat pëlqen vitit 1975 ose viti 1999 duke përdorur vetëm dy shifra në kujtesën e kompjuterit. Pra, natyrisht, çfarë ndodh kur të shkoj në vitin 2000, ju shkoni në këtë, ose më mirë, po. Pra, ju shkoni në vitin 2000, por në qoftë se ju jeni vetëm duke përdorur dy shifra duket si vitin e 00 dhe kështu që ju keni përmbys. Dhe kjo është arsyeja pse shumë sistemeve të nevojshme për të përditësuar në atë kohë. Pra, me tha se, kompanitë si Facebook drejtuar kundër kësaj. Pra, mënyra e vetme për të trajtuar Situata, sinqerisht, është të parashikojnë atë. Ose mënyra pastra të të trajtuar këtë situatë është që të parashikojnë atë kështu që ju nuk e bëni duhet për të bërë ndryshime më vonë. Pra, në vend të 8 bytes, ju e dini se çfarë? Unë do të jetë përpara-menduarit këtu, edhe pse është e pak optimist se ne do të kemi 4 miliard dhe 1 përdorues në faqen tonë të internetit. Por le të përdorin vetëm 8 bytes, ose 64 bit, e cila do të jetë në përgjithësi quajtur një numër i plotë i madh, shumë teknik. Dhe kjo vetëm do të thotë që ju mund të keni edhe më shumë shifrat në numrin tuaj. Por kjo është një e rëndësishme Vendimi projektimit, sepse në qoftë se ju zgjidhni një numër që ka shumë pak pjesë të shprehurit ju në fakt mund të krijojë një bug në software tuaj. Të gjithë të drejtë, kështu që le të mbyllë me email dhe adresën postare. Pra email, sa kohë duhet një adresë e-mail të jetë? 50. Unë me të vërtetë nuk kanë asnjë ide, por është e ndoshta diçka të tillë, sepse përndryshe askush nuk do të shkruani ju në qoftë se ajo merr një kohë të gjatë, kështu që 50, le të shkojë me të tani për tani. Adresa e AK, sa kohë duhet që të jetë? AUDIENCA: [padëgjueshme] DAVID Malan: Kjo nuk është vetëm një kod zip, pse. Adresa e AK, kam dëgjuar. Pra, kjo është si 1 Brattle Square, presje, Cambridge Mass., presje, 02138. Dhe në fakt, më lejoni vetëm të tërheqë up një pune të vogël këtu. Kjo ndjehet si ajo është një mundësi e humbur. Në qoftë se ne kemi 1 Brattle Square, presje, Cambridge MA 02138, Ndjehem si ne mund të bëjmë më mirë se vetëm adresën postare. Pse nuk shpërthejnë këtë pak? Çfarë jam unë duke marrë në? Çfarë duhet të ketë vend për rreshtat tanë këtu, ndoshta? AUDIENCA: [padëgjueshme] DAVID Malan: Yeah, kështu që le të e quajti atë street_number, dhe një nënvizuar është vetëm një e zakonshme mënyrë për të pasur atë që duket si një hapësirë, por kjo nuk është, në të vërtetë. Street, dhe pastaj qytet të vjen keq? AUDIENCA: [padëgjueshme] DAVID Malan: Ne mund ta bëjë këtë. Line një, dy linjë. Pse nuk do të mbajë atë të thjeshtë për tani, por kjo është absolutisht e një vendim i pranueshëm. Dhe pastaj shteti, dhe pastaj le të të jetë pak i SHBA-centric për tani dhe vetëm të bëjë kodin zip, vetëm për shkak se ajo do të çojë në një gabim interesante apo problem këtu. Pra, mendoj se tani është adresa jonë. Kjo është pak më shumë i bezdisshëm se ne kemi të gjitha këto fusha të tjera, por tani ne mund tag gjërat pak më mirë. Numri kështu që tani street ndoshta nuk duhet të jetë një char, duhet ajo? Çfarë duhet të jetë? AUDIENCA: [padëgjueshme] DAVID Malan: Ndoshta, një numër si një numër të plotë përsëri? Një numër i plotë i madh? Ju ndoshta nuk jetojnë në 4 miliardë Main Street apo diçka të çmendur të tillë. Pra, numër i plotë është ndoshta mirë, por ka askënd jetuar ndonjëherë në një adresë si 1A Brattle Square, ose 1 dhe 1/2? Këto gjëra ekzistojnë, për fat të keq, edhe në qoftë se ju nuk e keni jetuar atje, ka këto anomali si 1A apartament, 1B, 1C. Kështu që ju e dini se çfarë, ne ndoshta nuk duhet të shkoni me numër të plotë, përndryshe ne jemi duke shkuar për të humbur disa shitjeve. fushë Char, ndoshta? Nuk e di se sa kohë. Kjo ndoshta nuk do të jetë aq gjatë, kështu që 10 apo diçka. Askush nuk do të shkruaj një numër më të gjatë, ndoshta. Por përsëri, ne duhet ndoshta japin më shumë mendim për këtë. Ndoshta google, të bëjë disa hulumtime, por ne do të shkojmë me guxim tona tani për tani. Streets, char, 50, unë nuk e di. Në një moment, askush nuk do për të shkruar atë në një zarf, gjithashtu, kështu që nuk ka të ngjarë some kufijtë e sipërme atje. City, njëjtë, të sigurt, kështu që char 50. State, mund të jetë i SHBA-centric tani për tani. Pra, ajo mund të jetë një listë, kështu lloj e një thirrje gjykimi i shtetit. Kjo mund të jetë si dy karaktere. Kështu në fakt, ndoshta, unë mbajtur duke thënë char. Unë ndoshta do të thotë VARCHAR, vetëm për disa efikasitet, por ne do të kthehen në se vendimi në një moment. Mund të jetë një char me gjatësi 2 për shtetin. Në qoftë se në SHBA ata kanë, si MA, Massachusetts, NY, New York, NJ, New Jersey, e kështu me radhë. Pra, ajo mund të jetë fikse në atë. DC për Washington DC. Por unë mendoj, Olivier, ju propozoi diçka tjetër. AUDIENCA: [padëgjueshme] DAVID Malan: Yeah, kështu që është një pak i bezdisshëm që të shkruani, por një enum mund të bëjë më shumë kuptim, sepse këtë mënyrë, të paktën në SHBA, ju mund të numëroj, nëse tediously, por ju bëni atë vetëm një herë në database tuaj dhe kurrë më nuk duhet të mendojnë për ajo, të gjithë 50 Kodet e dy karaktereve. Kështu që unë si enum. Le të rrinë me se ka, për shkak se ai lloj i zbaton më shumë ashpërsi. Dhe pastaj zip kodin? Mendoj Andrew kishte një mendim mbi këtë AUDIENCA: [padëgjueshme] DAVID Malan: Yeah, pesë ose nëntë. Le të vetëm të mbajtur atë të thjeshtë. Vetëm të bëjë pesë për tani. Por ndoshta unë mund vetëm të të bëjë një numër të plotë, apo jo? Unë mund të, por ju e dini se çfarë, unë bëra ky gabim një herë, në një kuptim. Vite më parë, unë u emigrojnë nga Microsoft Outlook për Gmail, dhe Outlook ka një mënyrë për të eksportuar të gjitha kontaktet tuaja si një file Excel, një skedar CSV, nda me presje vlerave fotografi. Dhe kam bërë gabim, unë mendoj se, për të dyfishtë klikuar atë, sapo kam shkarkuar eksportin, për sigurohuni që ajo dukej si e prisja. Unë duhet të ketë goditur Save ose le auto-save goditje në ose diçka. Sepse kur unë pastaj të importuar atë në Gmail, të gjitha ka punuar. Por për vite me rradhë, në këtë ditë, dhe Unë e bëri këtë pesë, 10 vjet më parë, Unë jam ende duke gjetur miq të cilët kanë adresat që duken si kjo. Pse? AUDIENCA: [padëgjueshme] DAVID Malan: U deshën 0 e, mirë, në vend, atë mori tërë kodin zip, si një numër, dhe për këtë arsye është e një 0 udhëheqëse që do të thotë nuk ka kuptim. Dhe kështu 2138 duket të jetë kodi im zip. Dhe kjo është, sinqerisht, një Excel bezdisshëm tipar të cilin unë mendoj se nga default, edhe në qoftë se ajo është për qëllim të vetëm të jetë tekst, Microsoft Excel vendos, më lejoni të jetë e dobishme, dhe oh, unë shoh vetëm numra. Le të trajtojmë këto si numra. Dhe kjo truncates zero kryesor. Betohem në Zot, çdo çift i muajve të gjej një adresë, dhe nga një lloj OCD, unë kthehem në dhe shtoni 0, edhe pse unë kurrë nuk dërgoni njerëz letra apo ndonjë gjë. Por unë jam ende duke gjetur mbetjet e kësaj. Pra, kjo do të thotë, është kjo një ide e mirë? OK, nuk ka, sepse dikush në Massachusetts, në këtë fushë, do të ketë një o udhëheqës tyre. Pra, le të shkojë me të si char, ndoshta, pesë. Dhe këtu, realizuar ne mund të përdorin një enum dhe ne mund të numëroj 10,000 Kodet e mundshme zip, por ndjehet si ajo është ndoshta kaluar një linjë të, si, përfitime. Nëse keni të dhëna se shumë të dhëna në bazën e të dhënave tuaj për të mbrojtur kundër diçkaje. Pra, char realizuar ju mund të shkruani në H-E-L-L-O si kodin zip, e cila nuk është, padyshim, numerike. Pra, nuk ka asnjë mënyrë, në një bazë të dhënash tipike, të specifikojë vetëm numerike dhe vetëm pesë karaktere të gjatë, kështu që ne do të kemi për të bërë këtë në kod. Ne jemi duke shkuar për të bërë këtë në PHP ose Java apo çfarëdo gjuhe ne jemi përdorur në server për të zbatuar kjo lloj kufizimi. Whoo! Të gjithë të drejtë, kështu që çdo pyetje vetëm ende? Le të bëjë një vendim të projektimit. Ajo rezulton se ju gjithashtu merrni për të zgjedhur, kur të hartonin një bazë të dhënash SQL, ose database-- tipike relacionale ku përsëri, relacionale vetëm do të thotë rreshtave dhe kolonave, kjo është se si ju organizojnë data-- tuaj dhe të kuptojë se çfarë do të thotë kjo, Unë kam qenë mashtruese në që, unë jam drawing-- këtë është ajo që quhet skema për një tryezë bazës së të dhënave. Kjo është si më Specifikimet për table-- por kur vjen koha që në fakt të ruajtur të dhënat, dhe ne do të bëjmë këtë vetëm me shembull këtu. Unë jam duke shkuar për të hapur Excel, sepse Excel do të më japë rreshtave dhe kolonave. Dhe kjo është pikërisht ajo që Oracle dhe MySQL dhe mjete të tjera do të më jepni. Kështu që unë jam vetëm duke shkuar për të përdorur kjo për hir të diskutimit të. Më lejoni të shkoj përpara dhe të hapur një Dokumenti përfaqësues këtu, zoom në një grimë. Kështu për shembull, headers tona janë tani emri, mbiemri, gjinia, ID, email, numrin rrugë, rrugë, uh. Street, qyteti, shteti, vetëm lidhje përshtatet në ekran. Pra, çfarë kjo do të thotë është se kur një përdoruesi i parë regjistron për web faqen time, ajo do të jetë diçka si David, Malan, m, le të themi 1, malan@harvard.edu, numri i rrugës do të të jetë si 1 Brattle Square, Cambridge, MA, 02138, dhe pastaj kështu me radhë. Kështu që kur unë them se një bazë të dhënash relacionale ose bazës së të dhënave SQL është rreshtave dhe kolonave, Unë do të thotë kjo. Që të dhënat aktuale është ruajtur në rreshta dhe kolona. Kjo është vetëm një rastësi, që ne po flasim, dhe unë isha vetëm duke tërhequr atë në rreshta dhe kolona. Ky është vetëm skemë, përcaktimi kryesor. Pra, nga këto fusha këtu, ose ekuivalente, atje, të cilat janë fushat që ju mendoni se Unë jam shumë gjasa për të kërkuar në qoftë se unë jam një përdorues ose në qoftë se unë jam administratori bazës së të dhënave? Si, çfarë fusha ku jam në të vërtetë do të kërkuar për? AUDIENCA: [padëgjueshme] DAVID Malan: Emri, po kështu Më pëlqen fakti that-- yeah, email mund të jetë shumë e zakonshme. Na vjen keq, ju tha emrin. Kështu maybe-- dhe përsëri, ne jemi lloj folur në abstrakte. Unë nuk e di pse ju do të të kërkoni për një emër, por që ndihet i arsyeshëm nëse ju jeni në kërkim për një përdorues. Ndoshta thotë, i sigurt, ID. Dhe kjo është një rrëshqitshëm shpat, sepse unë mund të shpik një skenar ku ndoshta shefi im më ka kërkuar, sa burrat nuk kemi në faqen tonë? Sa shumë gra të kemi ne në faqen tonë? Dhe kështu në këtë pikë, ju mund të dëshironi për të kërkuar në fushën gjinore, gjithashtu, dhe asgjë tjetër. Pra, ka një tregti-off këtu. Përsëri, nuk ka asnjë përgjigje të drejtë, por ka është një tipar në shumicën e bazave të të dhënave SQL i njohur si indeksimit, ku ju, projektuesi, administratori bazës së të dhënave, merrni për të vendosur paraprakisht të cilat fushat e bazës së të dhënave duhet të zgjedh për kërkime në. Ju mund të them shumë naivitet, zgjedh kjo, jam optimist se, zgjedh këtë, zgjedh atë dhe kjo, dhe baza e të dhënave do të një gjë magjike nën individualitet, dhe të bëjë diçka në mënyrë të tillë që herën tjetër që ju të kërkoni në ndonjë nga këto fusha, ajo do të, në fakt, të jetë më i shpejtë. Kjo është e mundur. Ajo nuk e anulon veten jashtë. Por nuk duhet të jetë një çmim i paguar. Nëse ju naivitet, ose mbi-entuziazëm të themi, indeksi të gjitha këto fusha, kështu që të flasin, të bëjnë të gjithë ata efikasitet të kërkueshme, çfarë çmimi po ju ndoshta paguar? AUDIENCA: [padëgjueshme] DAVID Malan: Performance. Çfarë do të thuash? Edhe performance, të paktën në Konteksti unë jam duke diskutuar, është më mirë tani. Ky është përkufizimi i indeksimit. Kjo do të bëjë kërkime të shpejtë. Pra koha zvogëlohet, kështu që të flasin. AUDIENCA: [padëgjueshme] DAVID Malan: Space. Pra, përsëri, këto janë një tregti të zakonshme. Unë mund të përshpejtojë kërkimet tuaja, por kjo është do të ju kushtojë shumë bytes hapësirë. Pse? E pra, si parazgjedhje, në qoftë se ne kemi asnjë këto yje të kuqe, asnjë prej këtyre indekseve, si unë jam duke thënë, si mund të kërkoni për një emër në këtë bazë të dhënash? Pra, le të nxjerrë tonë Vëmendje në këtë shembull. Në qoftë se ne kemi Davidin dhe Scully dhe Kareem dhe Arwa dhe të tjerët në këto rreshta, për shembull. Pra, le të bëjë pikërisht këtë. Scully është këtu, dhe pastaj ne kemi Kareem, dhe arwa, dhe të gjithë të tjerët, në qoftë se ju nuk e bëni kanë një indeks të përcaktuara, në mënyrë që të flasin, më e mirë që ju mund të bëni është të kërkoni linear. Nëse ju kërkoni për arwa, ne nuk jemi do të jetë në gjendje të hidhen të drejtë të saj shpejt. Ne jemi duke shkuar për të filluar të lartë dhe të shkojnë të gjithë rrugën në fund, jo ndryshe nga origjinali tonë Shembulli Mike Smith. Nëse, megjithatë, unë them, hej, bazës së të dhënave, Indeksi fushën e parë e emrit, atëherë ajo do të bëjë diçka njohës dhe mbështetjen diçka si kërkim binar. Kjo nuk është ndoshta kërkimit binar në vetvete. Bazat e të dhënave tendencë për të përdorur një tjetër Struktura e të dhënave të quajtur b-pemë, nuk duhet të ngatërrohet me pemë binare, që vetëm të bëjë atë më të shpejtë për të kërkuar diçka logaritmike në natyrë. Por çmimi që ju paguani për të ndërtuar atë karakteristike, se struktura e të dhënave në kujtesë, është më shumë bytes. Pra, ajo mund të marrë disa megabajt, disa gigabajt, kush e di? Kjo varet nga të dhënat. Pra, në një moment, ju duhet të vendosë, kjo ndoshta nuk është një rast i zakonshëm. Pra, çfarë janë të zakonshme aktuale raste, në qoftë se jeni të vërtetë kishte për të zgjedhur, çfarë mund të jetë e preferuar arat e tua? Email. Dhe unë si e-mail, sepse e-mail, në teori, duhet të jetë unike. Dhe kështu në mënyrë tipike, kur ju e dini më parë se një nga fushat e tua është ose do të jetë unike, që ka tendencë të jetë një fushë e mirë për të kërkuar në, për shkak se në këtë mënyrë, kur ju kërkoni për diçka, ju jeni duke shkuar për të marrë përsëri një apo zero përgjigjet dhe pastaj ju jeni bërë. Ju nuk keni për të mbajtur në kërkim të ende të tjerët. Dhe kështu në këtë rast këtu, email, aq kohë sa ju nuk mund të regjistrohen dy herë me të njëjtën e-mail, është një e mirë. ID sipas definicionit, në shkenca kompjuterike botës, në qoftë se ju jeni duke folur në lidhje me një ID, që ishte më mirë të jetë unike. Kjo është lloj i konotacion e letërnjoftimit ose identifikues. Dhe pjesa tjetër e tyre mund të jetë, le të quajmë ato mirë për të haves, por nuk kërkohet të vërtetë. Dhe kështu në një bazë të dhënash, ju specifikoni indekseve, por ju mund të jetë edhe më i saktë. Ju mund të thoni, hej, bazës së të dhënave, të sigurt se çdo ID në këtë tabelë është unik. Mos edhe le një programues vënë aksidentalisht në një email të kopjuar ose kopjuar numrin identifikues. Aq shumë si enums na mbrojë në mënyrë të ngjashme, ju mund të kenë ato mbrojtëse të nivelit më të ulët. Dhe kështu dizajn bazës së të dhënave, në një kuptim, është lloj i argëtim, për shkak se ju bëni atë në mbrojtje. Ju lloj të supozojmë se ju punoni me tmerrshme, programuesit tmerrshme dhe ju doni për të vënë në sa më shumë mbrojtëse si ju mund të për të mbrojtur të dhënat tuaja, por në të njëjtën kohë që ju dëshironi për të ndihmuar ata të kryejnë më mirë duke zgjedhur cila fusha të zgjedh për. Por ju nuk mund domosdoshmërisht të bëjë atë në një vakum si ne lloj këtu. Ju keni marrë të dini se çfarë janë ato raste të shpeshta kanë qenë. Në qoftë se zhvilluesit janë zbatimin e një libër adresa, ju mund shumë mirë të duan të jenë në gjendje për të kërkuar në pothuajse çdo fushë, vetëm nga natyra e kërkesës. Pra, ndoshta keni shpenzuar se hapësira shtesë. Drejtë, ndonjë pyetje? Po. AUDIENCA: [padëgjueshme] DAVID Malan: No. AUDIENCA: [padëgjueshme] DAVID Malan: OK. AUDIENCA: [padëgjueshme] DAVID Malan: Oh, kështu që ne janë duke folur në mënyrë të tani që është plotësisht i gjuhës agnostik. Pra, ne po flasim tani rreth Bazat e të dhënave relacionale më në përgjithësi, ose SQL bazat e të dhënave më në përgjithësi. AUDIENCA: [padëgjueshme] DAVID Malan: Një fjalë e mirë për të përdorur po, mund të përdoret nga çdo gjuhë. Kështu që unë mund të shkruani kodin JavaScript, C Kodi code, C ++, Java kod, kodin Ruby, të cilat flasin për një bazës së të dhënave dhe të ekzekutojnë pyetje. Në fakt, kjo nuk është një e keqe segue një pyetje shembull. Dhe përsëri, ne nuk jemi duke shkuar për të shkuar në Java ose C ++ apo ndonjë nga të cilat më, por në SQL, gjuha në të cilën unë të mbajtur duke iu referuar, strukturuar Query Language, kjo në vetvete është një gjuhë programimi, por ajo është menduar për t'u përdorur për, asnjë papritur, i strukturuar query pyetje. Me këtë dua të them këtë. Mënyrë që ju të zgjidhni të dhënat nga një bazë të dhënash MySQL është fjalë për fjalë ju shkruani në programin tuaj diçka si të zgjedhur yll nga përdoruesit. Unë jam duke supozuar se kjo tabelë, tani e tutje quhet përdoruesit. Unë mund të telefononi atë çdo gjë që ne duam, por kjo lloj kuptim. Dhe kështu të zgjedhur është një shumë folje të zakonshme, në qoftë se ju do të, në SQL, që fjalë për fjalë e bën këtë. Çfarë mendoni star do të thotë në këtë kontekst? AUDIENCA: [padëgjueshme] DAVID Malan: Unë jam i keq? AUDIENCA: [padëgjueshme] DAVID Malan: Nuk kërkohet, është e më përfshirëse se kaq, në të vërtetë. Është karakteri egër card. Star pothuajse gjithmonë do të thotë asgjë, kështu që kjo do të thotë, në këtë rast, zgjidhni çdo gjë nga bazën e të dhënave. Pra, kur them këtë, dua të them të më kthejë çdo kolonë nga tryezën time të quajtur përdoruesit. Pra, më jepni një sërë rezultat, siç është quajtur. Me fjalë të tjera, më jep mua një kopje të spreadsheet, është ajo që unë jam marrë në. Por në qoftë se unë i thashë zgjidhni yll nga përdoruesit ku ID e barabartë me 1, sa e madhe duhet Rezultati set im të jetë atëherë? Ose ekuivalente, sa rreshtave duhet I dorëzohet kthyer nga bazën e të dhënave? Ndoshta vetëm një, nëse kam të vërtetë trajtohet ID si një identifikues unik, dhe në qoftë se David ka se ID unike, I duhet të kthehet një dhe vetëm një rresht që përmban të gjitha të dhënat e Davidit. Nëse kam thënë këtë kur ID është e barabartë me 99, unë duhet të kthehet, në këtë kontekst, zero rreshta, të paktën në momentin. Megjithatë, në qoftë se unë nuk e kujdesit të vërtetë në lidhje me të gjitha informatat se, Unë vetëm mund të them, ku jeton David? Zgjidhni kodin zip nga Përdoruesit ku ID është 1. Kjo do të përzgjedhë vetëm mua zip Davidit Kodi dhe jo tërësia e atë rresht. Pse mund të bëj këtë në vend të pyetja yll, kartë e egër? AUDIENCA: [padëgjueshme] DAVID Malan: Po, unë mund të kenë nevojë vetëm atë. Pra, performanca është përsëri përgjigje këtu. Pse kërkoni më shumë informacion se sa ju duhet, sepse edhe në qoftë se kjo është e gjitha e drejtë së bashku, ju ende duhet të kopjoni këto të dhëna, kjo do të duket, nga të preferuarat! në programin tuaj një farë mënyre, dhe kjo është vetëm pa kuptim, nëse ju duhet vetëm pesë nga këto shifra, jo tërësia e rreshtit. Pra, si mund të futur një përdorues? Supozoni se një përdorues ka vetëm regjistruar për herë të parë. Sintaksa zakonisht do të duket si ky. Fut në përdoruesit, dhe atëherë ne do të thotë vlera, dhe pastaj ne do të thonë se vlerat si, le të themi, Lauren Scully, videographer ynë këtu. Dhe fusha tjetër është gjinor. Pra, ne do të themi quote, mbyll thonjëzat "F", atëherë ne kemi një ID dhe unë jam duke shkuar për say-- le sikur ajo nuk është në të vërtetë këtu, kështu që ne do Rewind në histori. Pra, 2 do të jetë ID i saj. Dhe pastaj në fushën e ardhshme këtu është email saj. Kështu ajo do të jetë si Lauren Scully dhe kështu me radhë, dhe ne vetëm do të dot dot dot atë larg nga këtu në. Tani ajo do të marrë pak lodhshëm, por insert query në fund të fundit do të duket si kjo. Nëse unë dua të shpëtoj prej Scully, uh-oh, le të çregjistrohen saj, ajo e fshin llogarinë e saj, fshirë nga përdoruesit ku ID është e barabartë me 2, do të të shpëtoj nga Scully. Ose unë mund të them përdoruesve përditësimin e caktuar, le të themi, çfarë mund të ndryshojmë? Mendoj se ajo lëviz. Set zip barabartë 021-- nope, kjo është zip saj aktuale. 90210. vetëm code tjetri zip Unë e di se në botë. Kështu që do të ndryshojë zip saj code-- fakt, kjo nuk do të ndryshojë kodin e saj postar. Çfarë kam vetëm të bëjë? Edhe pse sintaksa është ndoshta e re. AUDIENCA: [padëgjueshme] DAVID Malan: Yeah, unë u zhvendos të gjithë të Beverly Hills, Kaliforni. Kështu që unë duhet të vërtetë se ku ID e barabartë me 2. Dhe kështu me radhë. Pra SQL është mbi të gjitha këto llojet e udhëzimeve. Zgjidhni, futur, fshini, update, me këto predikateve në fund këto dispozita ku, kështu që të flasin. Dhe ka shumë më tepër ju mund të bërë, por me të vërtetë vetëm vlon të thjeshtë, nëse arcanely, duke shprehur atë që ju dëshironi bazës së të dhënave për të bërë. Dhe pastaj baza e të dhënave do të kuptoj se, kur ju futur Lauren Scully në të bazës së të dhënave, ku për të vënë atë në kujtesë kështu që ne mund të marrë shumë shpejt saj bazuar në adresën e saj të e-mail ose bazuar në numrin e saj të identifikimit ose të ngjashme. Po, Dan. AUDIENCA: [padëgjueshme] DAVID Malan: pyetje e vërtetë të mirë. Do të ndryshojë këto Scripts nga Microsoft Access për Oracle për MySQL për PostgreSQL? Përgjigja e shkurtër është ajo varet. Në teori, nuk është një shumë e mesin e konsiderueshme e zakonshme e SQL që është ndarë në të gjithë nga këto Implementimi. Megjithatë, prodhuesit të ndryshme kanë shtuar karakteristika të bazave të të dhënave të tyre për të bërë gjëra të caktuara përtej fushëveprimit të këtyre tipareve, që mund, në fakt, pushim. Pra, mënyrën se zhvilluesit gardh kundër kësaj, është se në vend se të shkruarit para Kodi SQL si unë jam shkrim këtu, Ata në vend që të përdorin një bibliotekë, një bibliotekë të përbashkët që në vetvete është lloj më të lartë të nivelit dhe përmbajtjes larg se cili produkt ju jeni duke përdorur. Dhe kjo ju jep funksionet dhe procedurat e për të thirrur në mënyrë që ju kurrë nuk në fakt shkruani SQL papërpunuara. Në teori, atëherë, ju mund të ndryshojë Produktet nga Oracle në Microsoft ose anasjelltas apo ndonjë gjë tjetër, dhe ju fjalë për fjalë të ndryshojë asgjë në lidhje me kodin tuaj. Realiteti, megjithatë, është, ju ndonjëherë të heqë dorë nga karakteristika si rezultat i kësaj. Ju mund të keni zgjedhur një produkt për shkak atë e mori këto karakteristika me vlerë të shtuar, dhe ju jeni vetëm tani nuk përdorimin e tyre me vetëdije. Dhe anecdotally, shumica e kompanive kanë tendencë kurrë për të lëvizur larg nga database e tyre. Kështu, ndërsa kjo është një e mirë për të kanë funksion, realiteti është, në qoftë se ju jeni rregullimin bazës së të dhënave tuaj, ju jeni ndoshta duke e bërë bunches e ndryshimeve të tjera gjithsesi, se ju nuk domosdoshmërisht duhet të parashikojnë se. Pra, kjo është ndoshta mbi-inxhinieri problemin, por me të vërtetë varet nga konteksti. Por, në teori, SQL është e ndarë të gjithë këto produkte të ndryshme. pyetje të vërtetë të mirë. Po. AUDIENCA: [padëgjueshme] DAVID Malan: Yeah, kështu ju mund të mendoni një bazë të dhënash është vetëm një server, në fund të ditë, dhe brenda atë server është një bandë e tërë e tavolina, rreshtave dhe kolonave. Dhe kur ju të dërgoni një pyetje si kjo nga programin tuaj, faqen tuaj te internetit, shkruar në Java, Ruby, Python, çfarëdo, serveri po merr këtë komandë dhe interpretuar atë në fjalë për fjalë në të njëjtën mënyrë kemi diskutuar më parë me Gjuhë të interpretuar, dhe pastaj të kryer disa veprime në zero ose më shumë rreshta në zero ose më shumë tabelave. AUDIENCA: [padëgjueshme] DAVID Malan: Pikërisht, saktësisht. Pra, të pseudokod për diçka si kjo mund të jetë kjo. Në dosjen tuaj PHP ose tuaj fotografi Python ose dosja juaj Java, ju do të keni kodin pseudocode, ose Scratch-si blloqe si, në qoftë se vizita e përdoruesit acme.com/register~~V për herë të parë, pastaj futur në përdoruesit e kështu me radhë. Dhe ne do të përkthehet kjo për më code konkrete në fund. Por me të vërtetë, ne kemi të gjithë blloqet ndërtuese këtu, edhe pse ne jemi duke lënë mënjanë disa nga hapat e zbatimit. Pra më lejoni të grindem me çfarë ne mrekullisht ka vetëm një moment më parë. Ju keni krijuar një goxha Tabela e plotë për përdoruesit. Pa dyshim, ne mund të zbatojë në disa mënyra të ndryshme, por ju keni në fakt na çoi poshtë path-- dhe unë them ju, por kjo është ndoshta fault-- e mia të një mjaft Zbatimi i bazës së të dhënave joefikase. Kjo nuk është normalizuar. Dhe duke normalizuar unë do të thotë atje do të jetë, me kalimin e kohës, një tepricë të konsiderueshme, dhe për këtë arsye joefikasiteti, kjo është humbje e hapësirës. Bazuar në vetëm atë që ju shihni këtu, mund të ju parashikojnë ku mbeturinat e hapësirës do të vijnë nga, me kalimin e kohës, si të regjistruar përdoruesit e më shumë për faqen tuaj te internetit? Çfarë të dhënash mund të bëhen të tepërta? AUDIENCA: [padëgjueshme] DAVID Malan: Pse do të thotë kjo? AUDIENCA: [padëgjueshme] DAVID Malan: Po. Dhe le të supozojmë për qëllime sot që kjo është e vërtetë. Rezulton se, dhe ne kemi mësuar këtë rrugën e vështirë, që nuk është e vërtetë. Disi qytete të shumta kanë, një farë mënyre, e njëjta kodin zip, i cili thyen këtë intuitë të mrekullueshme. Por le të supozojmë se është e vërtetë, sepse kjo është pothuajse gjithmonë e vërtetë. Pra, mendoj se një kod zip gjithmonë të lidhur me të njëjtin qytet dhe shteti, që është lloj i supozimit të arsyeshme, por jo korrekte, ajo rezulton. Por një supozim i arsyeshëm për qëllime të sotme. Pastaj mendoj se unë jetoj në Kembrixh, MA, sipas tabelës së këtij përdoruesi, dhe mendoj se Lauren Scully jeton në Cambridge, MA, dhe mendoj se Kareem jeton në Cambridge, MA, dhe Arwa jeton në Cambridge, MA, të gjithë ne në 02138. Pse jemi kujtuar Cambridge, MA, 02138 për të gjithë katër prej nesh? Çfarë duhet të mjaftojë për të kujtuar? AUDIENCA: [padëgjueshme] DAVID Malan: Vetëm kodin zip. Vetëm se 02138 ekziston, për shkak se ju e dini se çfarë ne mund të bëjmë? Ne mund të marrë një dashuroj pak këtu dhe këtu, të përcaktojë një tavolinë ku kjo do të jetë emri, kjo do të jetë lloji, kjo do të jetë gjatësia, dhe tani e tutje, unë jam do të thërrasë këtë tryezë qytetet im. Kjo u quajt, i Natyrisht, tryezë përdoruesit im. Dhe kështu që ajo duhet të kam vënë këtu për tryezën qytetet time, mendoni ju? AUDIENCA: [padëgjueshme] DAVID Malan: Po. Pra, zip dhe shtetin dhe qytetin. Dhe kështu lloji këtu, ne do të themi kjo do të jetë një char 5 herë, subjekt i debatit të parë. Kjo do të jetë një enum, ndoshta si para, dhe qyteti do të jetë një VARCHAR 50. Dhe kështu që tani se çfarë mund të shkoj për të fshirë nga kjo tabelë për të eliminuar atë joefikasiteti? AUDIENCA: [padëgjueshme] DAVID Malan: Bukur. Shtetit dhe të qytetit të shkojnë larg, kështu që unë kam tani eliminuar mungesën e efikasitetit të mundshëm për redundantly kujtuar, Cambridge, MA, Cambridge, MA, Cambridge, MA, Cambridge, MA, e cila, me shpresë kurrë nuk do të ndryshojë. Dhe edhe në qoftë se ajo bën, është e minorly bezdisshëm, tani që unë duhet të ndryshojë në radhë të shumta, kurse këtu, unë mund vetëm të ndryshojë atë në një vend. Tani ajo është tregti-off, ndoshta? Kjo ishte super i përshtatshëm. Sikur të gjitha të dhënat e mia bukur së bashku. Por ajo që është e qartë rasti tani? AUDIENCA: [padëgjueshme] DAVID Malan: Pikërisht, dhe unë jam i kënaqur që përdoret fjala bashkuar, sepse kjo është në fakt fjalen, në botën e bazave të të dhënave relacionale në SQL, kjo është një fjalë e vërtetë që mund të shkruani ose të paktën të përcjellë. Dhe në fakt, ajo që ne tani kemi të bëjmë për të përzgjedhur informacionin e plotë Davidit është diçka si të zgjedhur nga ylli përdoruesit, të bashkohen qytete, on-- dhe tani Unë jam duke shkuar për të vetëm të shkojë në një linjë të dytë në mënyrë që ky users.zip fits-- barabartë cities.zip, ku users.ID barabartë 1. Pra, çfarë po ndodh? Është e shëmtuar në kërkim, por ju mund të lloj lexuar të majta në të djathtë, lart poshtë. Zgjidh star nga përdoruesit është e njëjtë si më parë, por kjo nuk është nga përdoruesit, në vetvete. Është nga përdoruesit bashkohen qytete. Çfarë jam unë duke u bashkuar ato dy tavolina në? E pra, me sa duket, përdoruesve tavolina zip fushë, dhe kjo periudhë është vetëm special Sintaksa për të shprehur këtë ide, dhe kjo është tabelat qytetet zip fushë. Unë dua që ata të dy të jenë të barabartë, por unë dua të në fund të fundit të zgjedhur vetëm ata rreshta ku ID në tabelën e përdoruesit është e barabartë me 1, i cili ka ndodhur të jenë të mitë. Dhe vetëm të jetë i qartë, një programues, zakonisht kur hardcode diçka si numrin 1, sepse përndryshe vetëm në faqen e internetit mbështet David ose përdoruesit e parë, ju në vend të kësaj do të bëjë diçka si ID, ku kjo paraqet një ndryshueshme, diçka që mund të ndryshojë me kalimin e kohës, të ngjashme në frymë me atë që thashë më parë me këto lloje të placeholders. Por tani për tani ne vetëm do të hardcode atë si 1. Dhe kështu, çfarë do të thotë kjo? E pra, një mënyrë e mirë për të kujtoj këtë është se nëse kjo dorë është tabela e përdoruesve, dhe kjo dorë është zips tavolinë, ne jemi lloj finding-- dhe këshilla e gishtat e mi janë zip këtu, dhe këshilla e gishtat e mi këtu janë zip, ju jeni lloj interlocking atë në mënyrë që ju të merrni përsëri rezulton Tabela origjinale, me të vërtetë të bashkuar dy pllakat në fushë të përbashkët. Dhe kjo nuk duhet të jetë zip. Kjo mund të jetë më e çdo gjë tjetër, por zip është e mirë, për shkak se një, është e shkurtër, dy, është gjithmonë njëjtën gjatësi, kështu që nuk ka një efikasitet të vërtetë për atë Olivier propozuar këtu me factoring jashtë zip, dhe [Padëgjueshme] duke propozuar që të shpëtoj e qytetit dhe shteteve. Pra, ky është proces i njohur si normalizimit. Çdo pyetje mbi atë? E pra më lejoni të theksoj kjo është lloj gjëra, edhe pse kjo është mjaft e nivelit të ulët, ky diskutim, që ju do të mendoni ju jeni lloj i gjetjes së humbur në barërat e këqija, kjo është një manifestim i mjaftueshëm mundësi për zhvilluesit që të jetë e keqe. Dhe në fakt, edhe kur, në Kurse unë e kam mësuar, kur ne kemi pasur, për shembull, të papërvojë programuesit universitare ndërtuar faqet e internetit, në shikim të parë, faqet e internetit mund të duket i frikshëm. Dhe ata kanë të gjitha të funksionalitetin që kërkohet, zhvilluesit e bëri një punë të mirë. Por ata nuk e dinë domosdoshmërisht të mjaftueshme për hartimin e bazës së të dhënave ose ata nuk mendojnë shumë të mjaftueshme për llojet e të dhënave dhe llojet e përdoruesve të Faqja e internetit do të ketë, dhe ne gjejmë, pra, gjashtë muaj më vonë, pasi ata kanë diplomuar ose lëvizur në, që mallkonte atë, faqen tonë të internetit është me të vërtetë, me të vërtetë i ngadalshëm. Dhe unë nuk jam edhe duke folur për të pasur miliona apo mijëra e përdoruesve. Unë do të thotë disa qindra përdorues në kampus, të cilët si për të, për shembull, dyqan për kurset të njëjtën kohë, ata janë duke përdorur këtë katalog kurs Aplikimi I përmendur dhe gjë po bëhet me të vërtetë ngadalshëm, sepse nuk ka pasur indekseve. Nuk ka pasur yje të kuqe, në mënyrë të flasin, ose ne nuk kishte domosdoshmërisht faktorë nga të dhënat e përbashkëta për marrë disa kursime të hapësirës. Dhe kështu, kur verifikimit një zhvillues ose personi bazës së të dhënave apo si, llojet e pyetjeve të mendojnë përmes është edhe më, me rastin e shqyrtimit kodin e dikujt, do të thotë, jo domosdoshmërisht të duket nëpër të gjitha kodin e tyre, dhe thuaj: le të shohim përmes tabelave bazës së të dhënave. Çfarë po ruajtjen? Dhe pastaj për të thënë, mirë, prisni një minuta, pse jeni duke përdorur një numër të plotë? Po në qoftë se ne kemi 4 miliard dhe 1 nga këto rreshta? Dhe këto lloje të pyetje është një mundësi për të lloj të shtyjë mbrapa dhe marrë një kuptim të ku në qoftë se ju nuk jeni të kënaqur duke bërë ajo, që dikush më shumë teknike pyesin këto pyetje, e nëse janë apo jo personi me të vërtetë e di stuff e tyre. Dhe kjo është lloj i stuff, gjithashtu, se njerëzit në interneti që janë vetë-mësohet, ndoshta mësojnë më rrallë, sepse ju nuk vijnë domosdoshmërisht të gjithë atë sa më shumë, për shkak se ju mund të merrni baza e të dhënave dhe drejtimin, por nëse nuk e keni lexuar deri në mësime apo të qenë tha në lidhje me normalizimin bazës së të dhënave dhe indeksimit dhe të performancës, Këto janë llojet e gjërave të cilat do të ju lënduar. Dhe ju mund të mendoni, ose një inxhinier i keq mund të thonë, oh, edhe, pay ne më të mirë për një bazë të dhënash të madh ose një bazë të dhënash më të shpejtë ose thjesht të hedhur para në këtë, shkallë vertikalisht, jo domosdoshmërisht kështu. Nëse ju shkoni in-- dhe ju mund të shkoni në pas indekset fact-- dhe të shtoni, dhe ajo mund të marrë disa orë për bazës së të dhënave për të ndërtuar ato të dhëna të reja strukturë që kam përmendur më herët, ju prapë mund të rregullojmë këtë pas faktit, se kjo është ajo ku ju fillojnë të dallojnë designers mirën nga e keqja designers, jo vetëm estetikisht, por performanca e-urtë si. Ndonje pyetje? Nuk ka? Pra, për NoSQL, që ishte lloj tjetër të dhënave për të cilat kam përmendur më parë, ju nuk keni rreshtave dhe kolonave. Në vend të kësaj, ju do të keni diçka që duket pak më shumë si kjo. Unë jam duke shkuar për të përdorur sintaksë të përbashkët. formatimin e teksteve kaçurrel të ndodhë me të përdoret këtu mjaft shumë. Ju mund të keni diçka si emri i parë është David, ju mund të keni kaluar Emri është Malan, citate, ju mund të keni ID is-- më falni, ID whoops-- është 1, mail-i është malan@harvard.edu, dhe unë nuk do të bother shtypur nga pjesa tjetër, dhe më pas disa gjëra të tjera. Me fjalë të tjera, kjo është një përfaqësim tekstuale e asaj që ne në përgjithësi do të thërrasë një objekt në një program kompjuterik. Dhe një objekt është përgjithësisht vetëm një koleksion i çifte me vlerë të rëndësishme. Pra, përsëri, kjo temë e përsëritur. Ne pamë çifte vlerë kyçe në HTML, pamë palë kyçe vlerë tani në kuadër të bazave të të dhënave, dhe ne pa palë kryesore me vlerë në kontekstin të, unë mendoj se, një gjuhë më herët sot. Mban vjen deri. Dhe me të vërtetë, kjo është me të vërtetë ajo boils poshtë për të dhënat, dhënat dhe metadatat, ose vlera dhe çelësat, respektivisht. Pra, një jo-relacionale bazës së të dhënave, diçka e bazuar në objekte, ku ju vetëm grumbull çdo gjë së bashku dhe e vënë atë në kujtesë, në përgjithësi do të jetë foto si, ose menduar, pasi kjo. Dhe unë do të iki që tani si një lloj qasje alternative. Dhe nuk është domosdoshmërisht më mirë se sa të tjera. Në fakt, shumë në modë këto ditë janë sisteme të bazës së të dhënave si MongoDB dhe Redis dhe disa mjete të tjera të tilla, të lirë në dispozicion, por ato janë gjithnjë en modë. Pjesërisht për shkak se ato ofrojnë shtesë Karakteristika mbi këto qasje tabelore, por edhe për shkak se ata janë të pak më e lehtë për t'u përdorur, sepse ju nuk duhet të mendojnë si të vështirë në lidhje me një shumë prej këtyre vendimeve të projektimit. Pra, pluset dhe minuset. Pra kuptojnë ka opsione përtej asaj që ne vetëm kaloi kohë në. Pra, le ta bëjmë këtë. Le të tranzicionit pak mbrapa tani për programimin e web, në mënyrë që ne lloj të konkludojmë sot me diçka kjo është një duart-në të vogla, duke plotësuar në disa boshllëqe nga dje. Më lejoni të shkoj në këtë pjesë të parë. Pra, kujtojmë se dje kemi pasur disa kanonike HTML faqet që kishte fillimisht, vetëm HTML, dhe pastaj së dyti kishte CSS, Cascading Style Sheets. Kjo është një tag të re që nuk e bëri parë dje, ose të banojë në vënde, ashtuquajtura tag script. Rezulton nga ju në fakt mund të embed një Gjuha e quajtur JavaScript në web tuaj faqe dhe të bëjë web tuaj faqet të bëjë diçka. Pra, çfarë do të thotë me këtë? E pra, më lejoni të shkoj përpara dhe vetëm hua këtë kod për një moment. Unë jam duke shkuar për të shkuar në Cloud9, nuk ka nevojë për të shkuar atje veten vetëm ende, dhe unë jam duke shkuar për të thirrur këtë alert.HTML. Unë jam duke shkuar për të ngjitur në dosjen time këtu. Dhe vetëm për të sqaruar atë që unë kam bërë, le të shkoj në këtë adresë dhe të shkojnë për të njoftuar, dhe ju shihni Përshëndetje Botërore. Por kjo është lloj i underwhelming. Unë dua të bëj diçka pak më ndryshe. Kështu që unë jam duke shkuar për të vërtetë të bëjë këtë. Unë jam duke shkuar për të shkuar në këtu e, dhe në mes tags mia shkrimit, thonë alarm ( 'hello, bota'); kështu njoftim kjo është pak i lëngshëm, por unë kam marrë HTML, brenda së cilës është a gjuha e quajtur JavaScript, dhe kjo është ajo që quhet një thirrje funksioni ose telefononi procedure. Kjo është një folje, fjalë për fjalë, në këtë rast, dhe unë jam duke u thirrur kodin funksionalitetin se dikush tjetër ka shkruar. Kështu që është një funksionalitet vigjilent, kështu që le të shkojnë në këtë faqe tani dhe klikoni ringarkoni, dhe tani ju shikoni pak interaktive. Kjo është lloj i shkollës së vjetër dhe të shëmtuar. Ky lloj i ju kujton e pop-ups, ndoshta, e kaluar por ajo ka të bëjë diçka pak më shumë programatike. Pra, më shumë se kaq, le ta bëjmë diçka më interesante. Më lejoni të shkoj në këtu dhe të shpëtoj nga kjo. Dhe unë jam duke shkuar për të shkuar përpara dhe të krijojë një formë si ne e bëmë dje. Në fakt, ju e dini se çfarë? Unë jam duke shkuar për të shkuar në google.html, të cilat ne filloi më dje, e cila dukej si kjo, nëpërmjet të cilës kemi kërkuar për mace Por vini re nuk është lloj i një bug në versionin e tanishëm. Ajo punon për macet, por mendoj se Unë nuk bashkëpunojnë dhe unë lloji asgjë, dhe unë thjesht klikoni paraqesë. Kjo është lloj sjellje të pazakontë. Më mori në të vërtetë Google, nuk më jep një mesazh gabimi. Do të doja të them të përdoruesit ju duhet të na jepni një vlerë. Pra, si mund ta bëjmë këtë? E pra më lejoni të kthehem në Cloud9 dhe më lejoni të shkoj në krye të faqen time dhe të shtoni një tag script si ky, ku Unë do të shkruani disa kodin e Java skriptet. Dhe unë jam duke shkuar për të bërë në vijim. Në qoftë se (document.getelementByID-- dhe risjell se kemi biseduar për këtë më parë, se funksioni. Çfarë ID mund të dëshironi të merrni? Unë dua të të marrë q, dhe unë do të të themi është e barabartë me asgjë, si this-- në fakt më lejoni të përdor kuotat e dyfishtë vetëm për consistency-- barabartë me asgjë, pastaj alert ( "Ju lutemi shkruani një pyetje") këtu. Pra, unë kam atë që duket të jetë diçka si një kusht. Ne e kemi parë këtë ide të përgjithshme në Scratch. Është si një nga ato enigmës pjesë që dukej si kjo. Dhe çfarë jam duke thënë? E pra, këtu poshtë, vini re unë jam i do të bëjë të mëposhtme. Unë jam duke shkuar për të dhënë këtë formular Fusha nuk është vetëm një emër i q, e cila është ajo që merr kaluar në Google, por unë jam duke shkuar për të dhënë atë një identifikues lokal, quajtur edhe q. Por unë mund të telefononi këtë gjë unë doni, unë jam vetëm duke shkuar për të mbajtur atë të thjeshtë dhe e quajti atë q, vetëm për thjeshtësi. Dhe tani unë jam duke shkuar për të bërë diçka pak më shumë. Në formë fushat këtu, unë do të shtoni atë që quhet një mbajtës ngjarje. Më të paraqesë, unë dua për të thirrur një funksion të quajtur provoj. Kjo nuk ekziston ende, kjo fjalë, ose kjo provoj folje, sepse ajo që unë jam duke shkuar për të bërë këtu tani është shtuar një kod. Unë jam duke shkuar për të thënë funksion të vërtetuar. Unë do të indent këtë dhe shtoni një tjetër mbajtëse kaçurrel këtu dhe një tjetër këtu. Mendoni se çfarë kjo tani është duke bërë. Unë kam now-- mendojnë për këtë si krijuar tim copë e mister që nuk e bëri më parë ekzistojnë, dhe unë e kam quajtur këtë puzzle copë pjesë mister provoj. qëllimi i saj në jetë është për të ekzekutuar katër rreshta të kodit brendësi të saj. Nëse document.getElementByID kështu konceptualisht, që do të shkojë në elementin, elementi HTML cilit unike Ideja është vetëm q, dhe më pas edhe pse sintaksa duket pak i çuditshëm, që është e barabartë me të barabartë do të thotë vetëm të barabartë. Pra, kjo do të thotë, nëse elementi me identifikues unik të q, kur marrë, nuk ka asnjë vlerë, vetëm ajo është e barabartë me quote mbyll thonjëzat, asgjë në atje, atëherë çfarë unë dua të bëj? Unë dua të bërtas në përdoruesit. Dhe ne nuk do të shkojnë detaje të madhe këtu. Unë do të kthehen rreme. Ky është një gabim. Tjetër, unë do të kthehen vërtetë. Pra, ose ai ka punuar, ose ajo nuk e bëri. Rreme apo e vërtetë. Dhe tani, në qoftë se unë nuk ka bërë asnjë gabim, më lejoni të ruajtur këtë dhe ringarkoni këtë. Dhe më lejoni të kontrolloni vetëm të dyfishtë që Unë nuk e kam, në fakt, të bëjë ndonjë gabime shkrimi, kështu që unë nuk vë në siklet veten. Le të shohim nëse kjo funksionon. Kështu që tani unë jam duke shkuar të tipit macet. Ai ende punon, ose veprat e gjysmë, të paktën. Tani më lejoni të rifreskoni atë, dhe tani le me provoni dorëzimin pa shtypur anything-- mallkuar atë, ajo thyen. Një moment. Më lejoni të hapur konsol, [Padëgjueshme] log, rifreskoni faqen. Më lejoni të provoni këtë përsëri. Oh, mallkuar atë. I harruar. Unë bëra një typo. Mbaj mend se çfarë është ajo. .value. Unë do të thotë për të thënë në qoftë se vlera e elementit të cilit ID është q është e barabartë me këtë, atëherë çirrem në të përdoruesit. Pra, tani më lejoni të mbaj frymën time. Këtu ne do të shkojmë. Atje shkojmë. Ju lutem shkruani një pyetje. Pra, kjo nuk është lënë mua me. Unë mund të jetë lloj i gjallë me këtë, dhe në vend të kontrolluar për pa vlerë, Unë mund të them diçka si, jo më shumë në kërkim për macet, dhe tani ne mund vetëm të më shaka le kërkimi i përdoruesit për qentë, nëse ai ose ajo dëshiron, ose në qoftë se unë shkoj në këtu dhe kërkoni për macet, tani unë nuk mund të. Pra, çfarë është takeaway këtu? Pra, një, ne kemi futur në bota jonë e HTML dhe CSS, funksionalitetin programimit. Unë mund të vërtetë tani të marrë vendime në kod. Më parë, të gjitha unë mund të bëni është të shënojë deri Përmbajtja tekstuale apo përmbajtje grafike dhe them se çfarë për të kërkuar si dhe ku për të shfaqur. Tani unë në fakt mund të kërkojë Pyetjet e faqes web dhe të marrin vendime të bazuara në të, dhe të menjëhershëm të përdoruesit në qoftë se unë duhet të çirrem në atë apo të saj. Pra, le të provoni diçka të në vetën tonë me këtë. Shko përpara, më lejoni të hapur rrëshqitje tjetër këtu, dhe vetëm të theksoj një gjë. Ashtu si me CSS, ne mund faktor jashtë Kodi ynë JavaScript në një skedar të veçantë, ju mund të bëni të njëjtën gjë me JavaScript si me CSS. Dhe ju përdorni atë duke përdorur një burim atribut i tag script. Por ne nuk do të komplikojë gjërat tani për tani. Në vend të kësaj, në qoftë se ju mund të shkoni në jo këtë faqe, but-- lejoni të lëvizë këtë rreth në order-- shkoni në, në qoftë se ju mund të, këtë faqe këtu. Kjo URL këtu. Është në slides sotme. Ju mund të keni për të ringarkoni, sepse Kam shtuar një çift të gjëra. Por shkoni atje ku disa puzzles presin. Dhe kjo do të na japë një shans, në një kontekst pak më shumë argëtim, të ujit me disa JavaScript. Dhe kur ju merrni atje, Unë do të shpjegojë se çfarë i pret. Get gjelbër. Set blu. Vë jeshile, vendos të kuqe. Oops. Më vjen keq. Kjo është shkalla e tona dokumentacioni për këtë sfidë. Dhe kjo do të punojë si më poshtë. Pra, ajo që ju keni në këtë faqe është një bandë e tërë e puzzles imazhit nga një shok në Universitetin e Stanfordit. Pra, çfarë ju jeni duke parë këtu është pothuajse e lloj i një prej këtyre puzzles magjike sy, por në qoftë se ju vetëm të ia ngul sytë në atë, asgjë nuk do të pop jashtë në ju. Përkundrazi, diçka është fshehur në këtë imazh. Dhe kjo është e fshehur në mënyrën e mëposhtme. Images, siç mund ta dini, mund të jetë përbëhet nga vetëm tre ngjyra. Disa të kuqe, disa blu, dhe disa të gjelbër. Dhe ne mund të bëjë të gjitha ngjyra në ylberit nga përzierja e këtyre tre ngjyra në një farë mënyre. Pra, kjo duket kryesisht e gjelbër dhe blu, por si Nick thotë këtu, ky imazh mister hekuri është një mister. Ajo përmban një imazh të diçka e njohur, megjithatë, imazhi është shtrembëruar. Objekti i famshëm është në vlerat e kuqe. Vlerat Megjithatë, e kuqe kanë qenë të gjithë të ndarë me 10. Pra, ata janë shumë të vogla nga një faktor i 10. Pra, me fjalë të tjera, Nick mori një imazh origjinale, dhe ai desaturated gjithë e kuqe prej saj, uljen e sasisë së kuqe ngjyrë, në qoftë se ju do të, në të. Vlerat blu dhe jeshile janë të gjitha vetëm e pakuptimtë, Vlerat e rastit, aka projektuar zhurma për të errësuar imazhin e vërtetë. Pra, ajo që bëri ishte ai Nick zbutur kuqe dhe pastaj ai vetëm hodhi rastit shumat e blu dhe jeshile në imazhin në llojin e errët çfarë është në të vërtetë ende atje. Ju duhet të ndrequr këto shtrembërime për të zbuluar imazhin. Së pari, i vendosur të gjitha vlerat e blu dhe të gjelbër në zero për të marrë ato nga rruga, dhe të kërkoni në rezultat. pastaj shumohen çdo vlerë e kuqe me 10, shkallë mbrapa deri në afërsisht vlera e saj final. Cili është objekti i famshëm? Pra, të gjithë ju kanë këtë drejtkëndësh në shfletuesin tuaj tani. Dhe vini re se ka disa Kodi motorino, kështu që të flasin. Ky është kodi JavaScript që Nick ka shkruar për ju. Dhe vini re se nuk ka një vijë në mes që fillon me një plagë çaj, kjo është atë që quhet zakonisht një koment. Kjo do të thotë se është një frazë për programues se nuk ka kuptim funksionale. Kjo është vetëm një sugjerim vizuale të njeriut. Kështu që ju mund të shkoni përpara dhe të fshini vetëm këtë linjë, dhe të jenë të kujdesshëm për të mos super fshini ose të ndryshojë ndonjë gjë tjetër. Dhe më lejoni vetëm të ecin ju nëpërmjet ajo që ky kod bën dhe unë do të lënë atë për ju të gjej imazhin fshehtë. Kjo linjë e parë këtu se unë kam vetëm e theksuar ju jep vijim. Në anën e majtë, ju keni atë që quhet një variabël që Nick ka arbitrare, por e quajti të arsyeshme im për imazhin. Në anën e djathtë i kësaj shenje të barabartë, ai është duke thënë se më jep një të ri quote, mbyll thonjëzat "image thjeshtë". image thjeshtë, në këtë kontekst është ajo që quhet një klasë, edhe, kjo është lloj i si një class-- teknikisht një prototype-- por me të vërtetë, kjo është duke i dhënë mua një objekt të ri, përmbajtja e të cilave janë fotografi, hekur-puzzle.png. Me fjalë të tjera, Nick ka krijuar ky nocioni i një imazhi të thjeshtë në mënyrë që ne mund të, për pedagogjike qëllime, të luajnë me imazhin dhe për të ndryshuar të kuqe të saj, jeshile, blu dhe të vlerave. Dhe si po bëjmë këtë? Kjo Sintaksa disi i fshehtë këtu është lloj si bllokut të përsëritur se disa nga ju pa në Scratch më parë sot, ku ju mund të përsërisë 10 herë. Në këtë rast, Nick nuk ka hardcoded një numër si 10. Në vend të kësaj ai është duke thënë, nisja një ndryshore të quajtur x në 0, kontrolluar nëse x është më pak se gjerësia e imazhit. Dhe në mënyrë që të jenë më të duhur, imazhi është ndryshueshme, dot do të thotë të shkojnë në brendësi të saj dhe për të marrë gjerësinë e saj, dhe pastaj paren të hapura, të mbyllura paren është vetëm mënyrë një programues e duke thënë se kjo është një funksion. Kjo është një procedurë. Kjo është funksionalitet dikush tjetër ka shkruar. Përdorin atë dhe të më kthejë një përgjigje. Dhe pastaj x ++ është një mënyrë e sofistikuar për duke thënë, pasi të keni bërë këtë herë, ardhura x me 1. Me fjalë të tjera, kjo është mënyra e një programues e inducing një lak që është do të iterate mbi të gjitha kolonave në një imazh. Një imazh është vetëm një rrjet i pika, rreshtave dhe kolonave e pika. Kjo është një mënyrë për të iterating mbi të gjitha ato shtylla. Dhe në brendësi, Ndërkohë, ne jemi iterating mbi lartësitë, këtu dhe këtu dhe këtu. Pra, kjo është vetëm një mënyrë për të traipsing, gati si një makinë shkrimi të vjetër shkollor, për të shkuar vetëm mbi të tërë image iteratively. Edhe kjo nuk është mjaft tërësisht qartë, vetëm të marrë në besim për tani, se këto tri linja i kodit bashku janë do të ju lejojnë të shikoni iteratively në çdo pixel, çdo dot në imazh. Çfarë është një pixel? E pra, të jetë e qartë, nëse ne shikojmë në origjinal dhe zmadhuar, në qoftë se jeni të vërtetë vënë sytë tuaj në ekranin e kompjuterit, kjo është vetëm një bandë e tërë e pika, disa mijë pika të mbushura së bashku atje. Dhe kështu që ajo që jeni gati për të bërë? Secili nga këto pika, një përkufizim përfundimtar, është rezultat i asaj që është në përgjithësi quajtur RGB, e kuqe, jeshile, blu, e cila përsëri mund të kombinohen për ju jap ndonjë numër të ngjyrave. Në fakt, në qoftë se ju kujtohet nga shumë, shumë vite më parë, ekranet projektor si këto gjëra përdorur për të nuk kanë një objektiv, por tre. Njëri prej tyre nxjerr nga goja dritë të kuqe, një nga t'i nxjerr nga goja dritë të gjelbër, njëri prej tyre nxjerr nga goja dritë blu. Dhe në qoftë se ju keni qenë në një shkollë të mesme si unë ishte vendi ku ata nuk ishin një linjë siç duhet, ju ishit gjithmonë të shikuar filmat e historisë që ishin të shtrembëruar pak, për shkak se tre ngjyra nuk ishin kombinuar si duhet. Por kjo rezulton se secili nga këto vlera të kuqe, jeshile, dhe blu, mund të ketë një numër të lidhur me to. Për shembull, 0 për të kuqe do të thotë asnjë kuqe, 0 për të gjelbër do të thotë jo të gjelbër, dhe 0 për blu do të thotë nuk blu. Pra, nëse ju nuk keni të kuqe, jo jeshile, dhe jo blu, çfarë ngjyre keni? AUDIENCA: [padëgjueshme] DAVID Malan: Ju do të shpresoj se kështu, është e bardhë. Për fat të keq, kjo operates-- keq? AUDIENCA: [padëgjueshme] DAVID Malan: Pra, ju në fakt kanë zi, në këtë rast. Pra, nëse ju keni asnjë nga këto ngjyra e ndezur, ju duhet të zi. Megjithatë, në qoftë se ju keni, le të themi shumë prej tyre, si një shumë të kuqe, 255 të tij, një shumë e gjelbër, dhe shumë e blu, që është e bardhë. Pra, këto janë dy ekstreme. Pra, sipas kësaj logjike, në qoftë se unë kam një shumë e kuqe dhe jo të gjelbër dhe jo blu, çfarë ngjyrë është ajo? AUDIENCA: [padëgjueshme] DAVID Malan: E drejta, natyrisht. Dhe pastaj nuk ka të kuqe, shumë gjelbër, jo blu, dhe pastaj në qoftë se ju have-- mirë, ne vetëm do të përfundojë kjo, vetëm për shkak se, por kjo, natyrisht, tani, është blu. Dhe tani ju mund të kombinohen këto ngjyra. Tani si një mënjanë, në qoftë se ndonjë nga ju keni bërë ndonjëherë disa dizajn aktuale website, ju mund të vërtetë shikoni simbolet si kjo. FFF-- dhe në fakt, kjo është ndoshta jo edhe atë. Është FFFFFF. Çdokush parë ndonjëherë F-së dhe E-së dhe A through-- kështu që rezulton, kemi biseduar dje për dhjetore, dhe sot, lloj lidhje dhjetore. Sot kemi biseduar për binar. Rezulton se, hexadecimal është një shumë sistemi të përbashkët bazë për të përdorur në informatikë. Binary është dy, decimal është 10, magji është 16. Dhe kjo rezulton, se si bëjnë ju numërimin në heksadecimal? Zero, një, dy, tre, katër, pesë, gjashtë, shtatë, tetë, nëntë, çfarë do të përdorni pas nëntë? Cili është numri i ardhshëm? Ne tashmë e përdorur zero. Unë kam nevojë për 16 prej tyre. Zero, një, dy, tre, katër, pesë, gjashtë, shtatë, tetë, nëntë, keni nevojë për disa konventë arbitrare. Dhe çfarë njerëzimi vendosi disa kohë më parë se pas nëntë vjen letra A dhe pastaj B dhe pastaj C. Pra, Mënyrë që ju të mbështeteni në heksadecimal është zero, një, dy, tre, katër, pesë, gjashtë, shtatë, tetë, nëntë, A, B, C, D, E, F, dhe se do të numërojnë ju të gjithë rrugën, ajo rezulton, në 15. Pra zero në 15 është zero nëpërmjet F. Tani pse është kjo e rëndësishme? E pra, kur ju keni dy F-së, kjo është se si ju shprehin 255. Për sa kohë histori e shkurtër, në bota e Photoshop, që software dizajnit grafik, në botën e zhvillimit web, ku ju keni shumë të ngjyrave, natyrisht, për të luajtur me të, shpesh programuesit do shprehin ato në heksadecimal, vetëm për shkak se ajo tenton të jetë pak më e thjeshtë. Edhe pse në shikim të parë kjo është shumë më komplekse. Pra, në çdo rast, kjo është e rëndësishme sepse Nick në Stanford na ka dhënë gjashtë copa të funksionalitetit se ju, programuesit nis të lulëzojë, tani do të ketë aftësinë për të përdorur. E ndërtuar në këtë web faqe është gjashtë funksione, gjashtë procedurat që Nick shkruar. Tre prej tyre ju do të merrni një numër, një të kuqe, një jeshile, ose një vlerë blu. Tre prej tyre do të vendosë këtë vlerë. Dhe këto nënvizon janë vetëm placeholders, kështu që ju duhet të dini se çfarë ata janë. Pra, me këto tri funksione, i pari nga këto gjëra do të jetë një x-koordinuar, dhe e dyta nga këto gjëra do të jetë një y-koordinuar. Me fjalë të tjera, të cilat dot, të cilat pixel doni të merrni gjelbër e, të marrë blu të, të kuqe të. Dhe atëherë këtu, kjo do të jetë x, kjo do të jetë një vlerë y, dhe kjo do të jetë një numër. Pra, le të bëjë të parë linjë e këtë së bashku dhe pastaj unë do të lënë atë për ju në përpjekje për të nxjerr një përfundim tjetër. Pra, sipas udhëzimeve në këtë faqe, ne kemi nevojë për rritjen e kuqe nga një faktor i 10, dhe ne kemi nevojë për të hequr të gjelbër dhe për të hequr blu. Le të fillojmë me skenarët e fundit. Pra, nëse unë dua të, dhe unë jam duke shkuar të indent duke përdorur disa hapësira, në qoftë se unë dua të vendosur kuqe, e gjelbër, ose vlera blu, Unë do të bëjë të mëposhtme. Image, im.setBlue, dhe pastaj bazuar në udhëzimet e mia këtu, çfarë tri gjëra duhet të I lloji brenda kllapa tani? Unë kam nevojë për vlerën e X, y vlera, dhe çfarë numri duhet të vënë këtu në qoftë se unë dua të shpëtoj blu, bazuar në këtë histori këtu? Vetëm zero. Nëse unë dua asnjë blu, unë jam vetëm do të ndryshojë atë në zero. Tani le të vetëm radhitje atë që kjo është duke bërë. Unë kam këtu në këto krye Linjat e dytë dhe të tretë, I mori dy sythe, sythe mbivendosur, në qoftë se ju do të, që do të ketë efekt të vazhdohet nga e majta në të djathtë, lart poshtë mbi të gjitha të x vlerat dhe të gjitha vlerat y. Sepse përsëri, një foto vetëm një rrjet i rreshtave dhe kolonave. Pra, kjo do të marrë shpëtoj të gjithë blu të. Më lejoni të lënë në linjë tjetër për ju. Si mund të shpëtoj të gjithë gjelbër të? AUDIENCA: [padëgjueshme] DAVID Malan: Bukur. AUDIENCA: [padëgjueshme] DAVID Malan: Bukur. Dhe unë jam duke shkuar për të zoom out, dhe vetëm të marrë kujdes nga se ju nuk keni bërë ndonjë gabime shkrimi. Dhe në qoftë se ju jeni të kënaqur me atë që keni bërë, të shkojnë përpara dhe klikoni butonin Run / Ruaj dhe shikoni se çfarë ju merrni. Dhe përsëri, ne kemi bërë vetëm tre ndryshime. Ne fshihet se pari komentojnë dhe e zëvendësoi atë me këto dy rreshta të kodit. Dhe kjo është në rregull në qoftë se keni nevojë për të goditur butonin Run / Save një herë çift për të rregulluar diçka. Dhe më lejoni të zoom në tim Kodi kështu që ju mund të kopjoj. Të mirë. Kështu që unë shoh Andrew ka çfarë duket të jetë një gabim. Ai ka vetëm një zi e madhe drejtkëndësh në ekranin e tij. A ka dikush tjetër të ketë një drejtkëndësh madhe e zezë? AUDIENCA: Po. DAVID Malan: Big drejtkëndësh i zi? OK, kështu që le të mendojmë në lidhje me çfarë do të thotë kjo. Ne thamë se zero, zero, zero, kështu që nuk ka të gjelbër, nuk ka të kuqe, jo blu, do të ju jap të zezë. Dhe kjo rezulton se shumica e laptopë tonë thjesht nuk kanë besnikëri të mjaftueshme. Ju nuk mund të mjaft të them se është në fakt diçka atje. Dhe në qoftë se ju lloj i ndoshta ligët ekranin tuaj përpara dhe prapa, ndoshta e shihni ju një pak diçka atje? Ndoshta, lloj, lloj? Kjo nuk është krejtësisht e zezë. AUDIENCA: [padëgjueshme] DAVID Malan: Spoiler! Ka disa e kuqe atje, por mend nga specifikimet e problemit, Nick dinjitoz atë. Ai desaturated atë disi, por jo të gjithë rrugën në zero. Pra, nëse ne duam për të lartësuar e shumës e kuqe, më lejoni të propozoj këtë mashtrim. Më lejoni të zoom në ekran e mia. Dhe më lejoni të shkoj përpara dhe të thonë Shuma e barabartë im.getRed (x, y). Kjo linjë e kodit është duke i dhënë mua diçka që quhet një ndryshore. Unë kam në mënyrë arbitrare, por, ndoshta, quajtur të arsyeshme të ndryshueshme im atë, me sa duket? Sasia. Shuma e vetëm. Unë mund të kemi quajtur atë çdo gjë që unë dua, por unë jam i duke përdorur këtë funksion tjetër që kam përshkruar më parë për të marrë sasinë e kuqe në x presje y. Pse e kam bërë këtë? Çfarë doni të bëni këtu? Ju duhet të add-- AUDIENCA: [padëgjueshme] DAVID Malan: Po, ndoshta shumohen atë me 10. Dhe në qoftë se ju nuk e dini këtë, unë jam do të shkojnë përpara dhe të bëjë këtë. Unë jam duke shkuar për të shkuar përpara dhe të të themi, unë dua sasinë e kuqe Unë dua të jenë të çfarëdo është në të kuqe, herë 10, dhe yll, yll në tuaj keyboard është the-- nuk e përdorin x. Përdorni yll. Kjo është se si ju shumëfishohen gjëra në shumicën e gjuhëve të programimit. Pra, në bazë të intuitës Kareem-së, ruajtur në këtë ndryshore të quajtur shumë, është se sa e kuqe dua të lokacionit xy. Si tani, Unë e bëj atë Pixel kanë këtë numër? Ju keni bërë tashmë këtë më parë. Keni vendosur të gjelbër dhe blu të pa vlerë, në zero. AUDIENCA: [padëgjueshme] DAVID Malan: Po, edhe ju nuk doni që ajo të 10. Ju tashmë e bëri matematikë këtu. Pra, ne jemi duke marrë vlerën e kuqe, i cili është një numër i vogël, me sa duket. Ne jemi shumëzuar deri me 10. Çfarë doni të bëni me shuma e ndryshueshme tani? AUDIENCA: [padëgjueshme] DAVID Malan: Bukur. Pra im.set-- çfarë? AUDIENCA: setRed. DAVID Malan: setRed, në lokacionit xy. Po. Dhe vetëm shuma. Me fjalë të tjera, një variabël është një placeholder përkohshme që ju mund të vënë çdo gjë që ju dëshironi në. Ne të ndodhë që të jetë vënë një numër në të, në momentin. Ne kemi shumëzuar atë me 10 për ta bërë atë më të mëdha. Dhe tani unë jam duke e zëvendësuar atë variabël si këtë argument të tretë, ose të dhëna për të vendosur të kuqe. Dhe kështu që sapo ju përfundojë atë, dhe të marrë parasysh e gjysmë-kolonave dhe kllapa. Shkoni përpara dhe klikoni drejtuar / shpëtuar përsëri, dhe ju duhet të shohin, magjike, se çfarë ishte në të vërtetë atje. [? Arwa,?] Çfarë është atje? Kulla Eifel në të drejta të plota e kuqe, jo mjaft të errët. ajo duhet të jetë më e qartë tani, po? NE RREGULL. Dhe Andrew, kutia më e zezë? AUDIENCA: [padëgjueshme] DAVID Malan: Të gjithë të drejtë. Kështu që unë do të mbajë këtë në ekran. Nëse ju doni të luajnë me këtë më vonë, unë do të krijosh këtë për ju. Por, ky kod këtu e bëri pikërisht këtë. Pse nuk e bëjmë një tjetër. Më lejoni të lëvizni poshtë pak. Pra, në këtë rast, projektor nuk ka të vërtetë të bëjë atë të drejtësisë. Por në ekranet tuaja, ju ndoshta kanë një kuti shumë të kuqe dhe shumë e zezë. Kjo, gjithashtu, është një mister që tregon diçka famshme. Megjithatë, imazhi është shtrembëruar. Imazhi i vërtetë, këtë herë, është në vlerat blu dhe jeshile. Megjithatë, ata kanë qenë të gjithë të ndarë nga 20 deri vlerat janë shumë të vogla. Vlerat e kuqe janë vetëm numrat e rastit, zhurma. Undo këto shtrembërime për të zbuluar imazhin e vërtetë. Kështu Nick pastaj ju tregon se çfarë duhet të bëni. Vendosur vlerat kuq me zero, dhe atëherë nuk do të prishin atë që është. Pastaj shumohen blu dhe vlerat e gjelbër nga 20. Pra, kjo është pothuajse e njëjti program si më parë, por ju jeni përmbysur procesin. Dhe unë do të shtie kodin tim nga para në ekran në rastin e ju dëshironi të referohen përsëri në atë ose të luajë më tej me këtë një të tillë. Më lejoni të zoom në atë. Por zgjidhur imazhin bakrit puzzle, numri dy. AUDIENCA: [padëgjueshme] DAVID Malan: OK, kështu që kjo jam nuk do të japë sa më shumë lë të kuptohet. Kështu që unë would-- oh, le të shikoni, ju keni një typo këtu. Pra mbani mend, kjo këtu të vërtetë ka nevojë për të shkuar atje. Pra, ajo që unë do të propozojë, në qoftë se ju doni të të përqëndrohet në këtë, nuk ka përgjigje. Nëse ju doni që shkruajshe atë, që duhet të marrë një pune të parë. Dhe pastaj ju mund të përdorni atë si frymëzim për një të dytë. Bukur. Të mirë. Dhe për kurioz, ky është një shembull i thjeshtë e shkencës ose një art quajtur steganography, arti i fshehur informacionin në imazhe. Në mënyrë tipike, imazhet mund të jenë watermarked shumë blatantly me një logo në fund qoshe, por në mënyrë të qartë, të mund të jetë shumë më i sofistikuar në lidhje me të dhe në fakt fshehin imazhe të tjera në imazhet disi me këtë teknikë. Merrni një tjetër 30 sekonda, dhe pastaj ne do të të paktën të njoftojë atë që ju duhet të shikoni. Dhe unë do të të lënë të tretë një si një ushtrim në shtëpi, në qoftë se ju dëshironi më shumë një sfidojnë këtë fundjavë. Dhe unë mendoj se Andrew fuqisë kanë marrë atë më parë. Cili është imazhi i dytë, Andrew? AUDIENCA: Statuja e Lirisë. DAVID Malan: Statuja e Lirisë do të jetë një përgjigje kësaj radhe. Pra, përsëri, vetëm disa thjeshtë shembuj, qëllimi i të cilit është që të ju jap një kuptim të asaj se si ne kemi përkthyer Scratch pikture blloqe për më të bezdisshëm dhe më shumë Kodi komplikuar, por të gjitha idetë janë ende të njëjtë, megjithëse me futjen tani e nocionit të një variable, duke gjendje për të ruajtur diçka përkohësisht. Le të bëjmë një më shumë duart-në, vetëm tani lidhur dots për diçka pak më të vërtetë të botës. Kur të jeni gati, në qoftë se ju mund të shkoni në këtë URL në ekran. Kjo është edhe një kopje e slides, developers.google.com/maps~~V. Le të vërtetë të bëjë diçka reale, kështu që të flasin, në web përdorimin e API Google Maps, ose aplikimit programimi interface, në mënyrën e mëposhtme. Google, si shumë kompani, siguron një shumë të funksionalitetit të lirë që ju mund të përdorni për të ndërtuar tuaj aplikacionet e veta interesante. Në fakt, në qoftë se ju keni përdorur ndonjëherë Uber për të marrë një taksi ose një makinë, ju ndoshta e dini se Uber ka një hartë dhe kjo tregon makina në të. Kjo është, sa më mirë që mundem them, Google Maps API. Ata në të vërtetë janë duke përdorur hartat Google, por Uber nuk është një kompani hartë, as nuk do që të jetë një problem veçanërisht interesante për të zgjidhur në krye të tyre Problemi shërbim makinë. Dhe kështu ata janë në këmbë, përsëri, mbi supet e të tjerëve, Google në këtë rast. Në mënyrë që ata përdorin hartat Google, por vetë Shërbimet e makinave dhe karakteristika të tjera të tilla. Pra, ne jemi duke shkuar për të përfituar kjo të bëjë të mëposhtme. Dhe në qoftë se unë kam shkuar shumë shpejt, vetëm thirrje mua më shumë se në një moment. Të lumtur për të radhitje disa gjëra imazhit. Ju duhet të shikoni veten në një faqe si kjo. Në mënyrë të këndshme Google, dhe ata janë ndër më të mirat për të siguruar jo vetëm TV, por TV të lirë që ju mund të luajnë me ose përdorin komerciale. Ata do të fillojnë akuzuar ju nëse përdorimi juaj është i lartë, por unë shkova përpara paraprakisht dhe na nënshkruar për një llogari falas që, shpresojmë, 10 kompjutera nuk do të na ndaloj për të papritur. Kështu që shpresojmë se kjo Demonstrata do të punojnë. Dhe vini re se ata kanë API për Android, iOS, shërbimet e web dhe web, çfarëdo që është. Le të përqëndrohet në web. Kështu klikoni kuti rozë, web, dhe se do të të çojë, me shpresë, në një faqe këtu. Dhe ata kanë marrë një bandë e tërë e TV. Dhe kjo mund të jetë pak e madhe në fillim, por unë do na rri me atë që duam. Në të majtë të lartë është Google Maps JavaScript API, API JavaScript. Pra shkoni përpara dhe klikoni se një. Dhe kjo do t'ju çojë tani të pas faqe, popull dhe kodin mostër. Më lejoni të zoom këtu. Dhe më lejoni të marrë të to-- lëvizni poshtë ku ai thotë se hapa të shpejtë fillimit. Ekrani juaj duhet të duken si e imja. Dhe ka dy hapa, të marrë një çelës dhe të fillojë zhvillimin. Unë tashmë e bëri hapin një për ne, duke marrë një të ashtuquajtur çelës. Dhe kjo është një ide e përbashkët. Një çelës API është në përgjithësi vetëm një numër i madh të rastit ose të string që ju duhet për të ngjitur në kodin tuaj, në mënyrë që Google e di se kush jeni, kur ju jeni duke përdorur shërbimin e tyre, API e tyre. Nuk do të thotë që ne jemi duke u akuzuar asgjë. Dhe tani, klikoni, në vend të një, klikoni fillojë zhvillimin. Në qoftë se ju mund vetëm të valë mua mbi nëse nuk jeni të sigurt ku jemi. Pra, ne vetëm do të zeroja e sipërfaqe, këtu, por ajo që Mendova se do të ishte bindëse është që në fakt të ketë të gjithë ne, duke përdorur Cloud9 në një dritare dhe ky tutorial në një dritare, lejon në fakt të marrë e jona Aplikimi dhe drejtimin që embeds një porosi Google hartë në vetë faqen tonë, dhe më pas shtohet një ose dy karakteristika. Por ne vetëm do të zeroja e Sipërfaqja e çfarë mund të bëjmë. Pra, vetëm një kontroll i shpejtë mendje e shëndoshë. Është e të gjithë në këtë faqe, Google Maps API JavaScript? Duhet të themi duke u nisur. Ne nuk jemi duke shkuar për të shkuar nëpërmjet të gjithë gjë me çdo mjet. OK, në një tjetër tab, në qoftë se ju nuk e bëni kanë atë të hapur, do të shkojnë në Cloud9 dhe për të marrë veten të vetëm një tab i ri, në fund të fundit. Pra, përsëri, c9.io nga dje, c9.io, dhe vetëm të krijojë një skedë të re. Dhe të shkojnë përpara dhe thirrje ai çdo gjë që ju dëshironi. I quajtur map.html time. E quajti atë gjë përfundon në .html. Dhe ju duhet të jetë afërsisht ku unë jam në këtë proces me vetëm një të shpejtë ndriçon në një bosh tab quajtur diçka si map.html. Ose fotografi, fotografi të re këtë herë. Dhe tani, më shumë se nga ana Google Maps API JavaScript, ne do të kaloni leximin nëpër të gjithë këtë tekst. Por vini re se bota është përshëndetje në të vërtetë kudo, e shihni atë tani. Tungjatjeta botë ka këtë të mëdha ngjyra shembull i një bandë e tërë e HTML. Shkoni përpara dhe të kopjoni dhe ngjisni vetëm atë HTML, kështu që nga tipi doc në krye të gjitha mënyra për tag të ngushtë HTML, shkoni përpara dhe kopje të të gjitha that-- përsëri, kjo është në botë përshëndetje example-- dhe ngjitur atë në skedën tuaj Cloud9, kështu që tani ekranin tuaj duhet të duket afërsisht si e imja. Dhe ju mund ta ruani atë, por mos e ngarkuar atë vetëm ende. look Le të parë në kodin dhe të shohim nëse ne nuk mund të konkludoj ose të mësojnë nga ajo që është Google ka pasur të verbërisht kopjoni dhe ngjisni. Ata vetëm duan të ndihmojnë, fjalë për fjalë, të na filluar, por nuk është se shumë Kompleksiteti të vërtetë atje. Ndonjë pyetje vetëm ende? Ne jemi të sigurt për të ecur përpara? NE RREGULL. Kaq shpejt, le të vetëm të bëjë disa kontrolle të shpejtë mendje e shëndoshë. Line një nga ajo që kam parë, dhe shpresojmë se, ju shih, çfarë do të thotë, DOCTYPE HTML? Kareem, kujtohet? AUDIENCA: [padëgjueshme] DAVID Malan: Po. Këtu vjen HTML 5. Ndërkohë, dy në vijë Ekran këtu do të thotë hey shfletues, këtu vjen HTML aktuale. Line tre është hey shfletues, këtu vjen koka. Line katër është, natyrisht, hey shfletuesi, këtu vjen titullin. Çfarë do të vijë pesë bëjë? Në fakt, kjo nuk e bën me të vërtetë të bëjë asgjë për ne. Në këtë rast, ajo vetëm madhësinë faqja në një default. Line gjashtë, ne nuk kemi biseduar rreth, por ajo përcakton kodimin karakter. Ka mënyra të ndryshme për të kodifikuar fotografi, sidomos për gjuhë të huaja. UTF-8 vetëm ka tendencë të jetë i paracaktuar. Deri tani ne do të shohim në linjë shtatë deri 16, disa CSS. Dhe, edhe pse ne nuk e kemi parë të gjitha këto gjëra para, ne mund të lloj të dëshmoj. Pra, të vijë tetë do të thotë, hej shfletues, zbatohen të gjitha të mëposhtme në të cilën dy tags, me sa duket? HTML dhe trupi text. Pra, presja është gjë e re atje. Dhe kjo është vetëm një mënyrë për të specifikuar tags shumta në të njëjtën kohë. Pastaj ne kemi marrë formatimin e teksteve kaçurrel. Pra me sa duket, kjo i tregon shfletuesit, bëjnë lartësinë e faqes 100%. Pra, edhe në qoftë se ka shumë pak përmbajtje, të tërë faqen, të bëjë gjë të mbushur faqen. Bëni harta përfundimisht të mbushur faqen. Margin, çfarë do të thotë? Kjo është zakonisht si arbitrare hapësirë ​​të bardhë rreth edges se disa projektuesi shfletues vetëm vendosur duhet të jetë atje, sepse ajo lloj i bën gjërat të duken të pastër. Por ne nuk duam që. Ne duam harta shkuar të gjithë rrugën në skajet. Mbushje, të ngjashme në frymë në margjina. Mbulesat të thotë jashtë, do të thotë mbushje brenda, por është e njëjta lloj marrëveshje. Është pak e një tampon midis jush dhe edges. Dhe pastaj line 13 është një e mirë mundësi për një shqyrtim të shpejtë. Çfarë do të hartë të mprehtë shenjave do të thotë, ose harta hashtag të thotë? Çfarë do të referohet, në parim? AUDIENCA: [padëgjueshme] DAVID Malan: Pikërisht. Kjo pronë, kjo pronë CSS vlen edhe për vetëm një gjë, tag HTML që ka një ID të japin kuotën, mbyll thonjëzat "hartë". Dhe tani le të shpejtë përpara, scroll poshtë në fund të dosjes, e cila nuk është shumë larg, dhe njoftim në linjë 19, në qoftë se ju ngjitur pikërisht si unë e bëri, Linja 19 ka vetëm një div, e cila është një Ndarja e faqes, e cila dje I quajtur një rajon drejtkëndëshe. Ajo ka asgjë në të. Kjo është një tag të hapur, tag të ngushtë. Por ajo ka një ID unike. Pra, çfarë duket të jetë ndodh këtu është Google është duke përgatitur faqen tonë të internetit për të të ketë një lartësi të plotë 100%, dhe nuk ka mbushje, nuk ka kufijtë, për shkak se ajo që ne jemi duke shkuar për të vënë brenda i këtij div, ID unike e të cilit është hartë, është një hartë e vërtetë ngulitur. Dhe ne duam që ajo të mbushë faqja dhe jo vetëm të jetë një drejtkëndësh të vogël në mes. Pra, Linja 14 në mënyrë të ngjashme thekson, hartë në vetvete duhet të ketë një lartësi prej 100%. Deri tani vini re në mes të linjave 20 dhe 28, kjo është JavaScript kod. Dhe kjo është, edhe pse është e syntactically pak e çuditshme, nuk është e gjitha që më ndodh këtu. Në përputhje 21, kjo është deklaruar diçka që quhet një ndryshore. Në vend të duke e quajtur atë shumat, si ne e bëmë më parë, ne jemi më saktësisht thënë var, e cila vetëm do të thotë ndryshore. Ne mund të ketë përdorur që në Kodi Nick, por ai nuk e bëri, kështu që unë nuk u mërzit për ta bërë këtë ose. Kjo është një ndryshore të quajtur hartë, dhe pastaj nuk ka një funksion që është me sa duket quhet initMap. Pra, kjo është si të vet zakonit tonë copë puzzle në Scratch. Ne kemi krijuar një copë funksionalitetin e quajtur initMap, dhe ju mund të lloj të konkludoj Cfare po ndodh ketu. Në anën e majtë, ne kemi marrë një ndryshore, kështu që ne jemi duke shkuar për të vënë në vijim gjë brenda kësaj variable, nga e djathta në të majtë. Ana e djathtë thotë: hey shfletues, më jep një hartë të re të Google. Dhe google.maps.map është vetëm një mënyrë shokuar e specifikuar se këtë funksionalitet i takon Google Maps. Pas kllapa, ne kemi parë këtë më parë, hej shfletues, të marrë me elementet në faqe, tag në faqen ID unike e të cilit is-- AUDIENCA: [padëgjueshme] DAVID Malan: --map. Dhe çfarë po ndodh, edhe, kjo linjë bashkë, linjë 23, është në thelb duke thënë: hey shfletues, shkoni merrni mua që div bosh në faqen ID unike e të cilit është harta, sepse unë dua të futur në arsyetimet tuaja injektuar në të, në qoftë se ju will-- një bandë e tërë e përmbajtjes që ndodh të të vijë nga web, më pas. Dhe Google e bën të gjithë këtë për ne. Pra edhe një herë, në fund të ditës, ne kemi këtë shembull të abstraksionit. Unë nuk kam asnjë ide se çfarë një hartë është apo si për të zbatuar një API hartë. Ne nuk kemi nevojë për të. Ne vetëm duhet të tregoni hartën ku për të vënë veten, dhe të lënë ato në themel zbatimin Detajet për Google. Tani nuk ka me sa duket dy copa të të dhënave se ky shembull është sigurimin e të API Google. Me sa duket në qendër të hartë, dhe niveli zoom, kështu që të flasin. Dhe ka njeri të njohë këto koordinatat, gjerësi dhe gjatësi? Ndoshta jo, por ne mund të shkoni përsëri të tutorial, fjalë për fjalë të parë. Por ne do të shohim atë në një moment të vetëm. Niveli Zoom është një vlerë në mes, unë nuk e di, një në 13 ose diçka të tillë. Ajo vetëm ka të bëjë me se sa ju jeni zoomed në ose jashtë, dhe kjo është ajo. Dhe tani në fund të faqja, linja njoftim 29-- kjo është pak e shëmtuar, sepse ajo wraps-- këtë linjë të kodit është ajo shkarkime të shfletuesi API aktuale Google. Të gjitha të kodit që Google inxhinierët kanë shkruar se zbatojnë ky tipar tërë e hartave Embeddable. Tani le të mos ndryshojë asgjë. Nëse ju jeni në vijim së bashku, të shkojnë përpara dhe të vetëm të ruajtur këtë dosje, në qoftë se ju të vërtetë kanë ajo që unë kam. Shko te URL e saj. Ju mund të klikoni butonin Run up krye dhe se do të tregojë ju URL e web serverin tuaj përsëri. Dhe kjo do t'ju çojë në një skedë të re. Nëse ju klikoni Open për map.html, dhe shanset janë që ju jeni do të merrni një alarm, një mesazh gabimi, po? mesazh gabimi, mesazh gabimi? Pra për fat të keq, gabim Mesazhi nuk është se i shkolluar nëse ju në të vërtetë të hapur console, që tab të veçantë ne mbajtur hapur dje dhe pak më parë sot. Por unë stumbled nëpër këtë më parë, kështu që unë tashmë e artistikisht se çfarë zgjidhje është. Në slides sotme, ose në vend, në Cloud9, njoftimi që nuk e ka bërë diçka qëllimisht. Vini re se ky tag script në Linja 29, në qoftë se ju lexoni nëpërmjet saj, kjo është si maps.googleapis.com/~~pobj diçka, diçka, diçka, pastaj të vini re dikë, një nga zhvilluesit, shkroi në të gjitha kryeqytetin letra, çelësi API. Ne kemi nevojë për të ngjitur diçka në atje. Dhe ky ishte hapi i Kam bërë për ne para, dhe përsëri ata mund listën e zezë ne nëse papritmas, 12 ose më shumë prej nesh filloni duke përdorur të njëjtin kyç, por le të shohim se çfarë ndodh. Pra, nëse ju shkoni në e sotme slides, një rrëshqitje më vonë, nuk ka kjo shumë e shokuar, duke kërkuar string të tekstit. Të shkojnë përpara dhe vetëm kopje atë dhe ngjitur ku ai thotë se çelësi tuaj API. Kjo është një unë nënshkruar për. Dhe definitivisht nuk do të përpiqet shtypni atë me dorë, sepse ai ndjehet i mbushur me gabime shkrimi, potencialisht. Pra, thjesht kopjoni dhe ngjisni këtë. Dhe kjo do të bëjë të vijë më të gjatë, por tani, vetëm të jetë i qartë, ai duhet të duket pak më shumë si kjo, ku çelësi nuk është e barabartë me kapitalizuar yelling në ju. Ruaje faqen tuaj, të shkojnë prapa në skedën tjetër, ringarkoni, dhe shpresojmë të shohim një hartë e ku? AUDIENCA: Australia. DAVID Malan: Australia. Pra, me sa duket ato janë GPS koordinon të Australisë. Dhe më lejoni të ecin rreth për vetëm një moment dhe për të ndihmuar të gjithë ata që nuk është mjaft atje, por më lejoni të propozojë, nëpërmjet Google, gjeni GPS koordinon nga vetë qytetin tuaj ose vetë vendi juaj në shtëpi. Dhe ndoshta Google mund të kthehet këtë up, apo Wikipedia mund t'ju them. Por zgjedhin dy vlera të ndryshme për gjerësi dhe gjatësi, të kthehet në dhe ngjiti ato, dhe pastaj rifreskoni faqen pas kursimit dhe shihni nëse ju mund të keni një hartë për vetë qytetin tuaj. Dhe kur ju jeni bërë me se, ndjekja challenge-- dhe unë do të jap pak më pak drejtim, me qëllim, në mënyrë që ju qëllimisht duhet të luftojnë për një çift minuta me dokumentacionin, ndryshojë hartën që të mos jetë kjo parazgjedhur cartoonish, por një hartë satelitore. Kështu që ju në të vërtetë të shihni satelitore imazhet në vend të ngjyrave të bukur. Dhe hint unë do të ju jap është të ndryshojë llojin e hartës së. Kthehu mbrapa në se duke marrë filloi faqe për frymëzim. Siç mund ta keni mbledhur, nëse jeni duke kërkuar, ka kaq shumë më tepër gjëra që ju mund të bëni. Disa prej jush kanë tashmë ndryshuar llojin hartë. Por ju mund të do-- për shembull, le të më shkoni në diçka kemi bërë për kursin I teach-- maps.cs50.net. Një nga paradiplomantë tona e bëri këtë. Ne qendër hartën tonë mbi Harvard Yard dhe mbulesë të gjitha këto emra të ndërtimit, dhe ne kishim ta shtuar këtë. Pra, nëse unë dua për të kërkuar për, për shembull, Matthews Hall, ne kemi një pak drop-down menu. Dhe unë mendoj se ai është duke përdorur bootstrap, e Biblioteka kemi diskutuar më parë për këtë. Dhe në qoftë se ju klikoni mbi Matthews Hall, menjëherë hedhje hartën në një farë vend, dhe kjo tregon ju një foto në këtë të vogël pop-up. Por edhe kjo pak pop-up, ne nuk e ka zbatuar. Nëse unë lëvizni poshtë në marrjen tonë filluar faqe dhe të kërkoni për dritare info, ju do të shihni se disa nga funksionalitetin ju veten mund të shtoni, megjithëse me një kompleksitet pak më shumë, është diçka që quhet një dritare info. Dhe në qoftë se unë klikoni një shembull këtu, dhe kjo është ajo që është e bukur, ju mund të bëni gjëra të tilla si kjo, klikuar mbi një shënues dhe pastaj voila, Informacione pops up. Pra, ne nuk kemi prezantuar mjaft Karakteristika mjaft e JavaScript për të pikturuar një pamje të saktësisht se si ju mund të tela të gjitha të këtij stuff së bashku, por ne kemi lloj gërvishtem sipërfaqen. Në fakt, ajo që unë vetëm e bëri, kur Unë klikuar mbi këtë shënues, ishte shkaktuar një ngjarje, një ashtuquajtura të click ngjarje. Dhe ne fakt pa një Ngjarja më parë sot, e ashtuquajtura të paraqesë ngjarje, kur ishim parandalimin përdoruesi nga kërkim për macet. Pra, ne kemi zgjedhur lloj dhe vendosim nga të gjitha këto karakteristika të ndryshme, për të ju jap një kuptim, me shpresë, të asaj që ju mund të vërtetë bëjë me një pak më shumë rehati në programimin, dhe burimet krejtësisht falas. Ndonje pyetje? Nuk ka? Ky është shansi juaj i fundit, Të paktën sot, të premten, për të marrë ndonjë gjë off gjoksin tuaj në mënyrë që ju të ecni nga këtu ndjenja të sigurt dhe të rehatshme. Po. AUDIENCA: Pse të mos bëjmë ju shtoni një gjë më shumë? DAVID Malan: Oh mirësinë time. Unë kam nevojë për të pushuar këtë fundjavë, unë mendoj. Pyetje të tjera? AUDIENCA: [padëgjueshme] DAVID Malan: Ju can-- në Internet Explorer, pjesa tjetër në paqe, keni përdorur për të të jetë në gjendje për të vënë VB script, script virtual themelore, por që me të vërtetë nuk e kapur në. Pra, përgjigja e shkurtër është vetëm JavaScript. Pyetje të tjera? Të gjithë të drejtë, të mirë, më lejoni të bëjë këtë. Më lejoni të rrëmbyer kolegët tanë jashtë. Ata kanë disa vlerësim format që ata duan të gjithë të kaloni disa minuta plotësuar. Ata duan për të mbledhur atë formë dhe çdo heqja dorë që ju mund të kenë jashtë. Ata gjithashtu do të keni certifikata. Unë jam guessing se ka ende disa snacks jashtë. Më lejoni të kalojnë këto jashtë, dhe në qoftë se ju keni ndonjë pyetje në të njëjtën kohë, Unë do të ecin rreth më shumë në mënyrë individuale dhe ne mund të merrni ju keni filluar. Po sigurisht. AUDIENCA: [padëgjueshme] DAVID Malan: Kjo është zakonisht vërtetë këto ditë. Sigurisht me web software, ju janë të prirur mbi të tjerët ju jeni ose aesthetically duke përdorur gjëra të si bootstrap, kështu që ju nuk e bëni duhet të zbatojnë nivelin e ulët detajet e menutë dhe butonat dhe të gjithë që. Ju jeni përkulur mbi dikë si Google në mënyrë që ju nuk kanë për të ndërtuar një Uber biznesit dhe një biznes hartë, dhe çdo numër të ngjashëm Aplikacionet si. Në fakt, hyrje janë të njohura, too. Nëse e keni përdorur Spotify ose çdo numër të faqet e internetit, ju do të hyni brënda për të disa faqet e internetit duke përdorur Facebook. Pra, çfarë është e bukur, nuk ka janë TV për hyrje në ditët e sotme, në mënyrë që ju nuk keni të ketë tryezën tuaj përdorues dhe të gjitha të dhënave tuaj domosdoshmërisht në të njëjtën masë. Ju mund të le të bëjë të gjitha Facebook e atij kompleksitetit për ju. Pra, kjo është një kohë emocionuese, sinqerisht, në programimin, sepse ka kaq shumë palë e tretë shërbimet që ju mund të ndërtuar në majë të. Dhe përsëri, çmimi ju paguani është ose financiar ose joproduktive. Nëse Google shkon poshtë, kështu që nuk Uber, ndoshta, por ndoshta kjo është një arsyeshme trade-off. Dhe përsëri, kjo ishte një nga temat, me shpresë, për dy ditët e fundit, Janë këto tregtisë të humbura. Dhe rrallë ka shkuar të jetë një përgjigje e drejtë. Kjo me të vërtetë është më e mirë dy ose më shumë përgjigje. Kalojnë këto rreth. Dhe këto llogari Cloud9 do të vazhdojnë për të punuar, në teori, në përjetësi. Ju mund të gjeni nëse ju prisni disa ditë ose një javë ose më shumë të hyni përsëri në to, ajo mund të marrë si një ose më pesë minuta për të hapur back up, por kjo është vetëm për shkak se ata vënë ajo për të fjetur për të ruajtur në burime.