1 00:00:00,000 --> 00:00:02,405 >> [MUSIC JOC] 2 00:00:02,405 --> 00:00:10,439 3 00:00:10,439 --> 00:00:11,980 DAVID MALAN: Bine, acest lucru este CS50. 4 00:00:11,980 --> 00:00:13,740 Acesta este sfârșitul săptămânii opt. 5 00:00:13,740 --> 00:00:15,887 Și astăzi, vom începe pentru a umple unele piese 6 00:00:15,887 --> 00:00:17,720 atunci când vine vorba de construcție lucruri de pe web. 7 00:00:17,720 --> 00:00:20,020 Deci, amintim că luni ne petrecem mai mult timp 8 00:00:20,020 --> 00:00:22,530 pe PHP, care este această dinamică limbaj de programare care 9 00:00:22,530 --> 00:00:26,872 ne permite de ieșire, printre altele, lucruri, HTML și alte astfel de conținut 10 00:00:26,872 --> 00:00:27,830 că vom vrea să vadă. 11 00:00:27,830 --> 00:00:30,871 Dar nu ne-am uitat la modul în care într-adevăr vom stoca informații. 12 00:00:30,871 --> 00:00:34,477 Într-adevăr, aproape orice de care super site-uri interesante pe care le vizitați astăzi 13 00:00:34,477 --> 00:00:36,560 au un fel de baze de date pe partea din spate, nu? 14 00:00:36,560 --> 00:00:39,540 Facebook stochează cu siguranță o mulțime de date despre noi toți și magazine Gmail toate 15 00:00:39,540 --> 00:00:40,210 de e-mailurile. 16 00:00:40,210 --> 00:00:44,150 >> Și astfel, de multe alte site-uri nu sunt doar conținut static care este informational. 17 00:00:44,150 --> 00:00:45,640 Este de fapt dinamic într-un fel. 18 00:00:45,640 --> 00:00:48,480 Va oferi de intrare, se actualizează paginile pentru alte persoane. 19 00:00:48,480 --> 00:00:50,620 Ai mesaje, va trimite mesaje, și așa mai departe. 20 00:00:50,620 --> 00:00:54,250 Așa că astăzi, ne privire mai atentă la bazele unui proiect 21 00:00:54,250 --> 00:00:57,330 că veți arunca cu capul în viitor săptămână, CS50 Finanțe, care 22 00:00:57,330 --> 00:01:00,509 este, de fapt va avea vă construi ceva nu este în C, dar în PHP. 23 00:01:00,509 --> 00:01:02,550 Un site care arata o ceva de genul asta 24 00:01:02,550 --> 00:01:05,810 care permite să cumpere și să vândă stocurile care sunt de fapt 25 00:01:05,810 --> 00:01:09,044 O să se bazeze pe timp real datele de stoc de la Yahoo Finance. 26 00:01:09,044 --> 00:01:11,960 Și astfel în cele din urmă, veți avea iluzie pentru tine și pentru utilizatorii 27 00:01:11,960 --> 00:01:14,550 ca esti de fapt, cumpararea si vanzarea de stocuri și obținerea timp real, aproape 28 00:01:14,550 --> 00:01:16,800 actualizări, gestionarea unei portofoliu, toate acestea 29 00:01:16,800 --> 00:01:20,310 va necesita având, în cele din urmă, o bază de date de utilizatori. 30 00:01:20,310 --> 00:01:23,330 >> Deci, în propriile tale cuvinte, mai ales dacă nu ești 31 00:01:23,330 --> 00:01:25,670 super-familiarizat cu calculatorul stiinta sau baze de date, ceea ce 32 00:01:25,670 --> 00:01:30,790 știi o bază de date pentru a fi acum, din punct de vedere non-tehnic? 33 00:01:30,790 --> 00:01:32,300 Ce este? 34 00:01:32,300 --> 00:01:36,882 Cum ați descrie o la un coleg de cameră sau un prieten? 35 00:01:36,882 --> 00:01:40,100 >> Audiența: [inaudibil] Informatiile [Inaudibil] 36 00:01:40,100 --> 00:01:44,430 >> DAVID MALAN: Deci, o listă de informații, sau o store-- o listă de informații 37 00:01:44,430 --> 00:01:47,160 că ați putea dori să stocheze despre ceva, ca un utilizator. 38 00:01:47,160 --> 00:01:50,190 Și ce utilizatorii au asociate cu ei? 39 00:01:50,190 --> 00:01:53,160 Dacă sunteți un utilizator de pe Facebook sau Gmail, care sunt caracteristicile 40 00:01:53,160 --> 00:01:54,940 că toți utilizatorii au? 41 00:01:54,940 --> 00:01:58,530 Cum ar fi, care ar putea fi unele dintre cele mai coloane în foaia de calcul la care se 42 00:01:58,530 --> 00:01:59,390 aluzie ultima dată? 43 00:01:59,390 --> 00:02:01,140 Pentru că, din nou, aveți posibilitatea să cred că de o bază de date 44 00:02:01,140 --> 00:02:05,810 într-adevăr ca un fișier Excel sau Google fantezie Foaie de calcul sau Apple a fișierului numere. 45 00:02:05,810 --> 00:02:08,280 >> Deci, ce părere ai de când vă gândiți la un utilizator? 46 00:02:08,280 --> 00:02:11,290 Ce au? 47 00:02:11,290 --> 00:02:11,790 Ce-i asta? 48 00:02:11,790 --> 00:02:12,470 >> Audiența: Un nume. 49 00:02:12,470 --> 00:02:13,303 >> DAVID MALAN: Un nume. 50 00:02:13,303 --> 00:02:16,840 Deci, dacă numele, cum ar fi, David Malan ar fi numele unei utilizator. 51 00:02:16,840 --> 00:02:17,980 Ce altceva face un utilizator are? 52 00:02:17,980 --> 00:02:18,770 >> Audiența: Un ID. 53 00:02:18,770 --> 00:02:19,561 >> DAVID MALAN: Un ID. 54 00:02:19,561 --> 00:02:23,320 Deci, ca un număr de identificare, cum ar fi Harvard dvs. ID-ul sau Yale ID-ul Net sau altele asemenea. 55 00:02:23,320 --> 00:02:24,923 Ce altceva ar putea avea un utilizator? 56 00:02:24,923 --> 00:02:25,890 >> Audiența: Parola. 57 00:02:25,890 --> 00:02:29,240 >> DAVID MALAN: O parolă, poate o adresa, poate un număr de telefon, poate 58 00:02:29,240 --> 00:02:30,050 o adresă de e-mail. 59 00:02:30,050 --> 00:02:32,640 Deci, nu e buchete de domenii și acest ar putea fel de scăpa de sub control 60 00:02:32,640 --> 00:02:34,760 repede îndată ce începe realizarea, oh, să stocați această 61 00:02:34,760 --> 00:02:36,190 și să stocheze acest lucru și că. 62 00:02:36,190 --> 00:02:37,657 >> Dar cum facem de fapt asta? 63 00:02:37,657 --> 00:02:39,740 Deci, din nou, modelul mental să aibă, pentru ziua de azi ca am 64 00:02:39,740 --> 00:02:42,320 se arunca cu capul în SQL real, Structured Query Language, 65 00:02:42,320 --> 00:02:44,186 este o bază de date care arata ca acest lucru. 66 00:02:44,186 --> 00:02:45,310 E doar rânduri și coloane. 67 00:02:45,310 --> 00:02:48,309 Și vă puteți imagina Google Spreadsheets sau orice număr de alte programe. 68 00:02:48,309 --> 00:02:52,130 Dar ceea ce este esențial despre MySQL, care este software-ul de baze de date vom pentru a utiliza, 69 00:02:52,130 --> 00:02:54,920 liber deschis available-- utilizări Facebook 70 00:02:54,920 --> 00:02:59,200 l și orice număr de alte websites-- baza de date stochează lucruri relațional. 71 00:02:59,200 --> 00:03:01,770 Și o bază de date relațională înseamnă doar una care literalmente 72 00:03:01,770 --> 00:03:03,672 stochează datele în rânduri și coloane. 73 00:03:03,672 --> 00:03:04,630 Este la fel de simplu ca asta. 74 00:03:04,630 --> 00:03:07,230 >> Deci, chiar ceva de genul asta Oracle s-ar putea fi auzit în general de 75 00:03:07,230 --> 00:03:08,271 este o bază de date relațională. 76 00:03:08,271 --> 00:03:10,929 Și sub capota aceasta, stochează datele în rânduri și coloane. 77 00:03:10,929 --> 00:03:12,970 Și Oracle vă un faultează mulțime de bani pentru a face asta, 78 00:03:12,970 --> 00:03:15,550 întrucât taxele MySQL ai nimic pentru același. 79 00:03:15,550 --> 00:03:18,790 Deci, SQL este de gând să ne dea cel puțin patru operațiuni. 80 00:03:18,790 --> 00:03:23,190 Capacitatea de a selecta date, cum ar fi citit date, insera, șterge, și datele de actualizare. 81 00:03:23,190 --> 00:03:25,525 Cu alte cuvinte, acestea sunt Într-adevăr patru operații cheie 82 00:03:25,525 --> 00:03:28,950 care sunt de gând să ne permite de a schimba lucruri în aceste rânduri și coloane. 83 00:03:28,950 --> 00:03:33,250 >> Instrumentul pe care vom folosi astăzi în special de a învăța SQL și să se joace cu ea 84 00:03:33,250 --> 00:03:34,627 este din nou numit PHP MyAdmin. 85 00:03:34,627 --> 00:03:35,460 Este instrument bazat pe web. 86 00:03:35,460 --> 00:03:38,200 Totală coincidență faptul că este scris în PHP. 87 00:03:38,200 --> 00:03:42,400 Dar o să ne dea un grafic interfață cu utilizatorul, astfel încât putem de fapt 88 00:03:42,400 --> 00:03:46,054 crea aceste rânduri și coloane și apoi vorbesc cu ei prin cod. 89 00:03:46,054 --> 00:03:47,970 Deci, să acum încep să ceea ce cred că este sincer 90 00:03:47,970 --> 00:03:51,000 un fel de distracție procesului de construirea capătul din spate al site-uri web, 91 00:03:51,000 --> 00:03:54,580 părțile care utilizatorii nu vezi, dar sigur face pasă, 92 00:03:54,580 --> 00:03:56,170 pentru că asta e mai degrabă de date va. 93 00:03:56,170 --> 00:03:59,570 Deci, similar cu C și o mai puțin ca PHP, 94 00:03:59,570 --> 00:04:04,954 SQL, sau o bază de date care acceptă SQL, are tipuri cel puțin acești date 95 00:04:04,954 --> 00:04:05,870 și ciorchini de alții. 96 00:04:05,870 --> 00:04:08,107 CHAR, VARCHAR, INT, BIGINT, Zecimal, și DATETIME. 97 00:04:08,107 --> 00:04:09,940 Și există un întreg grămadă de alte caracteristici, 98 00:04:09,940 --> 00:04:11,940 dar hai sa facem acest lucru prin Ca exemplu actuale. 99 00:04:11,940 --> 00:04:16,450 >> Am de gând să merg în CS50 IDE în cazul în care, în prealabil, am logat 100 00:04:16,450 --> 00:04:19,372 și am vizitat, de asemenea, o adresă URL pentru acest instrument numit PHP MyAdmin. 101 00:04:19,372 --> 00:04:22,580 Și în problema set de șapte, vom spune exact cum pentru a ajunge la această interfață 102 00:04:22,580 --> 00:04:23,200 deasemenea. 103 00:04:23,200 --> 00:04:25,640 Pe colțul din stânga sus, observați că spune prelegere. 104 00:04:25,640 --> 00:04:27,610 Și asta înseamnă doar că in avans, am creat 105 00:04:27,610 --> 00:04:31,360 o bază de date numită prelegere gol care nu are nici foi de calcul în ea încă. 106 00:04:31,360 --> 00:04:32,600 Nu există rânduri și coloane. 107 00:04:32,600 --> 00:04:34,308 Deoarece primul lucru pe care de gând să faci 108 00:04:34,308 --> 00:04:37,100 este să înceapă să creeze un tabel care va stoca utilizatorii noștri. 109 00:04:37,100 --> 00:04:39,100 >> Deci, literalmente peste aici la dreapta, eu sunt 110 00:04:39,100 --> 00:04:42,070 O să spun în baza de date Vreau un tabel numit utilizatori. 111 00:04:42,070 --> 00:04:44,845 Deci, acest lucru este ca fisierul pe care am doriți să stocați toate datele mele în. 112 00:04:44,845 --> 00:04:45,720 Și cât de multe coloane? 113 00:04:45,720 --> 00:04:47,740 Ei bine, hai să-l păstrați simplu pentru acum. 114 00:04:47,740 --> 00:04:51,855 Vreau doar pentru a stoca ca un nume de utilizator și un nume pentru un utilizator. 115 00:04:51,855 --> 00:04:53,020 Vom începe mici. 116 00:04:53,020 --> 00:04:55,370 Deci, vreau două coloane totală. 117 00:04:55,370 --> 00:04:57,360 Și am de gând să mergeți mai departe și faceți clic pe Go. 118 00:04:57,360 --> 00:04:59,210 Și apoi, pentru aceste coloane, ce am de gând 119 00:04:59,210 --> 00:05:04,576 la do-- dacă acest internet cooperates-- bine, 120 00:05:04,576 --> 00:05:05,950 așa că vom încerca să din nou. 121 00:05:05,950 --> 00:05:09,180 Am de gând pentru a crea un tabel numit Utilizatorii cu două coloane, faceți clic pe Du-te, OK. 122 00:05:09,180 --> 00:05:10,520 Acum ne-am luat o foarte repede. 123 00:05:10,520 --> 00:05:12,065 Mulțumesc, foarte bine făcut. 124 00:05:12,065 --> 00:05:14,440 Bine, deci ce vrem aceste coloane să fie numit? 125 00:05:14,440 --> 00:05:16,080 >> Deci, o va fi numit nume de utilizator. 126 00:05:16,080 --> 00:05:19,480 Deci, tot ce văd here-- și interfața sincer devine un pic urât în ​​cele din urmă, 127 00:05:19,480 --> 00:05:21,270 Odată ce începeți să tastați în toate aceste date. 128 00:05:21,270 --> 00:05:27,450 Dar ceea ce este frumos este la fel de în mod paradoxal, sunt crearea de coloane, 129 00:05:27,450 --> 00:05:29,977 dar instrumentul are prostește le-a pus în rânduri 130 00:05:29,977 --> 00:05:31,560 astfel încât să pot configura aceste coloane. 131 00:05:31,560 --> 00:05:33,550 Deci, sunt două spații acolo sub numele. 132 00:05:33,550 --> 00:05:36,180 Iar unul dintre aceste domenii am doresc să numita Utilizator, 133 00:05:36,180 --> 00:05:38,000 iar celălalt câmp vreau să chema numele. 134 00:05:38,000 --> 00:05:40,340 >> Și acum trebuie să aleagă tipuri de date pentru aceste lucruri. 135 00:05:40,340 --> 00:05:42,330 Deci, în timp ce în Excel și Google Spreadsheets, 136 00:05:42,330 --> 00:05:45,531 daca vrei o coloană, vă literalmente doar de tip nume sau Utilizator, a lovit Enter. 137 00:05:45,531 --> 00:05:48,030 Poate ai bold face doar pentru claritate, dar asta este. 138 00:05:48,030 --> 00:05:50,140 Tu nu specifică tipuri de coloane. 139 00:05:50,140 --> 00:05:53,790 Acum în Google Spreadsheets sau Excel, s-ar putea specifica modul în care este redat datele. 140 00:05:53,790 --> 00:05:58,120 Ai putea merge la meniul Format, și tu Puteți specifica arăta acest semn dolar ca, 141 00:05:58,120 --> 00:05:59,900 arăta ca o valoare în virgulă mobilă. 142 00:05:59,900 --> 00:06:01,990 >> Deci, e similare în spirit că ceea ce suntem pe cale să facem, 143 00:06:01,990 --> 00:06:04,740 dar acest lucru se întâmplă de fapt de a forța datele să fie un anumit tip. 144 00:06:04,740 --> 00:06:07,750 Acum, chiar dacă în urmă cu o clipă am a spus că este doar câteva tipuri de date, 145 00:06:07,750 --> 00:06:11,120 există de fapt o mulțime, și sunt 146 00:06:11,120 --> 00:06:12,910 în diferite grade de specificitate. 147 00:06:12,910 --> 00:06:14,970 Și, ca o paranteză, vă pot face chiar lucruri de lux 148 00:06:14,970 --> 00:06:17,520 ca geometrii de stocare în interiorul unei baze de date. 149 00:06:17,520 --> 00:06:19,250 Puteți stoca lucruri ca coordonatele GPS 150 00:06:19,250 --> 00:06:22,420 și de fapt a găsi, matematic, puncte care sunt aproape de alții. 151 00:06:22,420 --> 00:06:24,128 Dar am de gând să păstra acest super-simplu 152 00:06:24,128 --> 00:06:26,800 și du-te până aici, toate de așa-numitele tipuri șir. 153 00:06:26,800 --> 00:06:29,240 >> Deci, aici este o listă de grămadă de opțiuni. 154 00:06:29,240 --> 00:06:32,740 CHAR, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT. 155 00:06:32,740 --> 00:06:34,110 Și e un fel de copleșitoare. 156 00:06:34,110 --> 00:06:37,610 Și, din păcate, destul de paradoxal la C, 157 00:06:37,610 --> 00:06:40,120 un CHAR nu este cu adevărat un CHAR. 158 00:06:40,120 --> 00:06:44,170 Dacă specificați în baza de date acest tip de date este CHAR, 159 00:06:44,170 --> 00:06:47,390 ceea ce înseamnă că da, e un CHAR, dar este unul sau mai multe caractere. 160 00:06:47,390 --> 00:06:49,630 Și va trebui să specificați câte caractere vrei. 161 00:06:49,630 --> 00:06:51,636 Deci, ce este un tipic lungime pentru un nume de utilizator? 162 00:06:51,636 --> 00:06:52,760 Există o limită de obicei? 163 00:06:52,760 --> 00:06:53,920 >> Audiența: [inaudibil] 164 00:06:53,920 --> 00:06:55,050 >> DAVID MALAN: 16 poate? 165 00:06:55,050 --> 00:06:55,990 Ceva de genul. 166 00:06:55,990 --> 00:06:57,948 Știi, înapoi în zi, este folosit pentru a fi opt. 167 00:06:57,948 --> 00:07:00,289 Uneori este de 16, uneori este chiar mai mult decât atât. 168 00:07:00,289 --> 00:07:02,080 Și așa, acest lucru nu Adică da-mi un CHAR. 169 00:07:02,080 --> 00:07:04,730 Aceasta înseamnă că trebuie să specificați lungimea câmpului, 170 00:07:04,730 --> 00:07:07,402 și acum am putea spune ceva de genul 16. 171 00:07:07,402 --> 00:07:08,610 Și există un compromis aici. 172 00:07:08,610 --> 00:07:11,360 Deci, vom vedea într-o clipă că aceasta înseamnă unul, 173 00:07:11,360 --> 00:07:14,620 fiecare nume de utilizator trebuie sa fie de 16 caractere. 174 00:07:14,620 --> 00:07:18,720 Dar stai un minut, M-A-L-A-N. Dacă asta e numele meu de utilizator și eu sunt doar folosind cinci, 175 00:07:18,720 --> 00:07:23,070 ce ai propune ca baza de date să facă pentru alte 11 personaje care 176 00:07:23,070 --> 00:07:24,471 Am rezervat spațiu pentru? 177 00:07:24,471 --> 00:07:25,220 Ce ai face? 178 00:07:25,220 --> 00:07:26,480 >> Audiența: [inaudibil] 179 00:07:26,480 --> 00:07:27,160 >> DAVID MALAN: Da, doar să le facă toate nule. 180 00:07:27,160 --> 00:07:28,290 Fă-i spații. 181 00:07:28,290 --> 00:07:30,816 Dar probabil nul, deci o mulțime de zerouri backslash. 182 00:07:30,816 --> 00:07:33,190 Deci, pe de o parte, ne-am acum a făcut-vă că numele meu de utilizator 183 00:07:33,190 --> 00:07:34,780 poate fi nu mai mult de 16 caractere. 184 00:07:34,780 --> 00:07:37,590 Și reversul, care este că, dacă am avea un nume foarte lung 185 00:07:37,590 --> 00:07:39,940 sau a vrut un foarte lung username ca unii dintre voi 186 00:07:39,940 --> 00:07:44,840 baieti ar putea avea în acel colegiu sau la Yale.edu, nu poți avea unul. 187 00:07:44,840 --> 00:07:47,177 Și astfel, de fapt, dacă ați înregistrat vreodată pentru un site web 188 00:07:47,177 --> 00:07:49,385 și te-ai tipat la a spune parola este prea lung 189 00:07:49,385 --> 00:07:52,710 sau numele de utilizator este prea lung, e pur și simplu pentru că un programator, atunci când 190 00:07:52,710 --> 00:07:55,500 configurarea bazei de date lui sau a ei, a decis că acest domeniu va 191 00:07:55,500 --> 00:07:57,150 să nu mai fie decât această lungime. 192 00:07:57,150 --> 00:08:00,580 >> Bine, ce dacă am proceda pentru a numi? 193 00:08:00,580 --> 00:08:05,240 Cât timp ar trebui să o Numele tipic omului fi? 194 00:08:05,240 --> 00:08:07,492 Cum multe personaje, 16? 195 00:08:07,492 --> 00:08:09,450 Cred că am putea găsi pe cineva în această cameră 196 00:08:09,450 --> 00:08:13,210 în cazul în care prin primul său plus ultima Numele este mai mare de 16 caractere. 197 00:08:13,210 --> 00:08:14,850 Deci, ce e mai bine decât atât, 17? 198 00:08:14,850 --> 00:08:17,040 18? 199 00:08:17,040 --> 00:08:18,830 25? 200 00:08:18,830 --> 00:08:20,350 Mai mare? 201 00:08:20,350 --> 00:08:20,980 30? 202 00:08:20,980 --> 00:08:21,855 >> Audiența: [inaudibil] 203 00:08:21,855 --> 00:08:23,700 DAVID MALAN: 5000, oh Dumnezeule. 204 00:08:23,700 --> 00:08:26,309 Deci, asta e, probabil, o decent sus legat, să spunem. 205 00:08:26,309 --> 00:08:28,350 Și aici avem un fel de au pentru a efectua un apel hotărâre. 206 00:08:28,350 --> 00:08:30,400 Cum ar fi, nu e nici un răspuns aici. 207 00:08:30,400 --> 00:08:32,740 Infinit nu este destul de posibil, pentru că suntem în cele din urmă 208 00:08:32,740 --> 00:08:34,781 O să have-- suntem O să alerga afară de memorie. 209 00:08:34,781 --> 00:08:36,909 Deci, avem de a face o apel judecata la un moment dat. 210 00:08:36,909 --> 00:08:41,010 >> Foarte frecvente ar fi, de exemplu, la use-- și să-mi precizeze CHAR aici 211 00:08:41,010 --> 00:08:46,050 ca before-- 255 a fost literalmente limită superioară cu privire la acest software de baze de date 212 00:08:46,050 --> 00:08:46,700 ani in urma. 213 00:08:46,700 --> 00:08:48,575 Și astfel, o mulțime de oameni ar spune doar, bine. 214 00:08:48,575 --> 00:08:49,420 255 este limita. 215 00:08:49,420 --> 00:08:50,620 Să folosim doar maxim. 216 00:08:50,620 --> 00:08:51,870 Și acest lucru este destul de ridicol. 217 00:08:51,870 --> 00:08:55,060 Ca, dacă sunteți tastarea cineva e nume pentru 200 de caractere plus, 218 00:08:55,060 --> 00:08:56,140 că un pic ridicol. 219 00:08:56,140 --> 00:08:59,624 >> Dar, amintiți-vă că nu este ASCII singurul sistem de caractere. 220 00:08:59,624 --> 00:09:01,540 Și astfel, în special într-o mulțime de limbi asiatice 221 00:09:01,540 --> 00:09:04,248 în cazul în care nu există caractere nu putem exprima pe tastaturi, cum ar fi SUA meu 222 00:09:04,248 --> 00:09:08,209 tastatură, unele caractere de fapt ia 16 biți în loc de opt biți. 223 00:09:08,209 --> 00:09:10,250 Și astfel, acest fapt nu este tot ceea ce nerezonabile 224 00:09:10,250 --> 00:09:12,250 că avem nevoie de mai mult spațiu, dacă vrem pentru a se potrivi 225 00:09:12,250 --> 00:09:16,252 caractere mai mari decât foarte SUA cele centrice am avut tendinta de a discuta. 226 00:09:16,252 --> 00:09:17,460 Deci, avem nevoie de niște limită superioară. 227 00:09:17,460 --> 00:09:21,470 Nu știu ce este cel mai bun, dar 255 este, în general unul comun. 228 00:09:21,470 --> 00:09:22,700 25 se simte redus. 229 00:09:22,700 --> 00:09:23,857 16, 32 se simt scăzut. 230 00:09:23,857 --> 00:09:25,690 Mi-ar err pe partea de ceva mai mare. 231 00:09:25,690 --> 00:09:27,330 Dar există un compromis, ca întotdeauna. 232 00:09:27,330 --> 00:09:31,902 Care este, probabil, evident compromis de rezervare 255 caractere 233 00:09:31,902 --> 00:09:33,360 pentru numele fiecăruia în baza mea de date? 234 00:09:33,360 --> 00:09:34,230 >> Audiența: [inaudibil] 235 00:09:34,230 --> 00:09:34,510 >> DAVID MALAN: Ce-i asta? 236 00:09:34,510 --> 00:09:35,430 >> Audiența: [inaudibil] 237 00:09:35,430 --> 00:09:37,138 >> DAVID MALAN: Este o mulțime de memorie, nu? 238 00:09:37,138 --> 00:09:42,280 M-O-L-A-N. Tocmai am pierdut 250 caractere doar pentru a stoca numele meu 239 00:09:42,280 --> 00:09:46,000 defensiv, doar în cazul în care cineva în clasa are un nume foarte lung. 240 00:09:46,000 --> 00:09:47,940 Care pare a fi o compromis nejustificat. 241 00:09:47,940 --> 00:09:52,040 >> Deci, se dovedește că SQL, acest limbaj de baze de date, 242 00:09:52,040 --> 00:09:55,480 sprijină de fapt ceva numit VARCHAR, CHAR sau variabilă. 243 00:09:55,480 --> 00:09:59,390 Și acest lucru este un fel de frumos în care această vă permite să specificați un fix nu 244 00:09:59,390 --> 00:10:01,900 latime, ci mai degrabă, o lățime variabilă. 245 00:10:01,900 --> 00:10:05,060 Și mai precis, o Lățimea maximă a câmpului. 246 00:10:05,060 --> 00:10:08,901 Deci, acest lucru înseamnă că un nume poate fie nu mai mult de 250 de caractere, 247 00:10:08,901 --> 00:10:10,150 dar poate fi cu siguranță mai puține. 248 00:10:10,150 --> 00:10:11,733 Și baza de date va fi inteligent. 249 00:10:11,733 --> 00:10:14,860 Dacă vă puneți în M-A-L-A-N, se doar de gând să utilizeze cinci, 250 00:10:14,860 --> 00:10:18,120 poate că șase octeți pentru ca un caracter nul posterior, 251 00:10:18,120 --> 00:10:23,330 și nu petrece o suplimentare 249 sau 250 bytes în mod inutil. 252 00:10:23,330 --> 00:10:27,380 >> Deci, acest lucru pare că ar trebui au început cu această poveste. 253 00:10:27,380 --> 00:10:29,140 Dar există întotdeauna un compromis. 254 00:10:29,140 --> 00:10:33,024 Deci, pe de o parte, un nume de utilizator Am specificate să fie greu codificate la 16, 255 00:10:33,024 --> 00:10:34,940 și poate că nu a fost apel dreapta, poate că 256 00:10:34,940 --> 00:10:40,040 este, dar de ce nu se utiliza VARCHARs pentru tot? 257 00:10:40,040 --> 00:10:42,020 >> Ea există pentru un motiv. 258 00:10:42,020 --> 00:10:46,200 De ce nu folosiți VARCHARs pentru fiecare domeniu a cărui lungime nu știți în avans 259 00:10:46,200 --> 00:10:48,180 în cazul în care pare a fi un lucru mare, nu? 260 00:10:48,180 --> 00:10:50,482 Utilizați numai la fel de mult spațiu ca aveți nevoie de până la această limită? 261 00:10:50,482 --> 00:10:51,271 >> Audiența: mai lent. 262 00:10:51,271 --> 00:10:52,146 DAVID MALAN: Speller? 263 00:10:52,146 --> 00:10:53,120 Audiența: Se face mai lent? 264 00:10:53,120 --> 00:10:53,970 DAVID MALAN: Oh, e mai lent. 265 00:10:53,970 --> 00:10:55,720 Bun, asta e aproape întotdeauna răspunsul, sincer. 266 00:10:55,720 --> 00:10:56,520 Cum ar fi, ce-i compromisul? 267 00:10:56,520 --> 00:10:58,570 Acesta fie costa mai mult spațiu sau costă mai mult timp. 268 00:10:58,570 --> 00:11:00,111 Deci, în acest caz, ar putea fi mai lent. 269 00:11:00,111 --> 00:11:00,920 Ce? 270 00:11:00,920 --> 00:11:05,830 >> Audiența: [inaudibil] determinarea [neauzit]. 271 00:11:05,830 --> 00:11:06,640 >> DAVID MALAN: Bine. 272 00:11:06,640 --> 00:11:09,670 Deci, s-ar putea retrage de la chiar PSED5, joc cu abordarea 273 00:11:09,670 --> 00:11:12,750 la dicționar, dacă trebuie să aloca memorie dinamic sau păstra 274 00:11:12,750 --> 00:11:14,630 în creștere un tampon, care poate fi de fapt lent. 275 00:11:14,630 --> 00:11:16,963 Dacă aveți de a apela malloc sub capota și poate 276 00:11:16,963 --> 00:11:19,610 asta e ceea ce MySQL este de a face, așa cu siguranță că ar putea fi cazul. 277 00:11:19,610 --> 00:11:22,430 Și dacă credeți mod Înapoi la PSet-- sau chiar 278 00:11:22,430 --> 00:11:26,340 săptămâni două, atunci când am făcut lucruri cum ar fi căutare binară sau chiar de căutare liniară, 279 00:11:26,340 --> 00:11:30,690 Unul dintre lucrurile frumoase despre fiecare cuvânt într-o bază de date sau de fiecare cuvânt într-o coloană 280 00:11:30,690 --> 00:11:33,690 fiind exact aceeași lungime, chiar în cazul în care o grămadă de aceste caractere 281 00:11:33,690 --> 00:11:37,390 sunt goale, este că puteți utiliza cu acces aleator pe datele tale, nu? 282 00:11:37,390 --> 00:11:40,310 >> Dacă știți că fiecare Cuvântul este de 16 caractere departe, 283 00:11:40,310 --> 00:11:46,460 puteți utiliza indicatorul aritmetice, astfel încât să vorbesc, și du-te la noi 16, 32, 48, 64, 284 00:11:46,460 --> 00:11:49,589 și puteți sări doar instantaneu, utilizând aritmetica 285 00:11:49,589 --> 00:11:51,130 la oricare dintre cuvintele din baza de date. 286 00:11:51,130 --> 00:11:54,280 Întrucât, dacă este un VARCHAR, ce ai în loc să faci? 287 00:11:54,280 --> 00:11:55,960 >> [Telefon care suna] 288 00:11:55,960 --> 00:11:58,680 >> Dacă e un VARCHAR, te nu se poate folosi cu acces aleator. 289 00:11:58,680 --> 00:12:01,341 Ceea ce trebuie sa te uiti pentru sau nu? 290 00:12:01,341 --> 00:12:01,840 Da? 291 00:12:01,840 --> 00:12:03,240 >> Audiența: [inaudibil] 292 00:12:03,240 --> 00:12:04,310 >> DAVID MALAN: Uită-te prin linia whole-- 293 00:12:04,310 --> 00:12:06,518 prin toata lista cauta ceea ce, cel mai probabil? 294 00:12:06,518 --> 00:12:08,356 Ce fel de valoare deosebită? 295 00:12:08,356 --> 00:12:09,230 Audiența: [inaudibil] 296 00:12:09,230 --> 00:12:11,105 DAVID MALAN: Caut pentru terminatorii nule 297 00:12:11,105 --> 00:12:13,637 că delimita separarea cuvintelor. 298 00:12:13,637 --> 00:12:15,720 Deci, din nou, un compromis, și nu există nici un răspuns corect. 299 00:12:15,720 --> 00:12:18,380 Dar acest lucru este în cazul în care, în special când utilizatorii ajunge să fie mai multe 300 00:12:18,380 --> 00:12:21,700 și sarcina pe serverele dvs., The Numărul de persoane care folosesc devine mare, 301 00:12:21,700 --> 00:12:23,650 Acestea sunt de fapt decizii netriviale. 302 00:12:23,650 --> 00:12:26,640 Deci, putem pleca acestea ca acest lucru, dar Să defilați în jos pe la dreapta 303 00:12:26,640 --> 00:12:27,332 Aici. 304 00:12:27,332 --> 00:12:30,290 Acum, există o pereche de coloane în cazul în care avem de a face un apel hotărâre. 305 00:12:30,290 --> 00:12:35,170 Are sens, pentru a permite unui utilizator nume, numele de utilizator a unui utilizator sau unui utilizator 306 00:12:35,170 --> 00:12:36,370 nume, pentru a fi nul? 307 00:12:36,370 --> 00:12:37,610 Asta este, doar gol. 308 00:12:37,610 --> 00:12:40,360 Se simte un pic lipsit de sens, așa că eu sunt nu de gând să verifice aceste cutii. 309 00:12:40,360 --> 00:12:42,670 Dar se pare că într-un de baze de date, vă pot spune, 310 00:12:42,670 --> 00:12:44,620 cineva poate avea opțional această valoare. 311 00:12:44,620 --> 00:12:47,180 Această coloană nu are a fi de fapt acolo. 312 00:12:47,180 --> 00:12:48,570 >> Acum, există această meniu vertical. 313 00:12:48,570 --> 00:12:50,810 Și observați încă sunt în primul rând acolo, 314 00:12:50,810 --> 00:12:52,520 așa că vorbesc despre numele de utilizator acum. 315 00:12:52,520 --> 00:12:56,290 Și se pare că o bază de date, Spre deosebire de un simplu simplu foaie de calcul, 316 00:12:56,290 --> 00:12:58,520 are caracteristici puternice numite indici. 317 00:12:58,520 --> 00:13:02,600 Și un index este un mod de a spune de baze de date în prealabil că am omul 318 00:13:02,600 --> 00:13:03,900 Sunt mai deștept decât tine. 319 00:13:03,900 --> 00:13:10,430 >> Știu ce fel de întrebări, selectați sau introduce sau șterge sau actualizare, 320 00:13:10,430 --> 00:13:13,182 că codul meu se va termina prin a face pe această bază de date. 321 00:13:13,182 --> 00:13:14,390 Vreau să citesc o mulțime de date. 322 00:13:14,390 --> 00:13:15,681 Vreau să inserați o mulțime de date. 323 00:13:15,681 --> 00:13:17,530 Vreau să în mod constant șterge o mulțime de date. 324 00:13:17,530 --> 00:13:21,520 Dacă știu că am de gând să fie accesarea unui câmp ca Username mult, 325 00:13:21,520 --> 00:13:24,770 Pot spune preemptively baze de date, știu mai mult decât tine, 326 00:13:24,770 --> 00:13:29,220 și vreau să decretăm că trebuie index acest domeniu. 327 00:13:29,220 --> 00:13:33,200 În cazul în care indexarea un câmp sau o coloană înseamnă că baza de date în avans 328 00:13:33,200 --> 00:13:37,040 ar trebui să împrumute unele idei de la, cum ar fi, patru saptamani si cinci și șase din CS50 329 00:13:37,040 --> 00:13:39,240 și de fapt construi ceva de genul o căutare binară 330 00:13:39,240 --> 00:13:41,560 copac sau ceva în general, numit un copac B 331 00:13:41,560 --> 00:13:43,410 care le-ar învăța într-o clasă ca CS124 332 00:13:43,410 --> 00:13:46,710 la Harvard, o clasă algoritmi, sau orice număr de alte locuri. 333 00:13:46,710 --> 00:13:49,570 >> Baza de date și Smart oameni care a implementat 334 00:13:49,570 --> 00:13:53,880 va dau seama cum de a stoca acest tabel de informații 335 00:13:53,880 --> 00:13:57,061 în memorie, astfel încât căutările și alte operațiuni sunt super rapid. 336 00:13:57,061 --> 00:13:58,060 Nu trebuie să o fac. 337 00:13:58,060 --> 00:14:00,640 Nu trebuie să pună în aplicare căutare liniară sau binar de căutare 338 00:14:00,640 --> 00:14:03,300 sau merge sort sau selecție un fel, nimic din toate acestea. 339 00:14:03,300 --> 00:14:06,590 Baza de date face pentru tine, dacă-ți spun l preventiv pentru a indexa acest domeniu. 340 00:14:06,590 --> 00:14:09,100 >> Și puteți vedea prea, nu e unele alte caracteristici 341 00:14:09,100 --> 00:14:11,010 putem spune baza de date să pună în aplicare. 342 00:14:11,010 --> 00:14:16,431 Ceea ce ar putea însemna dacă se aleg unic din acest meniu, doar intuitiv? 343 00:14:16,431 --> 00:14:16,930 Da? 344 00:14:16,930 --> 00:14:17,889 >> Audiența: [inaudibil] 345 00:14:17,889 --> 00:14:19,930 DAVID MALAN: da, numele de utilizator trebuie să fie unic. 346 00:14:19,930 --> 00:14:23,330 Este un lucru bun sau un lucru rău pentru o bază de date, pentru un site web cu utilizatorii? 347 00:14:23,330 --> 00:14:24,965 Ar trebui să fie nume de utilizator unic? 348 00:14:24,965 --> 00:14:25,880 Da, probabil. 349 00:14:25,880 --> 00:14:27,800 Dacă asta e ceea ce câmp vom folosi pentru a vă conecta la, 350 00:14:27,800 --> 00:14:31,867 nu vrei cu adevărat să oameni care au același simt sau același nume de utilizator. 351 00:14:31,867 --> 00:14:33,700 Deci, putem avea bază de date impune ca atât 352 00:14:33,700 --> 00:14:37,880 că acum, în codul meu PHP sau orice limbă, Eu nu trebuie să, de exemplu, verificați 353 00:14:37,880 --> 00:14:41,490 nu în mod necesar acest nume de utilizator exista înainte să mă înregistrez pe cineva? 354 00:14:41,490 --> 00:14:46,690 Baza de date nu va lasa două persoane cu numele de David sau Malans înregistrați în acest caz. 355 00:14:46,690 --> 00:14:50,030 >> Și, ca o paranteză, chiar dacă acest lucru meniu vă permite să selectați doar un singur, 356 00:14:50,030 --> 00:14:54,550 un index unic este una care este indexate pentru performanță super rapid, 357 00:14:54,550 --> 00:14:56,100 dar, de asemenea, forteaza unicitatea. 358 00:14:56,100 --> 00:14:58,850 Și ne vom întoarce la ceea ce alte două înseamnă într-o clipă. 359 00:14:58,850 --> 00:15:00,930 Între timp, dacă mă duc la Al doilea rând mea, care 360 00:15:00,930 --> 00:15:06,230 este numele utilizatorului, ar trebui să specificați că numele ar trebui să fie unic? 361 00:15:06,230 --> 00:15:09,550 Nu, pentru că ai putea cu siguranță have-- nu exista nici doi David 362 00:15:09,550 --> 00:15:11,050 Malans în această cameră, cel mai probabil. 363 00:15:11,050 --> 00:15:14,290 Dar dacă vom alege un alt nume, am putea avea cu siguranță coliziuni. 364 00:15:14,290 --> 00:15:16,130 >> Gandeste-te la hash tabele și altele asemenea. 365 00:15:16,130 --> 00:15:18,604 Deci, noi cu siguranță nu vreau pentru a face câmpul nume unic. 366 00:15:18,604 --> 00:15:21,270 Deci, noi suntem doar de gând să plece că, liniuță, liniuță, liniuță, nimic. 367 00:15:21,270 --> 00:15:22,660 Și am de gând să plec orice altceva numai. 368 00:15:22,660 --> 00:15:25,035 Într-adevăr, cele mai multe dintre aceste domenii nu vom avea să-i pese. 369 00:15:25,035 --> 00:15:27,830 Și când sunt gata pentru a salva acest lucru, în cazul în care internetul cooperează, 370 00:15:27,830 --> 00:15:35,032 Am faceți clic pe Salvare, și foarte, foarte, foarte încet se baza de date se salvează. 371 00:15:35,032 --> 00:15:37,240 Și acum m-am întors la acest interfață, care desigur, 372 00:15:37,240 --> 00:15:38,680 este copleșitoare la prima vedere. 373 00:15:38,680 --> 00:15:42,450 Dar am de gând să faceți este să faceți clic pe pe utilizatorii de cuvinte de la stânga sus. 374 00:15:42,450 --> 00:15:47,630 Am de gând să meargă aici, faceți clic pe Utilizatorii, și în mod implicit, aceasta 375 00:15:47,630 --> 00:15:50,180 a executat unele SQL, dar mai mult pe faptul că într-un moment. 376 00:15:50,180 --> 00:15:52,654 Iată doar un rezumat a ceea ce am făcut. 377 00:15:52,654 --> 00:15:55,320 Și nu vă faceți griji că te văd menționa de latină și suedeză aici. 378 00:15:55,320 --> 00:16:00,490 Acestea sunt doar implicit setări, pentru că MySQL inițial, 379 00:16:00,490 --> 00:16:04,000 sau PHP MyAdmin, unul dintre cei doi întâmplat care urmează să fie scrise de unii oameni suedezi. 380 00:16:04,000 --> 00:16:06,100 Dar e irelevant în cazul nostru aici. 381 00:16:06,100 --> 00:16:08,280 >> Bine, asa ca de ce este toate astea interesant? 382 00:16:08,280 --> 00:16:13,050 Se pare, pot insera date într-o bază de date de scrierea de cod. 383 00:16:13,050 --> 00:16:15,940 Și eu merge mai departe și în fișierul meu de aici, eu sunt 384 00:16:15,940 --> 00:16:19,000 merge mai departe și pretinde ca acest lucru este cu fir la baza de date, ceea ce 385 00:16:19,000 --> 00:16:23,040 nu este în acest moment, dar fie atunci când vom ajunge la problema a seta șapte. 386 00:16:23,040 --> 00:16:25,640 Și am de gând să merg mai departe și executa o funcție numită interogare, 387 00:16:25,640 --> 00:16:28,730 care vă va oferi în probleme stabilit șapte Cod de distribuție, care 388 00:16:28,730 --> 00:16:31,490 are cel puțin un argument, care este doar un șir. 389 00:16:31,490 --> 00:16:33,460 Un șir de cod SQL. 390 00:16:33,460 --> 00:16:36,700 Deci, esti pe cale de a învăța cum să scrie Structured Query Language. 391 00:16:36,700 --> 00:16:41,270 >> Dacă vreau să inserați un rând nou în mea baza de date pentru că cineva a depus 392 00:16:41,270 --> 00:16:47,600 un formular de codul meu, aș face literalmente scrie INSERT INTO utilizatori următoarele 393 00:16:47,600 --> 00:16:52,800 domenii: numele de utilizator, virgulă, numele, valorile, 394 00:16:52,800 --> 00:16:57,480 și acum am nevoie pentru a insera ceva de genul Malan, și citat, 395 00:16:57,480 --> 00:17:01,490 încheiat citatul "David Malan." Si acum chiar si pentru cei nefamiliarizati cu SQL, 396 00:17:01,490 --> 00:17:07,830 de ce sunt eu, folosind ghilimele simple în interiorul acestui șir verde? 397 00:17:07,830 --> 00:17:10,790 398 00:17:10,790 --> 00:17:13,040 Care ar putea fi motivul aici? 399 00:17:13,040 --> 00:17:14,609 >> Observați că sunt co-amestec de două limbi. 400 00:17:14,609 --> 00:17:18,099 Interogare este o funcție PHP, dar este nevoie de un argument. 401 00:17:18,099 --> 00:17:21,740 Și acest argument trebuie să se fi scris în altă limbă numit 402 00:17:21,740 --> 00:17:23,500 SQL, Limbaj de interogare structurat. 403 00:17:23,500 --> 00:17:27,940 Deci, tot ceea ce am tocmai au subliniat aici 404 00:17:27,940 --> 00:17:30,380 este acest limbaj numit SQL. 405 00:17:30,380 --> 00:17:36,290 Deci, ce e cu ghilimelele simple, doar ca o verificare rapidă bun-simț? 406 00:17:36,290 --> 00:17:37,324 Daţi-i drumul. 407 00:17:37,324 --> 00:17:37,990 Sunt siruri de caractere. 408 00:17:37,990 --> 00:17:41,590 Deci, citat, unquote Malan și citat, încheiat citatul David Malan sunt siruri de caractere. 409 00:17:41,590 --> 00:17:45,210 Și gândesc intuitiv acum, știind ceea ce știi despre C și PHP, 410 00:17:45,210 --> 00:17:50,220 de ce nu am face acest lucru, pe care eu de obicei ghilimele second-hand de siruri de caractere? 411 00:17:50,220 --> 00:17:52,310 De ce nu vreau să fac asta? 412 00:17:52,310 --> 00:17:52,810 Da? 413 00:17:52,810 --> 00:17:53,685 >> Audiența: [inaudibil] 414 00:17:53,685 --> 00:17:56,695 415 00:17:56,695 --> 00:17:57,570 DAVID MALAN: Exact. 416 00:17:57,570 --> 00:17:59,653 Pentru că eu sunt deja folosind ghilimele duble pe drum 417 00:17:59,653 --> 00:18:01,929 în afara argumentului la funcția PHP, 418 00:18:01,929 --> 00:18:03,470 Mi-ar confunda doar interpretul. 419 00:18:03,470 --> 00:18:04,860 Acesta nu va ști, nu astea merg impreuna? 420 00:18:04,860 --> 00:18:05,735 Nu acestea merg împreună? 421 00:18:05,735 --> 00:18:06,810 Nu acestea merg împreună? 422 00:18:06,810 --> 00:18:08,070 Deci, m-am supleant în schimb. 423 00:18:08,070 --> 00:18:11,784 >> Sau aș putea face ceva de genul asta, Citat backslash sau backslash citat. 424 00:18:11,784 --> 00:18:14,200 Sincer, care tocmai începe să obține foarte greu de citit și urât. 425 00:18:14,200 --> 00:18:16,790 Dar asta ar atinge același rezultat, de asemenea. 426 00:18:16,790 --> 00:18:19,760 >> Deci, dacă ar fi să execute această interogare acum, să vedem ce se întâmplă. 427 00:18:19,760 --> 00:18:22,740 Am de gând să merg mai departe acum și mai degrabă decât să execute codul PHP, care 428 00:18:22,740 --> 00:18:24,610 este în cazul în care veți juca în problema set de șapte, 429 00:18:24,610 --> 00:18:27,200 Am de gând să merg în schimb la PHP MyAdmin. 430 00:18:27,200 --> 00:18:29,770 Și am de gând manual pentru a merge la fila SQL, 431 00:18:29,770 --> 00:18:31,580 și lasă-mă mări interfata. 432 00:18:31,580 --> 00:18:34,007 Și am de gând pentru a lipi în lucru doar am scris. 433 00:18:34,007 --> 00:18:36,090 Și de codificare culoare are schimbat un pic acum, 434 00:18:36,090 --> 00:18:38,750 doar pentru că formatele de program lucrurile un pic diferit. 435 00:18:38,750 --> 00:18:41,960 Dar observați că tot ce am făcut este am spus, introduceți în Utilizatori. 436 00:18:41,960 --> 00:18:45,790 Am specificat, apoi, într-o virgulă separate lista paranteze doi 437 00:18:45,790 --> 00:18:48,850 domenii pe care vreau să insera, și apoi am spus literalmente valori 438 00:18:48,850 --> 00:18:51,510 urmat de un alt paren, și apoi cele două valori 439 00:18:51,510 --> 00:18:53,520 Vreau să plug-in, și acum pentru o bună măsură, 440 00:18:53,520 --> 00:18:55,010 Voi pune un punct și virgulă la sfârșitul anului. 441 00:18:55,010 --> 00:18:56,570 Deci, acest lucru nu este C. Aceasta nu este PHP. 442 00:18:56,570 --> 00:18:59,970 Acest lucru este acum SQL, și eu l lipirea în această interfață web care este 443 00:18:59,970 --> 00:19:02,710 doar de gând să mă lase, de îndată ce am faceți clic pe Go, 444 00:19:02,710 --> 00:19:08,060 executa această interogare în baza de date funcționare în interiorul IDE CS50. 445 00:19:08,060 --> 00:19:09,470 >> Deci acest lucru este bun. 446 00:19:09,470 --> 00:19:12,520 Observați că a spus un rând introduce, a mers super rapid, 447 00:19:12,520 --> 00:19:15,190 0.0054 secunde pentru a introduce aceste date. 448 00:19:15,190 --> 00:19:16,610 Deci, asta sună destul de sănătos. 449 00:19:16,610 --> 00:19:19,350 Acesta reformulat interogarea mea pentru mine aici doar ca să-l văd 450 00:19:19,350 --> 00:19:21,730 în fel de versiune culori diferite. 451 00:19:21,730 --> 00:19:24,540 Dar acum, dacă am faceți clic Cautati, observați că, chiar 452 00:19:24,540 --> 00:19:29,070 deși există o mulțime de dezordine pe ecranul, masa mea are acum două rânduri. 453 00:19:29,070 --> 00:19:30,700 >> Deci, lasă-mă să merg mai departe și face o altă. 454 00:19:30,700 --> 00:19:33,760 În loc de aceasta, permiteți-mi să du-te la tab-ul SQL din nou. 455 00:19:33,760 --> 00:19:40,723 Și de data aceasta voi introduce ceva de genul Rob și numele lui va fi Rob Bowden. 456 00:19:40,723 --> 00:19:42,330 Bowden. 457 00:19:42,330 --> 00:19:44,040 Să faceți clic pe Salvare. 458 00:19:44,040 --> 00:19:46,140 Hopa, mai degrabă Du-te. 459 00:19:46,140 --> 00:19:48,890 >> Faceți clic pe Răsfoire, din nou, și acum am observat două rânduri. 460 00:19:48,890 --> 00:19:52,390 Deci, aceasta este doar un mod mai complex mod de deschidere Google Spreadsheets 461 00:19:52,390 --> 00:19:54,010 și doar tastând un rând într-o coloană. 462 00:19:54,010 --> 00:19:57,070 Dar ceea ce este esențial este că acum avem sintaxa 463 00:19:57,070 --> 00:20:00,220 cu care să scrie cod, astfel încât în cele din urmă, am putea de fapt 464 00:20:00,220 --> 00:20:01,790 face unele și acest lucru. 465 00:20:01,790 --> 00:20:05,380 Amintiti-va ca suporturi PHP variabile globale. super- 466 00:20:05,380 --> 00:20:08,415 >> Ce este în interiorul dolar semneze GET subliniere în PHP? 467 00:20:08,415 --> 00:20:10,290 Am luat o privire la un sau două exemple simple. 468 00:20:10,290 --> 00:20:15,640 Și în PSet6, amintesc aveți salut dot PHP care utilizează această variabilă. 469 00:20:15,640 --> 00:20:17,870 Ce se acolo? 470 00:20:17,870 --> 00:20:21,015 Sau ce este? 471 00:20:21,015 --> 00:20:22,522 Un pic mai tare. 472 00:20:22,522 --> 00:20:23,790 >> Audiența: [inaudibil] 473 00:20:23,790 --> 00:20:25,030 >> DAVID MALAN: Este o zăpadă semințe de matrice, care 474 00:20:25,030 --> 00:20:27,714 este doar un mod de a spune o fantezie matrice care are perechi de valoare cheie. 475 00:20:27,714 --> 00:20:28,880 Și tastele nu sunt numerice. 476 00:20:28,880 --> 00:20:30,420 Sunt cuvinte sau siruri de caractere. 477 00:20:30,420 --> 00:20:32,750 Și în special, ceea ce sunt acele perechi valoare-cheie? 478 00:20:32,750 --> 00:20:35,110 De unde vin ei? 479 00:20:35,110 --> 00:20:35,620 Ne pare rău? 480 00:20:35,620 --> 00:20:36,994 >> Audiența: [inaudibil] 481 00:20:36,994 --> 00:20:37,660 DAVID MALAN: Nu? 482 00:20:37,660 --> 00:20:40,700 Unde cei cheie perechi de valoare provin de la? 483 00:20:40,700 --> 00:20:42,490 Mai spune o dată? 484 00:20:42,490 --> 00:20:44,610 Din nou? 485 00:20:44,610 --> 00:20:46,472 Sunt singura ceva audiere? 486 00:20:46,472 --> 00:20:47,810 >> [Râsete] 487 00:20:47,810 --> 00:20:49,042 >> Asta-i drept, da? 488 00:20:49,042 --> 00:20:50,435 >> Audiența: [inaudibil] 489 00:20:50,435 --> 00:20:52,560 DAVID MALAN: Da, ei provin din șirul de interogare. 490 00:20:52,560 --> 00:20:55,380 Deci, dacă vă înapoi în timp pentru a atunci când ne-am jucat cu Google 491 00:20:55,380 --> 00:20:59,600 și ne-am dus la Google.com slash căutare semn de întrebare q este egal cu pisici, 492 00:20:59,600 --> 00:21:03,550 dacă ar fi să lovi Enter și dacă Google au fost implementate în PHP, 493 00:21:03,550 --> 00:21:07,017 Cod PHP care Google a scris ar avea acces la semn dolar 494 00:21:07,017 --> 00:21:11,600 sublinia GET interiorul care este un Q-cheie numit și o valoare 495 00:21:11,600 --> 00:21:17,680 numitele pisici care se poate folosi apoi folosit pentru a face o căutare reală cu. 496 00:21:17,680 --> 00:21:20,860 >> Deci, de fapt, ceea ce am de gând să face acum este reveni la codul meu PHP 497 00:21:20,860 --> 00:21:23,140 pe care le veți vedea din nou mai mult în PSet7. 498 00:21:23,140 --> 00:21:25,440 Și în loc de conectarea în valori greu codificate care 499 00:21:25,440 --> 00:21:27,630 nu pare ca o foarte site-ul dinamic, 500 00:21:27,630 --> 00:21:30,680 Am de gând să vă dau un teaser de ce s-ar face codul actuale. 501 00:21:30,680 --> 00:21:32,854 Te-ar pune în două întrebare marchează ca aceasta. 502 00:21:32,854 --> 00:21:34,270 Nu știu ce numele de utilizator este. 503 00:21:34,270 --> 00:21:37,390 Nu știu ce Numele va fi, 504 00:21:37,390 --> 00:21:39,470 dar știu că pot le obține dinamic. 505 00:21:39,470 --> 00:21:43,420 >> Deci, în cazul în care codul de noi scriem acum este codul rulează pe serverele Google, 506 00:21:43,420 --> 00:21:46,940 sau în cazul în care acest lucru este Hello punct PHP, care vine cu PSet6, 507 00:21:46,940 --> 00:21:48,650 Am de gând să treacă în funcția de interogare 508 00:21:48,650 --> 00:21:51,450 la fel ca printf, două alte argumente. 509 00:21:51,450 --> 00:21:57,120 GET, citat, numele de utilizator citatul, și de a lua, citat, numele încheiat citatul. 510 00:21:57,120 --> 00:22:00,720 Și acum, observa Ce Structura generală este aici. 511 00:22:00,720 --> 00:22:03,320 Am din stânga în partea stângă a apelului, 512 00:22:03,320 --> 00:22:05,480 această funcție numită interogare în PHP. 513 00:22:05,480 --> 00:22:08,160 Eu încă mai au, ca un prim argument, doar un șir de text. 514 00:22:08,160 --> 00:22:11,000 >> Dar că șir de text este scris intr-o limba numita SQL. 515 00:22:11,000 --> 00:22:12,616 Și sincer, nu e un limbaj mare. 516 00:22:12,616 --> 00:22:14,990 Vom doar vorbi despre aceasta în mod oficial astăzi, într-adevăr. 517 00:22:14,990 --> 00:22:17,031 Și apoi în problema set șapte, nu e relativ 518 00:22:17,031 --> 00:22:18,800 câteva caracteristici pe care suntem O să impulsioneze. 519 00:22:18,800 --> 00:22:22,530 Semnele de întrebare, deși, în medie conectați o valoare aici, și plug-in-un alt valoare 520 00:22:22,530 --> 00:22:23,130 Aici. 521 00:22:23,130 --> 00:22:26,010 Și notificare, am omis ce din întreaga naibii quote-- 522 00:22:26,010 --> 00:22:30,470 it-- în jurul cotației marchează acest moment. 523 00:22:30,470 --> 00:22:34,930 Am omis citat mărci jurul semn de întrebare, 524 00:22:34,930 --> 00:22:36,410 Ne pare rău, de data aceasta în jurul valorii de. 525 00:22:36,410 --> 00:22:38,870 >> Deci, ce e frumos despre acest Întrebarea facilitate marcă ce 526 00:22:38,870 --> 00:22:42,830 PHP tinde să sprijine, Ruby și Python și alte limbi, 527 00:22:42,830 --> 00:22:45,730 acest lucru înseamnă doar plug-in unele valoare aici și știi ce? 528 00:22:45,730 --> 00:22:48,300 Îți dai seama dacă se utilizează ghilimele simple sau duble. citate 529 00:22:48,300 --> 00:22:50,966 Nu mă deranjează cu cele Detalii neinteresante intelectual. 530 00:22:50,966 --> 00:22:53,780 Dar, asigurați-vă că este corect astfel încât în ​​cele din urmă este codul meu 531 00:22:53,780 --> 00:22:57,010 operațional și în condiții de siguranță, care va avea un sens înainte de mult timp. 532 00:22:57,010 --> 00:23:00,460 >> Acum, cât de multe argumente total de, doar pentru a fie clar, este funcția luarea de interogare? 533 00:23:00,460 --> 00:23:05,240 534 00:23:05,240 --> 00:23:07,581 Oricine vrea să voteze pentru mai mult de două? 535 00:23:07,581 --> 00:23:08,080 3? 536 00:23:08,080 --> 00:23:10,001 Sigur, de ce? 537 00:23:10,001 --> 00:23:10,920 De ce trei? 538 00:23:10,920 --> 00:23:12,305 >> Audiența: [inaudibil] 539 00:23:12,305 --> 00:23:13,180 DAVID MALAN: Exact. 540 00:23:13,180 --> 00:23:14,610 Prima parte este șirul. 541 00:23:14,610 --> 00:23:18,640 Al doilea argument este un semn dolar sublinia GET suport nume de utilizator. 542 00:23:18,640 --> 00:23:21,950 Și al treilea argument este același lucru, dar doar numele. 543 00:23:21,950 --> 00:23:24,590 Deci, cu alte cuvinte, acum dacă am avut un formular web 544 00:23:24,590 --> 00:23:27,149 care a avut la câmpuri de text, una pentru numele de utilizator al utilizatorului, 545 00:23:27,149 --> 00:23:29,690 una pentru numele lui sau ei, doar ca tine ar vedea într-un site web 546 00:23:29,690 --> 00:23:32,120 atunci când vă înregistrați pentru unele site-ul, aceasta ar putea 547 00:23:32,120 --> 00:23:35,450 fie codul de pe partea din spate, care nu, de fapt introducerea acum 548 00:23:35,450 --> 00:23:37,220 în baza de date. 549 00:23:37,220 --> 00:23:40,870 >> Acum în schimb, să fast forward. 550 00:23:40,870 --> 00:23:43,840 Să presupunem că un utilizator este acum logare si doriti 551 00:23:43,840 --> 00:23:48,860 pentru a scrie cod PHP care verifică dacă persoana care tocmai a autentificat 552 00:23:48,860 --> 00:23:52,250 este de fapt un utilizator, puteți utilizați sintaxa destul de simplu. 553 00:23:52,250 --> 00:23:55,832 Puteți spune SELECT, să spunem stele, în cazul în care stele înseamnă totul. 554 00:23:55,832 --> 00:23:57,540 Nu știu ce-am vreau, așa că dă-mi 555 00:23:57,540 --> 00:24:01,585 toate coloanele din tabel numit utilizatorii în cazul în care, și acest lucru este frumos. 556 00:24:01,585 --> 00:24:03,710 Selectați susține ceea ce este numit un predicat, care este 557 00:24:03,710 --> 00:24:06,630 ca o modalitate de a se califica ceea ce vrei. 558 00:24:06,630 --> 00:24:10,590 În cazul în care numele de utilizator este egal cu Citat, încheiat citatul Malan. 559 00:24:10,590 --> 00:24:13,680 Deci aici, am încorporat în interiorul argumentul 560 00:24:13,680 --> 00:24:16,110 la o funcție PHP, o linie de cod SQL. 561 00:24:16,110 --> 00:24:18,680 Și codul SQL acest timpul este literalmente va 562 00:24:18,680 --> 00:24:21,790 pentru a căuta citat, încheiat citatul Malan. 563 00:24:21,790 --> 00:24:24,420 >> Acum, că nu e tot ce este util, așa că am de gând să săriți peste asta 564 00:24:24,420 --> 00:24:28,650 și am de gând să lase acest sfat de la Brady, și du-te 565 00:24:28,650 --> 00:24:30,990 și plug-in în loc un semn de întrebare aici. 566 00:24:30,990 --> 00:24:33,290 Deci, doar pentru a fi clar, ceea ce ar trebui să de-al doilea argument mea 567 00:24:33,290 --> 00:24:37,480 fi în cazul în care cineva tocmai a autentificat și eu doriți să verificați dacă el sau ea este de fapt 568 00:24:37,480 --> 00:24:39,265 un utilizator? 569 00:24:39,265 --> 00:24:40,140 Audiența: [inaudibil] 570 00:24:40,140 --> 00:24:40,890 DAVID MALAN: Da. 571 00:24:40,890 --> 00:24:44,120 Am auzit dolar semn de subliniere Trimiteti solicitare, numele de utilizator încheiat citatul. 572 00:24:44,120 --> 00:24:50,040 Și că ar trebui să se întoarcă la mine oricare dintre rânduri în baza mea de date 573 00:24:50,040 --> 00:24:51,986 care au un nume de utilizator de Malan. 574 00:24:51,986 --> 00:24:54,860 Acum sperăm, am de gând să mă întorc zero, în cazul în care nu este Malan fost aici, 575 00:24:54,860 --> 00:24:56,290 sau o dacă are. 576 00:24:56,290 --> 00:24:59,026 Nu ar trebui să mă întorc doi sau trei sau patru. 577 00:24:59,026 --> 00:24:59,526 Ce? 578 00:24:59,526 --> 00:25:00,220 >> Audiența: [inaudibil] 579 00:25:00,220 --> 00:25:01,120 >> DAVID MALAN: I-am spus unic, nu? 580 00:25:01,120 --> 00:25:01,750 Motiv simplu. 581 00:25:01,750 --> 00:25:04,030 Pentru că am spus că se află trebuie să fie unic, în mod logic doar, 582 00:25:04,030 --> 00:25:07,940 poti avea doar zero sau unul Malans în această bază de date tabel special. 583 00:25:07,940 --> 00:25:10,965 Acum ca o paranteza, doar ca ați văzut aceasta, chiar dacă am păstra folosind GET 584 00:25:10,965 --> 00:25:14,350 și chiar dacă PSet6 utilizat numai GET, puteți avea cu siguranță POST. 585 00:25:14,350 --> 00:25:17,212 Și reamintească faptul că este un alt post tehnica pentru transmiterea de informații 586 00:25:17,212 --> 00:25:19,170 dintr-o formă, dar nu apare în URL-ul. 587 00:25:19,170 --> 00:25:22,690 E un pic mai sigur sigur pentru lucruri cum ar fi numele de utilizator și parole, 588 00:25:22,690 --> 00:25:25,210 care PSet7 va fi, în fapt, implică. 589 00:25:25,210 --> 00:25:28,130 >> Deci, hai sa facem acest lucru în PHP MyAdmin și să vedem ce se întâmplă. 590 00:25:28,130 --> 00:25:30,020 Am de gând să merg la fila MySQL. 591 00:25:30,020 --> 00:25:34,450 Și observați că valoarea implicită pentru PHP MyAdmin, doar pentru a încerca să fie de ajutor, 592 00:25:34,450 --> 00:25:37,050 este de a selecta stele de la utilizatorii care unul. 593 00:25:37,050 --> 00:25:39,430 Ei bine, unul este întotdeauna adevărat, astfel încât acest lucru are prostie efectiv 594 00:25:39,430 --> 00:25:40,400 de a selecta doar tot. 595 00:25:40,400 --> 00:25:42,691 Dar am de gând să fie un pic mai pedant si manual 596 00:25:42,691 --> 00:25:45,920 tip out SELECT stele de la utilizatori. 597 00:25:45,920 --> 00:25:48,294 >> Acum tehnic, puteți cita numele tabelelor. 598 00:25:48,294 --> 00:25:50,460 Este rar ca trebuie sa, dar acestea nu sunt observați 599 00:25:50,460 --> 00:25:52,240 citate normale de pe tastatură SUA. 600 00:25:52,240 --> 00:25:54,760 Aceasta este așa-numita backtick, care este, în general, pe de o parte din stânga sus 601 00:25:54,760 --> 00:25:56,000 colț de tastatură. 602 00:25:56,000 --> 00:25:58,500 Dar e rar că veți de fapt, trebuie să deranjez cu asta, 603 00:25:58,500 --> 00:25:59,950 așa că am să le omite doar oricum. 604 00:25:59,950 --> 00:26:02,280 Deci, acum, lasă-mă să merg mai departe și a lovit du-te. 605 00:26:02,280 --> 00:26:06,616 Și câte rânduri ar trebui să mă înapoi, atunci când am selectați stea la utilizatori? 606 00:26:06,616 --> 00:26:08,407 >> Audiența: [inaudibil] 607 00:26:08,407 --> 00:26:09,990 DAVID MALAN: Numărul de rânduri, sigur. 608 00:26:09,990 --> 00:26:12,390 Dar câți în acest Povestea de beton chiar acum? 609 00:26:12,390 --> 00:26:14,640 Doi, pentru că nu a fost mine și nu a fost Rob. 610 00:26:14,640 --> 00:26:19,370 Deci, dacă am faceți clic pe Du-te, am vedea că vizual Am ajuns înapoi, într-adevăr, două rânduri. 611 00:26:19,370 --> 00:26:22,060 Există o mulțime de dezordine cu privire la ecran, dar văd doar două rânduri. 612 00:26:22,060 --> 00:26:28,580 În schimb, în ​​cazul în care fac acest lucru din nou și de a face SELECT stele din partea utilizatorilor, în cazul în care numele de utilizator 613 00:26:28,580 --> 00:26:31,840 este egal cu Citat, citatul Malan, acum, dacă mă faceți clic pe Go, 614 00:26:31,840 --> 00:26:33,970 Am doar o să mă întorc un rând. 615 00:26:33,970 --> 00:26:36,499 Și, în fine, dacă fac ceva de genul asta, să presupunem că 616 00:26:36,499 --> 00:26:38,290 că nu-mi pasă de obtinerea totul, 617 00:26:38,290 --> 00:26:41,020 care este un fel de sens acum, pentru că există doar două coloane. 618 00:26:41,020 --> 00:26:43,103 Nu e ca și cum am selectarea o mare cantitate de date. 619 00:26:43,103 --> 00:26:46,720 Să presupunem că mergi înainte și selectați nume din 620 00:26:46,720 --> 00:26:51,990 utilizatori, în cazul în care numele de utilizator este egal cu Malan, ceea ce este frumos despre SQL sincer, 621 00:26:51,990 --> 00:26:54,290 este faptul că de fapt doar nu ceea ce-l spun să faci. 622 00:26:54,290 --> 00:26:57,550 E destul de succint, dar literalmente doar spun ceea ce vrei să faci. 623 00:26:57,550 --> 00:27:01,130 Selectați numele de utilizatori unde numele de utilizator este egal cu Malan. 624 00:27:01,130 --> 00:27:03,440 Și într-adevăr este că explicit. 625 00:27:03,440 --> 00:27:08,410 Deci, acum, dacă am lovit Du-te, cât de multe rânduri am să mă întorc? 626 00:27:08,410 --> 00:27:10,770 Unu, pentru că este doar Malan, sperăm. 627 00:27:10,770 --> 00:27:13,100 Sau zero, dacă nu e acolo, dar maxim. 628 00:27:13,100 --> 00:27:17,610 >> Și câte coloane va mă întorc? 629 00:27:17,610 --> 00:27:18,450 Câte coloane? 630 00:27:18,450 --> 00:27:20,658 De data aceasta, Mă duc pentru a obține o pentru că nu am 631 00:27:20,658 --> 00:27:22,380 selectați stele, care este totul. 632 00:27:22,380 --> 00:27:27,900 Acum eu sunt selectarea doar numele, așa că am doar mă întorc pe o coloană și un rând. 633 00:27:27,900 --> 00:27:31,730 Și se pare un fel de adecvat ridicol, doar în căutarea super- 634 00:27:31,730 --> 00:27:33,060 mic ca aceasta. 635 00:27:33,060 --> 00:27:34,290 Deci, ceea ce într-adevăr se întâmplă se? 636 00:27:34,290 --> 00:27:36,890 Când executați un SQL interogare folosind select, 637 00:27:36,890 --> 00:27:38,700 ce vei primi înapoi de la baza de date 638 00:27:38,700 --> 00:27:42,970 este ca un tabel temporar cu rânduri și coloane, poate, 639 00:27:42,970 --> 00:27:46,260 dar că omite nimic din ce nu a fost de fapt ales de tine. 640 00:27:46,260 --> 00:27:49,010 Deci, e ca si cum cineva ar fi o mare foaie de calcul a tuturor elevilor 641 00:27:49,010 --> 00:27:51,610 înregistrat pentru unele grup de student, și spui, 642 00:27:51,610 --> 00:27:55,097 da-mi toate boboc care au înregistrată pentru grupul nostru de studenți, ceea ce 643 00:27:55,097 --> 00:27:56,930 colegul dumneavoastră în grup de studenti s-ar putea face 644 00:27:56,930 --> 00:27:58,430 este acestea ar putea preda doar tine tot foaia de calcul. 645 00:27:58,430 --> 00:27:59,742 E ca și cum spune selectați stele. 646 00:27:59,742 --> 00:28:02,200 Și e un pic enervant în cazul în care ai vrut doar boboc. 647 00:28:02,200 --> 00:28:05,640 Și așa, dacă ați spus în schimb, selectați stele din tabelul de baze de date 648 00:28:05,640 --> 00:28:08,470 în cazul în care este egal cu anul Citat, student în anul întâi citatul, 649 00:28:08,470 --> 00:28:10,810 e ca și cum prietenul tău în grupul studenților 650 00:28:10,810 --> 00:28:13,770 literalmente evidențiate și copiate numai rândurile boboc, 651 00:28:13,770 --> 00:28:16,780 le lipite într-o nouă Google Foaie de calcul sau un fișier Excel, 652 00:28:16,780 --> 00:28:18,860 și ai dat verso numai fișier rezultat. 653 00:28:18,860 --> 00:28:21,710 Asta e tot ce se intampla pe conceptual aici. 654 00:28:21,710 --> 00:28:23,920 >> Deci, în cele din urmă, putem face unele lucruri destul de fantezie 655 00:28:23,920 --> 00:28:26,560 prin stocarea lucruri ca numele de utilizator și parole și altele asemenea. 656 00:28:26,560 --> 00:28:30,310 Dar, se pare, ar trebui să facem un pic diferit decât aceasta. 657 00:28:30,310 --> 00:28:34,750 Nu e ca la numai inteligent stoca un nume de utilizator și o parolă. 658 00:28:34,750 --> 00:28:37,790 Cineva mai devreme, cred că aici, a sugerat un ID. 659 00:28:37,790 --> 00:28:40,787 Acum un ID ar putea fi ca un Harvard ID sau Yale de identitate Net, 660 00:28:40,787 --> 00:28:42,870 dar ar putea fi mai simplu în cazul nostru de baze de date. 661 00:28:42,870 --> 00:28:45,120 Și într-adevăr, comună cazul este de a avea o altă coloană. 662 00:28:45,120 --> 00:28:46,953 Și am de gând să merg înainte și edita masa mea. 663 00:28:46,953 --> 00:28:49,521 Și dacă joci cu Această interfață pentru PSet7, 664 00:28:49,521 --> 00:28:51,770 veți vedea că puteți verifica acest buton aici și adăugați 665 00:28:51,770 --> 00:28:53,750 un câmp la începutul tabelului. 666 00:28:53,750 --> 00:28:56,720 Și acum, dacă mă faceți clic pe Du-te, va să-mi dea una dintre aceste forme 667 00:28:56,720 --> 00:28:57,600 de la mai devreme. 668 00:28:57,600 --> 00:29:00,170 Am de gând să adăugați un câmp numit ID. 669 00:29:00,170 --> 00:29:03,070 Și am de gând să-l un tip numeric face. 670 00:29:03,070 --> 00:29:05,362 >> Am o grămadă de valori pentru valori numerice. 671 00:29:05,362 --> 00:29:08,677 Mă duc pentru a alege un INT și nu vă faceți griji cu privire la dimensiunile disparate. 672 00:29:08,677 --> 00:29:10,510 Nu trebuie să specificați o lungime sau o valoare, 673 00:29:10,510 --> 00:29:13,710 pentru ca va fi 32 de biți, indiferent de ce. 674 00:29:13,710 --> 00:29:16,070 Atributele, nu am vazut inainte. 675 00:29:16,070 --> 00:29:18,410 Nici un interes în oricare dintre aceste opțiunile de meniu de data asta? 676 00:29:18,410 --> 00:29:21,890 677 00:29:21,890 --> 00:29:23,745 Pentru un INT? 678 00:29:23,745 --> 00:29:24,620 Ce ai propus? 679 00:29:24,620 --> 00:29:27,350 680 00:29:27,350 --> 00:29:28,445 Nu? 681 00:29:28,445 --> 00:29:29,570 Efectuați oricare dintre aceste sens? 682 00:29:29,570 --> 00:29:30,536 Da. 683 00:29:30,536 --> 00:29:31,900 Da, nesemnat, nu? 684 00:29:31,900 --> 00:29:35,930 >> În general, în cazul în care vom da toată lumea un număr unic, care 685 00:29:35,930 --> 00:29:38,200 este în cazul în care această poveste este merge, eu chiar vreau doar 686 00:29:38,200 --> 00:29:41,919 o persoană să aibă numărul de zero ca și unu și doi și trei și patru. 687 00:29:41,919 --> 00:29:43,710 Nu am nevoie pentru a face față cu numere negative. 688 00:29:43,710 --> 00:29:45,210 Mi se pare ca complexitate nejustificată. 689 00:29:45,210 --> 00:29:48,470 Vreau patru miliarde de valori posibile, nu patru miliarde posibile valori, 690 00:29:48,470 --> 00:29:50,699 așa că am doar dublat capacitate de INT meu. 691 00:29:50,699 --> 00:29:53,490 Ca o paranteza, dacă doriți să se refere acest lucru ceva de genul Facebook, 692 00:29:53,490 --> 00:29:56,190 înapoi în fel de ziua mea, atunci când Facebook a ieșit primul, 693 00:29:56,190 --> 00:29:59,510 Cred ceea ce au fost folosind în baza lor de date MySQL 694 00:29:59,510 --> 00:30:02,856 pentru a stoca un utilizator identificator, a fost doar un INT. 695 00:30:02,856 --> 00:30:05,230 Dar, desigur, există o mulțime de oameni reali din lume. 696 00:30:05,230 --> 00:30:07,438 Există o mulțime de fals Facebook conturile din lume. 697 00:30:07,438 --> 00:30:11,701 Și astfel în cele din urmă, Facebook umplut dimensiunea unui INT, patru miliarde de 698 00:30:11,701 --> 00:30:12,200 valoare. 699 00:30:12,200 --> 00:30:15,032 Motiv pentru care, dacă te uiți în jurul valorii de site-uri web și nu există 700 00:30:15,032 --> 00:30:16,740 care pot să vă spun ce ID-ul dvs. este unic. 701 00:30:16,740 --> 00:30:19,781 Și dacă nu ați ales un nume de utilizator în Facebook, veți vedea ID-ul unic. 702 00:30:19,781 --> 00:30:23,080 Cred că e profilul PHP dot semn de întrebare ID egal ceva. 703 00:30:23,080 --> 00:30:27,210 Care este acum ceva ca o mare INT, sau un lung timp, dacă va fi, 704 00:30:27,210 --> 00:30:29,700 care este o valoare pe 64 de biți sau ceva similar. 705 00:30:29,700 --> 00:30:33,620 >> Deci, chiar și în lumea reală face aceste probleme în cele din urmă, uneori, contează. 706 00:30:33,620 --> 00:30:37,600 Și se pare că aici, dacă sunt oferind tuturor utilizatorilor mei un ID unic, 707 00:30:37,600 --> 00:30:41,750 Vreau să fiu foarte explicită și minim face acest domeniu unic. 708 00:30:41,750 --> 00:30:44,750 Dar se pare că există un bucată de nomenclatură și astăzi 709 00:30:44,750 --> 00:30:46,470 care este o cheie primară. 710 00:30:46,470 --> 00:30:49,800 Dacă sunteți proiectarea unei baze de date masă și te știe în avans 711 00:30:49,800 --> 00:30:55,580 că una dintre coloanele din tabelul menționat ar trebui să și va identifica în mod unic rânduri 712 00:30:55,580 --> 00:30:58,500 în tabel, pe care doriți să specifica-o și spune în baza de date, 713 00:30:58,500 --> 00:31:00,250 aceasta este cheia primară. 714 00:31:00,250 --> 00:31:02,110 Ar putea fi duplicate în alte domenii, 715 00:31:02,110 --> 00:31:06,330 dar eu spun că această baza de date este primar mea, domeniul meu cel mai important, 716 00:31:06,330 --> 00:31:08,420 care este garantat de a fi unic. 717 00:31:08,420 --> 00:31:09,660 >> Acum, acest lucru pare redundant. 718 00:31:09,660 --> 00:31:13,830 Eu sunt acum propune ca noi adauga, făcând clic pe Salvare aici, 719 00:31:13,830 --> 00:31:17,210 un called-- câmp și am de gând a merge mai departe și faceți clic pe AI, 720 00:31:17,210 --> 00:31:19,720 ne vom întoarce la că într-un moment, Salvare. 721 00:31:19,720 --> 00:31:22,540 Eu propun acum ca masa mea arata ca acest lucru. 722 00:31:22,540 --> 00:31:26,305 Am un câmp INT numit ID, un câmp CHAR numit Username, 723 00:31:26,305 --> 00:31:31,100 un câmp VARCHAR pus numele, dar ID-ul, dacă e primar și, prin urmare, unic, 724 00:31:31,100 --> 00:31:33,760 de ce am irosi timp ce introducerea 725 00:31:33,760 --> 00:31:39,140 în mod eficient este un al doilea unic câmp numit ID, care este un INT? 726 00:31:39,140 --> 00:31:41,980 >> Nume, rechemare, a fost deja unic, ne-a declarat. 727 00:31:41,980 --> 00:31:45,350 Așa că în mod logic, nu aveți nevoie de orice experiență de baze de date pentru un motiv 728 00:31:45,350 --> 00:31:47,570 prin aceasta, de ce s-ar putea am introdus 729 00:31:47,570 --> 00:31:50,065 o INT ca identificator meu unic, precum și? 730 00:31:50,065 --> 00:31:52,740 731 00:31:52,740 --> 00:31:53,930 Ce se astea-- spun din nou? 732 00:31:53,930 --> 00:31:55,580 >> Audiența: [inaudibil] 733 00:31:55,580 --> 00:31:59,534 >> DAVID MALAN: Random accesul este mai ușor, de ce? 734 00:31:59,534 --> 00:32:00,410 >> Audiența: [inaudibil] 735 00:32:00,410 --> 00:32:02,367 DAVID MALAN: Da, e doar accesarea numere. 736 00:32:02,367 --> 00:32:04,750 Deci, dacă vă gândiți la acest adevarat este un tabel, cum ar fi o matrice, 737 00:32:04,750 --> 00:32:07,690 acum am identificatori unici că pot sări în jurul. 738 00:32:07,690 --> 00:32:11,520 Și mai mult decât atât este faptul că încă mai cât de mare este un INT va fi din nou? 739 00:32:11,520 --> 00:32:14,450 740 00:32:14,450 --> 00:32:15,800 32 biți sau patru octeți. 741 00:32:15,800 --> 00:32:17,750 >> Cât de mare este numele meu de utilizator va fi? 742 00:32:17,750 --> 00:32:20,310 743 00:32:20,310 --> 00:32:21,990 Maxim? 744 00:32:21,990 --> 00:32:22,880 16 bytes. 745 00:32:22,880 --> 00:32:26,080 >> Deci, dacă sunteți cu adevărat pese performanța de cod, 746 00:32:26,080 --> 00:32:31,390 cred că înapoi la PSet5, ați prefera pentru a căuta o valoare de patru octet sau un 16 747 00:32:31,390 --> 00:32:32,240 Valoarea octet, nu? 748 00:32:32,240 --> 00:32:33,810 Este într-adevăr este la fel de simplu ca asta. 749 00:32:33,810 --> 00:32:38,060 Trebuie să faci de patru ori mai mult de lucru pentru a căuta nume de utilizator pentru că cei 750 00:32:38,060 --> 00:32:38,830 sunt 16 bytes. 751 00:32:38,830 --> 00:32:41,320 Deci, va trebui să literalmente compara toate cele 16 bytes pentru a fi 752 00:32:41,320 --> 00:32:43,140 Sigur, da, aceasta este numele de utilizator vreau. 753 00:32:43,140 --> 00:32:46,610 Întrucât pentru o INT, puteți face-o cu doar patru octeți. 754 00:32:46,610 --> 00:32:49,212 >> Și, ca o paranteza pentru cei interesat de hardware-ul computerului, 755 00:32:49,212 --> 00:32:52,420 se pare că se poate potrivi ceva de genul un INT sau o valoare pe 32 de biți în ceva 756 00:32:52,420 --> 00:32:55,330 numit un registru într-un computer CPU, ceea ce înseamnă că e super, 757 00:32:55,330 --> 00:32:58,400 super rapid, chiar și la cel mai mic nivel de hardware-ul computerului. 758 00:32:58,400 --> 00:33:00,530 Deci, nu e doar avantaje peste tot în jurul. 759 00:33:00,530 --> 00:33:01,530 Deci, ce înseamnă acest lucru? 760 00:33:01,530 --> 00:33:04,850 De fapt, atunci când sunteți proiectarea unui tabelul bazei de date, aproape tot timpul 761 00:33:04,850 --> 00:33:07,170 ai de gând să nu aibă doar datele pe care le pasă, 762 00:33:07,170 --> 00:33:09,280 dar, de asemenea ceva de genul un identificator unic 763 00:33:09,280 --> 00:33:11,280 deoarece acest lucru este de gând să să facem alte lucruri. 764 00:33:11,280 --> 00:33:13,160 Și să excursie pe o problema aici. 765 00:33:13,160 --> 00:33:15,990 >> Să presupunem că utilizatorii să nu aibă doar numele de utilizator și numele, 766 00:33:15,990 --> 00:33:19,540 dar au, de asemenea, lucruri cum ar fi orasele și state și coduri zip, cel puțin 767 00:33:19,540 --> 00:33:20,432 aici, în SUA. 768 00:33:20,432 --> 00:33:22,390 Deci, am de gând să merg mai departe și doar spun repede, 769 00:33:22,390 --> 00:33:26,180 da-mi mai multe trei coloane la sfârșitul tabelului. 770 00:33:26,180 --> 00:33:28,900 Și acest lucru va fi City, acest lucru se va fi de stat, 771 00:33:28,900 --> 00:33:30,400 și acest lucru va fi Zip. 772 00:33:30,400 --> 00:33:32,710 >> Acum tipuri City, ce date ar trebui să fie asta, poate? 773 00:33:32,710 --> 00:33:35,460 774 00:33:35,460 --> 00:33:35,989 VARCHAR? 775 00:33:35,989 --> 00:33:37,780 Nu știu ce cel mai lung nume de oraș este. 776 00:33:37,780 --> 00:33:40,571 Undeva în America, nu e probabil un cuvânt ridicol de mult, 777 00:33:40,571 --> 00:33:43,605 Să mergem cu 255, oarecum istoric sau arbitrar. 778 00:33:43,605 --> 00:33:44,730 De stat, ceea ce vrei să faci? 779 00:33:44,730 --> 00:33:48,380 780 00:33:48,380 --> 00:33:50,367 Apel judecată, nu? 781 00:33:50,367 --> 00:33:51,700 Care este poate cel mai eficient? 782 00:33:51,700 --> 00:33:53,500 Câte personaje? 783 00:33:53,500 --> 00:33:55,950 Poate doar două, dacă putem scape cu a face doar, 784 00:33:55,950 --> 00:33:58,250 cum ar fi, MA de Massachusetts și așa mai departe. 785 00:33:58,250 --> 00:34:00,520 Deci, am de gând să merg o valoare CHAR de două. 786 00:34:00,520 --> 00:34:03,080 >> Codul zip este unul interesant. 787 00:34:03,080 --> 00:34:06,679 Suntem aici, în 02138, astfel încât sugerează că ar trebui să folosească ce? 788 00:34:06,679 --> 00:34:07,470 E un INT, nu? 789 00:34:07,470 --> 00:34:10,030 790 00:34:10,030 --> 00:34:12,800 INT, INT, scurt? 791 00:34:12,800 --> 00:34:14,521 Scurt ar funcționa. 792 00:34:14,521 --> 00:34:15,020 Nu? 793 00:34:15,020 --> 00:34:18,920 794 00:34:18,920 --> 00:34:20,870 CHAR sau cinci, dar vreau un INT. 795 00:34:20,870 --> 00:34:23,710 De ce împinge înapoi pe un INT? 796 00:34:23,710 --> 00:34:26,820 Convinge-mă de asta. 797 00:34:26,820 --> 00:34:29,210 Ce este stupid despre o INT, ideea mea? 798 00:34:29,210 --> 00:34:29,871 Da. 799 00:34:29,871 --> 00:34:31,199 >> Audiența: ocupă mai mult de memorie. 800 00:34:31,199 --> 00:34:32,909 >> DAVID MALAN: Luați mai multă memorie. 801 00:34:32,909 --> 00:34:35,310 Patru bytes, dar tu ești propunând un cod poștal 802 00:34:35,310 --> 00:34:39,000 ca cinci bytes sau cineva a fost ca un CHAR, care se simte ca nu-i așa, că nu e chiar 803 00:34:39,000 --> 00:34:39,620 cazul. 804 00:34:39,620 --> 00:34:40,489 >> Ei bine, povestea distractiv. 805 00:34:40,489 --> 00:34:43,179 Cu ani în urmă, când am folosit pentru a utiliza Microsoft Outlook pentru e-mail meu, 806 00:34:43,179 --> 00:34:45,150 În cele din urmă mi-am dorit pentru a comuta la Gmail. 807 00:34:45,150 --> 00:34:48,949 Și așa, am exportat toate mele contacte din Outlook ca un fișier CSV. 808 00:34:48,949 --> 00:34:50,699 Virgulă valori separate, care tocmai a însemnat am 809 00:34:50,699 --> 00:34:54,060 a avut toate prietenii numele meu și ultimul nume și numere de telefon și coduri poștale 810 00:34:54,060 --> 00:34:54,747 și toate astea. 811 00:34:54,747 --> 00:34:56,580 Și apoi am făcut greșeală de deschidere-l 812 00:34:56,580 --> 00:34:58,640 în Excel, care este o program de calcul tabelar care 813 00:34:58,640 --> 00:35:00,289 înțelege fișiere CSV ca le-am vazut. 814 00:35:00,289 --> 00:35:03,080 Dar apoi, cred că am lovit, cum ar fi, Comanda sau controlul S la un moment dat. 815 00:35:03,080 --> 00:35:06,250 Și Excel aparent, la momentul a avut o caracteristică prin care ori de câte ori 816 00:35:06,250 --> 00:35:08,100 a văzut un număr, a încercat să fie de ajutor. 817 00:35:08,100 --> 00:35:11,610 Și dacă acest număr a început cu zerouri, ar primi doar scăpa de ele. 818 00:35:11,610 --> 00:35:13,420 De ce ai nevoie de conducere zerouri pe numere întregi? 819 00:35:13,420 --> 00:35:15,140 Sunt lipsite de sens, matematic. 820 00:35:15,140 --> 00:35:17,530 Nu sunt lipsite de sens în sistemul US Postal. 821 00:35:17,530 --> 00:35:19,954 Deci, am avut de ani de zile, la această zi, eu încă 822 00:35:19,954 --> 00:35:22,370 au prieteni care, atunci când caz rar ca am nevoie de cineva e 823 00:35:22,370 --> 00:35:24,078 aborda aceste zile, Voi vedea în continuare că am 824 00:35:24,078 --> 00:35:26,767 au un prieten din Cambridge, Massachusetts, 2,138. 825 00:35:26,767 --> 00:35:29,350 Și e enervant dacă ești încercarea de a sorta de programatic 826 00:35:29,350 --> 00:35:30,975 genera plicuri sau doar nota. 827 00:35:30,975 --> 00:35:33,599 Și asta pentru că acest motiv, Am ales tipul de date greșit. 828 00:35:33,599 --> 00:35:34,490 Deci, îmi place ideea ta. 829 00:35:34,490 --> 00:35:35,650 Să folosim un câmp CHAR. 830 00:35:35,650 --> 00:35:38,340 Cinci caractere, cu excepția există un caz în corner. 831 00:35:38,340 --> 00:35:42,220 Dacă trimiteți încă e-mail, uneori zip coduri în aceste zile, 832 00:35:42,220 --> 00:35:45,360 sunt, cum ar fi, plus patru. 833 00:35:45,360 --> 00:35:48,200 Deci, avem nevoie de o cratimă și apoi avem nevoie de mai multe patru numere. 834 00:35:48,200 --> 00:35:50,330 Deci, să fiu sincer, ar putea du-te mai multe moduri diferite. 835 00:35:50,330 --> 00:35:52,371 >> Pentru moment, am de gând să păstreze simplu și eu sunt doar 836 00:35:52,371 --> 00:35:54,780 de gând să spun că este un cinci valoare CHAR și suntem 837 00:35:54,780 --> 00:35:56,739 O să săriți peste tot bord, plus patru. 838 00:35:56,739 --> 00:35:58,280 Dar acestea sunt tipurile de compromisuri. 839 00:35:58,280 --> 00:36:00,196 Și puteți cred că a aceleași probleme care apar 840 00:36:00,196 --> 00:36:01,860 cu numere de telefon sau alte domenii. 841 00:36:01,860 --> 00:36:04,350 >> Și acum, aceasta este de fapt un drum prost pentru a merge în jos. 842 00:36:04,350 --> 00:36:08,000 Să presupunem că atât Rob și eu și Hannah și Maria și [? Davon?] Și Andy 843 00:36:08,000 --> 00:36:12,820 și altele în cadrul personalului toate trăiesc în Cambridge, Massachusetts, 02138. 844 00:36:12,820 --> 00:36:17,970 Acest fapt simt prost că sunt adăugând la masa de utilizatorii mei, oraș, stat, 845 00:36:17,970 --> 00:36:18,630 și ZIP. 846 00:36:18,630 --> 00:36:20,980 Ce? 847 00:36:20,980 --> 00:36:21,960 >> Audiența: [inaudibil] 848 00:36:21,960 --> 00:36:22,918 >> DAVID MALAN: Spune din nou? 849 00:36:22,918 --> 00:36:24,310 Audiența: [inaudibil] 850 00:36:24,310 --> 00:36:25,850 >> DAVID MALAN: Sunt mereu de gând să meargă împreună, nu? 851 00:36:25,850 --> 00:36:28,660 Când se pare, am folosit să cred acesta a fost cazul până când vom exhaustiv 852 00:36:28,660 --> 00:36:30,570 căutat întreaga SUA, și apoi că există 853 00:36:30,570 --> 00:36:32,653 sunt unele neconcordanțe în cazul în care mai multe orașe au 854 00:36:32,653 --> 00:36:35,060 În același zip, care este ciudat. 855 00:36:35,060 --> 00:36:40,580 Dar, dacă ne-am stipulează acum că 02138 este întotdeauna Cambridge, Massachusetts, 856 00:36:40,580 --> 00:36:44,910 de ce din lume nu ar magazin în baza de date Cambridge și MA și 02138 857 00:36:44,910 --> 00:36:49,357 pentru mine și pentru Hannah și pentru Rob și pentru [? Davon?] Și pentru alții care trăiesc 858 00:36:49,357 --> 00:36:51,190 aici în Cambridge, e perfect redundant. 859 00:36:51,190 --> 00:36:54,480 >> Ar trebui să scape cu doar stocarea ce? 860 00:36:54,480 --> 00:36:55,610 Doar codul poștal. 861 00:36:55,610 --> 00:36:58,660 Dar apoi, dacă vom păstra doar cod postal, vreau, probabil, 862 00:36:58,660 --> 00:37:02,160 pentru site-ul meu să știe unde 02138 este. 863 00:37:02,160 --> 00:37:03,910 Deci, am nevoie de un alt tabel. 864 00:37:03,910 --> 00:37:04,697 Și asta e în regulă. 865 00:37:04,697 --> 00:37:07,530 Și, de fapt, aceasta este una dintre cele mai procesele de proiectare a tabelelor de proiectare 866 00:37:07,530 --> 00:37:11,472 că veți face în PSet7 precum prin care vrei să factor în date comune. 867 00:37:11,472 --> 00:37:14,430 La fel ca am fost de factoring din Codul și factoring în comun comun 868 00:37:14,430 --> 00:37:17,380 stiluri de CSS, aici prea în baza de date, 869 00:37:17,380 --> 00:37:21,180 dacă am nevoie doar 02138 de unic identifica orașul natal cuiva, 870 00:37:21,180 --> 00:37:25,020 nu se păstra Cambridge, Mass pentru fiecare utilizator darn în tabel. 871 00:37:25,020 --> 00:37:29,770 >> În schimb, au un tabel separat numit Fermoare că ar trebui să aibă ce coloane? 872 00:37:29,770 --> 00:37:33,490 Probabil un câmp de identitate, doar pentru că, pentru principiile vorbim despre acum. 873 00:37:33,490 --> 00:37:35,720 Probabil un câmp zip pentru 02138. 874 00:37:35,720 --> 00:37:38,400 Și apoi, probabil, ce alte coloane? 875 00:37:38,400 --> 00:37:42,950 City și de stat, dar au doar un singur rând pentru 02138, un rând de 02139, 876 00:37:42,950 --> 00:37:44,772 un rând de 90210. 877 00:37:44,772 --> 00:37:46,730 Și că este literalmente toate codurile ZIP știu. 878 00:37:46,730 --> 00:37:49,012 >> Deci acum, ce poti face? 879 00:37:49,012 --> 00:37:51,220 Acest lucru este problematic, deoarece acum am două tabele. 880 00:37:51,220 --> 00:37:54,660 Deci, utilizatorii mei sunt în mare parte aici, dar informațiile lor de stat orașului 881 00:37:54,660 --> 00:37:55,390 aici. 882 00:37:55,390 --> 00:37:58,635 Deci, se pare cu SQL, nu e de fapt, o modalitate de a se alătura informații, 883 00:37:58,635 --> 00:38:00,470 și veți vedea acest lucru în PSET. 884 00:38:00,470 --> 00:38:03,000 >> Dar se pare că poți face ceva de genul asta. 885 00:38:03,000 --> 00:38:10,501 SELECT stele de la utilizatori, TE fermoare ON Utilizatorii dot zip este egal cu fermoare dot zip. 886 00:38:10,501 --> 00:38:13,360 Care este un pic prolix, Desigur, dar acest lucru doar 887 00:38:13,360 --> 00:38:17,590 înseamnă selectați totul, de la proces de a lua masa de utilizatori meu 888 00:38:17,590 --> 00:38:19,580 și masa mea fermoare. 889 00:38:19,580 --> 00:38:22,120 Alăturați-vă-le pe cea câmp au în coloana. 890 00:38:22,120 --> 00:38:24,780 Deci, literalmente face ceva ca aceasta, și dă-mi înapoi 891 00:38:24,780 --> 00:38:27,360 un nou tabel temporar asta e mai mare, e mai mare, 892 00:38:27,360 --> 00:38:29,450 care are toate coloanele de la amândoi. 893 00:38:29,450 --> 00:38:33,510 Și că, pur și simplu, ar fi sintaxă pentru a face ceva de genul asta. 894 00:38:33,510 --> 00:38:35,540 >> Deci, există această perspectivă, dar nu se întâmplă 895 00:38:35,540 --> 00:38:38,950 să fie alte decizii de design veți trebuie să facă, nu numai cu indici 896 00:38:38,950 --> 00:38:40,550 dar, de asemenea rulează în provocări. 897 00:38:40,550 --> 00:38:43,360 De fapt, există o provocare în orice bază de date de proiectare 898 00:38:43,360 --> 00:38:47,930 care, uneori, doi oameni ar putea dori pentru a accesa aceleași rânduri de date 899 00:38:47,930 --> 00:38:48,530 masa. 900 00:38:48,530 --> 00:38:51,450 Deci, acest lucru este ceva pe care o vom întâlni în PSet7, de asemenea. 901 00:38:51,450 --> 00:38:54,686 >> Dar m-am gândit la o uite atac care este posibil, în SQL. 902 00:38:54,686 --> 00:38:56,560 Care sunt unele din problemele care pot apărea? 903 00:38:56,560 --> 00:38:58,170 Deci, veți întâlni acest lucru în PSet7. 904 00:38:58,170 --> 00:39:01,874 Și am să vă spun pur și simplu ceea ce soluție de codificare pentru această problemă este. 905 00:39:01,874 --> 00:39:04,790 Dar dacă luați o clasă de nivel superior, în special în sistemele de operare, 906 00:39:04,790 --> 00:39:06,950 ai de gând să întâlni o problemă de atomicitatea, 907 00:39:06,950 --> 00:39:10,080 problema de încercarea de a face mai multe lucruri dintr-o dată 908 00:39:10,080 --> 00:39:11,000 fără întrerupere. 909 00:39:11,000 --> 00:39:14,560 >> Și m-am gândit să introducă această idee pentru PSet7 cu o metaforă 910 00:39:14,560 --> 00:39:18,160 că m-am învățat în Margo Sisteme de operare CS164 Seltzer lui 911 00:39:18,160 --> 00:39:18,990 clasă de ani în urmă. 912 00:39:18,990 --> 00:39:22,230 Să presupunem că aveți unul dintre aceste cămin frigidere în cameră cămin sau casa, 913 00:39:22,230 --> 00:39:24,474 și aveți o înclinație reală pentru lapte. 914 00:39:24,474 --> 00:39:27,140 Și așa, ai venit acasă de la cursuri o zi, când deschideți frigiderul. 915 00:39:27,140 --> 00:39:27,620 Oh, la naiba. 916 00:39:27,620 --> 00:39:28,870 Nu e nici lapte în frigider. 917 00:39:28,870 --> 00:39:32,470 Deci, închideți frigider, încuie ușa, blocarea cămin ta, 918 00:39:32,470 --> 00:39:34,770 mers pe jos în jurul valorii de colț la CVS, intra in linie, 919 00:39:34,770 --> 00:39:36,312 și începe verificarea pentru unele lapte. 920 00:39:36,312 --> 00:39:38,978 Și că va dura ceva timp, pentru că cei de sine checkout naibii 921 00:39:38,978 --> 00:39:40,570 contoare ia pentru totdeauna pentru a utiliza oricum. 922 00:39:40,570 --> 00:39:41,950 Deci între timp, colegul tău de cameră vine acasă. 923 00:39:41,950 --> 00:39:43,470 El sau ea place foarte lapte, de asemenea. 924 00:39:43,470 --> 00:39:45,520 Ei vin în camera de camin, deschide frigiderul, oh, ea naibii. 925 00:39:45,520 --> 00:39:46,490 Nu e nici mai mult lapte. 926 00:39:46,490 --> 00:39:49,040 >> Deci, el sau ea, de asemenea, merge în jurul valorii de colț. 927 00:39:49,040 --> 00:39:51,670 Dar acum, din moment ce nu e ca și cum doi sau trei sau patru CVSes apropiere, 928 00:39:51,670 --> 00:39:53,800 se întâmplă să merg la unul din cele cele diferite in piata. 929 00:39:53,800 --> 00:39:55,830 Și așa acum, la câteva minute mai târziu, amândoi 930 00:39:55,830 --> 00:39:58,060 vin acasă și Ugh, problema cel mai rău vreodată. 931 00:39:58,060 --> 00:40:00,967 Acum ai prea mult lapte pentru că va merge acru. 932 00:40:00,967 --> 00:40:03,050 Și îți place laptele, dar Nu-mi place cu adevărat de lapte. 933 00:40:03,050 --> 00:40:06,730 >> Deci, acum, acest lucru a fost un scump greșeală pentru că amândoi 934 00:40:06,730 --> 00:40:09,870 a luat o decizie pe baza stare de unele variabile care 935 00:40:09,870 --> 00:40:12,660 a fost în procesul de fiind schimbat de tine, 936 00:40:12,660 --> 00:40:14,560 inițiatorul mergi la a lua de lapte. 937 00:40:14,560 --> 00:40:17,785 Deci, ceea ce este, probabil, un om soluție la această problemă? 938 00:40:17,785 --> 00:40:18,660 Audiența: [inaudibil] 939 00:40:18,660 --> 00:40:19,430 DAVID MALAN: Lasă un bilet, nu? 940 00:40:19,430 --> 00:40:21,850 Lăsați întotdeauna o notă, dacă ești familiarizat cu acest spectacol. 941 00:40:21,850 --> 00:40:23,100 Da, există două noi. 942 00:40:23,100 --> 00:40:25,940 Deci, lăsați întotdeauna o notă, sau bloca literalmente frigider 943 00:40:25,940 --> 00:40:28,602 cu un fel de lacăt sau ceva pe partea de sus de genul asta. 944 00:40:28,602 --> 00:40:31,310 Dar asta e, de fapt va fi problema-cheie cu un design de baze de date, 945 00:40:31,310 --> 00:40:34,710 mai ales atunci când s-ar putea avea mai multe browsere, mai multe laptop-uri, 946 00:40:34,710 --> 00:40:37,450 mai mulți utilizatori toate încercarea de a actualiza informațiile dintr-o dată. 947 00:40:37,450 --> 00:40:40,590 Informații deosebit de sensibile cum ar fi informațiile financiare, 948 00:40:40,590 --> 00:40:43,350 prin care, cu un stoc de tranzacționare site-ul ca vei fi construirea, 949 00:40:43,350 --> 00:40:47,270 Ce se întâmplă dacă doriți să verificați cât de mult bani aveți și apoi, dacă aveți suficient, 950 00:40:47,270 --> 00:40:48,490 cumpara unele stoc? 951 00:40:48,490 --> 00:40:50,899 >> Dar dacă cineva care are un cont comun cu tine 952 00:40:50,899 --> 00:40:52,690 încearcă în același timp să cumpere unele stoc? 953 00:40:52,690 --> 00:40:55,190 Deci, el sau ea este verificarea soldul contului, amândoi 954 00:40:55,190 --> 00:40:57,540 mă întorc la fel răspuns, nu exista nici lapte. 955 00:40:57,540 --> 00:41:00,580 Sau ambele te întorci răspunsul, aveți 100 $ în cont. 956 00:41:00,580 --> 00:41:04,680 Ambele încercați să ia decizia pentru a cumpăra o acțiune din unele Stock Company. 957 00:41:04,680 --> 00:41:06,130 >> Și acum, ce se întâmplă? 958 00:41:06,130 --> 00:41:07,140 Ai două acțiuni? 959 00:41:07,140 --> 00:41:08,420 Nu aveți niciun acțiuni? 960 00:41:08,420 --> 00:41:10,320 Probleme de genul asta pot apărea. 961 00:41:10,320 --> 00:41:11,755 Deci, vom întâlni asta. 962 00:41:11,755 --> 00:41:14,630 Atacurile SQL injection, din fericire, sunt ceva ce te ajuta cu, 963 00:41:14,630 --> 00:41:17,430 dar acestea sunt atroce comune in aceste zile încă. 964 00:41:17,430 --> 00:41:18,680 Deci, aceasta este doar un exemplu. 965 00:41:18,680 --> 00:41:21,290 Eu fac nici o pretenție că Sistemul Harvard PIN este 966 00:41:21,290 --> 00:41:23,130 vulnerabile la acest atac special. 967 00:41:23,130 --> 00:41:24,160 Am încercat. 968 00:41:24,160 --> 00:41:26,120 Dar, știi că noi au un câmp de genul asta. 969 00:41:26,120 --> 00:41:29,620 Și Yale de identitate Net are un similară Ecranul cauta in aceste zile. 970 00:41:29,620 --> 00:41:33,190 Și se pare, că poate Sistemul PIN este implementat în PHP. 971 00:41:33,190 --> 00:41:37,050 >> Și dacă were-- e not-- ei ar putea avea cod care arata ca acest lucru. 972 00:41:37,050 --> 00:41:38,210 Ei au două variabile. 973 00:41:38,210 --> 00:41:42,495 Dă-mi de utilizator și parola de la variabila globală post-super- 974 00:41:42,495 --> 00:41:43,970 despre care am vorbit mai devreme. 975 00:41:43,970 --> 00:41:47,310 Poate Harvard are o interogare ca SELECT stele de la utilizatori 976 00:41:47,310 --> 00:41:50,005 în cazul în care numele de utilizator este egală cu cea si parola este echivalent cu cel. 977 00:41:50,005 --> 00:41:51,880 Și observați că eu sunt doar conectându-l în utilizarea 978 00:41:51,880 --> 00:41:55,050 notația bretele buclat de la celălalt zi, ceea ce înseamnă doar conectați într-o valoare 979 00:41:55,050 --> 00:41:55,550 Aici. 980 00:41:55,550 --> 00:41:57,449 Nu mă folosind întrebare tehnică marca. 981 00:41:57,449 --> 00:41:59,240 Nu am nici o secundă sau argumente terțe. 982 00:41:59,240 --> 00:42:02,350 Sunt doar literalmente construirea șir mine. 983 00:42:02,350 --> 00:42:04,930 >> Problema, însă, este faptul că în cazul în care cineva ca un scroob, 984 00:42:04,930 --> 00:42:09,020 care este o referință la un film, busteni cu ceva de genul asta, 985 00:42:09,020 --> 00:42:11,250 și am scos punctele care acopera, de obicei, până 986 00:42:11,250 --> 00:42:14,370 parole, ceea ce în cazul în care este în special malware 987 00:42:14,370 --> 00:42:18,860 și parola poate este 12345, pe filmul numit "Spaceballs" 988 00:42:18,860 --> 00:42:21,970 dar el critic tipuri de citat singur după cinci, 989 00:42:21,970 --> 00:42:24,790 apoi literalmente cuvântul sau în spațiul, și apoi citat, 990 00:42:24,790 --> 00:42:29,160 unul încheiat citatul este egal cu citat o, Dar observați că a omis ce? 991 00:42:29,160 --> 00:42:32,700 A omis citat pe dreapta și el a omis citat din stânga. 992 00:42:32,700 --> 00:42:35,170 >> Pentru că dacă acest atacator prezumția scroob lui 993 00:42:35,170 --> 00:42:38,160 este că oamenii care a scris acest cod PHP nu au fost atat de stralucitoare, 994 00:42:38,160 --> 00:42:42,990 Poate că doar au unele singur citează în jurul valorii de interpolare 995 00:42:42,990 --> 00:42:45,210 unei variabile in acolade? 996 00:42:45,210 --> 00:42:48,620 Și astfel, poate, el ar putea fel de a finaliza gândirii lor 997 00:42:48,620 --> 00:42:53,290 pentru ei, dar într-un mod care va să îl lase să intrat în sistemul de PIN. 998 00:42:53,290 --> 00:42:55,310 Cu alte cuvinte, să presupunem că aceasta este codul 999 00:42:55,310 --> 00:42:57,140 iar noi conectați acum în ceea ce scroob tastat. 1000 00:42:57,140 --> 00:42:58,770 Și este roșu, pentru că e de rău. 1001 00:42:58,770 --> 00:43:01,310 >> Iar textul de bază este ceea ce el tastat în, 1002 00:43:01,310 --> 00:43:05,510 scroob ar putea truc server de la Harvard în construirea o interogare SQL 1003 00:43:05,510 --> 00:43:07,440 șir care arata ca acest lucru. 1004 00:43:07,440 --> 00:43:11,760 Parola este egal 12345 sau un egal unul. 1005 00:43:11,760 --> 00:43:14,820 Rezultatul pe care, în mod logic, este că acest lucru va log scroob 1006 00:43:14,820 --> 00:43:18,360 în cazul în care parola este 12345 sau dacă unul egali 1007 00:43:18,360 --> 00:43:22,660 unul, care este, desigur, întotdeauna adevărat, ceea ce înseamnă scroob devine întotdeauna în. 1008 00:43:22,660 --> 00:43:26,060 >> Și astfel, calea pentru a remedia acest, ca într-o mulțime de cazuri, 1009 00:43:26,060 --> 00:43:28,140 ar fi să scrie defensive. 1010 00:43:28,140 --> 00:43:30,390 Pentru a utiliza ceva de genul nostru Funcția real de interogare, care 1011 00:43:30,390 --> 00:43:33,980 veți vedea în PSet7, unde am conectați ceva de genul întrebare marchează aici. 1012 00:43:33,980 --> 00:43:35,980 Și frumusețea Funcția de interogare pe care le 1013 00:43:35,980 --> 00:43:40,010 da este apără împotriva acestor așa-numitele atacuri SQL injection, unde 1014 00:43:40,010 --> 00:43:44,260 cineva este pacalirea codul în injectarea propriul cod său SQL. 1015 00:43:44,260 --> 00:43:47,380 Pentru că ceea ce funcția de interogare oferim va face de fapt, 1016 00:43:47,380 --> 00:43:51,270 dacă utilizați sintaxa semn de întrebare și un al doilea și un al treilea argument aici, 1017 00:43:51,270 --> 00:43:54,590 este ceea ce a adauga la intrare care utilizatorul furnizat? 1018 00:43:54,590 --> 00:43:56,060 Cei backslash citate. 1019 00:43:56,060 --> 00:43:58,590 >> Deci, se scapă orice potențial caractere periculoase. 1020 00:43:58,590 --> 00:44:01,000 Acest lucru arata ciudat acum, dar nu este vulnerabil 1021 00:44:01,000 --> 00:44:03,260 deoarece nu Modificarea logicii mai 1022 00:44:03,260 --> 00:44:06,470 pentru că toată parola este acum un singur citat care nu este, 1023 00:44:06,470 --> 00:44:07,596 De fapt, parola scroob lui. 1024 00:44:07,596 --> 00:44:09,845 Deci, acolo a fost unele glume despre această a lungul anilor. 1025 00:44:09,845 --> 00:44:12,570 Deci, asta a fost o fotografie făcută de unele Geek într-o parcare 1026 00:44:12,570 --> 00:44:16,620 prin voi să știe că unele orașe și statele încercați să scanați licența 1027 00:44:16,620 --> 00:44:19,460 placă să te sau bilet factura tine dacă te duci prin fara, cum ar fi, 1028 00:44:19,460 --> 00:44:20,660 chestia e-Z Pass. 1029 00:44:20,660 --> 00:44:24,490 Deci, această persoană presupune că poate oamenii scris sistemul E-Z Pass 1030 00:44:24,490 --> 00:44:28,240 nu au fost atât de strălucitoare, și poate că doar concatenate împreună un șir de caractere, 1031 00:44:28,240 --> 00:44:32,190 astfel încât el sau ea nu a putut cu rea intenție nu a finaliza doar gândirea lor, 1032 00:44:32,190 --> 00:44:35,150 dar de fapt executa o comandă de rău, care noi nu am menționat încă, 1033 00:44:35,150 --> 00:44:36,380 dar, probabil, puteți ghici. 1034 00:44:36,380 --> 00:44:39,820 Că, în plus pentru a șterge și introduce și actualizarea și selectați, 1035 00:44:39,820 --> 00:44:43,370 există, de asemenea un cuvânt cheie numit picătură, care literalmente șterge totul 1036 00:44:43,370 --> 00:44:45,300 în baza de date, care este deosebit de rău. 1037 00:44:45,300 --> 00:44:48,760 >> Putem mări acest lucru, dacă e un pic greu pentru a vedea. 1038 00:44:48,760 --> 00:44:52,300 Acest lucru, acum, este un desen animat celebru asta e minunat inteligent acum 1039 00:44:52,300 --> 00:44:53,145 și ușor de înțeles. 1040 00:44:53,145 --> 00:45:00,880 1041 00:45:00,880 --> 00:45:04,750 >> [Râsete] 1042 00:45:04,750 --> 00:45:05,910 >> Da, se răcește. 1043 00:45:05,910 --> 00:45:06,800 Un fel de geeking afară. 1044 00:45:06,800 --> 00:45:08,800 Astfel încât acestea, atunci, sunt Atacurile SQL injection. 1045 00:45:08,800 --> 00:45:13,050 Și sunt atât de ușor, pentru a evita, prin utilizarea codul corect sau bibliotecile dreapta. 1046 00:45:13,050 --> 00:45:15,947 Și veți vedea în PSet7, asta e de ce vă oferim funcția de interogare. 1047 00:45:15,947 --> 00:45:17,780 Deci, un cuplu de teasere că ne-am gândit 1048 00:45:17,780 --> 00:45:19,930 vă dau aici, în nostru minute rămase împreună. 1049 00:45:19,930 --> 00:45:24,030 Deci, după cum vă amintiți de săptămână la zero, am a introdus aceste două becuri care 1050 00:45:24,030 --> 00:45:26,610 sunt frumos, nu doar pentru că acestea sunt destul de pline de culoare sunt, 1051 00:45:26,610 --> 00:45:29,450 ci pentru că sprijină ceva numit API, o aplicație 1052 00:45:29,450 --> 00:45:31,980 Interfață de programare și în CS50 până acum, ne-am 1053 00:45:31,980 --> 00:45:34,440 cea mai mare parte axat pe GET și POST, dar se pare 1054 00:45:34,440 --> 00:45:37,390 există alte verbe cum ar fi HTTP UPT. 1055 00:45:37,390 --> 00:45:39,430 >> Și, de fapt, aceasta a fost un tobogan de la zero, săptămână 1056 00:45:39,430 --> 00:45:44,930 prin care, dacă scrie cod care trimite a la PSet6 o cerere HTTP care 1057 00:45:44,930 --> 00:45:49,647 arata ca acest lucru cu acest bucată de text în partea de jos, care se numește JSON, 1058 00:45:49,647 --> 00:45:52,230 sau JavaScript Object Notation că vom vorbi despre săptămâna viitoare, 1059 00:45:52,230 --> 00:45:57,030 puteți activa sau dezactiva sau schimbare culoarea luminilor cum ar fi cele. 1060 00:45:57,030 --> 00:46:00,480 Deci, dacă CS50 are, de asemenea, în plus față de unele dintre aceste becuri aici, în New Haven 1061 00:46:00,480 --> 00:46:02,480 dacă doriți să împrumute le pentru proiecte finale, 1062 00:46:02,480 --> 00:46:04,370 de asemenea, unele Microsoft Benzi, care sunt ca 1063 00:46:04,370 --> 00:46:07,619 ceasuri pe care le purta în jurul valorii de încheietura mâinii care au în mod similar un API, astfel încât să 1064 00:46:07,619 --> 00:46:10,040 poate scrie software-ul propriu pentru ei. 1065 00:46:10,040 --> 00:46:12,490 >> Avem un cont cu Codul Apple iOS astfel 1066 00:46:12,490 --> 00:46:15,510 că, dacă aveți un Apple ceas sau un iPhone sau un iPad sau un iPod, 1067 00:46:15,510 --> 00:46:17,707 puteți scrie cod care de fapt, ruleaza pe cele. 1068 00:46:17,707 --> 00:46:19,540 Avem o grămadă de Arduinos, care sunt 1069 00:46:19,540 --> 00:46:22,010 computere mici mici fără cazuri, în esență, 1070 00:46:22,010 --> 00:46:25,240 care vă puteți conecta prin USB, de obicei, la propria Mac sau PC, 1071 00:46:25,240 --> 00:46:28,810 scrie cod care ruleaza pe aceste fizice dispozitivele care au de multe ori senzori pe ele 1072 00:46:28,810 --> 00:46:30,790 astfel încât să puteți interacționa cu lumea reală. 1073 00:46:30,790 --> 00:46:32,860 Avem o grămadă de dispozitive Leap Motion, 1074 00:46:32,860 --> 00:46:36,500 care sunt dispozitive USB pentru Mac-uri și PC-uri, aici și din nou, în New Haven. 1075 00:46:36,500 --> 00:46:40,080 Și dacă îl conectați la Mac, puteți controla de fapt, computerul 1076 00:46:40,080 --> 00:46:42,550 de software-ul scris că prin raze infrarosii, 1077 00:46:42,550 --> 00:46:46,360 cifrele de unde mâinile tale umane sunt, chiar și fără a atinge tastatura. 1078 00:46:46,360 --> 00:46:49,135 Ne-am gândit să împărtășesc o rapidă bucatica la acest, de exemplu. 1079 00:46:49,135 --> 00:46:51,428 >> [MUSIC JOC] 1080 00:46:51,428 --> 00:47:55,840 1081 00:47:55,840 --> 00:47:57,590 Deci, avem un întreg gramada de aceste lucruri, 1082 00:47:57,590 --> 00:48:01,040 de asemenea, numit benzi braț Myo care ai pus peste antebratul 1083 00:48:01,040 --> 00:48:04,595 și apoi puteți controla real lume sau lumea virtuală ca aceasta. 1084 00:48:04,595 --> 00:48:06,471 >> [MUSIC JOC] 1085 00:48:06,471 --> 00:49:17,580 1086 00:49:17,580 --> 00:49:20,920 Sau, avem, de asemenea unele Google Carton, care este literalmente, cum ar fi, 1087 00:49:20,920 --> 00:49:24,841 o cutie de carton ai putea pune pe dumneavoastră fata, dar diapozitiv în telefon în ea 1088 00:49:24,841 --> 00:49:27,590 astfel încât ai pus sticla de dvs. telefon foarte aproape de ochi. 1089 00:49:27,590 --> 00:49:30,190 Și Google carton este destul de ieftine la 10 $ sau 20 $. 1090 00:49:30,190 --> 00:49:32,230 Și are lentile mici că ușor de pe schimbare 1091 00:49:32,230 --> 00:49:35,900 imaginea de pe ecran pentru uman ta ochii pentru a vă oferi un sentiment de adâncime 1092 00:49:35,900 --> 00:49:39,550 astfel încât să aveți de fapt o 3D mediu în fața ta. 1093 00:49:39,550 --> 00:49:42,927 Avem, de asemenea unele Samsung Gear, care este versiunea mai scump din acest, 1094 00:49:42,927 --> 00:49:46,010 dar care poate aluneca în mod similar într-o Telefon Android și vă va oferi iluzia 1095 00:49:46,010 --> 00:49:48,309 de-- sau oferi o experienta de realitate virtuală. 1096 00:49:48,309 --> 00:49:50,850 Și în nostru final două minute, ne-am crezut că vom încerca să facem acest lucru. 1097 00:49:50,850 --> 00:49:55,250 Dacă eu pot proiecta ce are Colton aici doar pentru a vă deschide apetitul, 1098 00:49:55,250 --> 00:49:58,442 lasă-mă să merg mai departe și arunca pe marele ecran aici. 1099 00:49:58,442 --> 00:49:59,400 Permiteți-mi să-l omoare pe luminile. 1100 00:49:59,400 --> 00:50:02,290 Colton, vrei să mergi mai departe și a pus pe mobil pentru un moment 1101 00:50:02,290 --> 00:50:05,171 și vino la mijloc al etapei? 1102 00:50:05,171 --> 00:50:07,420 Și vrei să project-- aceasta este ceea ce vede Colton. 1103 00:50:07,420 --> 00:50:10,560 >> Acum, Wi-Fi în aici este nu atât de puternic pentru acest dispozitiv 1104 00:50:10,560 --> 00:50:13,870 că acest lucru este foarte convingătoare, dar Colton este literalmente 1105 00:50:13,870 --> 00:50:15,710 în acest loc magic futurist. 1106 00:50:15,710 --> 00:50:16,796 El vede doar o imagine. 1107 00:50:16,796 --> 00:50:19,920 Vedeți ochiul stânga și la dreapta că creierul lui sunt coasere împreună 1108 00:50:19,920 --> 00:50:22,260 într-o tridimensională mediu pe fata lui. 1109 00:50:22,260 --> 00:50:24,319 Tocmai selectat o opțiune de meniu aici. 1110 00:50:24,319 --> 00:50:27,360 Și astfel, din nou, el poartă acest set cu cască cu un telefon Samsung pe el, care este 1111 00:50:27,360 --> 00:50:29,080 wireless proiectare la deasupra capului nostru. 1112 00:50:29,080 --> 00:50:30,349 Acum sunteți pe Marte, cred? 1113 00:50:30,349 --> 00:50:31,140 COLTON: Cred că da. 1114 00:50:31,140 --> 00:50:32,181 Nu sunt sigur [neauzit]. 1115 00:50:32,181 --> 00:50:34,250 [Râsete] 1116 00:50:34,250 --> 00:50:36,374 >> DAVID MALAN: Se pare că Marte are aceste meniuri. 1117 00:50:36,374 --> 00:50:41,590 >> COLTON: [inaudibil] unele rece Locuri dacă vrem să mergem sa-- 1118 00:50:41,590 --> 00:50:43,330 >> DAVID MALAN: Unde vrem să mergem? 1119 00:50:43,330 --> 00:50:45,837 >> COLTON: [inaudibil] 1120 00:50:45,837 --> 00:50:48,170 DAVID MALAN: Și să vedem Unde e Colton ne duce acum. 1121 00:50:48,170 --> 00:50:48,961 COLTON: [inaudibil] 1122 00:50:48,961 --> 00:50:52,830 1123 00:50:52,830 --> 00:50:56,380 >> DAVID MALAN: Deci, nu e atât de multe diferite locuri vă puteți lua. 1124 00:50:56,380 --> 00:51:00,590 Există FAPIs prin care puteți scrie jocuri sau interacțiuni care 1125 00:51:00,590 --> 00:51:01,950 rula, în cele din urmă, la telefon. 1126 00:51:01,950 --> 00:51:03,908 Deci, într-adevăr doar scris o aplicatie de telefon mobil. 1127 00:51:03,908 --> 00:51:06,380 Dar, datorită software-ul și capacitățile grafice, 1128 00:51:06,380 --> 00:51:08,765 acum Colton se află în această mic cabana mica. 1129 00:51:08,765 --> 00:51:10,515 Și cu riscul de a copleșitoare noi înșine, 1130 00:51:10,515 --> 00:51:13,330 Colton și voi lipi în jurul valorii de iar la sfârșitul clasei aici astăzi 1131 00:51:13,330 --> 00:51:14,300 dacă doriți să vină și să se joace. 1132 00:51:14,300 --> 00:51:16,350 Și vom le aducă înapoi săptămâna viitoare, de asemenea. 1133 00:51:16,350 --> 00:51:18,420 Fără alte formalități asta e pentru ziua de azi. 1134 00:51:18,420 --> 00:51:21,990 Ne vedem săptămâna viitoare. 1135 00:51:21,990 --> 00:51:24,140 >> [MUSIC - Ragga TWINS, "om rău"] 1136 00:51:24,140 --> 00:55:23,146