DAVID MALAN: Rendben, vissza. Így az izgalmas Összefoglalva, az utolsó szakasz web programozás, amit Gondoltuk használni, mint egy általános kifejezés hogy rögzítse a néhány megmaradt téma. Így a végén a nap, akkor valójában egy kicsit a gyakorlati web programozás egy nyelv úgynevezett JavaScript. És azt hiszem, rá egy pillantást valamit kapcsolódó képek és felfedezni valami titokban elrejtve egy kép, és nézd meg a Google Maps API, application programming felület, mint valami képviselője a típusú szoftver ez egyre inkább és szabadon elérhető ma. De miért nem megnézzük egy összetevő ebben a világban hogy már ilyen volt Ha igaz, létezik egy ideig, egy adatbázisban. Az elmúlt nap, és fél általunk feltételezett hogy van hozzáférése egy adatbázishoz, de milyen problémát jelent az adatbázis megoldani? Mit tesz ez nekünk? Mi az? KÖZÖNSÉG: [hallható] DAVID MALAN: tartalmazza az összes információt, OK, hogy milyen információ Lehet, akkor bele? KÖZÖNSÉG: [hallható] DAVID MALAN: Bármely információ teszel, akkor kapsz vissza. Az igaz. És egy tipikus web-alapú webhely vagy internetes alkalmazás, hogy milyen információ, Konkrétabban, esetleg teszel? KÖZÖNSÉG: [hallható] DAVID MALAN: A felhasználók. Tehát mi az a felhasználó? KÖZÖNSÉG: [hallható] DAVID MALAN: OK, bejegyzett felhasználó az oldalon. És mit jelent az, hogy bolt a felhasználók adatait? Mi alkotja a felhasználó? A felhasználónak mi? KÖZÖNSÉG: [hallható] DAVID MALAN: Igen, a személyes adatokat, és ez tetszik. Legyünk pontosabbak. Így a felhasználó általában van neve, mi mást lehet egy felhasználónak? KÖZÖNSÉG: [hallható] DAVID MALAN: Egy addr-- OK, így első nevét, vezetéknevét. Az jó. Tulajdonképpen, most fix hogy azért, mert ez lesz nyitni lehetőséget vita, még tovább. Utónév, vezetéknév, nem. Az azonosító valamilyen. Mi más? Hallottam valami mást előtt is. Egy e-mail, levelezési cím. Tehát lássuk szünet van, és most már úgy Nem mi vagyunk tárolása az adatbázisban, de-- és nem ezért, mert ez talán Nyilvánvaló, hogy ha egyszer regisztrál felhasználó, akarsz emlékezni rájuk egy ideig. Nem akarjuk, hogy Csak a RAM és lehet forgotten-- így nézzük összpontosítani, hogyan. Kiderül, hogy a A világ adatbázisok, van legalább két típusú manapság. Egy úgynevezett SQL adatbázis, Structured Query Language, vagy cutely nevű, NoSQL, ami nem SQL. , És az utóbbi egy Például, hogy mi nevezhető egy objektum-orientált, vagy egy tárgy tárolására, egy adatbázis amely tárolja tárgyak, és nem mentség Nekem, mint hamarosan látni fogjuk, a sorok. Így fogunk összpontosítani csak egy pillanatra Ezek közül az első, nevezetesen egy SQL adatbázis, ha csak azért, mert így már ismerős, hogy bárki aki használt Excel vagy Google Táblázatok vagy az Apple Számokat vagy bármilyen szabványos táblázatkezelő program, vagy ami azzal egyenértékű, vagy több igényesen, olyasmi, mint a Microsoft Access vagy Oracle vagy MySQL vagy PostgreSQL, amelyek mindegyike a termék nevek megvalósítások A következő ötlet. A relációs adatbázis egyszerűen olyasmit, ami a sorok és oszlopok. És sorok és oszlopok, Szó szerint azt jelenti, valamit mint ez, így ahol lehet, hogy van a a mező nevét és típusát ide. És valóban, hadd most kezdenek térkép ezeket. Tehát tulajdonképpen, nem tudom, miért húztam egy külön táblázat. Tartsuk ezt az egyszerű. Van itt a kezdetei táblázatunk, ahol ez a mező nevét és ez az adattípus, és típus szerint értem a következőket. Ez egy szám, ez egy string, rövid karakterlánc, mint egy szó, ez egy bekezdés, ez bináris adat, mint egy kép? És nézzük csak ugratni ezt eltekintve csak egy pillanatra. Tehát az első név, szám, húr, nagy darab text-- KÖZÖNSÉG: [hallható] DAVID MALAN: Igen, így húr. És egy adatbázis összefüggésben fogunk általában hívják ezt char mezőben. Én csak annyit, char most, de mi vagyunk fog finomítani ezt a pillanatot. Karakter területen. Vezetéknév valószínűleg ugyanaz. A nemek? Férfi vagy nő, így lehet char mezőben. Ez lehet akár idézet, idézet vége "Férfi" vagy idézet, idézet vége "női" vagy lehet m vagy f. Ha azt szeretnénk, hogy átfogóbb, szükség lehet egy harmadik értéket vagy valamilyen más területen összesen. És így jól jönne igaz hamis. A mező nevezhetnénk férfi, és akkor lehetne mondani, igaz vagy hamis. De ez nem feltétlenül rögzítse az összes információt, amit érdemes. Így kiderül, van egy másik típusú mező, ami hasznos lehet itt egy tipikus adatbázist, az úgynevezett enum, ahol egy karakter területen, de te, a tervező, kap felsorolni a lehetséges értékek, mint idézet, idézet vége "férfi", idézet, idézet vége "női" és így tovább. Annak érdekében, hogy bármilyen értéket van az adatbázisban, Valóban karakter-alapú, de azt, hogy az egyik az említett értékek. Mi valószínűleg nem akar egy enum az utónév vagy vezetéknév. Egyébként mi lett volna felsorolni, mint a neve származik, a szó szoros értelmében minden lehetséges vezeték- és utónevét. OK, így azonosító mit kell egy azonosítót lenni? Igen, lehet, hogy több. Tehát maradjunk hogy most, szám. És szám, szám van egy kicsit túl tág most. A végén a második nap, úgy érzem, hogy kell egy kicsit pontosabb. Száma is értem, mint azt lehet valami hasonló 1,236. És valószínűleg nem mit értünk egy azonosítót. Mit is valószínűleg azt jelenti, amelynek az azonosítója? KÖZÖNSÉG: [hallható] DAVID MALAN: Oh, OK, így Talán ez nem is több. Lehet, hogy ez valójában egy egyedi azonosító ez egy húr, mint egy felhasználói nevet. Tehát egyáltalán lehetne. Azt hiszem, valaki talán jelentette numerikus, mégis. Tehát maradjunk ebben. Milyen szám? Mi egy precise-- egész. Tehát egy szám, mint a 0, 1, 2, 3, így hívjuk ezt az egész. És még akkor is, tudtam kell nitpicking, ez Nem igazán csak egy Általában egész akarsz. Valószínűleg nem akar negatív értékeket, csak azért, mert ez csak úgy érzi furcsa. Talán szeretnénk pozitív egészek. Tehát akkor is kifejezni hogy egy olyan adatbázis, de most, azt fogjuk mondani egész. Email? Ez valószínűleg csak-- mi? KÖZÖNSÉG: [hallható] DAVID MALAN: Ez az e-mail, de ez karakterek, nem igaz? Csak van egy funky karakter, mint "kukac" szimbólumot, vagy valami más, de ez akkor is egy karakter területen. És postai címét? Karakter területen. Tehát ez egy jó kezdet, de legyünk egy kicsit pontosabb most. Így kiderül, hogy a egy adatbázis, gyakran a választás több mint kifinomultabb változatai ezek a dolgok. Tény, hogy egy tipikus SQL adatbázis, SQL, vagy általánosabban, a relációs adatbázis, adatbázisok sorok és oszlopok, gyakran kap, hogy határozza meg nem csak a típusát a field-- engedjék meg, hogy néhány szoba here-- hanem a hosszát. Mióta az első név? Azt hiszem, a D-A-V-I-D. Rendben, értem én Valószínűleg csak megsértődött, mint fele Az emberek a szobában, igaz, mivel a nevek több mint öt levelek, így öt úgy tűnik, egy kicsit önző és naiv, akkor mi a jobb ár-érték? 10, minden rendben, és azt hiszem, vagyunk OK a szobában. 13? 30? Miért nem veszi a megközelítése korábban, amikor beszéltek tömbök és a memória? Miért nem tudok csak mondani, mint a 1000? Senki nevét megy hosszabb, mint 1000. Visszavet. KÖZÖNSÉG: [hallható] DAVID MALAN: Igen, ez pazarló, jobb, különösen ha a legtöbb nevek csak öt vagy 10 vagy 15 karakter, ez nagyon pazarló. Szóval tudod mit? Ez a fajta egy nehéz kérdés. Most már biztosan elemezni English és bármely más nyelvű nevét és kitalálni, nos, mi a average-- átlag nem igazán segít us-- mi a max Valószínűleg az, amit igazán akar. De kiderül, mi is van Néhány választási lehetőségeit típus itt. Egy tipikus SQL adatbázis, akkor már egy úgynevezett char mező és egy VARCHAR, V-a-R, változó char mezőben. És a különbség ezt. A char területen, akkor a tervező, kell jelezze, a pontos hossza a területen. Így talán az első név mint a 20 úgy érzi, milyen biztonságban. Lehet, hogy nem néhány googling hogy kideríteni, hogy valójában elég biztonságos. Van talán egy nevet 21 karakterek, de most tegyük fel, hogy 20 biztonságos. A char mező azt jelentené, egy adatbázis, amit vannak a 20 és mindig 20 karakter. Most, ha ez csak a D-A-V-I-D, 15 e csak lesz üres karakter, de még mindig használja mind a 20 bájt. VARCHAR mező, ezzel szemben azt jelenti, a karakterlánc legfeljebb 20 karakter de ha csak öt, te csak akkor fog használni öt vagy talán hat a különleges értéke a végén, így 0 megbeszéltük, hogy végét jelzi egy karakter szekvencia a memóriában. Tehát, ha gondol lehet választani, char versus varchar, tekintettel arra, hogy a trade-off? Char használ, hogy sok karakter, varchar nem használ több mint sok karaktert. KÖZÖNSÉG: [hallható] DAVID MALAN: OK, ha tudod, hogy a karakterlánc hossza elég meggyőző csak használja char, mert ha te is tudod, csak tedd le. És lehet, hogy ez igaz a zip kódot, az USA-ban, legalábbis, 02138, ez mindig lesz öt karakter, amíg hozzá a műszerfal négy. De lehet, hogy néhány érték a amit mindig tudja a hosszát. Vagy talán állami jelképek, mint NY New York, és MA Massachusetts az USA-ban. Lehet, hogy van néhány helyzet ahol ez teljesen ésszerű, hanem, hogy a logika, miért mi is overthinking ez? Miért nem csak használja varchar, aztán majd csak mindig két karakter egyébként, vagy mindig öt karakter egyébként? Miért nem elég csak a varchar mindent, hogy a logika? Ott kell lennie egy fogás. KÖZÖNSÉG: [hallható] DAVID MALAN: Lehet írni valamit rosszul. Annak érdekében, hogy ez igaz. De még akkor is, nem tudják használni több memóriát hozzárendelhetek. Még mindig megvan a végső mondani, mint a hosszúság, így nem véletlen, hogy ezt a hibát, de egy jó gondolat. Ez finomabb, de ez nagyon rokon hogy a vitát, valóban, a tömbök és a hozzá kapcsolódó listák korábban. Kiderül, hogy az adatbázis, ha tudja, hogy az összes érték egy fix hosszúságú, akkor is, ha néhány ilyen értékek üresek, egyfajta esztétikai üres, D-A-V-I-D, majd 15 üres, kiderül, hogy ha minden egyes mező azonos hosszúságú, hasonlóan egy sor volt annak minden dolog háttal egymásnak háttal úgy, hogy akkor is csak plusz 1, hogy a következő érték, ugyanaz a gondolat egy adatbázis tábla. Ha az összes karakter húrok azonos hosszúságú, Van, amit az úgynevezett véletlen hozzáférésű. Ha minden a húrok a hossz 20, akkor nem csak a do plusz 1 csak csinálni plusz 20, plusz 20, plusz 20, plusz 20, és akkor nagyon gyorsan lapozhat vagy keressen az összes adatát. Egy változó char mező, ezzel szemben, nem mindig 20 karakter. Lehet, hogy a 20, majd 15, majd 19, majd 10, és ezért ha azt szeretnénk, hogy keresni rajta, akkor nem csak vakon adjunk hozzá 20 byte, hogy a következő alkalommal. Ha szó szerint kell keresni mert a szélén a adatstruktúra, ha úgy tetszik, a rongyos. Ez a fajta megy be és ki alapú a tényleges hossza a húr. Tehát, ha tudod, hogy a hossz, mint Kareem mondja, használjon char mezőben mert kapsz, hogy hatékonyságát, hogy képes keresni gyorsabb ha keres az adatok, egyébként egy változót. Sajnos, nincs jó válasz hogy milyen hosszú a neve legyen, de valami hasonló egy nevet, azt mondanám, egy varchar gyakori mert ez nem fog hogy egy fix hosszúságú mindenki számára. 20, nem tudom, 20 úgy érzi, egy kicsit szűk. Mondjuk 50, 50. Ez nem igazán költséghatékony, hogy sokkal több, mondjuk 50 helyett 40, de egy bizonyos ponton, akkor meg kell hogy az ítélet hívást. Nagyon gyakori, őszintén szólva, A [? történelmi?] okokból, annak ellenére, hogy a túlzott, azaz 255, mert néhány évvel ezelőtt, a népszerű adatbázis-kezelő rendszerek, mint például a MySQL, egy ingyenes, nyílt forráskódú eszköz hogy egy csomó cég mint akár a Facebook használt, ez volt a legnagyobb alapértelmezett így az emberek csak ment vele. Tehát nem ésszerűtlen, de majd egy kicsit több intuíció és azt mondják, biztos 50, ennyi talán egy kicsit túlzott. A nem, én szeretem enum, és így tudjuk, ezért felsorolni férfi vagy nő, vagy talán hatékonyabban, m vagy f vagy más szimbólumok, de enum olyan, mint egy jó választás van. Ahhoz, hogy tiszta, a nemek Lehet, hogy csak egy varchar, és tudnánk minden egyetértenek a kedves emberek, hogy mindig fel ugyanazokat az értékeket is. Férfi vagy nő, vagy miegymás. De a probléma tehát az, hogy mi lehet hibázik, például [hallható] javasolt korábban más összefüggésben. Ha hibázunk, tudnánk helytelen értékeket az adatbázisunkban. Tehát mi szép a adatbázisok mint például az Oracle és a MySQL és mások, az, hogy van ez az utolsó védelmi réteget, ahol a A DBA, adatbázis-kezelő, Aki tervez ebben a táblázatban, mint mi verbálisan, sodorhatják helyére egy enum hogy véd, hogy megadásával férfi, női, és így senki mást nem programozó véletlenül helyezzen más értéket. Tehát ez egy jó dolog. Ez egy olyan funkció. Tehát egy azonosítót, feltételezve egy azonosítószám, hogy Valószínűleg egy pozitív egész szám. És néha megvan megvitatni hosszát. Nem tennéd jellemzően adjon meg egy számot itt, akkor inkább adja ez egy int, vagy egy nagy int, mivel ők általában az úgynevezett. De általában egy egész szám lenne, mondjuk, 4 bájt. És ha ez 4 byte, ez hány bitet? KÖZÖNSÉG: [hallható] DAVID MALAN: 32 bit. Tehát hány felhasználó van itt Adatbázisunk ha mindannyian egy azonosítót és ezt az azonosítót egyedinek kell lennie? 32 bit azt jelenti, hogy mintákat egy, két, három, négy, five-- így hány különböző mintákat nullák és azok is van, ha van 32? Ez ugyanaz, mint a kérdezi, mi kettőt a 32? Ez egy nagy szám, Nem tudom egészen kap jobb, de tudom, hogy nagyjából 4 milliárd. Tehát ez azt jelenti, hogy az adatbázisban táblázat Négy milliárd felhasználó és ennyi. Tehát ez egy érdekes tervezés vonzata. A tisztességes vállalkozások száma úgy döntöttek, talán nem is annyira azok a felhasználók asztali, ugyanis a 4000000000 felhasználó egy ritka probléma. Ez a fajta a Facebook-stílus probléma, nem egy tipikus vállalati probléma. De talán ha tranzakciónaplókat vagy valamilyen adat, amely folyamatosan íródik át az adatbázist hogy egyáltalán volna milliárdokat és több milliárd sorok, és használjon egy egész számot úgy, mi fog történni, amint kapsz sor száma 4000000000 majd megpróbál beilleszteni a 4000000000. 1 úgymond? Én egyszerűsítve a szám egy kicsit. Akkor vágott vissza, azt jelenti, kell kezelni valahogy. És mi a számítógép jellemzően nem, belegondolunk, még a ma reggeli, ha van egy 4-bites érték mint az 1, 1, 1, 1, amely, Csak döntetlen a reggel együtt a délutáni, milyen jelent ez a szám képviseli bináris? OK, mi teszi könnyebbé. Mit jelent ez a szám képviseli bináris? OK, mi teszi könnyebbé, hogy mi jelent ez képviseli a bináris? KÖZÖNSÉG: Három. DAVID MALAN: Három, mert van az is, column-- [NEVETÉS] Tyűha! Mi volt az is, oszlop és a kettes oszlopban. Tehát tegyük fel, hogy valóban, a mi [? termőföld?] nem volt 32 bit, de két bit, tudjuk számolni származó felhasználói szám 0, 1, 2, 3, és akkor nem vagyunk olyan Vissza a felhasználói 00 újra. Tehát ez az, ami általában történik. Ha valaha is hallotta a expression-- Valószínűleg nem, de ha Rézfúvós lévén integer túlcsordulás, ahol tartsa essek az összes bit hogy a lehető legnagyobb értéket, és akkor te ki bit, mi lenne általában történni? Miért mondom 00? Nos, ez a három. Hogyan képviseli 4? Hogyan képviseli a A 4-es számú bináris? KÖZÖNSÉG: [hallható] DAVID MALAN: One-- igen, Nem mondjuk 100 önmagában, mert a rossz jelentésű, de 1-0-0. Tehát ez a szám 1-0-0 valóban helyes, de ha csak két bit, mit igazán történt? Már gurult 00. És valóban, ez az, ami történni fog. Tulajdonképpen, akkor szerintem erről több ismerős. Ha emlékszik, mi, 16 évvel ezelőtt, a világ véget ért volna, ha Y2K probléma történt. Miért volt ez? Nos a legtöbb számítógépek ésszerű döntéseket, voltak számok tárolása, mint a 1975-ben vagy 1999-es évben mindössze két számjeggyel a számítógép memóriájában. Így persze, hogy mi történik ha kap, hogy 2000-ben, megy ez, vagy inkább, igen. Szóval megy a 2000, de ha te csak két számjeggyel úgy néz ki, mint az év 00 és így már átfordult. És ez az, amiért sok rendszer megújításra szorultak idején. Tehát, hogy azt mondta, a vállalatok, mint Facebook fut fel ez ellen. Így az egyetlen módja, hogy kezelni a helyzet, őszintén, hogy előre meg. Vagy a legtisztább módja kezelni ezt a helyzetet hogy előre, hogy így nem meg kell változtatni később. Tehát ahelyett, hogy 8 bájt, tudod mit? Megyek, hogy előrelátó itt, annak ellenére, hogy egy kicsit optimista, hogy megyünk, hogy 4000000000 1 felhasználók honlapunkon. De nézzük csak használni 8 byte, vagy 64 bit, amelyet általában úgy úgynevezett nagy egész, nagyon technikai jellegű. És ez csak azt jelenti, lehet még több számjegyet a számot. De ez egy fontos tervezési döntés, mert ha úgy dönt, hogy számos túl kevés bit kifejező akkor valóban létre egy hiba a szoftver. Rendben, szóval lezárja e-mail és postai címét. Tehát az e-mail, meddig kell egy e-mail címet is? 50. Tényleg nincs ötletem, de ez Valószínűleg valami ilyesmi, mert különben senki sem fog levelet, ha nem lesz túl hosszú, így 50, menjünk vele most. Postacím, meddig kell, hogy legyen? KÖZÖNSÉG: [hallható] DAVID MALAN: Nem Csak egy irányítószámot, mégis. Postacím, hallottam. Tehát ez olyan, mint 1 Brattle Square, vessző, Cambridge Mass., vessző, 02138. És valóban, hadd húzza egy kis munkalap itt. Ez olyan, mintha egy elszalasztott lehetőség. Ha van 1 Brattle Square, vessző, Cambridge, MA 02138, Úgy érzem, jobban csinálni mint a postai címét. Miért nem robbanhat ez egy kicsit? Mit kapok a? Mit kellene ehelyett a mi sorok itt, talán? KÖZÖNSÉG: [hallható] DAVID MALAN: Igen, úgyhogy hívják street_number, és aláhúzás csak egy közös módja annak, amit úgy néz ki, mint egy hely, de nem, tényleg. Street, majd city-- sajnálom? KÖZÖNSÉG: [hallható] DAVID MALAN: tudtuk csinálni. Vonalon, a kettesen. Miért nem fogja egyszerű most, de ez teljesen elfogadható döntés. És akkor az állami, majd menjünk egy kicsit USA-központú most és csak a postai irányítószám, csak azért, mert ez lesz vezetni egy érdekes hibát vagy probléma van. Tehát tegyük fel, hogy ez most a címet. Ez egy kicsit bosszantó, hogy a mi ezeket a több területen, de most már tudjuk címkézni dolgok egy kicsit jobban. Tehát most házszámot valószínűleg nem lehet char, kell ez? Mi legyen? KÖZÖNSÉG: [hallható] DAVID MALAN: Lehet, számos mint egy egész újra? Egy nagy egész számok? Valószínűleg nem élnek A 4 milliárd Main Street vagy bármi őrült, mint ezt. Tehát egész valószínűleg rendben van, de még senki valaha élt egy címet, mint például 1A Brattle Square, vagy 1 és 1/2? Ezek a dolgok léteznek, sajnos, akkor is, ha nem ott élt, vannak anomáliák mint lakás 1A, 1B, 1C. Szóval tudod mit, akkor valószínűleg ne menjenek egész, különben megyünk hogy elveszítené az értékesítés. Char területen, talán? Nem tudom, meddig. Ez valószínűleg nem lesz hogy a hosszú, azaz 10, vagy valami. Senki sem fog írni hosszabb szám, talán. De ismétlem, mi kéne hogy több gondolat, hogy az. Talán a google, hogy némi kutatást, de megyünk mi belek most. Utcák, char, 50, nem tudom. Egy bizonyos ponton, senki sem fog írni, hogy a borítékon, is, így ott valószínűleg Néhány felső határt is. City, ugyanaz, persze, így char 50. Állami, lehet USA-központú most. Tehát ez lehet egy listát, így a fajta Az ítélet hívás állapotát. Ez lehet, mint két karakter. Tehát tulajdonképpen, talán, azt mondogatta char. Azt valószínűleg azt jelenti, varchar, Csak néhány a hatékonyság, de majd jön vissza E határozatot a pillanatban. Lehet, hogy a char hosszúságú 2 állapot. Ha az USA-ban vannak, mint az MA, Massachusetts, NY, New York, NJ, New Jersey, és így tovább. Így lehetne rögzíteni, hogy. DC Washington DC. De azt hiszem, Olivier, akkor javasolt egy másik megközelítés. KÖZÖNSÉG: [hallható] DAVID MALAN: Igen, tehát ez egy kicsit bosszantó, hogy írja be, de egy enum elképzelhető, hogy több értelme van, mert így, legalábbis az USA-ban, tudna sorolni, ha unalmasan, de te csak egyszer szerepel az adatbázisban és soha többé nem kell gondolni azt, az összes 50 kétjegyű kód. Szóval, mint enum. Maradjunk, hogy ott, mert ez a fajta kikényszeríti szigor. És akkor a zip kódot? Azt hiszem, Andrew-nak a gondolat, hogy KÖZÖNSÉG: [hallható] DAVID MALAN: Igen, öt vagy kilenc. Nézzük csak, hogy ez egyszerű. Csak nem öt most. De talán tudnék nem egy egész, nem igaz? Tudnám, de tudod, mit tettem ezt a hibát egyszer, bizonyos értelemben. Évekkel ezelőtt azt vándorlását Microsoft Outlook a Gmail, és az Outlook van egy módja exportáló az összes kapcsolat, mint egy Excel fájl, CSV fájlba, vesszővel elválasztott értékek fájlt. És elkövettem azt a hibát, azt úgy gondolja, a dupla kattintással, egyszer Letöltöttem az export, a győződjön meg róla, úgy nézett ki, mint vártam. Azt kell megütni mentése vagy hagyja auto-save rúgás, vagy valami. Mert amikor majd importált be Gmail, minden működött. De évek óta, a mai napig, és Ezt tettem öt, 10 évvel ezelőtt, Én még mindig találni barátok, akik címeket, hogy néz ki, mint ez. Miért? KÖZÖNSÉG: [hallható] DAVID MALAN: Eltartott A 0, nos, inkább azt volt az egész irányítószámot egy számot, és ezért ez vezető 0, ami azt jelenti nincs értelme. És így 2138 Úgy tűnik, hogy az én irányítószámot. És ez, őszintén szólva, egy bosszantó Excel funkcióval, melyen azt hiszem alapértelmezett, akkor is, ha ez azt jelentette, hogy csak szöveg, Microsoft Excel úgy határoz, hadd hasznos lehet, és jaj, látom, csak a számokat. Nézzük kezelni ezeket a számokat. És ez levágja a nullát. Istenre esküszöm, minden pár A hónapok találok egy címet, és ki egyfajta OCD, megyek vissza és adjuk hozzá a 0, bár én soha küldeni az emberek leveleket, vagy bármi. De én még mindig találni maradványait ezt. Tehát ez azt, ez egy jó ötlet? OK, nem, mert bárki Massachusetts, az ezen a területen, megy, hogy egy o vezette őket. Akkor menjünk együtt, mint char, talán öt. És itt, rájövünk jönne egy enum és mi sorolhatnám 10000 lehetséges irányítószámok, de úgy érzi, ez talán keresztező vonal, mint a hasznot. Ha a bemenő sok adat a saját adatbázis hogy megvédje valami ellen. Tehát char rájött beírhatja H-E-L-L-O az irányítószámot, ami nyilvánvalóan nem numerikus. Tehát nincs mód, a tipikus adatbázist, megadásához csak a numerikus és csak öt karakter hosszú, így megyünk, hogy kell csinálni, hogy kódot. Fogunk csinálni, hogy a PHP vagy Java vagy bármilyen nyelvet vagyunk használja a szerver érvényesíteni ez a fajta kényszer. Húúú! Rendben, tehát bármilyen kérdése csak még? Csináljunk egy tervezési döntés. Kiderült, hogy is kap, hogy válasszon, tervezésekor az SQL adatbázis, vagy tipikus relációs database-- ahol megint csak a relációs azt jelenti, sorok és oszlopok, ez hogyan szervezi data-- és rájönnek, hogy ez mit jelent, Már megtévesztő hogy én ezt drawing-- az, ami az úgynevezett séma egy adatbázis tábla. Ez olyan, mint a előírások a table-- de ha eljön az ideje ténylegesen adatok tárolására, és mi ezt csak a példa itt. Megyek nyitni Excel, mert Excel adj sorok és oszlopok. És pontosan ez az, amit az Oracle és a MySQL és más eszközöket ad nekem. Tehát én csak fog használni megvitatásra kedvéért. Hadd menjen előre, és nyit egy reprezentatív dokumentum itt, nagyítás egy kicsit. Így például, a fejlécek már utónév, név, nem, azonosító, e-mail, házszámot, utca, Hoppá. Utca, város, állam, csak körülbelül illeszkedik a képernyőn. Tehát ez mit jelent az, hogy ha egy felhasználó először regisztrál a saját honlapján, ez lesz valami hasonló David, Malan, m, mondjuk 1, malan@harvard.edu, utca szám lesz lenni, mint 1 Brattle Square, Cambridge, MA, 02138, majd így tovább. Tehát amikor azt mondjuk, hogy egy relációs adatbázis vagy SQL adatbázis sorok és oszlopok, Úgy értem ezt. Hogy a tényleges adatok tárolása a sorok és oszlopok. Ez csak egy véletlen egybeesés, hogy beszéltünk, és én csak kidolgozás ki sorok és oszlopok. Ez csak a séma, Az átfogó meghatározása. Így ezeken a területeken van, vagy azzal egyenértékű, ott, amelyek a mezőket, úgy gondolja, Én valószínűleg keresni az, ha én vagyok a felhasználó vagy ha én vagyok az adatbázis adminisztrátor? Mint, mely területek vagyok ténylegesen fog keresni az? KÖZÖNSÉG: [hallható] DAVID MALAN: A név, igen, így Szeretem azt a tényt hogy-- igen, e-mail lehet elég gyakori. Sajnáljuk, mondta a nevét. Tehát maybe-- és újra, nem vagyunk fajta beszéd az elvont. Nem tudom, hogy miért lenne keresgélhetnél nevet, de úgy érzi, indokolt, ha Ön keres egy felhasználó. Talán azt állítja, biztos, ID. És ez egy csúszós lejtő, mert megtehettem feltalál egy olyan forgatókönyv, ahol talán a főnököm megkért, hány ember van még a honlapunkon? Hány nő van még a honlapunkon? És így ezen a ponton, akkor érdemes keresni az nemi területen is, és semmi más. Tehát van egy trade-off itt. Ismét nincs helyes válasz, de egy jellemzője a legtöbb SQL adatbázisok néven indexelés, amellyel te, a tervező, a adatbázis adminisztrátor, dönthetik el, hogy előre, hogy melyik mezők az adatbázist kell optimalizálni a keresésnél. Akkor nagyon naivan azt mondják, optimalizálása Ennek optimalizálni, hogy optimalizálni ezt, optimalizálni, hogy, és ez, és az adatbázis meg néhány varázslatos dolog alatt motorháztető, és nem valami olyan módon hogy a következő alkalommal, amikor keresni bármelyik ezeken a területeken, ez lesz, sőt, gyorsabb. Ez lehetséges. Ez nem törli magát. De kell lennie egy árat fizetett. Ha naivan, vagy túl lelkesen mondjuk index valamennyi területen, hogy úgy mondjam, hogy azok minden hatékonyan kereshető, milyen áron Ön valószínűleg fizet? KÖZÖNSÉG: [hallható] DAVID MALAN: Teljesítmény. Hogy érted? Nos teljesítmény, legalábbis a összefüggésben én beszélünk, jobb most. Ez a meghatározás az indexelés. Ez teszi keresések gyorsabb. Tehát az idő csökken, hogy úgy mondjam. KÖZÖNSÉG: [hallható] DAVID MALAN: Space. Tehát ismét, ezek a közös kereskedelmi. Azt is felgyorsítja a kereséseket, de ez fog kerülni több bájt területet. Miért? Nos, alapértelmezés szerint, ha már nincs meg ezek a vörös csillag, sem a mutatók, ahogy mondom, hogyan keressen Egy név az adatbázisban? Szóval hívják fel a figyelmet erre példát. Ha van David és Scully és Kareem és ARWA és mások ezeket a sorokat, például. Tehát lássuk, hogy pontosan. Scully van itt, majd van Kareem és ARWA, és mindenki másnak, ha nem az index meghatározása, hogy úgy mondjam, A legjobb, amit tehetünk, lineáris keresés. Ha keres ARWA, nem vagyunk lesz képes ugrani vele gyorsan. Fogunk kezdeni és felső menj végig az alsó, ellentétben nem az eredeti Mike Smith példa. Ha azonban azt mondom, hé, adatbázis, index az első név mezőben akkor ez meg fog tenni valamit tenyésztő és támogatni valamit mint bináris keresés. Ez valószínűleg nem a bináris keresés önmagában. Adatbázisok hajlanak arra, hogy egy másik adatstruktúra úgynevezett B-fák, Nem tévesztendő össze a bináris fák, hogy csak gyorsabbá teszik a keresést valami logaritmikus jellegű. De az ár, amit fizetni felépíteni, hogy jellemzője, hogy adatstruktúra a memóriában, több bájt. Tehát ez eltart egy megabájt, néhány gigabyte, ki tudja? Ez attól függ, hogy az adatokat. Tehát egy bizonyos ponton, akkor el kell döntenie, ez valószínűleg nem egy gyakori eset. Tehát mik a tényleges közös esetekben, ha nagyon kellett választani, mi a kedvenc területeken lehet? Email. És szeretem a levelet, mert az e-mail, elméletben, egyedinek kell lennie. És így általában, ha tudod, előre, hogy az egyik területen vagy az lesz egyedi, hogy inkább egy jó mező keressen tovább, mert így, ha keres valamit, mész, hogy újra egy vagy nulla válaszokat és akkor kész. Nem kell tartani keres még mások. És így ebben az esetben is, e-mail, mindaddig, amíg meg nem lehet regisztrálni kétszer ugyanazzal az e-mail, az jó. ID definíció szerint a számítástechnika világában, ha beszélünk ID, hogy már jobb lesz egyedi. Ez a fajta a konnotáció Az ID vagy azonosító. És a többi ilyen lehet, nevezzük őket szép gazdagok, de nem igazán szükséges. És így egy adatbázisban, megadott indexek, de akkor még pontosabb. Azt lehet mondani, hé, adatbázis, győződjön meg róla, hogy minden ID ebben a táblázatban egyedi. Ne is hagyja, hogy egy programozó véletlenül hozott egy példányban e-mail vagy ismétlődő azonosító számát. Annyira, mint enum megvédeni bennünket hasonlóan, akkor lehet ezeket az alacsonyabb szintű védelmet. És így adatbázis tervezés, a Bizonyos értelemben ez a fajta szórakozás, mert te is védekezett. Azt a fajta azt feltételezik, hogy a munka A szörnyű, szörnyű programozók és azt akarjuk, hogy a lehető legtöbb védelmet csak lehet, hogy az adatok védelmére, de egyszerre szeretné hogy segítsen nekik jobban teljesítenek választásával, amely mezők optimalizálni. De nem lehet feltétlenül csinálni vákuum, mint azt a fajta itt. Meg kell tudni, hogy mik E közös ügyek lenni. Ha a fejlesztők végrehajtási egy címjegyzék, Ön is nagyon jól akarjuk, hogy képes keresni szinte minden területén, Csak a természet a kérelmet. Így talán töltesz hogy további helyet. Jobb, bármilyen kérdése? Igen. KÖZÖNSÉG: [hallható] DAVID MALAN: Nem KÖZÖNSÉG: [hallható] DAVID MALAN: OK. KÖZÖNSÉG: [hallható] DAVID MALAN: Ó, így Beszélünk módon most, hogy teljesen nyelv-független. Így beszélünk most körülbelül relációs adatbázisok általában vagy SQL adatbázisok általában. KÖZÖNSÉG: [hallható] DAVID MALAN: egy jobb szót használni van, lehet használni bármilyen nyelven. Így tudok írni JavaScript kódot, C kód, C ++ kódot, a Java kód, Ruby kódot, amelyek mind beszélni, hogy egy adatbázis és végre lekérdezések. Tény, hogy ez nem egy rossz segue egy példa lekérdezést. És ismét, nem fogunk belemenni Java, C ++, vagy sem, hogy többé, de az SQL, a nyelvet, amit tartani hivatkozva, Structured Query Language, ez önmagában egy programozási nyelv, de ez azt jelentette, hogy kell használni, nem meglepetés, strukturált lekérdezési lekérdezések. Úgy értem, ez. Az út kiválasztása adatok egy MySQL adatbázis A szó szerint írja be a programban valami hasonló válassza csillag a felhasználóktól. Azt feltételezem, hogy ez a táblázat, ezentúl nevezzük felhasználók. Nevezhetném, amit akarunk, de ez a fajta van értelme. És így válasszuk egy nagyon közös ige, ha akarat, az SQL, hogy a szó szoros értelmében nem ezt. Mit gondol csillag azt jelenti, ebben az összefüggésben? KÖZÖNSÉG: [hallható] DAVID MALAN: Sajnálom? KÖZÖNSÉG: [hallható] DAVID MALAN: Nem szükséges, hogy befogadóbb, mint valójában. Ez a helyettesítő karakter. Csillag szinte mindig jelent valamit, így ez azt jelenti, ebben az esetben, válassza mindent az adatbázisból. Tehát amikor ezt mondom, úgy értem adj vissza minden oszlop az én asztal nevű felhasználó. Így adj egy eredményhalmaz, ahogy hívják. Más szóval, adj egy példányt a táblázatkezelő, amit akarok kilyukadni. De ha azt válasszuk csillag a felhasználóktól ahol az ID = 1, milyen nagy kellene én eredményhalmaz lesz akkor? Vagy azzal egyenértékű, hogy hány sort kell Azt adják vissza az adatbázisból? Lehet, hogy csak egy, ha valóban van kezelt azonosító egyedi azonosítót, és ha David van, hogy egyedi azonosító, I Vissza kell mennem egy és csak egy sort tartalmazza az összes Dávid információkat. Ha azt mondta, hogy ez hol ID egyenlő 99 Vissza kell mennem, Ebben az összefüggésben, a nulla sorok, legalább abban a pillanatban. Azonban, ha nem igazán érdekel körülbelül minden információt, Tudnék mondani, hol David élni? Select irányítószám alapján felhasználók számára, ahol ID 1. Ezzel kijelöli nekem csak Dávid zip kódot, és nem a teljes egészében azt a sort. Miért lehet ezt tenném helyett A csillag lekérdezés, a wild card? KÖZÖNSÉG: [hallható] DAVID MALAN: Igen, talán csak szüksége van rá. Így a teljesítmény ismét a választ itt. Miért kér többet információt, mint amennyire szüksége van, mert még ha minden rendben együtt, akkor is kell másolni az adatokat, úgy tűnik, az adatbázisból a programba valahogy, és ez csak buta, ha Csak akkor kell öt olyan számjegyet, nem teljes egészében a sorban. Nos, hogyan helyezze be a felhasználó? Tegyük fel, hogy egy felhasználó csak regisztrált az első alkalommal. A szintaxis rendszerint a következőképpen néz ki. Helyezze be a felhasználók, és akkor azt mondjuk, értékek, és akkor mi lenne mondjuk értékeket mint, mondjuk, Lauren Scully, mi videósok itt. És a következő mező nem. Tehát azt fogjuk mondani erről, idézet vége "F", akkor van egy azonosítót és megyek say-- nézzük mintha ő valójában nem itt, így fogunk visszatekerés a történet. Tehát 2 lesz élete ID. És akkor a következő mező Itt van ő e-mail. Szóval ez lesz, mint a Lauren Scully és így tovább, és mi csak dot dot dot el innen. Most kap egy kis unalmas, de a betét lekérdezés végül kinézni. Ha azt akarom, hogy megszabaduljon Scully, uh-oh, nézzük leregisztrálni neki, törli a számláján, törölni felhasználókat ahol az ID = 2, megszabadulni Scully. Vagy tudok mondani frissítés a felhasználók létrehozását, mondjuk, hogy mit tudnánk változtatni? Tegyük fel, hogy ő mozog. Set zip egyenlő 021-- dehogy, hogy az ő jelenlegi zip. 90.210. Az egyetlen másik irányítószámot Tudom, hogy a világon. Annak érdekében, hogy változna ő zip code-- valójában, ez nem változik meg az irányítószámot. Mit is csinál? Annak ellenére, hogy a szintaxis valószínűleg új. KÖZÖNSÉG: [hallható] DAVID MALAN: Igen, mentem mindenki Beverly Hills, Kalifornia. Szóval ténylegesen megmondani, hogy hol ID = 2. És így tovább. Így az SQL szól ezeket féle utasításokat. SELECT, INSERT, törlés, változtatás, ezekkel predikátumok végén ezek hol kikötések, hogy úgy mondjam. És van egy sokkal több dolgot csinálni, de ez tényleg csak attól függ, egyszerűen, ha arcanely, kifejező mit akar az adatbázist csinálni. És akkor az adatbázis majd kitalálni, amikor behelyezi Lauren Scully a adatbázis, hová tegye rá a memóriában hogy mi is nagyon gyorsan ő alapuló e-mail címét vagy alapján ő azonosító száma vagy hasonlók. Ja, Dan. KÖZÖNSÉG: [hallható] DAVID MALAN: Tényleg jó kérdés. Vajon ezek a szkriptek változik Microsoft Access az Oracle MySQL PostgreSQL? A rövid válasz az, hogy attól függ. Elméletileg van egy nagyon jelentős közös halmazába SQL ami osztozik Ezen megvalósítások. Azonban a különböző gyártók van hozzáadott funkciók saját adatbázisok, hogy bizonyos dolgokat túlmutat ezeket a funkciókat, amelyek, sőt, eltörhet. Tehát ahogy a fejlesztők lefedezhette, hogy ahelyett, írásban nyers SQL-kódot, mint írom ide, ezek helyett használja a könyvtárat, közös könyvtár maga egyfajta magasabb szintű és kivonatok található, amely a termék, amit használ. És ez ad funkciók és eljárások hívni úgy, hogy soha valójában írni nyers SQL. Elméletileg, akkor meg lehet változtatni termékek Oracle és a Microsoft vagy fordítva, vagy bármi mást, és akkor szó változtatni semmit a kódot. A valóságban azonban az, hogy néha feladja funkciók eredményeképpen. Lehet, hogy választott terméket, mert ez van ezen értéknövelt szolgáltatások, és te csak most nem használja őket tudatosan. És anecdotally, a legtöbb vállalat inkább soha, hogy távolodjon el az adatbázisba. Tehát miközben ez egy szép van funkciót, a valóság van, ha teljes átalakítása az adatbázis, akkor Valószínűleg így fürtök egyéb változások egyébként, hogy nem feltétlenül előre kell látniuk, hogy a. Tehát vitathatatlanul over-mérnöki probléma, de ez tényleg attól függ, hogy a kontextusban. De elméletileg SQL megosztott ezeken a különböző termékeket. Tényleg jó kérdés. Igen. KÖZÖNSÉG: [hallható] DAVID MALAN: Igen, tehát akkor gondolom egy adatbázis csak egy szerver, a végén a nap, és azon belül a kiszolgáló egy csomó táblázatok, sorok és oszlopok. És ha elküld egy lekérdezést, mint ez a programból, a honlapon, Java-ban írt, Ruby, Python, bármi, A kiszolgáló megkapja ezt a parancsot és értelmezés a szó szerint azonos módon beszéltünk korábban értelmezett nyelvekhez, majd végrehajt bizonyos műveletet nulla vagy több sort nulla vagy több táblából. KÖZÖNSÉG: [hallható] DAVID MALAN: Pontosan, pontosan. Tehát a pszeudokód valamit mint hogy lehet ez. A PHP fájlt, vagy a Python fájlt, vagy a Java fájlt, ha volna pszeudokód kód, vagy Scratch-szerű blokkok, ha a felhasználó meglátogat acme.com/register~~V első alkalommal, majd helyezze be a felhasználók, és így tovább. És mi lenne lefordítani ezt a konkrétabb kódot a végén. De tényleg, mi minden Az építőkockák itt, noha mi ugrunk néhány A kivitelezés lépéseinek. Tehát hadd talált hibát, amit mi csodálatosan tette Egy perce. Létrehozott egy szép teljes táblázat a felhasználók számára. Igaz, tudtuk végrehajtani azt egy pár különböző módon, de ténylegesen vezetett bennünket le a path-- és azt mondod, de ez valószínűleg az én fault-- egy meglehetősen hatékony adatbázis megvalósításhoz. Ez nem normalizálódott. És normalizált értem ott lesz, idővel, jelentős létszámleépítés, és így a hatékonyság, azaz hulladék helyet. Alapján csak az, amit itt látsz, tudsz Lát ha ez hulladék helyet fog származik, idővel, mivel egyre több felhasználó regisztrálja a honlapon? Mi adatok válhatnak feleslegessé? KÖZÖNSÉG: [hallható] DAVID MALAN: Miért jelent ez? KÖZÖNSÉG: [hallható] DAVID MALAN: Igen. És tegyük fel, hogy arra a célra ma, hogy ez igaz. Kiderült, és megtanultuk ezt a nehezebb utat, hogy ez nem igaz. Valahogy több város van, valahogy, azonos irányítószám, amely megtöri ezt a csodálatos intuíció. De tegyük fel, hogy igaz, mert majdnem mindig igaz. Tehát tegyük fel, hogy egy irányítószámot is mindig jár együtt, ugyanabban a városban és az állami, ami egyfajta ésszerű feltételezés, de hibás, kiderül. De egy ésszerű feltételezés a mai célra. Akkor tegyük fel, hogy élek, Cambridge, MA szerint ennek a felhasználónak a tábla, és tegyük fel, hogy Lauren Scully él Cambridge, MA, és tegyük fel, hogy Kareem él Cambridge, MA, és ARWA él Cambridge, MA, mindannyiunk 02.138. Miért vagyunk emlékezve Cambridge, MA, 02138 számára mind a négyen? Mi elegendőnek kell emlékezni? KÖZÖNSÉG: [hallható] DAVID MALAN: Csak az irányítószámot. Csak annyit, hogy 02.138 létezik, mert Tudod, mit tehetnénk? Mi is kap egy kis díszes itt és itt, meg egy másik tábla ha ez lesz a név, ez lesz a típus, ez lesz a hossz, és ezentúl én Felhívom az én városban asztalra. Ezt nevezték, a Természetesen a felhasználók az asztalra. És akkor mi rakjam ide én városok asztal, mit gondolsz? KÖZÖNSÉG: [hallható] DAVID MALAN: Igen. Tehát zip és az állam és a város. És így a típus van, azt fogjuk mondani ez lesz a char 5 ismét figyelemmel a vitát a korábbi. Ez lesz egy enum, talán, mint előtt, és a város lesz a varchar 50. És így most mit kapok kitörölni ezt a táblázatot kiküszöbölésére, hogy a hatékonyság? KÖZÖNSÉG: [hallható] DAVID MALAN: Nice. Állami és városi elmegy, úgyhogy most Kiesett a lehetséges eredménytelenségét A redundáns emlékezés, Cambridge, MA, Cambridge, MA, Cambridge, MA, Cambridge, MA, amely remélhetőleg soha nem fog megváltozni. És még ha ez így van, akkor minorly bosszantó, most hogy meg kell változtatni ez több sorban, míg itt, én is csak változtassa meg egy helyen. Most mi a trade-off, talán? Ez szuper volt kényelmes. Ha minden adataimat szépen együtt. De mi pontosan a helyzet most? KÖZÖNSÉG: [hallható] DAVID MALAN: Pontosan, és én örülök, hogy ezt a szót használta csatlakozni, mert ez valójában a kulcsszó, a világon a relációs adatbázisok SQL, ez egy valódi szó, amit is írja, vagy legalábbis közvetíteni. És valóban, amit most már nem válassza ki Dávid teljes információ valami hasonló válassza csillag felhasználók csatlakozhatnak a városok, on-- és most Megyek csak mozgatni a második sorban így ez a fits-- users.zip megegyezik cities.zip, ahol users.ID értéke 1. Nos, miújság? Ez csúnya, de akkor milyen olvasni balról jobbra, fentről lefelé. Select csillag felhasználó ugyanaz, mint korábban, de ez nem a felhasználók, a per se. Ez a felhasználóktól csatlakozzon városokban. Mi vagyok én csatlakozott az említett két asztal? Nos, úgy tűnik, a felhasználók asztalok zip területén, és ez az időszak csak speciális szintaxis kifejezni, hogy a gondolat, és ez a városok táblázatok zip mezőben. Azt akarjuk, hogy ezek két egyenlő, de azt akarom, hogy végül válassza csak azokat a sorokat, ahol ID a felhasználók tábla = 1, ami történt, hogy az enyém. És csak azért, hogy világos legyen, a programozó, jellemzően a Bedrótozhatsz olyasmi, mint a szám 1, mert különben a honlapon csak a támogatja David vagy a legelső felhasználó, ehelyett csinálni olyasmi, mint azonosító, ahol ez azt jelenti, változó, ami idővel változhat, hasonló szellemében, amit korábban mondtam az ilyen típusú helyőrzők. De most csak belekódolják azt 1. És így ez mit jelent? Nos, egy jó módja annak, hogy megjelenítsék ezt hogy ha ez a kéz a felhasználók tábla, és ez a kéz a cipzár asztal, mi fajta finding-- és a tippeket az ujjaim zip ide, és hegye ujjaim itt zip, te fajta egymásba is így kap vissza a kapott eredeti tábla, azzal, hogy valóban csatlakozott A két táblázat a közös területen. És nem kell, hogy zip. Ez lehet a legtöbb mást, zip szép, mert az egyik, ez a rövid, két, mindig a azonos hosszúságú, ezért van valódi hatékonyságát, hogy milyen Olivier itt javasolt A faktoring ki a zip, és [Hallható] azt javasolta, hogy megszabadulunk A város és az államok. Tehát ez a folyamat néven normalizálás. Bármilyen kérdése, hogy? Hát hadd rámutatni ez a fajta dolog, annak ellenére, hogy meglehetősen alacsony szintű, ez a vita, hogy gondolná te fajta egyre elvesztette a gyomok, ez a megnyilvánulása a bőséges lehetőség a fejlesztők számára, hogy rossz. És valóban, még ha mi, tanfolyamok tanítottam, amikor is megvolt, Például, tapasztalatlan egyetemi programozók weblapok, első pillantásra, A webhelyek nézel. És ezek mind a funkcionalitás kértük, A fejlesztők nem jó munkát. De nem feltétlenül tudja, elég az adatbázis-tervezés vagy mert nem hiszem, kemény elég a adattípusok és a felhasználói típusok a honlap megy, hogy, és megtaláljuk, akkor, hat hónappal később, miután már végzett, vagy mozgott, hogy verje meg, honlapunkon valóban, valóban lassú. És én nem is beszélek, amelynek millió vagy több ezer felhasználó. Mármint néhány száz felhasználó az egyetemen, akik mind szeretnek, például bolt tanfolyamok Ugyanakkor, ők használ, hogy a tanfolyam katalógus alkalmazás már említettem és a dolog kezd nagyon lassú, mert nem voltak indexek. Nem volt vörös csillag, így beszélni, vagy mi volt nem feltétlenül tényezőként ki közös adatok egy kis megtakarítás helyet. És így, ha egy fejlesztő elbírálása vagy adatbázis személy vagy hasonlók, jellegű kérdéseket át kell gondolni még felülvizsgálatakor valaki kódot, mondani, nem feltétlenül néz keresztül minden a kódot, de azt mondják, nézzük át az adatbázis táblákat. Mit tárolására? És akkor azt mondják, jó, várjon perc, miért használ egy egész? Mi van, ha van 4000000000 és 1 ilyen sort? És az ilyen jellegű kérdések egy lehetőség hogy milyen tolatási és hogy egyfajta, ahol ha nem kényelmes csinál azt, hogy valaki több technikai fel ezeket a kérdéseket, az-e vagy sem Az ember tényleg tudja a dolgát. És ez a fajta dolgok is, hogy az emberek az interneten, akik autodidakta, talán tanulni ritkábban, mert nem feltétlenül találkoznak az annyi, mert akkor kap Az adatbázis létrehozásához és működtetéséhez, de ha nem olvastál fel útmutatók vagy volt meséltek adatbázisok normalizálásának és indexelés és a teljesítmény, Ezek azok a fajta dolgok hogy fognak bántani. És azt gondolhatja, vagy rossz mérnök Lehet mondani, ó, hát jobb fizetéssel egy nagyobb adatbázis vagy gyorsabb adatbázis vagy csak dobja pénzt ezt, függőlegesen skála, nem feltétlenül igaz. Ha megy in-- és mehetsz után fact-- és add indexek, és ez eltart egy pár órát adatbázis kiépítése, hogy az új adatok szerkezet utaltam korábban, akkor is erősít ez után az a tény, hogy ez az, ahol elkezdi megkülönböztetni jó tervezők rossz tervezők, nem csak esztétikailag, de a teljesítmény-bölcs is. Bármi kérdés? Nem? Tehát NoSQL, ami a másik típusú Az adatbázis, amelyre utaltam korábban, nincs sorok és oszlopok. Ehelyett, ha volna valami úgy néz ki, egy kicsit több, mint ez. Azt fogom használni a közös szintaxis. Kapcsos zárójelek megtörténhet használható itt elég sokat. Lehet, hogy valami mint az első neve David, lehet, hogy az utolsó név Malan, idézetek, lehet, hogy ID is-- elnézést, whoops-- azonosító értéke 1, e-mail malan@harvard.edu, és nem is fogok zavarja gépelési ki a többit, majd néhány más dolog. Más szavakkal, ez az egy szöveges megjelenítése Az, amit mi általában hívni egy objektum egy számítógépes program. És egy tárgy általában csak gyűjteménye kulcs érték párok. Tehát újra, ez visszatérő téma. Láttuk kulcs-érték párok HTML, láttuk kulcs érték párok most keretében adatbázisok, és mi látta kulcs érték párok keretében , azt hiszem, a nyelv a korábbi ma. Tartja jön. És valóban, ez nagyon milyen adatokat csapódik le, hogy, adatok és metaadatok, vagy értékek és kulcsok, ill. Tehát egy nem-relációs adatbázis, valami alapja tárgyakra, ahol csak facsoport mindent együtt, és tegye a memóriába, akkor általában ábrázolták, vagy gondolt, mint ez. És elmegyek, hogy most a egyfajta alternatív megközelítés. És az ember nem feltétlenül jobb, mint a többi. Tény, hogy nagyon divatos manapság adatbázis rendszerek mint MongoDB és Redis és néhány más hasonló eszközök, szabadon álló, de egyre En Vogue. Részben azért, mert az általuk kínált további Jellemzők át ezeket táblázatos megközelítés, hanem azért is, mert ők egy kicsit könnyebb használni, mert nem kell gondolni, mint a kemény egy csomó ilyen tervezési döntéseket. Tehát pluses és hátrányával. Így észre van lehetőség túl, amit most töltöttem időt. Tehát lássuk ezt. Nézzük átmenet egy kicsit vissza most a webes programozás, így azt a fajta kötni Ma valami ez egy kicsit gyakorlati, töltő Egyes hiányosságok a tegnapi. Hadd menjen az első. Így emlékeztetni arra, hogy tegnap volt néhány kanonikus HTML oldalak eleinte csak HTML, majd másodsorban volt CSS, Cascading Style Sheets. Ez egy új tag, hogy mi nem lásd a tegnapi, vagy laknak, úgynevezett script tag. Kiderült, hogy valójában beágyazza a nyelv nevű JavaScript a web oldal, és a web oldalak tenni valamit. Szóval mit jelent ez? Nos, hadd menjen előre, és csak kölcsön ezt a kódot egy pillanatra. Én megyek be Cloud9, nincs szükség hogy ott magatokat csak még, és fogom hívni ezt alert.HTML. Megyek illessze be a fájlt, itt. És csak azért, hogy tisztázza, mit tettem, hadd menjek erre a címre, és megy, hogy figyelmeztesse, és látod a Hello World. De ez a fajta underwhelming. Szeretnék tenni valamit egy kicsit más. Így fogok ténylegesen ezt. Fogok menni itt e, és a kettő között én szkriptcímkéket, mondjuk alert ( 'hello, világ'); így közlemény ez egy kicsit hanyag, de megvan a HTML, belsejében, amely egy nyelv nevű JavaScript, és ez az, amit az úgynevezett a függvényhívás vagy eljárás hívás. Ez egy ige, a szó szoros értelmében, ebben az esetben, és én hivatkozva kód funkcionalitás hogy valaki más írta. Annak érdekében, hogy a funkció egy éber, akkor menjünk erre az oldalra most és kattintson reload, és most látni egy kicsit az interaktivitás. Elég régi iskola és csúnya. Ez a fajta emlékeztet a pop-up, talán a múlt de ez nem csinál valamit a kicsit automatizálni. Így több, mint, hogy csináljuk valami sokkal érdekesebb. Hadd menjen ide, és megszabadulni a. És én megyek előre, és hozzon létre egy űrlapot, mint mi tegnap. Valójában, tudod mit? Megyek, hogy menjen be google.html, amit kezdődött tegnap, ami úgy nézett ki, mint a Ezen keresztül, amit keresett macska De észre, hogy egyfajta hiba a jelenlegi változat. Úgy működik, macskák, de tegyük fel, hogy Én nem működnek együtt, és azt írja semmi, és én egyszerűen kattintson be. Ez furcsa viselkedését. Elvitt a valódi Google, nem ad nekem egy hibaüzenetet. Szeretném elmondani a felhasználó meg kell, hogy adjanak nekünk egy értéket. Tehát hogyan lehet ezt megtenni? Hát hadd menjen vissza Cloud9 és hadd menjen be a legjobb oldalam és adjunk hozzá egy script tag, mint ez, ahol Megyek, hogy írja néhány JavaScript kódot. És fogok csinálni a következő. Ha (document.getelementByID-- és visszahívás hogy beszéltünk, hogy a korábbi, ezt a funkciót. Mit ID akarok kapni? Azt akarom, hogy q, és megyek mondjuk egyenlő semmit, Így-- valójában engedi dupla idézőjel csak consistency-- egyenlő semmit, majd alert ( "Kérem, írja be a lekérdezést") itt. Szóval van, amit úgy tűnik, hogy olyasmi, mint egy állapot. Láttuk ezt a közvélekedést a Scratch. Ez olyan, mint egy ilyen puzzle darabokat, hogy nézett ki, mint ez. És mit beszélek? Nos, itt lent, észre vagyok majd tegye a következőket. Megyek, hogy ebben a formában mező nem csak a neve q, ami mi lesz a Google felé, de én megy, hogy ez egy helyi azonosító is nevezik q. De nevezhetnénk ezt, amit csak akar, én csak fog tartani, hogy egyszerű és azt is nevezni q, csak az egyszerűség kedvéért. És most fogok csinálni valami egy kicsit. Az űrlap mezők itt, megyek hozzá az úgynevezett egy eseménykezelő. A nyújtson, akarom hívni olyan függvény validate. Ez még nem létezik, ez szó, vagy ez az ige érvényesít, mert mit fogok csinálni itt most néhány kódot hozzá. Azt fogom mondani funkció érvényesít. Megyek behúzni ezt, és egy újabb zárójel itt és egy másik itt. Nézzük meg, mi ez most csinál. Van now-- gondolni ezt készítettem el saját puzzle-darab, ami korábban nem létezik, és hívtam a kirakós darabja a validate puzzle-darabot. Ennek célja az életben, hogy végre A négy sor kódot belsejébe. Ha document.getElementById így fogalmilag, hogy fog menni az elem, A HTML elem, amelynek egyedülálló ötlet csak q, majd annak ellenére A szintaxis néz ki egy kicsit furcsa, hogy az egyenlő egyenlő csak azt jelenti, egyenlők. Tehát ez azt jelenti, ha az elem a egyedi azonosítója q, amikor ütött, nincs értéke, csak egyenlő idézet idézőjel bezárva, semmi ott, akkor mit akarok csinálni? Azt akarom kiabálni a felhasználó. És nem fogunk részletesen itt. Megyek vissza hamis. Ez egy hiba. Else, megyek vissza igaz. Tehát vagy működött, vagy nem. Hamis vagy igaz. És most, ha nem hibázni, hadd menteni ezt, és töltse be újra ezt. És hadd ellenőrizze, hogy Nem, sőt, hogy elírás, úgyhogy nem zavarba magam. Lássuk, ez működik. Tehát most megyek írja macskák. Még mindig működik, vagy fél műveit, legalábbis. Most hadd töltse be, és most hagyjuk Megpróbálom benyújtása gépelés nélkül bármit verje meg, mert elszakadt. Egy pillanat. Hadd nyissa meg a konzolt, [Hallható] log, az oldal újratöltődik. Hadd próbáljam meg újra. Ó, a fenébe is. Elfelejtettem. Csináltam egy elírás. Emlékszem, mi ez. .érték. Azt akartam mondani, hogy ha az érték Az elem, amelynek azonosítója q megegyezik, akkor kiabálni a felhasználó. Tehát most hadd tartsa a levegőt újra. Essünk neki. Ott vagyunk. Kérjük írja be a lekérdezést. Tehát ez nem engedte át. Azt lehet egyfajta játékos ezzel, és ellenőrzés helyett az értéktelen, Azt lehet mondani valami ilyesmit, Nincs több keres macskák, és most már csak több játékosan hagyja a felhasználó keresési kutyák, ha ő akar, vagy ha bemegyek itt keresni macskák, most nem tudom. Tehát mi a elvihető itt? Tehát az egyik, most már be világunkban a HTML és CSS, programozási funkciók. Tudok valójában most döntéseket hozni kódot. Korábban csak annyit tehet, hogy jelölje ki szöveges tartalom és képi tartalom és mondd el, mit kell keresni tetszik, és hol jelenjen meg. Most már tényleg kérni kérdéseket a weboldal és döntések alapján rajta, és figyelmezteti a felhasználót ha kell kiabálni vele. Így próbáljuk valami a saját ezzel. Rajta, hadd nyissa meg a következő dia itt, és csak rámutatni egy dolog. Csakúgy, mint a CSS, akkor vegye ki a számításból JavaScript kódot egy külön fájlban, akkor nem ugyanaz a dolog A JavaScript a CSS. És, hogy használja ezt a forrást attribútum a script tag. De mi nem bonyolítja a dolgokat most. Ehelyett, ha tudnál megy nem ezen az oldalon, de-- hadd mozgatni ezt körül order-- megy, ha lehetne, ezt az oldalt itt. Ez az URL itt. Ez a mai diák. Lehet, hogy újra, mert Adtam egy pár dolog. De ott, ahol néhány rejtvényeket várja. És ez ad nekünk egy esélyt, egy kicsit több móka összefüggésben a pancsolás néhány JavaScript. És amikor odaér, Elmagyarázom, mi vár. Get zöld. Állítsa kék. Beállítja a zöld, beállítja a vörös. Hoppá. Sajnálom. Ez a mértéke a mi dokumentáció a kihívásra. És ez működni fog a következő. Tehát mi van ezen a az oldal egy csomó A kép rejtvényeket egy haver a Stanford Egyetemen. Tehát, amit látsz itt szinte fajta egyik ilyen mágikus szeme rejtvények, de ha csak bámult rá, az nem, hogy kiugrik rád. Inkább valami rejtve a képen. És el van rejtve a következő módon. Képek, mint Ön is tudja, lehet tagjai csak három színben. Néhány piros, kék, és néhány zöld. És tudjuk, hogy az összes színek a szivárvány keverésével e három szín valahogy. Tehát ez úgy néz ki, főleg a zöld és a kék, de Nick azt mondja itt, ez a vas puzzle kép egy puzzle. Tartalmaz egy képet valami híres, azonban A kép már torzult. A híres tárgy a piros értékek. Ugyanakkor a piros értékek már mind osztva 10. Tehát ezek túl kicsi egy 10-es faktorral. Más szóval, Nick vett egy eredeti kép, és ő deszaturált minden A piros belőle, csökkenti a mennyiségű vörös tinta, ha úgy tetszik, benne. A kék és a zöld értékek mind csak értelmetlen, véletlenszerű értékek, más néven a zaj tervezett eltakarni a valós képet. Tehát mi Nick az volt, hogy enyhítettek a piros, majd a ő csak dobott véletlenszerűen mennyiségű kék ​​és zöld A kép, hogy milyen homályos mi valójában még mindig ott van. Vissza kell vonni ezeket a torzulásokat hogy felfedje a képet. Először is, meg az összes kék és zöld értékek nullára, hogy őket az útból, és nézd meg az eredményt. Akkor szorozza minden piros érték 10, méretezés vissza a mintegy végső értékét. Mi a híres tárgy? Tehát minden van a téglalap a böngésző most. És észre, hogy van valami starter kódot, hogy úgy mondjam. Ez a JavaScript kód, amely Nick írt neked. És észreveszed, hogy létezik egy sor közepén, hogy kezdődik perjel perjel, az mi általában az úgynevezett megjegyzést. Ez azt jelenti, hogy egy kifejezés a programozó hogy nincs funkcionális értelme. Ez csak egy látjel az ember. Így megy előre, és csak azt az egy sort, és szuper óvatos, hogy ne törölni vagy megváltoztatni semmit. És hadd végigvezeti mi ez a kód, és én majd hagyja hogy ki lehessen deríteni a titkos képet. Ez első sorban van, hogy most kiemelt ad a következő. A bal oldali, Van, amit az úgynevezett olyan változó, amely Nick önkényesen, de ésszerűen hívott im a képet. A jobb oldali Az, hogy az egyenlő jel, azt mondja, hogy nekem egy új idézet, idézet vége "egyszerű kép". Egyszerű kép, ebben az összefüggésben van egy úgynevezett osztály, nos, ez olyan, mint egy class-- technikailag prototype-- de tényleg, ez ad nekem egy új objektumot, a tartalmát, amelyek a fájlt, vas-puzzle.png. Más szóval, a Nick teremtett ez a fogalom egy egyszerű kép hogy tudjuk, a pedagógiai célokra, játszani a kép és módosítsa a piros, zöld és kék értékeket. És hogyan csinálod? Ez a kissé rejtélyes szintaxis itt olyan, mint az ismétlődő mondat hogy néhány láttál Scratch korábbi ma, ahol lehet ismételni 10-szer. Ebben az esetben a Nick nem bedrótoztak több mint 10. Ehelyett mond, inicializálja változó nevű x 0, ellenőrizze, ha x kisebb mint a szélessége a képet. És így, hogy több megfelelő, a kép a változó, pont azt jelenti, megy belsejébe és kap a szélessége, és majd nyitott zárójel, zárt zárójel csak egy programozó módja mondván ez a funkció. Ez egy olyan eljárás. Ez funkcionalitás valaki más írta. Használd és add vissza a választ. És akkor x ++ egy divatos módon mondván, miután ezt megtette egyszer, növekmény x 1. Más szavakkal, ez a egy programozó módja indukálni hurok, ami fog végighaladni összes oszlopot a képen. Egy kép csak egy rács pontok, sorok és oszlopok a pontok. Ez egy módja annak iterációjával át az összes ezeket az oszlopokat. És a belsejében, Közben mi iterációjával fölött a magasba, itt és itt és itt. Tehát ez csak egy módja traipsing, majdnem olyan, mint egy régi iskola írógép, hogy csak menjen át a teljes kép iteratív. Még ez nem egészen teljes világos, csak hogy a hit most, hogy e három sor A kód együtt majd lehetővé teszi, hogy iteratív néz minden pixel, minden pont a képen. Mi a pixel? Nos, hogy egyértelmű, ha megnézzük az eredeti és a nagyítás, ha tényleg fel a szemed a számítógép képernyőjén, ez Csak egy csomó pontok, több ezer képpont összezsúfolva vannak. És akkor mi van tenni? Mindegyik azok a pontok, végső meghatározása, az eredmény a mi általában nevezett RGB, piros, zöld, kék, amely ismét, lehet kombinálni, hogy ad semmiféle színek száma. Sőt, ha emlékszel sok-sok évvel ezelőtt, vetítőernyők mint ezek a dolgok Régebben nem egy objektív, hanem három. Egyikük kiköp vörös fény, az egyik őket kiköp zöld fény, egyikük kiköpte kék fény. És ha egy középiskolás mint én, ahol soha nem voltak egyenesek, te Mindig figyeljük történelem filmek hogy kissé torz, mert a három szín nem voltak kombinálása megfelelően. De kiderül, hogy az egyes ezek az értékek a vörös, zöld, és kék, lehet egy szám van hozzárendelve. Például, 0 piros jelenti, hogy nem piros, 0 a zöld azt jelenti, nem zöld, és 0 kék jelenti, hogy nem kék. Tehát, ha nincs piros, nem zöld, és nem kék, milyen színű van? KÖZÖNSÉG: [hallható] DAVID MALAN: Tényleg remélem, ez fehér. Sajnos, ez a operates-- sajnálom? KÖZÖNSÉG: [hallható] DAVID MALAN: Tehát valójában fekete, ebben az esetben. Tehát, ha ezek egyike sem színek kapcsolva, akkor fekete. Azonban, ha van, mondjuk egy csomó őket, mint a sok piros, 255 belőle, sok zöld, és sokkal kék, hogy fehér. Tehát ez a két véglet. Tehát ez a logika, ha van egy csomó piros, és nem zöld és nem kék, milyen színű ez? KÖZÖNSÉG: [hallható] DAVID MALAN: Jobb, nyilván. És akkor nem piros, csomó zöld, nem kék, majd Ha Rézfúvós lévén jól, akkor csak befejezni IT, csak azért, mert, de ez természetesen, Most, a kék. És most akkor össze ezeket a színeket. Most, hogy félre, ha valakinek van valaha valamilyen aktuális weboldal tervezés, lehet, hogy tényleg lásd szimbólumok, mint ez. FFF-- és valóban, ez valószínűleg még azt sem. Ez FFFFFF. Bárki látott F és E a és A through-- így kiderül, beszéltünk tegnap a tizedes, és ma, a fajta kb tizedes. Ma beszéltünk bináris. Kiderült, hexadecimális egy nagyon közös alap rendszer használata a számítástechnikában. Binary két, decimális 10, hexadecimális 16. És kiderül, hogyan számít hexadecimális? Nulla, egy, kettő, három, négy, öt, hat, hét, nyolc, kilenc, mire használja kilenc után? Mi a következő szám? Már használt nulla. Kell 16 ilyen. Nulla, egy, kettő, három, négy, öt, hat, hét, nyolc, kilenc, szükség van néhány önkényes konvenció. És mi az emberiség úgy döntött, egy ideig ezelőtt, hogy kilenc után jön a levél A, majd a B, majd C. Így a Így számolni hexadecimális nulla, egy, kettő, három, négy, öt, hat, hét, nyolc, kilenc, A, B, C, D, E, F, és hogy fog számolni akkor egészen, kiderül, hogy 15. Tehát nulla és 15 nulla keresztül F. Most miért is fontos? Nos, ha van két F-nek, ez hogyan kifejezni 255. Tehát hosszú történet rövid, a A világ a Photoshop, hogy grafikai szoftver, A világ a webes fejlesztés, ahol sok a színek, Természetesen játszani, Gyakran programozók fogalmazzák meg ezeket hexadecimális, csak azért, mert hajlamos hogy egy kicsit egyszerűbb. Noha első pillantásra ez sokkal bonyolultabb. Tehát minden esetben, ez fontos mert Nick Stanford adott nekünk hat darab funkcionalitás hogy te, a bimbózó programozók, most már képes használni. Beépítve ebbe a web oldal hat funkciók, Hat eljárások Nick írta. Három közülük kap egy számot, egy piros, egy zöld, vagy egy kék érték. Három közülük beállíthatja az értéket. És ezek az aláhúzás csak helyőrzők, így meg kell tudni, hogy mik ezek. Tehát ez a három funkció, Az első ilyen dolog lesz egy x-koordináta, és a második ezeket a dolgokat lesz egy y-koordináta. Más szóval, amely DOT, amely pixel akarsz, hogy a zöld, kap a kék, kap a piros. És akkor itt ez lesz x, ez lesz egy y érték, és ez lesz a szám. Tehát lássuk az első sorban ennek együtt aztán majd hagyjuk meg próbálja levezetni a többit. Tehát egy az utasításokat Az ezen az oldalon, meg kell hogy növelje a vörös faktorral 10, és el kell távolítani a zöld és távolítsa el a kék. Kezdjük az utóbbival forgatókönyveket. Tehát, ha azt akarom, hogy, és megyek behúzni segítségével néhány terek, ha azt akarom, hogy állítsa be a piros, A zöld, illetve a kék érték, Megyek tegye a következőket. Kép, im.setBlue, majd alapján én itt található utasításokat, Mi az a három dolog, kéne írja belsejében zárójelben most? Kell az x értéket, a y értéket, és milyen számot rakjam itt, ha én szeretnék megszabadulni A kék alapján ez a történet itt? Csak nulla. Ha azt akarom, nem kék, én csak fog változni, hogy nulla. Most csak összefoglaljuk, amit ez csinál. Van itt ilyen top második és harmadik sor, Azt állította, két hurkot, ágyazott hurkok, ha majd, hogy megy, hogy a hatás A halad balról jobbra, fentről lefelé át az összes X értékek és az összes Y értékek. Mert megint egy kép Csak egy rács a sorok és oszlopok. Tehát ez fog kapni megszabadulni az összes kék. Hadd hagyjuk a következő sorban az Ön számára. Hogyan lehet megszabadulni az összes zöld? KÖZÖNSÉG: [hallható] DAVID MALAN: Nice. KÖZÖNSÉG: [hallható] DAVID MALAN: Nice. És fogok kicsinyítés és csak úgy érdekel az, hogy már nem történt semmilyen elírás. És ha elégedett azzal, amit tettél, kattints erre a gombra Run / Mentés és mit kapsz. És ismét tettünk Csak három változás. Mi kell hagyni, hogy az első megjegyzést, és helyette a két sornyi kódot. És ez rendben van, ha meg kell, hogy elérje A Run / Save gombot néhányszor rögzíteni valamit. És hadd nagyítás én kódot, így átírhatja. Jó. Látom Andrew mi Úgy tűnik, hogy a hiba. Ő csak kapott egy nagy fekete téglalap az ő képernyőjén. Tudja valaki másnak egy nagy fekete téglalap? KÖZÖNSÉG: Igen. DAVID MALAN: Nagy fekete téglalap? OK, úgyhogy gondolom mit jelent ez. Azt mondta, hogy nulla, nulla, nulla, így nem zöld, nem piros, nem kék, fog adni a fekete. És kiderül, hogy a legtöbb laptop Csak nem elég hűséget. Nem lehet eléggé elmondani ott valójában ott valami. És ha a fajta talán sovány a képernyő előre és hátra, Talán látsz kis valamit ott? Lehet, egyfajta, egyfajta? Ez nem teljesen fekete. KÖZÖNSÉG: [hallható] DAVID MALAN: Spoiler! Van némi vörös ott van, de emlékszik a műszaki A probléma, Nick tónusú le. Ő deszaturált némileg, de nem egészen a nulla. Tehát ha azt akarjuk, hogy magasztalja az összeget piros, hadd javasolni ezt a trükköt. Hadd nagyítás a monitoron. És hadd menjen előre, és azt mondják, összeg megegyezik im.getRed (x, y). Ezt a kódsort, hogy nekem egy úgynevezett változó. Van önkényesen, de vitathatatlanul ésszerűen felhívtam a változó milyen, látszólag? Összeg. Csak összeget. Tudtam volna nevezte bármi, amit akar, de én Ezzel a többi funkció hogy én korábban leírt hogy az összeget a piros x vessző y. Miért tettem ezt? Mit akar itt csinálni? Meg kell add-- KÖZÖNSÉG: [hallható] DAVID MALAN: Igen, talán szorozza meg 10. És ha nem tudja ezt, én fog menni előre, és erre a célra. Megyek megy előre, és mondjuk, azt akarjuk, hogy a piros szín mennyisége Azt akarom, hogy bármi ez a piros, szor 10, és a csillag, a csillag a billentyűzet the-- ne használjon x. Használja a csillag. Így szaporodnak a dolgokat a legtöbb programozási nyelvben. Így szerint Kareem intuíció, a változóban tárolt úgynevezett összeg, hogy mennyi vörös szeretnék a helyszínen xy. Hogy most, tudom, hogy hogy Pixel van ez a szám? Már csináltam ilyet. Te meg a zöld és a kék nincs értéke, hogy nulla. KÖZÖNSÉG: [hallható] DAVID MALAN: Igen, jól nem akarja, hogy 10. Már nem a matematika itt. Tehát egyre értékét piros, amely egy alacsony száma, feltehetően. Mi megszorozzuk fel 10. Mit szeretne tenni a változó összeget most? KÖZÖNSÉG: [hallható] DAVID MALAN: Nice. Tehát im.set-- mi? KÖZÖNSÉG: setRed. DAVID MALAN: setRed, a helyszínen xy. Igen. És csak az összeget. Más szavakkal, egy változó egy átmeneti helykitöltő hogy meg tudja fogalmazni, amit akarsz itt. Mi történetesen amivel egy szám benne, abban a pillanatban. Már szorozva azt 10, hogy ez nagyobb. És most helyett, hogy a változó mint a harmadik érv, vagy bemeneti beállítani piros. És így, hogy ha egyszer befejezni ezt, és tudomásul veszik A félig kettőspont és a zárójelben. Menj előre, és kattintson run / menteni újra, és meg kell látni, varázslatosan, mi volt valójában ott. [? ARWA,?], Mi van ott? Az Eiffel-torony teljes körű piros, nem egészen sötét. meg kell még nyilvánvaló most, igaz? RENDBEN. És Andrew, nincs több fekete doboz? KÖZÖNSÉG: [hallható] DAVID MALAN: Rendben. Így fogom tartani ezt a képernyőn. Ha azt szeretnénk, hogy játszani ezt a Később, én újra ezt az Ön számára. Azonban ez a kód itt pontosan ezt tette. Miért nem csinálunk egy másik. Hadd lépjünk le kissé. Tehát ebben az esetben, a kivetítő nem igazán csinálni igazságszolgáltatás. De a képernyők, akkor valószínűleg Van egy nagyon piros, és nagyon fekete doboz. Ez is egy puzzle, amely mutat valami híres. Azonban a kép torzult. Az igazi kép, ezúttal a a kék és zöld értékeket. Azonban ők minden osztva 20 így az értékek nagyon kicsi. A piros értékek csak véletlen számok, a zaj. Undo ezek a torzulások hogy felfedje az igazi képet. Tehát Nick majd megmondja, hogy mit kell tennie. Állítsa be a piros értékek nullára, és akkor nem rontja el, mi az. Majd szorozzuk meg a kék és a zöld értékek 20. Tehát majdnem ugyanaz a program, mint korábban, de te megfordult a folyamat. És én tettem kódot előtt a képernyőn esetén azt szeretnénk, hogy utalja vissza az vagy játszani tovább, hogy az egyik. Hadd fókuszálva az adott. De megoldani réz kép puzzle, a kettes számú. KÖZÖNSÉG: [hallható] DAVID MALAN: OK, így ez vagyok nem megy, hogy annyi tippeket. Szóval would-- ó, hadd lásd, van egy elírás itt. Tehát ne feledd, ez itt valójában szüksége van, hogy menjen oda. Tehát mi azt javaslom, ha azt akarjuk, összpontosít ez, ott van a válasz. Ha azt szeretnénk, hogy átírását, hogy kapjon az első munkanapon. És akkor tudod használni, hogy a ihletet a másodikat. Szép. Jó. És a furcsa, Ez egy egyszerű példa A tudomány vagy művészet úgynevezett szteganográfia a művészet bujkál információk a képeken. Jellemzően a képeket lehet vízjellel nagyon otrombán a logó az alján sarok, de tisztán, akkor lehet sokkal kifinomultabb róla, és valójában elrejtése más képek a Képek valahogy ezzel a technikával. Vegyünk egy másik 30 másodperc, és aztán legalább be, amit látnod kell. És én hagyja el a harmadik ont egy otthoni edzés, Ha szeretne többet egy kihívás ezen a hétvégén. És azt hiszem, Andrew talán ütött először. Mi a második kép, Andrew? KÖZÖNSÉG: Szabadság-szobor. DAVID MALAN: Szabadság-szobor lesz a válasz ebben az időben. Tehát újra, csak néhány egyszerű példák, a cél az, amely az, hogy érzékeltessem, milyen mi már lefordított képi Scratch blokkok több bosszantó és több bonyolult kódot, de minden ötletet még mindig pontosan ugyanaz, jóllehet a bevezetése most fogalmának egy változó, mivel képes tárolni valamit átmenetileg. Csináljunk még egy hands-on, csak azért, hogy most csatlakoztassa a pontok hogy valami egy kicsit több valós. Ha készen áll, ha tehetnék megy ez az URL a képernyőn. Ez is a másolatot a diák, developers.google.com/maps~~V. Nézzük valóban tenni valamit igazi, hogy úgy mondjam, az interneten a Google Maps API, vagy application programming interface, a következő módon. Google, mint sok vállalat, ad egy csomó ingyenes funkciót amelyek segítségével építeni a saját érdekes alkalmazásokat. Sőt, ha valaha is használt Uber kap egy taxit, vagy egy autó, Ön valószínűleg tudja, hogy über van A térkép és ez azt mutatja, autók rajta. Azaz, a legjobb, ahogy csak tudok mondja, a Google Maps API-t. Ezek tulajdonképpen a Google Maps, de Uber nem térképészeti cég, sem lenne az a Különösen érdekes probléma hogy megoldja a tetején a autószerviz probléma. És így állunk, megint a vállán mások, a Google ebben az esetben. Így használja a Google Maps, de a saját szervizek és más hasonló funkciók. Így megyünk, hogy kihasználják Az ezt tegye a következőket. És ha már ment túl gyorsan, csak hívj át egy pillanat alatt. Örülök, hogy újra bedugni néhány kép dolgokat. Meg kell látni magad egy oldal, mint ez. Tehát a Google szép, és ők a legjobbak között Az, hogy nem csak API-kat, de a szabad API-kat lehet játszani, vagy használjon a kereskedelemben. Ők megkezdi a töltést, ha a használati magas, de mentem előre előre és aláírt minket egy ingyenes fiókot hogy remélhetőleg 10 számítógépek nem zárja minket váratlanul. Így remélhetőleg ez bemutató fog működni. Azt tapasztaljuk, hogy azok API-k Android, iOS, webes és internetes szolgáltatások, bármi legyen is az. Nézzük összpontosít interneten. Tehát kattintson a rózsaszín doboz, web, és hogy vezet, remélhetőleg egy oldalra itt. És van egy csomó API-kat. És ez lehet egy kicsit nyomasztó az első, de én irányítani minket, mit akarunk. A bal felső sarokban van a Google Maps JavaScript API, a JavaScript API. Így megy előre, és kattintson, hogy az egyik. És hogy vezet, most a következő oldal, demók és a minta kódot. Hadd kicsinyítés itt. És hadd minket az alábbiakra: lépjünk le ahol azt mondja gyorsindítás lépéseket. A képernyő kell kinéznie, mint az enyém. És van két lépést, hogy egy gombot, és indítsa el a fejlődő. Már megtettem az első lépés a minket, kapok egy úgynevezett kulcsot. És ez egy közös ötlet. Egy API kulcs általában csak nagy véletlen számot vagy karakterláncot hogy elvárják hogy illessze be a kódot, hogy a Google tudja, hogy ki vagy, ha Ön használja a szolgáltatás, a API-t. Nem azt jelenti, vagyunk töltődik semmit. És most, kattintson helyett Egy kattintva indítsa el a fejlődő. Ha tudna csak integetni nekem vége, ha nem tudja, hol vagyunk. Ezért most is csak karcolja felület, de itt mi Azt hittem lesz kényszerítő az, hogy valójában mindannyian, segítségével Cloud9 az egyik ablakban, és Ez a bemutató egy másik ablakban, lets valójában a saját alkalmazás létrehozásához és működtetéséhez hogy tartalmaz egy egyéni Google Térkép a saját weboldal, majd hozzáteszi, egy vagy két funkció. De mi csak karcolja felülete, amit tehetünk. Tehát csak egy gyors biztonsági ellenőrzést. Mindenki ezen az oldalon, Google Maps JavaScript API? Kell mondani a kezdetekhez. Nem fogunk átmenni az egész dolog, bármilyen eszközzel. OK, egy másik lapon, ha nem meg van nyitva, akkor menj be Cloud9 és kap magának, hogy csak Új lap végül. Tehát megint c9.io a tegnapi, c9.io, és csak új fájlt hoz létre. És megy előre, és hívás azt, amit szeretne. Felhívtam az enyém map.html. Nevezzük semmit végződő .html. És ha kell, durván ahol én vagyok ebben a folyamatban csak egy villogó prompt egy üres lapon valami olyasmi map.html. Vagy fájl új fájl ebben az időben. És most, több mint a Google Maps JavaScript API, fogunk kihagyja végig ezt a szöveget. De észre, hogy helló világ Valóban mindenhol, látod most. Helló világ a nagy színes Például egy csomó HTML. Menj előre, és másolja csak azt HTML, így a doc típusú tetején egészen a közeli HTML tag, lépjen előre, és másolja át az összes hogy-- ismét ez alatt a hello world example-- és illessze be, hogy Cloud9 lapon így most a képernyőn meg kell nézni durván, mint az enyém. És tudod menteni, de Nem teher ez csak még. Nézzük először pillantást a kódot, és nézd meg, mi nem következtethetett vagy megtanulni attól, amit a Google volt számunkra vakon másolás és beillesztés. Ők csak segíteni akar, szó, hogy itt kezdte, de nincs olyan sok komplexitás valójában van. Bármilyen kérdése csak még? Biztonságban vagyunk, hogy haladjanak előre? RENDBEN. Olyan gyorsan, nézzük csak ezt néhány gyors alapvető ellenőrzést. Vonal egyik, amit én látni, és remélhetőleg, akkor Lásd, mit jelent az, hogy DOCTYPE HTML? Kareem, felidézni? KÖZÖNSÉG: [hallható] DAVID MALAN: Igen. Itt jön a HTML 5. Közben sorban kettő a képernyő itt azt jelenti hé böngésző, Itt jön az aktuális HTML. Hármason van hé böngésző, Itt jön a fejét. Vonal négy, természetesen, hé böngésző, itt jön a cím. Mit jelent az ötös vonalon csinálni? Tulajdonképpen ez nem igazán semmit számunkra. Ebben az esetben, csak átméretezi Az oldal az alapértelmezett. Soros hathengeres, mi még nem beszéltünk, de meghatározza a karakterkódolást. Van különböző módon kódolni a fájlokat, különösen az idegen nyelveket. UTF-8 csak hajlamos az alapértelmezett. Tehát most fogjuk látni a sorban Hét-től 16, CSS. És bár már nem látott mindezen dolgok előtt, tudjuk milyen következtetni. Tehát sorban nyolc eszközzel, hé böngésző, alkalmazni az összes következő, melyhez két tag, látszólag? A HTML és a test szöveget. Tehát a vessző az új dolog van. És ez csak egy módja megadásával több címke egyszerre. Akkor megvan a kapcsos zárójelek. Tehát úgy tűnik, ez azt jelzi a böngésző hogy a papír magassága 100%. Tehát akkor is, ha nagyon kevés tartalmát, hogy az egész oldal, hogy a dolog töltse ki az oldalt. Hogy a térkép végül töltse ki az oldalt. Margó, ez mit jelent? Ez általában olyan, mint az önkényes fehér térben a szélek körül hogy bizonyos böngésző tervező csak határozott legyen ott, mert fajta teszi dolgok tisztább. De mi nem akarjuk. Azt akarjuk, hogy a térkép megy egészen az éleket. Padding, hasonló szellemiségben árrés. Margók jelenti kívül, padding eszközök belül, de ez ugyanaz a fajta foglalkozik. Ez egy kicsit a puffer közted és a széleket. És akkor 13-as vonal jó esély a gyors felülvizsgálat. Mit éles map Vagyis, vagy hashtag térkép jelent? Mit jelent, hogy olvassa el, elvileg? KÖZÖNSÉG: [hallható] DAVID MALAN: Pontosan. Ez a tulajdonság, ez CSS tulajdonság vonatkozik, hogy csak egy dolog, a HTML-címke hogy van egy azonosítója idézet, idézet vége "map". És most nézzük gyorsan előre, lépjünk aljára a fájl, amely nem túl messze, és vegyük észre on-line 19, ha illessze pontosan olyan, mint én, 19 vezetéken van csak egy div, amely egy felosztása a lapot, amely tegnap úgynevezett téglalap alakú területet. Ennek semmi benne. Ez egy nyitott tag, közel tag. De ez nem is egy egyedi azonosítót. Tehát mi úgy tűnik, hogy itt történik a Google A readying a weboldalt Van egy teljes 100% magasság, és nincs keret, nincs tőke, mert mit fogunk betenni E div, melynek egyedi azonosító térkép, egy valódi beágyazott térképen. És azt akarjuk, hogy töltse Az oldal, és nem csak valami kis téglalap közepén. Tehát 14. sor szintén hangsúlyozza a térképpel kell egy magassága 100%. Tehát most észre a sorok között 20 és 28, ez a JavaScript kódot. És ez, annak ellenére, hogy szintaktikailag egy kicsit furcsa, Ott nem olyan sok folyik itt. Összhangban 21, ez kijelenti egy úgynevezett változó. Ahelyett, hogy azt összegek, mint tettük azt korábban, mi pontosabban mondja var, ami csak annyit jelent, változó. Mi lehetett volna használni, hogy Nick kódot, de nem tette, úgyhogy nem zavar csinálja sem. Ez egy változó nevű térkép, és akkor ott van egy függvény, ami látszólag úgynevezett initMap. Tehát ez olyan, mint a saját egyéni puzzle darab Scratch. Készítettünk egy darab funkcionalitás úgynevezett initMap, és akkor milyen következtetni mi folyik itt. A bal oldali, megvan egy változó, így fogunk tenni a következő dolog benne, hogy a változó, jobbról balra. A jobb oldali mondja, hé böngésző, adj egy új Google térkép. És google.maps.map csak egy funky módon A meghatározza, hogy ezt a funkciót tartozik a Google Maps. Miután a zárójelben, láttunk ezt korábban, hé böngésző, hogy nekem az elemeket az oldalon, a tag az oldalon, amelynek egyedi azonosító is-- KÖZÖNSÉG: [hallható] DAVID MALAN: --map. És mi történik, nos, ezt a sort együtt a 23. sort, lényegében azt mondja, hé böngésző, megy nekem hogy az üres div az oldalon akinek egyedi azonosító térkép, mert azt szeretné szúrni figyelembe it-- adja bele, ha will-- egy csomó tartalom ami történik, hogy jön le az internetről, később. És a Google mindent megtesz, hogy a számunkra. Tehát ismét, a legvégén a nap, itt van ez a példa az absztrakció. Fogalmam sincs, hogy mi az a térkép vagy hogyan kell végrehajtani egy térkép API-t. Nem kell. Csak meg kell mondani a térképen hová tegye magát, és hagyja alapjául szolgáló végrehajtási részletek a Google. Most van látszólag két adat hogy ez a példa amely a Google API-t. Úgy látszik, a térkép közepén, és a nagyítási szintet, hogy úgy mondjam. És nem mindenki ismeri fel ezeket koordinátákat, a szélességi és hosszúsági? Valószínűleg nem, de mehetünk vissza A bemutató, szó szerint látni. De majd meglátjuk, hogy csak egy pillanatra. Nagyítási szint közötti érték, én nem tudom, az egyik a 13, vagy valami ilyesmi. Csak van köze, hogy milyen messze vagytok nagyított, vagy ki, és ennyi. És most a legvégén Az oldal közlemény sorban 29-- ez egy kicsit csúnya, mert ez wraps-- ezt a kódsort ami letölti a böngésző a Google tényleges API. Az összes kódot, hogy a Google mérnökök írva, hogy végre ez az egész jellemzője beágyazható térképeket. Most nem változtat semmin. Ha követi végig, megy előre, és csak menteni a fájlt, ha valóban amim van. Tovább a saját URL-t. Akkor kattintson a Futtatás gombra fel tetején, és megmondja Ön az URL a web szerver újra. És ez vezet, hogy egy új lapot. Ha rákattint a Megnyitás map.html, és esély te fog kapni egy figyelmeztető, hibaüzenetet, igen? Hibaüzenet, hibaüzenetet? Így sajnos a hiba üzenet nem az, hogy a felvilágosító ha valóban megnyitja a konzol, hogy külön lapon mi nyitogatta tegnap és Egy kicsit korábban még ma. De én botlott ez a korábbi, így már rájött, hogy mi a megoldás. A mai diák, vagy inkább a Cloud9, értesítés hogy nem tettünk valami szándékosan. Figyeljük meg, hogy ez a script tag 29. sor, ha olvassa át, ez olyan, mint maps.googleapis.com/ valami, valami, valami, majd észre, hogy valaki, Az egyik fejlesztő, írta csupa nagybetűvel levelek, az API kulcsot. Meg kell illeszteni valamit ott. És ez volt a lépés Tettem nekünk korábban, és megint lehet, hogy feketelistára minket, ha hirtelen, 12 vagy többen kezdi el használni ugyanazt a kulcsot, de lássuk, mi történik. Tehát, ha bemegy a mai diák, egy csúszda később, van ez nagyon funky látszó sztring. Menj előre, és csak másolja és illessze, ha azt mondja az API kulcsot. Ez az egyik regisztráltam. És biztosan nem próbálja kiírni kézzel, mert úgy érzi, tele A helyesírási, potenciálisan. Tehát csak másolja be ezt. És ez megy, hogy a vonal hosszabb, de most, csak hogy tisztázzuk, meg kell nézni egy kicsit mint ez, ahol kulcsfontosságú egyenlő nem aktivált kiabál rád. Az oldal mentéséhez, menjen vissza a másik lapot, újra és reméljük, hogy a térképet, hogy hol? KÖZÖNSÉG: Ausztrália. DAVID MALAN: Ausztrália. Tehát nyilvánvalóan ezek a GPS koordináták Ausztrália. És hadd sétálni egy pillanatra és segít, aki nem egészen ott, de hadd javasolni, a Google, meg A GPS koordináták a saját szülővárosában vagy a saját hazájában. És valószínűleg a Google viszont ez fel, vagy a Wikipédia lehet mondani. De választani két különböző értékeket A szélesség és hosszúság, visszamenni, és illessze be őket, és majd töltse újra az oldalt mentés után és nézd meg, hogy van egy Térkép a saját szülővárosában. És ha végeztél hogy a nyomon követési challenge-- és adok egy kicsit kevesebb irányba, szándékosan úgy, hogy szándékosan kell küzdeni egy pár percig a dokumentációt, változtassa meg a térképen, hogy nem ez a rajzfilmszerű alapértelmezett, de a műholdas térkép. Szóval valóban látni a műholdas képekkel helyett szép színek. És a célzást adok megváltozik a térkép típusát. Menj vissza, hogy egyre kezdett oldal inspirációt. Ahogy már félretett, ha keres, van olyan sok dolog, amit tehetünk. Néhányan közületek már megváltoztatta a térkép típusát. De lehet do-- például, hadd megy valami tettük a tanfolyam Azt teach-- maps.cs50.net. Egyik undergrads tette ezt. Mi középre a térkép felett Harvard Yard és overlay mindezen épület nevét, és mi volt rá adni ezt. Tehát, ha azt szeretnénk, hogy keresni, például, Matthews Hall, van egy kis legördülő menüt. És azt hiszem, a Bootstrap, a könyvtár korábban tárgyalt erre. És ha rákattint a Matthews Hall, azonnal ugrik a térkép egy bizonyos hely, és ez azt mutatja, egy képet ebben a kis pop-up. De még ez a kis pop-up, azt nem hajtotta végre. Ha lépjünk le a mi egyre kezdett oldalon, és keresse meg az információs ablakokat, látni fogja, hogy bizonyos funkcionalitás te magad felvehet, jóllehet egy kicsit a komplexitás, van egy úgynevezett információs ablak. És ha rákattintok egy példát itt, és ez az, ami szórakoztató, meg tudod csinálni a dolgokat, mint ez, rákattint egy marker, majd íme, információ bukkan fel. Így már nem is vezetett elég funkciók JavaScript festeni egy képet, hogy pontosan hogyan lehet bekötni az összes ezt a cuccot össze, de már olyan karcos a felület. Sőt, amit most tettem, amikor Rákattintottam, hogy marker, volt kiváltó eseményt, úgynevezett on click esemény. És valóban látta egy Amennyiben a korábbi ma, az úgynevezett nyújtson esemény, amikor mi voltunk megelőzése a felhasználó keres macskák. Így már egyfajta szedett és választottunk az összes közül a különböző funkciókat, hogy ad egyfajta remélhetőleg Az mit tud valójában köze egy kicsit kényelmet programozás, és teljesen szabad források. Bármi kérdés? Nem? Ez az utolsó esély, Legalább ma, pénteken, hogy bármit le a mellkas úgy, hogy kisétál magabiztosan és kényelmes. Igen. KÖZÖNSÉG: Miért nem hozzá még egy dolog? DAVID MALAN: Te jó ég. Meg kell pihenni a hétvégén, azt hiszem. Más kérdés? KÖZÖNSÉG: [hallható] DAVID MALAN: Te can-- a Internet Explorer, nyugodjék békében, amivel tudja tenni VB script, virtuális alap forgatókönyv, de tényleg soha nem fogott. Tehát a rövid válasz az, csak a JavaScript. Más kérdés? Rendben, hadd tegye ezt. Hadd megragad kollégáink kívül. Van néhány értékelést formákat, hogy szeretnénk, ha mindenki eltölteni néhány percet kitöltésével. Azt akarják összegyűjteni, hogy a forma és bármely mentességek hogy lehet, hogy kívülről. Ők is tanúsítványokat. Gondolom van még néhány snack kívül. Engedj ki ezeket, és ha bármilyen kérdése van az időközben Majd sétálni több egyénileg és mi lehet a kezdéshez. Természetesen. KÖZÖNSÉG: [hallható] DAVID MALAN: Ez Általában igaz ezekben a napokban. Természetesen az interneten szoftvert, akkor támaszkodva mások te vagy esztétikailag segítségével dolgok mint Bootstrap, így nem végre kell hajtania az alacsony szintű részletek menük és gombokat, és ennyi. Te támaszkodva valaki mint a Google, így Nem kell építeni egy Uber az üzleti és a térképészeti üzleti, és tetszőleges számú hasonló alkalmazásokat is. Tény, bejelentkezések népszerű is. Ha már használt Spotify vagy akárhány honlapot, akkor jelentkezzen be, hogy néhány honlapok segítségével Facebook. Tehát mi szép, ott olyan API-k bejelentkezések manapság, így nem kell hogy a saját felhasználói tábla és az összes saját adatbázis szükségszerűen ugyanolyan mértékben. Akkor hagyja Facebook mindezt Az, hogy a komplexitás az Ön számára. Tehát ez egy izgalmas időszak, Őszintén, a programozás, mert olyan sok harmadik fél szolgáltatásokat, melyeket építeni a tetején. És ismét, az ár, amit fizetni kell pénzügyi vagy leállás. Ha a Google megy le, így nem Uber, vitathatatlanul, de talán ez egy ésszerű kompromisszum. És ismét, ez volt az egyik témája, remélhetőleg, az elmúlt pár napban, ezek kompromisszumokat. És ritkán van megy hogy egy helyes válasz. Ez tényleg a jobb két vagy több válasz. Adja át ezeket körül. És ezek Cloud9 számlákat továbbra dolgozni, elméletileg örökre. Lehet, hogy megtalálja, ha várni néhány napot, vagy egy vagy több hétig, hogy jelentkezzen vissza őket, ez eltarthat, mint egy vagy Öt perc, hogy nyissa vissza, de ez csak azért, mert fel hogy aludni, hogy mentse a forrásokat.