1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Tjedan 9] 2 00:00:02,570 --> 00:00:04,740 [David J. Malan - Sveučilište Harvard] 3 00:00:04,740 --> 00:00:07,170 [Ovo je CS50. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 U redu. Dobrodošao natrag. Ovo je CS50, a to je početak tjedna 9. 5 00:00:12,350 --> 00:00:16,600 Danas ćemo se usredotočiti posebno na dizajnu, ne više u kontekstu C 6 00:00:16,600 --> 00:00:20,010 ali u kontekstu PHP i malo SQL i malo JavaScripta, 7 00:00:20,010 --> 00:00:23,730 osobito prema kraju oba pset 7 i vaš konačni projekt. 8 00:00:23,730 --> 00:00:26,310 U stvari, ako ste u tom trenutku u svom završnom projektu 9 00:00:26,310 --> 00:00:30,100 gdje je vjerojatno od sat vremena ili tako prije vas barem počeo dati neki mislili 10 00:00:30,100 --> 00:00:33,730 do konačnog projekta i vi razmišljate želite surađivati ​​s jednom ili dvije razredu, 11 00:00:33,730 --> 00:00:36,150 ako imate problema s povezivanjem s kolegama rekao, 12 00:00:36,150 --> 00:00:40,570 slobodno ispunite obrazac na cs50.net/partners/form. 13 00:00:40,570 --> 00:00:42,880 To samo vas pita tko ste, kakav projekt razmišljate o tome, 14 00:00:42,880 --> 00:00:44,870 gdje živite samo zbog logističkih razloga. 15 00:00:44,870 --> 00:00:49,510 A onda, ako želite držati na oku tijekom sljedećeg tjedna ili tako proračunske URL tamo, 16 00:00:49,510 --> 00:00:53,520 onda možete vidjeti samo za čitanje verziju Google doc 17 00:00:53,520 --> 00:00:56,010 u kojem smo prikupljanje tu informaciju. 18 00:00:56,010 --> 00:00:58,930 Dakle, ako želite raditi s nekim, svim sredstvima slobodno doprijeti do ljudi 19 00:00:58,930 --> 00:01:00,480 putem tog mehanizma. 20 00:01:00,480 --> 00:01:02,690 No, većina ljudi ne rade solo. To je potpuno u redu. 21 00:01:02,690 --> 00:01:06,120 Dakle, ne osjećam da je to na bilo koji način obvezno. 22 00:01:06,120 --> 00:01:09,680 U petak je bio samo ja i nekoliko momčadi ovdje, 23 00:01:09,680 --> 00:01:11,100 prazna kazalište za najveći dio. 24 00:01:11,100 --> 00:01:14,600 Tu su tri turista sjedi tamo gore, tako da je malo nespretan. 25 00:01:14,600 --> 00:01:18,970 Ono što mi je govorio o bilo baze podataka i razgovarali smo o pset 7 malo. 26 00:01:18,970 --> 00:01:22,200 A ako nije dogodilo uhvatiti da na videu samo još, to je u redu. 27 00:01:22,200 --> 00:01:26,770 Ja ću pokušati definirati sve pojmove koji bismo inače uzimamo zdravo za gotovo 28 00:01:26,770 --> 00:01:28,840 temelji se na petak predavanje. 29 00:01:28,840 --> 00:01:32,550 >> No, danas ćemo pokušati da dođete do točke 30 00:01:32,550 --> 00:01:34,990 da ne samo biti u mogućnosti učiniti nešto slično pset 7 31 00:01:34,990 --> 00:01:37,360 ali stvarno razumijevanje što se događa ispod haube, 32 00:01:37,360 --> 00:01:41,910 posebno nekih apstrakcija koje smo stavili u mjesto u functions.php datoteku 33 00:01:41,910 --> 00:01:45,780 kako bi vaš život malo lakše, ali tako da se u konačnici razumjeti 34 00:01:45,780 --> 00:01:48,760 tako da kada trening kotači ispasti u nekoliko tjedana još uvijek možete preživjeti 35 00:01:48,760 --> 00:01:53,750 u stvarnom svijetu i učiniti ove stvari bez CS50 okviru ispod vas. 36 00:01:53,750 --> 00:01:57,500 Ova $ _SESSION, za one od vas koji su upoznati 37 00:01:57,500 --> 00:02:01,960 ili koji su već uhvatili video na petak, što znači SJEDNICA činimo 38 00:02:01,960 --> 00:02:04,330 u PHP-based web aplikacija? 39 00:02:04,330 --> 00:02:09,650 Ovo je superglobal varijabla, što znači da je sličan u duhu GET i POST 40 00:02:09,650 --> 00:02:13,970 i nekoliko drugih, ali ono što je ova stvar korisno za? 41 00:02:13,970 --> 00:02:18,320 >> Što je SJEDNICA koristi za? Da. [Student] Logging in 42 00:02:18,320 --> 00:02:21,040 Molim? [Student] Logging in Logging in Doista. 43 00:02:21,040 --> 00:02:25,100 U pset 7 smo pomoću ove sjednice superglobal olakšati prijave u. 44 00:02:25,100 --> 00:02:28,600 I ono što je lijepo o tome superglobal je da je asocijativni niz. 45 00:02:28,600 --> 00:02:33,190 Asocijativna polja, podsjetimo, samo je niz, ali čiji indeksi više ne moraju biti brojevi 46 00:02:33,190 --> 00:02:37,670 poput 012. Oni mogu biti brojevi ili oni mogu biti čak i žice. 47 00:02:37,670 --> 00:02:44,890 I tako, ako ste zaronili u pset 7 ipak, možda ćete se prisjetiti da smo pohranu ključnu zove ID 48 00:02:44,890 --> 00:02:50,330 unutar ovog asocijativnog niza čija vrijednost je nešto poput 123 - 49 00:02:50,330 --> 00:02:53,780 god trenutno prijavljeni korisnikov ID je. 50 00:02:53,780 --> 00:02:59,470 Motivacija za to je da, čak i nakon što je korisnik posjetio localhost 51 00:02:59,470 --> 00:03:02,720 ili moj website općenito, a onda sam prijavljni, 52 00:03:02,720 --> 00:03:07,320 čak i ako oni ne kliknete na vezu ili se vratiti na moje web stranice za pet minuta 53 00:03:07,320 --> 00:03:10,730 ili čak sat ili čak dan, ali oni ostavljaju preglednik otvoren prozor, 54 00:03:10,730 --> 00:03:14,370 putem ovog superglobal mogu se sjetiti da su prijavljeni 55 00:03:14,370 --> 00:03:21,140 >> Drugim riječima, to mi omogućuje da pohraniti nešto dugotrajno ništa želim o korisniku. 56 00:03:21,140 --> 00:03:24,390 A možete misliti da je to stvarno kao utjelovljenje u košarici. 57 00:03:24,390 --> 00:03:27,740 Mjesta kao što su Amazon očito vam staviti stvari u košaricu, 58 00:03:27,740 --> 00:03:32,230 ali HTTP protokol koji pogoni web, je bez državljanstva 59 00:03:32,230 --> 00:03:34,230 u smislu da kada posjetite web stranice, 60 00:03:34,230 --> 00:03:37,290 za najveći dio nemate neku stalnu vezu s mrežom 61 00:03:37,290 --> 00:03:39,270 između Vašeg preglednika i poslužitelja. 62 00:03:39,270 --> 00:03:42,190 Čim ste preuzeli HTML i JPEG i GIF i sve to, 63 00:03:42,190 --> 00:03:48,200 veza ide dalje i imate samo kopiju HTML i sitnica od poslužitelja. 64 00:03:48,200 --> 00:03:53,000 Ali ako poslužitelj želi zapamtiti nešto o vama, 65 00:03:53,000 --> 00:03:57,580 Teret je na poslužitelju da se zapravo snimati tu informaciju. 66 00:03:57,580 --> 00:04:00,130 I tako ste programer koji imaju kontrolu nad poslužiteljem 67 00:04:00,130 --> 00:04:04,400 možete staviti najviše sve što želite unutar ovog superglobal asocijativnog niza 68 00:04:04,400 --> 00:04:06,850 i to će biti tamo sljedeći put korisnik ne vrati, 69 00:04:06,850 --> 00:04:12,070 da li je minuta ili čak dana kasnije, osim ako oni zatvaraju svoje prozor preglednika, 70 00:04:12,070 --> 00:04:14,360 na kojem trenutku SJEDNICA nestaje. 71 00:04:14,360 --> 00:04:17,779 Dakle, to je prolazno skladištenje, to je nepostojani, a to je značilo da će otići 72 00:04:17,779 --> 00:04:22,360 čim korisnik zatvara njihov preglednik - ne samo da je kartica, često cijeli preglednik, 73 00:04:22,360 --> 00:04:24,930 čime učinkovito prijavom korisnika van. 74 00:04:24,930 --> 00:04:28,000 Pa kako se ova stvar zapravo provodi? 75 00:04:28,000 --> 00:04:31,360 Ajmo uzeti brzo pogledati na jednostavnom primjeru smo gledali u petak. 76 00:04:31,360 --> 00:04:33,340 Za one koji nisu upoznati, to je kao jednostavan kao taj. 77 00:04:33,340 --> 00:04:35,910 Ovo je web stranica čiji je jedini cilj u životu je da mi reći 78 00:04:35,910 --> 00:04:38,000 koliko sam puta posjetio ovu stranicu. 79 00:04:38,000 --> 00:04:41,670 Ovo je prvi put ovdje u ponedjeljak da sam ga posjetila, pa kaže 0 puta. 80 00:04:41,670 --> 00:04:46,940 >> Ali, ako sam početak ponovnog ovu stranicu, ona kaže jedan put, dva, tri, četiri, pet, 81 00:04:46,940 --> 00:04:49,800 i to će na kraju samo zadržati na brojanje gore, gore, gore, gore, gore 82 00:04:49,800 --> 00:04:53,130 za svaki put sam zapravo kliknite Učitajte na njega. 83 00:04:53,130 --> 00:04:58,830 Pa kako je to radi? Pusti me unutra ove datoteke pod nazivom counter.php. 84 00:04:58,830 --> 00:05:02,490 Gornji dio je sve plave komentara, ali najzanimljiviji dio je ovdje. 85 00:05:02,490 --> 00:05:06,670 Na liniji 13 zovemo ovu funkciju session_start, 86 00:05:06,670 --> 00:05:09,600 i to je doslovno sve što trebate učiniti ako želite imati pristup 87 00:05:09,600 --> 00:05:13,610 da je ovo posebna superglobal zove $ _SESSION. 88 00:05:13,610 --> 00:05:17,430 To ga čini sve moguće, pa ćemo vidjeti u jednom trenutku kako da je sve moguće. 89 00:05:17,430 --> 00:05:20,350 U liniji 16 obavijesti što radim. 90 00:05:20,350 --> 00:05:25,960 Ako ključ, zove brojač - drugim riječima, vrijednost indeksa - "brojač" 91 00:05:25,960 --> 00:05:32,310 postoji unutar ovog niza naziva sjednici, što onda radim s njim u liniji ispod? 92 00:05:32,310 --> 00:05:36,650 Što je linija 18 radiš? 93 00:05:36,650 --> 00:05:40,360 >> [Nečujno učenik odgovor] Što je to? [Student] Spremanje vrijednost. Dobro. 94 00:05:40,360 --> 00:05:45,800 To je spremanje vrijednost koja je u SJEDNICE upravo sada u novom lokalnu privremenu varijablu, 95 00:05:45,800 --> 00:05:48,250 $ Brojač u svim malim slovima. 96 00:05:48,250 --> 00:05:50,770 Primijetit ćete da PHP već biti malo lijen ovdje. 97 00:05:50,770 --> 00:05:55,550 Obavijest nemamo nikakve spominje int ili plovak ili string ili nešto slično 98 00:05:55,550 --> 00:06:00,480 jer PHP slabo se upisali, pri čemu ne morate navesti tip varijable, 99 00:06:00,480 --> 00:06:03,310 iu ovom slučaju ovdje nisam ni proglašen još. 100 00:06:03,310 --> 00:06:08,980 Ja sam ga izjavljujući unutar tih vitičastih zagrada i za razliku od C, to je zapravo dobro. 101 00:06:08,980 --> 00:06:13,800 Bez obzira koliko duboko ugniježđeni varijabla deklaraciju u PHP - 102 00:06:13,800 --> 00:06:16,650 unutar kovrčave vitice, unutar kovrčave vitice i kao - 103 00:06:16,650 --> 00:06:21,230 će u tom trenutku u vremenu postoji za ostatak programa, 104 00:06:21,230 --> 00:06:22,680 za bolje ili za lošije. 105 00:06:22,680 --> 00:06:26,930 Dakle, to je odmah postaje globalni čim ga definirati kao radimo ovdje. 106 00:06:26,930 --> 00:06:31,620 >> Inače, ako ne nađem da postoji nešto u sjednici superglobal, 107 00:06:31,620 --> 00:06:34,680 Ja sam očito inicijalizacije ovu varijablu brojač na 0, 108 00:06:34,680 --> 00:06:37,580 time samo pod pretpostavkom da korisnik nikada nije bio ovdje. 109 00:06:37,580 --> 00:06:40,030 I onda to naravno se povećavanjem brojač kako? 110 00:06:40,030 --> 00:06:44,480 Ja sam ažuriranju vrijednost koja je unutar ovog asocijativnog niza 111 00:06:44,480 --> 00:06:49,530 postavljanjem je jednaka bez obzira na brojač trenutno iznosi + 1. 112 00:06:49,530 --> 00:06:53,520 Ako sam dođite ovdje dolje na HTML stranici, to je zapravo prilično jednostavna. 113 00:06:53,520 --> 00:06:58,920 Sve što imam u tijelu ove stranice je: "Vi ste posjetili ovaj site, tako-i-tako puta." 114 00:06:58,920 --> 00:07:00,350 A to je PHP konstrukt. 115 00:07:00,350 --> 00:07:06,080 Ako to ne učinite 00:07:12,600 To je stvarno odgovara nešto poput printf, što smo vidjeli mnogo puta u C, 117 00:07:12,600 --> 00:07:15,940 iako kao što ste možda već znate iz spec. u pset 7, 118 00:07:15,940 --> 00:07:20,160 ispis je također funkcija koja samo ispisuje nešto, to zapravo ne koristite format kodove, 119 00:07:20,160 --> 00:07:23,270 i što zapravo može reći odjek kao dobro. 120 00:07:23,270 --> 00:07:27,460 Oni su svi ikada tako nešto drugačije, iako je u konačnici neto učinak isti. 121 00:07:27,460 --> 00:07:31,270 Dakle, ovo korištenje znaka jednakosti je samo vrsta elegantan način to rade 122 00:07:31,270 --> 00:07:34,910 više jezgrovito nego što bi inače mogli. 123 00:07:34,910 --> 00:07:38,370 Tako da je sve ovo mjesto radi. Ona ispisuje vrijednost brojača. 124 00:07:38,370 --> 00:07:40,550 Kako je to sve zapravo događa? 125 00:07:40,550 --> 00:07:43,250 Možete se prisjetiti tjedan ili tako počeli smo u potrazi ispod haube 126 00:07:43,250 --> 00:07:47,910 na koliko je web stranica radi pomoću ovog inspektora karticu. 127 00:07:47,910 --> 00:07:51,900 >> Chrome ima to iu Mac verziji, Windows verzije, pa čak i Linux verzija, 128 00:07:51,900 --> 00:07:59,510 i Firefox i IE imaju slične mehanizme kojima ste ovaj ugrađeni u debugger 129 00:07:59,510 --> 00:08:01,400 unutar browsera. 130 00:08:01,400 --> 00:08:03,040 Idemo pogledati sljedećeg. 131 00:08:03,040 --> 00:08:06,960 Imamo hrpu kartica ovdje, a podsjetimo da je lijevom jedna Elementi, 132 00:08:06,960 --> 00:08:10,700 i bez obzira koliko godawful HTML i JavaScript je na stranici, 133 00:08:10,700 --> 00:08:15,710 podsjetiti da s elementima kartici možete zapravo navigaciju HTML hijerarhijski 134 00:08:15,710 --> 00:08:17,050 i lijepo i uredno. 135 00:08:17,050 --> 00:08:19,370 Dakle, ako ste pokušavate naučiti iz web stranice kao što su Google ili Facebook 136 00:08:19,370 --> 00:08:22,370 ili stvarno bilo koju web stranicu, shvatite da ste vjerojatno bolje 137 00:08:22,370 --> 00:08:26,360 gleda izvornog koda na ovaj način, za razliku od gledanja sirovi izvor, 138 00:08:26,360 --> 00:08:29,580 koji može biti nered, kao što smo vidjeli pogotovo na Google stranicama. 139 00:08:29,580 --> 00:08:32,220 Dakle, ako sam umjesto kliknite na karticu Network ovdje, 140 00:08:32,220 --> 00:08:34,830 ajmo vidjeti što se događa kada sam posjetiti ovu stranicu. 141 00:08:34,830 --> 00:08:38,669 Prvo neka mi isprazniti predmemoriju. 142 00:08:38,669 --> 00:08:43,570 Ja ću ići u Settings u Chrome, a zatim otići na Povijest 143 00:08:43,570 --> 00:08:46,420 a zatim Obriši sve podatke o pregledavanju. 144 00:08:46,420 --> 00:08:48,170 Možda se koristi za to i za druge svrhe, [smijeh] 145 00:08:48,170 --> 00:08:51,990 ali kada je riječ o razvoju web stranice, to je zapravo korisno - 146 00:08:51,990 --> 00:08:55,980 ako ste smijeha znate. [Smijeh] 147 00:08:55,980 --> 00:08:59,310 To je zapravo jako koristan pri izradi web stranica jer je stvarnost 148 00:08:59,310 --> 00:09:04,100 stvari kao što su cookies i stvari kao što su spremljene HTML datoteke, spremljene JavaScript datoteke 149 00:09:04,100 --> 00:09:06,390 zapravo može postati velika glavobolja, jer ako iz bilo kojeg razloga 150 00:09:06,390 --> 00:09:11,500 preglednik odluči da se cache neku datoteku i još ste napravili promjene u toj datoteci na poslužitelju 151 00:09:11,500 --> 00:09:14,670 ali preglednik nije stvarno shvatio da je datoteka promijenila 152 00:09:14,670 --> 00:09:19,060 i stoga ne zapravo ga ponovno preuzeti čak i ako kliknete gumb za ponovno učitavanje, 153 00:09:19,060 --> 00:09:23,210 jedan od najvažnijih surefire načina da samo pazite krivnja nije s kodom, 154 00:09:23,210 --> 00:09:26,480 to je s ponašanjem pregledniku, je da ide u ovdje u svom pretraživaču 155 00:09:26,480 --> 00:09:29,950 i samo očistiti cijelu povijest, tako da nema zabune. 156 00:09:29,950 --> 00:09:33,210 >> A onda, ako stvarno želite biti paranoični, zatvorite preglednik, to ponovno, 157 00:09:33,210 --> 00:09:35,660 i onda bi bili sigurni da sve radi kako treba. 158 00:09:35,660 --> 00:09:38,820 Dakle, u kratko, brisanje predmemorije je dobro kada se radi razvoj. 159 00:09:38,820 --> 00:09:40,690 Dakle, ovdje imamo mrežu karticu. 160 00:09:40,690 --> 00:09:46,020 Ja ranije posjetio tu stranicu 9 puta, ali dopustite mi ići naprijed i sada kliknite Reload. 161 00:09:46,020 --> 00:09:47,500 I ja sam se vratio na 0. 162 00:09:47,500 --> 00:09:52,100 Ajmo zapravo vidjeti kako to da je ovo SJEDNICA superglobal provodi. 163 00:09:52,100 --> 00:09:55,990 Idem kliknite na jedan HTTP zahtjev koji je napravio, 164 00:09:55,990 --> 00:09:58,810 i to za ispravljanje pogrešaka prozor mi omogućuje pogled iznutra toga. 165 00:09:58,810 --> 00:10:01,970 Ovdje vidim samo odgovor od poslužitelja, što nije zanimljivo. 166 00:10:01,970 --> 00:10:04,030 Vidio sam to u svakom broju načine. 167 00:10:04,030 --> 00:10:06,350 No, ono što je zanimljivo tehnički su zaglavlja. 168 00:10:06,350 --> 00:10:11,770 Ako sam dođite ovamo i usredotočiti se na zaglavljima zahtjeva i kliknite view izvor, 169 00:10:11,770 --> 00:10:14,400 ono što ću vidjeti je doslovno HTTP zahtjev 170 00:10:14,400 --> 00:10:17,250 samo da ode iz mog preglednika na poslužitelj, 171 00:10:17,250 --> 00:10:21,400 GET biti operativna riječ i onda / counter.php čemu je naziv datoteke, 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1 samo kao verzija HTTP da moj preglednik koristi. 173 00:10:25,670 --> 00:10:31,070 Ova linija je ovdje malo podsjetnik iz preglednika na poslužitelj ono što naziv poslužitelja 174 00:10:31,070 --> 00:10:33,020 da želi razgovarati. 175 00:10:33,020 --> 00:10:38,200 I onda ostatak to je ponekad zanimljivo, ali nije relevantan upravo sada. 176 00:10:38,200 --> 00:10:40,090 >> Ovo je samo vrsta znatiželje. 177 00:10:40,090 --> 00:10:43,530 Grobni iako ovaj niz je, svaki put kad preglednik posjećuje web stranicu 178 00:10:43,530 --> 00:10:47,110 to je informiranje server koji browser koristite 179 00:10:47,110 --> 00:10:50,040 i ono što operativni sustav koristite i što verzija istih. 180 00:10:50,040 --> 00:10:52,650 Dakle, ako ste se ikada zapitali kako web stranice kao što su CNN i sitnica 181 00:10:52,650 --> 00:10:56,860 znati što su postotci Mac korisnike na web, PC korisnicima, 182 00:10:56,860 --> 00:11:00,820 IE korisnici, Chrome korisnici i slično, to je zato što sve naše preglednicima 183 00:11:00,820 --> 00:11:04,300 Govore svaki pojedini website vani ono što jesmo. 184 00:11:04,300 --> 00:11:07,410 To ne mora nužno sadržavati osobne podatke, 185 00:11:07,410 --> 00:11:13,060 ali to ne reći ono što poslužitelj IP adresa i ono preglednika i operativnog sustava koji koristite. 186 00:11:13,060 --> 00:11:14,720 Dakle, to je mjesto gdje je ta informacija. 187 00:11:14,720 --> 00:11:19,960 No, ono što je još zanimljivije sada kada je u pitanju ova sjednica je odgovor zaglavlja. 188 00:11:19,960 --> 00:11:22,530 Dopustite mi da kliknete pogledati izvor uz odgovor. 189 00:11:22,530 --> 00:11:24,590 Što je zanimljivo ovdje je nekoliko stvari. 190 00:11:24,590 --> 00:11:27,580 1, kad smo se vratili kod statusa 200. 191 00:11:27,580 --> 00:11:29,840 Mi nikada vidjeti ovu šifru statusa, jer to znači da je sve dobro. 192 00:11:29,840 --> 00:11:32,920 To doslovno znači ok, za razliku od nečeg drugog. 193 00:11:32,920 --> 00:11:36,380 Što je broj mi ponekad vidjeti da je loše? [Student] 404. 194 00:11:36,380 --> 00:11:39,860 404, datoteka nije pronađena, 403 možda se tetura po već, 195 00:11:39,860 --> 00:11:43,660 što je zabranjeno, što znači da je zaboravio na chmod nešto, najvjerojatnije. 196 00:11:43,660 --> 00:11:45,190 I tu je hrpa drugih. 197 00:11:45,190 --> 00:11:47,760 >> Ovdje dolje, to je malo luda. 198 00:11:47,760 --> 00:11:52,340 Ja stvarno samo pisao ovu sliku nekoliko minuta prije zalijepiti u gedit. 199 00:11:52,340 --> 00:11:57,100 Zašto ovu stranicu isteći u 1981 prije nego što je stvarno bio web? 200 00:11:58,010 --> 00:12:00,730 Što se događa tamo? 201 00:12:00,730 --> 00:12:04,390 >> [Nečujno učenik odgovor] vrijeme pečat. Ali zašto? 202 00:12:06,110 --> 00:12:09,120 To je pomalo proizvoljna, ali to je zapravo korisno. 203 00:12:09,120 --> 00:12:15,500 Što to govori svom pregledniku je to PHP datoteke koje ste upravo zatražio je već istekao. 204 00:12:15,500 --> 00:12:18,580 U stvari, to je istekao prije 30 godina. 205 00:12:18,580 --> 00:12:20,260 No, što to zapravo znači? 206 00:12:20,260 --> 00:12:22,500 To samo znači da sljedeći put kada korisnik posjeti ovu stranicu, 207 00:12:22,500 --> 00:12:25,540 bilo pretovara ili upisivanjem URL u adresnu traku, 208 00:12:25,540 --> 00:12:28,010 provjerite da li ići i dohvatiti novu kopiju njega. 209 00:12:28,010 --> 00:12:30,840 To je svojevrsni primjer priručnu poprsje, 210 00:12:30,840 --> 00:12:33,790 glupa riječ koja znači samo pokušava odvratiti preglednike 211 00:12:33,790 --> 00:12:37,260 od zapravo caching HTML-a koji je bio poslan s poslužitelja 212 00:12:37,260 --> 00:12:41,490 tako da ne slučajno pogodio reload i onda vidjeti istu verziju datoteke. 213 00:12:41,490 --> 00:12:43,730 Vi zapravo želite da poslužitelj pošalje novu kopiju. 214 00:12:43,730 --> 00:12:47,440 Dakle, činjenica da je 1981 samo znači da je to ono što uređaj odaberete 215 00:12:47,440 --> 00:12:50,280 kao proizvoljnog datuma u prošlosti. 216 00:12:50,280 --> 00:12:53,380 No, pravi sočan linija je sada ovo. 217 00:12:53,380 --> 00:12:57,550 Čak i prije 50 vjerojatno ste nejasno upoznati s kolačićima. 218 00:12:57,550 --> 00:13:01,820 Od sada, pogotovo među onima manje ugodno ili između, 219 00:13:01,820 --> 00:13:04,120 što je Cookie u vašem razumijevanju upravo sada 220 00:13:04,120 --> 00:13:06,980 iako smo o tome kako bi vaš razumijevanje više tehničkih? 221 00:13:08,150 --> 00:13:10,070 Što je cookie? Da. 222 00:13:10,070 --> 00:13:13,890 [Student] Informacije o korisniku, kao i ako ste ih napisao svoje korisničko ime ili nešto. 223 00:13:13,890 --> 00:13:17,370 >> Dobro. To je informacija o korisniku, da li ste upisali su u svojoj korisničko ime već. 224 00:13:17,370 --> 00:13:21,190 Kolačići su način kojim poslužitelji mogu sjetiti nešto o korisniku. 225 00:13:21,190 --> 00:13:25,810 I ono što je stvarno Cookie je tekstualna datoteka ili neki slijed bajtova 226 00:13:25,810 --> 00:13:28,340 koji je zasadio poslužitelju unutar vašeg preglednika, 227 00:13:28,340 --> 00:13:31,960 i unutar tog spisa ili među onima bajtova je neka vrsta identifikatora. 228 00:13:31,960 --> 00:13:35,640 Možda je to doslovno svoje korisničko ime, ali češće to je nešto više zagonetan izgleda 229 00:13:35,640 --> 00:13:43,700 ovako stvar ovdje - bo8dal3ct i tako dalje - ovo je stvarno velika alfanumerički niz 230 00:13:43,700 --> 00:13:47,050 da je stvarno samo značilo da se jedinstveni identifikator za vas. 231 00:13:47,050 --> 00:13:49,790 Ili možete misliti o njemu kao svojevrsni virtualni ruke pečatom. 232 00:13:49,790 --> 00:13:53,020 Ako idete na nekom klubu ili zabavnog parka, zapamtiti da ste zapravo platili 233 00:13:53,020 --> 00:13:55,850 i otišao u, oni su stavili malo crveni naljepnicu na svoju ruku neke vrste, 234 00:13:55,850 --> 00:13:59,270 i da podsjeća ljude na šalteru da ste već platili 235 00:13:59,270 --> 00:14:01,340 i možete doći i otići kao što molim. 236 00:14:01,340 --> 00:14:04,250 Kolačići su malo slični u duhu toga. 237 00:14:04,250 --> 00:14:08,070 Kad sam prvi put posjetio ovu web stranicu, kao što sam učinio nakon brisanja moj cache, 238 00:14:08,070 --> 00:14:11,620 web server, aparat u ovom slučaju, stavio pečat na svojoj ruci 239 00:14:11,620 --> 00:14:15,030 čije se ime PHPSESSID, sjednica ID, 240 00:14:15,030 --> 00:14:18,260 čija je vrijednost to stvarno dugo alfanumerički niz. 241 00:14:18,260 --> 00:14:22,470 >> Tako da je sada vrsta ukrašen na ruci, tako da sljedeći put sam pogodio reload 242 00:14:22,470 --> 00:14:25,230 ili ručno posjetite ovaj URL u pregledniku, 243 00:14:25,230 --> 00:14:29,230 moj preglednik po definiciji HTTP će predstaviti ruke pečat 244 00:14:29,230 --> 00:14:31,940 opet i opet i opet. 245 00:14:31,940 --> 00:14:34,550 Dakle, iako poslužitelj ne mora znati tko sam ja, 246 00:14:34,550 --> 00:14:39,610 oni barem znaju da sam isti korisnik ili barem, točnije, isti preglednik. 247 00:14:39,610 --> 00:14:45,660 I tako je to u konačnici kako SJEDNICA superglobal provodi. 248 00:14:45,660 --> 00:14:51,200 Poslužitelj nema pojma tko ste kada ponovo web stranicu za drugi ili treći put 249 00:14:51,200 --> 00:14:53,410 osim ako predstaviti ovu ruku pečat. 250 00:14:53,410 --> 00:14:55,530 A čim vam predstaviti tu ruku pečat, 251 00:14:55,530 --> 00:14:59,370 web server suštini ide u malu bazu vlastitu 252 00:14:59,370 --> 00:15:06,040 i provjere, ok, ja sam samo vidio ruku pečat korisnika bo8dal3ct i tako dalje. 253 00:15:06,040 --> 00:15:09,850 Vidjet ću što informacije programer je pohranjena 254 00:15:09,850 --> 00:15:12,380 unutar superglobal o tog korisnika, 255 00:15:12,380 --> 00:15:17,000 i onda neka mi bi bili sigurni da se podaci ponovno je unutar SJEDNICE superglobal 256 00:15:17,000 --> 00:15:19,830 tako da programer može ponovno pristupiti te podatke 257 00:15:19,830 --> 00:15:23,360 čak i ako je bio postavljen neki minuta ili sati prije. 258 00:15:23,360 --> 00:15:26,150 Dakle, drugim riječima, keksi, koji je dobio loš rap za neko vrijeme 259 00:15:26,150 --> 00:15:29,990 zbog nesigurnosti u preglednicima i oni stvarno mogu povrijediti našu privatnost i sve ovo, 260 00:15:29,990 --> 00:15:31,900 oni zapravo imaju veliku korisnost, jer bez njih 261 00:15:31,900 --> 00:15:36,110 ste stalno bi se prijavom na svakoj stranici na Facebooku možete posjetiti 262 00:15:36,110 --> 00:15:40,680 ili svaki Gmail e-mail ste pročitali, ako preglednik nije imala neki način sjećanja 263 00:15:40,680 --> 00:15:43,320 da ste već provjerena. 264 00:15:43,320 --> 00:15:46,640 >> Dakle, na taj način se kolačići šalju natrag i naprijed preko žice. 265 00:15:46,640 --> 00:15:52,470 Druga zanimljivost o kolačića, pogotovo ovdje, je da je to potpuno čisti tekst. 266 00:15:52,470 --> 00:15:54,930 Nema enkripcija se ovdje događa uopće, 267 00:15:54,930 --> 00:15:57,240 i doista sam koristeći HTTP u ovom trenutku. 268 00:15:57,240 --> 00:16:00,890 Jedan od naših izabrane trenutke u CS50, koji je sada dvije godine prije, 269 00:16:00,890 --> 00:16:04,750 je oko vremena alat koji se zove Firesheep izašao. 270 00:16:04,750 --> 00:16:08,320 To je bio slobodan komad softvera koji je izrađen od strane sigurnosnih istraživača 271 00:16:08,320 --> 00:16:13,250 kao poziv za buđenje za zajednicu reći koliko atrociously provodi 272 00:16:13,250 --> 00:16:17,900 određene provjere autentičnosti mehanizama na webu su. 273 00:16:17,900 --> 00:16:22,880 Dakle, za neko vrijeme, Facebook je gotovo u potpunosti preko HTTP, HTTPS ne. 274 00:16:22,880 --> 00:16:25,640 A čak i ako nemate pojma kako kripto radi, S je siguran 275 00:16:25,640 --> 00:16:27,950 pa to znači da postoji barem neki enkripcija uključena. 276 00:16:27,950 --> 00:16:30,610 Facebook je korišten za šifriranje korisničkih imena i lozinki, 277 00:16:30,610 --> 00:16:33,560 ali čim ste gledali na vašoj ismijava ili vaše poruke ili vaše vijesti hrane, 278 00:16:33,560 --> 00:16:35,360 sve to je nekodiran. 279 00:16:35,360 --> 00:16:37,870 Tako je Gmail dok samo godinu ili dvije dana. 280 00:16:37,870 --> 00:16:41,100 Svaki put kada prijavljeni, da, oni koriste sigurnu enkripciju, 281 00:16:41,100 --> 00:16:44,300 ali nakon toga nisu. A zašto bi to moglo biti? 282 00:16:44,300 --> 00:16:49,210 Zašto ne samo koristiti kriptografiju svih vremena u korištenju ovakvim slučajevima? 283 00:16:49,210 --> 00:16:53,700 Što je to? Mislim da sam čuo nešto. [Student] Speed. 284 00:16:53,700 --> 00:16:56,250 Brzina, zar ne? Postoje načini oko toga. 285 00:16:56,250 --> 00:16:59,610 Ali, ako ste samo vrsta razmišljati o tome logično, ako šifriranje nešto, 286 00:16:59,610 --> 00:17:01,820 morate učiniti barem malo više posla. 287 00:17:01,820 --> 00:17:05,460 U pset 2 kada provodi Cezar ili Vigenere ili čak Crack, 288 00:17:05,460 --> 00:17:07,760 Samo tiskanje niz je relativno lako. 289 00:17:07,760 --> 00:17:12,040 Šifriranje i zatim ispisuje niz minimalno zahtijeva malo više posla. 290 00:17:12,040 --> 00:17:14,520 >>  Za super popularne web stranice kao što su Google i Facebook, 291 00:17:14,520 --> 00:17:18,839 ako imate za napraviti više posla za svakog korisnika za svaku web stranici oni posjetiti, 292 00:17:18,839 --> 00:17:20,520 samo da je potrebno više CPU vremena. 293 00:17:20,520 --> 00:17:22,920 A ako vam je potrebno više CPU vremena, možda ćete trebati više poslužitelja, 294 00:17:22,920 --> 00:17:24,270 što znači da možda treba više novca. 295 00:17:24,270 --> 00:17:27,579 I tako već dugi niz godina to samo stvarno nije najbolje prakse. 296 00:17:27,579 --> 00:17:31,440 Ljudi će koristiti SSLšifriranje samo kada im je potrebno da. 297 00:17:31,440 --> 00:17:34,960 No, ispostavilo se, kao i ovog momka s Firesheep napravio super jasan, 298 00:17:34,960 --> 00:17:37,920 kad ti dečki koji su trenutno na Facebook-u upravo sada - 299 00:17:37,920 --> 00:17:39,880 Iz znatiželje, neka je vidjeti ako ćete Zlatna gore. 300 00:17:39,880 --> 00:17:42,620 Ako ste na Facebooku upravo sada u nekim kartici, čak i ako to nije prvi plan, 301 00:17:42,620 --> 00:17:46,610 je vaš URL HTTP ili HTTPS? 302 00:17:46,610 --> 00:17:50,560 [Više studenata] S. S? [Smijeh] 303 00:17:50,560 --> 00:17:55,510 Ok. Bilo HTTP? Samo jedan? Ok. 304 00:17:55,510 --> 00:17:58,940 Dakle, svatko od nas može hack taj momak je Facebook račun upravo sada. 305 00:17:58,940 --> 00:18:04,100 Za veći dio je to postalo uključen po defaultu, barem u nekim web stranicama. 306 00:18:04,100 --> 00:18:08,120 I ne duljimo, ako je vaš web prometa nije kodiran, 307 00:18:08,120 --> 00:18:12,960 ne samo HTML ići naprijed i natrag preko WiFis nekodiran, 308 00:18:12,960 --> 00:18:16,760 pa ne stvari poput kolačića ići naprijed i natrag kroz zrak 309 00:18:16,760 --> 00:18:18,940 bez bilo kakvog oblika enkripcije. 310 00:18:18,940 --> 00:18:23,540 Dakle, ako imate samo malo programiranja pamet ili malo Googling vještine 311 00:18:23,540 --> 00:18:27,410 pronaći slobodnog softvera koji radi to, sve što morate učiniti je sjediti u Starbucksu 312 00:18:27,410 --> 00:18:30,680 ili sjesti u zračnoj luci gdje je općenito nekodiran WiFi 313 00:18:30,680 --> 00:18:36,070 i samo gledati za ključne riječi kao što su set-Cookie: ili PHPSESSID 314 00:18:36,070 --> 00:18:39,300 jer ako imate tehničke pamet samo gledati WiFi 315 00:18:39,300 --> 00:18:43,010 za sve bitova koji toka kroz zrak za ovaj uzorak, 316 00:18:43,010 --> 00:18:50,840 onda možete reći da je tipu PHPSESSID se dogodi da se bo8dal i tako dalje. 317 00:18:50,840 --> 00:18:53,890 A onda opet, ako ste dovoljno tehnički pamet ili imate pravi alat, 318 00:18:53,890 --> 00:18:58,890 onda možete jednostavno konfigurirati svoj preglednik za početak predstavljanja tu ruku pečat 319 00:18:58,890 --> 00:19:05,030 na Facebook.com i Facebook samo će pretpostaviti da ste taj tip 320 00:19:05,030 --> 00:19:09,880 jer svi znaju nije tko ste, ali da ste ovaj jedinstveni identifikator. 321 00:19:09,880 --> 00:19:14,650 Dakle, ako vam ukrasti taj jedinstveni identifikator i prezentirati ga na web poslužitelju kao svoju vlastitu, 322 00:19:14,650 --> 00:19:16,860 oni su samo ću vam pokazati te osobe vijesti feed 323 00:19:16,860 --> 00:19:18,980 Ili da osoba koja je poruka ili ismijava. 324 00:19:18,980 --> 00:19:23,190 >> I ja bih Googleu sada kako aktivirati HTTPS za Facebook možda. 325 00:19:23,190 --> 00:19:25,150 No, to je stvarno kao jednostavan kao taj. 326 00:19:25,150 --> 00:19:27,660 I tako Facebook i Google i kao dobivši stvarno dobar u tome, 327 00:19:27,660 --> 00:19:31,870 ali držati oko vanjska strana sve više za sve web stranice koje posjećujete da ne koriste HTTP 328 00:19:31,870 --> 00:19:35,020 i imaju neku vrstu osjetljive informacije o njima, 329 00:19:35,020 --> 00:19:37,490 je li to financijski ili osobni ili slično. 330 00:19:37,490 --> 00:19:43,180 Ako oni ne koriste to, vrlo vjerojatno može kolačići ovako biti vrlo lako ukraden 331 00:19:43,180 --> 00:19:46,270 a zatim kovani, a to je upravo ono što Firesheep učinio. 332 00:19:46,270 --> 00:19:48,250 Vi ne morate biti programer. 333 00:19:48,250 --> 00:19:51,680 Sve što je morao učiniti bilo je priključak na Internet, preuzimanje ove besplatni alat, 334 00:19:51,680 --> 00:19:56,490 i ono što će učiniti je da se prijavite i onda bi vam pokazati Facebook imena 335 00:19:56,490 --> 00:20:00,170 od svi u Sanders, u ovom konkretnom demonstracije, oko vas 336 00:20:00,170 --> 00:20:03,260 i sve što je morao učiniti je kliknuti na svoje ime, a softver automatiziran proces 337 00:20:03,260 --> 00:20:05,970 od njuškanje taj kolačić, prikazujući ga na Facebooku kao svoju vlastitu, 338 00:20:05,970 --> 00:20:07,990 i, voila, ti si prijavljeni 339 00:20:07,990 --> 00:20:11,190 Dakle, ovo je jedan od onih "ne činite to" službeno. 340 00:20:11,190 --> 00:20:14,660 Ako imate svoj vlastiti kućnu mrežu i želite prtljati, svim sredstvima, 341 00:20:14,660 --> 00:20:17,530 ali shvatite to ne prijeći liniju na sveučilišnom okruženju. 342 00:20:17,530 --> 00:20:20,030 >> No, cilj ovdje je stvarno naglasiti ne kako to učiniti 343 00:20:20,030 --> 00:20:22,320 ali kako se obraniti od takvih stvari. 344 00:20:22,320 --> 00:20:26,180 I trivijalno rješenje ovdje, iako je i sama je manjkav, 345 00:20:26,180 --> 00:20:31,360 je stvarno smanjiti korištenje bilo mjestima koja ne koriste HTTPS stalno. 346 00:20:31,360 --> 00:20:34,520 Dakle, web stranice kao što su Facebook i Google imaju sve okvire 347 00:20:34,520 --> 00:20:36,200 gdje možete odlučiti za ovu vrstu stvar, 348 00:20:36,200 --> 00:20:40,000 a banke su imali to godinama iz sličnih razloga. 349 00:20:40,000 --> 00:20:43,580 Dakle, samo malo od straha faktor ako možemo. No, to je to ukratko. 350 00:20:43,580 --> 00:20:46,420 To je, kako poslužitelj pamti tko ste. 351 00:20:46,420 --> 00:20:50,760 I čim se mogu sjetiti tko ste, oni se mogu sjetiti ništa o vama 352 00:20:50,760 --> 00:20:56,140 da programer je pohranjena unutar ovog posebnog superglobal zove $ _SESSION. 353 00:20:56,140 --> 00:20:59,750 A za pset 7 smo ga koristite trivijalno samo sjetiti int, 354 00:20:59,750 --> 00:21:02,260 naime jedinstveni ID korisnika koji je prijavljen u, 355 00:21:02,260 --> 00:21:05,880 tako da znamo da ste bili tamo prije. 356 00:21:05,880 --> 00:21:12,450 Sva pitanja onda na sjednicama ili kolačiće ili poput? 357 00:21:12,450 --> 00:21:15,130 Firesheep ne radi, kao i više, 358 00:21:15,130 --> 00:21:18,310 i morate staviti vaše računalo u posebnom promiskuitetnom modu 359 00:21:18,310 --> 00:21:20,700 tako da zapravo sluša promet osim sebe. 360 00:21:20,700 --> 00:21:23,940 Dakle, ako ste trenutno skidate Firesheep, shvatite to nije sasvim tako lako 361 00:21:23,940 --> 00:21:26,850 kao što je nekad bio pokazati. 362 00:21:26,850 --> 00:21:29,070 U redu. I ne to učiniti u Sanders. Učinite to kod kuće. 363 00:21:29,070 --> 00:21:30,890 Baze podataka. 364 00:21:30,890 --> 00:21:33,580 Jedna od stvari koje smo učinili u pset 7 vrlo namjerno 365 00:21:33,580 --> 00:21:37,780 godine dajemo vam tablicu baze podataka uzorka za korisnike koji ima neke korisničke šifre 366 00:21:37,780 --> 00:21:41,020 neki korisničkih imena i lozinki neke šifrirane njemu. 367 00:21:41,020 --> 00:21:44,520 I kao što ćete vidjeti, ako već niste, ti si idući u morati promijeniti stolu malo. 368 00:21:44,520 --> 00:21:47,710 Ti si idući u morati dodati neke cache svaki od korisnika u toj tablici, 369 00:21:47,710 --> 00:21:51,130 i ti si idući u morati dodati još Povijest stol, portfelji stol, 370 00:21:51,130 --> 00:21:53,310 ili možda nazvati to nešto drugo. 371 00:21:53,310 --> 00:21:56,740 No, u smislu razmišljanja o tome kako to učiniti, ajmo otvoriti ovaj alat 372 00:21:56,740 --> 00:22:00,570 koje smo koristili u petak, ali ako nepoznato, aparat dolazi s alatom 373 00:22:00,570 --> 00:22:04,680 zove phpMyAdmin koji slučajno je napisan u PHP-u, 374 00:22:04,680 --> 00:22:07,950 ali njegova svrha u životu, nakon što sam se prijaviti ovdje kao jharvard s grimizne, 375 00:22:07,950 --> 00:22:15,160 je da će mi dati user-friendly način gledanja i mijenja moj baze podataka. 376 00:22:15,160 --> 00:22:18,040 >> Baza podataka koja sam trčanje na aparatu se zove MySQL. 377 00:22:18,040 --> 00:22:23,420 To je vrlo popularan, a to je besplatni open source baza podataka koja je predivno jednostavan za korištenje, 378 00:22:23,420 --> 00:22:25,620 pogotovo s prednje završava ovako. 379 00:22:25,620 --> 00:22:29,350 Ono što ovaj alat omogućava da učinim, na primjer, je guranje oko stolova. 380 00:22:29,350 --> 00:22:30,890 Dopustite mi ići naprijed i učiniti. 381 00:22:30,890 --> 00:22:36,580 U petak smo stvorili tablicu pod nazivom studenata koji je bio super jednostavna. 382 00:22:36,580 --> 00:22:41,680 Ona je imala tri kolone - ID, ime i e-mail - a ja ručno umetnuti nekoliko redaka 383 00:22:41,680 --> 00:22:44,420 poput Davida i Mike u ovom konkretnom primjeru. 384 00:22:44,420 --> 00:22:47,290 Ajmo uzeti malo dalje, i pretpostavimo da želimo se sjetiti više 385 00:22:47,290 --> 00:22:49,660 nego samo ime i e-mail o korisniku. 386 00:22:49,660 --> 00:22:53,090 Dopustite mi kliknite Struktura ovdje na vrhu. 387 00:22:53,090 --> 00:22:55,440 I opet, pset vas provesti kroz potrebnim koracima ovdje, 388 00:22:55,440 --> 00:22:58,150 tako da ne brinite ako neki od ova je malo brza. 389 00:22:58,150 --> 00:22:59,690 Onda idem kliknite ovdje. 390 00:22:59,690 --> 00:23:02,270 Ja ću dodati neki broj stupaca nakon e-maila 391 00:23:02,270 --> 00:23:04,130 jer želim dodati nešto poput kuće. 392 00:23:04,130 --> 00:23:06,640 Zaboravio sam snimati učenika kuću. 393 00:23:06,640 --> 00:23:11,400 Dopustite mi kliknite Idi, a sada imamo ovu formu da nažalost je malo široka s lijeva na desno, 394 00:23:11,400 --> 00:23:13,710 ali ja ću nazvati naziv ovog polja kući, 395 00:23:13,710 --> 00:23:16,050 i onda tip I sada moram birati. 396 00:23:16,050 --> 00:23:18,870 Tako ćemo imati kratak razgovor o različitim vrstama u MySQL 397 00:23:18,870 --> 00:23:24,590 jer dok PHP slabo se upisali i to vrsta igra brz i labav s vrstama, 398 00:23:24,590 --> 00:23:29,430 u bazi podataka posebno je super važno da se zapravo koristiti tipkati u svoju korist 399 00:23:29,430 --> 00:23:33,260 jer je jedna od stvari MySQL i druge baze podataka motora može učiniti za vas 400 00:23:33,260 --> 00:23:37,910 se osiguralo da se ne stavi lažne podatke u bazu podataka. 401 00:23:37,910 --> 00:23:41,850 To je vrsta slobodnog kontrole pogrešaka koje su Vam dostupne. 402 00:23:41,850 --> 00:23:46,250 >> Za kuću mi očito ne žele da bude int, što je 32-bitni vrijednost u MySQL. 403 00:23:46,250 --> 00:23:49,810 Napravili smo razgovarati kratko je u petak oko varchar, koja se zalaže za promjenjive duljine char. 404 00:23:49,810 --> 00:23:54,720 Što je ovo? To vam omogućuje da odredite što želite da ovo bude niz neke vrste. 405 00:23:54,720 --> 00:23:56,840 Vi stvarno ne znate unaprijed koliko dugo je to, 406 00:23:56,840 --> 00:24:00,100 pa smo proizvoljno ću reći kuća Naziv može biti 255 znakova, 407 00:24:00,100 --> 00:24:04,190 ali bi mogao ići s 32, 64 - neograničen broj stvarno. 408 00:24:04,190 --> 00:24:10,700 No, prednost korištenja VARCHAR preko polja zove char je ono? 409 00:24:10,700 --> 00:24:15,110 Samo intuitivno ako sam dođite ovamo, primijetiti da je char a tu je varchar. 410 00:24:15,110 --> 00:24:19,520 VARCHAR je promjenjive duljine char; char je fiksna duljina char. 411 00:24:19,520 --> 00:24:24,730 Dakle, samo na temelju toj definiciji, ono što je prednost ili nedostatak svakog od njih? 412 00:24:24,730 --> 00:24:30,490 Drugim riječima, tko se brine o razlici, ili zašto bi vam je stalo? 413 00:24:31,660 --> 00:24:35,750 >> Da. [Student] VARCHAR ima veću fleksibilnost, ali zauzima više memorije. 414 00:24:35,750 --> 00:24:40,730 Dobro. VARCHAR zauzima više - Idemo vidjeti. Nisam siguran da sam čuo da je pravo. 415 00:24:40,730 --> 00:24:42,360 Može li se reći da je još jednom? 416 00:24:42,360 --> 00:24:45,850 [Student] Rekao sam varchar vjerojatno ima veću fleksibilnost, ali zauzima više memorije. 417 00:24:45,850 --> 00:24:51,170 Zanimljivo. Ok. VARCHAR vjerojatno vam daje više fleksibilnosti, ali zauzima više memorije. 418 00:24:51,170 --> 00:24:53,220 Potonji nije nužno istina. 419 00:24:53,220 --> 00:24:56,290 To ovisi o kontekstu, ali hajdemo se vratiti na to. 420 00:24:56,290 --> 00:25:03,230 >> [Nečujno učenik odgovor] Točno. 421 00:25:03,230 --> 00:25:06,900 To je zapravo slučaj da char obično će koristiti više memorije 422 00:25:06,900 --> 00:25:10,950 jer char, kao u C, kao i niza, to je niz znakova. 423 00:25:10,950 --> 00:25:13,690 Dakle, ako ste recimo char polja duljine 255, 424 00:25:13,690 --> 00:25:16,910 baza doslovno će vam dati 255 znakova. 425 00:25:16,910 --> 00:25:22,290 A ako je kuća završi Mather i 6 znakova ukupno, 426 00:25:22,290 --> 00:25:25,090 ti si gubit više od 200 znakova. 427 00:25:25,090 --> 00:25:29,640 >> Dakle varchar učinkovito koristi samo onoliko znakova koliko je potrebno 428 00:25:29,640 --> 00:25:31,590 do maksimalnog iznosa. 429 00:25:31,590 --> 00:25:35,470 No, cijena koju plaćate je zapravo izvedba, potencijalno. 430 00:25:35,470 --> 00:25:39,740 Ako unaprijed znate da su sve svoje žice će biti osam znakova - 431 00:25:39,740 --> 00:25:43,090 Na primjer, pretpostavimo da zahtijevaju lozinke duljine 8 - 432 00:25:43,090 --> 00:25:47,350 naopako korištenja char polja na prigodu, iako ne često, 433 00:25:47,350 --> 00:25:51,100 je odrediti fiksnu duljinu za nešto poput lozinkom 434 00:25:51,100 --> 00:25:53,300 jer sada se baza podataka može biti čak i pametniji. 435 00:25:53,300 --> 00:25:58,160 Ako se zna da svaki char polja, svaki string u stupcu iste duljine, 436 00:25:58,160 --> 00:26:00,780 li se vratiti obilježje izravnim pristupom. 437 00:26:00,780 --> 00:26:05,110 Možete skakati među različitim char polja u tablici baze podataka 438 00:26:05,110 --> 00:26:07,940 jer mislim baze podataka kao retke i stupce. 439 00:26:07,940 --> 00:26:11,670 Dakle, ako svaki od nizova je iste duljine, 440 00:26:11,670 --> 00:26:17,820 znate da je prvi je na bajtu 0, sljedeći je na bajtu 8 441 00:26:17,820 --> 00:26:20,240 , a zatim 16 i zatim 24 i tako dalje. 442 00:26:20,240 --> 00:26:24,500 Dakle, ako su svi nizovi su iste dužine, možete skočiti oko mnogo učinkovitije. 443 00:26:24,500 --> 00:26:26,710 Dakle, to može biti prednost u pogledu performansi, 444 00:26:26,710 --> 00:26:29,420 ali obično nemate luksuz znajući unaprijed, 445 00:26:29,420 --> 00:26:32,170 tako varchar je put to ići. 446 00:26:32,170 --> 00:26:36,030 Evo još jedan detalj koji još Facebook naletjeli na kraju. 447 00:26:36,030 --> 00:26:39,670 Ints su veliki, a mi svojevrsno ih koristiti po defaultu bilo koje vrijeme želimo broj, 448 00:26:39,670 --> 00:26:41,750 ali to je samo 32 bita. 449 00:26:41,750 --> 00:26:46,210 >> I iako ne sasvim Facebook ima četiri milijarde korisnika sada, 450 00:26:46,210 --> 00:26:48,680 tu je definitivno neki ljudi vani s više računa 451 00:26:48,680 --> 00:26:50,960 ili račune koji su otvoreni, a zatim zatvoren, 452 00:26:50,960 --> 00:26:55,130 i tako Facebook sama vjerujem prije nekoliko godina imao za prijelaz iz int 453 00:26:55,130 --> 00:27:00,010 da, kao podesno zove, BIGINT, što je samo 64 bita umjesto. 454 00:27:00,010 --> 00:27:02,230 Dakle, ovo je dizajn odluka. 455 00:27:02,230 --> 00:27:06,570 Ti bi biti nevjerojatno sretan ako vaš konačni projekt pretvara pokretanja, 456 00:27:06,570 --> 00:27:10,010 je 4000000000 i jedan korisnik, dati ili uzeti, 457 00:27:10,010 --> 00:27:13,200 u kojem slučaju korištenja Ints moglo biti malo kratkovidan. 458 00:27:13,200 --> 00:27:16,230 No, u stvarnosti, vaša korisnici stol je vjerojatno u redu s Ints. 459 00:27:16,230 --> 00:27:19,340 No, za tako nešto pset 7, kao i vaše povijesti tablici, 460 00:27:19,340 --> 00:27:23,700 možda ćete morati tisuće, milijuni korisnika, ako se razvije u etrade.com. 461 00:27:23,700 --> 00:27:26,020 Dakle, dok se ne može imati više od četiri milijarde korisnika, 462 00:27:26,020 --> 00:27:30,070 oni korisnici imate možda imaju više od četiri milijarde transakcija tijekom vremena - 463 00:27:30,070 --> 00:27:33,200 kupuje i prodaje, a stvari u svojoj povijesti. 464 00:27:33,200 --> 00:27:38,090 Dakle, ako vam je činiti predvidjeti - opet, to su dobri problemi imaju ako imate ovaj mnogo podataka - 465 00:27:38,090 --> 00:27:40,920 ako ništa predvidjeti podatke premašuju veličinu int, 466 00:27:40,920 --> 00:27:47,740 ide s nešto poput BIGINT je smjer nije dovoljno često donosi dizajnera 467 00:27:47,740 --> 00:27:49,710 jer ljudi lik koji neće biti problem, 468 00:27:49,710 --> 00:27:51,930 ali to je to lako odabrati nešto veći od toga. 469 00:27:51,930 --> 00:27:55,380 Europski smo koristiti u pset 7, koji određuje fiksnu preciznost 470 00:27:55,380 --> 00:27:59,840 tako da možete izbjeći pitanja koja uključuju pliva i dubl i realne i slično. 471 00:27:59,840 --> 00:28:02,440 >> A tu je i neke druge stavke ovdje. Mi ćemo mahati naše ruke na njih u određenoj mjeri. 472 00:28:02,440 --> 00:28:07,270 No, datumi, vremena svi imaju propisanu format u MySQL, 473 00:28:07,270 --> 00:28:10,830 i prednost pohranu datuma kao datum, a ne varchars 474 00:28:10,830 --> 00:28:15,730 znači da banka može zapravo ih formatirati u različitim oblicima, 475 00:28:15,730 --> 00:28:18,800 hoće li SAD format ili europski format ili kao - kako god to želite - 476 00:28:18,800 --> 00:28:22,700 puno učinkovitije nego ako su samo neki generički varchar. 477 00:28:22,700 --> 00:28:25,150 A onda je neki drugi binarni, varbinary, mrljica. 478 00:28:25,150 --> 00:28:28,580 To su binarni velike predmete, a također možete pohraniti binarne podatke 479 00:28:28,580 --> 00:28:30,750 kao geometrijskih podataka u bazi podataka. 480 00:28:30,750 --> 00:28:34,350 No, za nas, mi obično ćete stalo Ints i varchars i poput. 481 00:28:34,350 --> 00:28:36,230 Hajdemo završiti ovaj primjer s kuće. 482 00:28:36,230 --> 00:28:40,030 Kuća ću samovoljno reći će biti 255 znakova. 483 00:28:40,030 --> 00:28:42,850 Zatim zadana vrijednost možemo to učiniti. 484 00:28:42,850 --> 00:28:47,440 Mogli bismo po defaultu staviti sve u Mather doma, na primjer. 485 00:28:47,440 --> 00:28:49,710 To je kako smo mogli navesti da baza 486 00:28:49,710 --> 00:28:52,460 treba osigurati da netko uvijek ima vrijednost. Ali ću ostaviti da bude. 487 00:28:52,460 --> 00:28:55,270 U stvari, za ljude koji žive izvan kampusa, a ne u kući, 488 00:28:55,270 --> 00:28:59,590 možda sam zapravo žele odrediti da zadana vrijednost za kuće je NULL, 489 00:28:59,590 --> 00:29:04,890 i onda moram provjeriti ovu kućicu i reći baze podataka je u redu ako korisnikov kuća je NULL. 490 00:29:04,890 --> 00:29:07,270 >> Opet, ovo je još jedan obrambeni mehanizam možete staviti na mjesto 491 00:29:07,270 --> 00:29:10,590 tako da uopće ne morate ga staviti u svoj PHP koda nužno. 492 00:29:10,590 --> 00:29:14,630 Baza podataka će osigurati da su stvari ili nisu NULL. 493 00:29:14,630 --> 00:29:17,310 I onda na kraju, atributi. 494 00:29:17,310 --> 00:29:18,920 Nitko od njih su stvarno relevantna. 495 00:29:18,920 --> 00:29:22,880 Binarni, nepotpisani - nitko od onih koji su relevantni za varchar. 496 00:29:22,880 --> 00:29:24,220 Indeks. 497 00:29:24,220 --> 00:29:27,320 Zna li netko ili zapamtiti ili imaju pogodak kao što je indeks 498 00:29:27,320 --> 00:29:29,510 za nešto poput kuće? 499 00:29:29,510 --> 00:29:35,240 Ovo je previše je zapravo važno i relativno lako dizajn odluka. 500 00:29:35,240 --> 00:29:39,200 Za one koji još nisu vidjeli, u petak razgovarali smo kratko o primarnih ključeva. 501 00:29:39,200 --> 00:29:43,240 U tablici baze podataka, Primarni ključ je polje ili stupac 502 00:29:43,240 --> 00:29:46,270 koji jedinstveno identificira redaka u tablici. 503 00:29:46,270 --> 00:29:49,150 Dakle, u trenutnoj tablici imamo iskaznice, imamo imena i e-mailove. 504 00:29:49,150 --> 00:29:52,050 Koji od njih je najbolji kandidat biti primarni ključ, 505 00:29:52,050 --> 00:29:55,810 čija uloga je jedinstveno identificiraju retke? 506 00:29:55,810 --> 00:29:57,530 Vjerojatno ID. 507 00:29:57,530 --> 00:29:59,930 Nedvojbeno, mi također mogli koristiti ono ipak? 508 00:29:59,930 --> 00:30:02,860 Možda ste mogli koristiti e-mail, jer u teoriji je jedinstvena 509 00:30:02,860 --> 00:30:05,380 osim ako se ljudi dijele računa e-pošte. 510 00:30:05,380 --> 00:30:09,980 No, realnost je da ako koristite numeričku ID kao 1234, 511 00:30:09,980 --> 00:30:14,170 to je samo 32 bita, dok je e-mail adresa mogao biti to mnogi bajtova ili to mnogi bajtova. 512 00:30:14,170 --> 00:30:16,610 Dakle, u smislu učinkovitosti za jedinstvenih identifikatora, 513 00:30:16,610 --> 00:30:19,270 tendira da bude dobra praksa samo koristiti int 514 00:30:19,270 --> 00:30:23,090 čak i ako imate neki string kandidata koji nedvojbeno mogao koristiti. 515 00:30:23,090 --> 00:30:26,760 >> Za nešto poput kuće, to ne bi trebao biti primarni ključ 516 00:30:26,760 --> 00:30:30,770 jer tada je samo jedan čovjek mogao živjeti u Mather i jedna osoba u Currier i slično. 517 00:30:30,770 --> 00:30:32,790 Isto tako, to ne bi trebao biti jedinstven. 518 00:30:32,790 --> 00:30:37,830 Razlika između osnovnog i jedinstven je da u slučaju našeg trenutnog tablici, 519 00:30:37,830 --> 00:30:42,620 ID bi biti primarna, ali email nije primarni razlog za mi samo spominje - 520 00:30:42,620 --> 00:30:44,740 nastup - ali to još uvijek bi trebao biti jedinstven. 521 00:30:44,740 --> 00:30:47,200 Dakle, još uvijek možete provesti jedinstvenost bez tvrdnju 522 00:30:47,200 --> 00:30:49,520 da je super važna primarna polje. 523 00:30:49,520 --> 00:30:52,610 Ali ovo je vrlo korisno: Indeks. 524 00:30:52,610 --> 00:30:56,180 Ako znate unaprijed za svoj konačni projekt, za pset 7, ili u cjelini, 525 00:30:56,180 --> 00:30:59,480 da je ovo područje kuća će biti nešto što tražiti na puno 526 00:30:59,480 --> 00:31:01,910 pomoću select ključnu riječ ili nešto drugo, 527 00:31:01,910 --> 00:31:05,180 onda preventivno mogu reći bazu podataka raditi svoje čari 528 00:31:05,180 --> 00:31:10,510 i pobrinite se da to stvara u sjećanju bilo koji ukrasni strukture podataka potrebno 529 00:31:10,510 --> 00:31:13,770 kako bi ubrzali pretraživanja na temelju kuće. 530 00:31:13,770 --> 00:31:17,860 Možda će koristiti ljestve tablicu, možda će koristiti povezanu listu. 531 00:31:17,860 --> 00:31:21,260 U stvarnosti, on ima tendenciju da koriste stablo, često struktura naziva B-stablo - 532 00:31:21,260 --> 00:31:24,090 nije binarno stablo, ali B-stablo - što je vrlo širok stablo 533 00:31:24,090 --> 00:31:27,370 koje ste mogli vidjeti u klasi kao CS124, klasne strukture podataka. 534 00:31:27,370 --> 00:31:31,800 No, u kratko, ne morate brinuti o tome kada koristite Smart baze podataka softver. 535 00:31:31,800 --> 00:31:35,890 Možete samo reći, "Indeks ovu oblast, tako da mogu potražiti na njemu učinkovitije." 536 00:31:35,890 --> 00:31:40,250 >> Ako napustite ovu off, a vi pokušajte potražiti svima u bazi podataka koji živi u Mather, 537 00:31:40,250 --> 00:31:42,710 to će prenijeti u linearno pretraživanje. 538 00:31:42,710 --> 00:31:45,360 A ako imaš 6000 undergrads sve koji žive u nekoj kući, 539 00:31:45,360 --> 00:31:47,900 ideš tražiti cijelu tablicu pronaći Matherites, 540 00:31:47,900 --> 00:31:52,190 a ako ti kažeš indeks, nadamo se da će biti nešto u blizini logaritamskoj pretraživanje 541 00:31:52,190 --> 00:31:54,510 kako bi pronašli one vrste učenika. 542 00:31:54,510 --> 00:31:56,750 Ovo je samo slobodan značajka za uključivanje, 543 00:31:56,750 --> 00:31:59,530 iako to ne dolazi po cijeni od nekih iznosu od prostora. 544 00:31:59,530 --> 00:32:02,690 Na kraju, auto-prirast, to AI polje, 545 00:32:02,690 --> 00:32:05,830 što samo znači ako je int, a vi ne želite da se brine za povećanje sami 546 00:32:05,830 --> 00:32:07,570 svaki put tu je novi korisnik, provjerite da 547 00:32:07,570 --> 00:32:11,910 i svaki korisnik koji se umeće automatski će dobiti novu iskaznicu. 548 00:32:11,910 --> 00:32:15,620 Ajmo kliknite Spremi, a sada idemo pronaći grešku s ovim dizajnom. 549 00:32:15,620 --> 00:32:20,200 Ako odem u Pregledavanje, obavijest da su Mike i moja kuća je NULL. 550 00:32:20,200 --> 00:32:22,420 Ja mogu koristiti phpMyAdmin urediti ovu ručno. 551 00:32:22,420 --> 00:32:25,110 Ja mogu ići u ovdje i putovanja u Mather, a zatim pritisnite Enter, 552 00:32:25,110 --> 00:32:27,740 i sada primjetiti stol je drugačiji. 553 00:32:27,740 --> 00:32:29,270 Ali primijetite da mogu učiniti nešto drugo, kao dobro. 554 00:32:29,270 --> 00:32:33,530 David ID 1, tako phpMyAdmin opet je samo administrativno alat; 555 00:32:33,530 --> 00:32:35,970 to nije nešto što vaši korisnici ikada idući u vidjeti. 556 00:32:35,970 --> 00:32:38,810 Dakle, ako sam umjesto kliknite SQL karticu do vrha - 557 00:32:38,810 --> 00:32:41,450 i opet, pset 7 će vam predstaviti više od tih upita - 558 00:32:41,450 --> 00:32:45,260 Ja mogu ručno izvršiti SQL naredbu strukturirani jezik upita 559 00:32:45,260 --> 00:32:56,410 UPDATE korisnici SET house = 'Pfoho' GDJE id = 1. 560 00:32:56,410 --> 00:33:00,830 Ove SQL upita su, lijepo dovoljno, prilično čitljiv s lijeva na desno. 561 00:33:00,830 --> 00:33:04,350 Ažurirajte korisnicima stol, postavite polje zove kuća Pfoho 562 00:33:04,350 --> 00:33:06,830 gdje korisnikov ID je jedan. 563 00:33:06,830 --> 00:33:11,480 Ili čak sam mogao učiniti gdje e = 'malan@harvard.edu'. 564 00:33:11,480 --> 00:33:14,860 Tako dugo dok to jedinstveno identificira me, da će raditi kao dobro. 565 00:33:14,860 --> 00:33:18,810 No ID tendira da bude veća učinkovitost, pa neka je to učiniti. 566 00:33:18,810 --> 00:33:22,950 Ajmo kliknite Idi. Ok, lecture.users ne postoji. Koja je moja greška? 567 00:33:22,950 --> 00:33:26,220 Što je tablica zapravo zove ovdje? 568 00:33:26,220 --> 00:33:28,770 To se zove studenti samo zato to je ono što smo učinili ovdje u gornjem lijevom kutu. 569 00:33:28,770 --> 00:33:31,860 To se zove učenici, a ne korisnike. Dakle, kliknite Idi sada. 570 00:33:31,860 --> 00:33:34,330 1 red utjecati. Upit je 0,01 sekundi. 571 00:33:34,330 --> 00:33:38,010 Ako sam kliknite Pregledaj sada, sada Malan živote u Pfoho. 572 00:33:38,010 --> 00:33:42,070 Dakle, to je još jedan okus SQL, ali pset će vas provesti kroz malo više od toga. 573 00:33:42,070 --> 00:33:44,710 >> Tu je glupa odluka već sam napravio ovdje. 574 00:33:44,710 --> 00:33:47,820 Ja bih rekao da je to baza podataka dizajn je neučinkovita 575 00:33:47,820 --> 00:33:51,650 jer više ljudi mogu dodati za studente tablici, 576 00:33:51,650 --> 00:33:54,730 više od nas sam početi dodavanjem, više od TFS sam početi dodavanjem, 577 00:33:54,730 --> 00:33:58,320 idemo početi vidjeti što viškovi u ovoj tablici? 578 00:34:00,840 --> 00:34:06,020 >> Da. [Student] Vidjevši da je kod studenata, mi koristimo isti [nečujan] 579 00:34:06,020 --> 00:34:07,360 Isti - Točno, točno. 580 00:34:07,360 --> 00:34:10,400 Dakle, ako 400 ljudi živi u Mather, dati ili uzeti, 581 00:34:10,400 --> 00:34:15,000 na kraju ova tablica će imati 400 redaka koji kažu "Mather", "Mather," 582 00:34:15,000 --> 00:34:16,590 "Mather", "Mather", "Mather." 583 00:34:16,590 --> 00:34:19,820 Mi smo gubit svih tih bajtova, a tu je par Zaključci tamo. 584 00:34:19,820 --> 00:34:23,080 1, tamo je luda kutak slučaj gdje ako netko plaća puno novca 585 00:34:23,080 --> 00:34:25,949 i preimenuje Mather, sada moramo promijeniti naš cijeli tablicu baze podataka. 586 00:34:25,949 --> 00:34:29,730 To se neće dogoditi često, iako Pfoho nekad zvalo Sjeverna Kuća prije 15 godina, 587 00:34:29,730 --> 00:34:32,310 tako što će se dogoditi. No, to nije sve što je uvjerljiv. 588 00:34:32,310 --> 00:34:36,000 Više uvjerljiv nego kutnom slučaju kao da trebaju ažurirati podatke u rasutom stanju 589 00:34:36,000 --> 00:34:41,150 za baze podataka je zašto ste spremanje Mather opet i opet i opet i opet? 590 00:34:41,150 --> 00:34:43,020 To je puno znakova, 6 znakova. 591 00:34:43,020 --> 00:34:45,500 Ne mogu mi čak i bolje od toga, a posebno za Pforzheimer? 592 00:34:45,500 --> 00:34:48,320 Sigurno možemo učiniti bolje od toga mnogo znakova. 593 00:34:48,320 --> 00:34:51,790 Zašto ne samo povezati jedinstveni identifikator sa svake kuće 594 00:34:51,790 --> 00:34:55,020 i dućan da za svakog korisnika? Dakle, pokušajmo to. 595 00:34:55,020 --> 00:35:00,610 Umjesto da samo koristiti studenti stol, pusti me do moje predavanje baze ovdje na gornjem lijevom kutu. 596 00:35:00,610 --> 00:35:02,600 Obavijest ovdje kaže Stvaranje tablice. 597 00:35:02,600 --> 00:35:04,550 Dopustite mi stvoriti novu tablicu pod nazivom kuće. 598 00:35:04,550 --> 00:35:08,880 Broj stupaca će biti dva. Upišite. 599 00:35:08,880 --> 00:35:11,200 Sada imam dva polja. 600 00:35:11,200 --> 00:35:14,600 Idem nazvati to ime, a to će biti varchar duljine 255, 601 00:35:14,600 --> 00:35:18,770 >> ali to je prilično proizvoljna. Dopustite mi da stavi to ovdje dolje po konvenciji. 602 00:35:18,770 --> 00:35:22,840 Dakle, stavite ID ovdje. Dajmo svaka kuća jedinstveni identifikator. 603 00:35:22,840 --> 00:35:25,360 Dajmo svakoj kući ime. 604 00:35:25,360 --> 00:35:30,980 Hajdemo odrediti da identifikator će biti nepotpisana samo po konvenciji koristiti samo pozitivne brojeve. 605 00:35:30,980 --> 00:35:35,020 Idemo naprijed i dati ovaj auto-prirast polje za sada. 606 00:35:35,020 --> 00:35:38,160 I trebamo nešto drugo? 607 00:35:38,160 --> 00:35:41,010 Idemo naprijed i kliknite Spremi. 608 00:35:41,010 --> 00:35:42,480 Sada imam drugi stol. 609 00:35:42,480 --> 00:35:45,860 Obavijest kao stranu to je malo zagonetan SQL naredba 610 00:35:45,860 --> 00:35:50,280 da li bi morao upisati ručno, ako ne koristite upravni alat poput phpMyAdmin. 611 00:35:50,280 --> 00:35:51,990 Tako je još jedan razlog zbog kojeg smo ga koristiti. 612 00:35:51,990 --> 00:35:55,480 To je čudesno korisna vrsta pedagoški, jer možete kliknuti oko 613 00:35:55,480 --> 00:36:01,050 i shvatiti kako stvari funkcioniraju po samo kopirati i zalijepiti ono phpMyAdmin učinio. 614 00:36:01,050 --> 00:36:04,150 Ali naredba stvoriti tablicu je ono samo je pogubljen, a ovdje je moj stol. 615 00:36:04,150 --> 00:36:11,370 Dopustite mi ići naprijed i sada koristiti sirovo SQL nego prevelikog pojednostavljivanja klikom na Umetni karticu. 616 00:36:11,370 --> 00:36:15,040 Dopustite mi da ne INSERT INTO kućama, 617 00:36:15,040 --> 00:36:22,230 a ja ću reći ime kuće će imati vrijednost 'Mather'. 618 00:36:22,230 --> 00:36:24,790 To je to. Ovo je sintaksa malo više zagonetan. 619 00:36:24,790 --> 00:36:26,660 To je naziv polja želimo umetnuti. 620 00:36:26,660 --> 00:36:30,390 To su vrijednosti koje želimo umetnuti u tim područjima. Dopustite mi kliknite Idi. 621 00:36:30,390 --> 00:36:34,410 1 redak umeće je 0,02 sekundi. Dopustite mi da kliknete Pregled sada. 622 00:36:34,410 --> 00:36:42,020 >> Obavijest ako sam pritisnite Pregled, tu je Mather, čiji ID je po automatizacije broj jedan. 623 00:36:42,020 --> 00:36:45,000 Dopustite mi napraviti još jedan. Pusti me u SQL kartici. 624 00:36:45,000 --> 00:36:52,950 INSERT INTO kućama. Naziv kuće će imati vrijednost Pfoho i tako dalje. 625 00:36:52,950 --> 00:36:56,350 Go. I mogu zadržati to opet i opet i opet. 626 00:36:56,350 --> 00:36:59,470 Ili, ako vam dosadi koristeći phpMyAdmin, možete jednostavno koristiti karticu Insert 627 00:36:59,470 --> 00:37:01,000 a da ne morate upisati sirove SQL. 628 00:37:01,000 --> 00:37:04,690 Vi samo možete ga udarati se brže tipkanje, na primjer, Currier, Enter 629 00:37:04,690 --> 00:37:07,610 i sad ako mi kliknete Pregledavanje, postoji Currier s ID tri. 630 00:37:07,610 --> 00:37:09,920 Dakle, to je ono što mi podrazumijevamo pod auto-prirast. 631 00:37:09,920 --> 00:37:12,280 No, sada moramo popraviti nešto u studenata. 632 00:37:12,280 --> 00:37:16,240 U studente što bi vrsta podataka od kuće polju sada biti? 633 00:37:16,240 --> 00:37:19,450 To bi trebao biti int, zar ne? 634 00:37:19,450 --> 00:37:23,950 Dakle, cilj je da se ovdje faktor van, inače poznat kao normalizirati, stolovi 635 00:37:23,950 --> 00:37:27,940 tako da mi ne pohranu informacija redundantly u bilo kojem od mojih tablica. 636 00:37:27,940 --> 00:37:31,130 I opet, put smo bili ovdje će reći Mather, Mather, 637 00:37:31,130 --> 00:37:34,220 Mather, Mather, Pfoho, Pfoho, Pfoho, Pfoho, što je vrlo suvišan 638 00:37:34,220 --> 00:37:36,240 u smislu rasipništvo od znakovi. 639 00:37:36,240 --> 00:37:40,820 Pa neka mi ići naprijed i to promijeniti klikom strukture, 640 00:37:40,820 --> 00:37:44,620 i pusti me naprijed i prekrižite kuću polje, kliknite Change 641 00:37:44,620 --> 00:37:46,990 i sad ću to promijeniti da bude int. 642 00:37:46,990 --> 00:37:49,490 255 više nije relevantan. 643 00:37:49,490 --> 00:37:54,010 Pusti me naprijed i reći da je u redu ako je još uvijek NULL. Spremi. 644 00:37:54,010 --> 00:37:55,870 Sada lista studenata je izmijenjen uspješno, 645 00:37:55,870 --> 00:37:59,090 i opet primijetiti kuća je int. 646 00:37:59,090 --> 00:38:02,220 Kao na stranu, zanemari broj u zagradama kada je u pitanju Ints. 647 00:38:02,220 --> 00:38:03,770 >> Ovo je za naslijeđene razloga. 648 00:38:03,770 --> 00:38:06,920 Natrag u dan kada nije imao GUI, te umjesto toga imali okoliša naredbenog retka, 649 00:38:06,920 --> 00:38:11,580 u 10 i 11, odnosno specificirani koliko likovi trebali pokazati 650 00:38:11,580 --> 00:38:13,950 u terminal prozoru zapravo prikazati polja. 651 00:38:13,950 --> 00:38:19,150 To nema nikakve veze s bitnom dužini od stvarnog terena, pa ćemo samo ignorirati da za sada. 652 00:38:19,150 --> 00:38:20,990 Sada moram ići u ovoj tablici. 653 00:38:20,990 --> 00:38:24,610 A ako je David živi u Mather, kuća ne bi trebala biti 0, 654 00:38:24,610 --> 00:38:27,350 koja je zadana vrijednost int najbliži NULL. 655 00:38:27,350 --> 00:38:29,810 On bi trebao živjeti u kući jednog. 656 00:38:29,810 --> 00:38:36,870 Ajmo reći da je samovoljno Mike živi u Pfoho, tako da kuća broj dva. 657 00:38:36,870 --> 00:38:40,160 Sada moj stol izgleda malo više zagonetan. 658 00:38:40,160 --> 00:38:41,960 No, razmislite o učinkovitosti. 659 00:38:41,960 --> 00:38:44,860 Ja sam sada koristi samo 32 bita identificirati kuću, 660 00:38:44,860 --> 00:38:49,530 što znači da postoji samo jedan kanonski definicija moje kuće Mather i Pfoho 661 00:38:49,530 --> 00:38:52,090 i da je u kuće tablici. 662 00:38:52,090 --> 00:38:55,880 Dakle, ako želim sada ponovno ove tablice, mislim da je to na ovaj način. 663 00:38:55,880 --> 00:39:01,980 Ovdje imam studentima stol, a na desnoj strani ima ove brojke, 1 i 2. 664 00:39:01,980 --> 00:39:04,180 1 Mather, 2 Pfoho. 665 00:39:04,180 --> 00:39:08,580 Imamo one iste brojeve u ovoj drugoj tablici, koja se zove kuće, 666 00:39:08,580 --> 00:39:11,020 1 i 2 i 3 za one 3 kuće. 667 00:39:11,020 --> 00:39:14,990 Ono što sada želim učiniti je imati sposobnost u kodu, PHP i SQL, 668 00:39:14,990 --> 00:39:18,800 sortirati od promociju ove tablice, gdje ako su učenici i ove su kuće, 669 00:39:18,800 --> 00:39:22,050 želimo da se nekako ih kombinirati, tako da jedna linija s jedne, 670 00:39:22,050 --> 00:39:25,670 2 linije s dva, i to tako da možemo shvatiti gdje je David 671 00:39:25,670 --> 00:39:28,000 i gdje Mike i gdje su svi ostali živi. 672 00:39:28,000 --> 00:39:31,850 Za to možemo izvršiti SQL upita poput sljedećeg. 673 00:39:31,850 --> 00:39:40,470 SELECT * FROM studenti PRIDRUŽITE kuća NA - 674 00:39:40,470 --> 00:39:43,000 A sada što polja ne želimo da se pridruže na? 675 00:39:43,000 --> 00:39:49,520 Dakle students.house = houses.id. 676 00:39:49,520 --> 00:39:54,150 >> Malo zagonetan, ali ovaj dio doslovno znači stvoriti novu privremenu tablicu 677 00:39:54,150 --> 00:39:56,690 to je rezultat pridružio učenicima i kuća. 678 00:39:56,690 --> 00:40:00,340 A kako želite kombinirati savjete mojih prstiju ovdje? 679 00:40:00,340 --> 00:40:05,280 Postavite učeničku kuća polje jednak kuća 'ID polje. 680 00:40:05,280 --> 00:40:10,220 A ako ja sada kliknite Idi, ja se vratim točno ono što sam se nadao da. 681 00:40:10,220 --> 00:40:15,890 David je u Mather, Mike je u Pfoho, a ja sam također vidjeti identifikatore. 682 00:40:15,890 --> 00:40:18,640 No, stvar je sada imam kompletnu tablicu. 683 00:40:18,640 --> 00:40:23,020 I tako takeaway ovdje za pset 7 ili stvarno za konačni projekt: 684 00:40:23,020 --> 00:40:25,830 Ako smatrate da ste čuvanje bilo koji dio informacija redundantly, 685 00:40:25,830 --> 00:40:28,850 da li je kuća, možda je to grad, država i poštanski 686 00:40:28,850 --> 00:40:32,050 gdje Poštanski može obično, ali ne uvijek može koristiti kao jedinstveni identifikator, 687 00:40:32,050 --> 00:40:35,810 idu kroz vježbe psihički i onda s nečim poput phpMyAdmin 688 00:40:35,810 --> 00:40:40,660 factoringa da zajedničkim podacima jer pogotovo što vaše web stranice dobiva više dobro koristiti 689 00:40:40,660 --> 00:40:45,440 i više popularan, to je, kako bi bili sigurni da je sve super brzo, 690 00:40:45,440 --> 00:40:51,930 dajući bazu podataka onoliko savjete što bi jedinstvenosti što je više moguće. 691 00:40:51,930 --> 00:40:53,860 To je puno. 692 00:40:53,860 --> 00:40:59,010 Ima li pitanja? U redu. Ajmo uzeti 5-minutni predah tamo i pregrupirati. 693 00:41:01,600 --> 00:41:03,540 U redu. 694 00:41:03,540 --> 00:41:08,680 Sljedeći je primjer da je korišten prije nekoliko godina kada sam uzeo CS161, 695 00:41:08,680 --> 00:41:10,960 što je operativni sustavi klase na faksu 696 00:41:10,960 --> 00:41:15,160 koji je poznat po tome što je nevjerojatna, ali luda količina posla, 697 00:41:15,160 --> 00:41:19,810 a fokusira se stvarno na neki low-level problemima koji nastaju u operativnim sustavima 698 00:41:19,810 --> 00:41:22,700 i čak u svijetu baza podataka. 699 00:41:22,700 --> 00:41:27,040 >> Priča da je rekao moj profesor, Margo Seltzer, koje godine je kako slijedi. 700 00:41:27,040 --> 00:41:30,990 Pretpostavimo da imate malo spavaonica hladnjak za vas i vaše cimer 701 00:41:30,990 --> 00:41:34,030 i oboje ste stvarno željeli mlijeko. 702 00:41:34,030 --> 00:41:36,360 Dakle, dođete kući iz razreda jedan dan, tvoj cimer još nije bilo, 703 00:41:36,360 --> 00:41:39,650 otvorite frižider, i shvatit ćete, "Oh, dovraga, mi smo od mlijeka." 704 00:41:39,650 --> 00:41:42,070 Tako da zatvorite hladnjak, hodate preko ulice CVS 705 00:41:42,070 --> 00:41:45,830 i dobiti u dugim redovima sve kupiti mlijeko u CVS-u. 706 00:41:45,830 --> 00:41:48,470 U međuvremenu, tvoj cimer dolazi kući iz svog razreda, 707 00:41:48,470 --> 00:41:51,690 dolazi u sobu, otvara hladnjak stvarno žele malo mlijeka, 708 00:41:51,690 --> 00:41:54,130 otvara frižider i "K vragu, ne mlijeko." 709 00:41:54,130 --> 00:41:57,890 Dakle, on ili ona zatvara hladnjak, šetnje kroz vrata, i ide na ABP 710 00:41:57,890 --> 00:42:00,910 ili negdje drugo nego CVS gdje ste ne ide na naletjeti jedni druge 711 00:42:00,910 --> 00:42:02,790 ići dobiti malo mlijeka. 712 00:42:02,790 --> 00:42:04,820 Naravno, nekoliko minuta kasnije, oba od vas vratiti kući 713 00:42:04,820 --> 00:42:07,740 i sada imate duplo toliko mlijeka kao što je zapravo želio. 714 00:42:07,740 --> 00:42:10,670 I što je mlijeko, sada će ići loše, jer vam se sviđa mlijeko 715 00:42:10,670 --> 00:42:14,200 ali ne stvarno poput mlijeka, tako da sada imate previše mlijeka, tako da će se kiselo. 716 00:42:14,200 --> 00:42:16,830 To je strašno, strašno stanje. 717 00:42:16,830 --> 00:42:22,920 Što bi mogao riješiti ovu situaciju, ako ste bili prvi cimer doma? Da. 718 00:42:22,920 --> 00:42:25,970 [Student] Trebali su ostavili znanje. [Smijeh] 719 00:42:25,970 --> 00:42:28,090 Dobro. Trebao si ostavio poruku. 720 00:42:28,090 --> 00:42:32,320 Trebao si staviti post-it note ili kao što je rekao, "Prohujalo za mlijeko", 721 00:42:32,320 --> 00:42:36,830 i onda tvoj cimer konceptualno bi bili isključeni iz zapravo radi. 722 00:42:36,830 --> 00:42:38,010 Ili bi mogao otići jedan korak dalje. 723 00:42:38,010 --> 00:42:41,060 Vi doslovno mogao zaključati hladnjak s nekom vrstom lokota, 724 00:42:41,060 --> 00:42:44,870 i sada tvoj cimer doslovno će biti isključeni iz hladnjaka. 725 00:42:44,870 --> 00:42:48,520 Ako ćemo generalizirati natrag u programiranju, 726 00:42:48,520 --> 00:42:51,610 gotovo da možete misliti frižideru kao neka vrsta varijable ili struct, 727 00:42:51,610 --> 00:42:53,500 neki kontejner za informacije. 728 00:42:53,500 --> 00:42:58,290 Problem temelja ovdje je da vas oboje je dopušteno pregledati 729 00:42:58,290 --> 00:43:02,370 ili pročitajte stanje ove strukture podataka, 730 00:43:02,370 --> 00:43:08,050 ali ga promatrati u različitim vremenima i još vas oboje donio odluku 731 00:43:08,050 --> 00:43:11,920 na temelju stanja u svijetu na tim različitim trenucima u vremenu. 732 00:43:11,920 --> 00:43:15,570 Tako su ti zaključan hladnjak, ti ​​bi barem izbjeći svoju cimericu 733 00:43:15,570 --> 00:43:19,070 iz što je bio u mogućnosti provjeriti stanje na svijetu, 734 00:43:19,070 --> 00:43:22,530 tako da on ili ona ne može imati je napravio tu istu odluku. 735 00:43:22,530 --> 00:43:25,780 Dakle, baza podataka, kao što se ispostavilo, imaju ovaj problem stalno. 736 00:43:25,780 --> 00:43:31,050 >> Hajdemo vidjeti možemo li izgraditi scenarij. 737 00:43:31,050 --> 00:43:34,310 Pretpostavimo da ste svojevrsni negativca i idete na Bank of America 738 00:43:34,310 --> 00:43:37,950 ili jedan od ostalih mjesta u trgu koji imaju stranu par bankomata po strani, 739 00:43:37,950 --> 00:43:41,200 i nekako shvatio kako udvostručiti ATM kartice - nije sve što je teško. 740 00:43:41,200 --> 00:43:42,730 To je samo magnetska traka. 741 00:43:42,730 --> 00:43:45,180 I tako ono što želite pokušati učiniti je igrati ovu igru 742 00:43:45,180 --> 00:43:49,060 pri čemu ste stavili jedan karticu u jednom uređaju, drugu karticu u drugom uređaju, 743 00:43:49,060 --> 00:43:51,980 a vi zapravo želite probati povući novac istovremeno, 744 00:43:51,980 --> 00:43:54,930 jer zamislite da priča ide kako slijedi. 745 00:43:54,930 --> 00:43:57,350 Uređaj na lijevoj uzima svoju karticu i PIN, 746 00:43:57,350 --> 00:44:00,240 i onda kažu, "Daj mi 100 $." 747 00:44:00,240 --> 00:44:04,790 Bankomat je programiran da prvo napraviti odabir na svojoj bazi podataka ili sličnom - 748 00:44:04,790 --> 00:44:10,780 god baza to koristi - kako bi vidjeli to korisnik ima najmanje 100 dolara u njegov ili njezin račun? 749 00:44:10,780 --> 00:44:16,180 Ako je tako, onda ispljunuti $ 100 i 100 dolara oduzeti od njihovog stanja. 750 00:44:16,180 --> 00:44:20,470 Ali, naravno, ako postoji više strojeva ovdje ili više načina pregleda 751 00:44:20,470 --> 00:44:23,560 stanje tog svijeta, banka svod, da se vidi koliko novca imate, 752 00:44:23,560 --> 00:44:26,780 Pretpostavljam da je samo slučajno stroja na lijevo i desno 753 00:44:26,780 --> 00:44:30,140 kako postaviti to pitanje na otprilike istom trenutku u vremenu. 754 00:44:30,140 --> 00:44:34,160 >> A to svakako može dogoditi. Bankomati su računala ovih dana. 755 00:44:34,160 --> 00:44:37,670 Dakle, ako je stroj na lijevoj kaže: "Da, imate barem $ 100," 756 00:44:37,670 --> 00:44:42,150 U međuvremenu je stroj na desnoj kaže: "Da, imate barem $ 100," 757 00:44:42,150 --> 00:44:47,420 onda oboje nastaviti do kraja svoje programe i zapravo ispljunuti 100 dolara 758 00:44:47,420 --> 00:44:50,820 i reći: "Prije ste imali 200 dolara." 759 00:44:50,820 --> 00:44:54,890 "Dopustite mi da ažurirati varijablu sada biti 100 dolara ostavio u obzir." 760 00:44:54,890 --> 00:44:58,780 Ali ako su oboje provjeriti stanje računa i utvrdili da je 200 dolara 761 00:44:58,780 --> 00:45:02,000 i obojica tada učiniti math i reći 200-100, 762 00:45:02,000 --> 00:45:06,990 strojevi potencijalno su ispljunuti dvije 100 dolara račune u svakom stroju, 763 00:45:06,990 --> 00:45:11,360 ali oni samo sam ažurirali bilansna suma račun biti 100 dolara. 764 00:45:11,360 --> 00:45:15,130 Drugim riječima, vi ste uzeli iz $ 200, ali zato su pregledali stanje svijeta 765 00:45:15,130 --> 00:45:18,840 istovremeno, a zatim je donio odluku na temelju te vrijednosti, 766 00:45:18,840 --> 00:45:21,930 oni ne bi mogli učiniti math konačnici ispravno. 767 00:45:21,930 --> 00:45:25,520 Dakle, u banci situaciji previše stvarno želite imati nekakav isključenje 768 00:45:25,520 --> 00:45:28,450 tako da čim ste provjeriti stanje neke varijable 769 00:45:28,450 --> 00:45:31,220 to je stvarno važno, kao što je stanje računa, 770 00:45:31,220 --> 00:45:36,070 Ne dopustite da netko drugi donositi odluke na temelju koje dok niste učinili radi svoje stvari, 771 00:45:36,070 --> 00:45:38,920 gdje se u tom slučaju ste bankomat na lijevoj strani. 772 00:45:38,920 --> 00:45:41,160 Zaključajte sve drugo van. 773 00:45:41,160 --> 00:45:44,650 Vi zapravo možete postići taj učinak u nekoliko različitih načina. 774 00:45:44,650 --> 00:45:48,660 >> Najjednostavniji način za MySQL je linija SQL koje vam je dao 775 00:45:48,660 --> 00:45:52,030 u specifikaciji problema set koji izgleda upravo ovako. 776 00:45:52,030 --> 00:45:57,420 Uložite u tablici - što god to zove - id, simbol, i udio, broj dionica, 777 00:45:57,420 --> 00:45:59,660 sljedećih vrijednosti, na primjer. 778 00:45:59,660 --> 00:46:03,370 Ako niste pročitali spec. ipak, ovo je primjer koji uključuje kako idete o 779 00:46:03,370 --> 00:46:07,340 kupnju 10 dionica ovog denar stock za predsjednika Skroob, 780 00:46:07,340 --> 00:46:10,340 čiji korisnički ID događa da se broj 7? 781 00:46:10,340 --> 00:46:14,070 To govori INSERT INTO tablici sljedeće id, simbol i broj dionica 782 00:46:14,070 --> 00:46:18,200 od 7, "DVN.V ', i 10. 783 00:46:18,200 --> 00:46:21,510 Ali - ali, ali, ali - druga linija je važno. 784 00:46:21,510 --> 00:46:26,310 Na duple KLJUČ UPDATE dionica = dionice + VALUES (dionice). 785 00:46:26,310 --> 00:46:28,350 Dakle, potpuno zagonetan izgleda na prvi pogled. 786 00:46:28,350 --> 00:46:31,990 No, činjenica da je ovaj SQL upit, iako to obaviti na 2 linije, 787 00:46:31,990 --> 00:46:35,920 je jedan dugi upita, to znači da je atomska 788 00:46:35,920 --> 00:46:41,000 u smislu da je taj upit ili će biti pogubljen svi zajedno ili uopće ne. 789 00:46:41,000 --> 00:46:45,100 I po definiciji MySQL, to je kako oni provode ovaj upit. 790 00:46:45,100 --> 00:46:51,010 To je po definiciji u priručniku zajamčeno izvršiti odjednom ili uopće ne. 791 00:46:51,010 --> 00:46:54,020 Motivacija za to je što slijedi. 792 00:46:54,020 --> 00:46:58,540 Ako u ovom slučaju da se pokušava kupiti 10 dionice, 793 00:46:58,540 --> 00:47:02,260 to je vrsta iste priče kao mlijeko, to je vrsta iste priče kao bankomatu. 794 00:47:02,260 --> 00:47:04,970 >> Ako napravite pogrešku ne koristite ovu sintaksu 795 00:47:04,970 --> 00:47:09,610 ali umjesto odabirom iz baze podataka da se vidi koliko dionica ovog denar stock 796 00:47:09,610 --> 00:47:13,750 Predsjednik ne Skroob imaju, a pretpostavljam da ima 10 dionica, 797 00:47:13,750 --> 00:47:19,330 i onda neki djelić sekunde kasnije onda napraviti UPDATE izjavu, 798 00:47:19,330 --> 00:47:24,810 što je još jedan iskaz u SQL koji kaže ići naprijed i dodati još 10 dionica 799 00:47:24,810 --> 00:47:28,700 njegovom trenutnom 10, tako da je idealno ukupno je 20, 800 00:47:28,700 --> 00:47:33,490 Problem je u tome, jer je u današnjim sustavima baza podataka i zato što u današnjim računalima 801 00:47:33,490 --> 00:47:35,990 imate više procesora, više jezgri - 802 00:47:35,990 --> 00:47:38,920 Drugim riječima, računala doslovno mogu raditi više stvari odjednom - 803 00:47:38,920 --> 00:47:44,270 ne postoji jamstvo da je vaš odabir i vaša UPDATE u ovom slučaju 804 00:47:44,270 --> 00:47:46,150 će se dogoditi natrag na leđa. 805 00:47:46,150 --> 00:47:49,140 Tako loš scenarij bi ti SELECT 806 00:47:49,140 --> 00:47:51,670 da se vidi koliko dionica ovog denar stock ne Skroob imaju, 807 00:47:51,670 --> 00:47:54,710 i onda samo slučajno još upita je pogubljen - 808 00:47:54,710 --> 00:47:57,740 Možda je Skroob u drugom prozoru preglednika pokušava kupiti 10 dionica 809 00:47:57,740 --> 00:48:00,700 u drugom prozoru uopce, baš kao bankomat - 810 00:48:00,700 --> 00:48:05,410 i pretpostavimo da je još jedan upit dobiva između SELECT i UPDATE. 811 00:48:05,410 --> 00:48:10,210 To bi mogao biti slučaj da Skroob sada gubi neki broj dionica 812 00:48:10,210 --> 00:48:14,340 jer je još jedan proces uvid u stanje svog svijeta, 813 00:48:14,340 --> 00:48:17,800 ili on dobiva više dionica nego što bi trebao imati. 814 00:48:17,800 --> 00:48:23,250 Nećemo ulaziti u pojedinosti točno ono što ti posebni priča linije će biti, 815 00:48:23,250 --> 00:48:28,380 ali stvar je ako imate provjeriti varijable vrijednost i onda donijeti odluku, 816 00:48:28,380 --> 00:48:32,500 ako postoji opasnost od netko drugi radi nešto između tih dviju tvrdnji, 817 00:48:32,500 --> 00:48:36,220 kao što se može dogoditi u višeprocesorskim sustavima, u višejezgrenih sustava, 818 00:48:36,220 --> 00:48:41,220 računala s mogućnošću učiniti više stvari odjednom, loše stvari se može dogoditi 819 00:48:41,220 --> 00:48:44,530 kao što su bankovni računi se tereti krivo, kupnje dvaput onoliko mlijeka, 820 00:48:44,530 --> 00:48:46,730 ili u ovom slučaju pogrešan broj dionica. 821 00:48:46,730 --> 00:48:48,370 No, tu je jednostavniji način da mislite o tome. 822 00:48:48,370 --> 00:48:53,290 >> Ispada da SQL također podržava, ako konfigurirati svoj stol ispravno, 823 00:48:53,290 --> 00:48:56,920 nešto što se zove transakcije, što ja smatram je zapravo još lakše razumjeti 824 00:48:56,920 --> 00:49:00,650 od toga, ali to nije jedan-liner, tako da je zapravo malo više uključeni. 825 00:49:00,650 --> 00:49:04,960 Tu je doslovno izjava u SQL zove START transakcije. 826 00:49:04,960 --> 00:49:08,300 Baš kao da je SELECT, UPDATE, INSERT, DELETE, a PRIDRUŽITE i hrpa drugih, 827 00:49:08,300 --> 00:49:10,970 postoje riječi poput START transakcije. 828 00:49:10,970 --> 00:49:13,560 I što onda učiniti u kontekstu pset 7 - 829 00:49:13,560 --> 00:49:17,270 ne moraju to učiniti za pset 7; to izričito je isključena jer nije potrebno, 830 00:49:17,270 --> 00:49:18,830 ali za konačnih projekata može biti korisno - 831 00:49:18,830 --> 00:49:22,820 ako poziv upit o START transakcije i onda još upita 832 00:49:22,820 --> 00:49:25,620 a zatim još jedan upit, a zatim još jedan, drugi, a drugi, 833 00:49:25,620 --> 00:49:31,860 ti upiti zapravo neće biti izvršena sve dok vi zovete SQL COMMIT, 834 00:49:31,860 --> 00:49:37,220 U tom trenutku, da li je dvije izjave ili 20 izjavama, svi oni će se izvršiti odjednom, 835 00:49:37,220 --> 00:49:42,770 što znači da nitko drugi ne slučajno mogu kupiti previše mlijeka ili debitne previše novca 836 00:49:42,770 --> 00:49:46,340 ili kupiti previše dionice jer su sve vaše upite će izvršiti 837 00:49:46,340 --> 00:49:48,410 natrag na leđa natrag na leđa. 838 00:49:48,410 --> 00:49:51,580 I ovo je super važna, pogotovo kad radiš nešto ovako. 839 00:49:51,580 --> 00:49:54,900 To je arbitrarna primjer koji govori neka je ažurirati bankovni račun 840 00:49:54,900 --> 00:50:00,200 postavljanjem ravnotežu jednak ravnoteži - 1000 $ gdje broj računa je 2. 841 00:50:00,200 --> 00:50:04,260 I onda drugi izjavu sada ajmo izdvojiti da je 1000 dolara 842 00:50:04,260 --> 00:50:07,310 u tuđe bankovni račun čiji broj računa je jedan. 843 00:50:07,310 --> 00:50:10,400 >> Drugim riječima, ovo je savršen primjer gdje želite da biste bili sigurni 844 00:50:10,400 --> 00:50:13,590 da su oba ova izvještaja dogoditi ili uopće ne 845 00:50:13,590 --> 00:50:15,450 jer inače kupac će dobiti pijan 846 00:50:15,450 --> 00:50:17,670 i ti si idući u uzeti svoj novac, a ne ga deponirati negdje drugdje, 847 00:50:17,670 --> 00:50:20,470 ili banka će dobiti pijan kamo idete uplatiti novac 848 00:50:20,470 --> 00:50:23,140 ali ne zapravo to oduzimati od korisnika računa. 849 00:50:23,140 --> 00:50:25,810 Dakle, želite oboje izvršiti zajedno. 850 00:50:25,810 --> 00:50:29,140 Tako ulazi u svjetskim poslovima. 851 00:50:29,140 --> 00:50:31,360 Dakle, to je nešto što treba imati u pozadini vašeg uma, 852 00:50:31,360 --> 00:50:34,710 ne toliko radi samo konačnu projekta, 853 00:50:34,710 --> 00:50:36,700 ali ako želite da se vaš konačni projekt negdje, 854 00:50:36,700 --> 00:50:39,040 ako želite da se pokrene neke tvrtke oko njega, 855 00:50:39,040 --> 00:50:41,270 ako želite riješiti neke skupine učenika i studenata je problem na kampusu 856 00:50:41,270 --> 00:50:45,210 i zapravo imaju živu, aktivnu web stranicu, to su vrsta suptilnih bugova koji mogu nastati 857 00:50:45,210 --> 00:50:49,480 ako ne sasvim razmišlja o tome što se može dogoditi ako se dvije osobe 858 00:50:49,480 --> 00:50:54,190 Pokušavate pristupiti vaše web stranice na doslovno u istom trenutku u vremenu, 859 00:50:54,190 --> 00:50:56,890 pri čemu su njihovi upiti inače mogli dobiti isprepletene. 860 00:50:58,840 --> 00:51:01,420 >> Spremni za neke JavaScripta, najavni tome? 861 00:51:01,420 --> 00:51:04,320 Ovo je naš zadnji jezik za semestar. U redu. 862 00:51:04,320 --> 00:51:09,940 Srećom, JavaScript izgleda vrlo, vrlo, vrlo slična dva jezika, C i PHP, 863 00:51:09,940 --> 00:51:11,140 smo učinili do sada. 864 00:51:11,140 --> 00:51:14,340 Nema JavaScript u pset 7, ali to je nevjerojatno koristan alat 865 00:51:14,340 --> 00:51:18,840 kada je u pitanju radi web-based završne projekte ili stvarno samo web programiranje općenito. 866 00:51:18,840 --> 00:51:20,950 Dakle, brzi pregled nešto što se zove DOM. 867 00:51:20,950 --> 00:51:23,600 Ovdje je super jednostavna web stranica koje stvarno samo kaže bok, svijet 868 00:51:23,600 --> 00:51:25,970 kako u naslovu i u tijelu. 869 00:51:25,970 --> 00:51:29,270 Kao udubljenje je sugerirajući za neko vrijeme, 870 00:51:29,270 --> 00:51:31,380 tamo je doista hijerarhija na web stranicama. 871 00:51:31,380 --> 00:51:34,220 Mogao sam izvući ovu istu HTML isječak kao stablo, 872 00:51:34,220 --> 00:51:37,470 misleći natrag našim razgovorima strukturama podataka u C, kako slijedi. 873 00:51:37,470 --> 00:51:40,710 Imam neki poseban root čvor nazvan dokument čvor, 874 00:51:40,710 --> 00:51:43,650 pa ćemo vidjeti analognu toga u JavaScriptu u samo trenutak. 875 00:51:43,650 --> 00:51:48,330 Prvo dijete i jedino dijete koje je u ovom slučaju HTML oznaka. 876 00:51:48,330 --> 00:51:49,880 Nema izravna mapiranje DOCTYPE. 877 00:51:49,880 --> 00:51:53,170 To je posebna stvar, tako da smo samo trebali ignorirati kada je u pitanju ovaj DOM, 878 00:51:53,170 --> 00:51:55,810 Ovaj model Document Object stablo. 879 00:51:55,810 --> 00:51:59,530 Primijetit ćete da HTML oznaka, koji sam prikazan samovoljno kao pravokutnik, 880 00:51:59,530 --> 00:52:02,890 ima 2 djece: glavu i tijelo. 881 00:52:02,890 --> 00:52:04,840 >> Oni su izvučeni slično kao pravokutnika. 882 00:52:04,840 --> 00:52:08,970 To je značajna slikovito da je glava na lijevoj strani tijela. 883 00:52:08,970 --> 00:52:11,960 Posljedica je da glava dolazi prvi u stablo. 884 00:52:11,960 --> 00:52:14,910 Dakle, tu je zapravo naručivanje na stablu kad ga izvući ovako, 885 00:52:14,910 --> 00:52:17,460 iako su oblici i sitnica su proizvoljne. 886 00:52:17,460 --> 00:52:20,360 Šef međuvremenu ima jednu dijete zove naslov, 887 00:52:20,360 --> 00:52:25,170 i naslov zapravo ima svoje vlastito dijete, što je "Hello, World", 888 00:52:25,170 --> 00:52:32,210 koji sam namjerno nacrtao kao ovalnim ovdje da bi se malo razlikovati od pravokutnika. 889 00:52:32,210 --> 00:52:37,420 Ovi pravokutnici su elementi, dok halo, svijet je stvarno tekst čvor. 890 00:52:37,420 --> 00:52:39,850 Dakle, to je čvor u stablu, ali to je drugačiji tip čvora 891 00:52:39,850 --> 00:52:41,730 pa sam ga izvukao samovoljno drugačije. 892 00:52:41,730 --> 00:52:45,000 Slično se tijelo imati dijete zove Hello, svijet kao dobro, 893 00:52:45,000 --> 00:52:47,910 toliko različiti čvor, iako oni slučajno isti tekst, 894 00:52:47,910 --> 00:52:52,100 ali sam ga izvući koristi isti oblik. Dakle, tko mari? 895 00:52:52,100 --> 00:52:56,820 Pa, ono što je lijepo o HTML je da nema tu hijerarhijsku prirodu. 896 00:52:56,820 --> 00:53:01,010 I ono što je lijepo o JavaScriptu, a posebice knjižnicama koje su besplatno dostupni 897 00:53:01,010 --> 00:53:07,120 i popularan kao jQuery, možete se kretati na strukturu stabla tako nevjerojatno lako. 898 00:53:07,120 --> 00:53:11,790 Svaka od stvari smo napravili u C s pokazivačima i poprijeko drveće i recursing na čvorovima 899 00:53:11,790 --> 00:53:15,300 lijevo dijete desnog djeteta, odjednom možemo sortirati od uzimamo zdravo za gotovo 900 00:53:15,300 --> 00:53:19,450 kao nevjerojatno prosvjetljujuća ako ne i malo frustrirajuće 901 00:53:19,450 --> 00:53:22,470 ali nije gotovo učinkovit način da ide o programiranju. 902 00:53:22,470 --> 00:53:24,470 I tako s tim višim razinama jezika poput JavaScripta 903 00:53:24,470 --> 00:53:28,340 ćemo moći kretati ovom stablo mnogo više intuitivno. 904 00:53:28,340 --> 00:53:30,430 >> I doista sintaksa će biti prilično upoznat. 905 00:53:30,430 --> 00:53:32,950 Ako ste nikada nije vidio prije JavaScript, ovo je stvarno lijepo referenca 906 00:53:32,950 --> 00:53:35,910 iz Mozilla ljudi, ljudi koji čine Firefox, 907 00:53:35,910 --> 00:53:38,370 pa ne slobodno pregledajte da u svoju korist. 908 00:53:38,370 --> 00:53:41,590 Što ćete naći - i ti slajdovi su identičan onome što mi se drugi dan - 909 00:53:41,590 --> 00:53:44,030 slično, glavna je otišao. 910 00:53:44,030 --> 00:53:47,010 Dakle, kada ste napisati program u JavaScriptu, ne postoji glavna funkcija. 911 00:53:47,010 --> 00:53:48,690 Vi samo početak pisanja koda. 912 00:53:48,690 --> 00:53:51,660 No, ključna razlika između JavaScript i C i PHP 913 00:53:51,660 --> 00:53:55,890 je da, dok C i PHP dosad su pogubljeni strani poslužitelja 914 00:53:55,890 --> 00:53:59,180 strane uređaja u ovom slučaju ili općenito po poslužitelju, 915 00:53:59,180 --> 00:54:04,270 JavaScripta po dizajnu obično izvodi pregledniku. 916 00:54:04,270 --> 00:54:08,440 Drugim riječima, možete pisati JavaScript kôd, kao da smo o tome kako, 917 00:54:08,440 --> 00:54:13,080 na poslužitelju u aparatu, ali ga uključivati ​​među HTML, među svojim CSS, 918 00:54:13,080 --> 00:54:16,100 među svojim GIF i PNG datoteke vaše i svoje JPEG 919 00:54:16,100 --> 00:54:19,170 tako da kada korisnik posjeti vašu web stranicu, ako koristite JavaScript, 920 00:54:19,170 --> 00:54:21,770 da JavaScript kôd dolazi iz poslužitelja e, 921 00:54:21,770 --> 00:54:24,540 i to je preglednik koji zapravo izvršava. 922 00:54:24,540 --> 00:54:27,960 Dakle, ovo ima smisla implikacije za čak intelektualnog vlasništva. 923 00:54:27,960 --> 00:54:32,600 To je vrsta smiješno čak i razmišljati o zaštiti IP kada je u pitanju JavaScript koda 924 00:54:32,600 --> 00:54:37,560 jer po prirodi jezika dobiva izvršava obično preglednik stranu. 925 00:54:37,560 --> 00:54:40,360 >> Možete ga pomutiti, što znači da možete učiniti da izgleda ludo i ružno 926 00:54:40,360 --> 00:54:45,400 bez razmakom, strašne varijabla imena, da bi ga teže za ljude da ukrasti vaše IP, 927 00:54:45,400 --> 00:54:48,120 ali ključ je u tome što je pogubljen preglednik stranu. 928 00:54:48,120 --> 00:54:51,790 Iako kao stranu JavaScripta može koristiti strani poslužitelja, 929 00:54:51,790 --> 00:54:54,480 Najčešći korištenje slučaj upravo sada je još uvijek na pregledniku. 930 00:54:54,480 --> 00:54:59,800 A evo kako to izgleda. Ovdje je, ako-else if-drugo izgraditi baš kao C, baš kao i PHP. 931 00:54:59,800 --> 00:55:02,420 Ovdje je logički izraz kada "ili" dvije stvari zajedno. 932 00:55:02,420 --> 00:55:04,330 Ovdje je kada "i" dvije stvari zajedno. 933 00:55:04,330 --> 00:55:08,300 Ovdje je prekidač izjava, koji je sličan PHP 934 00:55:08,300 --> 00:55:10,810 u koje možete prebaciti na različite vrste vrijednosti. 935 00:55:10,810 --> 00:55:15,180 Petlje slično imaju za petlje ovdje, koji su strukturirani identično onome što smo vidjeli prije. 936 00:55:15,180 --> 00:55:18,110 Dok petlje; Moramo učiniti dok petlje. 937 00:55:18,110 --> 00:55:20,290 Varijable, uvijek je tako malo drugačija. 938 00:55:20,290 --> 00:55:24,560 Vi ne proglasiti varijable kao i vi u PHP i C, 939 00:55:24,560 --> 00:55:27,860 ali slično je JavaScript slabo upisali. 940 00:55:27,860 --> 00:55:32,730 Vi ne odredite int ili plutaju ili string ili bilo što slično obično. 941 00:55:32,730 --> 00:55:34,240 Možete odrediti var. 942 00:55:34,240 --> 00:55:38,040 Ne morate navesti var, ali to ima implikacije ako ne. 943 00:55:38,040 --> 00:55:42,000 Obično ako izostavite var, ako slučajno stvoriti globalnu varijablu umjesto lokalne. 944 00:55:42,000 --> 00:55:46,420 Pa neka mi predlažemo da se gotovo uvijek samo reći var, a zatim naziv varijable. 945 00:55:46,420 --> 00:55:48,740 To nije tip, to je samo var za varijablu. 946 00:55:48,740 --> 00:55:52,930 To bi, na primjer, da li je 123 ili "halo, svijet". 947 00:55:52,930 --> 00:55:58,910 Nizovi su prisutni i sintaktički sličan PHP. 948 00:55:58,910 --> 00:56:03,690 Ja ću reći var brojeve i onda sam koristiti uglate zagrade ponovno proglasiti varijablu 949 00:56:03,690 --> 00:56:08,870 čiji tip je niz koji ima baš te brojeve u njemu odvojene zarezima. 950 00:56:08,870 --> 00:56:11,740 I onda na kraju, to je samo jedan koji stvarno izgleda drugačije. 951 00:56:11,740 --> 00:56:16,700 Podsjetimo da je u PHP bismo implementirali asocijativni niz za studenta 952 00:56:16,700 --> 00:56:20,220 kao Zamyla koja bi mogla izgledati ovako, gdje je varijabla se zove student. 953 00:56:20,220 --> 00:56:23,370 Uglatih zagrada znači ovdje dolazi niz. 954 00:56:23,370 --> 00:56:28,500 >> Činjenica da sam ne koristeći brojčane pokazatelje, ali žice - id, kuća, i ime - 955 00:56:28,500 --> 00:56:30,990 znači da je to asocijativna polja, 956 00:56:30,990 --> 00:56:34,490 a ove strelice s znaka jednakosti i angled nosač 957 00:56:34,490 --> 00:56:37,310 znači da je ključ "id", vrijednost je 1; 958 00:56:37,310 --> 00:56:39,310 Ključ je "kuća", vrijednost je Winthrop Kuća; 959 00:56:39,310 --> 00:56:41,800 ključ je "ime", vrijednost je Zamyla Chan. 960 00:56:41,800 --> 00:56:47,110 Dakle, tu je tri tipke unutar ovog asocijativnog polja, od kojih svaka ima svoju vrijednost. 961 00:56:47,110 --> 00:56:52,880 Vidjeli smo da je u pset 7, ili ćete uskoro, u JavaScript iste ideje, 962 00:56:52,880 --> 00:56:55,220 ali to će izgledati ovako. 963 00:56:55,220 --> 00:57:00,070 Dakle var student - ne znak dolara i nema spomena o vrsti i dalje, ali var - 964 00:57:00,070 --> 00:57:05,860 jednaka, a zatim otvoriti vitičastim zagradama, jer u JavaScriptu kada imate ključne parova, 965 00:57:05,860 --> 00:57:08,900 zapravo koristiti nešto što se zove objekt. 966 00:57:08,900 --> 00:57:13,490 I one od vas koji nisu uzeti APCS ili slično možda podsjetiti predmete iz Jave 967 00:57:13,490 --> 00:57:15,140 ili slični jezici. 968 00:57:15,140 --> 00:57:17,880 JavaScript nije Java, prije svega. 969 00:57:17,880 --> 00:57:21,600 To je bio namjeran dizajn odluka godina sklepati nešto drugo da je bio popularan, 970 00:57:21,600 --> 00:57:25,640 njegovo ime, iako nema temeljni odnos da se Java. 971 00:57:25,640 --> 00:57:31,490 JavaScript ima objekte, a vi ih stvarati putu zapis kovrčave braće. 972 00:57:31,490 --> 00:57:36,710 Objekata u JavaScriptu su prilično odgovara asocijativnih nizova u PHP 973 00:57:36,710 --> 00:57:40,030 kada je u pitanju pohranu podataka unutar njih. 974 00:57:40,030 --> 00:57:44,100 >> No, čak i više snažno u JavaScriptu možete povezati vrlo lako funkcije 975 00:57:44,100 --> 00:57:48,040 unutar objekta, i iako možete to učiniti na drugim jezicima, 976 00:57:48,040 --> 00:57:50,040 to je sasvim uobičajeno paradigma, kao što ćemo vidjeti. 977 00:57:50,040 --> 00:57:54,380 Ukratko, ovaj objekt predstavlja student, koji je posebno Zamyla, 978 00:57:54,380 --> 00:58:00,380 i to je sličan koncepcijski, samo sintaktički drugačiji od ovoga. 979 00:58:00,380 --> 00:58:03,840 Ajmo zapravo koristiti JavaScript u datoteci. 980 00:58:03,840 --> 00:58:05,570 Ispada da je skripta oznaka. 981 00:58:05,570 --> 00:58:08,180 Vidjeli smo stil oznaku i vidjeli smo i druge HTML tagova. 982 00:58:08,180 --> 00:58:11,510 Oznaka skripta zapravo će sadržavati neke JavaScript koda. 983 00:58:11,510 --> 00:58:15,500 Pusti me u aparatu gdje imamo neke izvorni kod prethodno napravio. 984 00:58:15,500 --> 00:58:18,700 Nisam ga objavili još na web stranici, ali ja ću to učiniti nakon predavanja. 985 00:58:18,700 --> 00:58:21,770 Ajmo otvoriti ovaj jedan, blink.html. 986 00:58:21,770 --> 00:58:27,560 Natrag u 1990, bilo je doslovno HTML oznaka naziva treptaj oznaka, 987 00:58:27,560 --> 00:58:30,340 i to je bio jedan od najvažnijih predivno prekomjerno oznake na Internetu 988 00:58:30,340 --> 00:58:36,140 kojim želite posjetiti neke 1990 web stranicu stilu i početi dobivati ​​tekst vam treperi ovako, 989 00:58:36,140 --> 00:58:39,810 rezultati markiz oznaku, što je tekst ide ovako. 990 00:58:39,810 --> 00:58:45,070 Jedan od rijetkih trenutaka u kojima svijet zapravo je dogovoreno na web standarda, 991 00:58:45,070 --> 00:58:48,250 svatko po ploči ubio tren oznaku prije nekoliko godina. 992 00:58:48,250 --> 00:58:52,860 No, možemo ga uskrsnuti s JavaScriptom kao demonstracija snage imate 993 00:58:52,860 --> 00:58:56,660 kada možete napisati program unutar web stranice. 994 00:58:56,660 --> 00:59:00,240 Prvo ajmo preskaču nove stvari i usredotočiti se samo na stari. 995 00:59:00,240 --> 00:59:01,780 >> Ovdje je stara stvar u ovom primjeru. 996 00:59:01,780 --> 00:59:06,350 Imam HTML oznake, head tag, i naslov oznaku. 997 00:59:06,350 --> 00:59:11,210 Onda imam tijelo oznaku ovdje sa div, koji je opoziv samo pravokutni podjela stranici 998 00:59:11,210 --> 00:59:14,720 da sam dao jedinstveni ID samovoljno je "čestitka" da, 999 00:59:14,720 --> 00:59:18,320 samo tako imam način jedinstveno odnose na njega, da ima neke vrlo jednostavan tekst: 1000 00:59:18,320 --> 00:59:20,220 Pozdrav, svijet. 1001 00:59:20,220 --> 00:59:23,940 Sada neka mi dođite do vrha ove datoteke i vidjeti što je novo. 1002 00:59:23,940 --> 00:59:27,710 Prva stvar koja je nova do vrha je skripta oznaka, 1003 00:59:27,710 --> 00:59:31,280 i unutar obavijesti skriptu tag sam proglašen funkciju. 1004 00:59:31,280 --> 00:59:34,610 Da proglasiti funkciju u JavaScriptu, prilično sličan PHP, 1005 00:59:34,610 --> 00:59:37,930 doslovno pisati function zatim naziv funkcije, zagradama, 1006 00:59:37,930 --> 00:59:40,400 a možda i neke argumente, ako je potrebno bilo. 1007 00:59:40,400 --> 00:59:43,510 Tada sam dobio moj kovrčavu braće kao i obično, a sada imamo neke malo novi kôd, 1008 00:59:43,510 --> 00:59:45,230 ali ajmo vidjeti što to znači. 1009 00:59:45,230 --> 00:59:48,670 Dakle var div, to samo znači da će mi dati varijable zvane div. 1010 00:59:48,670 --> 00:59:50,530 Mogao sam to nazvao Foo, ali ja sam htjela da se zove div 1011 00:59:50,530 --> 00:59:52,620 iz razloga koji će biti jasan u drugi. 1012 00:59:52,620 --> 00:59:57,480 Onda ispada u JavaScriptu - a to je kod JavaScripta ugrađen u mojoj web stranici - 1013 00:59:57,480 --> 01:00:01,760 postoji posebna globalna varijabla vrsta zove dokument. 1014 01:00:01,760 --> 01:00:04,780 JavaScript je u stvari objektno-orijentirani jezik. 1015 01:00:04,780 --> 01:00:07,230 Nećemo ulaziti u detalje u 50 kao što to znači, 1016 01:00:07,230 --> 01:00:11,180 ali za sada znamo da je objekt prilično velik kao struct. 1017 01:00:11,180 --> 01:00:14,740 Kao što smo vidjeli put natrag kada je u jednom od najranijih problema sets 1018 01:00:14,740 --> 01:00:17,150 gdje smo stavili puno informacija u struct, 1019 01:00:17,150 --> 01:00:21,330 Slično je dokumentirati poseban struct koji dolazi s preglednikom, 1020 01:00:21,330 --> 01:00:24,810 dolazi s bilo koje web stranice. To nije nešto što sam stvorio. 1021 01:00:24,810 --> 01:00:28,210 Unutar ove strukture dokumenta, ipak, morate ne samo podatke 1022 01:00:28,210 --> 01:00:30,010 ali ćete također imati funkcije. 1023 01:00:30,010 --> 01:00:34,090 >> I svaki put kad imaju funkciju unutar strukture, unutar objekta, 1024 01:00:34,090 --> 01:00:36,490 to se zove metoda. No, to je ista stvar. 1025 01:00:36,490 --> 01:00:40,110 Metoda je funkcija koja samo tako dogodi da se unutar nečega. 1026 01:00:40,110 --> 01:00:42,990 Dakle, to znači da je taj posebni globalna varijabla zove dokument 1027 01:00:42,990 --> 01:00:47,690 je funkcija zove getElementById koji doslovno radi toga. 1028 01:00:47,690 --> 01:00:52,460 To će vam se element iz DOM, Document Object Model stablo, 1029 01:00:52,460 --> 01:00:55,520 čiji ID je u ovom slučaju pozdrav. 1030 01:00:55,520 --> 01:00:59,200 Drugim riječima, sve ono vrijeme koje smo proveli na strukturama podataka dolazi u igru ​​ovdje. 1031 01:00:59,200 --> 01:01:01,400 Ova slika DOM da smo imali trenutak prije, 1032 01:01:01,400 --> 01:01:06,100 iako stranica je malo drugačiji, ako sam imao div na ovoj slici, 1033 01:01:06,100 --> 01:01:11,180 što document.getElementById će se vratiti za mene učinkovito bi pokazivač 1034 01:01:11,180 --> 01:01:15,440 na pravokutniku u stablo, spominjanje pravokutnika u stablo. 1035 01:01:15,440 --> 01:01:18,410 Dakle, to je ono što znači da se zapravo nazvati jedan od tih funkcija. 1036 01:01:18,410 --> 01:01:21,960 U tom slučaju ponovno je div. To nije tijelo ili naslov. 1037 01:01:21,960 --> 01:01:26,480 Dakle, neka je vidjeti što sam tada učiniti s ovim div sada da ga imam unutar ove varijable zvane div. 1038 01:01:26,480 --> 01:01:32,580 Ispada sa JavaScript imate mogućnost da uštinuti CSS vaše stranice dinamički. 1039 01:01:32,580 --> 01:01:39,060 Do sada, sve CSS smo učinili, iako ograničena, u stilu atributima, 1040 01:01:39,060 --> 01:01:41,730 ili gdje drugdje smo stavili CSS? 1041 01:01:42,730 --> 01:01:45,810 Nekako razmaženo tom jednom. U stilu oznaku na vrhu datoteke. 1042 01:01:45,810 --> 01:01:49,180 Ili treće mjesto je u? 1043 01:01:50,710 --> 01:01:54,590 >> Vanjske datoteke, tako nešto. Css. 1044 01:01:54,590 --> 01:01:56,730 Dakle oni su 3 mjesta smo učinili CSS dosad, 1045 01:01:56,730 --> 01:01:59,310 ali kvaka je da smo naporno sam kodirane sve to. 1046 01:01:59,310 --> 01:02:04,060 Odlučili ste kao što ste zaronili u pset 7, odlučili smo prije predavanja što naš CSS će biti. 1047 01:02:04,060 --> 01:02:07,380 No, ako želite promijeniti svoj CSS, što zapravo može učiniti da 1048 01:02:07,380 --> 01:02:09,370 nakon što su stvarni programski jezik. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - ne programskim jezicima. JavaScript je. 1050 01:02:13,910 --> 01:02:18,200 Tako ispada da čim imate jedan od onih pravokutnika sa stabla 1051 01:02:18,200 --> 01:02:23,050 zove DOM, to je samo po sebi neke podatke unutar nje. 1052 01:02:23,050 --> 01:02:27,820 Dakle, div koji sam uhvatio na stablu ima ono što ćemo nazvati imovine unutar nje 1053 01:02:27,820 --> 01:02:34,390 zove stil, a stil ima sebi svojstvo nazvano vidljivost. 1054 01:02:34,390 --> 01:02:37,330 Ja bih to znaju samo gleda CSS upute za upotrebu. 1055 01:02:37,330 --> 01:02:41,160 Ispada da postoji imovina vidljivost CSS da radi ono što govori. 1056 01:02:41,160 --> 01:02:44,530 To čini nešto vidljivo ili ne, vidljiv ili ne. 1057 01:02:44,530 --> 01:02:46,810 I kako ti to je to. 1058 01:02:46,810 --> 01:02:50,510 Tražim programatski ako vidljivost ovom div skriven, 1059 01:02:50,510 --> 01:02:53,390 Što mogu promijeniti to? Vidljiva. 1060 01:02:53,390 --> 01:02:58,840 Jer ako vidljivost ovoj stranici nije skrivena, logično ja ne bi to skriveno. 1061 01:02:58,840 --> 01:03:04,070 Nemam pojma zašto je to vidljivo i skriveno i nije vidljivo i nevidljivo. 1062 01:03:04,070 --> 01:03:06,000 Ovo je bila loša odluka dizajn na putu. 1063 01:03:06,000 --> 01:03:09,530 No, oni su doista suprotnosti u CSS: vidljivi i skriveni. 1064 01:03:09,530 --> 01:03:15,520 Sve to ne znači da je to promijeniti CSS moje datoteke i isključivanje, uključivanje i isključivanje 1065 01:03:15,520 --> 01:03:16,870 za tu određenu div. 1066 01:03:16,870 --> 01:03:20,630 Ali opet, to je funkcija zove treptaj. Kada je treptaj funkcija zove? 1067 01:03:20,630 --> 01:03:24,080 Ispada da postoji jedna posebna globalna varijabla zove prozor, 1068 01:03:24,080 --> 01:03:28,220 slični u duhu dokumenta, ali dok je dokument odnosi se na web stranici, 1069 01:03:28,220 --> 01:03:31,700 kao DOM stabla, HTML ste poslali s poslužitelja, 1070 01:03:31,700 --> 01:03:35,250 Prozor se odnosi na krom oko njega, adresa bar, bar naslov, 1071 01:03:35,250 --> 01:03:37,880 i sve te stvari oko vašeg web stranici. 1072 01:03:37,880 --> 01:03:42,800 >> I ispada da je prozor objekt ima poseban function unutar njega zove setInterval 1073 01:03:42,800 --> 01:03:44,360 da čini ono što kaže. 1074 01:03:44,360 --> 01:03:48,600 To će postaviti interval - u ovom slučaju svakih 500 milisekundi - 1075 01:03:48,600 --> 01:03:52,270 i, uzeti pogodak, što će to učiniti svakih 500 milisekundi? 1076 01:03:52,270 --> 01:03:55,240 To će izvršiti tu funkciju treptati. 1077 01:03:55,240 --> 01:03:58,560 I ono što je lijepo ovdje je da smo mogli učiniti to u C, iako mi nikada nije učinio. 1078 01:03:58,560 --> 01:04:01,580 C ima nešto što se zove funkcija pokazivače gdje možete proći funkcije oko 1079 01:04:01,580 --> 01:04:03,140 kao argumente. 1080 01:04:03,140 --> 01:04:07,620 Slično tome, u JavaScriptu možete proći naziv funkcije u drugu funkciju. 1081 01:04:07,620 --> 01:04:10,630 I primijetiti ono što radim. Ja ne radim to. 1082 01:04:10,630 --> 01:04:14,380 Ako sam stavio zagrade nakon treptaja, to bi značilo nazvati tren funkciju. 1083 01:04:14,380 --> 01:04:17,430 Ako sam ih izostaviti, to znači da je ovdje treptaj function 1084 01:04:17,430 --> 01:04:21,330 tako da setInterval može nazvati svakih 500 milisekundi. 1085 01:04:21,330 --> 01:04:28,200 Dakle, krajnji rezultat, zločest, iako je to, da ako sam otići u localhost i otići na blink.html, 1086 01:04:28,200 --> 01:04:32,120 Ja sada imam ovo događa opet i opet. 1087 01:04:32,120 --> 01:04:34,950 A ako sam zapravo Pregledajte Element, neka je vidjeti ako možemo vidjeti ovaj. 1088 01:04:34,950 --> 01:04:38,550 Dopustite mi Pregledajte Element, neka mi se pomaknite prema dolje samo malo, 1089 01:04:38,550 --> 01:04:44,320 neka mi odabrati Elementi više ovdje, i primijetiti DOM unutrašnjost Chrome inspektora. 1090 01:04:44,320 --> 01:04:48,840 To je doslovno mijenja natrag i naprijed svakih 500 milisekundi. 1091 01:04:48,840 --> 01:04:55,660 Ako odemo na naš prijatelj Nate, 1092 01:04:55,660 --> 01:05:00,020 ako ste se ikad pitali kako to radi, sličnu ideju s razmakom, 1093 01:05:00,020 --> 01:05:04,810 ali Nate je zapravo što je vrlo učinkovito korištenje boje u ovom konkretnom slučaju ovdje. 1094 01:05:04,810 --> 01:05:07,350 Dakle, što više možemo zapravo učiniti s tim? 1095 01:05:07,350 --> 01:05:09,990 Ajmo otvoriti još jedan primjer i pokušati nešto 1096 01:05:09,990 --> 01:05:12,940 to je programatski još više koristan nego što stvari treptati. 1097 01:05:12,940 --> 01:05:17,990 Pusti me u naš direktorij oblici danas i ići u form0. 1098 01:05:17,990 --> 01:05:20,820 To je najružnija moguća oblik koji sam mogao smisliti, 1099 01:05:20,820 --> 01:05:23,290 i neka mi samo da vam pokazati kako to izgleda u pregledniku. 1100 01:05:23,290 --> 01:05:28,960 >> Pusti me u localhost / forme, a to je form0. 1101 01:05:28,960 --> 01:05:33,400 Ovo je super ružni HTML obrazac koji ima nekoliko polja za e-mail, za lozinku, 1102 01:05:33,400 --> 01:05:37,190 lozinka, a zatim malo potvrdni pristati na nekim uvjetima. 1103 01:05:37,190 --> 01:05:41,350 Kvaka je ako sam posjetiti ovaj obrazac, a ja ne želim da vam dati moju adresu, 1104 01:05:41,350 --> 01:05:44,730 Ne želim pristati na uvjete i odredbe možda, mogu kliknuti Registracija 1105 01:05:44,730 --> 01:05:46,920 i to mi omogućuje kroz svejedno. 1106 01:05:46,920 --> 01:05:50,800 To se događa da podnese glupog PHP datoteku pod nazivom dump.php. 1107 01:05:50,800 --> 01:05:58,420 Sve je to ipak ispisati sadržaj $ _GET samo za dijagnostičke svrhe. 1108 01:05:58,420 --> 01:06:01,580 To je ono što je podnesen od strane korisnika upravo sada. 1109 01:06:01,580 --> 01:06:05,010 Ali pretpostavimo da zapravo želimo potvrditi korisnikovu slanje obrasca. 1110 01:06:05,010 --> 01:06:06,530 Pusti me u verziji 1. 1111 01:06:06,530 --> 01:06:11,420 Ovo je form1.html. To izgleda estetski jednako loše, ali primijetiti kako zavoljeti to je. 1112 01:06:11,420 --> 01:06:15,450 Ako sam kliknite Registrirajte se bez suradnje, ja dobiti vikao na. 1113 01:06:15,450 --> 01:06:17,320 "Morate dati svoj e-mail adresu." 1114 01:06:17,320 --> 01:06:21,670 U redu. Pa neka mi probati to. Dakle malan@harvard.edu. Ne trebam lozinku. 1115 01:06:21,670 --> 01:06:25,100 Registrirajte se. "Morate osigurati lozinku." U redu. 1116 01:06:25,100 --> 01:06:28,470 Dakle, ja ću dati lozinku grimizne. Registrirajte se. 1117 01:06:28,470 --> 01:06:32,300 "Lozinke se ne podudaraju." Moram sada upisati u grimizno ovdje. 1118 01:06:32,300 --> 01:06:35,710 Slučajno sam provjeriti da. Registrirajte se. 1119 01:06:35,710 --> 01:06:39,860 "Morate se složiti s uvjetima i odredbama." U redu. Slažem se. Registrirajte se. 1120 01:06:39,860 --> 01:06:43,700 I sada mi pokazuje dijagnostičke izlaz tamo. 1121 01:06:43,700 --> 01:06:45,630 >> Dakle, što se dogodilo? 1122 01:06:45,630 --> 01:06:48,330 Mi smo imali tu sposobnost za ovjeru obrasca. 1123 01:06:48,330 --> 01:06:51,420 U stvari, ako je roniti u pset 7, tu je ispričati function 1124 01:06:51,420 --> 01:06:54,620 , što ga čini prilično jednostavan vikati na korisnika porukom na zaslonu. 1125 01:06:54,620 --> 01:06:57,580 Ja sam koristeći malo drugačiji mehanizam, upozorenja funkcije, 1126 01:06:57,580 --> 01:07:03,690 koji nije funkcija koja je nasmijala na jer čini vrlo ružne korisničke poruke. 1127 01:07:03,690 --> 01:07:05,710 Ali ajmo vidjeti što ja radim ovdje. 1128 01:07:05,710 --> 01:07:09,620 Ovo je form1.html, i primjetiti da imam neke prilično poznati sintaksu: 1129 01:07:09,620 --> 01:07:12,920 Tijelo tag, tag oblik, akcija atribut, metoda atribut. 1130 01:07:12,920 --> 01:07:17,050 Ali primijetite sam dao svoj oblik jedinstveni ID za praktičnost. 1131 01:07:17,050 --> 01:07:19,190 Tada sam dobio e-mail polje čija je vrsta teksta, 1132 01:07:19,190 --> 01:07:23,780 Lozinka polje čija je vrsta lozinku, potvrda polje čija je vrsta lozinka, 1133 01:07:23,780 --> 01:07:28,070 i onda kućicu čije je ime ugovor ovamo, tip je potvrdni okvir. 1134 01:07:28,070 --> 01:07:30,380 A onda sam dobio submit gumb. 1135 01:07:30,380 --> 01:07:33,050 Ali primijetite na vrhu što više imam. 1136 01:07:33,050 --> 01:07:35,810 Prije svega, tu je još jedan korištenje skripti oznaku. 1137 01:07:35,810 --> 01:07:40,520 Ako imate neke JavaScript koda u drugu datoteku, baš kao i sa CSS možete ga uključiti. 1138 01:07:40,520 --> 01:07:44,530 I što učiniti da se s skripte izvora, a zatim sam primijetiti povezivanje očito 1139 01:07:44,530 --> 01:07:50,349 da googleapis.com na vrlo dugom putu, ali čije ime datoteke završava u jquery.min 1140 01:07:50,349 --> 01:07:52,420 za minimum. js. 1141 01:07:52,420 --> 01:07:55,969 jQuery je super popularna biblioteka za JavaScript da samo čini JavaScript 1142 01:07:55,969 --> 01:07:58,230 sve više user-friendly za korištenje. 1143 01:07:58,230 --> 01:08:00,610 To učinkovito je postao de facto standard. 1144 01:08:00,610 --> 01:08:04,090 Dakle, iako je ono što ćete vidjeti nije čista JavaScripta po sebi, 1145 01:08:04,090 --> 01:08:09,340 je knjižnica na vrhu JavaScript, slično CS50 knjižnice je sloj 1146 01:08:09,340 --> 01:08:13,670 na vrhu low-level C koda, stvarnost je gotovo svatko na internetu ga koristi. 1147 01:08:13,670 --> 01:08:18,030 Dakle, to nisu trening kotačima. Ovo je samo najbolje vježbati ovih dana. 1148 01:08:18,030 --> 01:08:22,830 Sada primijetite ispod koje je moja skripta oznaka, i primijetiti što sam učinio ovdje. 1149 01:08:22,830 --> 01:08:27,450 Ispada da jQuery čini nešto malo zavoljeti. 1150 01:08:27,450 --> 01:08:29,660 Javascript je dolar znakove, ali oni su besmislene. 1151 01:08:29,660 --> 01:08:32,870 >> Oni su kao slovo A ili B ili C. 1152 01:08:32,870 --> 01:08:36,670 jQuery jednostavno je usvojila Konvenciju ili vrsta od položenu tvrde da činjenice 1153 01:08:36,670 --> 01:08:40,280 da $ će biti njihova posebna simbol. 1154 01:08:40,280 --> 01:08:44,950 Dakle, čim ste učitati ovu globalnu JavaScript datoteku ovdje sa original oznake, 1155 01:08:44,950 --> 01:08:49,080 imate pristup posebnom globalne varijable koja se zove $. 1156 01:08:49,080 --> 01:08:53,009 To je više ispravno zove jQuery, ali da ne izgleda gotovo kao seksi kao $. 1157 01:08:53,009 --> 01:08:56,250 No $ nema posebno značenje. U PHP je imala posebno značenje. 1158 01:08:56,250 --> 01:08:58,440 Mogli ste ga imati ispred varijable. 1159 01:08:58,440 --> 01:09:01,670 Ovo je samo seksi stvar koja im je na. 1160 01:09:01,670 --> 01:09:03,389 Što se ovdje događa? 1161 01:09:03,389 --> 01:09:08,830 Obavijest sam prolazi na jQuery funkcije moj globalnu varijablu dokument 1162 01:09:08,830 --> 01:09:10,860 i onda zovem. spreman. 1163 01:09:10,860 --> 01:09:15,480 Što jQuery suštini ne je to vam omogućuje da se neke stvari vanilije JavaScripta 1164 01:09:15,480 --> 01:09:17,889 kao dokumenta objekt, prozor objekt, 1165 01:09:17,889 --> 01:09:20,790 i ako to prođe u na jQuery funkcije - 1166 01:09:20,790 --> 01:09:24,429 i opet, da bude jasno, to je funkcija zove jQuery - 1167 01:09:24,429 --> 01:09:28,240 što to je to vraća vama posebnu verziju dokumenta 1168 01:09:28,240 --> 01:09:30,700 koji ima više funkcija povezane s njom. 1169 01:09:30,700 --> 01:09:34,760 Dakle, u sirovom JavaScriptu nema spremni funkcija, 1170 01:09:34,760 --> 01:09:37,810 ali ako prođe dokument jQuery funkcije prvi, 1171 01:09:37,810 --> 01:09:40,960 vraća se vama posebnu verziju dokumenta objekta 1172 01:09:40,960 --> 01:09:43,030 da ima više sviđa značajke. 1173 01:09:43,030 --> 01:09:48,230 I to je razlog zašto ljudi ga vole. To samo čini stvari lakše učiniti, kao što smo o tome vidjeti. 1174 01:09:48,230 --> 01:09:49,820 Pa što to linija koda znači? 1175 01:09:49,820 --> 01:09:52,690 Ova linija koda ovdje znači kada je dokument spreman - 1176 01:09:52,690 --> 01:09:56,830 Drugim riječima, nakon što je preglednik učinili čitate ovaj file vrha do dna - 1177 01:09:56,830 --> 01:09:59,200 ići naprijed i izvršiti sljedeću funkciju. 1178 01:09:59,200 --> 01:10:03,540 Ono što je doista zanimljivo u JavaScriptu - i PHP ima to kao dobro - 1179 01:10:03,540 --> 01:10:05,450 je anonimni funkcije. 1180 01:10:05,450 --> 01:10:10,560 U JavaScriptu možete deklarirati funkcije koje nemaju ime, ali oni nemaju tijelo. 1181 01:10:10,560 --> 01:10:12,570 Obavijest što se ovdje događa. 1182 01:10:12,570 --> 01:10:16,220 >> To je funkcija zove spremni, a to samo znači učiniti sljedeće 1183 01:10:16,220 --> 01:10:20,220 kada je cijela web stranica je spremna, kada je sve bilo čitati s poslužitelja. 1184 01:10:20,220 --> 01:10:23,090 Što želite učiniti? Želim izvršiti komad koda. 1185 01:10:23,090 --> 01:10:27,120 Primijetite da ne želimo izvršiti ovaj kod odmah. 1186 01:10:27,120 --> 01:10:34,350 Ako sam propustio ovo, to bi značilo da odmah počnu izvršenja ove linije koda. 1187 01:10:34,350 --> 01:10:39,040 No, činjenica da sam rekao ne, ne, ne, zamotajte to u anonimnom funkcije kao što je to 1188 01:10:39,040 --> 01:10:43,000 znači ne izvršiti ga još, na kraju ga zovu. 1189 01:10:43,000 --> 01:10:45,430 Vidjeli smo to maloprije u našem prethodnom primjeru obrasca. 1190 01:10:45,430 --> 01:10:49,990 Što funkcija nije mi nazivamo vremenom, 500 milisekundi kasnije? Blink. 1191 01:10:49,990 --> 01:10:51,480 Dakle, ista ideja. 1192 01:10:51,480 --> 01:10:53,950 Opet, čak i ako to izgleda malo čudno, samo se za sada na vjeri 1193 01:10:53,950 --> 01:10:57,060 da se proglasi anonimnu funkciju koja se zove kraju, 1194 01:10:57,060 --> 01:11:01,720 jednostavno napisati funkciju () { 1195 01:11:01,720 --> 01:11:05,380 Dakle, ono što kod ćemo izvršiti na kraju? Sljedeći. 1196 01:11:05,380 --> 01:11:10,460 To također izgleda malo novo, ali to znači evo jQuery funkcija, 1197 01:11:10,460 --> 01:11:13,430 a ovo sada je prečac. 1198 01:11:13,430 --> 01:11:18,830 Ovo je isječak HTML na dnu ekrana naravno ima neke stablo zastupljenost. 1199 01:11:18,830 --> 01:11:21,730 To nije to. Ova stranica je puno zanimljiviji od ovog Hello, svjetski primjer. 1200 01:11:21,730 --> 01:11:25,210 No, tu je neki stablo koje odgovara tom HTML. 1201 01:11:25,210 --> 01:11:28,910 To će biti bol u vratu morati provesti neku vrstu rekurzivne funkcije 1202 01:11:28,910 --> 01:11:34,380 početi na korijen čvor, a zatim pronaći čvor čiji ID je registracija. 1203 01:11:34,380 --> 01:11:38,340 Dakle, ono što jQuery čini super jednostavno za nas je doslovno to. 1204 01:11:38,340 --> 01:11:43,000 Idi naprijed i mi dobiti što god div ili bilo kojem obliku, bez obzira na HTML element 1205 01:11:43,000 --> 01:11:45,820 ima ID registracije. 1206 01:11:45,820 --> 01:11:52,440 Ovo je ekvivalent document.getElementById ('registracija'). 1207 01:11:52,440 --> 01:11:54,170 >> Zašto ljudi poput jQuery? 1208 01:11:54,170 --> 01:12:00,110 Budući da je kraći za tipkanje. No, to je sve što je. To je ista ideja. 1209 01:12:00,110 --> 01:12:02,630 Daj mi oznaku čiji ID je registracija. 1210 01:12:02,630 --> 01:12:06,300 A kad se to oznaka, koji se dogoditi da se oblik, podnosi se, 1211 01:12:06,300 --> 01:12:08,300 ići naprijed i izvršiti ovaj kod. 1212 01:12:08,300 --> 01:12:11,320 Dakle, neka je uzeti jedan pogled sada na tome radimo obrasca valjanosti. 1213 01:12:11,320 --> 01:12:15,950 Sintaksa je doduše grobni na prvi, ali ono što se događa? 1214 01:12:15,950 --> 01:12:21,050 Ako ova linija koda je istina, ja ću vikati na korisnika kako bi osigurao svoju e-mail adresu. 1215 01:12:21,050 --> 01:12:22,970 Dakle, ono što je ova linija koda? 1216 01:12:22,970 --> 01:12:25,560 $ Znači jQuery. Sada primijetiti. 1217 01:12:25,560 --> 01:12:27,920 To je vrsta kao što su CSS. 1218 01:12:27,920 --> 01:12:33,370 Ako ste zaronili u CSS, ali, znat ćete da to znači element čiji ID je registracija. 1219 01:12:33,370 --> 01:12:39,840 Prostor znači naći dijete ili potomak registracije čije ime je ulaz. 1220 01:12:39,840 --> 01:12:42,970 I onda je ovo stvar u uglatim zagradama je malo filtar. 1221 01:12:42,970 --> 01:12:47,010 A čak i ako to izgleda zagonetan, to samo znači ići na obrascu čiji ID je registracija, 1222 01:12:47,010 --> 01:12:51,230 ići na unutarnjoj ulazni element koji čije ime je e-mail, 1223 01:12:51,230 --> 01:12:55,440 i onda dobiti svoju vrijednost, bez obzira na njegova vrijednost se dogodi da se - 1224 01:12:55,440 --> 01:12:59,670 asdf ako je to sve što sam upisali ili malan@harvard.edu ako je to ono što sam upisali. 1225 01:12:59,670 --> 01:13:05,250 Dakle, ako vrijednost obrasca email području == ništa, vikati na korisnika. 1226 01:13:05,250 --> 01:13:09,700 Drugo, ako je vrijednost polja zaporke == ništa, vikati na korisnika. 1227 01:13:09,700 --> 01:13:19,520 >> Inače, ako je vrijednost polja zaporke ne jednaka vrijednost za potvrdu polju, 1228 01:13:19,520 --> 01:13:22,850 koji je bio drugi oblik elementa, vikati na korisnika. 1229 01:13:22,850 --> 01:13:25,680 I onda na kraju - i to jedan previše ima neku novu sintaksu vlastite, 1230 01:13:25,680 --> 01:13:29,270 , ali nakon što sam ga vidio, to je barem malo više razuman - 1231 01:13:29,270 --> 01:13:34,060 drugo, ako oblik čiji ID je registracija ima ulazni element čije je ime ugovor 1232 01:13:34,060 --> 01:13:39,720 i to je provjeren, ići naprijed i vikati na korisnika. 1233 01:13:39,720 --> 01:13:42,520 Dakle, ja sam potpuno priznati da je to potpuno neodoljiv na prvi pogled. 1234 01:13:42,520 --> 01:13:46,530 To je puno novih sintakse. Ali sve jQuery slijedi ove vrste uzoraka. 1235 01:13:46,530 --> 01:13:49,880 A iskreno, nisam ni znala to postojala do prije nekoliko minuta. 1236 01:13:49,880 --> 01:13:53,640 Ja Googled, "Kako provjeriti je li potvrdni okvir označen u jQuery?" 1237 01:13:53,640 --> 01:13:55,680 i to je sintaksa, jer postoji različiti načini radi 1238 01:13:55,680 --> 01:13:58,010 sa stvarnim sirovog JavaScript koda. 1239 01:13:58,010 --> 01:14:01,030 Dakle, kao vrlo prva stranica Problem Set sedam naglašava, 1240 01:14:01,030 --> 01:14:04,500 pset 7 je jako puno vježba u sebe pokretački 1241 01:14:04,500 --> 01:14:08,650 gdje smo dali, nadamo se, konceptualni okvir s kojim se borila pset. 1242 01:14:08,650 --> 01:14:12,280 >> No, kao što je to često slučaj s web dizajn, to je do vas stvarno probiti okolo, 1243 01:14:12,280 --> 01:14:16,680 ugraditi isječke koda i primjere na webu, tako dugo dok ih citirati 1244 01:14:16,680 --> 01:14:17,960 po uvjetima na toj prvoj stranici, 1245 01:14:17,960 --> 01:14:21,460 i shvatiti da je učenje HTML, CSS, JavaScript, pa čak i SQL 1246 01:14:21,460 --> 01:14:26,020 je zapravo značilo da se ovo kod kuće vježba kao što smo početi da se ove obuke kotača off. 1247 01:14:26,020 --> 01:14:29,150 I shvatiti previše ima tako mnogo više stvari koje možete učiniti s preglednikom. 1248 01:14:29,150 --> 01:14:33,790 Unutar većine tih elemenata postoje i druge stvari nazivaju događaj rukuju. 1249 01:14:33,790 --> 01:14:37,140 I iako smo samo gledali one zove onsubmit i onready, 1250 01:14:37,140 --> 01:14:40,310 možete učiniti stvari kao što onkeydown, onkeyup, 1251 01:14:40,310 --> 01:14:43,410 volim kad korisnik dotakne tipku, možete slušati za to i tipku prema gore. 1252 01:14:43,410 --> 01:14:45,940 Gmail ima tipkovne prečace. 1253 01:14:45,940 --> 01:14:49,490 Kako Google provesti tipkovne prečace poput C za sastavljanje? 1254 01:14:49,490 --> 01:14:54,120 Oni slušati za događaje, kao što su oni nazivaju, kao onkeypress ili onkeyup i onkeydown. 1255 01:14:54,120 --> 01:14:56,360 Ako ste ikada lebdio mišem preko neke opcije izbornika 1256 01:14:56,360 --> 01:15:00,180 i odjednom, voila, izbornik ili grafički mijenja boju, 1257 01:15:00,180 --> 01:15:01,920 kako se to radi? 1258 01:15:01,920 --> 01:15:06,940 Umjesto slušati onready ili onsubmit, možete slušati onmouseover ili onmouseout. 1259 01:15:06,940 --> 01:15:10,920 >> Dakle, u kratko, s tim vrlo jednostavne osnove koje smo počeli ispočetka površine od danas 1260 01:15:10,920 --> 01:15:13,940 a mi ćemo zaroniti u dodatno je u srijedu, imate, sve, 1261 01:15:13,940 --> 01:15:17,530 snaga za provedbu vrste stvari koje ste već upoznati s. 1262 01:15:17,530 --> 01:15:21,620 Tako ćemo završiti tamo, a mi ćemo nastaviti ovu srijedu. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]