DAVID Malan: U redu, mi smo natrag. Tako je za uzbudljiv zaključak, naš posljednji odjeljak na web programiranja, što sam Mislili smo da bi koristiti kao opći pojam zarobiti nekoliko preostalih poglavlja. Tako je na kraju od dan, mi ćemo zapravo učiniti malo kazaljka-na web programiranje s jezikom zove JavaScript. I mislim da ćemo pogledati na nešto vezano uz slike i otkrivaju nešto tajno skrivena u slici, a također pogledati na Googleu Maps API, za programiranje aplikacija sučelje, kao nešto prikazuje vrstu softvera to je sve više i slobodno dostupan danas. No, zašto ne bismo pogledati na sastojak u ovom svijetu da smo vrsta bila uzimanje zdravo za gotovo ne postoji već neko vrijeme, baza podataka. Za proteklih dana i pol smo pretpostavili da imamo pristup bazi podataka, ali Koji problem baza podataka riješiti? Što to učiniti za nas? Što je? PUBLIKA: [nečujan] DAVID Malan: Zadržavanje sve informacije, U redu, a što vrste informacija možda staviti u njega? PUBLIKA: [nečujan] DAVID Malan: Sve informacije što staviti u njega, da ćete dobiti natrag. To je istina. I na tipičan web-based web stranicu ili web prijava, što vrste informacija, Naime, možda staviti unutra? PUBLIKA: [nečujan] DAVID Malan: Korisnici. Dakle, ono što je korisnik? PUBLIKA: [nečujan] DAVID Malan: OK, registriran Korisnik mjestu. I što to znači Pohranjivanje podataka o korisniku slobodu? Što sastavlja korisnik? Korisnik ima što? PUBLIKA: [nečujan] DAVID Malan: Da, osobna podataka, a to mi se sviđa. Budimo precizniji. Dakle, korisnik obično ima ime, što bi drugo moglo korisnik ima? PUBLIKA: [nečujan] DAVID Malan: addr-- redu, pa ime, prezime. To je dobro. Zapravo, idemo popraviti da, zato jer će otvoriti mogućnost rasprava, ipak, i dalje. Ime, prezime, spol. Osobna neke vrste. Što drugo? Čuo sam nešto prije, previše. E-mail, poštanska adresa. Tako ćemo pauzu tamo i sada razmotriti Nije ono što smo pohranjivanje u bazu podataka, but--, a ne zato jer je to možda očito je da nakon što se registrirate korisnika, Želite li ih se još neko vrijeme. Vi ne želite Samo se pohranjuju u RAM-u i biti forgotten-- tako neka se usredotočiti na iskustva. Ispostavilo se da je u svijet baze podataka, postoji barem dvije vrste ovih dana. Nešto se zove SQL baza podataka, Structured Query Language, ili, cutely imenovan, NoSQL, što nije SQL. A drugi je primjer onoga što bi moglo zvati se objektno-orijentirani, ili predmet trgovine, baza podataka koji pohranjuje objekte, a ne, isprika ja, kao što ćemo uskoro vidjeti, redaka. Zato ćemo se fokusirati samo na trenutak na Prvi od njih, to jest SQL baze podataka, ako je samo zato što je tako poznato je već, da bilo tko tko ima koristi Excel ili Google tablice ili Apple Brojevi ili bilo standardni program za proračunske tablice, ili, ekvivalentno, ili više sofisticirano, nešto poput Microsofta Access ili Oracle ili MySQL ili PostgreSQL, od kojih su svi su nazivi proizvoda za implementaciju od sljedećih ideja. Relacijska baza podataka je jednostavno nešto što ima redaka i stupaca. I redaka i stupaca, Doslovno sam nešto znači ovako, pa gdje bismo mogli imati naziv polja i njegove vrste ovamo. I zapravo, neka me sada početi mapirati tih. Pa zapravo, ne znam Zato sam nacrtao zasebnu tablicu. Ostanimo tako jednostavan. Imamo pravo ovdje Počeci našeg stola, gdje je to je naziv polja a to je tip podataka, i po vrsti mislim na sljedeće. Je li to broj, je li to string, kratki niz poput riječi, je li to stav, je li binarne podatke, kao što su slike? I neka je samo zafrkavati ovo osim samo na trenutak. Dakle, prvo ime, broj, niz, veliki komad text-- PUBLIKA: [nečujan] DAVID Malan: Da, tako niz. A u bazi kontekstu, mi ćemo obično nazivamo char polje. Ja ću samo reći char za sada, ali smo će se precizirati to u ovom trenutku. polje znakova. Prezime je vjerojatno isto. Spol? Muško ili žensko, tako da mogao biti char polje. To može biti bilo citat, citat "Muški" ili citat, citat: "ženski" ili je mogao biti m ili f. Ako želite biti uključeno, možda trebati treći vrijednost ili nekakav drugi polju uopce. I tako da bi mogao koristiti pravi lažne. Polje se može nazvati muškarac, onda bi se moglo reći true ili false. No, to ne mora nužno snimanje sve informacije koje želite. Tako ispada da postoji još jedna vrsta polja koja bi mogla biti korisna ovdje u tipičnom baze podataka, zove se enum, gdje je polje lik, ali, dizajner, doći do nabrojiti moguće vrijednosti, kao citat, citat "muški", citat, citat: "ženski" i tako dalje. Tako da bez obzira na vrijednost u bazu podataka, je zaista lik-based, ali to mora biti jedna od tih vrijednosti. Mi vjerojatno ne želite enum za prvo ime ili prezime. Inače bismo imali nabrojati, kao ime potječe od, doslovno svaki Moguće ime i prezime. U redu, tako ID ono što bi trebao osobna biti? Da, pa možda jedan broj. Tako ćemo staviti s da, za sada, broj. I po broju, broj je malo preširok sada. Za kraj drugog dan, osjećam se kao da smo treba biti malo precizniji. Broj moglo značiti kao, to mogao bi biti nešto poput 1,236. I to je vjerojatno ne Što podrazumijevamo pod ID-u. Što ćemo vjerojatno znači po ID-u? PUBLIKA: [nečujan] DAVID Malan: Oh, u redu, tako da možda to nije ni jedan broj. Možda je zapravo jedinstveni identifikator to je niz, poput korisničkog imena. Dakle, apsolutno, može biti. Mislim da je netko vjerojatno značilo numerički, ipak. Tako ćemo ostati s tim. Kakav broj? Što je više precise-- prirodni broj. Da broj kao 0, 1, 2, 3, pa ćemo to zvati cijeli broj. Pa čak i tada, što sam mogao se nitpicking, to je zapravo i nije samo Općenito cijeli želite. Vi vjerojatno ne želite negativne vrijednosti, Upravo zato, samo se osjeća čudno. Vi vjerojatno želite prirodnih brojeva. Tako možete izraziti da se u bazi podataka, ali za sada ćemo reći cijeli broj. E-mail? To je vjerojatno just-- što? PUBLIKA: [nečujan] DAVID Malan: To je e-mail, ali to je znakove, zar ne? To samo ima funky karakter kao jedan "na" simbol ili nešto drugo, ali to je još uvijek polje znakova. I poštansku adresu? polje znakova. Dakle, to je lijep početak, ali budimo malo precizniji sada. Tako ispada da je u baza podataka, često Imate izbor nad precizniji verzije tih stvari. U stvari, u tipičnom SQL baze podataka, SQL, ili općenitije, relacijske baze podataka, baza podataka sa recima i stupovi, često dobili odrediti ne samo vrsti field-- neka mi neko u sobi here-- ali također i duljine. Dakle, koliko dugo je ime? Mislim, D-A-V-I-D. Dobro, shvaćam ja Vjerojatno je uvrijedio kao pola od ljudi u sobi, desno, budući da su sva imena duže od pet slova, pa pet čini malo sebičan i naivna, tako što je bolje vrijednosti? 10, u redu, a ja mislim mi smo u redu u sobi. 13? 30? Zašto ne uzeti Pristup ranije, kada smo pričali o nizovima i memoriju? Zašto ne bih samo reći kao 1000? Nitko ime ide biti duži od 1,000. Odgurnuti. PUBLIKA: [nečujan] DAVID Malan: Da, to je rasipan, desno, osobito ako je većina imena samo pet ili deset ili 15 znakova, to je vrlo razoran. Dakle, znate što? To je vrsta teško pitanje. Sada svakako možemo analizirati engleski i imena bilo kojem drugom jeziku a i shvatiti, dobro, što je average-- prosjeku ne stvarno pomoći us-- što je max je Vjerojatno ono što stvarno želite. No, ispostavilo se da su čak neki izbor više vrsta ovdje. U tipičnom SQL bazi podataka, su nešto što se zove char polje a također i varchar, V-A-R, za varijablu polje char. A razlika je to. Char polja, što je dizajner, moraju odrediti unaprijed točna duljina polja. Dakle, možda prvo ime kao i 20 osjeća vrsta sigurno. Možda morati učiniti neke Pretraživanje Google mreže na vidjeti ako to je dovoljno zapravo siguran. Tu je vjerojatno ime s 21 likovi, ali za sada, pretpostavljam 20 je sigurno. Polje char bi značilo u bazu podataka koja vas su pomoću 20 i uvijek 20 znakova. Sada ako je samo D-A-V-I-D, 15 od onih samo će biti razmaka, ali još uvijek koristite svih 20 bajtova. Polje varchar, naprotiv, znači da je string treba biti do 20 znakova ali ako je samo pet, ste samo ide na korištenje pet ili možda šest za Posebna vrijednost na kraju, kao da je 0 smo raspravljali kako označava kraj jednog lika Slijed u memoriji. Dakle, kada misliš možete odabrati char u odnosu na VARCHAR, s obzirom da je trade-off? Char koristi tu mnogo znakova varchar koristi ne više od toga mnogo znakova. PUBLIKA: [nečujan] DAVID Malan: OK, kada se zna Duljina niza prilično uvjerljiv samo koristiti char, jer ako ti to znaš, samo ga spusti. A možda je to istina za zip kod, u SAD-u, barem, 02138, uvijek će biti pet znakova dok ne dodate crticu četiri. No, možda imaju neke vrijednosti za što ćete uvijek znati dužinu. Ili možda državni simboli, kao što je New York u New York, i MA za Massachusettsu u SAD-u. Možda vi imate neke situacije gdje je to potpuno razumno, ali toj logici, zašto čak smo overthinking ovo? Zašto ne bismo jednostavno korištenje varchar i onda mi samo ću uvijek koristiti dva lika u svakom slučaju, ili uvijek koristiti pet znakova uopće? Zašto ne samo spasiti varchar za sve, po toj logici? Tu mora biti kvaka. PUBLIKA: [nečujan] DAVID Malan: Može napisati nešto krivo. Dakle, to je istina. No, čak i tada, oni ne mogu koristiti više memorije nego što sam izdvojiti. Još uvijek imam finalu kažu po duljini, tako da ne mogu slučajno napraviti to pogreška, ali je dobra misao. To je više suptilan, ali to je vrlo srodan za našu raspravu, zapravo, od polja i povezane liste ranije. Ispostavilo se da u bazu podataka, ako ona zna da sve vrijednosti su stalne duljine, iako neke od tih vrijednosti su prazne, vrsta estetski prazan, D-A-V-I-D, a nakon toga 15 praznine, ispada da ako svaki polje je jednake duljine, baš kao i niz je sve svoje stvari natrag na leđa na leđa na leđa, tako da ti samo plus jedan mogao doći do sljedeću vrijednost, ista ideja u tablici baze podataka. Ako je sve od vašeg lika žice su jednake duljine, imate ono što se zove izravnim pristupom. Ako su svi nizovi su dužina 20, vi ne samo ne plus jedan koji ste upravo to plus 20, plus 20 plus 20 plus 20, i možete vrlo brzo klizanje ili traženje kroz sve svoje podatke. Varijabilni char polje, s druge strane, uvijek ne imati 20 znakova. To bi moglo imati 20, a zatim 15, a zatim 19, a zatim 10, pa ako želite pretraživati kroz njega, ne mogu samo slijepo dodati 20 bajtova doći do sljedeću. Vi doslovno morati pretraživanje zbog rub strukture podataka, ako hoćeš, je poderan. To je vrsta ulazi i izlazi na bazi o stvarnoj duljini niza. Dakle, kada znate dužinu, kao Kareem kaže, koristite polje char, zato što se dobije da je Učinkovitost se mogućnosti pretraživati ​​kroz njega brže kada ste u potrazi za podacima, na drugi način koristiti varijablu. Na žalost, nemam dobar odgovor na koliko dugo ime treba biti, ali za tako nešto ime, rekao bih varchar je zajednička jer to ne ide biti fiksna duljina za svakoga. 20, ne znam, 20 osjeća malo zbijeno. Recimo samo 50, 50. To zapravo ne cijene vas da puno toga reći 50 umjesto 40, ali u nekom trenutku, morate da sud poziva. Vrlo često, iskreno, za [? Povijesna?] razlozi, iako je to pretjerano, jest 255, jer je prije nekog vremena, u popularnim sustavima baza podataka, kao što su MySQL, besplatni open source alat da puno tvrtki kao i Facebook koriste, ovo je maksimalna zadana tako da ljudi jednostavno otišao s njom. Dakle, nije nerazumno, ali ćemo koristiti malo više intuiciju i reći, je li 50, to je vjerojatno malo pretjerana. Spol, ja volim nabrajanja, pa smo stoga mogu nabrojiti muško ili žensko, ili možda učinkovitije, m ili f ili neka druga simbolika, ali enum osjeća kao dobar izbor tamo. Da bude jasno, spol mogao biti samo varchar, i da bismo mogli baš sve slažu kako je lijepih ljudi, uvijek staviti iste vrijednosti tamo. Muško ili žensko ili sitnica. No, problem je onda da smo mogli pogriješiti, kao [nečujan] predložio ranije u nekom drugom kontekstu. Ako pogriješimo, možemo dobiti netočne vrijednosti u našoj bazi podataka. Dakle, ono što je lijepo o bazama podataka kao što su Oracle i MySQL i drugi, je da imate ovaj zadnji sloj obrane gdje administrator DBA, baze podataka, Tko je projektiranje ovu tablicu kao i mi su verbalno, mogao staviti u Predaj nabrajanja koja štiti protiv toga određivanjem muškarac, žena, i tako nitko još nema programer može slučajno umetnite bilo koju drugu vrijednost. Tako će to biti dobra stvar. To je značajka. Dakle, osobna, uz pretpostavku brojčani ID ga, vjerojatno bi trebao biti pozitivan cijeli broj. I mi ponekad nemamo prilika za razgovor o dužini. Ne bi obično navesti broj ovdje, biste umjesto toga odrediti ovo je int, ili veliki int, kao oni su obično naziva. Ali obično, cijeli bi se, recimo, 4 bajta. A ako je to 4 bajta, to je koliko bita? PUBLIKA: [nečujan] DAVID Malan: 32 bita. Dakle, koliko korisnici mogu imamo u naša baza podataka, ako svi imaju iskaznicu a ovo ID mora biti jedinstven? 32 bita znači imamo uzorke jedan, dva, tri, četiri, five-- pa koliko različitih uzoraka nula a one mogu li ako ima 32? To je ista stvar kao i tražeći ono što je dva do 32? To je veliki broj koji Ne mogu baš dobiti pravo, ali znam da je otprilike 4 milijarde. Dakle, to znači da je tablica baze podataka može imaju četiri milijarde korisnika i to je to. Dakle, ovo je zanimljivo Dizajn implikacija. Pristojan broj tvrtki odlučili, možda ne toliko za svoje korisnike stola, jer imaju 4 milijarde korisnik je rijetka problema. To je svojevrsni Facebook stilu problem, a ne tipičan problem tvrtke. Ali možda ako imate dnevnika transakcija ili neka vrsta podataka koji se stalno dobiva pisane u bazu podataka da apsolutno može imati milijarde i milijarde redova, a koristite cijele brojeve za to, što će se dogoditi čim ste dobili na red broj 4 milijarde a onda pokušati umetnuti 4000000000. i jedan, da tako kažemo? Ja sam pojednostavljivanja brojeve malo. Možete smanjiti, mislim ti morate ga nositi na neki način. A što se računalo će obično raditi, razmišljati o tome, čak i iz ovog jutra, ako imate 4-bitnu vrijednost kao 1, 1, 1, 1, koja je samo vezati jutro zajedno popodne, što nema ovaj broj predstavlja u binarnom? U redu, mi ćemo lakše. Što taj broj predstavlja u binarnom? U redu, mi ćemo lakše, što to predstavlja u binarnom? PUBLIKA: Tri. DAVID Malan: Tri jer imamo one column-- [SMIJEH] Uh! Imali smo i one kolone i dvojke stupac. Dakle, pretpostavimo da je, zapravo, naš [? Okućnica?] nisu bili 32 bita, ali to su bila dva bita, možemo brojati od korisnika broj 0, 1, 2, 3, a onda smo vrsta natrag na korisnika 00 opet. Dakle, to je ono što se obično događa. Ako ste ikada čuli expression-- Vjerojatno niste, ali ako have-- broj preljeva, gdje vas zadržati flipping sve svoje bitova biti najveći moguće vrijednosti, i onda si iz bita, što bi se obično događa? Zašto kažem 00? Pa, to je tri. Kako mogu predstavljati 4? Kako mogu zastupati za broj 4 u binarnom? PUBLIKA: [nečujan] DAVID Malan: One-- da, ne kažem 100 per se, jer ima krivo značenje, ali 1-0-0. Tako da broj 1-0-0 je zaista točno, ali ako imate samo dva bita, što si zapravo učinio? Vi ste prevrnuo na 00. I doista, to je ono što će se dogoditi. Zapravo, možete misliti o tome više familijarno. Ako se sjećate, što, Prije 16 godina, svijet je trebao završiti kada Y2K problema dogodilo. Zašto je to bilo? Pa većina računala, za razumne odluke, su spremanje brojeva kao što je 1975 godine ili godinu 1999 korištenjem samo dvije znamenke u memoriju racunala. Pa naravno, što će se dogoditi kada se na 2000. godinu, idete u to, ili bolje rečeno, da. Dakle, idete na 2000. godinu, ali ako ti si samo pomoću dvije znamenke to izgleda kao godine 00 i tako da sam prevrnuo. I to je razlog zašto puno sustava potreban da bi se ažurirati na vrijeme. Dakle, s koje je rekao, tvrtke poput Facebook pokrenuti protiv toga. Dakle, jedini način da obrađuju Situacija je, iskreno govoreći, da je to predvidjeti. Ili najčišći način obrađuju ovu situaciju je to predvidjeti, tako da ne moraju napraviti izmjene kasnije. Dakle, umjesto od 8 bajta, znate što? Ja ću biti naprijed-razmišljanja ovdje, iako je malo optimističan da ćemo imati 4 milijarde a 1 korisnik je na našoj web stranici. Ali neka se koristiti samo 8 bajta ili 64 bita, koji se općenito pozvao veliki cijeli broj, vrlo tehnički. A to samo znači da možete imati čak i više znamenaka u svom broju. No, to je važan Odluka dizajn, jer ako se odlučite broj koji ima premalo bitova ekspresivnost što zapravo mogao stvoriti bug u softveru. U redu, idemo završiti s e-mail i poštansku adresu. Tako e, koliko bi trebalo e-mail adresu biti? 50. Ja stvarno nemam pojma, ali to je Vjerojatno nešto slično, jer inače nitko neće Napiši ti ako ga dobiva previše vremena, pa 50, idemo s njim za sada. Poštanska adresa, koliko dugo da bi trebao biti? PUBLIKA: [nečujan] DAVID Malan: To nije samo poštanski broj, ipak. Poštanska adresa, čuo sam. Dakle, to je kao 1. Brattle Square, zarez, Cambridge Mass., zarez, 02138. A u stvari, neka mi samo povući se malo lista ovdje. To se osjeća kao da je propuštena prilika. Ako imamo 1 Brattle trg, zarez, Cambridge MA 02138, Osjećam se kao da mi možemo bolje nego samo poštansku adresu. Zašto ne eksplodiraju to malo? Što sam ja ciljaš? Što ćemo umjesto toga imaju za naše redove ovdje, možda? PUBLIKA: [nečujan] DAVID Malan: Da, pa neka je zovu ga street_number, a donja je samo uobičajena način da ono što izgleda kao prostor, ali nije, zapravo. Ulica, a zatim city-- žao? PUBLIKA: [nečujan] DAVID Malan: Mogli smo to učiniti. Linija jedan, linija dva. Zašto ne bismo će zadržati to jednostavno za sada, ali to je apsolutno prihvatljiva odluka. A onda država, a onda neka je biti malo u SAD-centric za sada i samo učiniti poštanski broj, samo zbog toga to će dovesti do zanimljivog greškom ili je problem ovdje. Dakle, pretpostavimo da je sada naš adresu. To je malo više neugodno da imamo sve te više polja, ali sada možemo označiti stvari malo bolje. Dakle, sada ulica broj vjerojatno ne bi trebao biti char, ne? Što bi to moglo biti? PUBLIKA: [nečujan] DAVID Malan: Možda, broj kao opet cijeli broj? Veliki broj? Vi vjerojatno ne živi na 4 milijarde Main Street ili bilo ludo kao što je to. Dakle, cijeli je vjerojatno u redu, ali ima koga ikada živio na adresi kao Trg 1A BRATTLE, ili 1 i 1/2? Ove stvari, nažalost, postoje čak i ako niste tamo živjeli, postoje ove anomalije kao što je stan 1A, 1B, 1C. Pa znate što, vjerojatno ćemo ne treba ići s cjelobrojnim, inače idemo izgubiti neke prodaje. Char polje, možda? Ne znam koliko dugo. To vjerojatno neće biti tako dugo, tako da 10 ili tako nešto. Nitko neće pisati duži broj, možda. Ali opet, trebali bismo vjerojatno dati više misli na to. Možda google, učiniti neke istraživanja, ali mi ćemo ići s našim crijevima za sada. Ulice, char, 50, ne znam. U nekom trenutku, nitko ne ide to napisati na kuverti, također, tako da je vjerojatno neki gornju granicu tamo. Grad, isto, sigurno, tako char 50. Država može biti u SAD-centric za sada. Dakle, to može biti i popis, tako ljubazni presude poziva državne. To bi mogla biti kao dva znaka. Pa zapravo, možda, stalno sam govorio char. Ja vjerojatno znači varchar, samo za neke učinkovitosti, ali ćemo se vratiti ta odluka u trenutku. Može biti char dužine 2 za državu. Ako se u SAD-u imaju, kao što je MA, Massachusetts, New York, New York, New Jersey, New Jersey, i tako dalje. Dakle, to bi mogao biti fiksiran na to. DC za Washington DC. Ali mislim, Olivier, ti predložio drugačiji pristup. PUBLIKA: [nečujan] DAVID Malan: Da, tako da je malo neugodno upisati, ali enum ima više smisla, jer na taj način, barem u SAD-u, mogli nabrojati, ako tediously, ali vi to učiniti samo jednom u bazi podataka i više nikada neće morati razmišljati o tome da, svi 50 dva znaka kodovi. Zato mi se sviđa nabrajanja. Idemo na štapiću, s da postoji, jer je ona vrsta provodi više strogost. I onda zip kod? Mislim da je Andrew imao misli o tome PUBLIKA: [nečujan] DAVID Malan: Da, pet ili devet. Ajmo dalje ostane jednostavan. Dovoljno je napraviti pet za sada. No, možda sam mogao samo to je cijeli broj, zar ne? Mogao bih, ali znate što, ja napravio Ova greška je jednom, u nekom smislu. Prije nekoliko godina, bio sam migraciju iz Microsoft Outlook na Gmail, i Outlook je način izvoz svim svojim kontaktima kao Excel datoteci, CSV datoteka, vrijednosti odvojene zarezom datoteku. I ja sam napravio grešku, ja mislim, o dvostrukim klikom, Jednom sam skinuti izvoz, da se bi bili sigurni da je izgledao kao što sam očekivao. Mora da sam pogodio Spremanje ili neka auto-spasiti udarac u ili tako nešto. Jer kad sam onda uvoze to u Gmail, sve to radio. No, već godinama, do današnjeg dana, a Ja sam to pet, prije 10 godina, Ja sam još uvijek naći prijatelje koji imaju adrese koje izgledaju ovako. Zašto? PUBLIKA: [nečujan] DAVID Malan: Bilo je 0., dobro, radije, je cijelu poštanski broj kao broj, pa je stoga vodeći 0, što znači to nema smisla. I tako 2138 čini se da je moj poštanski broj. A to je, iskreno, neugodno Excel značajka pri čemu mislim da po defaultu, čak i ako je to značilo da se samo biti tekst, Microsoft Excel odlučuje, neka mi bude od pomoći, i oh, vidim samo brojeve. Recimo tretirati ih kao brojeve. I to truncatus vodeće nule. Kunem se Bogom, svaki par mjeseci sam pronaći adresu, i iz neke vrste OCD, idem natrag i dodajte 0, iako nikad poslati ljude slova ili ništa. Ali ja sam još uvijek naći ostatke ovo. Dakle, to će reći, je li to dobra ideja? U redu, ne, jer svatko u Massachusetts, na ovom području, će imati oi ih vodi. Dakle idemo sa sličnim char, vjerojatno, pet. I ovdje, shvatili smo mogao koristiti nabrajanja i mi mogao nabrojati 10.000 Mogući poštanskih brojeva ali da se osjeća kao da je vjerojatno prelaska linije, kao, koristi. Ako imate ulaz koji mnogo podataka u bazu podataka za zaštitu od nečega. Znači char shvatili ste mogli upisati u H-E-L-L-O su Vaš poštanski broj, što nije, očito, numerički. Dakle, ne postoji način, u tipična baza podataka, navesti samo brojčane i duge samo pet znakova, tako da ćemo imati da to učiniti u kodu. Mi ćemo učiniti da je u PHP ili Java ili bilo kojem jeziku smo koristite na poslužitelju za provedbu takva vrsta ograničenja. Whoo! U redu, tako da bilo kakva pitanja samo još? Neka druga odluka dizajn. Ispada da vas Također ćete odabrati, prilikom dizajniranja SQL baze podataka, ili tipični relacijske database-- gdje opet, relacijska samo znači redaka i stupaca, to je kako organizirati svoje data-- i shvatiti da je ono što to znači, Ja sam bio u zabludu u da, ja sam drawing-- ovo je ono što se zove shema za tablicu baze podataka. To je kao da je specifikacije za table-- ali kad dođe vrijeme zapravo pohranu podataka, a mi ćemo to učiniti samo primjer ovdje. Idem otvoriti Excel, jer Excel će mi dati redaka i stupaca. I to je upravo ono što Oracle i MySQL i drugi alati će mi dati. Pa Samo ću koristiti to poradi Rasprava a. Dopustite mi ići naprijed i otvoriti Predstavnik dokument ovdje povećavanje malo. Tako, na primjer, naši zaglavlja sada ime, prezime, spol, ID, e-mail, broj ulica, ulica, ups. Ulica, grad, država, samo o paše na ekranu. Dakle, što to znači je da, kada korisnik prvi put registrira za moje web stranice, to će biti nešto poput David Malan, m, recimo 1, malan@harvard.edu, broj ulice će bilo kao 1 Brattle trga, Cambridge, MA, 02138, a onda tako dalje. Dakle, kad kažem da relacijska baza podataka ili SQL baze podataka je redaka i stupaca, Mislim ovo. Taj stvarni podaci pohranjuju u retke i stupce. To je samo slučajnost, da smo razgovarali, i ja upravo to crtež u retke i stupce. Ovo je samo shema, krovni definicija. Dakle, od tih područja ovdje, ili ekvivalentno, postoji, koji su polja koje mislite Ja sam vjerojatno pretraživanje na ako sam korisnik ili ako sam administrator baze podataka? Kao, ono polja sam ja zapravo događa pretraživanje na? PUBLIKA: [nečujan] DAVID Malan: Ime, da tako Sviđa mi se činjenica that-- da, e-mail može biti prilično čest. Žao nam je, rekli ste ime. Tako maybe-- i opet, mi smo vrsta govori u sažetku. Ne znam zašto bi biti u potrazi za ime, ali da se osjeća razumno, ako ste u potrazi za korisnika. Možda se navodi, da, ID. I to je sklisko nagib, jer sam mogao dovijati scenarij u kojem možda moj šef me je zamolio, koliko ljudi imamo na našim stranicama? Koliko žena imamo na našim stranicama? I tako u tom trenutku, možda želite pretraživanje na spolnoj terenu, također, i ništa drugo. Dakle, postoji trade-off ovdje. Opet, nema točan odgovor, ali postoji je značajka u većini SQL bazama podataka poznat kao indeksiranje, pri čemu ti, dizajner je administrator baze podataka doći do unaprijed odlučiti koje tereni Baza podataka treba optimizirati za pretraživanja na. Moglo bi vrlo naivno reći, optimizirati ovo optimizirati da poboljšate ovaj, optimizirati da se i to, a baza podataka će se napraviti neki čarobni stvar ispod napa, i učiniti nešto na takav način da sljedeći put kad budete tražili na bilo kojem od tih područja, to će, doista, biti brži. To je moguće. To ne se poništiti. No, mora postojati cijena koja se plaća. Ako vam se naivno, ili nad-oduševljeno recimo, indeks svih tih područja, tako reći, učiniti ih sve učinkovito pretraživati, koju cijenu su vjerojatno plaćati? PUBLIKA: [nečujan] DAVID Malan: izvedba. Kako to misliš? Pa performansi, barem u Kontekst sam opisala, sada je bolje. To je definicija indeksiranje. To će učiniti pretraživanja brže. Dakle, vrijeme se smanjuje, da se tako izrazim. PUBLIKA: [nečujan] DAVID Malan: Space. Pa opet, to su zajednički trgovinu. Mogu ubrzati pretraživanja, ali to je će vas koštati više bajtova prostora. Zašto? Pa, po defaultu, ako imamo nitko od ove crvene zvijezde, nijedan od tih indeksa, kao što sam rekao, kako se traži imena u ovoj bazi podataka? Tako ćemo izvući naše pozornost na ovom primjeru. Ako imamo Davida i Scully i Kareem i Arwa i drugi u tim nizovima, na primjer. Tako ćemo učiniti upravo to. Scully je ovdje, a zatim imamo Kareem, i Arwa, i svi drugi, ako ne imaju indeks definiran, da tako kažemo, najbolje što možete učiniti je linearna pretraživanja. Ako tražite Arwa, nismo će moći skočiti pravo na nju brzo. Mi ćemo početi vrh i ide sve na putu do dna, ne za razliku od našeg original Mike Smith primjer. Ako je, međutim, kažem, hej, baze podataka, Indeks prvo ime na terenu, onda će nešto učiniti ljubitelj i podržati nešto kao binarnog pretraživanja. To vjerojatno nije binarno traženje po sebi. Baze podataka imaju tendenciju da koriste drugu struktura podataka naziva B-stabla, Ne smije se miješati s binarnim stablima, samo da bi ga brže pretraživanje nešto logaritamska u prirodi. No, cijena koju plaćate za izgradnju koje osobina, koja struktura podataka u memoriji, je više bajta. Dakle, to bi moglo potrajati nekoliko megabajta, neki gigabajta, tko zna? To ovisi o podacima. Dakle, u nekom trenutku, morate odlučiti, to je vjerojatno nije čest slučaj. Pa što su stvarni zajednički slučajeva, ako se stvarno morao birati, što bi vaši omiljeni polja biti? E-mail. A ja kao e jer e-mail, u teoriji, treba biti jedinstven. I tako u pravilu, kada se zna unaprijed da jedan od vaših polja je ili će biti jedinstven, da teži da bude dobar polje pretraživanje na, jer na taj način, kada nešto tražite, ti ćeš se vratiti jednog ili nula odgovora, a zatim završite. Vi ne morate držati u potrazi za još drugima. I tako, u ovom slučaju ovdje, e-mail, tako dugo dok se ne možete registrirati puta s istom e-pošte je dobra. ID po definiciji, u informatika svijet, ako govorimo oko sat ID, da je bolje biti jedinstven. To je vrsta na značenje osobne iskaznice ili identifikator. A ostatak od njih može biti, nazovimo ih lijepo bogatih, ali ne i stvarno potrebno. I tako u bazi podataka, navedete indekse, ali može biti još precizniji. Možete reći, hej, baze podataka, uvjerite se da svaki ID u ovoj tablici je jedinstven. Nemojte ni neka programer slučajno stavili u duple e-mail ili duplicirati identifikacijski broj. Toliko kao enums štite nas na sličan način, te može imati one niže razine obranu. I tako dizajn baze podataka, u neki osjećaj, je vrsta zabave, jer ti to brani. Ti vrsta pretpostaviti da radite s užasnim, užasnim programera i želite staviti u onoliko obranu kao što možete kako bi zaštitili svoje podatke, ali istodobno želite da im pomogne bolje odabirom polja za optimizaciju. Ali ne možete nužno to učiniti u vakuum kao da smo neka vrsta su ovdje. Moraš znati što su one uobičajene slučajeve postojanja. Ako programeri su provedbu adresar, možda vrlo dobro žele biti u mogućnosti pretraživanje na gotovo svakom području, Samo po prirodi zahtjeva. Dakle, možda ćete potrošiti koji dodatni prostor. Dobro, bilo kakvih pitanja? Da. PUBLIKA: [nečujan] DAVID Malan: Ne PUBLIKA: [nečujan] DAVID Malan: U redu. PUBLIKA: [nečujan] DAVID Malan: Oh, pa smo Radi se na način sada je to sasvim jezik agnostik. Tako su mi sada govorimo o relacijske baze podataka, općenito govoreći, ili SQL baze podataka u cjelini. PUBLIKA: [nečujan] DAVID Malan: Bolji Word za početak upotrebe je, može se koristiti na bilo kojem jeziku. Dakle, ja mogu pisati JavaScript kôd, C kod, C ++ kod, Java koda, Ruby kod, sve što razgovarati s baze podataka i izvršavanje upita. U stvari, to nije loša prikazali na primjer upita. I opet, nećemo ići u Java ili C ++ ili bilo koji više, ali u SQL je jezik za koji sam zadržati odnosi, Structured Query Language, to samo po sebi je programski jezik, ali to je značilo da će se koristiti za, ne iznenađenje, strukturirano upita upitima. Tako da mislim to. Način na koji vi odaberete podatke iz MySQL baza podataka se doslovno unijeti u svoj program nešto poput odaberite zvijezde od korisnika. Ja sam uz pretpostavku da je za ovim stolom, od sada se zove korisnicima. Mogao bih ga nazvati nešto što želimo, ali ta vrsta ima smisla. I tako odabir je vrlo čest glagol, ako vas će, SQL, koji doslovno ne da. Što mislite zvijezda u ovom kontekstu označava? PUBLIKA: [nečujan] DAVID Malan: Žao mi je što? PUBLIKA: [nečujan] DAVID Malan: Nije potrebno, to je više inclusive od toga, zapravo. To je kartica lik divlje. Glumit gotovo uvijek znači ništa, pa to znači, u tom slučaju, odaberi sve iz baze podataka. Pa kad to kažem, mislim Vratite mi svaki stupac od mog stola pod nazivom korisnicima. Pa daj mi result set, kako se zove. Drugim riječima, daj mi kopiju od proračunske tablice, je ono što želim reći. Ali, ako sam rekao odaberite zvijezda od korisnika gdje ID jednak 1, koliki bi trebao moja skup rezultata biti onda? Ili ekvivalentno, koliko redova trebao Ja mu se vrati iz baze podataka? Vjerojatno samo jedan, ako imam doista tretira ID kao jedinstveni identifikator, a ako je David ima taj jedinstveni ID, ja treba vratiti jedan i samo jedan red koji sadrži sve Davidove informacija. Ako sam to rekao, gdje ID jednaka 99, trebao bih se vratiti, U tom kontekstu, nula redaka, barem u ovom trenutku. Međutim, ako ne stvarno briga o svim tim informacijama, Mogao sam samo reći, gdje se David živjeti? Odaberite poštanski broj iz Korisnici gdje ID je 1. To će odabrati samo meni Davidov zip broj, a ne ukupnost tom retku. Zašto je možda bolje to učiniti umjesto upit zvijezda, divlja kartica? PUBLIKA: [nečujan] DAVID Malan: Da, možda samo ga trebate. Dakle, nastup je opet odgovor ovdje. Zašto tražiti više Informacije nego što je potrebno, jer čak i ako je sve u redu zajedno, još uvijek morati kopirati te podatke, čini se, iz baze podataka u svom programu nekako, i to je samo glup, ako vas treba samo pet od tih brojki, Ne cjelokupnost redu. Pa kako mogu umetnuti korisnik? Pretpostavimo da korisnik ima samo registrirana za prvi put. Sintaksa bi obično izgleda ovako. Umetnuti u korisnika, te onda bismo reći vrijednosti, a onda bismo reći vrijednosti kao što su, recimo, Lauren Scully, naš snimatelj ovdje. A sljedeći polje je rod. Dakle, mi ćemo reći citat, citat "F", onda imamo ID a ja ću say-- neka je pretvarati da je zapravo nije ovdje, pa ćemo natrag u priči. Dakle, dva će biti njen ID. A onda sljedeći polje Ovdje je njezin e-mail. Dakle, to će biti kao što je Lauren Scully i tako dalje, a mi ćemo samo točka točka dot ga odavde dalje. Sada će se malo zamorno, ali upit za umetanje bi u konačnici izgledati tako. Ako želim riješiti Scully, uh-oh, neka je odjaviti joj, ona briše njezin račun, izbrisati iz korisnike gdje ID jednakima 2, će se riješiti Scully. Ili mogu reći ažuriranje korisnici postaviti, recimo, što bismo mogli promijeniti? Pretpostavimo da se kreće. Set zip jednak 021-- Nope, to je njezina trenutna zip. 90210. Jedini drugi poštanski broj Znam da u svijetu. Tako da će se promijeniti joj zip code-- zapravo, da neće promijeniti svoj poštanski broj. Što sam upravo učinio? Iako je sintaksa je vjerojatno novo. PUBLIKA: [nečujan] DAVID Malan: Da, i ja se preselio svima na Beverly Hillsu u Kaliforniji. Tako sam zapravo treba reci gdje ID jednak 2. I tako dalje. Dakle, SQL je sve o njima vrste uputa. Odaberite, umetanje, brisanje, ažuriranje, s tim predikata na kraju te gdje klauzule, da se tako izrazim. I tu je mnogo više možete učiniti, ali to zapravo samo svodi jednostavno, ako arcanely, izražavajući ono što želite je baza podataka za napraviti. A onda je baza podataka će shvatiti kada ubacite Lauren Scully Into the baza podataka, gdje da je smjesti u memoriju tako da možemo vrlo brzo dobiti ju na temelju njezine e-mail adresu ili na temelju njenog ID broja ili slično. Da, Dan. PUBLIKA: [nečujan] DAVID Malan: Stvarno dobro pitanje. Hoće li ove skripte mijenjati od Microsoft Access Oracle MySQL PostgreSQL? Kratak odgovor je da to ovisi. U teoriji, postoji vrlo značajan zajednički podskup SQL koji dijeli na svim tih implementacije. Međutim, razni proizvođači ima dodatne značajke na njihovim bazama podataka učiniti određene stvari izvan opsega ovih značajki, koji bi, u stvari, slomiti. Dakle, način na programere zaštite od toga, je da umjesto pisanja sirovo SQL koda kao što pišem ovdje, oni su umjesto toga koristiti knjižnicu, zajednička knjižnica koja sama po sebi je vrsta više razine i sažeci daleko koji proizvod koji koristite. I to vam daje funkcije i procedure na poziv, tako da nikada zapravo pisati sirovo SQL. U teoriji, onda, možete promijeniti Proizvodi iz Oracle Microsoftu ili obrnuto ili ništa drugo, i doslovno promijeniti ništa o kodu. Stvarnost je, međutim, je li ponekad odustati značajke kao rezultat. Možda ste odabrali proizvod, jer to je dobio ove značajke na dodanu vrijednost, a ti si samo sada ne pomoću njih svjesno. I Anecdotally, većina tvrtki imaju tendenciju Nikad se odmaknuti od svoje baze podataka. Dakle, dok je to lijepo imati mogućnost, stvarnost je, ako ste remont baze podataka, ti si Vjerojatno što grozdove druge promjene u svakom slučaju, da se ne mora nužno potrebno je predvidjeti da. Dakle, to je nedvojbeno nad-inženjering problem, ali to stvarno ovisi o kontekstu. No, u teoriji, SQL se dijeli preko tih različitih proizvoda. Stvarno dobra pitanja. Da. PUBLIKA: [nečujan] DAVID Malan: Da, tako možete misliti baze podataka je samo server, na kraju dana, a unutar tog servera je cijela hrpa tablice, redaka i stupaca. A kada poslati upit kao što je ovaj iz svog programa, vaše web stranice, napisan u Java, Ruby, Python, bez obzira, poslužitelj prima ovu naredbu i tumačenja u doslovce na isti način smo raspravljali ranije s interpretirana jezika, a zatim obavljanje neke akcije na nulu ili više redaka u nula ili više tablica. PUBLIKA: [nečujan] DAVID Malan: Točno, točno. Tako je pseudokod za nešto kao što je to moglo biti to. U PHP datoteke ili vaš Python datoteka ili vaš Java datoteka, ti bi pseudokod kod, ili Blok-poput blokova kao, ako korisnik posjeti acme.com/register~~V za prvi put, zatim umetnuti u korisnika i tako dalje. I mi bi se prevesti ovo konkretniji broj na kraju. Ali stvarno, imamo sve gradivne ovdje, iako smo preskakanje neke od koraka provedbe. Pa neka mi zameriti što smo predivno to prije samo trenutak. Ti su stvorili prilično kompletna tablica za korisnike. Doduše, mogli bismo provesti to u nekoliko različitih načina, ali ti zaista doveli su nas niz path--, a ja vam kažem, ali to je vjerojatno moj fault-- o prilično neučinkovita implementacija baze podataka. To nije normaliziran. I normalizirana mislim tu će biti, tijekom vremena, značajan zalihost, i zato neučinkovitost, to je gubitak prostora. Na temelju samo ono što vidite ovdje, mogu isplanirati gdje je to rasipanje prostora će doći s vremenom, kao sve više i više korisnika registrirati za vaše web stranice? Koji podaci mogu biti višak? PUBLIKA: [nečujan] DAVID Malan: Zašto misliš da je? PUBLIKA: [nečujan] DAVID Malan: Da. I pretpostavimo za potrebe Od danas da je to istina. Ispostavilo se, a mi smo naučili ovaj teži način, to nije istina. Nekako više gradova imaju, nekako, isto poštanski broj, koji razbija ovaj prekrasni intuiciju. No, pretpostavimo da je to istina, jer je gotovo uvijek točno. Dakle, pretpostavimo da je poštanski broj uvijek povezani s istom gradu i država, koja je vrsta razumne pretpostavke, ali netočno, ispada. No, razumna pretpostavka za današnje potrebe. Onda pretpostavljam da živim u Cambridge, MA, prema ovom korisnikova stola, i pretpostavimo da Lauren Scully živi u Cambridge, MA, i pretpostavimo da Kareem živi u Cambridge, MA, i Arwa živi u Cambridgeu, MA, sve nas u 02138. Zašto smo sjećanje Cambridge, MA, 02138 za sve nas četvero? Što bi trebao biti dovoljan za pamćenje? PUBLIKA: [nečujan] DAVID Malan: Samo poštanski broj. Samo da 02.138 postoji, jer znate što smo mogli učiniti? Mogli bismo se malo maštu ovdje i ovdje, definira drugu tablicu ako je to će biti ime, to će biti tip, ovo će biti Dužina i ubuduće, ja sam nazvati ovaj moj gradovi stol. To se zove, od Naravno, moja korisnici stol. I što bih trebao staviti ovdje za moj gradova stola, što misliš? PUBLIKA: [nečujan] DAVID Malan: Da. Dakle, zip i državu i grad. I tako je tip ovdje, mi ćemo reći ovo će biti char 5 opet, predmet rasprave od ranije. To će biti enum, možda kao prije, a grad će biti varchar 50. I što sad da dobijem izbrisati iz ove tablice kako bi se uklonili tu neučinkovitost? PUBLIKA: [nečujan] DAVID Malan: Nice. Država i grad ide dalje, pa sam sad eliminira potencijalne neučinkovitost za redundantly sjećanja, Cambridge, MA, Cambridge, MA, Cambridge, MA, Cambridge, MA, koji je, nadam se se nikada neće promijeniti. A čak i ako to ne, to je minorly neugodno, sada da moram promijeniti to u više redova, a ovdje sam se i samo promijeniti ga na jednom mjestu. Sada ono što je trade-off, možda? To je super povoljno. Da je sve moje podatke lijepo zajedno. No, ono što je očito slučaj sada? PUBLIKA: [nečujan] DAVID Malan: Točno, i ja sam drago što koristi riječ pridruže, jer to je zapravo ključna riječ, u svijetu relacijske baze podataka u SQL, to je stvarno riječ koju ste Možda upisati ili barem prenijeti. A u stvari, ono što sada morate učiniti za odabir Davidov puna informacija nešto poput odaberite zvijezde iz Korisnici, pridružite gradove, on-- i sad Idem samo premjestiti na drugu liniju tako da je ova fits-- users.zip jednak cities.zip, gdje users.ID jednak 1. I što ima? To je ružno izgleda, ali možete vrsta čitati s lijeva na desno, odozgo prema dolje. Odaberite zvijezda od korisnika je isto kao i prije, ali to nije od korisnika, po sebi. To je iz korisnici pridružiti gradovima. Što sam ja pridružio ta dva stola dalje? Pa, očito, korisnička tablica zip polje, a to razdoblje je samo poseban sintaksa izraziti tu ideju, i to je po gradovima tablice zip polje. Želim one dvije biti jednaki, ali želim da na kraju odabrati samo one retke gdje ID u tablici korisnike jednak 1, što se dogodilo da se moji. I samo da bude jasno, A programer, obično kada ugrađuju nešto poput broja 1, jer bi u suprotnom samo web stranice podržava Davida ili Prvi korisnik, da će umjesto toga učiniti nešto poput ID, gdje To predstavlja varijabla, nešto što može se mijenjati tijekom vremena, slično u duhu onoga što sam rekao ranije s takvim rezervirana. No, za sada smo samo ću ga ugrađuju kao 1. I tako, što to znači? Pa, lijep način za vizualizaciju ovo da, ako ova ruka je korisnik stol, a ova ruka je poštanskih brojeva stol, mi smo vrsta finding-- a vrhovi prstiju su zip ovdje, a vrhovi prstiju ovdje su zip, ti si vrsta je uzajamno tako da ćete dobiti natrag nastala Izvorna tablica, koje zaista ulaskom Dvije ploče na zajedničkom polju. I to ne mora biti zip. To bi mogla biti najviše bilo što drugo, ali zip je lijepo, jer je jedan, to je kratko, dva, to je uvijek jednake duljine, tako da pravi učinkovitost na ono Olivier je predložio ovdje sa izuzimanjem zip, i [Nečujan] predlaže da se riješimo od grada i države. Dakle, to je proces poznat kao normalizaciji. Bilo kakva pitanja o tome? Pa neka mi naglasiti to je vrsta stvari, iako je prilično niske razine, ova rasprava, da li mislite da bi ste vrsta dobivanje izgubljen u korov, ova je manifestacija dovoljno prilika za programere da bude loše. A u stvari, čak i kada smo u tečajevi sam učio, kad smo imali, Na primjer, neiskusan preddiplomski programera izgraditi web stranice, na prvi pogled, web stranice može izgledati sjajno. I oni imaju sve od Funkcionalnost smo zatražili, programeri napravili su dobar posao. No, oni nisu nužno znati dovoljno o dizajnu baze podataka ili oni ne misle teško dovoljno o vrstama podataka i vrste korisnike Web stranica će imati, a mi smo pronašli, a zatim, šest mjeseci kasnije, nakon što su diplomirali ili se preselili na, to dovraga, naše web stranice stvarno, stvarno sporo. A nisam ni govoriti o vlasništvo milijuni ili tisuće korisnika. Mislim nekoliko stotina korisnika na kampusu, od kojih svi vole, na primjer, shop za tečajeve u U isto vrijeme, oni su koristiti taj katalog tečaj Zahtjev sam spomenuo a stvar je uzimajući stvarno sporo jer nije bilo indeksa. Nije bilo crvene zvijezde, tako da se govoriti, ili smo imali nije nužno uračunata zajedničke podatke dobiti neke uštede prostora. I tako, kada provjere programer ili baze podataka osobe ili slično, vrste pitanja za razmišljanje je čak, pri razmatranju nečiji kod, reći, a ne nužno izgledati kroz sve njihove koda, ali kažem, Pogledajmo kroz tablicama baze podataka. Što spremanje? A onda će reći, dobro, pričekajte minute, zašto koristite cijele brojeve? Što ako imamo 4 milijarde a jedan od tih redaka? I ove vrste Pitanja je prilika da vrsta gurnuti natrag i dobiti osjećaj, gdje Ako se ne usudite to, da netko više tehničkih postaviti ova pitanja, da li ili ne osoba ne zna njihove stvari. I to je vrsta stvari, također, da su ljudi na internetu koji su samouki, možda naučiti nešto rjeđe, jer ti nužno ne dolaze preko njega koliko, jer možete dobiti baza podataka gore i trčanje, ali ako ste pročitali na tutoriale ili bilo rekao o normalizacija baze podataka i indeksiranje i performansi, To su vrste stvari koji će te povrijediti. I što mislite, bilo loše inženjer moglo bi se reći, oh, dobro, bolje da plati za veći baze podataka ili brži baze podataka ili samo bacati novac na ovaj, vertikalno mjerilo, nije nužno tako. Ako idete in-- i možete ići u nakon fact-- i dodati indeksa, a to bi moglo potrajati nekoliko sati za baza podataka za izgradnju tog novog podataka Struktura da sam aludirao na ranije, još uvijek možete popraviti to nakon što je činjenica, da ovo je mjesto gdje vas početi razlikovati dobri dizajneri iz loše dizajneri, a ne samo estetski, ali pametna izvedba, kao dobro. Ima li pitanja? Ne? Tako je za NoSQL, što je bila druga vrsta baze podataka na koje sam aludirao ranije, nemate redaka i stupaca. Umjesto toga, ti bi nešto da izgleda malo više kao što je ovaj. Idem koristiti zdrav sintaksu. Vitičastim zagradama dogoditi Ovdje se koristi dosta. Možda ćete imati nešto kao prvo ime je David, možda ste prošli ime je Malan, citati, možda imate ID is-- oprostite, whoops-- ID je 1, e-mail je malan@harvard.edu i neću smetaju upisivanjem ostatak, a zatim neke druge stvari. Drugim riječima, to je tekstualni prikaz onoga što bi se općenito nazvati objekt u računalni program. A objekt je uglavnom samo skup ključnih parova vrijednosti. Pa opet, to se ponavlja tema. Vidjeli smo ključ parova u HTML-u, vidjeli smo ključne parova sada u kontekstu baza podataka, a mi Vidio ključnih parova u kontekstu od, mislim, jezik ranije danas. Održava dolaze gore. I doista, to je stvarno koji podaci se svodi na, podataka i metapodataka, odnosno vrijednosti i ključevi, redom. Dakle, ne-relacijskim baze podataka, nešto na bazi na objekte, gdje se samo pramen sve zajedno i staviti ga u memoriju, obično će biti prikazana kao, ili misao, kao što je ovaj. A ja ću ostaviti da se sada kao vrsta alternativnog pristupa. I jedan nije nužno bolji od drugih. U stvari, jako puno u modi ovih dana su sustavi baze podataka kao MongoDB i Redis i nekoliko drugih takvih alata, slobodno dostupan, ali oni su sve hr modi. Djelomično zato što oni nude dodatne ima više tih tabelarnom pristupa, nego i zato što su malo lakše za korištenje, jer ne morate razmišljati kao tvrdo o puno tih dizajnerske odluke. Dakle, plusevima i minusima. Dakle realizirati postoje mogućnosti izvan onoga što smo upravo proveli vrijeme na. Tako ćemo to učiniti. Recimo prijelaz malo natrag sada na web programiranje, tako da mi nekako zaključiti Danas s nešto To je malo kazaljka-na, punjenje u nekim praznine od jučer. Pusti me da se ovaj prvi. Dakle, podsjetiti da je jučer imali smo neke kanonske HTML stranice koje su u početku, samo HTML, a onda sekundarno imao CSS, CSS. Ovo je nova oznaka da nismo vidi jučer, ili boraviti na, Takozvani oznake skripte. Ispostavilo se da zapravo možete ugraditi jezik zove JavaScript u Vašem web stranica i napraviti svoj web Stranice nešto učiniti. Što mislim pod tim? Pa, dopustite mi ići naprijed i samo posuditi ovaj kod na trenutak. Ja ću ići u Cloud9, nema potrebe ići tamo sami samo još, a ja ću nazvati ovu alert.HTML. Idem zalijepiti u mojoj datoteci ovdje. I samo da pojasnimo ono što sam učinio, neka da odem na ovu adresu i otići upozoriti, i vidite Hello World. No, to je neka vrsta underwhelming. Želim učiniti nešto malo drugačiji. Tako ću zapravo to učiniti. Ja ću ići u ovdje e, a između mojih oznaka skripte, kažu upozorenja ( "Hello, world '); tako da obavijest to je malo neuredan, ali imam HTML, unutar koje je jezik se zove JavaScript, i to je ono što se zove Funkcija poziva ili postupak poziva. To je glagol, doslovno, u ovom slučaju, a ja pozivajući se kod funkcije da je netko drugi napisao. Tako da funkcionalnost je oprezan, pa idemo na ovu stranicu Sada i kliknite reload, i sada vidi malo interaktivnosti. To je vrsta stara škola i ružno. Ovakva vas podsjeća na pop-up, možda, prošla ali je to nešto malo više programatski. Pa i više od toga, neka je učiniti nešto zanimljivije. Pusti me ovdje i riješiti to. I ja ću ići naprijed i stvoriti obrazac kao što smo učinili jučer. Zapravo, znate što? Ja ću ići u google.html, koje smo započeo je jučer, koji je izgledao kao ova, preko kojih smo tražili mačka Ali primijetite da postoji neka vrsta bug u trenutnoj verziji. Ona radi za mačke, ali pretpostavimo da Ja ne surađuju i ja upisati ništa, i ja jednostavno kliknite submit. To je vrsta čudno ponašanje. Uzeo me na pravi Google, nije mi dati poruku o pogrešci. Htio bih reći korisniku morate nam dati vrijednost. Pa kako bismo mogli to učiniti? Pa neka mi se vratiti u Cloud9 i pusti me u vrhu moje stranice i dodati oznaku original kao što je ovaj, gdje Idem upisati JavaScript kod. I ja ću učiniti sljedeće. Ako (document.getelementByID-- i opoziva da smo razgovarali o tome i ranije, da je funkcija. Što ID želim dobiti? Želim da se q, a ja ću recimo jednaka ništa, kao što učinimo, zapravo neka mi koristiti dvostruke navodnike samo za consistency-- jednak ništa, onda alert ( "Unesite upit") ovdje. Dakle, imam ono što se čini nešto poput stanju. Vidjeli smo ovu opću ideju u nule. To je kao jedan od onih slagalice komadi koji su izgledali ovako. A što sam ja rekao? Pa, ovdje dolje, primijetit sam učiniti sljedeće. Ja ću dati ovaj obrazac polje ne samo naziv q, koji je je ono što dobiva prošao na Googleu, ali ja sam će dati lokalnu identifikator, koji se nazivaju q. Ali mogao sam nazvati ovaj se išta žele, ja sam samo ide dalje ostane jednostavan a također ga zovu q, samo radi jednostavnosti. A sada idem raditi nešto malo više. Na polja obrasca ovdje, idem dodaj ono što se zove događaj rukovatelj. Na predati, želim pozvati funkcija zove potvrdi. To još uvijek ne postoji, ovaj riječ, ili ovaj glagol provjeriti, jer ono što ću učiniti ovdje je dodati neki kod. Ja ću reći funkciju Potvrdi. Idem uvukli to i dodati još jedan kovrčava brace ovdje, a drugi ovdje. Razmislite što to sada radi. Imam now-- misliti na to kako je stvorena moja vlastiti puzzle komad koji nije prethodno postoje, a ja sam nazvao puzzle komadu Provjeri slagalice. Njegova je svrha u životu je da izvrši četiri linije koda unutar nje. Ako document.getElementByID tako konceptualno, koji će ići u elementu, HTML element čija je jedinstvena Ideja je samo q, a onda čak i sintaksa izgleda malo čudno, da ravnopravno jednak samo znači jednakima. Dakle, to znači da ako je element s Jedinstveni identifikator q, kada je stečen, nema vrijednosti, to je samo jednak citat citat, ništa u njemu, onda ono što želim učiniti? Želim vikati na korisnika. I nećemo detaljno ovdje. Idem return false. To je pogreška. Inače, ja ću se vratiti istina. Dakle, bilo je to radio ili nije. Netočno ili točno. A sada, ako nisam napravio nikakve greške, neka me spasi ovo i učitajte. I neka mi samo provjeriti da Nisam, zapravo, napraviti bilo kakve greške u pisanju, tako da ne osramotiti se. Da vidimo je li se to radi. Dakle, sada ću upisati mačke. Ona još uvijek radi, ili pola radove, najmanje. Sada neka mi ga ponovno, a sada neka ja pokušati poslati bez tipkanja anything-- dovraga, to razbio. Jedan trenutak. Dopustite mi da otvorite konzolu, [Nečujan] prijavite se, ponovno učitati stranicu. Dopustite mi da pokušam ponovo. Oh, k vragu. Zaboravio sam. I pogriješili. Sjećam se što je to. .vrijednost. Htio sam reći, ako je vrijednost elementa čiji ID je q jednak, onda vikati na korisnika. Pa sad neka mi držati moj dah opet. Idemo. Idemo tamo. Unesite upit. Dakle, to nije me pustiti preko. Mogu biti vrsta zaigran s tim, i umjesto da provjere bez vrijednosti, Mogu reći nešto poput: Nema više u potrazi za mačke, i sada možemo samo još u igri neka korisnik potraga za pse, ako on ili ona želi, ili ako idem ovamo i tražiti mačke, sada ne mogu. Zato što je takeaway ovdje? Dakle, jedan, uveli smo u naš svijet HTML i CSS, programiranje funkcionalnost. Ne mogu zapravo sada donositi odluke u kodu. Prije toga, sve što sam mogao učiniti je obilježavati tekstualnih sadržaja ili grafički sadržaj i reći što treba obratiti pažnju kao što je i gdje je moguće prikazati. Sada sam zapravo pitati pitanja na web-stranici i donositi odluke na temelju na njega, i zatražiti od korisnika ako moram vikati na njega ili nju. Tako ćemo pokušati nešto na svoje s ovim. Ajde, neka mi se otvoriti sljedeći slajd ovdje, i samo ukazati na jednu stvar. Baš kao i sa CSS, možemo faktor van naš JavaScript kôd na zasebnu datoteku, možete učiniti istu stvar s JavaScriptom kao i CSS. A vi koristite da koristite izvora atribut o skripti oznaku. No, nećemo komplicirati stvari za sada. Umjesto toga, ako bi mogao ići na ne ovoj stranici, but-- neka me premjestiti ovaj okolo u order-- ići, ako bi mogli, ovu stranicu ovdje. Ovaj URL ovdje. To je u današnjem slajdova. Možda ćete morati ponovno učitati, jer Ja sam dodao par stvari. No, tamo gdje su neki zagonetke čekaju. A to će nam dati priliku, u nešto više zabave kontekstu, brljati s nekim JavaScript. A kad dođete tamo, Ja ću objasniti što čeka. Dobiti zeleno. Postavi plava. Postavlja zelena, postavlja crveno. Ups. Oprostite. To je stupanj naše dokumentacija za taj izazov. A to ide na posao, kako slijedi. Dakle, ono što imate na to Stranica je cijela hrpa slikovnih zagonetke prijatelj na Sveučilištu Stanford. Dakle, ono što vidite ovdje je gotovo vrsta jedan od onih čarobnih očiju zagonetke, ali ako samo buljiti u njega, ništa ne će iskočiti na vas. Umjesto toga, nešto je skriveni na ovoj slici. I to je skriveno na sljedeći način. Slike, kao što vjerojatno znate, može biti sastoji se od samo tri boje. Neki crvene, nešto plavo, a neki zeleni. I možemo napraviti sve Boje u duginim miješanjem te tri boje nekako. Dakle, ovo izgleda uglavnom zeleno i plava, ali kao Nick kaže ovdje, ovo željezo puzzle slika puzzle. Ona sadrži snimku nešto poznato, međutim, slika je iskrivljena. Poznati objekt u crvenim vrijednosti. Međutim, crvena vrijednosti svi su podijeljena 10. Dakle, oni su premali za faktor 10. Dakle, drugim riječima, Nick uzeo originalnu sliku, i on desaturated sve od gubitkom od njega, manja količina crvene tinta, ako će, u njemu. Plave i zelene vrijednosti su sve samo besmisleni, slučajne vrijednosti, aka buke dizajniran zasjeniti pravu sliku. Pa što Nick nije bio on umanjio crveni, a zatim on je samo bacio slučajna količine plave i zelene na slici s vrstom opskurna Što je zapravo još uvijek tamo. Morate poništiti ove poremećaje otkriti sliku. Prvo postavite sve plave i zelene vrijednosti na nulu da bi ih s puta, i pogledajte rezultat. Zatim množiti svaku crvenu vrijednosti od 10, skaliranje natrag do oko njegova konačna vrijednost. Što je poznat objekt? Dakle, svi vi imate ovaj pravokutnik u web pregledniku moći odmah. I primijetiti da postoji neki starter kod, da tako kažemo. To je JavaScript kôd koji Nick je napisao za vas. I primijetiti da postoji linija u sredini koja počinje s slash kosa crta, to je ono što se općenito zove komentar. To znači da je izraz za programera da nema funkcionalno značenje. To je samo vizualni znak na čovjeka. Na taj način možete ići naprijed i izbrisati samo tu liniju, i biti super oprezni da ne brisati ili mijenjati bilo što drugo. I neka mi samo vas kroz što je to kod radi, a ja ću ga ostaviti Na vama je da shvatiti tajnu sliku. Ova prva linija ovdje što sam upravo Istaknuta vam daje sljedeće. Na lijevoj strani, imate ono što se zove varijabla koja Nick je samovoljno, ali opravdano nazvao im za slike. Na desnoj strani tog znaka jednakosti, on govori daj mi novi citat, citat: "jednostavna slika". Jednostavna slika, u ovom kontekstu je ono što se zove klasa, dobro, to je vrsta kao što su class-- tehnički prototype-- ali stvarno, to mi daje novi objekt, čiji sadržaj su datoteke, željeza puzzle.png. Drugim riječima, Nick stvorila taj pojam jednostavne slike tako da možemo, za pedagoško svrhe, igrati sa slikom i promijeniti svoje crveno, zelene i plave vrijednosti. A kako mi to radi? Ovaj pomalo zagonetan sintaksa ovdje je vrsta kao ponavljanja bloka da su neki od vas vidjeli u Scratch ranije danas, gdje možete ponoviti 10 puta. U ovom slučaju, Nick nema kodirano broj kao što je 10. Umjesto toga, on je rekao, inicijalizirati varijabla zove x 0, provjeriti da li je x manje širina slike. I tako da se više pravilan, slika je varijabla, dot znači ide unutar nje i dobiti njezinu širinu i Zatim otvorite zagrada, zatvoren zagr je samo programer je način govoreći: to je funkcija. To je postupak. To je funkcija netko drugi napisao. Koristite ga i daj mi vrati odgovor. A onda je x ++ je fancy način govoreći, nakon što ste učinili jednom, prirast x za 1. Drugim riječima, ovaj je programer je način inducirati petlju koja je će ponoviti više sve stupce na slici. Slika je samo rešetka točkice, redaka i stupaca točaka. To je način da prolazi preko svih tih stupaca. A iznutra, U međuvremenu, mi smo ponavljanjem preko visine, ovdje i ovdje i ovdje. Tako je to samo način traipsing, gotovo kao stara škola pisaćem stroju, samo ići preko cijela slika iterativno. Čak i da nije baš u potpunosti jasno, samo se o vjeri, za sada, da te tri linije koda su zajedno će vam omogućiti da iterativno izgledati na svakom pikselu, svaki točka na slici. Što je piksel? Pa, da bude jasno, ako ćemo gledati na original i povećavanje, ako stvarno staviti svoje oči na zaslonu računala, to je Samo cijela hrpa točkica, nekoliko tisuću točkica upakiran zajedno tamo. I što si ti učiniti? Svaki od tih točaka, konačnu definiciju, Rezultat je ono što je općenito zove RGB, crvena, zelena, plava, što Ponovno, se mogu kombinirati vam dati bilo koji broj boja. U stvari, ako se sjećate od mnogih prije, mnogo godina, projektor ekrani poput ovih stvari koristi imati ne samo jednu leću nego tri. Jedan od njih ispljunuti crveno svjetlo, jedan od ih ispljune zeleno svjetlo, jedan od njih ispljunuti plavog svjetla. A ako ste bili u srednjoj školi kao što sam bio, gdje nikada nisu bili ispravno poravnat, bili ste uvijek gledajući povijest filmova koji su bili malo iskrivljena, jer su tri boje nisu bile kombinirajući ispravno. No, ispada da je svaki od te vrijednosti crvene, zelene i plave, može imati niz povezane s njima. Na primjer, 0 za crveno znači da nema crvena, 0 za zelenim znači da nema zelena, i 0 za plave znači da nema plavo. Dakle, ako imate ne crvene, ne zelena, a ne plave, koje je boje imate? PUBLIKA: [nečujan] DAVID Malan: ti bi Nadam se, da je bijela. Nažalost, to operates-- žao? PUBLIKA: [nečujan] DAVID Malan: tako da zapravo imaju crne boje, u ovom slučaju. Dakle, ako imate nijedan od ovih Boje uključen, imate crno. Međutim, ako imate, recimo puno od njih, kao puno crvene, 255 od toga, puno zelene, i puno plave, koja je bijele boje. Dakle, to su dvije krajnosti. Dakle, po toj logici, ako imam puno crvene i nema zelene i nema plave, Koje je boje je to? PUBLIKA: [nečujan] DAVID Malan: Da, očito. I onda nema crvene, puno zeleno, ne plave, a zatim ako have-- dobro, samo ćemo završiti to, samo zato, ali to, naravno, Sada je plava. A sada možete kombinirati ove boje. Sada kao stranu, ako bilo koji od vas ima ikada učinio neki stvarni web dizajn, što bi zapravo vidi slične simbole. FFF-- i zapravo, to je vjerojatno nije ni to. To je FFFFFF. Svatko tko je ikada vidio F-a i E-ih i A through-- pa ispada, Razgovarali smo jučer o decimale, a danas, nekako oko decimale. Danas smo razgovarali o binarnom sustavu. Ispostavilo se, heksadecimalni je vrlo Zajednička osnova sustava za korištenje u računalstvu. Binarni je dva decimalna je 10, hex je 16. I to ispada, kako računati u heksadecimalnom? Nula, jedan, dva, tri, četiri, pet, šest, sedam, osam, devet, što koristiti nakon devet? Što je sljedeći broj? Mi smo već koristili nula. Trebam 16 od njih. Nula, jedan, dva, tri, četiri, pet, šest, sedam, osam, devet, trebate neke proizvoljne konvencije. A ono što je čovječanstvo odlučio neko vrijeme Prije da je nakon devet dolazi pismo A i onda B, a zatim C. Dakle, način računati u heksadecimalnom je nula, jedan, dva, tri, četiri, pet, šest, sedam, osam, devet, A, B, C, D, E, F, i da će se računati ti sve, što se ispostavilo, na 15. Dakle nula do 15 nula kroz F. Sad zašto je to važno? Pa, kada imate dva F-a, to je način na koji izražavaju 255. Dakle, ne duljimo, u svijet Photoshop, da grafički dizajn softver, u svijetu web razvoj, gdje imate puno boja, naravno, da se igraju s, Često programeri će izraziti one u heksadecimalnom, samo zato što je teži da se malo jednostavnije. Iako na prvi pogled to je mnogo složeniji. Dakle, u svakom slučaju, to je važno jer Nick na Stanfordu nam je dao šest komada funkcionalnosti da vama, pupi programeri, Sada će imati mogućnost korištenja. Izgrađen na ovom webu Stranica je šest funkcija, Šest postupci koji nick je napisao. Tri od njih će dobiti broj, crvena, zelena ili plava vrijednost. Tri od njih će se postaviti tu vrijednost. I ove donje samo su rezervirana mjesta, tako da morate znati što one jesu. Tako je s ova tri funkcije, Prvi od tih stvari će biti x-koordinate, a drugi od tih stvari će biti y-koordinate. Drugim riječima, što točka, što pixel želite dobiti zelenilo, dobili plave, dobiti crveni u. A onda je ovdje, to će biti x, ovo će biti y vrijednosti, a to će biti broj. Tako ćemo učiniti prvi Linija to zajedno a onda ću ga ostaviti na vas pokušati zaključiti ostalo. Dakle, po uputama na ovoj stranici, moramo povećati crvenu faktorom 10, i moramo ukloniti zeleni i ukloniti plavu boju. Počnimo s potonjim scenarija. Dakle, ako želim, a ja ću alineji pomoću neke prostore, ako želim postaviti crvenu boju, zeleni ili plavi vrijednost, Ja ću učiniti sljedeće. Slika, im.setBlue, a zatim temelji se na mojim uputama ovdje, Koje tri stvari bih upišite unutar zagrada sada? Trebam x vrijednost, y vrijednosti, a što je broj trebao sam staviti ovdje ako želite riješiti vedra neba, na temelju ove priče ovdje? Samo nula. Ako želim ni plava, ja sam samo će ga promijeniti na nulu. Sada samo ponovimo što to radi. Imam ovdje na ovim vrh Drugo i treće linije, tvrdio sam dvije petlje, ugniježđena petlje, ako vas će, da će imati učinak napredovanja s lijeva na desno, vrha do dna nad svim x vrijednosti i sve y vrijednosti. Jer opet, slika samo grid redaka i stupaca. Dakle, to je idući u dobiti osloboditi od svih plave. Pusti me da odem u sljedećem retku za vas. Kako mogu dobiti osloboditi od svih zelene? PUBLIKA: [nečujan] DAVID Malan: Nice. PUBLIKA: [nečujan] DAVID Malan: Nice. I ja idem na smanjivanje, a samo uzeti briga o tome što nisam učinio ispravno napisane. A ako ste zadovoljni s tim što ste učinili, ići naprijed i kliknite na gumb Trčanje / Save i vidjeti što ste dobili. I opet, mi smo napravili samo tri promjene. Izbrisali smo da je prvi komentirati i zamijenio ga s ove dvije linije koda. I to je u redu, ako je potrebno pogoditi gumb Run / Save par puta nešto popraviti. I neka mi također uvećanje na mom broj tako da možete prepisati. Dobro. Tako ja vidim Andrew ima što Čini se da je pogreška. Upravo je dobio veliki crni pravokutnik na svom ekranu. Se bilo tko drugi imaju velika crna pravokutnik? PUBLIKA: Da. DAVID Malan: Veliki crni pravokutnik? U redu, pa ćemo razmišljati o tome što to znači. Rekli smo da je nula, nula, nula, tako da nema zeleno, ne crvene, ne plave, će vam dati crno. I ispada da većina naših prijenosnih računala jednostavno nemaju dovoljno vjernost. Ne možete baš reći da zapravo nešto tamo. A ako vrsta možda nagnuti Vaš zaslon prema naprijed i natrag, možda ne vidite nešto malo tamo? Možda, nekako, na neki način? To nije posve crno. PUBLIKA: [nečujan] DAVID Malan: Spoiler! Tu je neke crvene tamo, ali sjećam iz specifikacije problema, Nick ga smirio. On je to desaturated nešto, ali ne sve do nule. Dakle, ako želimo uvećati iznos Crvena, neka mi predloži ovaj trik. Pusti me uvećanje na mom ekranu. I neka mi ići naprijed i reći iznos jednak im.getRed (x, y). Ova linija koda je davanje mene nešto što se zove varijablu. Imam proizvoljno, ali, vjerojatno, opravdano nazvao moj varijabla što, očito? Iznos. Samo iznos. Mogao sam to nazvao sve što želim, ali ja sam koristite ovu drugu funkciju da sam opisao ranije da bi dobili iznos crvenom x zarezom y. Zašto sam to učinio? Što želite raditi ovdje? Morate add-- PUBLIKA: [nečujan] DAVID Malan: Da, možda umnožiti ga 10. A ako ne znaju, ja sam ići naprijed i učiniti. Ja ću ići naprijed i recimo, ja želim količinu crvene boje Želim biti što god je u minusu, puta 10, i zvijezda, zvjezdica na vašem Tipkovnica je the-- ne koriste x. Koristite zvjezdicu. To je kako se množe stvari u većini programskih jezika. Dakle, prema Kareem intuiciju, pohranjena u toj varijabli zove iznos, koliko crvena želim na mjesto xy. Kako sad, mogu napraviti da Pixel ima taj broj? Već ste to učinili prije. Možete postaviti zelena i plavo bez vrijednosti, na nulu. PUBLIKA: [nečujan] DAVID Malan: Da, dobro vi to ne želite 10. Već je učinio math ovdje. Dakle, mi smo dobivanje vrijednosti crvene, što je mali broj, vjerojatno. Mi smo množenjem od strane 10. Što želite učiniti s varijabilni iznos sada? PUBLIKA: [nečujan] DAVID Malan: Nice. Pa im.set-- što? PUBLIKA: setRed. DAVID Malan: setRed, na mjesto xy. Da. I samo iznos. Drugim riječima, varijabla je privremeno rezervirano mjesto da možete staviti sve što želite u. Mi se dogoditi da se stavljanjem broj u njemu, u ovom trenutku. Mi smo je pomnožen 10 da bi ga veći. I sada sam zamjenom tu varijablu kao i onaj treći argument, ili ulaz postaviti crveno. I tako da, kada vas dovršiti, i uzeti na znanje od točkom sa zarezom i zagradama. Idi naprijed i kliknite pokrenuti / spremanje opet, a vi treba vidjeti, magično, što je zapravo tamo. [? Arwa,?] Što je tamo? Eiffelov toranj u punopravno crvena, ne sasvim taman. to bi trebalo biti očitije sada, zar ne? U REDU. I Andrija, nema više crne kutije? PUBLIKA: [nečujan] DAVID Malan: U redu. Dakle, ja ću zadržati ovaj na ekranu. Ako želite igrati s tim kasnije ću stvoriti za vas. Ali to kod ovdje upravo to. Zašto ne napravite nešto drugo. Dopustite mi da se pomaknite prema dolje malo. Dakle, u ovom slučaju, projektora zapravo ne učiniti pravdu. No, na svojim ekranima, vjerojatno imaju vrlo crveni i vrlo crnu kutiju. To je, također, je zagonetka koja pokazuje nešto poznata. Međutim, slika je iskrivljena. Pravi slika, ovaj put je u plavim i zelenim vrijednosti. Međutim, oni su svi bili podijeljeni za 20 tako da su vrijednosti vrlo male. Crvene su vrijednosti samo slučajnih brojeva, šum. Poništi ovim iskrivljenim otkriti pravu sliku. Dakle, Nick onda vam kaže što treba učiniti. Postavite crvene vrijednosti na nulu, a onda se ne pokvari ono što je. Zatim pomnožite plavi i zelene vrijednosti za 20. Tako da je gotovo isti program kao i prije, ali ste obrnutim postupkom. A ja ću se kod iz Prije nego se na zaslonu u slučaju želite uputiti natrag na njega ili igrati dalje s tom jednom. Pusti me uvećanje na to. No riješiti bakra sliku puzzle, broj dva. PUBLIKA: [nečujan] DAVID Malan: OK, tako da je ovo jedan sam neće dati što više savjeta. Tako sam would-- oh, neka je vidjeti, imate pogrešno napisali ovdje. Dakle, zapamtite, ovo ovdje zapravo treba ići tamo. Dakle, ono što bih predložiti, ako želite usredotočiti na ovom jednom, tu je odgovor. Ako želite prepisati to, da trebao dobiti prvi koji radi. I onda možete koristiti kao inspiracija za druge. Nice. Dobro. A za znatiželjne, ovo je jednostavan primjer od znanosti ili umjetnosti zove steganography, umjetnost skrivanja informacija u slikama. Tipično, slike mogu biti watermarked vrlo napadan s logotipom na dnu kutak, ali jasno, vi može biti puno sofisticiraniji o tome i zapravo sakriti druge slike na slikama nekako ove tehnike. Uzmi još 30 sekundi, a onda ćemo barem objaviti ono što bi trebao vidjeti. A ja ću otići treći ona kao kod kuće vježbe, ako želite više od a izazov ovog vikenda. I mislim da je Andrew možda ga prvi stečen. Koja je druga slika, Andrew? PUBLIKA: Kip slobode. DAVID Malan: Kip slobode će biti odgovor ovaj put. Pa opet, samo su neke jednostavne primjeri, čiji je cilj je da vam dati osjećaj kako smo prevedene slikovno Scratch blokovi za više neugodno i više komplicirano kod, ali sve ideje još uvijek su isti, ali s uvođenjem sad pojma varijable, kao mogućnosti pohraniti nešto privremeno. Neka je to još jedan hands-on, tek sada povezati točkice na nešto malo više u stvarnom svijetu. Kada ste spremni, ako bi mogao ići na ovaj URL na ekranu. To je također u svoj primjerak tobogani, developers.google.com/maps~~V. Idemo zapravo učiniti nešto stvarno, da tako kažemo, na webu pomoću Google Maps API, ili sučelje za programiranje aplikacija, na sljedeći način. Google, kao i mnoge tvrtke, daje puno slobodnog funkcionalnosti koje možete koristiti za izgradnju svoje vlastite zanimljivih aplikacija. U stvari, ako ste ikada koristili Uber dobiti taksi ili automobila, vjerojatno znate da Uber ima karti i to pokazuje automobile na njega. To je, kako je najbolje što mogu reci, Google Maps API. Oni su zapravo koristi Googleove karte, ali Uber nije mapiranje tvrtka, niti bi to bio Posebno zanimljiv problem riješiti na vrhu svoje car usluga problema. I tako oni stajali, opet, na ramenima od drugih, Google je u ovom slučaju. Dakle, oni koriste Googleove karte, ali sami car usluge i druge takve značajke. Tako ćemo iskoristiti to učiniti sljedeće. A ako sam otišao prebrzo, Samo me zvati više u ovom trenutku. Sretan da ponovimo neke od slika stvari. Te bi trebao vidjeti sebe na stranici kao što je ovaj. Dakle, Google je lijepo, i oni su među najboljima pružiti ne samo API-ja, ali slobodan API koju Možete igrati sa ili koristiti u komercijalne svrhe. Oni ne počnu s naplatom ako je vaš običaj je visoka, ali sam otišao naprijed unaprijed i potpisao nam se za besplatni korisnički račun da, nadam se, 10 računala Neće nas diskvalificirati za naglo. Dakle, nadamo se da ovo Demonstracija će raditi. I primijetiti da su API za Android, iOS, web i web usluge, što god da je. Idemo se fokusirati na webu. Dakle, kliknite na roza kutija, web, i to će vas voditi, nadamo se, na stranicu ovdje. I oni 'je dobio hrpu API. I to može biti malo neodoljiv na prvom mjestu, ali ja ću nam kormilariti kroz ono što želimo. U gornjem lijevom kutu je Google Maps JavaScript API, JavaScript API. Pa ići naprijed i kliknite da je jedan. A to će vas dovesti do sad Sljedeće stranice, demonstracije i uzorak koda. Pusti me udaljili ovdje. I daj da nam to-- pomicati prema dolje gdje se kaže brzih koraka start. Vaš zaslon bi trebao izgledati moj. I tu je dva koraka, dobiti ključ i start u razvoju. Već jesam jedan korak za nas, uzimajući tzv ključ. A to je uobičajena ideja. API ključ je uglavnom samo veliki slučajni broj ili string da ste trebali zalijepiti u kodu, tako da Google ne zna tko ste kada koju koristite njihove usluge, njihovo API. To ne znači da smo se naplaćuje ništa. A sada, klik, umjesto jednom, kliknite na početak razvoja. Ako samo bi me val više ako niste sigurni gdje smo. Dakle, mi ćemo samo ogrepsti površina, ovdje ali ono Mislio sam da će biti uvjerljiv je zapravo sve nas, koristeći Cloud9 u jednom prozoru i ovaj tutorial u drugom prozoru, nadamo se zaista dobiti naše vlastite Primjena gore i trčanje koji ugrađuje običaj Google Karta u vlastitoj web-stranici, a onda dodaje jednu ili dvije značajke. No, mi ćemo samo ogrepsti površina što možemo učiniti. Dakle, samo brzo duševne ček. Jesu li svi na ovoj stranici, Google Maps API JavaScript? Treba reći početak. Nećemo proći cijela stvar na bilo koji način. U redu, u drugoj kartici, ako ne imaju ga otvoriti, ne ide u Cloud9 i sami da se samo nova kartica, u konačnici. Pa opet, c9.io od jučer, c9.io, i samo stvoriti novu datoteku. I ići naprijed i poziv što god želite. Zvao sam mina map.html. Nazovite to sve završava u .html. A ti bi trebao biti otprilike gdje sam ja u tom procesu sa samo treperi retka u prazan Kartica se zove nešto poput map.html. Ili datoteke, nova datoteka ovaj put. A sada, više na Google Maps JavaScript API, ćemo preskočiti čitanje kroz sve ovog teksta. Ali primijetite da pozdravi svijet doista posvuda, možete ga vidjeti. Pozdrav svijetu ima ovaj veliki šareni Primjer cijela hrpa HTML-a. Idi naprijed i kopirati i zalijepiti samo to HTML, tako da od tipa doc na vrhu sve do bliske HTML oznake, idi naprijed i kopirati sve that-- opet, to je pod Hello World example-- i zalijepite da u kartici Cloud9, tako da je sada vaš zaslon bi trebao izgledati otprilike kao i moje. A možete ga spasiti, ali nemojte ga učitati samo još. Neka prvi pogled kod i vidjeti ako mi ne može zaključiti ili saznati od onoga što je Google ima nas slijepo kopirati i zalijepiti. Oni samo žele pomoći, doslovno, da nas počeli, ali ne toliko Složenost zapravo tamo. Bilo kakva pitanja samo još? Sigurni smo da se kretati? U REDU. Tako brzo, neka je samo napraviti neke brze razum provjere. Linija jedan od onoga što sam vidi, i nadamo se, ti vidjeti, što to znači, DOCTYPEhtml? Kareem, sjećam? PUBLIKA: [nečujan] DAVID Malan: Da. Ovdje dolazi HTML 5. U međuvremenu, linija dva na Zaslon ovdje znači Hej preglednik, ovdje dolazi stvarni HTML. Linija tri je hej preglednik evo glava. Linija četiri je, naravno, hej preglednik, ovdje dolazi naslov. Što napraviti liniju od pet? Zapravo, to ne stvarno učiniti ništa za nas. U ovom slučaju, to samo mijenja veličinu stranica na zadanu. Linija šest, nismo razgovarali o tome, ali to određuje kodiranje znakova. Ima različitih načina za kodiranje datoteka, posebno za strane jezike. UTF-8 samo teži biti zadana. Dakle, sada ćemo vidjeti u liniji od sedam do 16 godina, a neki CSS. I iako nismo vidjeli sve te stvari prije, možemo vrsta zaključiti. Dakle, linija osam sredstva, hej preglednik, primjenjuju sve od sljedećeg na koje dvije oznake, očito? HTML i tijela teksta. Dakle, zarez je nova stvar tamo. A to je samo jedan od načina navodeći više oznaka odjednom. Tada smo dobili vitičastim zagradama. Dakle, očito, ovo govori preglednik, bi visinu stranice 100%. Dakle, čak i ako postoji vrlo malo sadržaj, čine cijelu stranicu, bi stvar popuniti stranicu. Provjerite karta u konačnici ispuniti stranicu. Margina, što to znači? To je obično kao proizvoljna bijeli prostor oko rubova da su neki preglednik dizajner upravo odlučio trebao biti tamo, jer to vrsta čini stvari izgledaju čišće. No, mi ne želimo to. Želimo se karta ide sve do rubova. Padding, slični u duhu do margine. Margine znači vani, nadopunu sredstva unutra, ali to je ista vrsta posla. To je malo tampon između vas i rubovima. A onda je dobra linija 13 prilika za brzi pregled. Što znači oštar znak kartu znači, ili hashtag karta znači? Što to odnosi na, u principu? PUBLIKA: [nečujan] DAVID Malan: Upravo tako. Ovaj objekt, ovaj CSS svojstvo se odnosi na samo jednu stvar, HTML oznake koja ima ID citat, citat "kartu". brzo naprijed, pomicanje i sad idemo dolje na dnu datoteke koje Nije previše daleko, a obavijest o liniji 19, ako ga zalijepiti baš kao što sam učinio, linija 19 ima samo jedan div, koji je podjela stranice, koje sam jučer zove se pravokutno područje. To je dobio ništa u njemu. To je otvorena oznaka, u blizini oznaka. No, to ne imati jedinstveni ID. Dakle, ono što čini se da je događa ovdje je Google se priprema našu web stranicu imaju potpunu 100% visine, i bez podloge, bez margina, jer što ćemo staviti unutra ovog diva, čiji je jedinstveni ID Karta je stvarna ugrađena karta. I želimo ispuniti stranica, a ne samo biti neki mali pravokutnik u sredini. Tako slično naglašava linije 14, map se treba imati visinu od 100%. Tako sada primijetiti između redaka 20 i 28, ovo je JavaScript kod. A to je, iako je sintaktički malo čudno, nije to sve što je mnogo događa ovdje. U skladu 21, to je progla nešto što se zove varijablu. Umjesto da ga zovete iznosi, kao što smo učinili prije, mi preciznije govoreći var, što samo znači da varijabla. Mogli smo koristili da se u Nick broj, ali nije, pa sam nije smetalo to radi bilo. To je varijabla zove map, a zatim tu je funkcija koja je očito se zove initMap. Dakle, to je kao naš vlastiti običaj zagonetka komad u nule. Stvorili smo komad Funkcija se zove initMap, i možete vrsta zaključiti što se ovdje događa. Na lijevoj strani, imamo varijablu, pa ćemo staviti sljedeće stvar u tom varijablom, s desna na lijevo. Na desnoj strani, kaže, hej preglednik, daj mi novi Google kartu. I google.maps.map je samo funky način određivanja da tu funkciju pripada Google Maps. Nakon zagradi, vidjeli smo ovo prije, hej preglednik, dobiti meni su elementi u stranicu, oznaka na stranici čiji je jedinstveni ID is-- PUBLIKA: [nečujan] DAVID Malan: --map. A što se događa, dobro, ova linija zajedno, linija 23, u biti govori: hej preglednik, idi mi onaj prazan div na stranici čiji je jedinstveni ID je karta, jer želim umetnuti u it-- uvelo u njega, ako will-- hrpu sadržaja to se događa da dolazi s weba, naknadno. I Google je radi sve to za nas. Pa opet, na samom kraju dana, imamo primjer apstrakcije. Nemam pojma što je mapa ili kako provesti API na karti. Mi ne treba da. Mi samo trebate reći na karti gdje da se probije i ostavite one temeljne provedbe detalji na Google. Sada je očito dva komada podataka da je ovaj primjer je pružajući na Googleov API. Očigledno je središte karte, i na razini zumiranja, da tako kažemo. I bilo tko prepoznati te koordinate, zemljopisna širina i dužina? Vjerojatno ne, ali možemo se vratiti na udžbenik, doslovno vidjeti. No, mi ćemo ga vidjeti u samo jednom trenutku. Razina zuma je vrijednost između, ne znam Znaš, jedan u 13 ili nešto slično. To samo ima veze s koliko ste zumirana u ili izvan, i to je to. A sada, na samom kraju stranica, obavijesti linija 29-- to je malo ružno, jer to wraps-- ovu liniju koda je ono što se preuzima na Preglednik Google je stvarna API. Sve koda da je Google-a Inženjeri su napisali da provede cijela ova značajka ugradivi karata. Sada ne mijenja ništa. Ako ste nakon zajedno, ići naprijed i samo spremiti tu datoteku, ako doista imate ono što imam. Idi na URL-a. Možete kliknuti na gumb Run do vrha, a koji će reći što je URL web poslužitelju opet. I to će vas dovesti do nove kartice. Ako kliknite Otvori za map.html, a izgledi su da ste će dobiti upozorenje, poruka o pogrešci, da? Poruka o pogrešci, poruka o pogrešci? Dakle, na žalost, pogreška Poruka se ne da rasvijetliti osim ako zaista otvoriti konzola, posebnu tab smo zadržao je jučer otvaranje i malo ranije danas. Ali naletio sam na to ranije, tako da sam već shvatio što je rješenje. U današnjem slajdova, ili Umjesto toga, u Cloud9, obavijest da nismo učinili nešto namjerno. Primijetite da je ova skripta oznaka u linija 29, ako ste pročitali kroz njega, to je kao maps.googleapis.com/~~pobj nešto, nešto, nešto, onda primjetiti nekoga, jedan od developera, napisao je u svom glavnom gradu pisma, vaš API ključ. Moramo zalijepiti nešto unutra. I to je bio korak Ja sam za nas prije, i opet bi mogli člana nam da je iznenada, 12 ili više od nas početi koristiti isti ključ, ali vidjet ćemo što će se dogoditi. Dakle, ako idete u današnjem tobogani, jedan tobogan kasnije, tu je Ovo je vrlo funky izgleda koji tekst. Idi naprijed i samo kopirati to i zalijepite ga gdje piše svoj API ključ. To je onaj sam se prijavio za. I definitivno ne probati ga upisivati ​​ručno, jer se osjeća ispunjen s pri upisu, potencijalno. Tako je samo kopirati i zalijepiti to. I to će napraviti liniju duže, ali sada, samo da bude jasno, to bi trebalo izgledati malo više ovako, gdje ključ jednak ne kapitaliziraju viče na vas. Spremite svoju stranicu, vrati se na drugu karticu, ponovno, i nadam se da vidjeti kartu gdje? PUBLIKA: Australija. DAVID Malan: Australija. Dakle, očito oni su GPS koordinate Australije. I neka mi hodati okolo samo na trenutak i pomoći svakome tko nije baš tamo, ali neka mi predloži, putem Googlea, pronaći GPS koordinate vlastitog rodnog grada ili svoju vlastitu domovinu. I vjerojatno Google može pretvoriti ovo gore ili Wikipedia mogu ti reći. No odabrati dvije različite vrijednosti za zemljopisne širine i dužine, vratiti i zalijepiti ih i a zatim se ponovno učitati stranicu nakon spremanja i vidjeti ako možete imati Karta za vlastitom rodnom gradu. A kad ste gotovi sa da, follow-up challenge-- a ja ću dati malo manje smjera, namjerno, tako da vas namjerno moraju da se bore za par minuta s dokumentacijom, promijeniti kartu da se ne to cartoonish zadani, ali satelitska karta. Tako da zapravo vidjeti satelit slika umjesto lijepih boja. A hint ću ti dati je promijeniti tip na kartu. Vrati se da je dobivanje počela stranicu za inspiraciju. Kao što ste mogli sakupljen, Ako ste u potrazi, postoji toliko mnogo više stvari koje možete učiniti. Neki od vas su već tip karte mjesta na promijenilo. Ali možete do-- na primjer, neka me ići na nešto što je učinio za tečaj Ja teach-- maps.cs50.net. Jedan od naših undergrads to učinio. Mi centar mape preko Harvard Yarda i prekriti sva ova imena zgrada, i morali smo ga dodali ovaj. Dakle, ako želim tražiti, Na primjer, Matthews Hall, imamo malo padajući izbornik. I ja mislim da je on pomoću programa, pa se Knjižnica smo ranije za to. A ako kliknete na Matthews Hall, odmah skokovi kartu na određeni položaj, i to pokazuje što je slika u ovom malom pop-up. No, čak i to malo pop-up, nismo provesti. Ako sam se pomaknite prema dolje na našem dobivanje započeo stranice i tražiti info prozora, vidjet ćete da su neki od Funkcionalnost vi sami Možete dodati, ali s malo više složenosti, nešto što se zove prozor s podacima. A ako ja kliknite na primjer ovdje, a to je ono što je zabavno, što možete učiniti stvari kao što je ovaj, Klikom na marker i voila, Informacije pops gore. Pa nismo baš uveden dovoljno značajke JavaScript obojiti sliku točno kako vam mogao žice sve ove stvari zajedno, ali smo nekako zagrebali površinu. U stvari, ono što sam upravo učinio, kada kliknuo sam na taj marker, se pokreće jedan događaj, Takozvani na klik događaj. I mi zapravo vidio taj Događaj je ranije danas, tzv podnijeti događaj, kad smo sprečavanju korisnik od potrazi za mačke. Tako smo nekako pokupila i choosed između svih tih različitih mogućnosti, da vam dati osjećaj, nadajmo se, od onoga što zapravo može učiniti s malo više udobnost u programiranju, i potpuno besplatno resursi. Ima li pitanja? Ne? Ovo je vaša konačna prilika, barem danas, u petak, kako bi dobili ništa od svoje grudi tako da hoda odavde osjećaj sigurni i udobni. Da. PUBLIKA: Zašto ne dodate još jednu stvar? DAVID Malan: Ajme meni. Moram se odmoriti ovaj vikend, mislim. Ostala pitanja? PUBLIKA: [nečujan] DAVID Malan: Vi can-- u Internet Explorer, počivao u miru, si nekad bio u mogućnosti staviti VB skripta, virtualni osnovni scenarij, ali to zapravo nikada nije zaživjela. Dakle, kratak odgovor je jednostavno JavaScript. Ostala pitanja? U redu, dobro, neka mi to učiniti. Dopustite mi da zgrabite naše kolege vani. Oni imaju neku procjenu Oblici koje žele svima provesti nekoliko minuta da ispunite. Žele prikupiti taj obrazac i bilo odricanja koje ste možda vani. Oni će također imati certifikate. Pretpostavljam da postoji još neke grickalice vani. Pusti me proći ove out, a ako Za sva pitanja u međuvremenu, Ja ću hodati okolo više pojedinačno i mi možemo dobiti koju je započeo. Da naravno. PUBLIKA: [nečujan] DAVID Malan: To je Obično vrijedi ovih dana. Dakako, s weba softver, vi ste naslonjena o drugima ili ste estetski korištenjem stvari kao što Bootstrap, tako da ne moraju provesti nisku razinu detalji izbornika i tipke i sve to. Ti si naslonjen na nekoga kao što su Google, tako da vas ne moraju se graditi Uber posao i mapiranje poslovnih, i bilo koji broj slične aplikacije, kao dobro. U stvari, prijave su popularni, previše. Ako ste koristili Spotify ili bilo koji broj stranica, ćete se prijaviti na neki web stranica koje koriste Facebook. Dakle, ono što je lijepo, tamo su API-ja za prijave danas, tako da ne morate da imaju svoj vlastiti korisnicima stol a sve svoje vlastite baze podataka nužno u istoj mjeri. Možete pustiti Facebook učiniti sve te složenosti za vas. Dakle, to je uzbudljivo vrijeme, iskreno, u programiranju, jer postoji toliko mnogo treća strana Usluge koje se mogu graditi na vrhu. I opet, to je cijena koju plaćate je bilo financijski ili zastoja. Ako Google ide dolje, tako da se Uber, nedvojbeno, ali možda to je razuman kompromis. I opet, to je jedna od tema, nadamo se, u posljednjih nekoliko dana, je ove ustupke. I rijetko je tamo ide da bude pravi odgovor. To stvarno je bolji dva ili više odgovora. Pass ovih okolo. I ove Cloud9 računi će se nastaviti na posao, u teoriji, u vječnost. Možda će vam ako pričekate nekoliko dana ili tjedan ili više kako bi se ponovno prijaviti u njih, to bi moglo potrajati kao jedan ili pet minuta otvoriti natrag gore, ali to je samo zato što su stavili ona spavati uštedjeti na resursima.