1 00:00:00,000 --> 00:00:00,060 2 00:00:00,060 --> 00:00:01,560 >> DAVID MALAN: Bine, ne-am întors. 3 00:00:01,560 --> 00:00:03,830 Deci, pentru excitarea concluzie, ultima noastră secțiune 4 00:00:03,830 --> 00:00:06,900 pe programare web, pe care am crezut că ne-ar folosi ca un termen general 5 00:00:06,900 --> 00:00:08,440 pentru a captura câteva subiecte rămase. 6 00:00:08,440 --> 00:00:10,390 Deci, la sfârșitul fișierului zi, vom face de fapt 7 00:00:10,390 --> 00:00:14,830 un pic de hands-on de programare web cu o limbă numită JavaScript. 8 00:00:14,830 --> 00:00:17,510 Și cred că vom arunca o privire la ceva legat de imagini 9 00:00:17,510 --> 00:00:20,040 si de a descoperi ceva secret ascuns într-o imagine, 10 00:00:20,040 --> 00:00:23,230 și, de asemenea, să ia o privire la Google Hărți API, de programare a aplicațiilor 11 00:00:23,230 --> 00:00:26,040 interfață, ca ceva reprezentativ pentru tipul de software 12 00:00:26,040 --> 00:00:28,800 care este din ce în ce și disponibil gratuit astăzi. 13 00:00:28,800 --> 00:00:32,029 >> Dar de ce nu ne aruncăm o privire la un ingredient în această lume 14 00:00:32,029 --> 00:00:34,070 că am fost un fel de luând de la sine există 15 00:00:34,070 --> 00:00:36,720 de ceva timp, o bază de date. 16 00:00:36,720 --> 00:00:39,150 În ziua anterioară și o jumătate ne-am asumat 17 00:00:39,150 --> 00:00:42,910 că avem acces la o bază de date, dar Ce problemă se rezolvă o bază de date? 18 00:00:42,910 --> 00:00:45,540 Ce face pentru noi? 19 00:00:45,540 --> 00:00:47,030 Ce este? 20 00:00:47,030 --> 00:00:48,679 >> AUDIENTA: [inaudibil] 21 00:00:48,679 --> 00:00:51,720 DAVID MALAN: Susține toate informațiile, OK, și ce fel de informații 22 00:00:51,720 --> 00:00:53,186 te-ar putea pune în ea? 23 00:00:53,186 --> 00:00:54,590 >> AUDIENTA: [inaudibil] 24 00:00:54,590 --> 00:00:56,450 >> DAVID MALAN: Orice informație ai pus în ea, vei primi înapoi. 25 00:00:56,450 --> 00:00:57,070 Asta e adevarat. 26 00:00:57,070 --> 00:01:01,900 Iar pe un site tipic web-based sau web cerere, ce tipuri de informații, 27 00:01:01,900 --> 00:01:03,385 în mod specific, s-ar putea te pune? 28 00:01:03,385 --> 00:01:04,260 AUDIENTA: [inaudibil] 29 00:01:04,260 --> 00:01:05,051 DAVID MALAN: Utilizatori. 30 00:01:05,051 --> 00:01:07,000 Deci, ce este un utilizator? 31 00:01:07,000 --> 00:01:09,765 >> AUDIENTA: [inaudibil] 32 00:01:09,765 --> 00:01:11,640 DAVID MALAN: OK, înregistrat utilizator al site-ului. 33 00:01:11,640 --> 00:01:15,100 Și ce înseamnă să informațiile utilizatorilor magazin? 34 00:01:15,100 --> 00:01:17,260 Ce compune un utilizator? 35 00:01:17,260 --> 00:01:18,331 Un utilizator are ce? 36 00:01:18,331 --> 00:01:19,206 AUDIENTA: [inaudibil] 37 00:01:19,206 --> 00:01:21,040 DAVID MALAN: Da, personal date, și îmi place asta. 38 00:01:21,040 --> 00:01:21,970 Hai să fim mai precis. 39 00:01:21,970 --> 00:01:25,275 Deci, un utilizator are de obicei un nume, ce altceva s-ar putea să aibă un utilizator? 40 00:01:25,275 --> 00:01:26,150 AUDIENTA: [inaudibil] 41 00:01:26,150 --> 00:01:29,130 DAVID MALAN: Un OK addr--, astfel încât primul nume, prenume. 42 00:01:29,130 --> 00:01:29,630 Asta e bine. 43 00:01:29,630 --> 00:01:31,463 De fapt, să se stabilească că, pentru că se întâmplă 44 00:01:31,463 --> 00:01:35,010 pentru a deschide o oportunitate pentru discuție, încă, în continuare. 45 00:01:35,010 --> 00:01:39,090 Nume, prenume, sex. 46 00:01:39,090 --> 00:01:41,820 47 00:01:41,820 --> 00:01:43,481 Un ID de un anumit fel. 48 00:01:43,481 --> 00:01:43,980 Ce altceva? 49 00:01:43,980 --> 00:01:45,438 Am auzit ceva mai înainte, de asemenea. 50 00:01:45,438 --> 00:01:51,600 Un e-mail, adresa poștală. 51 00:01:51,600 --> 00:01:58,170 >> Așa că hai să oprim acolo și acum ia în considerare nu ceea ce suntem stocarea în baza de date, 52 00:01:58,170 --> 00:02:01,980 dar-- și nu de ce, din moment ce este, probabil, evident că odată ce înregistrați un utilizator, 53 00:02:01,980 --> 00:02:03,730 pe care doriți să le amintească de ceva timp. 54 00:02:03,730 --> 00:02:05,480 Nu-l vreau să doar să fie stocate în memoria RAM 55 00:02:05,480 --> 00:02:08,690 și să fie forgotten-- asa să se concentreze asupra cum. 56 00:02:08,690 --> 00:02:11,700 >> Se pare că, în lumea bazelor de date, 57 00:02:11,700 --> 00:02:14,410 există cel puțin două tipuri de aceste zile. 58 00:02:14,410 --> 00:02:20,010 Ceva numit-o bază de date SQL, Limbaj de interogare structurat, 59 00:02:20,010 --> 00:02:24,770 sau, numit cutely, NoSQL, care nu este SQL. 60 00:02:24,770 --> 00:02:26,980 Iar aceasta din urmă este exemplu de ceea ce s-ar putea 61 00:02:26,980 --> 00:02:30,660 să fie numit un obiect orientat, sau un magazin de obiect, o bază de date 62 00:02:30,660 --> 00:02:36,010 care stochează obiecte, și nu, scuza mă, după cum vom vedea în curând, rânduri. 63 00:02:36,010 --> 00:02:41,800 >> Așa că ne vom concentra doar pentru un moment primul dintre acestea, și anume, un SQL 64 00:02:41,800 --> 00:02:46,850 bază de date, în cazul în care numai pentru că e atât de familiar deja, pentru oricine 65 00:02:46,850 --> 00:02:51,070 care a folosit Excel sau Foi de calcul Google sau Apple a 66 00:02:51,070 --> 00:02:53,740 Numere sau orice standard program de calcul tabelar, 67 00:02:53,740 --> 00:02:56,040 sau, echivalent, sau mai sofisticat, 68 00:02:56,040 --> 00:02:58,610 ceva de genul Microsoft Access sau Oracle 69 00:02:58,610 --> 00:03:03,890 sau MySQL sau PostgreSQL, toate acestea sunt nume de produse pentru implementări 70 00:03:03,890 --> 00:03:04,865 din următoarea idee. 71 00:03:04,865 --> 00:03:10,350 >> O bază de date relațională este pur și simplu ceva care are rânduri și coloane. 72 00:03:10,350 --> 00:03:12,850 Și, de rânduri și coloane, Eu literalmente spun ceva 73 00:03:12,850 --> 00:03:21,860 ca aceasta, așa că în cazul în care am poate avea numele unui câmp și tipul său aici. 74 00:03:21,860 --> 00:03:25,800 Și, de fapt, lasă-mă acum începe să hartă acestea. 75 00:03:25,800 --> 00:03:29,420 Așa că de fapt, eu nu știu de ce am desenat un grafic separat. 76 00:03:29,420 --> 00:03:30,780 Să păstrăm acest lucru simplu. 77 00:03:30,780 --> 00:03:34,830 >> Avem dreptul aici începuturile de masa noastră, în cazul în care 78 00:03:34,830 --> 00:03:40,150 acesta este numele câmpului iar acesta este tipul de date, 79 00:03:40,150 --> 00:03:41,660 și de tip I spun următoarele. 80 00:03:41,660 --> 00:03:45,510 Este un număr, este un șir de caractere, un scurt șir ca un cuvânt, 81 00:03:45,510 --> 00:03:49,340 este un paragraf, este date binare, cum ar fi o imagine? 82 00:03:49,340 --> 00:03:51,980 Și să șicana tocmai acest lucru în afară doar un moment. 83 00:03:51,980 --> 00:03:57,575 Așa că primul nume, număr, șir de caractere, bucată mare de text-- 84 00:03:57,575 --> 00:03:58,450 AUDIENTA: [inaudibil] 85 00:03:58,450 --> 00:03:59,616 DAVID MALAN: Da, așa șir. 86 00:03:59,616 --> 00:04:04,744 Și, într-un context de baze de date, vom în mod tipic numesc acest domeniu char. 87 00:04:04,744 --> 00:04:07,660 Voi spune doar char acum, dar suntem va rafina acest lucru într-un moment. 88 00:04:07,660 --> 00:04:09,180 câmp de caractere. 89 00:04:09,180 --> 00:04:11,365 Ultimul nume este, probabil, la fel. 90 00:04:11,365 --> 00:04:11,865 Gen? 91 00:04:11,865 --> 00:04:16,230 92 00:04:16,230 --> 00:04:18,310 >> Bărbat sau femeie, deci ar putea fi un câmp char. 93 00:04:18,310 --> 00:04:21,380 Ar putea fi fie citat, unquote "Masculin" sau citat, unquote "femeie" 94 00:04:21,380 --> 00:04:23,650 sau ar putea fi m sau f. 95 00:04:23,650 --> 00:04:26,540 Dacă doriți ca să fie mai cuprinzătoare, aveți nevoie de o a treia valoare 96 00:04:26,540 --> 00:04:28,640 sau un fel de alt domeniu cu totul. 97 00:04:28,640 --> 00:04:31,350 Și așa ai putea folosi adevărat fals. 98 00:04:31,350 --> 00:04:35,036 Câmpul ar putea fi numit de sex masculin, și atunci ai putea spune adevărat sau fals. 99 00:04:35,036 --> 00:04:38,160 Dar asta nu surprinde în mod necesar toate informațiile pe care le-ar putea dori. 100 00:04:38,160 --> 00:04:41,118 >> Deci, se pare că există un alt tip de din domeniu care ar putea fi utile aici 101 00:04:41,118 --> 00:04:46,040 într-o bază de date tipică, numită enum, în cazul în care acesta este un câmp de tip caracter, 102 00:04:46,040 --> 00:04:50,480 dar tu, designer, ajunge la enumera valorile posibile, 103 00:04:50,480 --> 00:04:54,630 cum ar fi citat, unquote "de sex masculin", citat, unquote "feminin" și așa mai departe. 104 00:04:54,630 --> 00:04:57,620 Astfel că, indiferent de valoare este în baza de date, 105 00:04:57,620 --> 00:05:00,670 este într-adevăr, pe bază de caractere, dar trebuie să fie una dintre aceste valori. 106 00:05:00,670 --> 00:05:03,520 Probabil nu ne-ar dori-o enum pentru nume sau prenume. 107 00:05:03,520 --> 00:05:05,630 În caz contrar, ne-ar fi pentru a enumera, ca nume 108 00:05:05,630 --> 00:05:09,570 derivă din, literalmente fiecare posibil nume și prenume. 109 00:05:09,570 --> 00:05:13,960 >> OK, deci ID-ul ce ar trebui să fie un act de identitate? 110 00:05:13,960 --> 00:05:15,200 Da, deci poate că un număr. 111 00:05:15,200 --> 00:05:17,870 Așa că hai să rămânem cu că, pentru moment, numărul. 112 00:05:17,870 --> 00:05:22,010 Și, după numărul, numărul e un pic prea larg acum. 113 00:05:22,010 --> 00:05:23,900 Pentru sfârșitul celui de al doilea zi, mă simt ca și cum am 114 00:05:23,900 --> 00:05:25,280 ar trebui să fie un pic mai precis. 115 00:05:25,280 --> 00:05:29,280 Numărul ar putea să însemne cum ar fi, ea ar putea fi ceva de genul 1.236. 116 00:05:29,280 --> 00:05:31,500 Și asta nu e, probabil, ceea ce înțelegem printr-un act de identitate. 117 00:05:31,500 --> 00:05:34,635 Ce probabil înțelegem prin un act de identitate? 118 00:05:34,635 --> 00:05:36,382 >> AUDIENTA: [inaudibil] 119 00:05:36,382 --> 00:05:38,590 DAVID MALAN: Oh, OK, poate că nu e nici măcar un număr. 120 00:05:38,590 --> 00:05:42,840 Poate că este de fapt un identificator unic asta e un șir de caractere, cum ar fi un nume de utilizator. 121 00:05:42,840 --> 00:05:44,580 Așa că absolut, ar putea fi. 122 00:05:44,580 --> 00:05:46,730 Cred că cineva, probabil, a însemnat numeric, totuși. 123 00:05:46,730 --> 00:05:48,460 Așa că să stea cu asta. 124 00:05:48,460 --> 00:05:49,320 Ce fel de număr? 125 00:05:49,320 --> 00:05:51,960 Ce este mai precise-- un întreg. 126 00:05:51,960 --> 00:05:56,710 Deci, un număr similar cu 0, 1, 2, 3, așa că vom numi asta un întreg. 127 00:05:56,710 --> 00:05:58,909 Și chiar și atunci, am putut fie nitpicking, este 128 00:05:58,909 --> 00:06:00,700 într-adevăr nu doar întreg generale pe care doriți. 129 00:06:00,700 --> 00:06:04,340 Probabil că nu doriți valori negative, doar pentru că, pur și simplu se simte ciudat. 130 00:06:04,340 --> 00:06:06,070 Probabil că doriți numere întregi pozitive. 131 00:06:06,070 --> 00:06:07,920 Deci, vă puteți exprima, de asemenea, că într-o bază de date, 132 00:06:07,920 --> 00:06:09,450 dar acum, vom spune întreg. 133 00:06:09,450 --> 00:06:10,650 >> E-mail? 134 00:06:10,650 --> 00:06:13,550 Aceasta este, probabil, un doar-- ce? 135 00:06:13,550 --> 00:06:14,460 >> AUDIENTA: [inaudibil] 136 00:06:14,460 --> 00:06:16,980 >> DAVID MALAN: Este un e-mail, dar asta e de caractere, nu? 137 00:06:16,980 --> 00:06:19,813 Ea are doar un caracter funky, cum ar fi un simbol "la" sau altceva, 138 00:06:19,813 --> 00:06:21,580 dar este încă un câmp de tip caracter. 139 00:06:21,580 --> 00:06:23,900 Și adresa poștală? 140 00:06:23,900 --> 00:06:25,360 câmp de caractere. 141 00:06:25,360 --> 00:06:31,400 Deci, asta e un început frumos, dar să fie un pic mai precis acum. 142 00:06:31,400 --> 00:06:34,540 >> Deci, se pare că, în o bază de date, de multe ori 143 00:06:34,540 --> 00:06:39,120 au posibilitatea de a alege mai rafinat versiuni ale acestor lucruri. 144 00:06:39,120 --> 00:06:44,330 De fapt, într-o bază de date tipic SQL, SQL, sau, mai general, baze de date relaționale, 145 00:06:44,330 --> 00:06:46,680 baze de date cu rânduri și coloane, de multe ori 146 00:06:46,680 --> 00:06:53,610 ajunge pentru a specifica nu numai tipul de field-- lasa-mi face loc aici-- 147 00:06:53,610 --> 00:06:56,600 dar, de asemenea, lungimea. 148 00:06:56,600 --> 00:06:59,900 >> Deci, cât timp este un prim nume? 149 00:06:59,900 --> 00:07:07,060 Cred că, D-A-V-I-D. OK, am înțeles eu probabil, doar ofensat ca și jumătate 150 00:07:07,060 --> 00:07:11,260 a oamenilor din cameră, dreapta, dat fiind că numele voastre sunt mai lungi de cinci 151 00:07:11,260 --> 00:07:16,608 scrisori, deci cinci pare un pic egoist și naiv, astfel încât ceea ce este o valoare mai bună? 152 00:07:16,608 --> 00:07:19,320 153 00:07:19,320 --> 00:07:24,330 10, bine, și cred că suntem în regulă în cameră. 154 00:07:24,330 --> 00:07:26,254 13? 155 00:07:26,254 --> 00:07:27,541 30? 156 00:07:27,541 --> 00:07:29,540 De ce nu îmi iau Abordarea de mai devreme, când am 157 00:07:29,540 --> 00:07:31,081 au vorbit despre tablouri și memorie? 158 00:07:31,081 --> 00:07:32,450 De ce nu spun doar ca și 1000? 159 00:07:32,450 --> 00:07:35,260 Numele Nimeni nu se întâmplă să fie mai mare de 1.000. 160 00:07:35,260 --> 00:07:36,706 Împinge înapoi. 161 00:07:36,706 --> 00:07:38,005 >> AUDIENTA: [inaudibil] 162 00:07:38,005 --> 00:07:40,130 DAVID MALAN: Da, este risipitor, dreapta, în special 163 00:07:40,130 --> 00:07:44,630 în cazul în care cele mai multe nume sunt doar cinci sau 10 sau 15 caractere, care este foarte risipitor. 164 00:07:44,630 --> 00:07:45,810 Deci, tu ce știi? 165 00:07:45,810 --> 00:07:48,020 Aceasta este o întrebare grea. 166 00:07:48,020 --> 00:07:51,721 Acum, putem analiza cu siguranță engleză și numele de orice altă limbă a lui 167 00:07:51,721 --> 00:07:54,470 și dau seama, ei bine, ceea ce este medie average-- nu prea 168 00:07:54,470 --> 00:07:57,150 ajuta us-- ceea ce este maxim este probabil, ceea ce ne dorim cu adevărat. 169 00:07:57,150 --> 00:07:59,920 Dar se pare că avem chiar unele posibilitatea de a alege tipul de aici. 170 00:07:59,920 --> 00:08:03,400 >> Într-o bază de date SQL tipică, vă au ceva numit un câmp char 171 00:08:03,400 --> 00:08:07,505 și, de asemenea, un varchar, V-A-R, pentru câmpul char variabil. 172 00:08:07,505 --> 00:08:08,630 Iar diferența este aceasta. 173 00:08:08,630 --> 00:08:12,400 Un câmp char, tu proiectantul, trebuie să precizeze în prealabil 174 00:08:12,400 --> 00:08:14,900 lungimea exactă a câmpului. 175 00:08:14,900 --> 00:08:20,530 Deci, poate primul nume cum ar fi 20 se simte un fel de sigur. 176 00:08:20,530 --> 00:08:23,950 S-ar putea avea de a face unele Googling la a se vedea dacă asta e suficient de fapt, în condiții de siguranță. 177 00:08:23,950 --> 00:08:26,910 Probabil că un nume cu 21 de caractere, dar pentru moment, să presupunem că 20 178 00:08:26,910 --> 00:08:27,620 este sigur. 179 00:08:27,620 --> 00:08:30,070 >> Un domeniu char ar implica într-o bază de date pe care 180 00:08:30,070 --> 00:08:33,289 sunt utilizați 20 și întotdeauna 20 de caractere. 181 00:08:33,289 --> 00:08:37,419 Acum, dacă e doar D-A-V-I-D, 15 dintre acestea sunt doar de gând să fie caractere goale, 182 00:08:37,419 --> 00:08:40,450 dar încă utilizați toți cei 20 bytes. 183 00:08:40,450 --> 00:08:46,302 Un câmp varchar, prin contrast, înseamnă string ar trebui să fie de până la 20 de caractere 184 00:08:46,302 --> 00:08:48,260 dar dacă este doar cinci, te doar de gând să utilizați 185 00:08:48,260 --> 00:08:51,270 cinci, sau poate șase pentru Valoarea specială la sfârșitul anului, 186 00:08:51,270 --> 00:08:54,980 așa 0 am discutat că semnifică sfârșitul unui caracter 187 00:08:54,980 --> 00:08:56,790 secvență în memorie. 188 00:08:56,790 --> 00:08:59,950 >> Deci, atunci când crezi s-ar putea alege char 189 00:08:59,950 --> 00:09:05,240 versus varchar, dat fiind faptul că comerțul-off? 190 00:09:05,240 --> 00:09:09,321 Char folosește ca multe caractere, varchar nu foloseste mai mult de atât de multe caractere. 191 00:09:09,321 --> 00:09:10,196 AUDIENTA: [inaudibil] 192 00:09:10,196 --> 00:09:13,859 193 00:09:13,859 --> 00:09:16,900 DAVID MALAN: OK, atunci când știi Lungimea șirului destul de convingătoare 194 00:09:16,900 --> 00:09:19,316 de a folosi doar char, pentru că în cazul în care tu stii asta, pur și simplu pune-l jos. 195 00:09:19,316 --> 00:09:23,390 Și, poate că e adevărat pentru un fermoar cod, în Statele Unite, cel puțin, 02138, 196 00:09:23,390 --> 00:09:26,660 Întotdeauna o să fie de cinci caractere până când adăugați bord patru. 197 00:09:26,660 --> 00:09:29,750 Dar, s-ar putea avea unele valori pentru pe care le știi întotdeauna lungimea. 198 00:09:29,750 --> 00:09:32,310 Sau poate simbolurile de stat, cum ar fi NY pentru New York, 199 00:09:32,310 --> 00:09:33,811 și MA pentru Massachusetts, în Statele Unite. 200 00:09:33,811 --> 00:09:36,560 Poate ai aveți unele situații în cazul în care este total rezonabil, 201 00:09:36,560 --> 00:09:39,520 dar prin această logică, de ce noi chiar și acest lucru prea mult la? 202 00:09:39,520 --> 00:09:41,800 De ce nu folosim doar varchar apoi vom doar 203 00:09:41,800 --> 00:09:46,730 utilizați întotdeauna două caractere, oricum, sau utilizați întotdeauna cinci caractere, oricum? 204 00:09:46,730 --> 00:09:50,300 De ce nu a salva doar varchar pentru totul, de această logică? 205 00:09:50,300 --> 00:09:51,677 Trebuie să existe o captură. 206 00:09:51,677 --> 00:09:52,552 AUDIENTA: [inaudibil] 207 00:09:52,552 --> 00:09:54,952 208 00:09:54,952 --> 00:09:56,660 DAVID MALAN: Ar putea scrie ceva greșit. 209 00:09:56,660 --> 00:09:58,090 Astfel că este adevărat. 210 00:09:58,090 --> 00:10:01,030 Dar chiar și atunci, ei nu pot folosi mai multă memorie decât am aloca. 211 00:10:01,030 --> 00:10:03,340 Eu încă mai au finală spun pe lungimea, 212 00:10:03,340 --> 00:10:06,780 astfel încât acestea să nu se pot face în mod accidental această greșeală, dar un gând bun. 213 00:10:06,780 --> 00:10:10,510 Este mai subtil, dar este foarte relevant la discuția noastră, de fapt, de tablouri 214 00:10:10,510 --> 00:10:12,390 și liste legate de mai devreme. 215 00:10:12,390 --> 00:10:16,290 >> Se pare că, o bază de date, în cazul în care știe că toate valorile sunt 216 00:10:16,290 --> 00:10:19,250 cu o lungime fixă, chiar dacă unele dintre aceste valori sunt goale, 217 00:10:19,250 --> 00:10:22,484 un fel de punct de vedere estetic gol, D-A-V-I-D și apoi 15 eboșe, 218 00:10:22,484 --> 00:10:24,650 se dovedește că, în cazul în care fiecare câmp este aceeași lungime, 219 00:10:24,650 --> 00:10:28,670 mult ca o matrice a avut toate lucrurile sale spate în spate la spate în spate, astfel încât 220 00:10:28,670 --> 00:10:33,480 ai putea pur și simplu, plus 1 pentru a ajunge la următorul valoare, aceeași idee într-un tabel de baze de date. 221 00:10:33,480 --> 00:10:37,550 Dacă toate caracterul tău șirurile sunt aceeași lungime, 222 00:10:37,550 --> 00:10:39,390 ai ceea ce se numește acces aleator. 223 00:10:39,390 --> 00:10:41,850 Dacă toate corzile sunt lungime 20, tu nu faci doar 224 00:10:41,850 --> 00:10:45,230 face plus 1 doar tu faci, plus 20, plus 20, plus 20, plus 20, 225 00:10:45,230 --> 00:10:48,775 și puteți derula foarte repede prin sau căutați prin toate datele. 226 00:10:48,775 --> 00:10:54,420 >> Un câmp caracter variabil, prin contrast, nu are întotdeauna 20 de caractere. 227 00:10:54,420 --> 00:10:58,000 S-ar putea avea 20 și apoi 15 și apoi 19, apoi 10, 228 00:10:58,000 --> 00:11:00,720 și așa mai departe, dacă doriți să căutați prin ea, nu poți pur și simplu orbește 229 00:11:00,720 --> 00:11:03,050 se adaugă 20 bytes pentru a ajunge la următoarea. 230 00:11:03,050 --> 00:11:07,280 Ai literalmente să caute prin deoarece marginea structurii de date, 231 00:11:07,280 --> 00:11:08,340 dacă vreți, este zdrențuită. 232 00:11:08,340 --> 00:11:11,480 Intr-un fel de merge în și pe bază de ieșire pe lungimea efectivă a șirului. 233 00:11:11,480 --> 00:11:14,460 Deci, atunci când știi lungimea, ca Kareem spune, folosește un câmp char, 234 00:11:14,460 --> 00:11:16,460 pentru că puteți câștiga acel eficiența de a fi 235 00:11:16,460 --> 00:11:19,170 capabil să caute prin ea mai repede atunci când căutați date, 236 00:11:19,170 --> 00:11:20,550 în caz contrar utilizați o variabilă. 237 00:11:20,550 --> 00:11:24,450 >> Din păcate, nu am nici un răspuns bun la cât timp numele ar trebui să fie, 238 00:11:24,450 --> 00:11:26,360 dar pentru ceva de genul un nume, aș spune 239 00:11:26,360 --> 00:11:28,470 un varchar este comun pentru că nu merge 240 00:11:28,470 --> 00:11:30,430 să fie o lungime fixă ​​pentru toată lumea. 241 00:11:30,430 --> 00:11:33,650 20, eu nu știu, 20 se simte un pic mai bine. 242 00:11:33,650 --> 00:11:36,460 Să zicem doar 50, 50. 243 00:11:36,460 --> 00:11:39,210 Ea nu chiar te costa asta mult mai mult să spunem 50 în loc de 40, 244 00:11:39,210 --> 00:11:41,260 dar, la un moment dat, aveți nevoie pentru a efectua un apel hotărâre. 245 00:11:41,260 --> 00:11:43,090 >> Foarte frecvente, sincer, pentru [? istoric?] 246 00:11:43,090 --> 00:11:47,670 motive, chiar dacă este excesivă, este de a spune 255, pentru că ceva timp în urmă, 247 00:11:47,670 --> 00:11:51,440 în sistemele de baze de date populare, cum ar fi MySQL, un instrument gratuit open source 248 00:11:51,440 --> 00:11:53,790 că o mulțime de companii cum ar fi chiar Facebook folosit, 249 00:11:53,790 --> 00:11:56,654 acest lucru a fost maxim implicit astfel încât oamenii pur și simplu a mers cu ea. 250 00:11:56,654 --> 00:11:59,070 Deci, nu nerezonabile, dar vom utilizați un pic mai intuitie 251 00:11:59,070 --> 00:12:02,970 și spune, sigur 50, asta probabil, un pic excesiv. 252 00:12:02,970 --> 00:12:05,720 >> Gen, îmi place enum, și așa că, prin urmare, putem 253 00:12:05,720 --> 00:12:08,760 enumera bărbați sau femei, sau poate mai eficient, 254 00:12:08,760 --> 00:12:13,420 m sau f sau o altă simbolistică, dar enum se simte ca o alegere bună acolo. 255 00:12:13,420 --> 00:12:16,740 Pentru a fi clar, de gen ar putea fi doar un varchar, 256 00:12:16,740 --> 00:12:19,090 și am putea pur și simplu toți sunt de acord oameni la fel de frumos, 257 00:12:19,090 --> 00:12:21,010 pentru a pune mereu aceleași valori acolo. 258 00:12:21,010 --> 00:12:22,720 Masculine sau feminine sau fleacuri. 259 00:12:22,720 --> 00:12:27,800 >> Dar, atunci problema este că am putea fac o greșeală, după cum [inaudibil] propus 260 00:12:27,800 --> 00:12:29,140 mai devreme într-un context diferit. 261 00:12:29,140 --> 00:12:32,780 Dacă facem o greșeală, am putea obține valori incorecte în baza noastră de date. 262 00:12:32,780 --> 00:12:36,320 Deci, ce e frumos despre bazele de date cum ar fi Oracle și MySQL și altele, 263 00:12:36,320 --> 00:12:39,280 este că aveți această ultimă strat de apărare în cazul în care 264 00:12:39,280 --> 00:12:43,010 administratorul DBA, baze de date, oricine este proiectarea acestui tabel ca noi 265 00:12:43,010 --> 00:12:46,440 sunt verbal, ar putea pune într-un loc pe care enum 266 00:12:46,440 --> 00:12:51,250 protejează împotriva specificând de sex masculin, feminin, și așa mai departe nimeni 267 00:12:51,250 --> 00:12:54,230 altfel nici un programator poate accidental inserați orice altă valoare. 268 00:12:54,230 --> 00:12:55,480 Deci, acest lucru ar fi un lucru bun. 269 00:12:55,480 --> 00:12:56,660 Aceasta este o caracteristică. 270 00:12:56,660 --> 00:13:00,760 >> Asa ca un act de identitate, presupunând un ID numeric, probabil, ar trebui să fie un număr întreg pozitiv. 271 00:13:00,760 --> 00:13:04,380 Și, uneori, avem posibilitatea de a discuta lungime. 272 00:13:04,380 --> 00:13:06,830 Nu ar fi în mod obișnuit specificați un număr aici, 273 00:13:06,830 --> 00:13:11,310 v-ar specifica în schimb acesta este un int sau un int mare, 274 00:13:11,310 --> 00:13:12,980 așa cum sunt numite în mod obișnuit. 275 00:13:12,980 --> 00:13:18,840 Dar, de obicei, un număr întreg ar fi, să zicem, 4 octeți. 276 00:13:18,840 --> 00:13:23,694 Și dacă este de 4 octeți, asta-i cât de mulți biți? 277 00:13:23,694 --> 00:13:24,630 >> AUDIENTA: [inaudibil] 278 00:13:24,630 --> 00:13:26,610 >> DAVID MALAN: 32 biți. 279 00:13:26,610 --> 00:13:30,270 Deci, cât de mulți utilizatori pot avem în baza noastra de date în cazul în care toate au un ID 280 00:13:30,270 --> 00:13:33,320 iar acest ID trebuie să fie unic? 281 00:13:33,320 --> 00:13:36,780 32 de biți înseamnă avem modele de unul, doi, trei, patru, five-- 282 00:13:36,780 --> 00:13:41,000 deci cât de multe modele diferite de zero-uri și cele puteți avea dacă sunt 32? 283 00:13:41,000 --> 00:13:43,235 E același lucru ca și întreba ce-i doi la cei 32? 284 00:13:43,235 --> 00:13:46,472 285 00:13:46,472 --> 00:13:48,430 Este un număr mare, care Nu pot destul obține dreapta, 286 00:13:48,430 --> 00:13:50,270 dar eu știu că e de aproximativ 4 miliarde de euro. 287 00:13:50,270 --> 00:13:53,970 Deci, acest lucru înseamnă că tabelul bazei de date poate au patru miliarde de utilizatori și asta este. 288 00:13:53,970 --> 00:13:56,410 >> Deci, acest lucru este un interesant Design implicit. 289 00:13:56,410 --> 00:14:00,840 Un număr decent de companii au decis, poate că nu atât de mult 290 00:14:00,840 --> 00:14:04,860 pentru masa lor de utilizatori, deoarece având 4 miliarde de utilizatori este o problemă rară. 291 00:14:04,860 --> 00:14:08,410 Acesta este un fel de Facebook stil problemă, nu este o problemă tipică de companie. 292 00:14:08,410 --> 00:14:12,670 Dar poate că, dacă aveți busteni de tranzacție sau un fel de date pe care în mod constant 293 00:14:12,670 --> 00:14:15,610 se scrie în baza de date că absolut ar putea avea miliarde 294 00:14:15,610 --> 00:14:18,900 și miliarde de rânduri, și utilizați un număr întreg pentru ea, 295 00:14:18,900 --> 00:14:22,750 Ce se va întâmpla cât mai curând ajunge la rândul numărul de 4 miliarde 296 00:14:22,750 --> 00:14:26,210 și apoi încercați să inserați 4 miliarda și 1, ca să spunem așa? 297 00:14:26,210 --> 00:14:29,610 Sunt simplificarea numerele pe care un pic. 298 00:14:29,610 --> 00:14:33,740 >> Te poți tăia înapoi, eu vă spun trebuie să-l ocupe cumva. 299 00:14:33,740 --> 00:14:37,910 Și ce un calculator ar face în mod obișnuit, gândiți-vă chiar din această dimineață, 300 00:14:37,910 --> 00:14:42,430 dacă aveți o valoare de 4 biți cum ar fi 1, 1, 1, 1, care, 301 00:14:42,430 --> 00:14:44,920 doar pentru a lega dimineața împreună la după-amiaza, ce 302 00:14:44,920 --> 00:14:48,369 înseamnă acest număr reprezintă în binar? 303 00:14:48,369 --> 00:14:49,410 OK, vom face mai ușor. 304 00:14:49,410 --> 00:14:53,310 Ce înseamnă acest număr reprezintă în binar? 305 00:14:53,310 --> 00:14:56,794 OK, vom face mai ușor, ceea ce acest lucru nu reprezintă în binar? 306 00:14:56,794 --> 00:14:57,460 AUDIENTA: Trei. 307 00:14:57,460 --> 00:14:59,670 DAVID MALAN: Trei, pentru că avem cele column-- 308 00:14:59,670 --> 00:15:00,450 [RÂSETE] 309 00:15:00,450 --> 00:15:01,350 Uau! 310 00:15:01,350 --> 00:15:03,980 Am avut coloana altele și coloana câte doi. 311 00:15:03,980 --> 00:15:07,250 Așa că să presupunem că, într-adevăr, ne [? teren agricol?] nu au fost de 32 de biți, 312 00:15:07,250 --> 00:15:13,440 dar au fost doi biți, putem Numar de la numărul 0, 1, 2, 3 utilizator, 313 00:15:13,440 --> 00:15:18,040 și atunci suntem un fel de înapoi la utilizator 00 din nou. 314 00:15:18,040 --> 00:15:19,739 Deci, aceasta este ceea ce se întâmplă de obicei. 315 00:15:19,739 --> 00:15:22,780 Dacă v-ați auzit vreodată expression-- probabil, nu au, dar dacă have-- 316 00:15:22,780 --> 00:15:26,500 overflow număr întreg, în cazul în care vă să păstreze flipping toate biți dvs. 317 00:15:26,500 --> 00:15:29,640 pentru a fi cele mai mari valori posibile, și apoi nu mai ai biți, 318 00:15:29,640 --> 00:15:30,850 ce s-ar întâmpla de obicei? 319 00:15:30,850 --> 00:15:32,280 De ce să-i spun 00? 320 00:15:32,280 --> 00:15:33,220 Ei bine, acest lucru este de trei. 321 00:15:33,220 --> 00:15:34,230 Cum reprezint 4? 322 00:15:34,230 --> 00:15:36,890 323 00:15:36,890 --> 00:15:38,915 Cum pot Reprezint pentru numărul 4 în binar? 324 00:15:38,915 --> 00:15:39,790 AUDIENTA: [inaudibil] 325 00:15:39,790 --> 00:15:41,780 DAVID MALAN: Da Unu, nu spun 100 per se, 326 00:15:41,780 --> 00:15:44,190 deoarece are greșit conotație, dar 1-0-0. 327 00:15:44,190 --> 00:15:48,920 Astfel că numărul de 1-0-0 este într-adevăr corectă, dar dacă aveți doar doi biți, 328 00:15:48,920 --> 00:15:50,820 Ce-ai făcut cu adevărat? 329 00:15:50,820 --> 00:15:53,219 Te-ai rostogolit la 00. 330 00:15:53,219 --> 00:15:54,760 Și într-adevăr, asta e ceea ce s-ar întâmpla. 331 00:15:54,760 --> 00:15:56,884 De fapt, vă puteți gândi despre acest lucru mai familiar. 332 00:15:56,884 --> 00:15:59,350 Dacă vă amintiți, ceea ce, în urmă cu 16 ani, lumea 333 00:15:59,350 --> 00:16:03,380 ar fi trebuit să se încheie atunci când problema Y2K sa întâmplat. 334 00:16:03,380 --> 00:16:04,330 De ce a fost asta? 335 00:16:04,330 --> 00:16:08,170 Ei bine, majoritatea calculatoarelor, pentru decizii rezonabile, 336 00:16:08,170 --> 00:16:15,320 au fost stocarea numerelor, cum ar fi anul 1975 sau anul 1999 337 00:16:15,320 --> 00:16:19,010 doar prin utilizarea a două cifre în memoria calculatorului. 338 00:16:19,010 --> 00:16:21,950 Așa că, desigur, ceea ce se întâmplă atunci cand ajungi la anul 2000, 339 00:16:21,950 --> 00:16:25,790 te duci la acest lucru, sau mai degrabă, da. 340 00:16:25,790 --> 00:16:30,120 Deci, te duci la anul 2000, dar în cazul în care te doar cu ajutorul a două cifre arată 341 00:16:30,120 --> 00:16:32,660 cum ar fi anul 00 și așa că v-ați rostogolit. 342 00:16:32,660 --> 00:16:36,820 Și acest lucru este motivul pentru care o mulțime de sisteme este necesar să fie actualizate la momentul respectiv. 343 00:16:36,820 --> 00:16:42,500 >> Deci, cu care a spus, companii precum Facebook rula împotriva acestei. 344 00:16:42,500 --> 00:16:46,147 Astfel încât singura cale de a gestiona situație, sincer, este să-l anticipăm. 345 00:16:46,147 --> 00:16:47,980 Sau cel mai curat mod de a gestiona această situație 346 00:16:47,980 --> 00:16:50,330 este să-l anticipeze astfel încât să nu trebuie să facă modificări mai târziu. 347 00:16:50,330 --> 00:16:51,970 Deci, în loc de 8 octeți, știi ce? 348 00:16:51,970 --> 00:16:54,261 Voi fi transmite-gândire aici, chiar dacă este 349 00:16:54,261 --> 00:16:56,760 un pic optimist că vom avea 4 miliarde 350 00:16:56,760 --> 00:16:58,850 și 1 utilizatori pe site-ul nostru. 351 00:16:58,850 --> 00:17:01,790 Dar, hai să folosim doar 8 octeți, sau 64 de biți, care ar fi în general 352 00:17:01,790 --> 00:17:05,640 numit un număr întreg de mare, foarte tehnic. 353 00:17:05,640 --> 00:17:10,280 Și asta înseamnă că doar tu poti avea chiar și mai multe cifre din numărul. 354 00:17:10,280 --> 00:17:12,599 Dar acest lucru este un important decizie de design, 355 00:17:12,599 --> 00:17:16,400 pentru că dacă alegeți un număr care are prea puțini biți de expresivitate 356 00:17:16,400 --> 00:17:19,089 ai putea crea de fapt un bug în software-ul. 357 00:17:19,089 --> 00:17:21,750 >> Bine, așa că hai să-și încheie cu e-mail și adresa poștală. 358 00:17:21,750 --> 00:17:26,369 Asa ca e-mail, cât timp ar trebui să o adresă de e-mail să fie? 359 00:17:26,369 --> 00:17:26,869 50. 360 00:17:26,869 --> 00:17:29,220 Eu chiar am nici o idee, dar este probabil, ceva de genul asta, 361 00:17:29,220 --> 00:17:32,261 pentru că altfel nimeni nu va scrieți dacă devine prea mult timp, asa ca 50, 362 00:17:32,261 --> 00:17:33,360 Să mergem cu ea acum. 363 00:17:33,360 --> 00:17:35,770 adresa poștală, cât timp ar trebui să fie asta? 364 00:17:35,770 --> 00:17:38,325 365 00:17:38,325 --> 00:17:39,200 AUDIENTA: [inaudibil] 366 00:17:39,200 --> 00:17:41,900 367 00:17:41,900 --> 00:17:43,890 >> DAVID MALAN: Nu doar un cod poștal, totuși. 368 00:17:43,890 --> 00:17:45,720 adresa poștală, am auzit. 369 00:17:45,720 --> 00:17:50,720 Deci, acest lucru este ca 1 Brattle Square, virgulă, Cambridge Mass., virgula, 02138. 370 00:17:50,720 --> 00:17:53,860 Și, de fapt, lasă-mă să trag un pic foaie de lucru aici. 371 00:17:53,860 --> 00:17:56,510 Acest lucru se simte ca este o oportunitate pierdută. 372 00:17:56,510 --> 00:18:01,480 Dacă avem 1 Brattle Square, virgulă, Cambridge MA 02138, 373 00:18:01,480 --> 00:18:04,510 Mă simt ca o putem face mai bine decât doar adresa poștală. 374 00:18:04,510 --> 00:18:07,100 De ce nu am exploda acest lucru un pic? 375 00:18:07,100 --> 00:18:08,030 Ce sunt eu să ajung? 376 00:18:08,030 --> 00:18:10,970 Ce ar trebui să avem în loc să avem pentru rândurile noastre aici, poate? 377 00:18:10,970 --> 00:18:12,260 >> AUDIENTA: [inaudibil] 378 00:18:12,260 --> 00:18:17,579 >> DAVID MALAN: Da, așa că hai numesc street_number, 379 00:18:17,579 --> 00:18:20,620 și o subliniere este doar o comună mod de a avea ceea ce arata ca un spațiu, 380 00:18:20,620 --> 00:18:22,360 dar nu este, de fapt. 381 00:18:22,360 --> 00:18:26,240 Stradă, și apoi city-- rău? 382 00:18:26,240 --> 00:18:28,440 >> AUDIENTA: [inaudibil] 383 00:18:28,440 --> 00:18:29,690 DAVID MALAN: Am putea face asta. 384 00:18:29,690 --> 00:18:30,702 O singură linie, linia doi. 385 00:18:30,702 --> 00:18:32,410 De ce nu vom păstra simplu de acum, 386 00:18:32,410 --> 00:18:34,840 dar asta e absolut o decizie acceptabilă. 387 00:18:34,840 --> 00:18:38,180 Și apoi de stat, și apoi să fie un pic SUA-centrice pentru acum 388 00:18:38,180 --> 00:18:42,040 și face doar codul poștal, pur și simplu pentru că aceasta va duce la o greșeală interesantă 389 00:18:42,040 --> 00:18:43,090 sau o problemă aici. 390 00:18:43,090 --> 00:18:44,655 Așa că să presupunem că acum adresa noastră. 391 00:18:44,655 --> 00:18:47,280 Este un pic mai enervant că avem toate aceste mai multe domenii, 392 00:18:47,280 --> 00:18:49,200 dar acum putem tag-ul lucrurile un pic mai bine. 393 00:18:49,200 --> 00:18:53,210 >> număr Deci, acum, probabil, din stradă nu ar trebui să fie un char, ar trebui să-l? 394 00:18:53,210 --> 00:18:54,835 Ce ar trebui să fie? 395 00:18:54,835 --> 00:18:55,710 AUDIENTA: [inaudibil] 396 00:18:55,710 --> 00:18:57,835 DAVID MALAN: Poate, un număr ca un întreg din nou? 397 00:18:57,835 --> 00:19:00,170 Un număr întreg de mare? 398 00:19:00,170 --> 00:19:02,170 Tu, probabil, nu trăiesc la 4 miliarde Main Street 399 00:19:02,170 --> 00:19:03,490 sau ceva nebunesc. 400 00:19:03,490 --> 00:19:06,850 Asa ca întreg este, probabil, bine, dar are cineva 401 00:19:06,850 --> 00:19:13,880 a trăit vreodată la o adresă cum ar fi 1A Brattle Square, sau 1 și 1/2? 402 00:19:13,880 --> 00:19:17,030 există aceste lucruri, din păcate, chiar dacă nu ați trăit acolo, 403 00:19:17,030 --> 00:19:21,240 există aceste anomalii cum ar fi 1A apartament, 1B, 1C. 404 00:19:21,240 --> 00:19:24,260 Deci, tu știi ce, probabil nu ar trebui să meargă cu număr întreg, 405 00:19:24,260 --> 00:19:27,440 în caz contrar vom merge să-și piardă unele vânzări. 406 00:19:27,440 --> 00:19:29,920 >> câmp Char, poate? 407 00:19:29,920 --> 00:19:30,870 Nu știu cât de mult timp. 408 00:19:30,870 --> 00:19:33,370 Probabil nu va fi atât de mult, deci 10 sau ceva. 409 00:19:33,370 --> 00:19:34,950 Nimeni nu va scrie un număr mai lung, poate. 410 00:19:34,950 --> 00:19:37,070 Dar, din nou, probabil că ar trebui da mai gândit la asta. 411 00:19:37,070 --> 00:19:39,900 Poate google, face unele de cercetare, dar vom merge cu intestinele noastre de acum. 412 00:19:39,900 --> 00:19:44,565 Străzi, char, 50, nu știu. 413 00:19:44,565 --> 00:19:46,940 La un moment dat, nimeni nu merge să-l scrie pe un plic, 414 00:19:46,940 --> 00:19:49,350 de asemenea, așa că, probabil, unele limite superioare acolo. 415 00:19:49,350 --> 00:19:54,200 Oraș, același, sigur, deci char 50. 416 00:19:54,200 --> 00:19:59,120 >> De stat, poate fi SUA-centrice pentru acum. 417 00:19:59,120 --> 00:20:01,850 Asa ca ar putea fi o listă, așa fel a unui apel hotărâre, de stat. 418 00:20:01,850 --> 00:20:04,000 Ar putea fi ca două personaje. 419 00:20:04,000 --> 00:20:06,140 Așa că, de fapt, poate, am tot zis char. 420 00:20:06,140 --> 00:20:09,420 Probabil vreau sa spun varchar, doar pentru o anumită eficiență, 421 00:20:09,420 --> 00:20:12,240 dar ne vom întoarce la această decizie într-un moment. 422 00:20:12,240 --> 00:20:16,150 Ar putea fi un char de lungime 2 pentru stat. 423 00:20:16,150 --> 00:20:20,670 Dacă în Statele Unite au, cum ar fi MA, Massachusetts, New York, New York, New Jersey, New 424 00:20:20,670 --> 00:20:22,100 Jersey, și așa mai departe. 425 00:20:22,100 --> 00:20:23,630 Așa că s-ar putea fi stabilită la asta. 426 00:20:23,630 --> 00:20:25,900 DC pentru Washington DC. 427 00:20:25,900 --> 00:20:29,915 >> Dar cred că, Olivier, tu a propus o altă abordare. 428 00:20:29,915 --> 00:20:30,790 AUDIENTA: [inaudibil] 429 00:20:30,790 --> 00:20:33,670 DAVID MALAN: Da, deci este un enervant puțin pentru a tasta, 430 00:20:33,670 --> 00:20:37,890 dar un enum s-ar putea face mai mult sens, pentru că în acest fel, cel puțin în Statele Unite la, 431 00:20:37,890 --> 00:20:41,320 ai putea enumera, dacă tediously, dar o faci doar o dată în baza de date 432 00:20:41,320 --> 00:20:47,480 și din nou, nu trebuie să se gândească aceasta, toate cele 50 de coduri de două caractere. 433 00:20:47,480 --> 00:20:48,660 Așa că îmi place enum. 434 00:20:48,660 --> 00:20:51,720 Hai să rămânem cu faptul că acolo, deoarece Este un fel de impune mai multă rigoare. 435 00:20:51,720 --> 00:20:53,620 Și apoi codul poștal? 436 00:20:53,620 --> 00:20:55,306 Cred că Andrew a avut un gând pe care 437 00:20:55,306 --> 00:20:56,180 AUDIENTA: [inaudibil] 438 00:20:56,180 --> 00:20:57,240 DAVID MALAN: Da, cinci sau nouă. 439 00:20:57,240 --> 00:20:58,323 Hai să-l păstrați simplu. 440 00:20:58,323 --> 00:20:59,380 Doar face cinci pentru acum. 441 00:20:59,380 --> 00:21:03,070 Dar poate aș putea doar face un întreg, nu? 442 00:21:03,070 --> 00:21:08,750 Aș putea, dar știi ce am făcut această greșeală o dată, într-un anumit sens. 443 00:21:08,750 --> 00:21:13,110 Cu ani în urmă, am fost migrarea de la Microsoft Outlook pentru Gmail, 444 00:21:13,110 --> 00:21:18,640 și Outlook are un mod de a exporta toate contactele dvs. ca un fișier Excel, 445 00:21:18,640 --> 00:21:21,280 un fișier CSV, separate prin virgula fișier cu valori. 446 00:21:21,280 --> 00:21:23,950 Și am făcut greșeala, am cred că, din ea făcând clic dublu, 447 00:21:23,950 --> 00:21:27,380 odată ce am descarcat de export, asigurați-vă că arăta cum mă așteptam. 448 00:21:27,380 --> 00:21:31,320 Trebuie să fi lovit Salvare sau lasa salvare automată lovi cu piciorul sau ceva. 449 00:21:31,320 --> 00:21:35,100 Pentru că atunci când am importat atunci in Gmail, totul a lucrat. 450 00:21:35,100 --> 00:21:39,910 Dar, de ani de zile, până în această zi, și Am făcut asta de cinci, acum 10 ani, 451 00:21:39,910 --> 00:21:44,380 Sunt încă mai găsesc prieteni care au adrese care arata ca acest lucru. 452 00:21:44,380 --> 00:21:45,700 De ce? 453 00:21:45,700 --> 00:21:47,900 >> AUDIENTA: [inaudibil] 454 00:21:47,900 --> 00:21:50,650 >> DAVID MALAN: A fost nevoie de 0, bine, mai degrabă, 455 00:21:50,650 --> 00:21:53,810 a luat întreg codul poștal ca un număr, și, prin urmare, este 456 00:21:53,810 --> 00:21:56,590 un lider de 0, ceea ce înseamnă nu are nici un sens. 457 00:21:56,590 --> 00:21:59,470 Și așa 2138 pare să fie codul meu poștal. 458 00:21:59,470 --> 00:22:07,100 Și acest lucru este, sincer, un Excel enervant facilitate prin care cred că în mod implicit, 459 00:22:07,100 --> 00:22:10,980 chiar dacă este menit să doar fi text, Microsoft Excel 460 00:22:10,980 --> 00:22:13,780 decide, permiteți-mi să fie de ajutor, și oh, eu văd doar numere. 461 00:22:13,780 --> 00:22:15,290 Hai să tratăm aceste ca numere. 462 00:22:15,290 --> 00:22:16,790 Și se trunchiază zerouri. 463 00:22:16,790 --> 00:22:19,165 >> Jur, fiecare cuplu de luni, am găsit o adresă, 464 00:22:19,165 --> 00:22:22,300 și dintr-un fel de TOC, mă duc înapoi în și se adaugă 0, chiar dacă eu niciodată 465 00:22:22,300 --> 00:22:23,700 trimite scrisori oamenilor sau ceva. 466 00:22:23,700 --> 00:22:25,510 Dar eu sunt încă mai găsesc rămășițe ale acestui. 467 00:22:25,510 --> 00:22:28,820 Deci, acest lucru este de a spune, este aceasta o idee bună? 468 00:22:28,820 --> 00:22:31,610 OK, nu, pentru că nimeni în Massachusetts, în acest domeniu, 469 00:22:31,610 --> 00:22:33,270 va avea o o ai conduce. 470 00:22:33,270 --> 00:22:38,070 Așa că hai să mergem cu cum ar fi char, probabil, cinci. 471 00:22:38,070 --> 00:22:41,450 >> Si aici, ne dăm seama ar putea folosi un enum și noi 472 00:22:41,450 --> 00:22:44,600 ar putea enumera 10.000 posibile coduri poștale, 473 00:22:44,600 --> 00:22:48,530 dar care se simte ca este, probabil, traversează o linie de, cum ar fi, beneficii. 474 00:22:48,530 --> 00:22:51,350 Dacă aveți pentru a introduce acea multe date în baza de date 475 00:22:51,350 --> 00:22:52,940 pentru a proteja împotriva ceva. 476 00:22:52,940 --> 00:22:57,400 Așa că char a dat seama ai putea introduce în H-E-L-L-O, după codul poștal, 477 00:22:57,400 --> 00:22:59,180 care nu este, în mod evident, numeric. 478 00:22:59,180 --> 00:23:01,680 Deci, nu există nici un fel, în o bază de date tipică, 479 00:23:01,680 --> 00:23:05,561 pentru a specifica doar numeric și doar cinci caractere, 480 00:23:05,561 --> 00:23:07,310 așa că vom avea pentru a face acest lucru în cod. 481 00:23:07,310 --> 00:23:11,100 Vom face asta în PHP sau Java sau orice limbaj suntem 482 00:23:11,100 --> 00:23:14,230 folosind pe server pentru a pune în aplicare acest tip de constrângere. 483 00:23:14,230 --> 00:23:14,860 >> Whoo! 484 00:23:14,860 --> 00:23:18,322 Bine, deci întrebări doar încă? 485 00:23:18,322 --> 00:23:19,780 Hai să facem o altă decizie de design. 486 00:23:19,780 --> 00:23:22,500 Se dovedește că De asemenea, de a alege, 487 00:23:22,500 --> 00:23:26,600 la proiectarea unei baze de date SQL, sau database-- tipice relaționale în cazul în care 488 00:23:26,600 --> 00:23:28,790 din nou, relațional doar înseamnă rânduri și coloane, 489 00:23:28,790 --> 00:23:35,500 asta e modul în care organizați data-- dvs. și dau seama că ceea ce înseamnă că acest lucru este, 490 00:23:35,500 --> 00:23:37,740 Am fost înșelătoare în că, eu sunt drawing-- acest lucru 491 00:23:37,740 --> 00:23:40,190 este ceea ce se numește schema pentru un tabel de baze de date. 492 00:23:40,190 --> 00:23:42,810 Aceasta este ca caietul de sarcini pentru table-- 493 00:23:42,810 --> 00:23:48,040 dar atunci când vine vorba de timp de fapt pentru a stoca date, 494 00:23:48,040 --> 00:23:52,081 și vom face acest lucru doar de exemplu aici. 495 00:23:52,081 --> 00:23:55,080 Am de gând să deschidă Excel, deoarece Excel-mi va da rânduri și coloane. 496 00:23:55,080 --> 00:23:58,050 Si asta este exact ceea ce Oracle și MySQL și alte instrumente mă va da. 497 00:23:58,050 --> 00:24:02,270 Așa că am de gând doar să folosească de dragul discuțiilor lui. 498 00:24:02,270 --> 00:24:05,250 Lasă-mă să merg mai departe și să deschidă documentul reprezentativ aici, 499 00:24:05,250 --> 00:24:06,310 mări un pic. 500 00:24:06,310 --> 00:24:15,200 Deci, de exemplu, antete noastre sunt acum nume, prenume, sex, ID-ul, 501 00:24:15,200 --> 00:24:20,980 e-mail, numărul străzii, strada, Hopa. 502 00:24:20,980 --> 00:24:25,710 Stradă, oraș, stat, doar despre încăpea pe ecran. 503 00:24:25,710 --> 00:24:29,080 >> Deci, ce înseamnă acest lucru este că, atunci când un utilizator se înregistrează în primul rând pentru site-ul meu, 504 00:24:29,080 --> 00:24:32,880 aceasta va fi ceva de genul David Malan, m, să zicem 1, 505 00:24:32,880 --> 00:24:42,910 malan@harvard.edu, numărul străzii va fie ca 1 Brattle Square, Cambridge, MA, 506 00:24:42,910 --> 00:24:44,780 02138, și apoi așa mai departe. 507 00:24:44,780 --> 00:24:48,290 Așa că, atunci când spun că o bază de date relațională sau baze de date SQL este rânduri și coloane, 508 00:24:48,290 --> 00:24:49,350 Vreau să spun asta. 509 00:24:49,350 --> 00:24:51,900 Că datele reale sunt stocate în rânduri și coloane. 510 00:24:51,900 --> 00:24:53,950 Aceasta este doar o coincidență, că am vorbit, 511 00:24:53,950 --> 00:24:56,033 și am fost doar desen în rânduri și coloane. 512 00:24:56,033 --> 00:24:58,320 Acesta este doar schema, definiția globală. 513 00:24:58,320 --> 00:25:01,640 >> Așa că din aceste domenii de aici, sau echivalent, acolo, 514 00:25:01,640 --> 00:25:06,270 care sunt domeniile pe care le considerați Sunt probabil să caute pe dacă sunt un utilizator 515 00:25:06,270 --> 00:25:09,200 sau dacă sunt administratorul bazei de date? 516 00:25:09,200 --> 00:25:12,426 Cum ar fi, ce domenii sunt eu de fapt, va căuta pe? 517 00:25:12,426 --> 00:25:13,830 >> AUDIENTA: [inaudibil] 518 00:25:13,830 --> 00:25:17,690 >> DAVID MALAN: Numele, da asa Îmi place faptul that-- da, 519 00:25:17,690 --> 00:25:19,750 e-mail ar putea fi destul de frecvente. 520 00:25:19,750 --> 00:25:21,440 Ne pare rău, ai spus numele. 521 00:25:21,440 --> 00:25:24,030 Așa că maybe-- și din nou, suntem un fel de a vorbi în abstract. 522 00:25:24,030 --> 00:25:25,988 Nu știu de ce te-ai să fie în căutarea unui nume, 523 00:25:25,988 --> 00:25:29,340 dar care se simte rezonabil, în cazul în care sunteți în căutarea unui utilizator. 524 00:25:29,340 --> 00:25:31,170 Poate afirmă, sigur, ID-ul. 525 00:25:31,170 --> 00:25:34,100 526 00:25:34,100 --> 00:25:36,160 >> Și este un alunecos pantă, pentru că am putut 527 00:25:36,160 --> 00:25:38,890 ticlui un scenariu în cazul în care poate că șeful meu mi-a cerut, 528 00:25:38,890 --> 00:25:40,417 câți oameni avem pe site-ul nostru? 529 00:25:40,417 --> 00:25:42,000 Câte femei avem pe site-ul nostru? 530 00:25:42,000 --> 00:25:45,210 Și așa în acel moment, s-ar putea dori pentru a căuta pe câmpul de gen, de asemenea, 531 00:25:45,210 --> 00:25:45,940 si nimic altceva. 532 00:25:45,940 --> 00:25:47,350 Asa ca exista un compromis aici. 533 00:25:47,350 --> 00:25:49,180 Din nou, nu există nici o răspuns corect, dar există 534 00:25:49,180 --> 00:25:53,760 este o caracteristică în cele mai multe baze de date SQL cunoscut sub numele de indexare, prin care 535 00:25:53,760 --> 00:25:56,100 tu, proiectant, administratorul bazei de date, 536 00:25:56,100 --> 00:26:01,730 ajunge să decidă în prealabil, care Câmpurile bazei de date ar trebui să optimizeze 537 00:26:01,730 --> 00:26:02,980 pentru căutări. 538 00:26:02,980 --> 00:26:07,620 >> Ai putea spune foarte naiv, pentru a optimiza acest lucru, pentru a optimiza că, pentru a optimiza acest lucru, 539 00:26:07,620 --> 00:26:10,300 optimiza că și acest lucru, iar baza de date va 540 00:26:10,300 --> 00:26:14,882 face ceva magic de sub hota, și de a face ceva în așa fel 541 00:26:14,882 --> 00:26:17,090 că data viitoare când căutați pe oricare dintre aceste domenii, 542 00:26:17,090 --> 00:26:18,400 ea va fi, de fapt, să fie mai rapid. 543 00:26:18,400 --> 00:26:19,110 Este posibil. 544 00:26:19,110 --> 00:26:20,530 Ea nu se anulează. 545 00:26:20,530 --> 00:26:22,500 Dar trebuie să existe un preț plătit. 546 00:26:22,500 --> 00:26:27,220 >> În cazul în care în mod naiv, sau supra-entuziasm să zicem, indicele pentru toate aceste domenii, 547 00:26:27,220 --> 00:26:29,810 ca să spunem așa, să le facă toate în mod eficient căutate, 548 00:26:29,810 --> 00:26:31,625 ce preț sunt, probabil, plătești? 549 00:26:31,625 --> 00:26:32,500 AUDIENTA: [inaudibil] 550 00:26:32,500 --> 00:26:33,090 DAVID MALAN: Performance. 551 00:26:33,090 --> 00:26:33,798 Ce vrei sa spui? 552 00:26:33,798 --> 00:26:37,380 Ei bine performanță, cel puțin în context, eu discut, e mai bine acum. 553 00:26:37,380 --> 00:26:38,830 Asta e definiția de indexare. 554 00:26:38,830 --> 00:26:41,180 Aceasta va face căutările mai repede. 555 00:26:41,180 --> 00:26:43,366 Astfel încât timpul scade, ca să spunem așa. 556 00:26:43,366 --> 00:26:44,240 AUDIENTA: [inaudibil] 557 00:26:44,240 --> 00:26:45,031 DAVID MALAN: Spațiu. 558 00:26:45,031 --> 00:26:46,520 Deci, din nou, acestea sunt un comerț comun. 559 00:26:46,520 --> 00:26:50,820 Pot accelera căutările, dar este va costa mai mulți octeți de spațiu. 560 00:26:50,820 --> 00:26:51,610 De ce? 561 00:26:51,610 --> 00:26:55,230 Ei bine, în mod implicit, dacă avem nici unul dintre aceste stele roșii, nici unul dintre acești indici, 562 00:26:55,230 --> 00:26:58,797 așa cum eu spun, cum de căutare pentru un nume în această colecție de date? 563 00:26:58,797 --> 00:27:00,630 Așa că hai să ne atragă atenția asupra acestui exemplu. 564 00:27:00,630 --> 00:27:06,300 Dacă avem pe David și Scully și Kareem și Arwa și altele în aceste rânduri, 565 00:27:06,300 --> 00:27:06,910 de exemplu. 566 00:27:06,910 --> 00:27:08,390 >> Așa că hai să facem exact asta. 567 00:27:08,390 --> 00:27:13,990 Scully este aici, și apoi avem Kareem, și Arwa, 568 00:27:13,990 --> 00:27:18,390 și toți ceilalți, dacă nu au un indice de definit, ca să spunem așa, 569 00:27:18,390 --> 00:27:20,160 cel mai bun poti face este de căutare liniară. 570 00:27:20,160 --> 00:27:23,470 În cazul în care căutați Arwa, noi nu suntem va fi capabil să sari direct la ea 571 00:27:23,470 --> 00:27:24,140 repede. 572 00:27:24,140 --> 00:27:26,556 Vom incepe de sus si du-te tot drumul spre partea de jos, 573 00:27:26,556 --> 00:27:28,600 nu spre deosebire de versiunea originală nostru de exemplu, Mike Smith. 574 00:27:28,600 --> 00:27:33,470 >> Dacă, totuși, spun eu, hei, baza de date, indicele primul câmp nume, 575 00:27:33,470 --> 00:27:37,000 atunci va face ceva crescatorului și să sprijine ceva 576 00:27:37,000 --> 00:27:38,130 cum ar fi căutarea binară. 577 00:27:38,130 --> 00:27:39,820 Probabil că nu e binar de căutare per se. 578 00:27:39,820 --> 00:27:42,810 Baze de date au tendința de a utiliza un alt structură de date denumită b-arbori, 579 00:27:42,810 --> 00:27:46,540 nu trebuie confundat cu arbori binari, că doar face mai rapid pentru a căuta 580 00:27:46,540 --> 00:27:48,500 ceva logaritmică în natură. 581 00:27:48,500 --> 00:27:53,510 Dar prețul pe care îl plătiți pentru a construi acel caracteristică, această structură de date în memorie, 582 00:27:53,510 --> 00:27:54,570 este mai mult octeți. 583 00:27:54,570 --> 00:27:57,170 Așa că s-ar putea lua unele megaocteți, unii gigaocteți, cine stie? 584 00:27:57,170 --> 00:27:58,410 Depinde de date. 585 00:27:58,410 --> 00:28:02,640 >> Deci, la un moment dat, va trebui să decidă, probabil că nu este un caz comun. 586 00:28:02,640 --> 00:28:06,000 Deci, care sunt reale comune cazuri, dacă ați avut într-adevăr să aleagă, 587 00:28:06,000 --> 00:28:10,080 ceea ce ar putea fi câmpurile tale preferate? 588 00:28:10,080 --> 00:28:10,580 E-mail. 589 00:28:10,580 --> 00:28:14,400 Și îmi place e-mail deoarece e-mail, în teorie, ar trebui să fie unic. 590 00:28:14,400 --> 00:28:17,650 Și așa de obicei, atunci când știi în prealabil, că unul dintre câmpurile 591 00:28:17,650 --> 00:28:20,277 este sau va fi unic, că tinde să fie un domeniu bun 592 00:28:20,277 --> 00:28:22,860 să caute mai departe, pentru că în acest fel, când căutați ceva, 593 00:28:22,860 --> 00:28:26,194 vei primi înapoi unul sau zero, răspunsurile și apoi ați terminat. 594 00:28:26,194 --> 00:28:28,110 Tu nu trebuie să țină în căutarea încă altele. 595 00:28:28,110 --> 00:28:31,992 >> Și astfel, în acest caz, de aici, e-mail, atâta timp cât nu se poate înregistra de două ori 596 00:28:31,992 --> 00:28:33,450 cu același e-mail, este unul bun. 597 00:28:33,450 --> 00:28:36,710 ID-ul prin definiție, în informatică mondială, 598 00:28:36,710 --> 00:28:39,610 daca vorbesti despre un ID-ul, ce a fost mai bine să fie unică. 599 00:28:39,610 --> 00:28:42,970 Asta e un fel de conotație de identitate sau identificator. 600 00:28:42,970 --> 00:28:46,440 Și restul dintre acestea ar putea fi, să le spunem frumos să avuți, 601 00:28:46,440 --> 00:28:47,860 dar nu într-adevăr necesar. 602 00:28:47,860 --> 00:28:49,976 >> Și așa mai departe într-o bază de date, specificați indexurile, 603 00:28:49,976 --> 00:28:51,350 dar poate fi chiar mai precis. 604 00:28:51,350 --> 00:28:56,060 Se poate spune, hei, baza de date, asigurați-vă că că fiecare ID-ul în acest tabel este unic. 605 00:28:56,060 --> 00:28:59,330 chiar nu lasa un programator a pus din greșeală într-un e-mail duplicat 606 00:28:59,330 --> 00:29:00,740 sau duplicate număr de identificare. 607 00:29:00,740 --> 00:29:03,140 Atât de mult ca enums ne protejează în mod similar, tu 608 00:29:03,140 --> 00:29:04,881 pot avea acele apărare de nivel inferior. 609 00:29:04,881 --> 00:29:07,130 Și astfel, proiectarea bazei de date, în un anumit sens, este un fel de distracție, 610 00:29:07,130 --> 00:29:08,380 pentru că ai făcut-defensiv. 611 00:29:08,380 --> 00:29:11,460 Tu un fel de presupun că cu programatori oribil 612 00:29:11,460 --> 00:29:15,550 și doriți să puneți în cât mai multe de apărare după cum puteți pentru a proteja datele, 613 00:29:15,550 --> 00:29:18,940 dar în același timp doriți pentru a le ajuta să funcționeze mai bine 614 00:29:18,940 --> 00:29:21,386 prin alegerea care câmpuri pentru a optimiza. 615 00:29:21,386 --> 00:29:24,260 Dar nu se poate face acest lucru în mod necesar în un vid ca și cum am cam aici. 616 00:29:24,260 --> 00:29:26,480 Trebuie să știi ce sunt aceste cazuri comune fiind. 617 00:29:26,480 --> 00:29:29,397 În cazul în care dezvoltatorii sunt punerea în aplicare a unei adrese de carte, 618 00:29:29,397 --> 00:29:32,230 s-ar putea foarte bine doriți să fie în măsură pentru a căuta pe aproape orice domeniu, 619 00:29:32,230 --> 00:29:33,830 doar prin natura cererii. 620 00:29:33,830 --> 00:29:37,910 Deci, poate că ai cheltui acel spațiu suplimentar. 621 00:29:37,910 --> 00:29:39,090 >> Corect, orice întrebări? 622 00:29:39,090 --> 00:29:41,820 623 00:29:41,820 --> 00:29:42,486 Da. 624 00:29:42,486 --> 00:29:43,470 >> AUDIENTA: [inaudibil] 625 00:29:43,470 --> 00:29:44,404 >> DAVID MALAN: Nu. 626 00:29:44,404 --> 00:29:45,279 >> AUDIENTA: [inaudibil] 627 00:29:45,279 --> 00:29:47,840 628 00:29:47,840 --> 00:29:48,826 >> DAVID MALAN: OK. 629 00:29:48,826 --> 00:29:49,701 >> AUDIENTA: [inaudibil] 630 00:29:49,701 --> 00:29:52,420 631 00:29:52,420 --> 00:29:54,850 >> DAVID MALAN: Oh, deci noi vorbesc într-un mod 632 00:29:54,850 --> 00:29:57,940 acum e complet limba agnostic. 633 00:29:57,940 --> 00:30:02,370 Deci, noi vorbim acum despre baze de date relaționale mai general, 634 00:30:02,370 --> 00:30:04,760 sau SQL baze de date mai general. 635 00:30:04,760 --> 00:30:06,870 >> AUDIENTA: [inaudibil] 636 00:30:06,870 --> 00:30:10,030 >> David MALAN: Un cuvânt mai bun de a utiliza este, poate fi folosit de orice limbă. 637 00:30:10,030 --> 00:30:15,280 Deci, eu pot scrie cod JavaScript, C cod, cod C ++, cod Java, cod Ruby, 638 00:30:15,280 --> 00:30:19,010 toate care vorbesc cu un baza de date și executați interogări. 639 00:30:19,010 --> 00:30:22,310 De fapt, asta nu e un rău segue la un exemplu de interogare. 640 00:30:22,310 --> 00:30:25,720 Și din nou, nu vom intra în Java sau C ++ sau la oricare dintre care mai sunt, 641 00:30:25,720 --> 00:30:29,420 dar, în SQL, limba în care păstrez referindu-se, Limbaj de interogare structurat, 642 00:30:29,420 --> 00:30:32,790 acest lucru în sine este un limbaj de programare, dar este menit să fie utilizat pentru, nici 643 00:30:32,790 --> 00:30:37,330 surpriza, structurate interogări de interogare. 644 00:30:37,330 --> 00:30:38,660 >> Prin asta vreau să spun asta. 645 00:30:38,660 --> 00:30:41,190 Modul în care selectați date dintr-o bază de date MySQL 646 00:30:41,190 --> 00:30:49,330 este să tastați literalmente în programul tău ceva de genul select stele din utilizatori. 647 00:30:49,330 --> 00:30:52,200 Sunt presupunând că acest tabel, de acum înainte se numește utilizatori. 648 00:30:52,200 --> 00:30:54,860 Aș putea numi orice vrem, dar acest tip de sens. 649 00:30:54,860 --> 00:30:57,240 Și așa selectați este un foarte verb comun, dacă aveți 650 00:30:57,240 --> 00:30:59,290 va fi, în SQL, care literalmente face asta. 651 00:30:59,290 --> 00:31:02,730 Ce crezi stele înseamnă că, în acest context? 652 00:31:02,730 --> 00:31:04,410 >> AUDIENTA: [inaudibil] 653 00:31:04,410 --> 00:31:05,380 >> David MALAN: Îmi pare rău? 654 00:31:05,380 --> 00:31:06,300 >> AUDIENTA: [inaudibil] 655 00:31:06,300 --> 00:31:09,580 >> DAVID MALAN: Nu este necesar, este mai cuprinzătoare decât atât, de fapt. 656 00:31:09,580 --> 00:31:11,700 Este caracterul wild card. 657 00:31:11,700 --> 00:31:14,740 Stea aproape întotdeauna înseamnă ceva, astfel încât acest lucru înseamnă că, în acest caz, 658 00:31:14,740 --> 00:31:16,510 selectați totul din baza de date. 659 00:31:16,510 --> 00:31:20,730 Așa că, atunci când spun asta, mă refer Dă-mi înapoi în fiecare coloană 660 00:31:20,730 --> 00:31:22,440 de la masa mea a sunat de utilizatori. 661 00:31:22,440 --> 00:31:24,730 Deci, da-mi un set de rezultate, așa cum se numește. 662 00:31:24,730 --> 00:31:28,210 Cu alte cuvinte, da-mi o copie după foaie de calcul, este ceea ce am să ajung. 663 00:31:28,210 --> 00:31:34,890 >> Dar, dacă am spus selectați stele de la utilizatori în cazul în care ID-ul este egal cu 1, cât de mare ar trebui 664 00:31:34,890 --> 00:31:36,640 setul meu rezultat să fie atunci? 665 00:31:36,640 --> 00:31:41,680 Sau echivalent, cât de multe rânduri ar trebui să Am fi dat înapoi de la baza de date? 666 00:31:41,680 --> 00:31:45,860 Probabil doar unul, dacă am într-adevăr, tratat ID ca un identificator unic, 667 00:31:45,860 --> 00:31:50,710 iar dacă David are acel ID unic, am ar trebui să se întoarcă unul și numai un singur rând 668 00:31:50,710 --> 00:31:53,220 care conține toate informațiile lui David. 669 00:31:53,220 --> 00:31:56,390 În cazul în care am spus acest lucru în cazul în care ID-ul este egal cu 99, ar trebui să mă întorc, 670 00:31:56,390 --> 00:32:00,320 în acest context, zero rânduri, cel puțin în acest moment. 671 00:32:00,320 --> 00:32:03,620 >> Cu toate acestea, dacă nu-mi pasă cu adevărat despre toate aceste informații, 672 00:32:03,620 --> 00:32:06,970 Aș putea spune doar, unde locuieste David? 673 00:32:06,970 --> 00:32:10,860 Selectați codul poștal din în cazul în care utilizatorii ID-ul este 1. 674 00:32:10,860 --> 00:32:15,820 Acest lucru se va alege numai mie zip lui David cod și nu totalitatea acel rând. 675 00:32:15,820 --> 00:32:19,541 De ce s-ar putea face acest lucru în loc de interogarea stele, wild card? 676 00:32:19,541 --> 00:32:21,950 >> AUDIENTA: [inaudibil] 677 00:32:21,950 --> 00:32:24,590 >> DAVID MALAN: Da, am putea avea nevoie doar ea. 678 00:32:24,590 --> 00:32:26,350 Așa că performanța este din nou răspunsul aici. 679 00:32:26,350 --> 00:32:28,540 De ce să ceri mai mult informații decât aveți nevoie, 680 00:32:28,540 --> 00:32:32,020 pentru că, chiar dacă este bine împreună, încă mai trebuie să copiați datele respective, 681 00:32:32,020 --> 00:32:35,560 s-ar părea, din baza de date în programul tău într-un fel, 682 00:32:35,560 --> 00:32:38,490 și asta e doar o prostie dacă ai au nevoie doar cinci dintre aceste cifre, 683 00:32:38,490 --> 00:32:40,340 nu totalitatea rândului. 684 00:32:40,340 --> 00:32:42,180 >> Deci, cum pot insera un utilizator? 685 00:32:42,180 --> 00:32:44,780 Să presupunem că un utilizator are doar înregistrată pentru prima dată. 686 00:32:44,780 --> 00:32:46,560 Sintaxa ar arata de obicei asa. 687 00:32:46,560 --> 00:32:52,700 Se introduce în utilizatori și atunci am spune valori, 688 00:32:52,700 --> 00:33:00,150 și atunci vom putea spune valori cum ar fi, să zicem, Lauren Scully, 689 00:33:00,150 --> 00:33:02,380 Videographer nostru chiar aici. 690 00:33:02,380 --> 00:33:04,390 Iar câmpul următor este de gen. 691 00:33:04,390 --> 00:33:08,020 Deci, vom spune citat, unquote "F", atunci avem un act de identitate 692 00:33:08,020 --> 00:33:12,250 și am de gând să say-- să pretinde că ea nu e de fapt aici, 693 00:33:12,250 --> 00:33:14,380 deci vom derula în poveste. 694 00:33:14,380 --> 00:33:16,530 Așa că 2 va fi ID-ul ei. 695 00:33:16,530 --> 00:33:19,130 Și apoi câmpul următor aici este e-mail ei. 696 00:33:19,130 --> 00:33:22,140 Așa că va fi ca Lauren Scully și așa mai departe, 697 00:33:22,140 --> 00:33:24,360 și vom dot doar dot dot-l departe de aici. 698 00:33:24,360 --> 00:33:26,890 Acum, ea va primi un pic plictisitor, dar inserați interogarea 699 00:33:26,890 --> 00:33:28,310 ar arăta în cele din urmă ca asta. 700 00:33:28,310 --> 00:33:30,970 >> Dacă vreau să scap de Scully, uh-oh, să radieze 701 00:33:30,970 --> 00:33:37,420 ei, ea șterge contul ei, șterge de la utilizatori în cazul în care ID-ul este egal cu 2, 702 00:33:37,420 --> 00:33:38,500 va scăpa de Scully. 703 00:33:38,500 --> 00:33:48,050 Sau pot să spun utilizatorii de actualizare set, să zicem, ce am putea schimba? 704 00:33:48,050 --> 00:33:49,430 Să presupunem că ea se mișcă. 705 00:33:49,430 --> 00:33:53,730 Set zip este egal cu 021-- nope, asta e zip ei curent. 706 00:33:53,730 --> 00:33:54,487 90210. 707 00:33:54,487 --> 00:33:56,320 Singurul alt cod postal Știu că în lume. 708 00:33:56,320 --> 00:33:59,002 Astfel că s-ar schimba zip ei code-- de fapt, 709 00:33:59,002 --> 00:34:00,460 care nu s-ar schimba codul ei poștal. 710 00:34:00,460 --> 00:34:02,170 >> Ce am făcut? 711 00:34:02,170 --> 00:34:04,292 Chiar dacă sintaxa este, probabil, nou. 712 00:34:04,292 --> 00:34:05,302 >> AUDIENTA: [inaudibil] 713 00:34:05,302 --> 00:34:08,010 DAVID MALAN: Da, m-am mutat toată lumea Beverly Hills, California. 714 00:34:08,010 --> 00:34:11,920 Deci ar trebui de fapt în cazul în care spun ID-ul este egal cu 2. 715 00:34:11,920 --> 00:34:12,820 Si asa mai departe. 716 00:34:12,820 --> 00:34:15,290 Așa că SQL este despre toate acestea tipuri de instrucțiuni. 717 00:34:15,290 --> 00:34:20,260 Selectați, insera, șterge, actualiza, cu aceste predicate la sfârșitul anului 718 00:34:20,260 --> 00:34:22,139 aceste clauze în cazul în care, ca să spunem așa. 719 00:34:22,139 --> 00:34:25,170 Și acolo e mult mai poți face, dar de fapt doar se reduce 720 00:34:25,170 --> 00:34:29,750 pur și simplu, în cazul în care arcanely, exprimând ceea ce doriți ca baza de date pentru a face. 721 00:34:29,750 --> 00:34:31,580 >> Apoi baza de date va da seama, atunci când 722 00:34:31,580 --> 00:34:35,630 inserați Lauren Scully în bază de date, în cazul în care să-i pună în memorie 723 00:34:35,630 --> 00:34:38,230 astfel încât să putem obține foarte repede ei pe baza adresei de e-mail ei 724 00:34:38,230 --> 00:34:42,610 sau în funcție de numărul ei de identitate sau altele asemenea. 725 00:34:42,610 --> 00:34:43,391 Da, Dan. 726 00:34:43,391 --> 00:34:44,266 AUDIENTA: [inaudibil] 727 00:34:44,266 --> 00:34:46,364 728 00:34:46,364 --> 00:34:47,780 DAVID MALAN: întrebare foarte bună. 729 00:34:47,780 --> 00:34:50,370 Se va schimba aceste script-uri de la Microsoft Access la Oracle 730 00:34:50,370 --> 00:34:52,290 la MySQL la PostgreSQL? 731 00:34:52,290 --> 00:34:53,790 Răspunsul scurt este depinde. 732 00:34:53,790 --> 00:34:58,697 Teoretic, există o foarte subansamblu comun semnificativ de SQL 733 00:34:58,697 --> 00:35:00,780 care este distribuit în toate din aceste implementări. 734 00:35:00,780 --> 00:35:03,340 Cu toate acestea, diverși producători au adăugat caracteristici 735 00:35:03,340 --> 00:35:07,120 la bazele lor de date pentru a face anumite lucruri dincolo de domeniul de aplicare al acestor caracteristici, 736 00:35:07,120 --> 00:35:08,720 care ar putea, de fapt, pauza. 737 00:35:08,720 --> 00:35:11,210 >> Așa că modul în care dezvoltatorii speculative împotriva acestui fapt, 738 00:35:11,210 --> 00:35:14,350 este că, mai degrabă decât scris prime cod SQL am scris aici, 739 00:35:14,350 --> 00:35:19,460 ei folosesc în schimb o bibliotecă, o bibliotecă comună care se 740 00:35:19,460 --> 00:35:23,650 este un fel de mare de nivel și rezumate departe pe care produsul pe care îl utilizați. 741 00:35:23,650 --> 00:35:25,710 Și vă oferă Funcții și proceduri 742 00:35:25,710 --> 00:35:28,810 pentru a apela, astfel încât să nu de fapt, scrie SQL brut. 743 00:35:28,810 --> 00:35:32,609 >> În teorie, atunci, aveți posibilitatea să modificați produse de la Oracle către Microsoft 744 00:35:32,609 --> 00:35:34,650 sau invers sau orice altceva altfel, și tu literalmente 745 00:35:34,650 --> 00:35:36,920 schimba nimic despre codul. 746 00:35:36,920 --> 00:35:40,180 Realitatea, însă, este, uneori, tu renunțe la caracteristici ca rezultat. 747 00:35:40,180 --> 00:35:43,860 Este posibil să fi ales un produs, deoarece ea are aceste caracteristici cu valoare adăugată, 748 00:35:43,860 --> 00:35:46,610 și tu nu ești doar acum folosindu-le în mod conștient. 749 00:35:46,610 --> 00:35:51,630 >> Și anecdotic, cele mai multe companii au tendința niciodată să se mute departe de baza lor de date. 750 00:35:51,630 --> 00:35:54,002 Așa că în timp ce acest lucru este un frumos pentru a au caracteristica, realitatea 751 00:35:54,002 --> 00:35:55,960 este, dacă sunteți reparații capitale baza de date, ești 752 00:35:55,960 --> 00:35:59,890 ceea ce face, probabil, ciorchini de alte modificări oricum, că tu nu neapărat 753 00:35:59,890 --> 00:36:01,360 trebuie să anticipeze că. 754 00:36:01,360 --> 00:36:03,720 Deci, e fără îndoială supra-inginerie problema, 755 00:36:03,720 --> 00:36:05,670 dar într-adevăr depinde de context. 756 00:36:05,670 --> 00:36:09,960 Dar, în teorie, SQL este partajată peste aceste produse diverse. 757 00:36:09,960 --> 00:36:11,560 întrebări foarte bune. 758 00:36:11,560 --> 00:36:12,272 Da. 759 00:36:12,272 --> 00:36:13,147 >> AUDIENTA: [inaudibil] 760 00:36:13,147 --> 00:36:17,820 761 00:36:17,820 --> 00:36:21,480 >> DAVID MALAN: Da, așa vă puteți gândi o bază de date 762 00:36:21,480 --> 00:36:25,020 este doar un server, la sfârșitul anului a doua zi, și în interiorul acelui server 763 00:36:25,020 --> 00:36:28,670 este un întreg buchet de tabele, rânduri și coloane. 764 00:36:28,670 --> 00:36:33,410 Iar atunci când trimiteți o interogare ca aceasta din program, site-ul dvs., 765 00:36:33,410 --> 00:36:39,340 scris în Java, Ruby, Python, oricare ar fi, serverul care primește această comandă 766 00:36:39,340 --> 00:36:41,660 și interpretarea în literalmente în același mod 767 00:36:41,660 --> 00:36:43,660 am discutat mai devreme, cu limbi interpretate, 768 00:36:43,660 --> 00:36:47,333 și apoi efectuarea unor anumite acțiuni de zero sau mai multe rânduri în zero sau mai multe tabele. 769 00:36:47,333 --> 00:36:48,208 AUDIENTA: [inaudibil] 770 00:36:48,208 --> 00:36:53,540 771 00:36:53,540 --> 00:36:55,070 >> DAVID MALAN: Exact, exact. 772 00:36:55,070 --> 00:36:58,450 Asa ca pseudocod pentru ceva ca asta ar putea fi acest lucru. 773 00:36:58,450 --> 00:37:02,450 În fișierul PHP sau tău fișier Python sau fișierul Java, 774 00:37:02,450 --> 00:37:09,210 ai avea codul pseudocod, sau Zgârieturi, cum ar fi blocuri, în cazul în care vizitele utilizator 775 00:37:09,210 --> 00:37:19,870 acme.com/register~~V pentru prima dată, apoi se introduce în utilizatori și așa mai departe. 776 00:37:19,870 --> 00:37:22,619 Si ne-ar traduce asta cod mai concret, în cele din urmă. 777 00:37:22,619 --> 00:37:24,660 Dar, într-adevăr, avem toate blocurile de aici, 778 00:37:24,660 --> 00:37:27,680 chiar dacă suntem sărind peste unele din etapele de punere în aplicare. 779 00:37:27,680 --> 00:37:31,560 >> Deci să-mi găsesc vina cu ceea ce noi minunat a făcut doar acum un moment. 780 00:37:31,560 --> 00:37:36,470 Ați creat o destul tabel complet pentru utilizatori. 781 00:37:36,470 --> 00:37:38,920 Desigur, am putea pune în aplicare ea în câteva moduri diferite, 782 00:37:38,920 --> 00:37:43,030 dar ne-au condus, de fapt jos path-- și vă spun eu, 783 00:37:43,030 --> 00:37:48,080 dar este, probabil, fault-- mele de o destul implementarea bazelor de date ineficiente. 784 00:37:48,080 --> 00:37:49,950 Nu este normalizat. 785 00:37:49,950 --> 00:37:52,320 >> Și prin normalizat mă refer acolo va fi, 786 00:37:52,320 --> 00:37:57,380 a lungul timpului, o concediere semnificativă, și, prin urmare, ineficiența, 787 00:37:57,380 --> 00:38:00,210 că este risipă de spațiu. 788 00:38:00,210 --> 00:38:05,650 Bazat numai pe ceea ce vezi aici, poate întrevezi în cazul în care această risipă de spațiu 789 00:38:05,650 --> 00:38:08,710 va veni din, în timp, ca mai mulți utilizatori înregistrați 790 00:38:08,710 --> 00:38:10,860 pentru site-ul dvs.? 791 00:38:10,860 --> 00:38:13,047 Ce date ar putea deveni redundante? 792 00:38:13,047 --> 00:38:19,084 793 00:38:19,084 --> 00:38:20,940 >> AUDIENTA: [inaudibil] 794 00:38:20,940 --> 00:38:22,686 >> DAVID MALAN: De ce vrei să spui asta? 795 00:38:22,686 --> 00:38:23,561 AUDIENTA: [inaudibil] 796 00:38:23,561 --> 00:38:32,180 797 00:38:32,180 --> 00:38:32,930 DAVID MALAN: Da. 798 00:38:32,930 --> 00:38:35,622 Și să presupunem în scopurile de astăzi că acest lucru este adevărat. 799 00:38:35,622 --> 00:38:38,330 Se pare că, și am învățat acest lucru calea cea mai grea, care nu este adevărat. 800 00:38:38,330 --> 00:38:41,670 Cumva mai multe orașe au, într-un fel, același cod postal, 801 00:38:41,670 --> 00:38:43,390 care rupe această intuiție minunată. 802 00:38:43,390 --> 00:38:46,180 Dar, să presupunem că e adevărat, pentru că este aproape întotdeauna adevărat. 803 00:38:46,180 --> 00:38:51,390 Astfel încât să presupunem că un cod poștal este întotdeauna asociat cu același oraș 804 00:38:51,390 --> 00:38:53,600 și de stat, care este un fel de presupunere rezonabilă, 805 00:38:53,600 --> 00:38:54,840 dar incorect, se pare. 806 00:38:54,840 --> 00:38:57,310 Dar, o presupunere rezonabilă în scopuri de azi. 807 00:38:57,310 --> 00:39:01,650 >> Apoi să presupunem că eu locuiesc în Cambridge, MA, conform tabelului acestui utilizator, 808 00:39:01,650 --> 00:39:04,100 și să presupunem că Lauren Scully trăiește în Cambridge, MA, 809 00:39:04,100 --> 00:39:06,120 și să presupunem că Kareem locuiește în Cambridge, MA, 810 00:39:06,120 --> 00:39:10,400 și Arwa trăiește în Cambridge, MA, noi toți în 02138. 811 00:39:10,400 --> 00:39:15,890 De ce ne amintim Cambridge, MA, 02138 pentru toți cei patru dintre noi? 812 00:39:15,890 --> 00:39:18,903 Ce ar fi suficiente să-și amintească? 813 00:39:18,903 --> 00:39:20,249 >> AUDIENTA: [inaudibil] 814 00:39:20,249 --> 00:39:21,540 DAVID MALAN: Doar codul poștal. 815 00:39:21,540 --> 00:39:25,080 Doar că 02138 există, deoarece Știi ce am putea face? 816 00:39:25,080 --> 00:39:32,650 Am putea obține un pic de fantezie aici și aici, definiți un alt tabel 817 00:39:32,650 --> 00:39:35,850 în cazul în care acest lucru se va fi cel mai numele, acest lucru va fi tipul, 818 00:39:35,850 --> 00:39:38,840 acest lucru se va fi cel mai lungime, și de acum înainte, eu sunt 819 00:39:38,840 --> 00:39:42,900 O să sun tabelul meu de orașe. 820 00:39:42,900 --> 00:39:47,011 Acest lucru a fost numit, de Desigur, masa mea de utilizatori. 821 00:39:47,011 --> 00:39:49,885 Și ce ar trebui să pun aici pentru masa mea de orașe, nu crezi? 822 00:39:49,885 --> 00:39:53,605 823 00:39:53,605 --> 00:39:54,535 >> AUDIENTA: [inaudibil] 824 00:39:54,535 --> 00:39:55,930 >> DAVID MALAN: Da. 825 00:39:55,930 --> 00:40:01,440 Așa că zip și de stat și oraș. 826 00:40:01,440 --> 00:40:05,350 Și așa tipul de aici, vom spune acest lucru va fi un char 5 din nou, 827 00:40:05,350 --> 00:40:06,750 sub rezerva dezbaterii anterioare. 828 00:40:06,750 --> 00:40:14,810 Acest lucru va fi un enum, probabil, cum ar fi înainte, și orașul va fi un varchar 50. 829 00:40:14,810 --> 00:40:17,960 Si acum ce pot obține să șteargă din acest tabel 830 00:40:17,960 --> 00:40:21,995 pentru a elimina această ineficiență? 831 00:40:21,995 --> 00:40:23,100 >> AUDIENTA: [inaudibil] 832 00:40:23,100 --> 00:40:23,850 DAVID MALAN: Nisa. 833 00:40:23,850 --> 00:40:30,239 Stat și oraș pleca, așa că am acum a eliminat potențial ineficiența 834 00:40:30,239 --> 00:40:33,280 pentru redundantă amintindu-și, Cambridge, MA, Cambridge, MA, Cambridge, MA, 835 00:40:33,280 --> 00:40:35,712 Cambridge, MA, care, sperăm nu va ieși niciodată să se schimbe. 836 00:40:35,712 --> 00:40:37,670 Și chiar dacă o face, este minorly enervant, acum 837 00:40:37,670 --> 00:40:39,750 că trebuie să se schimbe ea în mai multe rânduri, 838 00:40:39,750 --> 00:40:43,770 întrucât aici, aș putea doar schimba-l într-un singur loc. 839 00:40:43,770 --> 00:40:46,890 >> Acum, ce-trade-off, poate? 840 00:40:46,890 --> 00:40:48,020 Acest lucru a fost super convenabil. 841 00:40:48,020 --> 00:40:50,730 A avut toate datele mele frumos împreună. 842 00:40:50,730 --> 00:40:53,644 Dar ceea ce este în mod clar cazul acum? 843 00:40:53,644 --> 00:40:55,684 >> AUDIENTA: [inaudibil] 844 00:40:55,684 --> 00:40:58,100 DAVID MALAN: Exact, și eu sunt bucur că ai folosit cuvântul se alăture, 845 00:40:58,100 --> 00:41:01,320 pentru că este de fapt cuvântul cheie, în lumea bazelor de date relaționale 846 00:41:01,320 --> 00:41:05,270 în SQL, este un cuvânt real pe care îl s-ar putea introduce sau cel puțin să transmită. 847 00:41:05,270 --> 00:41:09,280 Și, de fapt, ceea ce avem acum să facem pentru a selecta informații complete a lui David este 848 00:41:09,280 --> 00:41:19,700 ceva de genul select stele din utilizatorii, se alăture orașe, on-- și acum 849 00:41:19,700 --> 00:41:24,010 Mă duc să se mute doar la o a doua linie astfel încât această users.zip fits-- este egală 850 00:41:24,010 --> 00:41:34,570 cities.zip, unde users.ID este egal cu 1. 851 00:41:34,570 --> 00:41:35,550 >> Deci ce se întâmplă? 852 00:41:35,550 --> 00:41:38,970 Este urât, dar vă puteți fel de citit la stânga la dreapta, de sus în jos. 853 00:41:38,970 --> 00:41:41,030 Selectați stele de la utilizatori este la fel ca înainte, 854 00:41:41,030 --> 00:41:42,930 dar nu e de la utilizatori, per se. 855 00:41:42,930 --> 00:41:45,910 Este de la utilizatori se alăture orașe. 856 00:41:45,910 --> 00:41:48,520 Ce sunt eu care unește aceste două mese? 857 00:41:48,520 --> 00:41:51,820 Ei bine, aparent, tabele de utilizatori domeniu zip, 858 00:41:51,820 --> 00:41:54,810 iar această perioadă este doar specială sintaxa pentru a exprima această idee, 859 00:41:54,810 --> 00:41:58,130 iar acest lucru este tabelele de orașe zip câmp. 860 00:41:58,130 --> 00:42:01,580 Vreau ca cei doi să fie egal, dar vreau să selectați în cele din urmă 861 00:42:01,580 --> 00:42:06,280 numai acele rânduri în cazul în care ID-ul în tabelul de utilizatori 862 00:42:06,280 --> 00:42:08,730 este egal cu 1, care sa întâmplat să fie a mea. 863 00:42:08,730 --> 00:42:11,781 >> Și ca să fie clar, o programator, de obicei, atunci când 864 00:42:11,781 --> 00:42:14,780 hardcode ceva de genul numărul 1, pentru că în caz contrar numai site-ul 865 00:42:14,780 --> 00:42:17,630 sprijină David sau primul utilizator, 866 00:42:17,630 --> 00:42:20,720 s-ar face în schimb ceva de genul ID-ul, în cazul în care 867 00:42:20,720 --> 00:42:22,510 aceasta reprezintă o variabile, ceva ce 868 00:42:22,510 --> 00:42:26,210 se poate modifica în timp, similare în spirit la ceea ce am spus mai devreme 869 00:42:26,210 --> 00:42:28,080 cu aceste tipuri de Substituenți. 870 00:42:28,080 --> 00:42:30,396 Dar pentru acum ne vom hardcodati la fel ca și 1. 871 00:42:30,396 --> 00:42:31,520 Și ce înseamnă asta? 872 00:42:31,520 --> 00:42:35,100 Ei bine, un mod frumos de a vizualiza acest lucru este că, dacă această mână este masa de utilizatori, 873 00:42:35,100 --> 00:42:38,090 iar această mână este fermoare masa, suntem un fel de finding-- 874 00:42:38,090 --> 00:42:41,330 și vârfurile degetelor mele sunt ZIP aici, iar vârfurile degetelor 875 00:42:41,330 --> 00:42:43,740 aici sunt zip, tu ești un fel de ea inter-blocare 876 00:42:43,740 --> 00:42:47,950 astfel încât să obțineți înapoi rezultați tabelul original, înscriindu-adevărat 877 00:42:47,950 --> 00:42:49,590 cele două mese pe teren comun. 878 00:42:49,590 --> 00:42:50,840 Și nu trebuie să fie zip. 879 00:42:50,840 --> 00:42:54,460 Ar putea fi mai nimic altceva, dar zip este frumos, pentru ca unul, este scurt, 880 00:42:54,460 --> 00:42:56,470 doi, este intotdeauna aceeași lungime, deci nu există 881 00:42:56,470 --> 00:43:02,270 o eficiență reală a ceea ce Olivier a propus aici 882 00:43:02,270 --> 00:43:05,200 cu factoring afară zip, și [Inaudibil] propune ca să scăpăm 883 00:43:05,200 --> 00:43:07,110 din oraș și state. 884 00:43:07,110 --> 00:43:11,370 >> Deci, acesta este procesul cunoscut sub numele de normalizare. 885 00:43:11,370 --> 00:43:14,171 Orice întrebări cu privire la asta? 886 00:43:14,171 --> 00:43:16,170 Ei bine, lasă-mă să subliniez acest lucru este genul de lucruri, 887 00:43:16,170 --> 00:43:19,202 chiar dacă este destul de nivel scăzut, această discuție, pe care le-ar crede 888 00:43:19,202 --> 00:43:20,910 tu esti un fel de a obține a pierdut în buruieni, 889 00:43:20,910 --> 00:43:26,690 aceasta este o manifestare de ample oportunitate pentru dezvoltatorii de a fi rău. 890 00:43:26,690 --> 00:43:29,600 Și, de fapt, chiar și atunci când, în cursurile pe care le-am învățat, când am avut, 891 00:43:29,600 --> 00:43:32,290 de exemplu, lipsit de experiență programatori de licență 892 00:43:32,290 --> 00:43:35,920 construi site-uri web, la prima vedere, site-urile ar putea arata grozav. 893 00:43:35,920 --> 00:43:38,280 Și ei au toate funcționalitate am solicitat, 894 00:43:38,280 --> 00:43:40,650 dezvoltatorii au făcut o treabă bună. 895 00:43:40,650 --> 00:43:43,370 >> Dar ei nu au știut neapărat suficient despre proiectarea bazelor de date 896 00:43:43,370 --> 00:43:46,680 sau ei nu cred greu suficient despre tipurile de date 897 00:43:46,680 --> 00:43:49,220 precum și tipurile de utilizatori finali site-ul a fost de gând să aibă, 898 00:43:49,220 --> 00:43:53,240 și vom găsi, apoi, șase luni mai târziu, după ce au absolvit sau mutat, 899 00:43:53,240 --> 00:43:56,016 că la naiba, site-ul nostru este într-adevăr, într-adevăr lent. 900 00:43:56,016 --> 00:43:58,890 Și eu nu sunt nici măcar vorbesc despre a avea milioane sau mii de utilizatori. 901 00:43:58,890 --> 00:44:02,580 Vreau să spun câțiva utilizatori sute în campus, toți aceștia ca, spre exemplu, 902 00:44:02,580 --> 00:44:04,870 magazin pentru cursuri la în același timp, ei sunt 903 00:44:04,870 --> 00:44:07,010 folosind acel catalog curs de cerere am menționat 904 00:44:07,010 --> 00:44:10,410 iar lucrul este cu adevărat obtinerea lent pentru că nu au existat indici. 905 00:44:10,410 --> 00:44:13,740 Nu au existat stele roșii, astfel încât să vorbesc, sau nu am avut în mod necesar 906 00:44:13,740 --> 00:44:17,690 luat în date comune obține unele economii de spațiu. 907 00:44:17,690 --> 00:44:21,880 >> Așa că atunci când un dezvoltator verificare sau o persoană bază de date sau altele asemenea, 908 00:44:21,880 --> 00:44:25,864 genul de întrebări să se gândească este chiar, atunci când revizuirea codului cuiva, 909 00:44:25,864 --> 00:44:28,530 să spun, nu arata neaparat prin toate codul lor, dar spun, 910 00:44:28,530 --> 00:44:30,154 să ne uităm prin tabelele bazei de date. 911 00:44:30,154 --> 00:44:31,150 La ce te stocarea? 912 00:44:31,150 --> 00:44:33,941 Și apoi să spun, bine, așteptați minut, de ce sunt utilizați un număr întreg? 913 00:44:33,941 --> 00:44:36,224 Ce se întâmplă dacă avem 4 miliarde și 1 din aceste rânduri? 914 00:44:36,224 --> 00:44:38,140 Și aceste tipuri de întrebări este o oportunitate 915 00:44:38,140 --> 00:44:40,170 la fel de a împinge înapoi și obține un sentiment de, în cazul în care 916 00:44:40,170 --> 00:44:42,300 dacă nu sunteți confortabil face aceasta, având în cineva mai tehnic 917 00:44:42,300 --> 00:44:45,425 pune aceste întrebări, dacă este sau nu persoana care stie cu adevarat lucrurile lor. 918 00:44:45,425 --> 00:44:47,890 Și acest lucru este genul de chestii, de asemenea, că oamenii 919 00:44:47,890 --> 00:44:50,540 pe internet, care sunt auto-didact, poate 920 00:44:50,540 --> 00:44:53,920 să învețe mai puțin frecvent, pentru că tu nu vin neapărat peste ea 921 00:44:53,920 --> 00:44:56,630 la fel de mult, pentru că puteți obține baza de date și să fie difuzate, 922 00:44:56,630 --> 00:44:58,880 dar cu excepția cazului în care le-ați citit pe tutoriale sau a fost 923 00:44:58,880 --> 00:45:01,880 a spus despre normalizarea bazei de date și indexare și performanță, 924 00:45:01,880 --> 00:45:04,255 acestea sunt tipurile de lucruri care sunt de gând să te rănesc. 925 00:45:04,255 --> 00:45:07,480 Si s-ar putea crede, sau un inginer prost s-ar putea spune, oh, bine, am un salariu mai bun 926 00:45:07,480 --> 00:45:09,600 pentru o bază de date mai mare sau o bază de date mai rapid 927 00:45:09,600 --> 00:45:13,360 sau pur si simplu arunca bani la asta, scara verticală, nu neapărat acest lucru. 928 00:45:13,360 --> 00:45:16,920 Dacă te duci in-- și puteți merge în după fact-- și adăugați indici, 929 00:45:16,920 --> 00:45:20,320 și poate dura câteva ore pentru bază de date pentru a construi date noi 930 00:45:20,320 --> 00:45:24,100 structura pe care am făcut aluzie la mai devreme, puteți rezolva în continuare acest lucru după fapt, 931 00:45:24,100 --> 00:45:26,180 că acest lucru este în cazul în care vă începe să distingă 932 00:45:26,180 --> 00:45:28,830 designeri bune de la rău designeri, nu doar estetic, 933 00:45:28,830 --> 00:45:32,972 dar performanță înțelept, de asemenea. 934 00:45:32,972 --> 00:45:33,555 Alte intrebari? 935 00:45:33,555 --> 00:45:36,420 936 00:45:36,420 --> 00:45:37,480 Nu? 937 00:45:37,480 --> 00:45:41,980 Deci, pentru NoSQL, care era celălalt tip de baze de date la care am făcut aluzie mai devreme, 938 00:45:41,980 --> 00:45:43,490 nu aveți rânduri și coloane. 939 00:45:43,490 --> 00:45:47,000 In schimb, ai avea ceva care arată un pic mai mult ca asta. 940 00:45:47,000 --> 00:45:48,630 Am de gând să utilizeze sintaxa comună. 941 00:45:48,630 --> 00:45:51,270 acolade se întâmplă să fi folosit aici destul de mult. 942 00:45:51,270 --> 00:45:55,400 S-ar putea avea ceva cum ar fi primul nume este David, 943 00:45:55,400 --> 00:46:00,180 s-ar putea avea ultimul Numele este Malan, citate, 944 00:46:00,180 --> 00:46:07,530 s-ar putea avea ID este-- scuzați-mă, ID-ul whoops-- este 1, 945 00:46:07,530 --> 00:46:13,410 e-mail este malan@harvard.edu, iar eu nu voi deranja tastarea restul, și apoi 946 00:46:13,410 --> 00:46:14,380 unele alte lucruri. 947 00:46:14,380 --> 00:46:17,380 >> Cu alte cuvinte, acest lucru este o reprezentare textuală 948 00:46:17,380 --> 00:46:20,720 ceea ce noi numim în general un obiect într-un program de calculator. 949 00:46:20,720 --> 00:46:26,079 Si un obiect este, în general, doar o colecție de perechi de valori-cheie. 950 00:46:26,079 --> 00:46:27,370 Deci, din nou, această temă recurentă. 951 00:46:27,370 --> 00:46:30,440 Am văzut perechi de valori-cheie în HTML, am văzut perechile de valori-cheie acum 952 00:46:30,440 --> 00:46:34,020 în contextul bazelor de date, iar noi a văzut perechi de valori-cheie în contextul 953 00:46:34,020 --> 00:46:35,970 de, cred că, o limbă mai devreme. 954 00:46:35,970 --> 00:46:36,890 Păstrează vine. 955 00:46:36,890 --> 00:46:39,620 Și într-adevăr, asta e într-adevăr ce date se reduce la, 956 00:46:39,620 --> 00:46:44,240 date și metadate sau valori și chei, respectiv. 957 00:46:44,240 --> 00:46:47,430 >> Deci, un non-relațional bază de date, pe bază de ceva 958 00:46:47,430 --> 00:46:50,680 pe obiecte, în cazul în care doar se strange in grupuri totul împreună și puneți-l 959 00:46:50,680 --> 00:46:55,640 în memorie, ar fi în general imaginat ca, sau gândit, așa cum acest lucru. 960 00:46:55,640 --> 00:47:00,500 Și eu voi părăsi asta acum ca un fel de abordare alternativă. 961 00:47:00,500 --> 00:47:03,750 Și unul nu este în mod necesar mai bine decât celelalte. 962 00:47:03,750 --> 00:47:07,310 De fapt, foarte mult în vogă aceste zile sunt sisteme de baze de date 963 00:47:07,310 --> 00:47:11,942 cum ar fi MongoDB și Redis și câteva alte astfel de instrumente, disponibile în mod liber, 964 00:47:11,942 --> 00:47:13,400 dar ele sunt din ce în ce în vogă. 965 00:47:13,400 --> 00:47:18,850 În parte, deoarece acestea oferă suplimentare caracteristici peste aceste abordări tabelare, 966 00:47:18,850 --> 00:47:20,850 dar, de asemenea, pentru că acestea sunt un pic mai ușor de utilizat, 967 00:47:20,850 --> 00:47:24,099 pentru că nu trebuie să se gândească la fel de greu despre o mulțime de aceste decizii de proiectare. 968 00:47:24,099 --> 00:47:25,970 Așa că plusuri și minusuri. 969 00:47:25,970 --> 00:47:29,740 Așa că dați seama că există opțiuni dincolo de ceea ce tocmai ne-am petrecut timpul pe. 970 00:47:29,740 --> 00:47:32,310 >> Așa că hai să facem acest lucru. 971 00:47:32,310 --> 00:47:37,870 Hai să tranziția un pic înapoi acum la programare web, 972 00:47:37,870 --> 00:47:40,470 astfel încât să un fel de a încheia astazi cu ceva 973 00:47:40,470 --> 00:47:43,930 asta e un pic hands-on, de umplere în unele lacune de ieri. 974 00:47:43,930 --> 00:47:45,340 Lasă-mă să merg la această primă. 975 00:47:45,340 --> 00:47:49,310 Așa că amintesc că ieri am avut unele HTML canonice 976 00:47:49,310 --> 00:47:55,110 pagini care inițial au avut, numai HTML, iar apoi a avut CSS doilea rand, 977 00:47:55,110 --> 00:47:56,620 foi de stil în cascadă. 978 00:47:56,620 --> 00:47:59,830 Aceasta este o nouă etichetă pe care nu am făcut-o a se vedea ieri, sau locuiesc pe, 979 00:47:59,830 --> 00:48:01,490 așa-numitul script tag-ul. 980 00:48:01,490 --> 00:48:05,830 >> Se pare că de fapt puteți încorpora un limbaj numit JavaScript în aplicațiile web 981 00:48:05,830 --> 00:48:08,310 pagină și a face dvs. de web pagini de a face ceva. 982 00:48:08,310 --> 00:48:09,710 Deci ce vreau sa spun prin asta? 983 00:48:09,710 --> 00:48:12,630 Ei bine, lasă-mă să merg mai departe și doar împrumuta acest cod pentru un moment. 984 00:48:12,630 --> 00:48:15,860 Mă duc să intru în Cloud9, nu este nevoie pentru a merge acolo voi încă, 985 00:48:15,860 --> 00:48:21,350 și am de gând să sun acest alert.HTML. 986 00:48:21,350 --> 00:48:23,650 Am de gând să lipiți în dosarul meu aici. 987 00:48:23,650 --> 00:48:32,070 Și doar pentru a clarifica ceea ce am făcut, să mă să merg la această adresă și du-te pentru a alerta, 988 00:48:32,070 --> 00:48:33,870 și veți vedea lumea Bună ziua. 989 00:48:33,870 --> 00:48:35,440 >> Dar acest lucru este un fel de underwhelming. 990 00:48:35,440 --> 00:48:37,410 vreau sa fac ceva un pic diferit. 991 00:48:37,410 --> 00:48:40,610 Așa că am de gând să fac de fapt acest lucru. 992 00:48:40,610 --> 00:48:43,820 Mă duc să intru aici e, și între etichetele mele de script, 993 00:48:43,820 --> 00:48:53,460 spune de alertă ( "Bună ziua, lume"); astfel încât Notă este un pic neglijent, dar am HTML, 994 00:48:53,460 --> 00:48:56,180 în interiorul căreia este limbaj numit JavaScript, 995 00:48:56,180 --> 00:48:59,420 și aceasta este ceea ce se numește funcția de apel sau o procedură de apel. 996 00:48:59,420 --> 00:49:04,500 Acesta este un verb, literalmente, în acest caz, și am invoca funcționalitatea de cod 997 00:49:04,500 --> 00:49:06,310 că altcineva a scris. 998 00:49:06,310 --> 00:49:09,630 >> Astfel că funcționalitatea este un alertă, deci să mergem la această pagină 999 00:49:09,630 --> 00:49:14,046 acum și faceți clic pe reîncărcare, și acum a se vedea un pic de interactivitate. 1000 00:49:14,046 --> 00:49:15,420 Este un fel de școală veche și urât. 1001 00:49:15,420 --> 00:49:18,580 Acest tip de voi aduce aminte de pop-up-uri, probabil, de odinioară 1002 00:49:18,580 --> 00:49:22,030 dar a făcut ceva un puțin mai programatic. 1003 00:49:22,030 --> 00:49:26,940 >> Așa că mai mult decât atât, să facem ceva mai interesant. 1004 00:49:26,940 --> 00:49:30,980 Lasă-mă să intru aici și a scăpa de acest lucru. 1005 00:49:30,980 --> 00:49:33,840 Și mă duc să merg mai departe și a crea o formă așa cum am făcut-o ieri. 1006 00:49:33,840 --> 00:49:34,840 De fapt, tu ce știi? 1007 00:49:34,840 --> 00:49:37,350 Mă duc să intru în google.html, pe care noi 1008 00:49:37,350 --> 00:49:43,027 a început ieri, care arata ca acest lucru, prin care am căutat pisica 1009 00:49:43,027 --> 00:49:45,360 Dar, observa că există un fel de bug în versiunea curentă. 1010 00:49:45,360 --> 00:49:49,770 Acesta funcționează pentru pisici, dar să presupunem că Eu nu cooperează și am nimic de tip, 1011 00:49:49,770 --> 00:49:53,290 și pur și simplu fac clic pe submit. 1012 00:49:53,290 --> 00:49:54,540 E cam de un comportament ciudat. 1013 00:49:54,540 --> 00:49:57,300 Mi-a luat la Google reală, nu mi-a dat un mesaj de eroare. 1014 00:49:57,300 --> 00:50:00,590 Aș vrea să le spun utilizatorului trebuie să ne dea o valoare. 1015 00:50:00,590 --> 00:50:01,780 >> Deci, cum s-ar putea să facem asta? 1016 00:50:01,780 --> 00:50:06,790 Ei bine, lasă-mă să mă întorc în Cloud9 și lasă-mă să intru în partea de sus a paginii mele 1017 00:50:06,790 --> 00:50:11,980 și se adaugă o etichetă de script ca aceasta, în cazul în care Am de gând să scrie un cod JavaScript. 1018 00:50:11,980 --> 00:50:15,420 Si eu voi face următoarele. 1019 00:50:15,420 --> 00:50:22,910 În cazul în care (document.getelementByID-- și rechemare că am vorbit despre asta mai devreme, 1020 00:50:22,910 --> 00:50:23,960 această funcție. 1021 00:50:23,960 --> 00:50:25,310 Ce ID-ul nu vreau să ajung? 1022 00:50:25,310 --> 00:50:33,050 Vreau să ajung q, și voi să zicem este egal cu nimic, cum ar fi astea-- 1023 00:50:33,050 --> 00:50:38,220 de fapt, lasa-ma sa folosesc ghilimele duble doar pentru consistency-- este egal cu nimic, 1024 00:50:38,220 --> 00:50:46,650 apoi alert ( "Vă rugăm să introduceți o interogare") aici. 1025 00:50:46,650 --> 00:50:49,200 >> Așa că am ceea ce pare a fi ceva ca o condiție. 1026 00:50:49,200 --> 00:50:51,410 Am mai văzut această idee generală în Scratch. 1027 00:50:51,410 --> 00:50:54,240 Este ca unul dintre acele puzzle piese care arătau ca acest lucru. 1028 00:50:54,240 --> 00:50:55,780 Și ce spun? 1029 00:50:55,780 --> 00:50:59,520 Ei bine, aici jos, observați că sunt O să facă următoarele. 1030 00:50:59,520 --> 00:51:02,790 Mă duc să dau acest formular câmp nu numai un nume de q, care 1031 00:51:02,790 --> 00:51:06,630 este ceea ce devine trecut la Google, dar eu sunt O să-i dea un identificator local, 1032 00:51:06,630 --> 00:51:07,630 De asemenea, numit q. 1033 00:51:07,630 --> 00:51:11,780 Dar, aș putea numi asta am nimic doresc, mă duc să-l păstrați simplu 1034 00:51:11,780 --> 00:51:14,570 și, de asemenea, numesc q, doar pentru simplitate. 1035 00:51:14,570 --> 00:51:17,650 >> Și acum am de gând să fac ceva un pic mai mult. 1036 00:51:17,650 --> 00:51:22,600 Pe câmpurile de formular aici, voi add ceea ce se numește o tratare a evenimentului. 1037 00:51:22,600 --> 00:51:32,260 Pe submit, vreau să sun o funcție numită validați. 1038 00:51:32,260 --> 00:51:35,520 Aceasta nu există încă, acest lucru cuvânt, sau acest verb Validați, 1039 00:51:35,520 --> 00:51:38,560 pentru că ceea ce am de gând să fac aici este acum adăugați un cod. 1040 00:51:38,560 --> 00:51:42,200 >> Am de gând să spun funcția validați. 1041 00:51:42,200 --> 00:51:48,280 Voi indentare acest lucru și se adaugă un alt acoladă aici și altul aici. 1042 00:51:48,280 --> 00:51:50,110 Luați în considerare ceea ce acest lucru se face acum. 1043 00:51:50,110 --> 00:51:54,210 Am now-- gândesc la acest lucru ca a creat meu propria piesă de puzzle care nu a făcut anterior 1044 00:51:54,210 --> 00:51:57,440 există, și l-am numit acest puzzle piesă piesa de puzzle valideaza. 1045 00:51:57,440 --> 00:52:01,620 Scopul său în viață este de a executa cele patru linii de cod in interior. 1046 00:52:01,620 --> 00:52:04,940 >> În cazul în care document.getElementById asa conceptual, 1047 00:52:04,940 --> 00:52:09,380 care va intra în elementul, elementul HTML al cărui unic 1048 00:52:09,380 --> 00:52:12,930 Ideea este doar q, iar apoi chiar dacă sintaxa arată un pic ciudat, 1049 00:52:12,930 --> 00:52:16,430 că egal este egal înseamnă pur și simplu la egal la egal. 1050 00:52:16,430 --> 00:52:20,950 Deci asta înseamnă că, dacă elementul respectiv cu identificatorul unic al q, atunci când ajuns, 1051 00:52:20,950 --> 00:52:25,700 nu are nici o valoare, doar egal cu citat unquote, nimic acolo, 1052 00:52:25,700 --> 00:52:27,170 atunci ce vreau să fac? 1053 00:52:27,170 --> 00:52:29,360 Vreau să țipe la utilizator. 1054 00:52:29,360 --> 00:52:31,710 >> Și nu vom merge detaliu aici. 1055 00:52:31,710 --> 00:52:32,960 Mă duc să se întoarcă false. 1056 00:52:32,960 --> 00:52:34,380 Aceasta este o eroare. 1057 00:52:34,380 --> 00:52:38,746 Altfel, am de gând să se întoarcă adevărat. 1058 00:52:38,746 --> 00:52:40,120 Deci, fie ea a lucrat sau nu a făcut-o. 1059 00:52:40,120 --> 00:52:41,800 Fals sau adevărat. 1060 00:52:41,800 --> 00:52:47,820 Și acum, dacă n-am făcut nici o greșeală, lasă-mă să salveze și reîncărcați asta. 1061 00:52:47,820 --> 00:52:50,940 Și lasă-mă doar dublu control prin care Nu am, de fapt, a face orice greșeli de tipar, 1062 00:52:50,940 --> 00:52:52,690 așa că nu ma fac de ras. 1063 00:52:52,690 --> 00:52:54,240 Hai să vedem dacă asta funcționează. 1064 00:52:54,240 --> 00:52:56,930 >> Așa că acum am de gând să tastați pisici. 1065 00:52:56,930 --> 00:52:59,421 Încă mai funcționează, sau jumătate de lucrări, cel puțin. 1066 00:52:59,421 --> 00:53:02,170 Acum, lasă-mă să-l reîncărcați, și acum să mă încercați să trimiteți fără a introduce 1067 00:53:02,170 --> 00:53:05,860 anything-- la naiba, sa rupt. 1068 00:53:05,860 --> 00:53:06,430 Un moment. 1069 00:53:06,430 --> 00:53:09,380 1070 00:53:09,380 --> 00:53:12,660 Lasă-mă să deschid consola, [Inaudibil] jurnal, reîncărcați pagina. 1071 00:53:12,660 --> 00:53:13,576 Lasă-mă să încerc acest lucru din nou. 1072 00:53:13,576 --> 00:53:17,000 1073 00:53:17,000 --> 00:53:17,501 Oh, la naiba. 1074 00:53:17,501 --> 00:53:18,000 Am uitat. 1075 00:53:18,000 --> 00:53:18,630 Am făcut o greșeală de scriere. 1076 00:53:18,630 --> 00:53:20,760 Îmi amintesc ce este. 1077 00:53:20,760 --> 00:53:21,350 .valoare. 1078 00:53:21,350 --> 00:53:27,060 Am vrut sa spun daca valoarea a elementului a cărui identitate este q 1079 00:53:27,060 --> 00:53:29,800 este egal cu asta, apoi tipa la utilizator. 1080 00:53:29,800 --> 00:53:31,870 >> Deci, acum lasă-mă din nou, țineți respirația. 1081 00:53:31,870 --> 00:53:33,480 Începem. 1082 00:53:33,480 --> 00:53:34,130 Acolo mergem. 1083 00:53:34,130 --> 00:53:35,010 Vă rugăm să introduceți o interogare. 1084 00:53:35,010 --> 00:53:36,840 Așa că nu mă lasă prin. 1085 00:53:36,840 --> 00:53:40,210 Pot fi un fel de jucaus cu acest lucru, și în loc de verificare pentru nici o valoare, 1086 00:53:40,210 --> 00:53:46,720 Pot să spun ceva de genul, nu mai căutați pentru pisici, 1087 00:53:46,720 --> 00:53:51,150 iar acum putem lăsa mai jucăuș căutarea de utilizator pentru câini în cazul în care el sau ea 1088 00:53:51,150 --> 00:53:57,490 vrea, sau dacă mă duc aici și caută pisici, acum nu mai pot. 1089 00:53:57,490 --> 00:53:58,690 >> Deci, ce-i MENIUL aici? 1090 00:53:58,690 --> 00:54:03,010 Așa că unul, am introdus în lumea noastră de HTML și CSS, 1091 00:54:03,010 --> 00:54:04,320 funcționalitate de programare. 1092 00:54:04,320 --> 00:54:06,300 Pot de fapt acum să ia decizii în cod. 1093 00:54:06,300 --> 00:54:10,570 Anterior, tot ce am putut face este de a marca conținut text sau conținut grafic 1094 00:54:10,570 --> 00:54:13,080 și spune ce să se uite cum ar fi și în cazul în care să fie afișate. 1095 00:54:13,080 --> 00:54:16,650 Acum pot să întreb de fapt întrebări ale paginii web 1096 00:54:16,650 --> 00:54:20,010 și să ia decizii bazate pe pe ea, și cere utilizatorului 1097 00:54:20,010 --> 00:54:22,780 dacă am nevoie să țipe la el sau ea. 1098 00:54:22,780 --> 00:54:28,740 >> Așa că hai să încercăm ceva pe cont propriu cu asta. 1099 00:54:28,740 --> 00:54:33,350 Hai, lasă-mă să deschid următorul slide aici, și doar un singur lucru subliniez. 1100 00:54:33,350 --> 00:54:37,250 La fel ca și cu CSS, putem lua în calcul afară codul nostru JavaScript într-un fișier separat, 1101 00:54:37,250 --> 00:54:40,660 puteți face același lucru cu JavaScript ca și cu CSS. 1102 00:54:40,660 --> 00:54:44,520 Și utilizați că utilizând o sursă atribut tag-ul script-ul. 1103 00:54:44,520 --> 00:54:46,540 Dar nu vom complica lucrurile de acum. 1104 00:54:46,540 --> 00:54:50,440 În schimb, dacă ai putea du-te la nu această pagină, 1105 00:54:50,440 --> 00:55:02,690 dar-- lasă-mă să se deplaseze în jurul valorii de acest lucru în order-- du-te la, dacă ai putea, această pagină aici. 1106 00:55:02,690 --> 00:55:03,592 Această adresă URL aici. 1107 00:55:03,592 --> 00:55:04,550 Este în slide-uri de azi. 1108 00:55:04,550 --> 00:55:07,133 S-ar putea să reîncărcați deoarece Am adăugat un cuplu de lucru. 1109 00:55:07,133 --> 00:55:09,970 1110 00:55:09,970 --> 00:55:13,890 >> Dar du-te acolo în cazul în care unele puzzle-uri așteaptă. 1111 00:55:13,890 --> 00:55:16,670 Și acest lucru ne va da o șansă, într-un context ușor mai distractiv, 1112 00:55:16,670 --> 00:55:20,610 pentru a se ocupa cu unele JavaScript. 1113 00:55:20,610 --> 00:55:25,505 Iar când ajungi acolo, Voi explica ce așteaptă. 1114 00:55:25,505 --> 00:55:47,350 1115 00:55:47,350 --> 00:55:47,850 A lua verde. 1116 00:55:47,850 --> 00:56:03,063 1117 00:56:03,063 --> 00:56:03,562 Set albastru. 1118 00:56:03,562 --> 00:56:11,030 1119 00:56:11,030 --> 00:56:13,930 Seturi verde, seturi de culoare roșie. 1120 00:56:13,930 --> 00:56:19,220 1121 00:56:19,220 --> 00:56:20,220 Oops. 1122 00:56:20,220 --> 00:56:22,330 Scuze. 1123 00:56:22,330 --> 00:56:27,630 >> Acesta este gradul nostru documentație pentru această provocare. 1124 00:56:27,630 --> 00:56:29,920 Și acest lucru va funcționa după cum urmează. 1125 00:56:29,920 --> 00:56:33,340 Deci, ce ai pe această pagină este un întreg buchet 1126 00:56:33,340 --> 00:56:38,024 de puzzle-uri de imagini de către un amic la Universitatea Stanford. 1127 00:56:38,024 --> 00:56:41,190 Așa că ceea ce vedeți aici este aproape un fel de una dintre acele puzzle-uri ochiul magic, 1128 00:56:41,190 --> 00:56:43,815 dar dacă pur și simplu te uiți la ea, nimic nu va ieși la tine. 1129 00:56:43,815 --> 00:56:46,000 Mai degrabă, este ceva ascunse în această imagine. 1130 00:56:46,000 --> 00:56:47,790 Și, dacă este ascuns în felul următor. 1131 00:56:47,790 --> 00:56:51,740 Imagini, după cum probabil știți, poate fi compusă din doar trei culori. 1132 00:56:51,740 --> 00:56:53,346 Unele roșu, unele albastru, și unele verde. 1133 00:56:53,346 --> 00:56:55,220 Si putem face toate culorile curcubeului 1134 00:56:55,220 --> 00:56:57,570 prin amestecarea celor trei culori într-un fel. 1135 00:56:57,570 --> 00:57:01,940 >> Deci, acest lucru arată în mare parte verde și albastru, dar, după cum spune Nick aici, 1136 00:57:01,940 --> 00:57:04,060 această imagine puzzle de fier este un puzzle. 1137 00:57:04,060 --> 00:57:06,780 Acesta conține o imagine ceva celebru, cu toate acestea, 1138 00:57:06,780 --> 00:57:08,310 imaginea a fost distorsionată. 1139 00:57:08,310 --> 00:57:11,500 Obiectul este celebru în valorile roșii. 1140 00:57:11,500 --> 00:57:13,810 Valorile Cu toate acestea, de culoare roșie au fost toate împărțit la 10. 1141 00:57:13,810 --> 00:57:16,230 Deci, ei sunt prea mici, cu un factor de 10. 1142 00:57:16,230 --> 00:57:18,280 Cu alte cuvinte, Nick a luat o imagine originală, 1143 00:57:18,280 --> 00:57:21,500 și el desaturated toate a roșu de la ea, 1144 00:57:21,500 --> 00:57:23,850 scăderea cantității de roșu cerneală, dacă va fi, în ea. 1145 00:57:23,850 --> 00:57:26,060 >> Valorile albastre și verzi sunt doar lipsite de sens, 1146 00:57:26,060 --> 00:57:30,000 valori aleatoare, aka proiectat de zgomot să mascheze imaginea reală. 1147 00:57:30,000 --> 00:57:32,250 Deci, ce Nick a făcut a fost el atenuat roșu și apoi 1148 00:57:32,250 --> 00:57:34,380 el doar a aruncat la întâmplare cantități de albastru și verde 1149 00:57:34,380 --> 00:57:37,590 la imaginea la fel de obscure ceea ce este de fapt încă acolo. 1150 00:57:37,590 --> 00:57:41,089 Trebuie să anulați aceste distorsiuni pentru a descoperi imaginea. 1151 00:57:41,089 --> 00:57:44,255 În primul rând, setați toate valorile albastru și verde la zero, pentru a le scoate din drum, 1152 00:57:44,255 --> 00:57:48,700 si uita-te la rezultatul. Apoi multiplica fiecare valoare roșu de 10, 1153 00:57:48,700 --> 00:57:51,720 scalarea înapoi până la aproximativ valoarea sa finală. 1154 00:57:51,720 --> 00:57:53,035 Care este celebrul obiect? 1155 00:57:53,035 --> 00:57:57,920 >> Așa că toți aveți acest dreptunghi în browser-ul dvs. chiar acum. 1156 00:57:57,920 --> 00:58:00,830 Și observați că există unele Codul inițial, ca să spunem așa. 1157 00:58:00,830 --> 00:58:04,370 Acesta este codul JavaScript care Nick a scris pentru tine. 1158 00:58:04,370 --> 00:58:07,250 Și observați că există o linie în mijloc că 1159 00:58:07,250 --> 00:58:10,380 începe cu o bară oblică slash, asta ceea ce se numește în general, un comentariu. 1160 00:58:10,380 --> 00:58:14,660 Aceasta înseamnă că este o frază programator care nu are nici o semnificație funcțională. 1161 00:58:14,660 --> 00:58:16,520 Este doar un reper vizual la om. 1162 00:58:16,520 --> 00:58:18,670 >> Astfel încât să puteți merge mai departe și ștergeți doar acea linie, 1163 00:58:18,670 --> 00:58:22,214 și fie super nu atent la șterge sau modifica orice altceva. 1164 00:58:22,214 --> 00:58:25,130 Și lasă-mă să te plimbi prin ceea ce acest cod face și voi lăsa 1165 00:58:25,130 --> 00:58:28,580 pentru a vă pentru a descoperi imaginea secretă. 1166 00:58:28,580 --> 00:58:32,226 Această primă linie de aici că am doar vă oferă evidențiate următoarele. 1167 00:58:32,226 --> 00:58:34,100 Pe partea stângă, ai ceea ce se numește 1168 00:58:34,100 --> 00:58:39,140 o variabilă care Nick are în mod arbitrar, dar, în mod rezonabil numit im pentru imagine. 1169 00:58:39,140 --> 00:58:41,660 Pe partea dreaptă a semnului egal, 1170 00:58:41,660 --> 00:58:45,240 el spune da-mi o nouă citat, unquote "imagine simplu". 1171 00:58:45,240 --> 00:58:49,680 >> simplă imagine, în acest context, este ceea ce se numește o clasă, ei bine, 1172 00:58:49,680 --> 00:58:53,910 e ca un fel de class-- punct de vedere tehnic un prototype-- dar într-adevăr, 1173 00:58:53,910 --> 00:58:58,000 acest lucru dă-mi un obiect nou, conținutul de care sunt fișierul, 1174 00:58:58,000 --> 00:58:59,610 fier-puzzle.png. 1175 00:58:59,610 --> 00:59:03,190 Cu alte cuvinte, Nick a creat această noțiune a unei simple imagini 1176 00:59:03,190 --> 00:59:05,920 astfel încât să putem, pentru pedagogice scopuri, joaca cu imaginea 1177 00:59:05,920 --> 00:59:09,790 și schimba roșu său, valori verde și albastru. 1178 00:59:09,790 --> 00:59:11,750 >> Si cum facem asta? 1179 00:59:11,750 --> 00:59:15,360 Această sintaxă oarecum criptic aici este un fel de bloc de repetare 1180 00:59:15,360 --> 00:59:19,140 că unii dintre voi au văzut în Scratch mai devreme astăzi, în cazul în care vă puteți repeta de 10 ori. 1181 00:59:19,140 --> 00:59:22,220 În acest caz, Nick nu are hardcoded un număr similar de 10. 1182 00:59:22,220 --> 00:59:28,020 În schimb el spune, inițializat o variabilă numită x 0, 1183 00:59:28,020 --> 00:59:33,180 verificați dacă x este mai mic lățimea imaginii. 1184 00:59:33,180 --> 00:59:38,160 >> Și, ca să fie mai corectă, imaginea este cea variabilă, punct înseamnă du-te în interiorul acestuia 1185 00:59:38,160 --> 00:59:40,900 și a obține lățimea sa, și apoi Paranteză deschis, închis 1186 00:59:40,900 --> 00:59:43,687 Paranteză este doar modul de programator de a spune acest lucru este o funcție. 1187 00:59:43,687 --> 00:59:44,520 Aceasta este o procedură. 1188 00:59:44,520 --> 00:59:46,430 Aceasta este funcționalitatea altcineva a scris. 1189 00:59:46,430 --> 00:59:48,570 Folosiți-l și dă-mi înapoi un răspuns. 1190 00:59:48,570 --> 00:59:53,610 Și apoi x ++ este un mod de fantezie spunând: După ce ați făcut acest lucru o dată, 1191 00:59:53,610 --> 00:59:55,850 incrementa x cu 1. 1192 00:59:55,850 --> 00:59:58,760 Cu alte cuvinte, aceasta este modul un programator 1193 00:59:58,760 --> 01:00:05,760 de a induce o buclă care este mergi la itera 1194 01:00:05,760 --> 01:00:10,410 toate coloanele dintr-o imagine. 1195 01:00:10,410 --> 01:00:14,790 >> O imagine este doar o grilă de puncte, rânduri și coloane de puncte. 1196 01:00:14,790 --> 01:00:18,270 Aceasta este o modalitate de recapitularea peste toate aceste coloane. 1197 01:00:18,270 --> 01:00:20,770 Și în interior, între timp, suntem iterarea 1198 01:00:20,770 --> 01:00:24,030 peste înălțimile, aici și aici și aici. 1199 01:00:24,030 --> 01:00:29,442 Deci, aceasta este doar o modalitate de traipsing, aproape ca o mașină de scris școală veche, 1200 01:00:29,442 --> 01:00:32,230 pentru a merge puțin peste imagine de ansamblu iterativ. 1201 01:00:32,230 --> 01:00:36,370 Chiar și asta nu e chiar în întregime clar, trebuie doar să ia pe credință pentru acum, 1202 01:00:36,370 --> 01:00:38,880 că aceste trei linii de cod împreună sunt 1203 01:00:38,880 --> 01:00:43,090 va permite sa arati iterativ la fiecare pixel, fiecare punct din imagine. 1204 01:00:43,090 --> 01:00:43,790 >> Ce este un pixel? 1205 01:00:43,790 --> 01:00:46,250 Ei bine, să fie clar, dacă ne uităm la original și mări, 1206 01:00:46,250 --> 01:00:49,060 dacă ai pus într-adevăr ochii pe ecranul computerului, asta 1207 01:00:49,060 --> 01:00:53,510 doar o grămadă de puncte, mai multe mii de puncte ambalate împreună acolo. 1208 01:00:53,510 --> 01:00:56,180 Și ce sunt pe cale de a face? 1209 01:00:56,180 --> 01:00:59,240 Fiecare dintre aceste puncte, o definiție finală, 1210 01:00:59,240 --> 01:01:06,350 este rezultatul a ceea ce este în general numit RGB, roșu, verde, albastru, care 1211 01:01:06,350 --> 01:01:09,940 din nou, pot fi combinate pentru a da orice număr de culori. 1212 01:01:09,940 --> 01:01:13,200 >> De fapt, dacă vă amintiți de la mulți, acum mulți ani, 1213 01:01:13,200 --> 01:01:17,320 ecrane de proiecție, cum ar fi aceste lucruri folosit pentru a avea nici un obiectiv, ci trei. 1214 01:01:17,320 --> 01:01:20,700 Unul dintre ei a scuipat afară de lumină roșie, una dintre le-a scuipat afară de lumină verde, unul dintre ele 1215 01:01:20,700 --> 01:01:21,600 scuipat afară de lumină albastră. 1216 01:01:21,600 --> 01:01:24,391 Și, dacă ai fost într-o școală de mijloc ca și cum am fost în cazul în care acestea nu au fost niciodată 1217 01:01:24,391 --> 01:01:27,000 aliniate în mod corespunzător, ați fost vizionarea de filme întotdeauna istorie 1218 01:01:27,000 --> 01:01:29,770 care au fost ușor distorsionate, deoarece cele trei culori nu au fost 1219 01:01:29,770 --> 01:01:30,970 care combină în mod corespunzător. 1220 01:01:30,970 --> 01:01:36,330 >> Dar se pare că fiecare dintre aceste valori roșu, verde și albastru, 1221 01:01:36,330 --> 01:01:37,980 poate avea un număr asociat cu ei. 1222 01:01:37,980 --> 01:01:42,500 De exemplu, 0 pentru roșu înseamnă că nu roșu, 0 pentru verde nu înseamnă verde, 1223 01:01:42,500 --> 01:01:45,120 și 0 pentru albastru înseamnă că nu albastru. 1224 01:01:45,120 --> 01:01:49,403 Deci, dacă aveți nici un roșu, nici verde, și nici un albastru, ce culoare ai? 1225 01:01:49,403 --> 01:01:51,009 >> AUDIENTA: [inaudibil] 1226 01:01:51,009 --> 01:01:52,800 DAVID MALAN: Tu ar Sper, e alb. 1227 01:01:52,800 --> 01:01:55,333 Din păcate, acest operates-- pare rău? 1228 01:01:55,333 --> 01:01:56,380 >> AUDIENTA: [inaudibil] 1229 01:01:56,380 --> 01:01:58,630 DAVID MALAN: Deci, de fapt, au negru, în acest caz. 1230 01:01:58,630 --> 01:02:01,530 Deci, dacă aveți nici unul dintre acestea Culorile activate, aveți negru. 1231 01:02:01,530 --> 01:02:06,510 Cu toate acestea, dacă aveți, să zicem o mulțime dintre ele, cum ar fi o mulțime de roșu, 255 din ea, 1232 01:02:06,510 --> 01:02:10,340 o mulțime de verde, și o mulțime de albastru, care este de culoare albă. 1233 01:02:10,340 --> 01:02:12,230 Deci, acestea sunt cele două extreme. 1234 01:02:12,230 --> 01:02:17,460 Deci, prin această logică, dacă am o mulțime de roșu și verde, nu și nici un albastru, 1235 01:02:17,460 --> 01:02:18,485 ce culoare este asta? 1236 01:02:18,485 --> 01:02:19,360 AUDIENTA: [inaudibil] 1237 01:02:19,360 --> 01:02:20,610 DAVID MALAN: Corect, evident. 1238 01:02:20,610 --> 01:02:25,940 Și apoi nici roșu, mulți verde, nu albastru, și apoi 1239 01:02:25,940 --> 01:02:29,590 dacă te have-- bine, vom termina doar ea, doar pentru că, dar acest lucru, desigur, 1240 01:02:29,590 --> 01:02:31,350 acum, este albastru. 1241 01:02:31,350 --> 01:02:33,030 Și acum puteți combina aceste culori. 1242 01:02:33,030 --> 01:02:36,430 Acum, ca o parte, în cazul în care oricare dintre voi aveți făcut vreodată unele de design real site-ul, 1243 01:02:36,430 --> 01:02:38,360 de fapt, s-ar putea vezi simboluri de genul asta. 1244 01:02:38,360 --> 01:02:42,030 FFF-- și de fapt, este probabil, nici măcar asta. 1245 01:02:42,030 --> 01:02:44,380 Este FFFFFF. 1246 01:02:44,380 --> 01:02:48,970 >> Văzut cineva vreodată lui E F și și A through-- deci se pare, 1247 01:02:48,970 --> 01:02:52,970 am vorbit ieri despre zecimal, și astăzi, un fel de aproximativ zecimal. 1248 01:02:52,970 --> 01:02:54,570 Astăzi am vorbit despre binar. 1249 01:02:54,570 --> 01:02:59,010 Se pare că, hexazecimal este un foarte Sistemul de bază comun pentru a utiliza în calcul. 1250 01:02:59,010 --> 01:03:04,960 Binar este de două, zecimală este de 10, hex este de 16. 1251 01:03:04,960 --> 01:03:08,640 Și se pare, cum puteți conta în hexazecimal? 1252 01:03:08,640 --> 01:03:11,620 Zero, unu, doi, trei, patru, cinci, șase, șapte, opt, 1253 01:03:11,620 --> 01:03:14,730 nouă, ce utilizați după nouă? 1254 01:03:14,730 --> 01:03:16,600 Care este numărul următor? 1255 01:03:16,600 --> 01:03:19,180 Am folosit deja la zero. 1256 01:03:19,180 --> 01:03:20,570 Am nevoie de 16 dintre acestea. 1257 01:03:20,570 --> 01:03:25,770 Zero, unu, doi, trei, patru, cinci, șase, șapte, opt, nouă, 1258 01:03:25,770 --> 01:03:27,520 aveți nevoie de convenție arbitrară. 1259 01:03:27,520 --> 01:03:30,810 >> Și ce omenirea a decis ceva timp în urmă că după nouă vine litera 1260 01:03:30,810 --> 01:03:34,450 A și apoi B și apoi C. DECI ESTE POSIBIL modul în care conta în hexazecimal 1261 01:03:34,450 --> 01:03:37,040 este zero, unu, doi, trei, patru, cinci, șase, șapte, opt, nouă, 1262 01:03:37,040 --> 01:03:42,880 A, B, C, D, E, F, și că va conta tu tot drumul, se pare, la 15. 1263 01:03:42,880 --> 01:03:47,850 Deci zero la 15 este zero, prin F. Acum, de ce este semnificativ faptul că? 1264 01:03:47,850 --> 01:03:51,570 Ei bine, când ai două F, asta e modul în care exprima 255. 1265 01:03:51,570 --> 01:03:54,350 >> Atât de mult timp poveste scurtă, în lumea Photoshop, 1266 01:03:54,350 --> 01:03:57,299 că software-ul de design grafic, în lumea de dezvoltare web, 1267 01:03:57,299 --> 01:03:59,590 în cazul în care aveți o mulțime de culori, desigur, să se joace cu, 1268 01:03:59,590 --> 01:04:02,350 de multe ori programatori vor exprima cele în hexazecimal, 1269 01:04:02,350 --> 01:04:05,260 doar pentru că ea tinde să fie un pic mai simplu. 1270 01:04:05,260 --> 01:04:07,850 Chiar dacă la prima vedere este mult mai complexă. 1271 01:04:07,850 --> 01:04:11,590 >> Deci, în orice caz, acest lucru este important pentru că Nick la Stanford 1272 01:04:11,590 --> 01:04:15,100 ne-a dat șase bucăți de funcționalitate că, programatorii înmugurite, 1273 01:04:15,100 --> 01:04:17,060 va avea acum posibilitatea de a utiliza. 1274 01:04:17,060 --> 01:04:19,960 Construit în acest web pagină este șase funcții, 1275 01:04:19,960 --> 01:04:21,820 șase proceduri pe care Nick le-a scris. 1276 01:04:21,820 --> 01:04:26,800 Trei dintre ei veți primi un număr, un roșu, verde, sau o valoare albastră. 1277 01:04:26,800 --> 01:04:28,787 Trei dintre ei vor stabili acea valoare. 1278 01:04:28,787 --> 01:04:30,620 Și aceste subliniere sunt doar Substituenți, 1279 01:04:30,620 --> 01:04:32,600 astfel încât trebuie să știi ce sunt alea. 1280 01:04:32,600 --> 01:04:36,240 >> Deci, cu aceste trei funcții, prima dintre aceste lucruri 1281 01:04:36,240 --> 01:04:39,190 va fi un x-coordonate, iar a doua dintre aceste lucruri 1282 01:04:39,190 --> 01:04:40,700 va fi un y-coordonate. 1283 01:04:40,700 --> 01:04:44,650 Cu alte cuvinte, care punctează, care pixel vrei să obțineți verdele, 1284 01:04:44,650 --> 01:04:46,480 obține albastrul, pentru a primi roșu de. 1285 01:04:46,480 --> 01:04:51,440 Și apoi aici, acest lucru va fi x, acest lucru va fi o valoare y, 1286 01:04:51,440 --> 01:04:55,379 iar acest lucru va fi un număr. 1287 01:04:55,379 --> 01:04:57,170 Așa că hai să facem primul line acestea împreună 1288 01:04:57,170 --> 01:05:00,220 și apoi voi lăsa să vă pentru a încerca să deducă restul. 1289 01:05:00,220 --> 01:05:03,100 Asa ca pe instrucțiunile Pe aceasta pagina, avem nevoie 1290 01:05:03,100 --> 01:05:08,960 pentru a crește roșu cu un factor de 10, și avem nevoie pentru a elimina verde 1291 01:05:08,960 --> 01:05:09,930 și scoateți albastru. 1292 01:05:09,930 --> 01:05:12,410 Să începem cu acestea din urmă scenarii. 1293 01:05:12,410 --> 01:05:17,760 Așa că, dacă vreau, și voi indentare prin utilizarea unor spații, 1294 01:05:17,760 --> 01:05:22,291 dacă vreau să setați roșu, verde, sau valoarea albastră, 1295 01:05:22,291 --> 01:05:23,540 Mă duc să fac următoarele. 1296 01:05:23,540 --> 01:05:31,280 >> Imagine, im.setBlue, și apoi bazat pe instrucțiunile mele aici, 1297 01:05:31,280 --> 01:05:36,700 ce trei lucruri ar trebui să tip în interiorul paranteze acum? 1298 01:05:36,700 --> 01:05:41,960 Am nevoie de valoarea x ELE, valoare y, și ce număr 1299 01:05:41,960 --> 01:05:48,770 ar trebui să pun aici dacă vreau să scap din senin, bazat pe această poveste aici? 1300 01:05:48,770 --> 01:05:49,630 Doar zero. 1301 01:05:49,630 --> 01:05:52,420 Dacă vreau nici un albastru, eu sunt doar O să-l schimbe la zero. 1302 01:05:52,420 --> 01:05:54,465 >> Acum să recapitulăm ce acest lucru este de a face. 1303 01:05:54,465 --> 01:05:56,970 1304 01:05:56,970 --> 01:06:01,170 Am aici pe aceste top liniile doilea și al treilea, 1305 01:06:01,170 --> 01:06:04,080 Am susținut două bucle, bucle imbricate, dacă vă 1306 01:06:04,080 --> 01:06:08,360 va, care vor avea ca efect de a progresa de la stânga la dreapta, 1307 01:06:08,360 --> 01:06:11,590 de sus în jos peste tot x valorile și toate valorile y. 1308 01:06:11,590 --> 01:06:15,167 Pentru că, din nou, o imagine este doar o grilă de rânduri și coloane. 1309 01:06:15,167 --> 01:06:17,000 Deci, acest lucru se întâmplă pentru a obține scăpa de toate albastru. 1310 01:06:17,000 --> 01:06:18,627 Lasă-mă să plece în următoarea linie pentru a tine. 1311 01:06:18,627 --> 01:06:20,043 Cum pot să scap de toate verdele? 1312 01:06:20,043 --> 01:06:23,747 1313 01:06:23,747 --> 01:06:25,140 >> AUDIENTA: [inaudibil] 1314 01:06:25,140 --> 01:06:26,151 >> DAVID MALAN: Nisa. 1315 01:06:26,151 --> 01:06:28,260 >> AUDIENTA: [inaudibil] 1316 01:06:28,260 --> 01:06:30,850 >> DAVID MALAN: Nisa. 1317 01:06:30,850 --> 01:06:36,120 Și voi depărta, și pur și simplu să ia de îngrijire de care nu ați făcut nici greșelile de scriere. 1318 01:06:36,120 --> 01:06:39,390 Și dacă ești confortabil cu ceea ce ai făcut, 1319 01:06:39,390 --> 01:06:42,936 mergeți mai departe și faceți clic pe butonul A alerga / Salvați și vedeți ce veți obține. 1320 01:06:42,936 --> 01:06:46,982 1321 01:06:46,982 --> 01:06:48,690 Și din nou, ne-am făcut doar trei modificări. 1322 01:06:48,690 --> 01:06:52,130 Am șters că mai întâi comentează și la înlocuit 1323 01:06:52,130 --> 01:06:53,575 cu aceste două linii de cod. 1324 01:06:53,575 --> 01:06:55,742 1325 01:06:55,742 --> 01:06:58,450 Și este în regulă, dacă aveți nevoie pentru a lovi butonul Run / Salvați câteva ori 1326 01:06:58,450 --> 01:07:01,190 pentru a repara ceva. 1327 01:07:01,190 --> 01:07:03,610 >> Și, de asemenea, permiteți-mi mări mea cod astfel încât să puteți transcrie. 1328 01:07:03,610 --> 01:07:04,110 Bun. 1329 01:07:04,110 --> 01:07:08,720 Văd că Andrew are ce pare a fi o greșeală. 1330 01:07:08,720 --> 01:07:11,110 El tocmai a primit un mare negru dreptunghi pe ecranul său. 1331 01:07:11,110 --> 01:07:13,120 Mai are cineva un dreptunghi negru mare? 1332 01:07:13,120 --> 01:07:13,390 >> AUDIENTA: Da. 1333 01:07:13,390 --> 01:07:14,360 >> DAVID MALAN: Big dreptunghi negru? 1334 01:07:14,360 --> 01:07:16,068 OK, deci hai să ne gândim despre ce înseamnă asta. 1335 01:07:16,068 --> 01:07:20,560 Noi am spus că la zero, zero, zero, astfel încât nici verde, nici roșu, nici albastru, 1336 01:07:20,560 --> 01:07:21,980 este de gând să vă dau negru. 1337 01:07:21,980 --> 01:07:24,467 Și se pare că de cele mai multe laptop-uri noastre 1338 01:07:24,467 --> 01:07:25,800 pur și simplu nu au destulă fidelitate. 1339 01:07:25,800 --> 01:07:27,750 Nu poți să spui acolo destul este de fapt ceva acolo. 1340 01:07:27,750 --> 01:07:30,340 Și dacă ai un fel de poate apleca ecranul înainte și înapoi, 1341 01:07:30,340 --> 01:07:32,850 Poate vezi o ceva acolo? 1342 01:07:32,850 --> 01:07:34,820 Poate, un fel de, un fel de? 1343 01:07:34,820 --> 01:07:36,640 Nu e perfect negru. 1344 01:07:36,640 --> 01:07:38,050 >> AUDIENTA: [inaudibil] 1345 01:07:38,050 --> 01:07:39,510 >> DAVID MALAN: spoilere! 1346 01:07:39,510 --> 01:07:42,610 Există o anumită culoare roșie acolo, dar amintiți-vă de caietul de sarcini 1347 01:07:42,610 --> 01:07:44,940 a problemei, Nick atenuat. 1348 01:07:44,940 --> 01:07:47,860 El îl desaturated oarecum, dar nu tot drumul la zero. 1349 01:07:47,860 --> 01:07:51,670 Deci, dacă vrem să mărească suma de culoare roșie, permiteți-mi propun acest truc. 1350 01:07:51,670 --> 01:07:53,750 Permiteți-mi să măriți pe ecran. 1351 01:07:53,750 --> 01:07:58,678 Și lasă-mă să merg mai departe și spun Suma este egală cu im.getRed (x, y). 1352 01:07:58,678 --> 01:08:02,440 1353 01:08:02,440 --> 01:08:05,790 >> Această linie de cod dă-mi ceva numit o variabilă. 1354 01:08:05,790 --> 01:08:09,643 Am arbitrar, dar, fără îndoială, în mod rezonabil numita variabila mea ceea ce, 1355 01:08:09,643 --> 01:08:10,143 aparent? 1356 01:08:10,143 --> 01:08:13,530 1357 01:08:13,530 --> 01:08:14,340 Cantitate. 1358 01:08:14,340 --> 01:08:14,980 Suma doar. 1359 01:08:14,980 --> 01:08:16,960 Aș fi putut să-l numit tot ce vreau, dar eu sunt 1360 01:08:16,960 --> 01:08:19,490 folosind această altă funcție pe care am descris mai devreme 1361 01:08:19,490 --> 01:08:25,359 pentru a obține cantitatea de culoare roșie la x virgulă y. 1362 01:08:25,359 --> 01:08:27,520 De ce am făcut asta? 1363 01:08:27,520 --> 01:08:30,004 Ce vrei să faci aici? 1364 01:08:30,004 --> 01:08:32,910 1365 01:08:32,910 --> 01:08:33,619 Ai nevoie să add-- 1366 01:08:33,619 --> 01:08:34,493 AUDIENTA: [inaudibil] 1367 01:08:34,493 --> 01:08:36,279 DAVID MALAN: Da, poate se înmulțește cu 10. 1368 01:08:36,279 --> 01:08:38,862 Și, dacă nu știi asta, sunt O să meargă mai departe și de a face acest lucru. 1369 01:08:38,862 --> 01:08:42,060 Mă duc să merg mai departe și să zicem, vreau cantitatea de roșu 1370 01:08:42,060 --> 01:08:46,550 Vreau să fiu orice este la roșu, ori 10, 1371 01:08:46,550 --> 01:08:50,330 și steaua, asterisc dvs. pe Tastatura este the-- nu utilizați x. 1372 01:08:50,330 --> 01:08:51,569 Utilizați steaua. 1373 01:08:51,569 --> 01:08:55,350 Așa ai multiplica lucrurile în cele mai multe limbaje de programare. 1374 01:08:55,350 --> 01:08:59,790 >> Așa că în conformitate cu intuiția lui Kareem, stocate în această variabilă numită sumă, 1375 01:08:59,790 --> 01:09:03,649 este cât de mult roșu vreau la locația xy. 1376 01:09:03,649 --> 01:09:11,500 Cum, acum, nu-i fac asta exprimate în pixeli au acel număr? 1377 01:09:11,500 --> 01:09:12,859 Ați făcut deja acest lucru înainte. 1378 01:09:12,859 --> 01:09:17,666 Ați setat verde și albastru la nici o valoare, la zero. 1379 01:09:17,666 --> 01:09:18,540 AUDIENTA: [inaudibil] 1380 01:09:18,540 --> 01:09:20,040 DAVID MALAN: Da, bine tu nu vrei să 10. 1381 01:09:20,040 --> 01:09:21,460 Ai făcut deja calculele aici. 1382 01:09:21,460 --> 01:09:24,779 Deci, suntem obtinerea de valoarea de roșu, care este un număr mic, probabil. 1383 01:09:24,779 --> 01:09:26,180 Ne înmulțirea prin 10. 1384 01:09:26,180 --> 01:09:29,139 Ce vrei să faci cu suma variabilă acum? 1385 01:09:29,139 --> 01:09:30,130 >> AUDIENTA: [inaudibil] 1386 01:09:30,130 --> 01:09:30,880 >> DAVID MALAN: Nisa. 1387 01:09:30,880 --> 01:09:34,616 Deci, ce im.set--? 1388 01:09:34,616 --> 01:09:35,640 >> AUDIENTA: setRed. 1389 01:09:35,640 --> 01:09:39,760 >> DAVID MALAN: setRed, la locația xy. 1390 01:09:39,760 --> 01:09:40,260 Da. 1391 01:09:40,260 --> 01:09:41,200 Si doar suma. 1392 01:09:41,200 --> 01:09:44,257 Cu alte cuvinte, o variabilă este un substituent temporar 1393 01:09:44,257 --> 01:09:45,840 pe care le puteți pune orice vrei. 1394 01:09:45,840 --> 01:09:48,680 Se întâmplă să fim o pune număr în ea, în acest moment. 1395 01:09:48,680 --> 01:09:51,569 L-am înmulțit cu 10 pentru a face mai mare. 1396 01:09:51,569 --> 01:09:56,480 Și acum înlocuind variabila ca și al treilea argument, sau de intrare 1397 01:09:56,480 --> 01:09:57,810 pentru a stabili roșu. 1398 01:09:57,810 --> 01:10:00,440 Și, astfel că, odată ce termin, și să ia notă 1399 01:10:00,440 --> 01:10:02,330 din semi-colonul și paranteze. 1400 01:10:02,330 --> 01:10:06,290 >> Mergeți mai departe și faceți clic rulați / salvați din nou, și tu 1401 01:10:06,290 --> 01:10:10,690 ar trebui să vadă, în mod magic, ceea ce a fost de fapt Acolo. [? Arwa,?] Ce e acolo? 1402 01:10:10,690 --> 01:10:16,412 Turnul Eiffel, cu drepturi depline roșu, nu destul de întuneric. 1403 01:10:16,412 --> 01:10:17,870 ar trebui să fie mai evident acum, da? 1404 01:10:17,870 --> 01:10:18,840 O.K. 1405 01:10:18,840 --> 01:10:20,215 Andrew, caseta nu mai neagră? 1406 01:10:20,215 --> 01:10:21,090 AUDIENTA: [inaudibil] 1407 01:10:21,090 --> 01:10:22,180 DAVID MALAN: Bine. 1408 01:10:22,180 --> 01:10:23,610 Așa că voi păstra acest lucru pe ecran. 1409 01:10:23,610 --> 01:10:27,010 Dacă doriți ca să se joace cu acest mai târziu, voi recrea asta pentru tine. 1410 01:10:27,010 --> 01:10:29,140 Dar, acest cod aici a făcut exact asta. 1411 01:10:29,140 --> 01:10:31,460 De ce să nu facem o alta. 1412 01:10:31,460 --> 01:10:33,880 Lasă-mă să defilați în jos ușor. 1413 01:10:33,880 --> 01:10:36,760 >> Deci, în acest caz, proiectorul nu într-adevăr o fac justiție. 1414 01:10:36,760 --> 01:10:40,486 Dar, pe ecranele, probabil au o cutie foarte roșu și foarte negru. 1415 01:10:40,486 --> 01:10:42,610 Acest lucru, de asemenea, este un puzzle care arată ceva faimos. 1416 01:10:42,610 --> 01:10:44,193 Cu toate acestea, imaginea a fost distorsionată. 1417 01:10:44,193 --> 01:10:47,740 Adevărata imagine, de data aceasta, este în valorile albastre și verzi. 1418 01:10:47,740 --> 01:10:51,820 Cu toate acestea, toate au fost împărțite cu 20 astfel încât valorile sunt foarte mici. 1419 01:10:51,820 --> 01:10:54,660 Valorile roșii sunt doar numere aleatoare, zgomot. 1420 01:10:54,660 --> 01:10:57,190 Anulați aceste distorsiuni pentru a descoperi imaginea adevărată. 1421 01:10:57,190 --> 01:10:59,200 >> Așa că Nick atunci îți spune ce să faci. 1422 01:10:59,200 --> 01:11:04,290 Setați valorile roșii la zero, și atunci nu strica ce este. 1423 01:11:04,290 --> 01:11:07,110 Apoi se multiplica albastru și valori verzi cu 20. 1424 01:11:07,110 --> 01:11:09,820 Așa că e aproape același program ca și mai înainte, 1425 01:11:09,820 --> 01:11:11,380 dar tu esti o inversare a procesului. 1426 01:11:11,380 --> 01:11:13,780 Și îmi voi pune codul meu de la înainte de pe ecran, în cazul 1427 01:11:13,780 --> 01:11:16,650 pe care doriți să-l trimită la sau să se joace în continuare cu asta. 1428 01:11:16,650 --> 01:11:18,100 Lasă-mă să mărești. 1429 01:11:18,100 --> 01:11:21,450 Dar rezolva imagine de cupru puzzle, numărul doi. 1430 01:11:21,450 --> 01:11:37,623 1431 01:11:37,623 --> 01:11:40,580 >> AUDIENTA: [inaudibil] 1432 01:11:40,580 --> 01:11:44,010 >> DAVID MALAN: OK, deci asta sunt eu nu va da cat mai multe indicii. 1433 01:11:44,010 --> 01:11:47,220 Așa că am would-- oh, hai a se vedea, ai o greșeală de scriere aici. 1434 01:11:47,220 --> 01:11:49,621 Așa că ține minte, acest lucru aici de fapt, trebuie să meargă acolo. 1435 01:11:49,621 --> 01:11:52,870 Deci, ce aș propune, dacă doriți să se concentreze pe asta, e răspunsul. 1436 01:11:52,870 --> 01:11:57,060 Dacă doriți ca să transcrie asta, ar trebui să primească mai întâi o prelucrare. 1437 01:11:57,060 --> 01:11:59,910 Și apoi puteți utiliza ca inspirație pentru al doilea. 1438 01:11:59,910 --> 01:12:02,230 Frumos. 1439 01:12:02,230 --> 01:12:02,730 Bun. 1440 01:12:02,730 --> 01:12:05,430 1441 01:12:05,430 --> 01:12:08,180 >> Iar pentru curioși, acesta este un exemplu simplu 1442 01:12:08,180 --> 01:12:11,080 o știință sau o artă numita steganografie, 1443 01:12:11,080 --> 01:12:14,100 arta de a ascunde informații în imagini. 1444 01:12:14,100 --> 01:12:16,890 De obicei, imaginile ar putea fi watermarked foarte ostentativ 1445 01:12:16,890 --> 01:12:19,500 cu un logo în partea de jos colt, dar în mod clar, tu 1446 01:12:19,500 --> 01:12:22,070 poate fi mult mai sofisticate cu privire la aceasta și de fapt 1447 01:12:22,070 --> 01:12:25,050 ascunde alte imagini în imaginile într-un fel cu această tehnică. 1448 01:12:25,050 --> 01:12:59,890 1449 01:12:59,890 --> 01:13:05,770 >> Dura încă 30 de secunde, iar apoi vom cel puțin anunțe ceea ce ar trebui să vedeți. 1450 01:13:05,770 --> 01:13:08,330 Și eu voi părăsi a treia unul ca un exercițiu la domiciliu, 1451 01:13:08,330 --> 01:13:11,353 dacă doriți mai mult de un provocare acest week-end. 1452 01:13:11,353 --> 01:13:18,240 1453 01:13:18,240 --> 01:13:20,390 Și cred că Andrew s-ar putea au ajuns mai întâi. 1454 01:13:20,390 --> 01:13:22,645 Care este a doua imagine, Andrew? 1455 01:13:22,645 --> 01:13:23,920 >> Audiența: Statuia Libertății. 1456 01:13:23,920 --> 01:13:28,500 >> DAVID MALAN: Statuia Libertății va fi răspunsul la această dată. 1457 01:13:28,500 --> 01:13:31,140 Deci, din nou, doar câteva simplu exemple, al cărui scop 1458 01:13:31,140 --> 01:13:35,040 este de a oferi un sentiment de modul în care le-am tradus Scratch în imagini 1459 01:13:35,040 --> 01:13:40,410 blocuri pentru a mai enervant și mai mult cod complicat, dar toate ideile 1460 01:13:40,410 --> 01:13:42,980 sunt în continuare exact la fel, deși cu introducerea 1461 01:13:42,980 --> 01:13:48,380 acum a noțiunii de variabilă, fiind capabil de a stoca ceva temporar. 1462 01:13:48,380 --> 01:13:51,750 >> Hai să facem mai mult de un hands-on, doar pentru a conecta puncte 1463 01:13:51,750 --> 01:13:53,880 la ceva un pic mai mult lumea reală. 1464 01:13:53,880 --> 01:13:56,610 Când sunteți pregătit, dacă ai putea du-te la această adresă URL de pe ecran. 1465 01:13:56,610 --> 01:14:00,610 Asta e, de asemenea, în copie de către dvs. a slide-uri, developers.google.com/maps~~V. 1466 01:14:00,610 --> 01:14:03,660 Hai să facem de fapt ceva reală, ca să spunem așa, pe web 1467 01:14:03,660 --> 01:14:07,600 folosind Google Maps API, sau interfața de programare a aplicației, 1468 01:14:07,600 --> 01:14:08,940 în felul următor. 1469 01:14:08,940 --> 01:14:12,341 >> Google, la fel ca multe companii, oferă o mulțime de funcții gratuite 1470 01:14:12,341 --> 01:14:14,840 pe care le puteți utiliza pentru a construi dvs. de aplicatii proprii interesante. 1471 01:14:14,840 --> 01:14:18,890 De fapt, dacă v-ați folosit vreodată Uber pentru a obține un taxi sau o mașină, 1472 01:14:18,890 --> 01:14:21,640 probabil știți că Uber are o hartă și arată mașinile pe ea. 1473 01:14:21,640 --> 01:14:24,870 Aceasta este, la fel de cel mai bine ca pot spune, Google Maps API. 1474 01:14:24,870 --> 01:14:28,884 Ele sunt, de fapt, folosind hărți Google, dar uber nu este o companie de cartografiere, 1475 01:14:28,884 --> 01:14:31,050 și nici nu ar fi ca un problemă deosebit de interesant 1476 01:14:31,050 --> 01:14:33,510 pentru a rezolva pe partea de sus a acestora problemă service auto. 1477 01:14:33,510 --> 01:14:35,510 Și, astfel încât acestea sunt în picioare, din nou, pe umeri 1478 01:14:35,510 --> 01:14:37,520 alții, Google în acest caz. 1479 01:14:37,520 --> 01:14:42,850 Deci, ei folosesc hărți Google ci și propriul lor servicii de autoturisme și alte astfel de caracteristici. 1480 01:14:42,850 --> 01:14:47,770 >> Așa că vom profita din aceasta pentru a face următoarele. 1481 01:14:47,770 --> 01:14:50,230 Și, dacă am mers prea repede, sună-mă peste într-un moment. 1482 01:14:50,230 --> 01:14:53,500 Fericit pentru a recapitula unele din lucrurile de imagine. 1483 01:14:53,500 --> 01:14:56,290 Ar trebui să te vezi la o pagină ca aceasta. 1484 01:14:56,290 --> 01:14:58,230 Așa că Google este frumos, și acestea sunt printre cele mai bune 1485 01:14:58,230 --> 01:15:01,364 de a furniza nu numai API-uri, dar API-uri gratuite pe care le 1486 01:15:01,364 --> 01:15:02,780 poate juca cu sau utilizați în comerț. 1487 01:15:02,780 --> 01:15:06,450 Ele încep să vă taxăm în cazul în care utilizarea dvs. este mare, dar am mers înainte în avans 1488 01:15:06,450 --> 01:15:10,490 și ne-a semnat pentru un cont gratuit că, sperăm, 10 calculatoare 1489 01:15:10,490 --> 01:15:12,480 nu ne va descalifica dintr-o dată. 1490 01:15:12,480 --> 01:15:14,320 Deci sperăm că acest lucru demonstrație va funcționa. 1491 01:15:14,320 --> 01:15:18,840 >> Și observați că acestea au API-uri pentru Android, iOS, servicii web și aplicații web, 1492 01:15:18,840 --> 01:15:19,620 oricare ar fi. 1493 01:15:19,620 --> 01:15:20,700 Să ne concentrăm pe web. 1494 01:15:20,700 --> 01:15:26,560 Așa că faceți clic pe roz caseta, web, și că vă va duce, sperăm, într-o pagină 1495 01:15:26,560 --> 01:15:27,630 aici. 1496 01:15:27,630 --> 01:15:29,335 Și au luat o grămadă de API-uri. 1497 01:15:29,335 --> 01:15:31,210 Și poate fi un pic copleșitoare la început, 1498 01:15:31,210 --> 01:15:33,000 dar voi ne conduce prin ceea ce ne dorim. 1499 01:15:33,000 --> 01:15:38,500 >> În partea stângă sus este Google Maps JavaScript API, API-ul JavaScript. 1500 01:15:38,500 --> 01:15:40,380 Deci, mergeți mai departe și faceți clic pe asta. 1501 01:15:40,380 --> 01:15:49,360 Și asta te va duce acum la următoarea pagină, demo-uri și exemple de cod. 1502 01:15:49,360 --> 01:15:51,190 Lasă-mă aici micșora. 1503 01:15:51,190 --> 01:15:56,300 Și lasă-mă să ne sa-- defilați în jos unde se spune pași start rapid. 1504 01:15:56,300 --> 01:15:57,970 Ecranul dvs. ar trebui să arate ca a mea. 1505 01:15:57,970 --> 01:16:01,130 >> Și există doi pași, pentru a primi o cheie și să înceapă în curs de dezvoltare. 1506 01:16:01,130 --> 01:16:04,190 Am făcut deja primul pas pentru ne, printr-o cheie așa-numitele. 1507 01:16:04,190 --> 01:16:05,320 Și acest lucru este o idee comună. 1508 01:16:05,320 --> 01:16:09,210 O cheie API este, în general, doar un număr aleatoriu mare sau un șir 1509 01:16:09,210 --> 01:16:11,130 pe care se presupune pentru a lipi în codul, 1510 01:16:11,130 --> 01:16:15,280 astfel că Google știe cine sunteți atunci când pe care îl utilizați serviciul lor, API-ul lor. 1511 01:16:15,280 --> 01:16:17,370 Nu înseamnă că suntem fiind acuzat nimic. 1512 01:16:17,370 --> 01:16:21,030 Și acum, faceți clic pe, în loc de unul, faceți clic a începe în curs de dezvoltare. 1513 01:16:21,030 --> 01:16:25,990 Dacă ați putea să-mi val peste dacă nu sunt sigur în cazul în care ne aflăm. 1514 01:16:25,990 --> 01:16:28,040 >> Deci, vom răzuibile doar suprafață, aici, dar ce 1515 01:16:28,040 --> 01:16:31,000 Am crezut că ar fi convingătoare este de a avea de fapt noi toți, 1516 01:16:31,000 --> 01:16:34,240 folosind Cloud9 într-o singură fereastră și acest tutorial într-o altă fereastră, 1517 01:16:34,240 --> 01:16:37,120 vă permite să obțineți de fapt propria noastră aplicare și funcționare 1518 01:16:37,120 --> 01:16:40,920 care conține un Google personalizat harta în propria noastră pagină web, 1519 01:16:40,920 --> 01:16:43,010 și apoi se adaugă una sau două caracteristici. 1520 01:16:43,010 --> 01:16:45,520 Dar vom răzuibile doar suprafață a ceea ce putem face. 1521 01:16:45,520 --> 01:16:47,020 >> Deci, doar o verificare bun-simț rapid. 1522 01:16:47,020 --> 01:16:49,740 Este toată lumea de la această pagină, Google Maps API JavaScript? 1523 01:16:49,740 --> 01:16:50,872 Ar trebui să spun la început. 1524 01:16:50,872 --> 01:16:53,330 Noi nu vom merge prin totul prin orice mijloace. 1525 01:16:53,330 --> 01:16:58,090 OK, într-o altă filă, dacă nu au deschis, se duc în Cloud9 1526 01:16:58,090 --> 01:17:03,500 și du-te la doar o filă nouă, în cele din urmă. 1527 01:17:03,500 --> 01:17:11,070 Deci, din nou, c9.io de ieri, c9.io, și pur și simplu a crea un nou fișier. 1528 01:17:11,070 --> 01:17:13,500 Și mergeți mai departe și apel l oricum doriți. 1529 01:17:13,500 --> 01:17:16,495 Am sunat map.html a mea. 1530 01:17:16,495 --> 01:17:17,870 Sună-l ceva se termină în .html. 1531 01:17:17,870 --> 01:17:23,930 1532 01:17:23,930 --> 01:17:26,580 Și ar trebui să fie aproximativ în cazul în care sunt în acest proces 1533 01:17:26,580 --> 01:17:31,470 cu doar un prompt care clipește într-un gol tab-ul numit ceva de genul map.html. 1534 01:17:31,470 --> 01:17:35,808 1535 01:17:35,808 --> 01:17:38,148 Sau fișier, nou fișier de această dată. 1536 01:17:38,148 --> 01:17:41,960 1537 01:17:41,960 --> 01:17:48,000 >> Și acum, peste pe Google Maps API JavaScript, 1538 01:17:48,000 --> 01:17:50,010 vom sări peste lectură prin toate acest text. 1539 01:17:50,010 --> 01:17:53,760 Dar observați că lumea salut este într-adevăr, peste tot, tu-l vezi acum. 1540 01:17:53,760 --> 01:17:58,020 Bună ziua lume are această mare colorat de exemplu, dintr-un întreg buchet de HTML. 1541 01:17:58,020 --> 01:18:03,590 Mergeți mai departe și copiați și inserați numai că HTML, deci de tipul doc la partea de sus 1542 01:18:03,590 --> 01:18:08,810 tot drumul la tag-ul HTML aproape, du-te înainte și copia toate that-- din nou, 1543 01:18:08,810 --> 01:18:14,430 că e sub lumea salut example-- și inserați acest lucru în fila Cloud9, 1544 01:18:14,430 --> 01:18:17,996 astfel încât acum ecranul ar trebui să arate cam ca a mea. 1545 01:18:17,996 --> 01:18:22,280 1546 01:18:22,280 --> 01:18:24,520 >> Iar tu poți salva, dar nu-l încărcați încă. 1547 01:18:24,520 --> 01:18:26,290 Hai să ne uităm mai întâi la codul și a vedea dacă am 1548 01:18:26,290 --> 01:18:29,110 nu se poate deduce sau de a învăța de la ceea ce este Google 1549 01:18:29,110 --> 01:18:30,860 a avut-ne copiați și lipiți orbește. 1550 01:18:30,860 --> 01:18:33,334 Ei doresc doar pentru a ajuta, literalmente, să ne început, 1551 01:18:33,334 --> 01:18:35,500 dar nu e atât de mult complexitate de fapt acolo. 1552 01:18:35,500 --> 01:18:40,100 1553 01:18:40,100 --> 01:18:42,210 Orice întrebări cu încă? 1554 01:18:42,210 --> 01:18:43,790 Suntem în siguranță pentru a merge înainte? 1555 01:18:43,790 --> 01:18:44,330 O.K. 1556 01:18:44,330 --> 01:18:46,800 >> Atât de repede, hai să facem unele verificări rapide. corectitudine 1557 01:18:46,800 --> 01:18:48,800 Linie una din ceea ce am a se vedea, și, sperăm, vă 1558 01:18:48,800 --> 01:18:51,710 a se vedea, ce înseamnă asta, DOCTYPE HTML? 1559 01:18:51,710 --> 01:18:52,385 Kareem, amintesc? 1560 01:18:52,385 --> 01:18:53,260 AUDIENTA: [inaudibil] 1561 01:18:53,260 --> 01:18:53,968 DAVID MALAN: Da. 1562 01:18:53,968 --> 01:18:54,870 Aici vine HTML 5. 1563 01:18:54,870 --> 01:18:57,950 Între timp, linia doi pe ecran aici înseamnă browser-ul hei, 1564 01:18:57,950 --> 01:18:59,482 aici vine HTML actuale. 1565 01:18:59,482 --> 01:19:01,440 Linia trei este hei browser-ul, aici vine capul. 1566 01:19:01,440 --> 01:19:04,260 Linia patru este, desigur, hei browser-ul, aici vine titlul. 1567 01:19:04,260 --> 01:19:07,780 Ce face linia de cinci? 1568 01:19:07,780 --> 01:19:09,930 De fapt, acest lucru nu într-adevăr face nimic pentru noi. 1569 01:19:09,930 --> 01:19:13,340 În acest caz, doar redimensionează pagina unui implicit. Linia șase, 1570 01:19:13,340 --> 01:19:16,140 nu am vorbit, dar specifică codificarea caracterelor. 1571 01:19:16,140 --> 01:19:19,181 Există diferite moduri de a codifica fișiere, în special pentru limbi străine. 1572 01:19:19,181 --> 01:19:21,100 UTF-8 doar tinde să fie implicit. 1573 01:19:21,100 --> 01:19:26,580 >> Deci, acum vom vedea în linie șapte prin 16, unele CSS. 1574 01:19:26,580 --> 01:19:29,260 Și chiar dacă nu ne-am mai văzut toate aceste lucruri, înainte, 1575 01:19:29,260 --> 01:19:30,810 putem deduce un fel de. 1576 01:19:30,810 --> 01:19:37,075 Așa că linia opt înseamnă, hei browser-ul, se aplică toate caracteristicile următoare la care două etichete, 1577 01:19:37,075 --> 01:19:37,575 aparent? 1578 01:19:37,575 --> 01:19:40,650 1579 01:19:40,650 --> 01:19:41,701 HTML si corpul textului. 1580 01:19:41,701 --> 01:19:43,200 Astfel încât virgula este lucru nou acolo. 1581 01:19:43,200 --> 01:19:46,140 Si asta e doar un mod de specificând mai multe tag-uri dintr-o dată. 1582 01:19:46,140 --> 01:19:47,640 >> Apoi ne-am luat acolade. 1583 01:19:47,640 --> 01:19:51,170 Așa că se pare că, acest lucru spune browser-ului, face înălțimea paginii 100%. 1584 01:19:51,170 --> 01:19:54,170 Deci, chiar dacă există foarte puține conținut, face întreaga pagină, 1585 01:19:54,170 --> 01:19:55,530 face lucrul umple pagina. 1586 01:19:55,530 --> 01:19:57,524 Face harta în cele din urmă umple pagina. 1587 01:19:57,524 --> 01:19:58,690 Marja de, ce înseamnă asta? 1588 01:19:58,690 --> 01:20:01,559 Asta e, de obicei, cum ar fi arbitrar spațiu alb în jurul marginilor 1589 01:20:01,559 --> 01:20:04,350 că unele designer de browser-ul doar a decis să fie acolo, deoarece 1590 01:20:04,350 --> 01:20:05,540 un fel de face ca lucrurile arata mai curat. 1591 01:20:05,540 --> 01:20:06,498 Dar noi nu vrem asta. 1592 01:20:06,498 --> 01:20:08,710 Ne dorim ca harta merge tot drumul spre margini. 1593 01:20:08,710 --> 01:20:10,930 Padding, similare în spirit marjelor. 1594 01:20:10,930 --> 01:20:14,980 Marjele înseamnă exterior, mijloace de umplutură în interior, dar este același tip de afacere. 1595 01:20:14,980 --> 01:20:17,520 Este un pic de un tampon între tine și marginile. 1596 01:20:17,520 --> 01:20:21,170 >> Și apoi, linia 13 este un bun șansă pentru o scurtă trecere în revistă. 1597 01:20:21,170 --> 01:20:26,440 Ce hartă semn ascuțit Adică, sau o hartă hashtag înseamnă? 1598 01:20:26,440 --> 01:20:29,650 Ce înseamnă că se referă, în principiu? 1599 01:20:29,650 --> 01:20:31,485 >> AUDIENTA: [inaudibil] 1600 01:20:31,485 --> 01:20:32,360 DAVID MALAN: Exact. 1601 01:20:32,360 --> 01:20:36,900 Această proprietate, această proprietate CSS se aplică doar un singur lucru, tag-ul HTML 1602 01:20:36,900 --> 01:20:41,180 care are un ID de citat, unquote "harta". 1603 01:20:41,180 --> 01:20:44,460 Iar acum să prezinte rapid, parcurgere până la partea de jos a fișierului, care 1604 01:20:44,460 --> 01:20:49,860 nu este prea departe, și o notificare on-line 19, în cazul în care o lipiți exact cum am făcut-o, 1605 01:20:49,860 --> 01:20:53,405 linia 19 are doar un div, care este diviziune a paginii, pe care ieri am 1606 01:20:53,405 --> 01:20:54,820 numita o regiune dreptunghiulară. 1607 01:20:54,820 --> 01:20:55,820 Nu are nimic în ea. 1608 01:20:55,820 --> 01:20:57,550 Este o etichetă deschisă, aproape tag-ul. 1609 01:20:57,550 --> 01:20:59,490 Dar are un ID unic. 1610 01:20:59,490 --> 01:21:02,090 >> Deci, ce pare a fi se întâmplă aici este Google 1611 01:21:02,090 --> 01:21:05,880 pregateste pagina noastra de web pentru a au o înălțime totală de 100%, 1612 01:21:05,880 --> 01:21:09,680 și fără umplutură, fără margini, deoarece ceea ce vom pune înăuntru 1613 01:21:09,680 --> 01:21:13,647 din acest div, a cărui ID unic este hartă, este o hartă încorporată actuale. 1614 01:21:13,647 --> 01:21:15,480 Si vrem sa umple pagina și nu doar 1615 01:21:15,480 --> 01:21:17,560 fie unele mic dreptunghi în mijloc. 1616 01:21:17,560 --> 01:21:24,220 Așa că linia 14 subliniază, în mod similar, harta în sine ar trebui să aibă o înălțime de 100%. 1617 01:21:24,220 --> 01:21:29,220 >> Deci, acum observați între liniile 20 și 28, acest lucru este codul JavaScript. 1618 01:21:29,220 --> 01:21:33,020 Și acest lucru este, chiar dacă este sintactic un pic ciudat, 1619 01:21:33,020 --> 01:21:34,730 acolo nu este tot atât de mult se întâmplă aici. 1620 01:21:34,730 --> 01:21:39,310 În linia 21, acest lucru este de declarare ceva numit o variabilă. 1621 01:21:39,310 --> 01:21:42,030 În loc de a numindu-l sume, așa cum am făcut-o mai înainte, 1622 01:21:42,030 --> 01:21:44,500 noi spunem mai precis var, ceea ce înseamnă că doar variabilă. 1623 01:21:44,500 --> 01:21:46,520 Am putea fi folosit ca in Codul lui Nick, dar el nu a făcut-o, așa că am 1624 01:21:46,520 --> 01:21:48,190 nu sa deranjat să facă asta, fie. 1625 01:21:48,190 --> 01:21:50,240 Este o variabilă numită hartă, și apoi există 1626 01:21:50,240 --> 01:21:53,360 o funcție care este aparent numit initMap. 1627 01:21:53,360 --> 01:21:55,780 >> Deci, acest lucru este ca propriul nostru personalizat puzzle piesă în Scratch. 1628 01:21:55,780 --> 01:21:58,830 Am creat o bucată de functionalitate numita initMap, 1629 01:21:58,830 --> 01:22:00,980 și puteți deduce un fel de ce se petrece aici. 1630 01:22:00,980 --> 01:22:02,930 Pe partea stângă, avem o variabilă, 1631 01:22:02,930 --> 01:22:06,000 așa că vom pune următoarele lucru în interiorul acelei variabile, 1632 01:22:06,000 --> 01:22:07,362 de la dreapta la stânga. 1633 01:22:07,362 --> 01:22:11,940 Pe partea dreaptă, spune, hei browser-ul, da-mi o nouă hartă Google. 1634 01:22:11,940 --> 01:22:16,490 Si google.maps.map este doar un mod de funky de precizând că această funcționalitate 1635 01:22:16,490 --> 01:22:19,790 face parte din Google Maps. 1636 01:22:19,790 --> 01:22:23,010 >> După paranteze, le-am văzut acest lucru înainte, hei browser-ul, pentru a primi 1637 01:22:23,010 --> 01:22:29,210 mi-elementele din pagina, tag-ul în pagină al cărei unic ID-ul este-- 1638 01:22:29,210 --> 01:22:30,710 >> AUDIENTA: [inaudibil] 1639 01:22:30,710 --> 01:22:31,790 >> DAVID MALAN: --map. 1640 01:22:31,790 --> 01:22:35,770 Și ce se întâmplă, bine, această linie împreună, linia 23, 1641 01:22:35,770 --> 01:22:38,630 este, în esență, spunând: hei browser-ul, du-te pe mine 1642 01:22:38,630 --> 01:22:42,800 că div gol pe pagina a cărui ID unic este hartă, 1643 01:22:42,800 --> 01:22:45,600 pentru că vreau să inserați în it-- injectați în ea, 1644 01:22:45,600 --> 01:22:49,520 dacă ai will-- o grămadă de conținut care se întâmplă să vină de pe web, 1645 01:22:49,520 --> 01:22:50,427 ulterior. 1646 01:22:50,427 --> 01:22:52,010 Și Google face toate astea pentru noi. 1647 01:22:52,010 --> 01:22:55,350 >> Deci, din nou, la sfârșitul zilei, avem acest exemplu de abstracție. 1648 01:22:55,350 --> 01:22:58,610 Nu am nici o idee despre ce o hartă este sau cum să pună în aplicare un API hartă. 1649 01:22:58,610 --> 01:22:59,460 Nu avem nevoie. 1650 01:22:59,460 --> 01:23:02,740 Trebuie doar să spunem hartă în cazul în care să se pună, și se lasă 1651 01:23:02,740 --> 01:23:04,880 cele care stau la baza punerii în aplicare Detalii la Google. 1652 01:23:04,880 --> 01:23:08,190 Acum există aparent două bucăți de date 1653 01:23:08,190 --> 01:23:11,940 că acest exemplu este oferind API Google. 1654 01:23:11,940 --> 01:23:16,450 Se pare că centrul hărții, iar nivelul de zoom, ca să spunem așa. 1655 01:23:16,450 --> 01:23:21,390 >> Si nimeni nu recunoaște aceste coordonate, latitudine și longitudine? 1656 01:23:21,390 --> 01:23:24,364 Probabil că nu, dar putem merge înapoi la tutorial, literalmente a se vedea. 1657 01:23:24,364 --> 01:23:25,780 Dar vom vedea în doar o clipă. 1658 01:23:25,780 --> 01:23:29,880 Nivelul de zoom este o valoare între, eu nu fac știu, unul din 13 sau ceva de genul asta. 1659 01:23:29,880 --> 01:23:32,880 Ea are doar de a face cu cât de departe ești mărire sau afară, și asta este. 1660 01:23:32,880 --> 01:23:35,690 Și acum, la sfârșitul lui pagina, linia Notă 29-- 1661 01:23:35,690 --> 01:23:39,960 este un pic urât, deoarece ea wraps-- această linie de cod 1662 01:23:39,960 --> 01:23:44,570 este ceea ce le descarcă în browser-ul API-ul real al Google. 1663 01:23:44,570 --> 01:23:47,500 Tot codul pe care la Google inginerii au scris că punerea în aplicare a 1664 01:23:47,500 --> 01:23:50,000 toată această caracteristică a hărților incorporabile. 1665 01:23:50,000 --> 01:23:51,470 >> Acum, să nu se schimbe nimic. 1666 01:23:51,470 --> 01:23:54,761 În cazul în care sunteți în urma de-a lungul, mergeți mai departe și salvați doar acel fișier, dacă aveți într-adevăr, 1667 01:23:54,761 --> 01:23:55,760 ceea ce am. 1668 01:23:55,760 --> 01:23:57,370 Du-te la URL-ul său. 1669 01:23:57,370 --> 01:23:59,820 Aveți posibilitatea să faceți clic pe butonul Executare în sus și de sus, care va spune 1670 01:23:59,820 --> 01:24:03,050 vă adresa URL a serverului dvs. de web din nou. 1671 01:24:03,050 --> 01:24:06,010 Și vă va duce la o nouă filă. 1672 01:24:06,010 --> 01:24:11,910 În cazul în care faceți clic pe Deschidere pentru map.html, iar cotele sunt esti 1673 01:24:11,910 --> 01:24:15,520 mergi la a lua o alertă, un mesaj de eroare, da? 1674 01:24:15,520 --> 01:24:18,570 Mesaj de eroare, mesajul de eroare? 1675 01:24:18,570 --> 01:24:21,170 >> Deci, din păcate, eroarea Mesajul nu este acela edificator 1676 01:24:21,170 --> 01:24:23,890 excepția cazului în care de fapt, deschideți consolă, acea filă specială noi 1677 01:24:23,890 --> 01:24:27,110 ținut de deschidere ieri și un pic mai devreme. 1678 01:24:27,110 --> 01:24:29,445 Dar, am dat peste acest lucru mai devreme, așa că am deja 1679 01:24:29,445 --> 01:24:30,820 a dat seama ce soluția este. 1680 01:24:30,820 --> 01:24:34,440 În slide-uri de astăzi, sau mai degrabă, în Cloud9, anunț 1681 01:24:34,440 --> 01:24:36,430 că noi nu am făcut ceva în mod deliberat. 1682 01:24:36,430 --> 01:24:40,690 Observați că această etichetă script în linia 29, dacă ai citit prin ea, 1683 01:24:40,690 --> 01:24:44,440 e ca maps.googleapis.com/ ceva, ceva, ceva, 1684 01:24:44,440 --> 01:24:46,430 apoi observați pe cineva, unul dintre dezvoltatorii, 1685 01:24:46,430 --> 01:24:50,040 a scris în toate de capital litere, cheia API. 1686 01:24:50,040 --> 01:24:51,700 >> Avem nevoie pentru a lipi ceva acolo. 1687 01:24:51,700 --> 01:24:53,450 Și acest lucru a fost etapa Am făcut-o pentru noi, înainte, 1688 01:24:53,450 --> 01:24:57,190 și din nou, s-ar putea lista neagra ne, dacă dintr-o dată, 12 sau mai multe dintre noi 1689 01:24:57,190 --> 01:24:59,470 începe să utilizați aceeași cheie, dar hai să vedem ce se întâmplă. 1690 01:24:59,470 --> 01:25:03,030 Așa că, dacă te duci în astăzi slide-uri, un diapozitiv mai târziu, există 1691 01:25:03,030 --> 01:25:07,070 acest șir de caractere foarte funky, cu aspect de text. 1692 01:25:07,070 --> 01:25:12,230 Mergeți mai departe și trebuie doar să copiați acest lucru și lipiți-l în cazul în care se spune cheia API. 1693 01:25:12,230 --> 01:25:15,120 Asta e cea m-am înscris. 1694 01:25:15,120 --> 01:25:17,700 >> Și, cu siguranță, nu încercați introducându-l manual, 1695 01:25:17,700 --> 01:25:21,210 pentru că se simte plină cu greșeli de tipar, cu potențial. 1696 01:25:21,210 --> 01:25:23,260 Deci, doar copiați și lipiți asta. 1697 01:25:23,260 --> 01:25:26,090 Și se va face pe linia mai mult, dar acum, trebuie doar să fie clar, 1698 01:25:26,090 --> 01:25:29,540 ar trebui să arate un pic mai mult ca aceasta, în cazul în care cheia nu este egal cu 1699 01:25:29,540 --> 01:25:32,200 capitalizată țipat la tine. 1700 01:25:32,200 --> 01:25:34,810 Salvați pagina, du-te înapoi la cealaltă filă, reîncărcați, 1701 01:25:34,810 --> 01:25:36,770 și sperăm să vedem o hartă de unde? 1702 01:25:36,770 --> 01:25:37,790 >> AUDIENTA: Australia. 1703 01:25:37,790 --> 01:25:38,748 >> DAVID MALAN: Australia. 1704 01:25:38,748 --> 01:25:41,200 Așa că se pare că cei care sunt Coordonatele GPS Australia. 1705 01:25:41,200 --> 01:25:44,491 Și lasă-mă să se plimbe doar pentru o clipă și de a ajuta pe cineva care nu e chiar acolo, 1706 01:25:44,491 --> 01:25:47,729 dar permiteți-mi propun, prin intermediul Google, găsiți coordonatele GPS ale propriului tău natal 1707 01:25:47,729 --> 01:25:48,770 sau propria tara de origine. 1708 01:25:48,770 --> 01:25:51,436 Și, probabil, Google poate transforma acest lucru în sus, sau Wikipedia vă pot spune. 1709 01:25:51,436 --> 01:25:54,410 Dar, alege două valori diferite pentru latitudine și longitudine, 1710 01:25:54,410 --> 01:25:57,530 du-te înapoi și să le lipiți, și apoi să reîncărcați pagina după salvare 1711 01:25:57,530 --> 01:26:00,718 și vezi dacă poți avea un harta pentru propria ta natal. 1712 01:26:00,718 --> 01:26:04,500 1713 01:26:04,500 --> 01:26:08,042 >> Iar când ai terminat cu că, follow-up challenge-- 1714 01:26:08,042 --> 01:26:11,250 și eu voi da un pic mai puțin de direcție, în mod deliberat, astfel încât în ​​mod deliberat 1715 01:26:11,250 --> 01:26:13,791 trebuie să se lupte pentru un cuplu minute cu documentația, 1716 01:26:13,791 --> 01:26:18,740 schimba harta pentru a nu fi acest lucru desenelor animate implicit, dar o harta prin satelit. 1717 01:26:18,740 --> 01:26:24,600 Deci, tu vezi de fapt din satelit imagini în loc de culori frumoase. 1718 01:26:24,600 --> 01:26:29,710 >> Și indiciul voi da se schimba tipul hărții. 1719 01:26:29,710 --> 01:26:33,084 Du-te înapoi la faptul că obținerea a început pagina de inspirație. 1720 01:26:33,084 --> 01:26:40,599 1721 01:26:40,599 --> 01:26:42,390 După cum s-ar putea fi spicuite, dacă sunteți în căutarea, 1722 01:26:42,390 --> 01:26:44,250 există atât de multe lucruri pe care le puteți face. 1723 01:26:44,250 --> 01:26:46,380 Unii dintre voi aveți deja a schimbat tipul de hartă. 1724 01:26:46,380 --> 01:26:49,890 Dar vă puteți do--, de exemplu, permiteți-mi du-te la ceva ce am făcut-o pentru curs 1725 01:26:49,890 --> 01:26:52,050 I teach-- maps.cs50.net. 1726 01:26:52,050 --> 01:26:53,470 Unul dintre undergrads noastre a făcut acest lucru. 1727 01:26:53,470 --> 01:26:58,890 Noi in centru harta de peste Harvard Yard suprapune peste toate aceste nume de constructii, 1728 01:26:58,890 --> 01:27:01,070 și am avut să-l adăugați acest lucru. 1729 01:27:01,070 --> 01:27:04,270 Așa că, dacă doresc să caute, de exemplu, Matthews Hall, 1730 01:27:04,270 --> 01:27:05,730 avem un meniu mic drop-down. 1731 01:27:05,730 --> 01:27:09,080 Și cred că folosește bootstrap, bibliotecă am discutat mai devreme pentru acest lucru. 1732 01:27:09,080 --> 01:27:12,190 Și, dacă faceți clic pe Matthews Hall, imediat 1733 01:27:12,190 --> 01:27:14,790 sare harta pentru o anumită locație, și arată 1734 01:27:14,790 --> 01:27:16,440 ai o imagine în acest mic pop-up. 1735 01:27:16,440 --> 01:27:18,670 >> Dar chiar și această mică pop-up, nu ne-am implementat. 1736 01:27:18,670 --> 01:27:27,521 În cazul în care defilează în jos pe obtinerea nostru a început pagina și căutați info ferestre, 1737 01:27:27,521 --> 01:27:29,770 veți vedea că unele dintre funcționalitate te 1738 01:27:29,770 --> 01:27:31,561 se pot adăuga, deși cu o complexitate pic mai mult, 1739 01:27:31,561 --> 01:27:33,970 este ceva ce se numește o fereastră de informații. 1740 01:27:33,970 --> 01:27:37,190 Și, dacă fac clic pe un exemplu aici, iar acest lucru este ceea ce este distractiv, 1741 01:27:37,190 --> 01:27:40,530 poți face lucruri de genul asta, Dați clic pe un marker și apoi voila, 1742 01:27:40,530 --> 01:27:42,400 informații apare. 1743 01:27:42,400 --> 01:27:45,874 >> Așa că nu am introdus destul caracteristici suficient de JavaScript 1744 01:27:45,874 --> 01:27:49,040 pentru a picta o imagine a exact cum ar putea sârmă toate aceste lucruri împreună, 1745 01:27:49,040 --> 01:27:50,706 dar ne-am cam zgâriat suprafața. 1746 01:27:50,706 --> 01:27:53,140 De fapt, ceea ce tocmai am făcut-o atunci când Am făcut clic pe acel marcator, 1747 01:27:53,140 --> 01:27:55,819 a fost declanșând un eveniment, o asa-numitul eveniment pe clic. 1748 01:27:55,819 --> 01:27:57,610 Si am vazut de fapt un eveniment mai devreme astăzi, 1749 01:27:57,610 --> 01:28:00,670 așa-numitul eveniment de trimitere, atunci când am fost prevenirea 1750 01:28:00,670 --> 01:28:02,490 utilizatorul de la căutarea pentru pisici. 1751 01:28:02,490 --> 01:28:06,560 Așa că ne-am cam ales și choosed dintre toate aceste caracteristici diferite, 1752 01:28:06,560 --> 01:28:08,990 pentru a vă da un sens, sperăm, din ceea ce se poate de fapt 1753 01:28:08,990 --> 01:28:11,000 face cu ceva mai mult confort în programare, 1754 01:28:11,000 --> 01:28:12,587 și resurse complet gratuit. 1755 01:28:12,587 --> 01:28:15,856 1756 01:28:15,856 --> 01:28:18,770 >> Alte intrebari? 1757 01:28:18,770 --> 01:28:19,790 Nu? 1758 01:28:19,790 --> 01:28:22,542 Aceasta este șansa ta finală, cel puțin astăzi, într-o vineri, 1759 01:28:22,542 --> 01:28:25,000 pentru a obține ceva de pe piept astfel încât să pleci de aici 1760 01:28:25,000 --> 01:28:27,067 senzație de încrezător și confortabil. 1761 01:28:27,067 --> 01:28:27,566 Da. 1762 01:28:27,566 --> 01:28:29,740 >> AUDIENTA: De ce nu adăugați un lucru mai mult? 1763 01:28:29,740 --> 01:28:32,720 >> David MALAN: Oh, Doamne. 1764 01:28:32,720 --> 01:28:35,260 Trebuie să mă odihnesc în acest weekend, cred. 1765 01:28:35,260 --> 01:28:36,180 Alte întrebări? 1766 01:28:36,180 --> 01:28:37,055 >> AUDIENTA: [inaudibil] 1767 01:28:37,055 --> 01:28:44,130 1768 01:28:44,130 --> 01:28:46,810 >> DAVID MALAN: Te can-- în Internet Explorer, se odihnească în pace, 1769 01:28:46,810 --> 01:28:49,310 ați folosit pentru a fi capabil de a pune VB script, script-ul de bază virtuale, 1770 01:28:49,310 --> 01:28:50,643 dar că într-adevăr niciodată prins. 1771 01:28:50,643 --> 01:28:52,490 Deci, răspunsul scurt este pur și simplu JavaScript. 1772 01:28:52,490 --> 01:28:55,144 1773 01:28:55,144 --> 01:28:55,810 Alte întrebări? 1774 01:28:55,810 --> 01:28:58,427 1775 01:28:58,427 --> 01:28:59,760 Bine, bine, lasă-mă să fac asta. 1776 01:28:59,760 --> 01:29:02,070 Lasă-mă să iau colegii noștri din afară. 1777 01:29:02,070 --> 01:29:04,500 Ele au o anumită evaluare forme pe care le doresc pentru toată lumea 1778 01:29:04,500 --> 01:29:06,310 să-și petreacă câteva minute completarea. 1779 01:29:06,310 --> 01:29:08,775 Ei doresc să colecteze acea formă și orice derogări pe care le-ar putea avea în afara. 1780 01:29:08,775 --> 01:29:10,240 Ei vor avea, de asemenea, certificate. 1781 01:29:10,240 --> 01:29:12,380 Cred că există încă unele gustări din afara. 1782 01:29:12,380 --> 01:29:14,360 Lasă-mă să trec astea, și dacă Pentru orice întrebări, între timp, 1783 01:29:14,360 --> 01:29:17,120 Voi umbla în jurul valorii de mai mult individual și putem obține ai început. 1784 01:29:17,120 --> 01:29:17,879 Da, desigur. 1785 01:29:17,879 --> 01:29:18,754 AUDIENTA: [inaudibil] 1786 01:29:18,754 --> 01:29:26,737 1787 01:29:26,737 --> 01:29:28,570 DAVID MALAN: Asta de obicei, adevărat aceste zile. 1788 01:29:28,570 --> 01:29:30,730 Cu siguranță, web software-ul, sunteți înclinat 1789 01:29:30,730 --> 01:29:32,901 pe alții sunteți fie folosind punct de vedere estetic lucrurile 1790 01:29:32,901 --> 01:29:35,400 cum ar fi Bootstrap, astfel încât să nu trebuie să pună în aplicare nivelul scăzut 1791 01:29:35,400 --> 01:29:37,169 detalii cu privire la meniuri și butoane și toate astea. 1792 01:29:37,169 --> 01:29:39,210 Te sprijinindu-se pe cineva cum ar fi Google, astfel încât să 1793 01:29:39,210 --> 01:29:42,050 nu trebuie să construiască un Uber de afaceri și o afacere de cartografiere, 1794 01:29:42,050 --> 01:29:44,850 precum și orice număr de similare aplicatii, de asemenea. 1795 01:29:44,850 --> 01:29:46,350 >> De fapt, loginul populare, de asemenea. 1796 01:29:46,350 --> 01:29:48,500 Dacă ați utilizat Spotify sau orice număr de site-uri web, 1797 01:29:48,500 --> 01:29:51,210 vă veți autentifica la unele site-uri web folosind Facebook. 1798 01:29:51,210 --> 01:29:53,350 Deci, ce e frumos, acolo sunt API-uri pentru Conectări 1799 01:29:53,350 --> 01:29:56,570 în zilele noastre, astfel încât să nu aveți pentru a avea propriul tabel de utilizatori 1800 01:29:56,570 --> 01:29:59,440 și toate baza de date proprie neapărat în aceeași măsură. 1801 01:29:59,440 --> 01:30:01,795 Te poți lăsa Facebook face tot din această complexitate pentru tine. 1802 01:30:01,795 --> 01:30:03,920 Deci, e un moment emoționant, onest, în programare, 1803 01:30:03,920 --> 01:30:07,200 pentru că există atât de multe părți terțe serviciile pe care le puteți construi pe partea de sus a. 1804 01:30:07,200 --> 01:30:10,890 >> Și din nou, prețul pe care îl plătiți este fie financiar, fie de nefuncționare. 1805 01:30:10,890 --> 01:30:13,750 Dacă Google merge în jos, deci nu Uber, fără îndoială, 1806 01:30:13,750 --> 01:30:15,690 dar poate că e un rezonabil compromis. 1807 01:30:15,690 --> 01:30:18,040 Și din nou, că a fost una dintre temele, sperăm, pentru ultimele două zile, 1808 01:30:18,040 --> 01:30:18,780 este aceste compromisuri. 1809 01:30:18,780 --> 01:30:20,738 Si rareori este acolo merge pentru a fi un răspuns corect. 1810 01:30:20,738 --> 01:30:25,700 Este într-adevăr este mai bine de două sau mai multe răspunsuri. 1811 01:30:25,700 --> 01:30:26,682 >> Se trece aceste jur. 1812 01:30:26,682 --> 01:30:36,830 1813 01:30:36,830 --> 01:30:41,110 >> Și aceste conturi Cloud9 vor continua la locul de muncă, în teorie, pe termen nelimitat. 1814 01:30:41,110 --> 01:30:45,000 S-ar putea găsi, dacă vă așteptați câteva zile sau o săptămână sau mai mult pentru a vă conecta din nou în ele, 1815 01:30:45,000 --> 01:30:49,170 ar putea dura ca unul sau cinci minute pentru a deschide din nou în sus, 1816 01:30:49,170 --> 01:30:54,090 dar asta e doar pentru că au pus să doarmă pentru a salva pe resurse. 1817 01:30:54,090 --> 01:31:10,527