1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Týždeň 9] 2 00:00:02,570 --> 00:00:04,740 [David J. Malan - Harvard University] 3 00:00:04,740 --> 00:00:07,170 [To je CS50. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 Dobrá. Vitajte späť. To je CS50, a to je začiatok týždňa 9. 5 00:00:12,350 --> 00:00:16,600 Dnes sme sa zamerali najmä na dizajn, už v súvislosti s C 6 00:00:16,600 --> 00:00:20,010 ale v kontexte PHP a kúskom SQL a trochu JavaScriptu, 7 00:00:20,010 --> 00:00:23,730 najmä ku koncu ako PSet 7 a tiež vaše konečný projekt. 8 00:00:23,730 --> 00:00:26,310 V skutočnosti, ak ste v tomto bode v konečnej projektu 9 00:00:26,310 --> 00:00:30,100 kde pravdepodobne ako o hodinu alebo tak pred vami aspoň začala zamyslieť 10 00:00:30,100 --> 00:00:33,730 do konečného projektu a myslíš si prajete spolupracovať s 1 alebo 2 spolužiakmi, 11 00:00:33,730 --> 00:00:36,150 ak máte problémy s pripojením s uvedenou spolužiakmi, 12 00:00:36,150 --> 00:00:40,570 neváhajte vyplniť formulár na cs50.net/partners/form. 13 00:00:40,570 --> 00:00:42,880 Je to len spýta, kto ste, aké projektu myslíš o tom, 14 00:00:42,880 --> 00:00:44,870 kde žijete len pre logistických dôvodov. 15 00:00:44,870 --> 00:00:49,510 A potom, ak chcete dávať pozor na v priebehu budúceho týždňa alebo tak tabuľkového URL tam, 16 00:00:49,510 --> 00:00:53,520 potom môžete vidieť len na čítanie verzie Google doc 17 00:00:53,520 --> 00:00:56,010 , V ktorom sme zberu týchto informácií. 18 00:00:56,010 --> 00:00:58,930 Takže ak chcete pracovať s niekým, a to všetkými prostriedkami, neváhajte osloviť ľudí 19 00:00:58,930 --> 00:01:00,480 prostredníctvom tohto mechanizmu. 20 00:01:00,480 --> 00:01:02,690 Ale väčšina ľudí to práca sólo. To je úplne v poriadku. 21 00:01:02,690 --> 00:01:06,120 Takže sa domnievajú, že toto je v žiadnom prípade povinné. 22 00:01:06,120 --> 00:01:09,680 V piatok to bol len ja a niekoľko z tímu tu, 23 00:01:09,680 --> 00:01:11,100 prázdne divadlo z väčšej časti. 24 00:01:11,100 --> 00:01:14,600 Tam boli 3 turistov sedí tam, takže to bolo trochu trápne. 25 00:01:14,600 --> 00:01:18,970 O čom sme hovorili bola databáza a hovorili sme o PSet 7 trochu. 26 00:01:18,970 --> 00:01:22,200 A ak ste náhodou chytiť, že na videu ešte nie, to je v poriadku. 27 00:01:22,200 --> 00:01:26,770 Pokúsim sa definovať všetky pojmy, ktoré by sme inak považujeme za samozrejmé 28 00:01:26,770 --> 00:01:28,840 na základe prednášky piatkovej. 29 00:01:28,840 --> 00:01:32,550 >> Ale dnes sa budeme snažiť, aby vám do bodu 30 00:01:32,550 --> 00:01:34,990 zo dňa nielen schopný urobiť niečo ako PSet 7 31 00:01:34,990 --> 00:01:37,360 ale naozaj pochopiť, čo sa deje na pod pokrievku, 32 00:01:37,360 --> 00:01:41,910 najmä niektoré abstrakcie, ktoré sme zaviedli do functions.php súboru 33 00:01:41,910 --> 00:01:45,780 aby vaše životy trochu jednoduchšie, ale tak, že si nakoniec porozumeli 34 00:01:45,780 --> 00:01:48,760 tak, že keď sa školenia kolesá zložiť za pár týždňov môžete ešte prežiť 35 00:01:48,760 --> 00:01:53,750 v reálnom svete a robiť tie veci bez CS50 rámci pod vami. 36 00:01:53,750 --> 00:01:57,500 Tento $ _SESSION, pre tých z vás, ktorí sú oboznámení 37 00:01:57,500 --> 00:02:01,960 alebo ktorí už zachytil na video v piatok, čo SESSION, dajte nám to 38 00:02:01,960 --> 00:02:04,330 v PHP-založené webové aplikácie? 39 00:02:04,330 --> 00:02:09,650 To je superglobal variabilný, čo znamená, že je to podobné ako v duchu GET a POST 40 00:02:09,650 --> 00:02:13,970 a pár ďalších, ale to, čo je to za vec užitočná pre? 41 00:02:13,970 --> 00:02:18,320 >> Čo je SESSION používa? Jo. [Študent] prihlásenie 42 00:02:18,320 --> 00:02:21,040 Je nám ľúto? [Študent] prihlásenie prihlásenie Naozaj. 43 00:02:21,040 --> 00:02:25,100 V PSet 7 sme pomocou tohto SESSION superglobal uľahčiť prihlásenie 44 00:02:25,100 --> 00:02:28,600 A čo je pekné o tejto superglobal je, že je asociatívne pole. 45 00:02:28,600 --> 00:02:33,190 Asociatívne pole, odvolanie, je len pole, ale ktorých indexov už nemusí byť čísla 46 00:02:33,190 --> 00:02:37,670 ako 012. Môžu byť čísla, alebo môžu byť dokonca reťazca. 47 00:02:37,670 --> 00:02:44,890 A tak ak ste sa ponorila do PSet 7 ešte, môžu si spomeniete, že sme sa ukladajú kľúč nazvaný ID 48 00:02:44,890 --> 00:02:50,330 vnútri tohto asociatívne pole, ktorého hodnota je niečo ako 123 - 49 00:02:50,330 --> 00:02:53,780 bez ohľadu na aktuálne prihláseného ID užívateľa je. 50 00:02:53,780 --> 00:02:59,470 Motivácia je to, že aj potom, čo užívateľ navštívil localhost 51 00:02:59,470 --> 00:03:02,720 alebo moje webové stránky všeobecnejšie a potom sa prihlásite, 52 00:03:02,720 --> 00:03:07,320 aj v prípade, že nie sú kliknite na odkaz, alebo sa vrátiť do svojho webu po dobu 5 minút 53 00:03:07,320 --> 00:03:10,730 alebo dokonca hodinu, alebo dokonca denne, ale opustiť svoj okno prehliadača otvorené, 54 00:03:10,730 --> 00:03:14,370 prostredníctvom tohto superglobal môžem pamätať, že sú prihlásení 55 00:03:14,370 --> 00:03:21,140 >> Inými slovami, mi umožňuje uložiť mierne dlhodobú čo chcem o užívateľovi. 56 00:03:21,140 --> 00:03:24,390 A môžete si ju naozaj ako stelesnenie nákupnom košíku. 57 00:03:24,390 --> 00:03:27,740 Miesta ako Amazon zrejme vám dať veci do nákupného košíka, 58 00:03:27,740 --> 00:03:32,230 ale HTTP, protokol, ktorý poháňa web, je bez štátnej príslušnosti 59 00:03:32,230 --> 00:03:34,230 v tom zmysle, že pri návšteve webovej stránky, 60 00:03:34,230 --> 00:03:37,290 z väčšej časti nemáte nejakú konštantné pripojenie k sieti 61 00:03:37,290 --> 00:03:39,270 medzi prehliadačom a serverom. 62 00:03:39,270 --> 00:03:42,190 Akonáhle ste si stiahli HTML a obrázky vo formáte JPEG a GIF a všetko, 63 00:03:42,190 --> 00:03:48,200 pripojenie zmizne a vy jednoducho máte kópiu HTML a ktovie čo ešte zo servera. 64 00:03:48,200 --> 00:03:53,000 Ale ak server chce mať na pamäti, niečo o sebe, 65 00:03:53,000 --> 00:03:57,580 zaťaženie je na serveri skutočne zaznamenať, že informácie. 66 00:03:57,580 --> 00:04:00,130 A tak ste programátor, ktorí majú kontrolu nad serverom 67 00:04:00,130 --> 00:04:04,400 môže dať najviac, čo chcete v tejto superglobal asociatívneho poľa 68 00:04:04,400 --> 00:04:06,850 a to tam bude nabudúce užívateľ príde späť, 69 00:04:06,850 --> 00:04:12,070 či už je to minút alebo dokonca dní neskôr, keď zatvoríte svoje okno prehliadača, 70 00:04:12,070 --> 00:04:14,360 na ktorom mieste SESSION zmizne. 71 00:04:14,360 --> 00:04:17,779 Takže je to pominuteľné skladovanie, je to non-perzistentné, a to znamenalo ísť preč 72 00:04:17,779 --> 00:04:22,360 akonáhle užívateľ zavrie svoj prehliadač - nielen, že karta, často na celý prehliadač, 73 00:04:22,360 --> 00:04:24,930 čím účinne prihlásenie užívateľa von. 74 00:04:24,930 --> 00:04:28,000 Tak, ako je tá vec skutočne realizovaná? 75 00:04:28,000 --> 00:04:31,360 Poďme sa rýchlo pozrieť na jednoduchom príklade sme sa pozreli na piatok. 76 00:04:31,360 --> 00:04:33,340 Pre tých, ktorí nepoznajú, to bolo tak jednoduché, ako to. 77 00:04:33,340 --> 00:04:35,910 Toto je webová stránka, ktorej jediným zmyslom života je mi 78 00:04:35,910 --> 00:04:38,000 koľkokrát som navštívil túto stránku. 79 00:04:38,000 --> 00:04:41,670 To je prvýkrát, čo tu v pondelok, že som ju navštívil, tak to hovorí 0 krát. 80 00:04:41,670 --> 00:04:46,940 >> Ale keby som začal načítanie tejto stránky hovorí, že 1 čas, 2, 3, 4, 5, 81 00:04:46,940 --> 00:04:49,800 a to bude nakoniec len sa udržať na počítanie hore, hore, hore, hore, hore 82 00:04:49,800 --> 00:04:53,130 pre každú dobu som vlastne kliknite na tlačidlo Obnoviť na to. 83 00:04:53,130 --> 00:04:58,830 Tak, ako je to nefunguje? Nechaj ma ísť dovnútra tohto súboru s názvom counter.php. 84 00:04:58,830 --> 00:05:02,490 Horná časť je všetky modré komentáre, ale zaujímavá časť je tu. 85 00:05:02,490 --> 00:05:06,670 Na riadku 13 nazývame túto funkciu session_start, 86 00:05:06,670 --> 00:05:09,600 a to je doslova všetko, čo musíte urobiť, ak chcete mať prístup 87 00:05:09,600 --> 00:05:13,610 k tomu špeciálny superglobal s názvom $ _SESSION. 88 00:05:13,610 --> 00:05:17,430 To je to všetko možné, a uvidíme za chvíľu, ako je to vôbec možné. 89 00:05:17,430 --> 00:05:20,350 V riadku 16 oznámení, čo robím. 90 00:05:20,350 --> 00:05:25,960 Ak bude kľúč, tzv pult - inými slovami, hodnota indexu - "počítadlo" 91 00:05:25,960 --> 00:05:32,310 existuje vnútri tohto poľa nazýva SESSION, potom to, čo robím s ňou v súlade nižšie? 92 00:05:32,310 --> 00:05:36,650 Čo je linka 18 robí? 93 00:05:36,650 --> 00:05:40,360 >> [Nepočuteľné Študent odpoveď] Čo je to? [Študent] Ukladanie hodnoty. Dobré. 94 00:05:40,360 --> 00:05:45,800 Je to ukladanie hodnotu, ktorá je v SESSION teraz v novej miestnej dočasné premenné, 95 00:05:45,800 --> 00:05:48,250 $ Counter vo všetkých malými písmenami. 96 00:05:48,250 --> 00:05:50,770 Všimnite si, že PHP už bol trochu lenivý tu. 97 00:05:50,770 --> 00:05:55,550 Všimnite si, nemáme žiadnu zmienku o int alebo float alebo reťazec alebo niečo také 98 00:05:55,550 --> 00:06:00,480 pretože PHP je slabo typovanie, kedy nemusíte špecifikovať typ premennej, 99 00:06:00,480 --> 00:06:03,310 a v tomto prípade tu som to dokonca vyhlásil to ešte. 100 00:06:03,310 --> 00:06:08,980 Som vyhlásil, že vo vnútri týchto zložených zátvoriek a na rozdiel od C, je to vlastne v poriadku. 101 00:06:08,980 --> 00:06:13,800 Bez ohľadu na to, ako hlboko vnorené premenné vyhlásenie je v PHP - 102 00:06:13,800 --> 00:06:16,650 vnútri ortézy kučeravé, vnútri ortézy vlnité a ako - 103 00:06:16,650 --> 00:06:21,230 že bude v tomto okamihu v dobe existujú pre zvyšok programu, 104 00:06:21,230 --> 00:06:22,680 k lepšiemu alebo k horšiemu. 105 00:06:22,680 --> 00:06:26,930 Tak to okamžite stáva globálny akonáhle ho definovať ako tu robíme. 106 00:06:26,930 --> 00:06:31,620 >> Inak, keď nemám zistil, že tam je niečo v SESSION superglobal, 107 00:06:31,620 --> 00:06:34,680 Som zrejme inicializácii túto premennú čítač na 0, 108 00:06:34,680 --> 00:06:37,580 čím len za predpokladu, že používateľ nikdy tu nebola. 109 00:06:37,580 --> 00:06:40,030 A potom samozrejme je zvyšovanie counter, ako? 110 00:06:40,030 --> 00:06:44,480 Ja som aktualizáciu hodnotu, ktorá je vo vnútri tohto asociatívneho poľa 111 00:06:44,480 --> 00:06:49,530 nastavením je rovná čo čítač je v súčasnej dobe + 1. 112 00:06:49,530 --> 00:06:53,520 Keby som prejdite sem na HTML stránky, je to vlastne celkom jednoduché. 113 00:06:53,520 --> 00:06:58,920 Jediné, čo mám v tele tejto stránky je, "Navštívili ste tieto stránky tak-a-tak čas." 114 00:06:58,920 --> 00:07:00,350 A to je pojem PHP. 115 00:07:00,350 --> 00:07:06,080 Ak tak urobíte 00:07:12,600 Je to naozaj odpovedá na niečo ako printf, ktorý sme videli mnohokrát v C, 117 00:07:12,600 --> 00:07:15,940 hoci, ako možno viete už od spec v PSet 7, 118 00:07:15,940 --> 00:07:20,160 tlač je tiež funkcia, ktorá vytlačí len niečo, to robí nie vlastne používať formátovacie kódy, 119 00:07:20,160 --> 00:07:23,270 a môžete skutočne povedať, echo rovnako. 120 00:07:23,270 --> 00:07:27,460 Sú to všetko niekedy tak trochu inak, aj keď čistý efekt je nakoniec rovnaký. 121 00:07:27,460 --> 00:07:31,270 Takže toto použitie od rovná sa je len akýsi elegantný spôsob, ako to urobiť 122 00:07:31,270 --> 00:07:34,910 stručnejšie než by ste inak mohli. 123 00:07:34,910 --> 00:07:38,370 Takže to je všetko, na tomto webe robí. To vytlačí hodnotu čítača. 124 00:07:38,370 --> 00:07:40,550 Ako to všetko vlastne deje? 125 00:07:40,550 --> 00:07:43,250 Možno si spomínate, týždeň alebo tak dávno sme začali hľadať pod pokrievku 126 00:07:43,250 --> 00:07:47,910 na to, ako webová stránka funguje pomocou tohto modulu kartu. 127 00:07:47,910 --> 00:07:51,900 >> Chrome má tento aj vo verzii Mac, verzie Windows, a dokonca aj verzia pre Linux, 128 00:07:51,900 --> 00:07:59,510 a Firefox a IE majú podobné mechanizmy, ktorými ste tento vstavaný debugger 129 00:07:59,510 --> 00:08:01,400 vnútri prehliadača. 130 00:08:01,400 --> 00:08:03,040 Poďme sa pozrieť na nasledujúce. 131 00:08:03,040 --> 00:08:06,960 Máme veľa kariet tu, a pripomínajú, že jeden je vľavo Elements, 132 00:08:06,960 --> 00:08:10,700 a bez ohľadu na to, ako godawful HTML a JavaScript je na stránke, 133 00:08:10,700 --> 00:08:15,710 Pripomínam, že sa Elements karte môžete skutočne prechádzať HTML hierarchicky 134 00:08:15,710 --> 00:08:17,050 a pekné a úhľadne. 135 00:08:17,050 --> 00:08:19,370 Takže ak sa snažíte naučiť z webovej stránky, ako Google alebo Facebook 136 00:08:19,370 --> 00:08:22,370 alebo naozaj všetky webové stránky, si uvedomiť, že ste pravdepodobne lepšie 137 00:08:22,370 --> 00:08:26,360 pri pohľade na zdrojový kód týmto spôsobom, ako protichodný k prezeranie surového zdroj, 138 00:08:26,360 --> 00:08:29,580 ktorý môže byť zmätok, ako sme videli predovšetkým na stránkach Google. 139 00:08:29,580 --> 00:08:32,220 Takže keď som namiesto toho kliknite na karte Sieť tu, 140 00:08:32,220 --> 00:08:34,830 Pozrime sa, čo sa deje, keď som navštívte túto stránku. 141 00:08:34,830 --> 00:08:38,669 Najprv mi dovoľte prečistiť cache. 142 00:08:38,669 --> 00:08:43,570 Chystám sa ísť do nastavenia v Chrome a potom ísť do histórie 143 00:08:43,570 --> 00:08:46,420 a potom Vymazať všetky údaje o prehliadanie. 144 00:08:46,420 --> 00:08:48,170 Tie by mohli byť použité na robíte pre iné účely, [smiech] 145 00:08:48,170 --> 00:08:51,990 ale keď príde do rozvojových webové stránky, je to skutočne užitočné - 146 00:08:51,990 --> 00:08:55,980 ak sa smejete vieš. [Smiech] 147 00:08:55,980 --> 00:08:59,310 Je to naozaj užitočné pri rozvoji webových stránok, pretože realita je 148 00:08:59,310 --> 00:09:04,100 veci, ako sušienky a podobné veci medzipamäte súbory HTML, cache súbory JavaScriptu 149 00:09:04,100 --> 00:09:06,390 môže skutočne stať veľkým bolesti hlavy, pretože ak z akéhokoľvek dôvodu 150 00:09:06,390 --> 00:09:11,500 prehliadač rozhodne medzipamäte nejaký súbor, a napriek tomu ste vykonali zmeny tohto súboru na serveri 151 00:09:11,500 --> 00:09:14,670 ale prehliadač nie je naozaj uvedomil, že súbor bol zmenený 152 00:09:14,670 --> 00:09:19,060 a preto nie je v skutočnosti znovu stiahnuť, aj keď kliknete na tlačidlo Načítať znovu, 153 00:09:19,060 --> 00:09:23,210 jeden z najviac Surefire spôsoby, ako len sa uistite, chyba nie je na vašom kódu, 154 00:09:23,210 --> 00:09:26,480 je to so správaním prehliadača, je ísť tu v prehliadači 155 00:09:26,480 --> 00:09:29,950 a len vymazať celú históriu tak, aby tam žiadny zmätok. 156 00:09:29,950 --> 00:09:33,210 >> A potom, ak naozaj chcete byť paranoidný, ukončite prehliadač, reštartujte ho, 157 00:09:33,210 --> 00:09:35,660 a uistite sa, všetko funguje podľa očakávania. 158 00:09:35,660 --> 00:09:38,820 Takže v skratke, po vymazaní vyrovnávacej pamäte je dobré, keď robí rozvoj. 159 00:09:38,820 --> 00:09:40,690 Takže tu máme na kartu Sieť. 160 00:09:40,690 --> 00:09:46,020 Aj predtým navštívil miesto 9 krát, ale nechajte ma ísť napred teraz a kliknite na tlačidlo Obnoviť. 161 00:09:46,020 --> 00:09:47,500 A ja som späť na 0. 162 00:09:47,500 --> 00:09:52,100 Poďme skutočne vidieť, ako je možné, že tento SESSION superglobal je vykonávaný. 163 00:09:52,100 --> 00:09:55,990 Idem kliknite na 1 HTTP požiadavky, ktorý bol vyrobený, 164 00:09:55,990 --> 00:09:58,810 a to ladenie okna mi umožňuje pozrieť dovnútra toho. 165 00:09:58,810 --> 00:10:01,970 Tu vidím len odpoveď zo servera, ktorý nie je zaujímavé. 166 00:10:01,970 --> 00:10:04,030 Videl som to v ľubovoľnom počte ciest. 167 00:10:04,030 --> 00:10:06,350 Ale to, čo je technicky zaujímavé sú hlavičky. 168 00:10:06,350 --> 00:10:11,770 Keby som prejdite sem a zamerať sa na hlavičkách a kliknite na tlačidlo Zobraziť zdroj, 169 00:10:11,770 --> 00:10:14,400 čo budem vidieť, je doslova požiadavku HTTP 170 00:10:14,400 --> 00:10:17,250 že jednoducho išiel z môjho prehliadača na serveri, 171 00:10:17,250 --> 00:10:21,400 GET je rozhodujúce slovo a potom / counter.php bytia názov súboru, 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1 byť len verzia HTTP že môj prehliadač používa. 173 00:10:25,670 --> 00:10:31,070 Táto linka je tu trochu pripomína z prehliadača na server, čo názov servera je 174 00:10:31,070 --> 00:10:33,020 že chce hovoriť. 175 00:10:33,020 --> 00:10:38,200 A potom zvyšok je to niekedy zaujímavé, ale nie je relevantný práve teraz. 176 00:10:38,200 --> 00:10:40,090 >> To je len trochu zvedavosti. 177 00:10:40,090 --> 00:10:43,530 Cryptic hoci je tento reťazec je, kedykoľvek váš prehliadač navštívi webovú stránku 178 00:10:43,530 --> 00:10:47,110 je informovanie server aký prehliadač používate 179 00:10:47,110 --> 00:10:50,040 a aký operačný systém používate a akú verziu tejto zmluvy. 180 00:10:50,040 --> 00:10:52,650 Takže ak ste sa niekedy nad tým, ako webové stránky, ako CNN a ktovie čo ešte 181 00:10:52,650 --> 00:10:56,860 vedieť, aké sú percentá užívateľov Mac na webe, užívateľov PC, 182 00:10:56,860 --> 00:11:00,820 Používateľom IE, Chrome užívatelia a podobné, je to preto, že všetky naše prehliadača 183 00:11:00,820 --> 00:11:04,300 hovoria každý web tam, čo sme. 184 00:11:04,300 --> 00:11:07,410 To nemusí nutne obsahovať osobné identifikačné údaje, 185 00:11:07,410 --> 00:11:13,060 ale to predsa povedať, server, aké sú vaše IP adresa je a aký prehliadač a OS používate. 186 00:11:13,060 --> 00:11:14,720 Tak to je, ak je táto informácia. 187 00:11:14,720 --> 00:11:19,960 Ale čo je ešte zaujímavejšie teraz, keď ide o týchto školeniach je hlavička odpovede. 188 00:11:19,960 --> 00:11:22,530 Dovoľte mi, aby som na položku Zobraziť zdrojový vedľa odpovede. 189 00:11:22,530 --> 00:11:24,590 Čo je zaujímavé, je tu niekoľko vecí. 190 00:11:24,590 --> 00:11:27,580 1, sme sa vrátili stavový kód 200. 191 00:11:27,580 --> 00:11:29,840 Nikdy sme nevideli tento stavový kód, pretože to znamená, že je všetko v poriadku. 192 00:11:29,840 --> 00:11:32,920 To znamená, doslova v poriadku na rozdiel od niečoho iného. 193 00:11:32,920 --> 00:11:36,380 Čo je to číslo niekedy vidieť, že je to zlé? [Študent] 404. 194 00:11:36,380 --> 00:11:39,860 404, súbor nebol nájdený, môže 403 môžete byť zakopnutia na už, 195 00:11:39,860 --> 00:11:43,660 ktoré je zakázané, čo znamená, že ste zabudli na niečo chmod, s najväčšou pravdepodobnosťou. 196 00:11:43,660 --> 00:11:45,190 A je tu banda ďalších. 197 00:11:45,190 --> 00:11:47,760 >> Tu dole, to je trochu blázon. 198 00:11:47,760 --> 00:11:52,340 Naozaj som to napísal tento súbor pár minút pred vložením do gedit. 199 00:11:52,340 --> 00:11:57,100 Prečo túto stránku vyprší v roku 1981 predtým, než tam naozaj Web? 200 00:11:58,010 --> 00:12:00,730 Čo sa to tam deje? 201 00:12:00,730 --> 00:12:04,390 >> [Nepočuteľné Študent odozvy] Časová pečiatka. Ale prečo? 202 00:12:06,110 --> 00:12:09,120 Je to trochu svojvoľné, ale v skutočnosti je to užitočné. 203 00:12:09,120 --> 00:12:15,500 Čo to hovorí k môjmu prehliadači je to PHP súbor, ktorý ste práve požiadal už vypršala. 204 00:12:15,500 --> 00:12:18,580 V skutočnosti, to, že sa skončila pred 30 rokmi. 205 00:12:18,580 --> 00:12:20,260 Ale čo to vlastne znamená? 206 00:12:20,260 --> 00:12:22,500 To len znamená, že nabudúce užívateľ navštívi túto stránku, 207 00:12:22,500 --> 00:12:25,540 či už prekládke alebo zadaním adresy URL v adresnom riadku, 208 00:12:25,540 --> 00:12:28,010 uistite sa, že ste ísť a prines novú kópiu. 209 00:12:28,010 --> 00:12:30,840 To je akýsi príklad medzipamäte mlátiť, 210 00:12:30,840 --> 00:12:33,790 hlúpy slovo, ktoré znamená len sa snaží odradiť prehliadača 211 00:12:33,790 --> 00:12:37,260 od skutočne cache HTML je, že bol odoslaný zo servera 212 00:12:37,260 --> 00:12:41,490 takže sa nebudete zasiahla znovu načítať a potom uvidíte rovnakú verziu súboru. 213 00:12:41,490 --> 00:12:43,730 Vy vlastne chcete, aby server odoslať novú kópiu. 214 00:12:43,730 --> 00:12:47,440 Takže skutočnosť, že je to 1981 znamená to, že to je to, čo je prístroj výberu 215 00:12:47,440 --> 00:12:50,280 ako ľubovoľné dáta v minulosti. 216 00:12:50,280 --> 00:12:53,380 Ale skutočný šťavnaté linka je teraz toto. 217 00:12:53,380 --> 00:12:57,550 Ešte predtým, než 50 pravdepodobne ste povedome s cookies. 218 00:12:57,550 --> 00:13:01,820 Ako teraz, najmä medzi tými, menej pohodlné, alebo medzi, 219 00:13:01,820 --> 00:13:04,120 čo je cookie vo vašom pochopenie práve teraz 220 00:13:04,120 --> 00:13:06,980 aj keď sme o tom, aby sa vaše chápanie viac technické? 221 00:13:08,150 --> 00:13:10,070 Čo je to súbor cookie? Jo. 222 00:13:10,070 --> 00:13:13,890 [Študent] Informácie o užívateľovi, ako v prípade, že ste napísali svoje užívateľské meno alebo niečo. 223 00:13:13,890 --> 00:13:17,370 >> Dobré. Je to informácie o užívateľovi, či už ste napísali vo svojom užívateľské meno už. 224 00:13:17,370 --> 00:13:21,190 Cookies sú spôsob, ako, kedy servery si pamätám niečo o užívateľovi. 225 00:13:21,190 --> 00:13:25,810 A čo cookie je naozaj je textový súbor alebo niektoré postupnosť bajtov 226 00:13:25,810 --> 00:13:28,340 , Ktorý je zasadený server vnútri vášho prehliadača, 227 00:13:28,340 --> 00:13:31,960 a vo vnútri tohto súboru alebo medzi týmito bajtov je nejaký identifikátor. 228 00:13:31,960 --> 00:13:35,640 Možno je to doslova vaše užívateľské meno, ale často je to niečo viac mystické vyzerajúce 229 00:13:35,640 --> 00:13:43,700 podobné veci tu - bo8dal3ct a tak ďalej - je to naozaj veľký alfanumerický reťazec 230 00:13:43,700 --> 00:13:47,050 to je naozaj len chcel byť jedinečný identifikátor pre vás. 231 00:13:47,050 --> 00:13:49,790 Alebo si môžete myslieť na to, ako akýsi virtuálny ruky pečiatka. 232 00:13:49,790 --> 00:13:53,020 Ak pôjdete do nejakej klubu, alebo zábavný park, na pamäti, že ste skutočne zaplatená 233 00:13:53,020 --> 00:13:55,850 a preč, dali malý červený štítok na ruke nejakého druhu, 234 00:13:55,850 --> 00:13:59,270 a že pripomína ľuďom na prepážke, že ste už zaplatené 235 00:13:59,270 --> 00:14:01,340 a môžete prísť a odísť, ako je libo. 236 00:14:01,340 --> 00:14:04,250 Cookies sú trochu podobné v duchu na to. 237 00:14:04,250 --> 00:14:08,070 Prvýkrát som navštívil túto stránku, ako som to urobil po odstránení mojej cache, 238 00:14:08,070 --> 00:14:11,620 webový server, prístroj v tomto prípade, dať pečiatku na ruky 239 00:14:11,620 --> 00:14:15,030 ktorého meno je PHPSESSID, session ID, 240 00:14:15,030 --> 00:14:18,260 ktorého hodnota je to naozaj dlhý alfanumerický reťazec. 241 00:14:18,260 --> 00:14:22,470 >> Takže to je teraz trochu nápisom na mojej strane, takže nabudúce som narazil iný 242 00:14:22,470 --> 00:14:25,230 alebo ručne navštívte túto adresu URL v prehliadači, 243 00:14:25,230 --> 00:14:29,230 môj prehliadač z definície HTTP predstaví ručné pečiatka 244 00:14:29,230 --> 00:14:31,940 znovu a znovu a znovu. 245 00:14:31,940 --> 00:14:34,550 Takže aj keď je server nemusí nutne vedieť, kto som, 246 00:14:34,550 --> 00:14:39,610 sa aspoň vedieť, že som rovnaký užívateľ alebo aspoň konkrétnejšie, rovnaký prehliadač. 247 00:14:39,610 --> 00:14:45,660 A tak to je v konečnom dôsledku, ako je implementovaná SESSION superglobal. 248 00:14:45,660 --> 00:14:51,200 Tento server nemá tušenie, kto ste, keď ste prehodnotili webové stránky pre druhej alebo tretej čas 249 00:14:51,200 --> 00:14:53,410 ak predložíte tento ručné pečiatka. 250 00:14:53,410 --> 00:14:55,530 A akonáhle si predstaviť, že ručné pečiatka, 251 00:14:55,530 --> 00:14:59,370 webový server v podstate ide do malej databázy vlastné 252 00:14:59,370 --> 00:15:06,040 a kontroly, v poriadku, ja som práve videl ručné pečiatka užívateľského bo8dal3ct a tak ďalej. 253 00:15:06,040 --> 00:15:09,850 Pozriem sa, aké informácie programátor uložená 254 00:15:09,850 --> 00:15:12,380 vnútri superglobal o tomto užívateľa, 255 00:15:12,380 --> 00:15:17,000 a potom ma uistiť, že tieto údaje sú opäť vo vnútri SESSION superglobal 256 00:15:17,000 --> 00:15:19,830 tak, že programátor môže znovu prístup k dátam 257 00:15:19,830 --> 00:15:23,360 aj keď to bolo nastavené niekoľko minút alebo hodín pred. 258 00:15:23,360 --> 00:15:26,150 Takže inými slovami, sušienky, ktoré dostal zlý rap na nejakú dobu 259 00:15:26,150 --> 00:15:29,990 z dôvodu neistoty v prehliadačoch a je naozaj možné porušovať naše súkromie a to všetko, 260 00:15:29,990 --> 00:15:31,900 oni vlastne majú skvelý nástroj, pretože bez nich 261 00:15:31,900 --> 00:15:36,110 by ste byť neustále prihlásenie do každej stránky, ktorú navštívite Facebook 262 00:15:36,110 --> 00:15:40,680 alebo každý Gmail e-mail prečítať, ak prehliadač nemá nejaký spôsob, ako si pamätať 263 00:15:40,680 --> 00:15:43,320 že ste už bol overený. 264 00:15:43,320 --> 00:15:46,640 >> Takže týmto spôsobom sa súbory cookie poslaný späť a ďalej cez drôt. 265 00:15:46,640 --> 00:15:52,470 Ďalšie zvedavosť sušienky, najmä tu, je to, že je to úplne v podobe obyčajného textu. 266 00:15:52,470 --> 00:15:54,930 Nie je šifrovanie deje vôbec, 267 00:15:54,930 --> 00:15:57,240 a naozaj som pomocou HTTP v túto chvíľu. 268 00:15:57,240 --> 00:16:00,890 Jeden z našich obľúbených momentov vo CS50, ktorý je teraz pred 2 rokmi, 269 00:16:00,890 --> 00:16:04,750 bol v čase okolo nástroj s názvom Firesheep vyšiel. 270 00:16:04,750 --> 00:16:08,320 To bol voľný kus softvér, ktorý bol vyrobený bezpečnostné výskumník 271 00:16:08,320 --> 00:16:13,250 ako budíček pre komunitu povedať, ako otrasne vykonávaná 272 00:16:13,250 --> 00:16:17,900 niektoré autentizačné mechanizmy na webe boli. 273 00:16:17,900 --> 00:16:22,880 Takže na nejakú dobu, Facebook bol takmer úplne cez HTTP, HTTPS nie. 274 00:16:22,880 --> 00:16:25,640 A aj keď nemáte tušenie, ako crypto pracuje, S je zabezpečený 275 00:16:25,640 --> 00:16:27,950 tak to znamená, že je aspoň nejaký šifrovanie zapojené. 276 00:16:27,950 --> 00:16:30,610 Facebook sa používa na zašifrovanie používateľské mená a heslá, 277 00:16:30,610 --> 00:16:33,560 ale akonáhle sa pozrel na svoje tropí alebo vaše správy alebo vaše správy krmivo, 278 00:16:33,560 --> 00:16:35,360 to všetko bolo nešifrované. 279 00:16:35,360 --> 00:16:37,870 Tak bol Gmail, kým len rok alebo 2 pred. 280 00:16:37,870 --> 00:16:41,100 Kedykoľvek ste prihlásení, áno, oni používajú bezpečné šifrovanie, 281 00:16:41,100 --> 00:16:44,300 ale potom, že nie. A prečo by to mohlo byť? 282 00:16:44,300 --> 00:16:49,210 Prečo nie len používať kryptografiu po celú dobu v prípadoch použitia, ako je tento? 283 00:16:49,210 --> 00:16:53,700 Čo je to? Myslím, že som niečo počul. [Študent] Speed. 284 00:16:53,700 --> 00:16:56,250 Rýchlosť, nie? Existujú spôsoby, ako vyriešiť tento problém. 285 00:16:56,250 --> 00:16:59,610 Ale ak si to jednoducho o tom premýšľať logicky, ak zašifrovať niečo, 286 00:16:59,610 --> 00:17:01,820 čo musíte urobiť, aspoň trochu viac práce. 287 00:17:01,820 --> 00:17:05,460 V PSet 2, keď ste zaviedli Caesara alebo Vigenère alebo dokonca Crack, 288 00:17:05,460 --> 00:17:07,760 iba tlač reťazec je pomerne jednoduché. 289 00:17:07,760 --> 00:17:12,040 Šifrovanie a potom tlač reťazec minimálne vyžaduje trochu viac práce. 290 00:17:12,040 --> 00:17:14,520 >>  Za super populárne webové stránky, ako Google a Facebook, 291 00:17:14,520 --> 00:17:18,839 Ak máte urobiť viac práce pre každého užívateľa pre každú jednotlivú webové stránky, ktoré navštívite, 292 00:17:18,839 --> 00:17:20,520 že jednoducho trvá viac procesorového času. 293 00:17:20,520 --> 00:17:22,920 A ak potrebujete viac času procesora, možno budete potrebovať ďalšie servery, 294 00:17:22,920 --> 00:17:24,270 čo znamená, že budete potrebovať viac peňazí. 295 00:17:24,270 --> 00:17:27,579 A tak na mnoho rokov to jednoducho naozaj nie je najlepšia prax. 296 00:17:27,579 --> 00:17:31,440 Ľudia by používať šifrovanie SSL iba vtedy, keď potreboval. 297 00:17:31,440 --> 00:17:34,960 Ale dopadlo to, a ako tento chlapík s Firesheep z super clear, 298 00:17:34,960 --> 00:17:37,920 Keď sa chlapci, ktorí sú v súčasnej dobe na Facebooku teraz - 299 00:17:37,920 --> 00:17:39,880 Zo zvedavosti, uvidíme, či budete Priznáme sa. 300 00:17:39,880 --> 00:17:42,620 Ak ste na Facebooku teraz v niektorých karte, aj keď to nie je na popredí, 301 00:17:42,620 --> 00:17:46,610 je vaša URL HTTP alebo HTTPS? 302 00:17:46,610 --> 00:17:50,560 [Viac] Študenti S. S? [Smiech] 303 00:17:50,560 --> 00:17:55,510 Dobre. Akékoľvek HTTP? Len 1? Dobre. 304 00:17:55,510 --> 00:17:58,940 Takže každý z nás môže zaseknúť ten chlap je Facebook účtu práve teraz. 305 00:17:58,940 --> 00:18:04,100 Z veľkej časti sa to stalo v predvolenom nastavení zapnutá, aspoň v niektorých internetových stránkach. 306 00:18:04,100 --> 00:18:08,120 A dlhý príbeh krátky, ak váš webový prevádzka nie je šifrovaná, 307 00:18:08,120 --> 00:18:12,960 Nielen, že HTML ísť tam a späť cez WiFis nešifrované, 308 00:18:12,960 --> 00:18:16,760 takže veci ako cookies, choďte tam a späť po celom vzduchu 309 00:18:16,760 --> 00:18:18,940 bez akejkoľvek formy šifrovania. 310 00:18:18,940 --> 00:18:23,540 Takže ak máte len trochu programovanie znalosťami alebo urobiť niečo Googling zručností 311 00:18:23,540 --> 00:18:27,410 nájsť voľné softvér, ktorý to robí, všetko, čo musíte urobiť, je sedieť v Starbucks 312 00:18:27,410 --> 00:18:30,680 alebo sedieť na letisku, kde je všeobecne nešifrované WiFi 313 00:18:30,680 --> 00:18:36,070 a len sledovať kľúčové slová, ako Set-Cookie: PHPSESSID alebo 314 00:18:36,070 --> 00:18:39,300 pretože ak máte technický pútavé len pozerať WiFi 315 00:18:39,300 --> 00:18:43,010 pre všetky bity, ktoré prúdi v celom vzduchu pre tento vzorku, 316 00:18:43,010 --> 00:18:50,840 potom môžete povedať, že ten chlap je PHPSESSID sa stane, že bo8dal a tak ďalej. 317 00:18:50,840 --> 00:18:53,890 A potom znova, ak ste dostatočne technicky zdatných, alebo majú ten správny nástroj, 318 00:18:53,890 --> 00:18:58,890 potom môžete len prekonfigurovať svoj prehliadač, kto prezentáciu, aby príručná pečiatka 319 00:18:58,890 --> 00:19:05,030 na Facebook.com, a Facebook je len tak predpokladať, že ste ten chlap 320 00:19:05,030 --> 00:19:09,880 pretože všetko, čo viem, je, nie je, kto ste, ale že máte tento jedinečný identifikátor. 321 00:19:09,880 --> 00:19:14,650 Takže ak budete kradnúť, že jedinečný identifikátor a predložiť ho na webový server, ako vaše vlastné, 322 00:19:14,650 --> 00:19:16,860 že sa práve chystá ukázať vám, že osoby noviniek 323 00:19:16,860 --> 00:19:18,980 alebo taká osoba tieto správy alebo tropí. 324 00:19:18,980 --> 00:19:23,190 >> A ja by som Google teraz, ako aktivovať HTTPS pre Facebook možná. 325 00:19:23,190 --> 00:19:25,150 Ale je to naozaj tak jednoduché. 326 00:19:25,150 --> 00:19:27,660 A tak Facebook a Google a podobné dostali naozaj dobrý na to, 327 00:19:27,660 --> 00:19:31,870 ale dávať pozor o to viac pre všetky webové stránky, ktoré navštívite, ktoré nepoužívajú protokol HTTP 328 00:19:31,870 --> 00:19:35,020 a mať nejakú citlivých informácií o nich, 329 00:19:35,020 --> 00:19:37,490 či už je to finančné alebo osobné alebo podobne. 330 00:19:37,490 --> 00:19:43,180 Ak sa nie ste použitie tohto nástroja môžete dosť možno cookie páči to byť veľmi ľahko ukradnutá 331 00:19:43,180 --> 00:19:46,270 a potom sa prepracovali, a to je presne to, čo Firesheep urobil. 332 00:19:46,270 --> 00:19:48,250 Nemusel si byť programátor. 333 00:19:48,250 --> 00:19:51,680 Všetko, čo musel urobiť, bolo sa pripojenie k internetu, stiahnuť bezplatný nástroj, 334 00:19:51,680 --> 00:19:56,490 a čo to urobí, je prihlásenie sa a potom by to ukážem Facebook názvy 335 00:19:56,490 --> 00:20:00,170 zo dňa všetci Sanders, v tomto konkrétnom demonštrácie, okolo vás 336 00:20:00,170 --> 00:20:03,260 a všetko, čo musel urobiť, bolo kliknite na meno a softvér automatizovaný proces 337 00:20:03,260 --> 00:20:05,970 z šnupanie, že cookie a predložila ju Facebooku ako svoje vlastné, 338 00:20:05,970 --> 00:20:07,990 a voila, ste prihlásený 339 00:20:07,990 --> 00:20:11,190 Tak toto je ďalší z tých "nerob to" oficiálne. 340 00:20:11,190 --> 00:20:14,660 Ak máte vlastnú domácu sieť a chcete pohrať, všetkými prostriedkami, 341 00:20:14,660 --> 00:20:17,530 ale uvedomte si, to robí cez čiaru na univerzitnom prostredí. 342 00:20:17,530 --> 00:20:20,030 >> Ale cieľom je tu naozaj zdôrazniť to, ako to urobiť 343 00:20:20,030 --> 00:20:22,320 ale ako sa brániť proti týmto druhom vecí. 344 00:20:22,320 --> 00:20:26,180 A triviálne riešenie tu, aj keď to samo o sebe je chybný, 345 00:20:26,180 --> 00:20:31,360 je naozaj znížiť používanie iných stránok, ktoré nie sú pomocou HTTPS neustále. 346 00:20:31,360 --> 00:20:34,520 Takže lokalít, ako je Facebook a Google majú stále políčka 347 00:20:34,520 --> 00:20:36,200 kde sa môžete prihlásiť do takéto veci, 348 00:20:36,200 --> 00:20:40,000 a mali banky rokov sa o to z podobných dôvodov. 349 00:20:40,000 --> 00:20:43,580 Takže len tak trochu strach faktorom, ak môžeme. Ale to je to v kocke. 350 00:20:43,580 --> 00:20:46,420 To je, ako server, pamätá, kto ste. 351 00:20:46,420 --> 00:20:50,760 A akonáhle si spomenúť, kto ste, môžete si spomenúť na niečo o vás 352 00:20:50,760 --> 00:20:56,140 že programátor má uložené vo vnútri tohto osobitného superglobal názvom $ _SESSION. 353 00:20:56,140 --> 00:20:59,750 A pre PSet 7 sme používať triviálne len pamätať si int, 354 00:20:59,750 --> 00:21:02,260 totiž jedinečné ID užívateľa, ktorý sa prihlásil, 355 00:21:02,260 --> 00:21:05,880 takže vieme, že som tam bol predtým. 356 00:21:05,880 --> 00:21:12,450 Akékoľvek otázky potom na zasadnutí alebo sušienky alebo ako? 357 00:21:12,450 --> 00:21:15,130 Firesheep nefunguje tak dobre už, 358 00:21:15,130 --> 00:21:18,310 a vy budete musieť dať počítač do osobitného promiskuitním režimu 359 00:21:18,310 --> 00:21:20,700 takže ste vlastne počúvate za prevádzku vedľa seba. 360 00:21:20,700 --> 00:21:23,940 Takže ak ste v súčasnej dobe sťahovania Firesheep, uvedomiť, že to nie je zas až tak jednoduché 361 00:21:23,940 --> 00:21:26,850 ako to kedysi bolo dokázať. 362 00:21:26,850 --> 00:21:29,070 Dobrá. A nerobia to v Sandersa. To urobiť doma. 363 00:21:29,070 --> 00:21:30,890 Databáza. 364 00:21:30,890 --> 00:21:33,580 Jedna z vecí, ktoré sme urobili v PSet 7 veľmi uvážene 365 00:21:33,580 --> 00:21:37,780 bola by sme vám ukážkovú databázu tabuľku pre užívateľa, ktorý má niektoré užívateľské ID, 366 00:21:37,780 --> 00:21:41,020 Niektoré používateľské mená, a niektoré zašifrované heslá v ňom. 367 00:21:41,020 --> 00:21:44,520 A ako uvidíte, ak ste tak už neurobili, budete musieť zmeniť v tabuľke trochu. 368 00:21:44,520 --> 00:21:47,710 Budeš musieť pridať nejaké cache každého užívateľa v tejto tabuľke, 369 00:21:47,710 --> 00:21:51,130 a budete musieť pridať ďalšie tabuľky histórie, portfólia stôl, 370 00:21:51,130 --> 00:21:53,310 alebo snáď hovoriť niečo iné. 371 00:21:53,310 --> 00:21:56,740 Ale pokiaľ ide o premýšľanie o tom, ako to urobiť, poďme otvoriť tento nástroj 372 00:21:56,740 --> 00:22:00,570 ktoré sme použili v piatok, ale ak neznáme, prístroj je dodávaný s nástrojom 373 00:22:00,570 --> 00:22:04,680 tzv phpMyAdmin, ktorý je zhodou okolností napísaný v PHP, 374 00:22:04,680 --> 00:22:07,950 ale jeho účel v živote, čo som sa prihlásiť tu jharvard s karmínovej, 375 00:22:07,950 --> 00:22:15,160 je mi užívateľsky prívetivý spôsob prezerania a zmeniť svoj databáze. 376 00:22:15,160 --> 00:22:18,040 >> Databáza, ktorá Bežím na zariadenie sa nazýva MySQL. 377 00:22:18,040 --> 00:22:23,420 To je veľmi populárny, a to je slobodný open source databázy, ktorá je nádherne jednoduché použitie, 378 00:22:23,420 --> 00:22:25,620 najmä s predným končí takto. 379 00:22:25,620 --> 00:22:29,350 Čo tento nástroj umožňuje, aby som to urobil, napríklad, je poke okolo stola. 380 00:22:29,350 --> 00:22:30,890 Nechaj ma ísť ďalej a robiť to. 381 00:22:30,890 --> 00:22:36,580 V piatok sme vytvorili tabuľku s názvom Študenti, ktorí bolo super jednoduchý. 382 00:22:36,580 --> 00:22:41,680 Mal 3 stĺpce - id, meno, e-maily a - a ja ručne vložil pár riadkov 383 00:22:41,680 --> 00:22:44,420 ako David a Mike v tomto konkrétnom prípade. 384 00:22:44,420 --> 00:22:47,290 Poďme si to trochu ďalej, a predpokladajme, že chceme pamätať viac 385 00:22:47,290 --> 00:22:49,660 než len meno a e-mail o užívateľovi. 386 00:22:49,660 --> 00:22:53,090 Dovoľte mi, aby som kliknite štruktúra tu hore. 387 00:22:53,090 --> 00:22:55,440 A opäť, Pset vás prevedie potrebnými krokmi tu, 388 00:22:55,440 --> 00:22:58,150 takže sa nemusíte obávať, ak niečo z toho je trochu rýchle. 389 00:22:58,150 --> 00:22:59,690 Potom budem kliknite na tu. 390 00:22:59,690 --> 00:23:02,270 Chystám sa pridať nejaké počet stĺpcov po e-mailu 391 00:23:02,270 --> 00:23:04,130 pretože chcem pridať niečo ako dom. 392 00:23:04,130 --> 00:23:06,640 Zabudol som nahrávať študenta domu. 393 00:23:06,640 --> 00:23:11,400 Dovoľte mi, aby som kliknite na tlačidlo Prejsť, a teraz máme tento formulár, ktorý bohužiaľ je trochu zoširoka zľava doprava, 394 00:23:11,400 --> 00:23:13,710 ale budem volať názov tohto poľa domu, 395 00:23:13,710 --> 00:23:16,050 a potom typu I teraz vybrať. 396 00:23:16,050 --> 00:23:18,870 Takže poďme sa stručne prehovoriť o rôznych typoch v MySQL 397 00:23:18,870 --> 00:23:24,590 pretože vzhľadom k tomu, PHP je slabo typovanie a tak nejako hrá veľmi jednoduché a voľné s typmi, 398 00:23:24,590 --> 00:23:29,430 v databáze, najmä, že je to super dôležité, aby skutočne používať písanie vo svoj prospech 399 00:23:29,430 --> 00:23:33,260 pretože jedna z vecí, MySQL a ďalšie databázy motorov môže urobiť pre vás 400 00:23:33,260 --> 00:23:37,910 je zabezpečiť, aby nechcete dať falošné údaje do databázy. 401 00:23:37,910 --> 00:23:41,850 To je akási voľná kontroly chýb k dispozícii. 402 00:23:41,850 --> 00:23:46,250 >> Pre domu sme samozrejme nechceme, aby to bolo int, čo je 32-bitová hodnota v MySQL. 403 00:23:46,250 --> 00:23:49,810 Urobili sme krátko pohovoril v piatok o varchar, čo je skratka pre premenlivou dĺžkou char. 404 00:23:49,810 --> 00:23:54,720 Čo je to? To vám umožní určiť, že chcete to byť reťazec nejakého druhu. 405 00:23:54,720 --> 00:23:56,840 Nemáte naozaj vedeli vopred, ako dlho to je, 406 00:23:56,840 --> 00:24:00,100 takže budeme ľubovoľne povedať, dom Názov môže mať 255 znakov, 407 00:24:00,100 --> 00:24:04,190 ale mohli ste ísť s 32, 64 - ľubovoľný počet skutočne. 408 00:24:04,190 --> 00:24:10,700 Ale výhodou použitia varchar cez pole s názvom char je to, čo? 409 00:24:10,700 --> 00:24:15,110 Len intuitívne, keď prejdite sem, zistíte, že je to char a tam je varchar. 410 00:24:15,110 --> 00:24:19,520 Varchar je premenná dĺžka char; char je pevnej dĺžky char. 411 00:24:19,520 --> 00:24:24,730 Takže len na základe tejto definície, čo je výhoda alebo nevýhoda každej z nich? 412 00:24:24,730 --> 00:24:30,490 Inými slovami, kto sa zaujíma o rozlišovanie, alebo prečo by vám záleží? 413 00:24:31,660 --> 00:24:35,750 >> Jo. [Študent] VARCHAR má väčšiu flexibilitu, ale zaberie viac pamäte. 414 00:24:35,750 --> 00:24:40,730 Dobré. Varchar zaberá viac - Poďme sa pozrieť,. Nie som si istý, či som počul toto právo. 415 00:24:40,730 --> 00:24:42,360 Môžete povedať, že ešte raz? 416 00:24:42,360 --> 00:24:45,850 [Študent] Povedal som varchar má pravdepodobne väčšiu flexibilitu, ale zaberie viac pamäte. 417 00:24:45,850 --> 00:24:51,170 Zaujímavé. Dobre. Varchar pravdepodobne vám dáva väčšiu flexibilitu, ale zaberie viac pamäte. 418 00:24:51,170 --> 00:24:53,220 Ten nemusí byť nevyhnutne pravda. 419 00:24:53,220 --> 00:24:56,290 Záleží na kontexte, ale poďme sa vrátiť k tomu. 420 00:24:56,290 --> 00:25:03,230 >> [Nepočuteľné Študent odpoveď] Presne tak. 421 00:25:03,230 --> 00:25:06,900 Je to vlastne prípad, že char bude zvyčajne využívajú viac pamäte 422 00:25:06,900 --> 00:25:10,950 pretože char, rovnako ako v C, je ako reťazec, je to pole znakov. 423 00:25:10,950 --> 00:25:13,690 Takže ak poviete char pole dĺžky 255, 424 00:25:13,690 --> 00:25:16,910 Databáza je doslova bude vám 255 znakov. 425 00:25:16,910 --> 00:25:22,290 A ak dom skončí byť Mather a 6 znakov celkom, 426 00:25:22,290 --> 00:25:25,090 strácate nad 200 znakov. 427 00:25:25,090 --> 00:25:29,640 >> Takže varchar efektívne používa iba toľko znakov, ako je nevyhnutné 428 00:25:29,640 --> 00:25:31,590 až do maximálnej čiastky. 429 00:25:31,590 --> 00:25:35,470 Ale cena, ktorú zaplatíte, je skutočne výkon, potenciálne. 430 00:25:35,470 --> 00:25:39,740 Ak vopred viete, že všetky vaše reťazcov sa bude 8 znakov - 431 00:25:39,740 --> 00:25:43,090 Napríklad predpokladajme, že budete potrebovať hesla dĺžky 8 - 432 00:25:43,090 --> 00:25:47,350 hore použitie char pole na príležitosti, aj keď nie často, 433 00:25:47,350 --> 00:25:51,100 je stanoviť pevnú dĺžku niečo ako heslo 434 00:25:51,100 --> 00:25:53,300 pretože teraz databázy môže byť ešte múdrejší. 435 00:25:53,300 --> 00:25:58,160 Ak sa vie, že každý char pole, každý reťazec v stĺpci je rovnakej dĺžky, 436 00:25:58,160 --> 00:26:00,780 dostanete späť funkciu náhodného prístupu. 437 00:26:00,780 --> 00:26:05,110 Môžete skákať okolo medzi rôznymi znakovými oblastiach v databázovej tabuľke 438 00:26:05,110 --> 00:26:07,940 pretože si v databáze ako riadkoch a stĺpcoch. 439 00:26:07,940 --> 00:26:11,670 Takže ak každý z reťazcov je rovnakej dĺžky, 440 00:26:11,670 --> 00:26:17,820 viete, že prvý z nich je na bajtu 0, ďalší je na bajtu 8 441 00:26:17,820 --> 00:26:20,240 a potom 16 a potom 24 a tak ďalej. 442 00:26:20,240 --> 00:26:24,500 Takže ak sú všetky reťazce sú rovnakej dĺžky, môžete skákať okolo oveľa efektívnejšie. 443 00:26:24,500 --> 00:26:26,710 Tak, že môže byť výhodou, pokiaľ ide o výkon, 444 00:26:26,710 --> 00:26:29,420 ale obvykle nemáte luxus vie vopred, 445 00:26:29,420 --> 00:26:32,170 takže varchar je spôsob, ako ísť. 446 00:26:32,170 --> 00:26:36,030 Tu je ďalší detail, že aj Facebook bežal do nakoniec. 447 00:26:36,030 --> 00:26:39,670 Ints sú skvelé, a sme trochu používať ich v predvolenom nastavení kedykoľvek chceme číslo, 448 00:26:39,670 --> 00:26:41,750 ale je to len 32 bitov. 449 00:26:41,750 --> 00:26:46,210 >> A aj keď Facebook nie je úplne mať 4000000000 užívateľov teraz, 450 00:26:46,210 --> 00:26:48,680 tam určite niektorí ľudia tam vonku s viacerými účtami 451 00:26:48,680 --> 00:26:50,960 alebo účty, ktoré boli otvorené, a potom zavrela, 452 00:26:50,960 --> 00:26:55,130 a tak Facebook sám som presvedčený, že pred niekoľkými rokmi musela prechodu z int 453 00:26:55,130 --> 00:27:00,010 na, ako je výstižne nazýva, bigint, ktorá je len 64 bitov miesto. 454 00:27:00,010 --> 00:27:02,230 Takže aj to je konštrukčná rozhodnutia. 455 00:27:02,230 --> 00:27:06,570 Tie by sa úžasne šťastie, keď vaše posledný projekt zmení startup, 456 00:27:06,570 --> 00:27:10,010 má 4 miliardy 1 užívatelia, dávať alebo brať, 457 00:27:10,010 --> 00:27:13,200 v takom prípade použitia Ints môže byť trochu krátkozraké. 458 00:27:13,200 --> 00:27:16,230 Ale v skutočnosti, váš užívatelia tabuľka je pravdepodobne v poriadku s ints. 459 00:27:16,230 --> 00:27:19,340 Ale na niečo také PSet 7, ako je vaša tabuľky histórie, 460 00:27:19,340 --> 00:27:23,700 môžete mať tisíce, milióny užívateľov, ak sa vyvíjajú do etrade.com. 461 00:27:23,700 --> 00:27:26,020 Takže vzhľadom k tomu, možno nemáte viac ako 4 miliardy užívateľov, 462 00:27:26,020 --> 00:27:30,070 títo užívatelia máte môže mať viac ako 4 miliardy transakcií v priebehu času - 463 00:27:30,070 --> 00:27:33,200 nakupuje a predáva, a veci v ich histórii. 464 00:27:33,200 --> 00:27:38,090 Takže ak si predvídať - opäť sa jedná o správnu problémy majú, ak máte to omnoho údaje - 465 00:27:38,090 --> 00:27:40,920 ak si predvídať dát presahujúcu veľkosť int, 466 00:27:40,920 --> 00:27:47,740 ísť s niečím, ako je bigint je smer nie je dosť často prijatá dizajnérov 467 00:27:47,740 --> 00:27:49,710 pretože ľudia postava, ktorá sa nebude problém, 468 00:27:49,710 --> 00:27:51,930 ale je to tak jednoduché vybrať niečo väčší, než je. 469 00:27:51,930 --> 00:27:55,380 Desatinné sme použili v PSet 7, ktorý stanovuje pevnú presnosť 470 00:27:55,380 --> 00:27:59,840 takže sa môžete vyhnúť problémy týkajúce sa plaváky a dvojlôžkových a reals a podobne. 471 00:27:59,840 --> 00:28:02,440 >> A potom je tu niekoľko ďalších odborov tu. Budeme mávať rukami na ne do istej miery. 472 00:28:02,440 --> 00:28:07,270 Ale dátumy, časy majú predpísaný formát v MySQL, 473 00:28:07,270 --> 00:28:10,830 a výhodou ukladanie dát ako dáta a nie varchars 474 00:28:10,830 --> 00:28:15,730 Znamená to, že databáza je skutočne preformátovať ich do rôznych formátov, 475 00:28:15,730 --> 00:28:18,800 či je formát USA alebo európsky formát alebo ako - však budete chcieť - 476 00:28:18,800 --> 00:28:22,700 omnoho efektívnejšie, ako keby to bol len nejaký obyčajný varchar. 477 00:28:22,700 --> 00:28:25,150 A potom je tu nejaký iný binárne, varbinary, guličky. 478 00:28:25,150 --> 00:28:28,580 Jedná sa o binárne veľké objekty, a môžete tiež ukladať binárne dáta 479 00:28:28,580 --> 00:28:30,750 rovnako ako geometrických dát v databáze. 480 00:28:30,750 --> 00:28:34,350 Ale pre nás budeme zvyčajne záleží ints a varchars a ako. 481 00:28:34,350 --> 00:28:36,230 Poďme dokončiť tento príklad s domom. 482 00:28:36,230 --> 00:28:40,030 Dom Budem ľubovoľne povedať bude 255 znakov. 483 00:28:40,030 --> 00:28:42,850 Potom predvolená hodnota, ktorú mohol urobiť. 484 00:28:42,850 --> 00:28:47,440 Mohli by sme v predvolenom nastavení aby všetci v Mather dome, napríklad. 485 00:28:47,440 --> 00:28:49,710 To je, ako môžeme určiť, že databáza 486 00:28:49,710 --> 00:28:52,460 by mali zabezpečiť, že niekto má vždy hodnotu. Ale nechám to byť. 487 00:28:52,460 --> 00:28:55,270 V skutočnosti, pre ľudí, ktorí žijú mimo kampus, a nie v dome, 488 00:28:55,270 --> 00:28:59,590 možno som vlastne chcete určiť, že východisková hodnota pre dom je NULL, 489 00:28:59,590 --> 00:29:04,890 a potom som potrebné zaškrtnúť a povedzte databázy je to v poriadku, ak užívateľ dom je NULL. 490 00:29:04,890 --> 00:29:07,270 >> Aj v tomto prípade je ďalší obranný mechanizmus môžete zaviesť 491 00:29:07,270 --> 00:29:10,590 takže ani nemusíte dať ju do svojho PHP kódu nutne. 492 00:29:10,590 --> 00:29:14,630 Databáza bude zabezpečené, že veci sú, alebo nie sú NULL. 493 00:29:14,630 --> 00:29:17,310 A potom konečne, Atribúty. 494 00:29:17,310 --> 00:29:18,920 Žiadny z nich sú naozaj dôležité. 495 00:29:18,920 --> 00:29:22,880 Binárne, nesignováno - žiadna z nich sú relevantné pre varchar. 496 00:29:22,880 --> 00:29:24,220 Index. 497 00:29:24,220 --> 00:29:27,320 Vie niekto, alebo si pamätať, alebo majú hádať o tom, čo index 498 00:29:27,320 --> 00:29:29,510 niečo ako dom? 499 00:29:29,510 --> 00:29:35,240 Aj to je vlastne dôležité a pomerne ľahko konštrukčné rozhodnutia. 500 00:29:35,240 --> 00:29:39,200 Pre tých, ktorí ešte nevideli, v piatok sme hovorili krátko o primárnych kľúčov. 501 00:29:39,200 --> 00:29:43,240 V databázovej tabuľky, primárny kľúč je pole alebo stĺpce 502 00:29:43,240 --> 00:29:46,270 , Ktorý jednoznačne identifikuje riadkov v tabuľke. 503 00:29:46,270 --> 00:29:49,150 Takže v aktuálnej tabuľke máme ID, máme mená a e-maily. 504 00:29:49,150 --> 00:29:52,050 Ktorý z nich je najlepším kandidátom byť primárny kľúč, 505 00:29:52,050 --> 00:29:55,810 ktorého úlohou je jednoznačne identifikovať riadky? 506 00:29:55,810 --> 00:29:57,530 Pravdepodobne ID. 507 00:29:57,530 --> 00:29:59,930 Pravdepodobne by sme mohli použiť aj to, čo ak? 508 00:29:59,930 --> 00:30:02,860 Možno by si mohol použiť e-mail, pretože v teórii, že je to jedinečná 509 00:30:02,860 --> 00:30:05,380 ak ľudia zdieľajú e-mailových účtov. 510 00:30:05,380 --> 00:30:09,980 Skutočnosť je však taká, že ak používate číselné ID, ako 1234, 511 00:30:09,980 --> 00:30:14,170 to je len 32 bitov, zatiaľ čo e-mailová adresa môže byť tento mnoho bytov alebo tento mnoho bytov. 512 00:30:14,170 --> 00:30:16,610 Takže pokiaľ ide o účinnosť jednoznačných identifikačných kódov, 513 00:30:16,610 --> 00:30:19,270 to býva dobrým zvykom stačí použiť int 514 00:30:19,270 --> 00:30:23,090 aj keď máte nejaký reťazec kandidáta, ktorý by ste mohli pravdepodobne používať. 515 00:30:23,090 --> 00:30:26,760 >> Pre niečo ako dom, nemalo by to byť primárny kľúč 516 00:30:26,760 --> 00:30:30,770 pretože potom len 1 osoba mohla žiť v Mather a 1 osoba v Currier a podobne. 517 00:30:30,770 --> 00:30:32,790 Rovnako by to nemalo byť jedinečné. 518 00:30:32,790 --> 00:30:37,830 Rozdiel medzi primárnou a unikátny je, že v prípade, že si aktuálne tabuľky 519 00:30:37,830 --> 00:30:42,620 ID by byť primárne, ale e-mail nie je primárne z dôvodu sme práve spomenul - 520 00:30:42,620 --> 00:30:44,740 výkon - ale to by malo byť stále jedinečný. 521 00:30:44,740 --> 00:30:47,200 Takže môžete stále vynútiť jedinečnosť, bez toho by nárok 522 00:30:47,200 --> 00:30:49,520 že je to super dôležité primárne pole. 523 00:30:49,520 --> 00:30:52,610 Ale toto je celkom užitočné: Index. 524 00:30:52,610 --> 00:30:56,180 Ak viete vopred za Vašu záverečného projektu, pre PSet 7, alebo všeobecne, 525 00:30:56,180 --> 00:30:59,480 že toto pole dom sa bude niečo, čo hľadať na pozemku 526 00:30:59,480 --> 00:31:01,910 pomocou select kľúčového slova, alebo niečo iné, 527 00:31:01,910 --> 00:31:05,180 potom môžete preventívne povedať databázy do práce svoje kúzlo 528 00:31:05,180 --> 00:31:10,510 a uistite sa, že vytvorí v pamäti žiadne efektné dátové štruktúry nevyhnutné 529 00:31:10,510 --> 00:31:13,770 urýchlenie vyhľadávanie založené na dome. 530 00:31:13,770 --> 00:31:17,860 Možno to bude používať hash tabuľku, možno to bude používať prepojeného zoznamu. 531 00:31:17,860 --> 00:31:21,260 V skutočnosti, to inklinuje používať strom, často štruktúra sa nazýva B-strom - 532 00:31:21,260 --> 00:31:24,090 nie je binárne strom, ale B-strom - čo je veľmi široký strom 533 00:31:24,090 --> 00:31:27,370 ktoré ste mohli vidieť v triede, ako CS124, dátové štruktúry triedy. 534 00:31:27,370 --> 00:31:31,800 Ale v krátkej, nemusíte sa báť, že pri použití inteligentný databázového softvéru. 535 00:31:31,800 --> 00:31:35,890 Stačí si len povedať to, "Index toto pole, takže môžem vyhľadávať na neho efektívnejšie." 536 00:31:35,890 --> 00:31:40,250 >> Ak necháte toto vypnete a pokúsite sa hľadať pre každého v databáze, ktorá žije v Mather, 537 00:31:40,250 --> 00:31:42,710 bude prešla do lineárnej hľadanie. 538 00:31:42,710 --> 00:31:45,360 A ak máš 6000 undergrads všetky žijúce v nejakom dome, 539 00:31:45,360 --> 00:31:47,900 budete prehľadávať celú tabuľku nájsť Matherites, 540 00:31:47,900 --> 00:31:52,190 vzhľadom k tomu, keď poviete Index, dúfajme, že to bude niečo podobné na logaritmickej vyhľadávania 541 00:31:52,190 --> 00:31:54,510 nájsť tie druhy študentov. 542 00:31:54,510 --> 00:31:56,750 To je len funkcionalita zadarmo zapnúť, 543 00:31:56,750 --> 00:31:59,530 aj keď to príde za cenu nejakého množstvo priestoru. 544 00:31:59,530 --> 00:32:02,690 Konečne, auto-increment, toto pole AI, 545 00:32:02,690 --> 00:32:05,830 ktorý len znamená, že ak je to int, a nechcete sa starať, aby zvýšiť sami 546 00:32:05,830 --> 00:32:07,570 zakaždým, keď je nový užívateľ, skontrolujte, či, 547 00:32:07,570 --> 00:32:11,910 a každý užívateľ, ktorý sa vkladá automaticky získa nové ID. 548 00:32:11,910 --> 00:32:15,620 Poďme kliknite na tlačidlo Uložiť, a teraz poďme nájsť chybu s týmto dizajnom. 549 00:32:15,620 --> 00:32:20,200 Ak by som ísť do Prehľadávať, upozornenie, že ako Mike a môj dom je NULL. 550 00:32:20,200 --> 00:32:22,420 Môžem použiť phpMyAdmin editovať ručne. 551 00:32:22,420 --> 00:32:25,110 Môžem ísť sem a zadajte Mather a stlačte Enter, 552 00:32:25,110 --> 00:32:27,740 a teraz všimnete tabuľky sa líšia. 553 00:32:27,740 --> 00:32:29,270 Ale nevšimol som mohol robiť niečo iné rovnako. 554 00:32:29,270 --> 00:32:33,530 Davidova ID je 1, takže phpMyAdmin je opäť len administratívne nástroj; 555 00:32:33,530 --> 00:32:35,970 to nie je niečo, čo vaši užívatelia vôbec bude vidieť. 556 00:32:35,970 --> 00:32:38,810 Takže keď som namiesto toho kliknite na karte SQL up hornej - 557 00:32:38,810 --> 00:32:41,450 a znova, bude Pset 7 predstaví vám viac z týchto otázok - 558 00:32:41,450 --> 00:32:45,260 Môžem ručne spustiť SQL Structured Query Language príkaz 559 00:32:45,260 --> 00:32:56,410 UPDATE užívatelia SET dom = 'PfoHo' WHERE id = 1. 560 00:32:56,410 --> 00:33:00,830 Tieto SQL dotazy sú pekne dosť, dosť čitateľné zľava doprava. 561 00:33:00,830 --> 00:33:04,350 Aktualizácia tabuľky užívateľov, nastavte pole s názvom dom PfoHo 562 00:33:04,350 --> 00:33:06,830 kde ID užívateľa je 1. 563 00:33:06,830 --> 00:33:11,480 Alebo by som mohol urobiť aj kde email = 'malan@harvard.edu'. 564 00:33:11,480 --> 00:33:14,860 Tak dlho, ako ktorý jednoznačne identifikuje ma, to by mohlo fungovať rovnako. 565 00:33:14,860 --> 00:33:18,810 Ale ID inklinuje byť vyšší výkon, tak sa poďme urobiť. 566 00:33:18,810 --> 00:33:22,950 Poďme kliknite na tlačidlo Prejsť. Dobre, lecture.users neexistuje. Aký je môj chyba? 567 00:33:22,950 --> 00:33:26,220 Čo je to vlastne tabuľka tu nazývajú? 568 00:33:26,220 --> 00:33:28,770 Hovorí sa študenti len preto, že je to to, čo sme urobili tu vľavo hore. 569 00:33:28,770 --> 00:33:31,860 Hovorí sa tomu študenti, nie užívateľov. Takže kliknite na tlačidlo Prejsť teraz. 570 00:33:31,860 --> 00:33:34,330 1 riadok ovplyvnené. Otázka trvalo 0.01 sekúnd. 571 00:33:34,330 --> 00:33:38,010 Keby som kliknite na tlačidlo Prehľadávať teraz, teraz Malan žije v PfoHo. 572 00:33:38,010 --> 00:33:42,070 Takže to je ďalší chuť SQL, ale Pset vás prevedie trochu viac. 573 00:33:42,070 --> 00:33:44,710 >> Tam je hlúpa rozhodnutie, ktoré som už robil tu. 574 00:33:44,710 --> 00:33:47,820 Povedal by som, že táto databáza dizajn je neefektívne 575 00:33:47,820 --> 00:33:51,650 pretože čím viac ľudí, ktoré som pridať do tabuľky Študenti, 576 00:33:51,650 --> 00:33:54,730 viac z nás začnem pridávať, viac TFS som začať pridávať, 577 00:33:54,730 --> 00:33:58,320 budeme začať vidieť, čo prepúšťanie v tejto tabuľke? 578 00:34:00,840 --> 00:34:06,020 >> Jo. [Študent] Keď videl, že je to u študentov, sme použili rovnaký [nepočuteľné] 579 00:34:06,020 --> 00:34:07,360 Rovnaký - Right, presne. 580 00:34:07,360 --> 00:34:10,400 Takže ak 400 ľudí žije v Mather, dávať alebo brať, 581 00:34:10,400 --> 00:34:15,000 nakoniec táto tabuľka bude mať 400 riadky, ktoré hovoria, že "Mather," "Mather," 582 00:34:15,000 --> 00:34:16,590 "Mather," "Mather," "Mather." 583 00:34:16,590 --> 00:34:19,820 Strácame všetkých týchto bytov, a je tu pár takeaways tam. 584 00:34:19,820 --> 00:34:23,080 1, je tu šialený kútik prípad, kedy ak niekto zaplatí veľa peňazí 585 00:34:23,080 --> 00:34:25,949 a premenuje Mather, teraz musíme zmeniť celý náš databázovej tabuľky. 586 00:34:25,949 --> 00:34:29,730 To sa to nestane často, hoci PfoHo bolo raz nazvané North dom pred 15 rokmi, 587 00:34:29,730 --> 00:34:32,310 tak sa to stane. Ale to nie je všetko, že presvedčivé. 588 00:34:32,310 --> 00:34:36,000 Presvedčivejšie než rohovú prípade, ako je to potrebujú aktualizovať dáta vo veľkom 589 00:34:36,000 --> 00:34:41,150 pre databázu je dôvod, prečo ste skladovanie Mather znova a znova a znova a znova? 590 00:34:41,150 --> 00:34:43,020 To je veľa znakov, 6 znakov. 591 00:34:43,020 --> 00:34:45,500 Nemôžeme robiť ešte lepšie, než to, že najmä pre Pforzheimer? 592 00:34:45,500 --> 00:34:48,320 Iste môžeme robiť lepšie, než že mnoho znakov. 593 00:34:48,320 --> 00:34:51,790 Prečo nie len priradiť jedinečný identifikátor s každým domom 594 00:34:51,790 --> 00:34:55,020 a obchod, ktorý pre každého užívateľa? Tak poďme to skúsiť. 595 00:34:55,020 --> 00:35:00,610 Skôr než len používať študenti tabuľku, nechajte ma ísť do mojej prednášky databáze tu vľavo hore. 596 00:35:00,610 --> 00:35:02,600 Všimnite si, že hovorí, že vytvoriť tabuľku. 597 00:35:02,600 --> 00:35:04,550 Dovoľte mi, aby som vytvoriť novú tabuľku s názvom domov. 598 00:35:04,550 --> 00:35:08,880 Počet stĺpcov bude 2. Enter. 599 00:35:08,880 --> 00:35:11,200 Teraz mám 2 polia. 600 00:35:11,200 --> 00:35:14,600 Idem volať toto meno, a to bude varchar dĺžky 255, 601 00:35:14,600 --> 00:35:18,770 >> ale to je docela svojvoľné. Dovoľte mi, aby som to tu konvencií. 602 00:35:18,770 --> 00:35:22,840 Takže dať ID sem. Dajme každý dom jedinečný identifikátor. 603 00:35:22,840 --> 00:35:25,360 Dajme každého domu meno. 604 00:35:25,360 --> 00:35:30,980 Poďme upresniť, že identifikátor bude unsigned len podľa konvencie používať iba kladné čísla. 605 00:35:30,980 --> 00:35:35,020 Poďme ďalej a dať to auto-inkrementace pole pre teraz. 606 00:35:35,020 --> 00:35:38,160 A my potrebujeme niečo iné? 607 00:35:38,160 --> 00:35:41,010 Poďme ďalej a kliknite na tlačidlo Uložiť. 608 00:35:41,010 --> 00:35:42,480 Teraz mám druhú tabuľku. 609 00:35:42,480 --> 00:35:45,860 Všimnite si, ako je stranou to je trochu záhadnej SQL príkaz 610 00:35:45,860 --> 00:35:50,280 že by ste museli zadať ručne, pokiaľ nepoužívate, nástroje pre správu, ako je phpMyAdmin. 611 00:35:50,280 --> 00:35:51,990 Takže ďalší dôvod, prečo je užívame. 612 00:35:51,990 --> 00:35:55,480 Je to nádherne užitočné druh pedagogicky, pretože môžete kliknúť okolo 613 00:35:55,480 --> 00:36:01,050 a zistiť, ako veci fungujú, len o kopírovanie a vkladanie, čo phpMyAdmin urobil. 614 00:36:01,050 --> 00:36:04,150 Ale tabuľka Vytvoriť príkaz je to, čo sa práve vykonaný, a tu je môj stôl. 615 00:36:04,150 --> 00:36:11,370 Nechaj ma ísť napred sa a využívajte surové SQL, skôr ako zjednodušovať kliknutím na kartu Vložiť. 616 00:36:11,370 --> 00:36:15,040 Dovoľte mi, aby som sa INSERT INTO domov, 617 00:36:15,040 --> 00:36:22,230 a ja poviem meno domu bude mať hodnotu "Mather". 618 00:36:22,230 --> 00:36:24,790 To je všetko. Táto syntax je trochu záhadný. 619 00:36:24,790 --> 00:36:26,660 To je názov poľa, ktoré chceme vložiť. 620 00:36:26,660 --> 00:36:30,390 Sú to hodnoty, ktoré chcete vložiť do týchto polí. Dovoľte mi, aby som kliknite na tlačidlo Prejsť. 621 00:36:30,390 --> 00:36:34,410 1 vkladá riadok trvalo 0.02 sekúnd. Dovoľte mi, aby som na tlačidlo Prehľadávať teraz. 622 00:36:34,410 --> 00:36:42,020 >> Všimnite si, keď som kliknite na tlačidlo Prehľadávať, tam je Mather, ktorého ID je prostredníctvom automatizácie číslo 1. 623 00:36:42,020 --> 00:36:45,000 Dovoľte mi, aby som to ešte jednu. Nechaj ma ísť do záložke SQL. 624 00:36:45,000 --> 00:36:52,950 INSERT INTO domov. Názov domu bude mať hodnotu PfoHo a tak ďalej. 625 00:36:52,950 --> 00:36:56,350 Prejsť. A môžem to robiť znova a znova a znova. 626 00:36:56,350 --> 00:36:59,470 Alebo ak ste nudiť pomocou phpMyAdmin, stačí použiť kartu Vložiť 627 00:36:59,470 --> 00:37:01,000 a nebudú sa musieť zadať surového SQL. 628 00:37:01,000 --> 00:37:04,690 Stačí si len buchnúť to rýchlejšie na písacom stroji, napríklad, Currier, Enter, 629 00:37:04,690 --> 00:37:07,610 a teraz, keď sme kliknite na tlačidlo Prehľadávať, tam je Currier s ID 3 rokov. 630 00:37:07,610 --> 00:37:09,920 Tak toto je to, čo máme na mysli auto-prírastku. 631 00:37:09,920 --> 00:37:12,280 Ale teraz musíme niečo spraviť u študentov. 632 00:37:12,280 --> 00:37:16,240 V študenti, čo by dátový typ domu poľa teraz? 633 00:37:16,240 --> 00:37:19,450 Malo by byť int, nie? 634 00:37:19,450 --> 00:37:23,950 Takže cieľom je vytknúť, inak známy ako normalizovať, tabuľky 635 00:37:23,950 --> 00:37:27,940 takže nemáme ukladať informácie redundantne v niektorom z mojich tabuliek. 636 00:37:27,940 --> 00:37:31,130 A opäť, cesta my sme boli na tú sa povedať Mather, Mather, 637 00:37:31,130 --> 00:37:34,220 Mather, Mather, PfoHo, PfoHo, PfoHo, PfoHo, čo je veľmi nadbytočná 638 00:37:34,220 --> 00:37:36,240 pokiaľ ide o plytvanie z znakov. 639 00:37:36,240 --> 00:37:40,820 Tak nechaj ma ísť napred a zmeniť tým, že kliknutím štruktúry, 640 00:37:40,820 --> 00:37:44,620 a nechaj ma ísť napred a zaškrtnúť dom pole, kliknite na tlačidlo Zmeniť, 641 00:37:44,620 --> 00:37:46,990 a teraz budem meniť to byť int. 642 00:37:46,990 --> 00:37:49,490 255 už nie je relevantná. 643 00:37:49,490 --> 00:37:54,010 Nechaj ma ísť ďalej a povedať, že je to v poriadku, ak je to ešte NULL. Uložiť. 644 00:37:54,010 --> 00:37:55,870 Teraz tabuľka študenti bola zmenená úspešne, 645 00:37:55,870 --> 00:37:59,090 a všimnite si, opäť dom je int. 646 00:37:59,090 --> 00:38:02,220 Ako stranou, ignorovať číslo v zátvorkách, pokiaľ ide o ints. 647 00:38:02,220 --> 00:38:03,770 >> To je pre staršie dôvodov. 648 00:38:03,770 --> 00:38:06,920 Späť v deň, kedy ste nemali GUI, môžete namiesto toho musel príkazového riadku prostredie, 649 00:38:06,920 --> 00:38:11,580 na 10 a 11 uvedené koľko znakov ste mal ukázať 650 00:38:11,580 --> 00:38:13,950 v terminálovom okne skutočne zobraziť pole. 651 00:38:13,950 --> 00:38:19,150 To nemá nič spoločné s bitovou dĺžkou skutočného poľa, takže jednoducho budeme ignorovať, že pre túto chvíľu. 652 00:38:19,150 --> 00:38:20,990 Teraz musím ísť do tejto tabuľky. 653 00:38:20,990 --> 00:38:24,610 A ak David žije v Mather, by snemovňa nemala byť 0, 654 00:38:24,610 --> 00:38:27,350 ktorá je predvolená int hodnota najbližšie NULL. 655 00:38:27,350 --> 00:38:29,810 Mal by žiť v dome 1. 656 00:38:29,810 --> 00:38:36,870 Povedzme ľubovoľne povedať, že Mike žije v PfoHo, takže dom číslo 2. 657 00:38:36,870 --> 00:38:40,160 Teraz môj stôl vyzerá trochu záhadný. 658 00:38:40,160 --> 00:38:41,960 Ale zvážiť efektivitu. 659 00:38:41,960 --> 00:38:44,860 Ja som teraz s použitím iba 32 bitov na identifikáciu dom, 660 00:38:44,860 --> 00:38:49,530 čo znamená, že je len 1 kanonické definícia môjho domu Mather a PfoHo 661 00:38:49,530 --> 00:38:52,090 a to v domoch tabuľke. 662 00:38:52,090 --> 00:38:55,880 Takže ak chcem teraz vrátiť tieto tabuľky, myslím, že to týmto spôsobom. 663 00:38:55,880 --> 00:39:01,980 Tu mám študenti stôl, a na pravej strane je tu tieto čísla, 1 a 2. 664 00:39:01,980 --> 00:39:04,180 1 je Mather, 2 je PfoHo. 665 00:39:04,180 --> 00:39:08,580 Máme tie rovnaké čísla v tejto druhej tabuľke, ktorá sa nazýva domov, 666 00:39:08,580 --> 00:39:11,020 1 a 2, a 3 pre tie 3 domy. 667 00:39:11,020 --> 00:39:14,990 Čo teraz chceme urobiť, je mať možnosť v kóde, PHP a SQL, 668 00:39:14,990 --> 00:39:18,800 sa trochu vrátiť tieto tabuľky, kde ak sú študenti, a to sú domy, 669 00:39:18,800 --> 00:39:22,050 chceme nejako skombinovať tak, že 1 línie s 1, 670 00:39:22,050 --> 00:39:25,670 2 riadky s 2, a tak, aby sme mohli zistiť, kde David 671 00:39:25,670 --> 00:39:28,000 a kde Mike a kde všetci ostatní bývajú. 672 00:39:28,000 --> 00:39:31,850 Ak chcete to môžeme spustiť SQL dotaz podobný nasledujúcemu. 673 00:39:31,850 --> 00:39:40,470 SELECT * FROM študenti JOIN domy ON - 674 00:39:40,470 --> 00:39:43,000 A teraz, čo pole chceme pripojiť na? 675 00:39:43,000 --> 00:39:49,520 Takže students.house = houses.id. 676 00:39:49,520 --> 00:39:54,150 >> Trochu záhadné, ale táto časť znamená doslova vytvoriť novú dočasnú tabuľku 677 00:39:54,150 --> 00:39:56,690 to je výsledok spojenie študentov a domy. 678 00:39:56,690 --> 00:40:00,340 A ako sa chcete spojiť špičky mojich prstov tu? 679 00:40:00,340 --> 00:40:05,280 Nastaviť študentov dom poľa rovno domov "číslo poľa. 680 00:40:05,280 --> 00:40:10,220 A keď som teraz kliknite na tlačidlo Prejsť, vrátim presne to, čo som dúfal, že sa. 681 00:40:10,220 --> 00:40:15,890 David je v Mather, Mike je v PfoHo, a vidím aj jedinečné identifikátory. 682 00:40:15,890 --> 00:40:18,640 Ale ide o to, teraz mám kompletnú tabuľku. 683 00:40:18,640 --> 00:40:23,020 A tak takeaway tu pre PSet 7 alebo naozaj pre konečného projektu: 684 00:40:23,020 --> 00:40:25,830 Ak zistíte, že ste ukladanie každý kus informácie redundantne, 685 00:40:25,830 --> 00:40:28,850 či už je to dom, možno je to mesto, štát, a ZIP 686 00:40:28,850 --> 00:40:32,050 kde ZIP zvyčajne, ale nie vždy byť použitý ako jednoznačný identifikátor, 687 00:40:32,050 --> 00:40:35,810 idú cez cvičenia mentálne a potom s niečím, ako je phpMyAdmin 688 00:40:35,810 --> 00:40:40,660 faktoringu, že spoločné dáta, pretože najmä ako vaše webové stránky dostane viac dobre použiť 689 00:40:40,660 --> 00:40:45,440 a viac populárne, je to, ako sa uistiť, že je všetko v super rýchly, 690 00:40:45,440 --> 00:40:51,930 tým, že databáza toľko rád ako na jedinečnosť ako je to možné. 691 00:40:51,930 --> 00:40:53,860 To bolo veľa. 692 00:40:53,860 --> 00:40:59,010 Nejaké otázky? Dobrá. Poďme sa 5-minút prestávku tam a preskupiť. 693 00:41:01,600 --> 00:41:03,540 Dobrá. 694 00:41:03,540 --> 00:41:08,680 Nasleduje príklad, ktorý bol použitý pred niekoľkými rokmi, keď som sa CS161, 695 00:41:08,680 --> 00:41:10,960 ktorý je operačné systémy triedy na koľaji 696 00:41:10,960 --> 00:41:15,160 ktorý je známy pre bytia úžasné, ale šialený množstvo práce, 697 00:41:15,160 --> 00:41:19,810 a zameriava sa naozaj na niektoré low-level problémy, ktoré vznikajú v operačných systémoch 698 00:41:19,810 --> 00:41:22,700 a tiež aj na svete databáz. 699 00:41:22,700 --> 00:41:27,040 >> Príbeh, ktorý bol povedal môj profesor, Margo Seltzer, že rok bol takto. 700 00:41:27,040 --> 00:41:30,990 Predpokladajme, že máte malý fakultných chladnička pre vás a vaše spolubývajúci 701 00:41:30,990 --> 00:41:34,030 a obaja vás naozaj rád mlieko. 702 00:41:34,030 --> 00:41:36,360 Takže si prišiel domov z triedy jeden deň, váš spolubývajúci ešte nie je tam, 703 00:41:36,360 --> 00:41:39,650 otvoríte chladničku, a vy si uvedomíte, "Oh sakra, sme z mlieka." 704 00:41:39,650 --> 00:41:42,070 Takže zatvorte chladničku, idete cez ulicu k CVS 705 00:41:42,070 --> 00:41:45,830 a dostať do stále dlhé fronty na nákup nejaké mlieko v CVS. 706 00:41:45,830 --> 00:41:48,470 Medzitým, váš spolubývajúci príde domov zo svojej triedy, 707 00:41:48,470 --> 00:41:51,690 prichádza do miestnosti, otvorí chladničky naozaj chcú trochu mlieka, 708 00:41:51,690 --> 00:41:54,130 otvorí chladničku a, "Sakra, bez mlieka." 709 00:41:54,130 --> 00:41:57,890 Tak on alebo ona sa zatvorí chladničku, vyjde z dverí, a ide do ABP 710 00:41:57,890 --> 00:42:00,910 alebo niekde inde, ako CVS, kde si nebudete naraziť do seba 711 00:42:00,910 --> 00:42:02,790 ísť trochu mlieka. 712 00:42:02,790 --> 00:42:04,820 Samozrejme o niekoľko minút neskôr, a to ako z vás dostať späť domov 713 00:42:04,820 --> 00:42:07,740 a teraz máte dvakrát toľko mlieka, ako ste vlastne chceli. 714 00:42:07,740 --> 00:42:10,670 A je mlieko, teraz to pôjde zle, pretože sa vám páči mlieko 715 00:42:10,670 --> 00:42:14,200 ale nemám rád mlieko, takže teraz máte príliš veľa mlieka, takže to bude ochladzovať. 716 00:42:14,200 --> 00:42:16,830 To je hrozný, hrozný stav. 717 00:42:16,830 --> 00:42:22,920 Čo by mohlo vyriešiť túto ťažkej situácii, ak ste boli prvý spolubývajúci doma? Áno. 718 00:42:22,920 --> 00:42:25,970 [Študent] Mal si nechal odkaz. [Smiech] 719 00:42:25,970 --> 00:42:28,090 Dobré. Mal si nechal odkaz. 720 00:42:28,090 --> 00:42:32,320 Mal ste dať Post-it poznámku alebo ako hovoriť, "Gone mlieka," 721 00:42:32,320 --> 00:42:36,830 a potom sa váš spolubývajúci koncepčne by bol uzamknutý skutočne robiť to. 722 00:42:36,830 --> 00:42:38,010 Alebo môžete ísť 1 krok ďalej. 723 00:42:38,010 --> 00:42:41,060 Dalo by sa doslova zamknúť chladničku s nejakým visiaci zámok, 724 00:42:41,060 --> 00:42:44,870 a teraz váš spolubývajúci bude doslova pod zámkom z chladničky. 725 00:42:44,870 --> 00:42:48,520 Ak by sme zovšeobecniť späť do programovania, 726 00:42:48,520 --> 00:42:51,610 môžete takmer myslieť na chladničku ako nejakú premennú alebo struct, 727 00:42:51,610 --> 00:42:53,500 nejaký druh nádoby pre informáciu. 728 00:42:53,500 --> 00:42:58,290 Problém zásadne tu je, že obaja z vás bolo umožnené nahliadnuť do 729 00:42:58,290 --> 00:43:02,370 alebo čítať stav tohto dátové štruktúry, 730 00:43:02,370 --> 00:43:08,050 ale považoval to v rôznych časoch, a napriek tomu obaja ste sa rozhodli 731 00:43:08,050 --> 00:43:11,920 v závislosti na stave sveta v týchto rôznych okamihoch v čase. 732 00:43:11,920 --> 00:43:15,570 Takže keby ste zamkli chladničku, by ste aspoň zabrániť svoje spolubývajúci 733 00:43:15,570 --> 00:43:19,070 od mať been schopní skontrolovať stav sveta, 734 00:43:19,070 --> 00:43:22,530 tak on alebo ona nemohla z toho istého rozhodnutia. 735 00:43:22,530 --> 00:43:25,780 Takže databáz, ako sa ukázalo, majú tento problém neustále. 736 00:43:25,780 --> 00:43:31,050 >> Poďme sa pozrieť, či sa nám podarí postaviť scenár. 737 00:43:31,050 --> 00:43:34,310 Predpokladajme, že ste niečo ako zlý človek, a idete do Bank of America 738 00:43:34,310 --> 00:43:37,950 alebo jeden z ďalších miest na námestí, ktoré majú pár bankomatov bok po boku, 739 00:43:37,950 --> 00:43:41,200 a nejako ste prišiel na to, ako duplikovať ATM kartu - nie je všetko tak ťažké. 740 00:43:41,200 --> 00:43:42,730 Je to len magnetický prúžok. 741 00:43:42,730 --> 00:43:45,180 A tak to, čo chcete, aby sa pokúsili urobiť, je hrať túto hru 742 00:43:45,180 --> 00:43:49,060 pričom dáte 1 kartu do 1 stroja, ďalšiu kartu do iného zariadenia, 743 00:43:49,060 --> 00:43:51,980 a vy v podstate chcete skúsiť vybrať peniaze naraz, 744 00:43:51,980 --> 00:43:54,930 pretože si predstaviť, že príbeh je takto. 745 00:43:54,930 --> 00:43:57,350 Stroj na ľavej strane má svoj kartu a PIN, 746 00:43:57,350 --> 00:44:00,240 a potom povedal: "Daj mi 100 dolárov." 747 00:44:00,240 --> 00:44:04,790 ATM je naprogramovaný tak, aby najprv urobiť select vo svojej databáze alebo ekvivalent - 748 00:44:04,790 --> 00:44:10,780 bez ohľadu na databázy je to s použitím - pre zobrazenie to mať používateľ aspoň $ 100 v jeho účtu? 749 00:44:10,780 --> 00:44:16,180 Ak áno, potom vypľujte $ 100 a odpočítame 100 dolárov z ich bilancií. 750 00:44:16,180 --> 00:44:20,470 Ale samozrejme, ak je viac strojov tu alebo viacerými spôsobmi kontroly 751 00:44:20,470 --> 00:44:23,560 stav tohto sveta, bánk vault, vidieť, koľko peňazí máte, 752 00:44:23,560 --> 00:44:26,780 Predpokladám, že len náhodou stroj na ľavej a pravej 753 00:44:26,780 --> 00:44:30,140 ako položiť túto otázku približne v rovnakom okamihu. 754 00:44:30,140 --> 00:44:34,160 >> A to určite stáť. Bankomaty sú počítače v týchto dňoch. 755 00:44:34,160 --> 00:44:37,670 Takže ak stroj na ľavej strane hovorí: "Áno, máte aspoň 100 dolárov," 756 00:44:37,670 --> 00:44:42,150 Medzitým stroj na pravej strane hovorí: "Áno, máte aspoň 100 dolárov," 757 00:44:42,150 --> 00:44:47,420 potom obaja pristúpiť k dokončeniu svoje programy a vlastne vypľúvať 100 dolárov 758 00:44:47,420 --> 00:44:50,820 a hovoria, "Predtým ste museli 200 dolárov." 759 00:44:50,820 --> 00:44:54,890 "Dovoľte mi, aby som aktualizovať premennú teraz 100 dolárov vľavo na účte." 760 00:44:54,890 --> 00:44:58,780 Ale ak obaja majú kontrolovať zostatok na účte a zistil, že je to 200 dolárov 761 00:44:58,780 --> 00:45:02,000 a obaja potom si to spočítajte a povedať 200-100, 762 00:45:02,000 --> 00:45:06,990 stroje majú potenciálne vypľuť na dve $ 100 účty v každom stroji, 763 00:45:06,990 --> 00:45:11,360 ale už len aktualizovali sumu zostatok na účte je 100 dolárov. 764 00:45:11,360 --> 00:45:15,130 Inými slovami, ste vyradené $ 200, ale pretože kontrolované na stav sveta 765 00:45:15,130 --> 00:45:18,840 súčasne a potom sa rozhodli na základe tejto hodnoty, 766 00:45:18,840 --> 00:45:21,930 oni by nemohli robiť matematiku nakoniec správne. 767 00:45:21,930 --> 00:45:25,520 Takže v bankovom situácii príliš si naozaj chcete mať nejaký blokovanie 768 00:45:25,520 --> 00:45:28,450 tak, že akonáhle ste skontrolovali stav niektoré premenné 769 00:45:28,450 --> 00:45:31,220 že je naozaj dôležité, rovnako ako zostatok účtu, 770 00:45:31,220 --> 00:45:36,070 nedovoľte, aby niekto iný rozhodovať sa na základe, že až budete hotoví, robí svoju vec, 771 00:45:36,070 --> 00:45:38,920 kde v tomto prípade sú ATM na ľavej strane. 772 00:45:38,920 --> 00:45:41,160 Lock všetci ostatní von. 773 00:45:41,160 --> 00:45:44,650 Môžete si skutočne dosiahnuť tohto efektu v niekoľkými rôznymi spôsobmi. 774 00:45:44,650 --> 00:45:48,660 >> Najjednoduchší spôsob, ako v MySQL je rad SQL, ktoré sme vám dali 775 00:45:48,660 --> 00:45:52,030 v problému nastavenej špecifikáciu, ktorá vyzerá presne takto. 776 00:45:52,030 --> 00:45:57,420 Vložiť do tabuľky - ako sa to volá - id, symbol, a podiel, počet akcií, 777 00:45:57,420 --> 00:45:59,660 nasledujúce hodnoty, napríklad. 778 00:45:59,660 --> 00:46:03,370 Ak ste nečítali spec ešte, je to príklad na to, ako sa vám ísť o 779 00:46:03,370 --> 00:46:07,340 nákup 10 akcií tohto Penny doručenie prezidenta Skroob, 780 00:46:07,340 --> 00:46:10,340 ktorého ID užívateľa sa stane, že číslo 7? 781 00:46:10,340 --> 00:46:14,070 To hovorí, že INSERT INTO tabuľka nasledujúce id, symbol, a počet akcií 782 00:46:14,070 --> 00:46:18,200 7., "DVN.V", a 10. 783 00:46:18,200 --> 00:46:21,510 Ale - ale, ale, ale - druhý riadok je dôležitý. 784 00:46:21,510 --> 00:46:26,310 ON duplicitné kľúč UPDATE akcií = akcie + VALUES (akcie). 785 00:46:26,310 --> 00:46:28,350 Takže úplne mystická vyzerajúce na prvý pohľad. 786 00:46:28,350 --> 00:46:31,990 Ale fakt, že tento dotaz SQL, aj keď sa zalomia na 2 riadky, 787 00:46:31,990 --> 00:46:35,920 je 1 dlhý dotaz, to znamená, že je atómová 788 00:46:35,920 --> 00:46:41,000 v tom zmysle, že tento dotaz bude buď vykonaný dohromady alebo vôbec nie. 789 00:46:41,000 --> 00:46:45,100 A podľa definície MySQL, to je, ako sa vykonáva tento dotaz. 790 00:46:45,100 --> 00:46:51,010 To je samozrejme v príručke zaručene vykonať všetky naraz, alebo vôbec nie. 791 00:46:51,010 --> 00:46:54,020 Motiváciou pre to je nasledujúce. 792 00:46:54,020 --> 00:46:58,540 Ak v tomto prípade sa snaží kúpiť 10 akcií na sklade, 793 00:46:58,540 --> 00:47:02,260 je to druh rovnakého príbehu ako mlieko, to je druh rovnakého príbehu ako ATM. 794 00:47:02,260 --> 00:47:04,970 >> Ak urobíte chybu, ktorá nie je pomocou tejto syntaxe 795 00:47:04,970 --> 00:47:09,610 ale výber z databázy vidieť, koľko akcií tejto penny zásob 796 00:47:09,610 --> 00:47:13,750 nemá prezident Skroob majú, a predpokladám, že má 10 akcií, 797 00:47:13,750 --> 00:47:19,330 a potom niektoré zlomok sekundy neskôr si potom robiť príkazu UPDATE, 798 00:47:19,330 --> 00:47:24,810 čo je ďalší príkaz v SQL, ktorý hovorí, že ísť dopredu a pridať 10 ďalších akcií 799 00:47:24,810 --> 00:47:28,700 Do svojej súčasnej 10 tak, aby v ideálnom prípade celková je 20, 800 00:47:28,700 --> 00:47:33,490 Problém je, že v dnešných databázových systémov a pretože v dnešných počítačoch 801 00:47:33,490 --> 00:47:35,990 máte viac procesorov, viac jadier - 802 00:47:35,990 --> 00:47:38,920 Inými slovami, môžu počítače doslova robiť viac vecí naraz - 803 00:47:38,920 --> 00:47:44,270 nie je zaručené, že váš SELECT a vaše UPDATE v tomto prípade 804 00:47:44,270 --> 00:47:46,150 Budú sa diať chrbtom k sebe. 805 00:47:46,150 --> 00:47:49,140 Tak zlý scenár by urobíte SELECT 806 00:47:49,140 --> 00:47:51,670 vidieť, koľko akcií tejto populácie penny nemá Skroob majú, 807 00:47:51,670 --> 00:47:54,710 a potom už len náhodou sa vykonáva ďalšie databázový dotaz - 808 00:47:54,710 --> 00:47:57,740 Možno, že jej Skroob v inom okne prehliadača sa snaží kúpiť 10 akcií 809 00:47:57,740 --> 00:48:00,700 v inom okne úplne, podobne ako ATM - 810 00:48:00,700 --> 00:48:05,410 a predpokladám, že ďalšie dotaz dostane medzi SELECT a UPDATE. 811 00:48:05,410 --> 00:48:10,210 To by mohol byť prípad, že Skroob teraz stráca určitý počet akcií 812 00:48:10,210 --> 00:48:14,340 , Pretože iný proces zisťuje stav svojho sveta, 813 00:48:14,340 --> 00:48:17,800 alebo sa dostane viac akcií, ako by mal mať. 814 00:48:17,800 --> 00:48:23,250 Nebudeme zachádzať do podrobností, čo presne tieto konkrétne dejovej línie by byť, 815 00:48:23,250 --> 00:48:28,380 ale ide o to, ak máte ku kontrole premenné hodnoty a potom urobiť rozhodnutie, 816 00:48:28,380 --> 00:48:32,500 v prípade, že je riziko, niekto iný niečo medzi týmito 2 vyhlásenie, 817 00:48:32,500 --> 00:48:36,220 ako je tomu v systémoch s viacerými procesormi, v viacjadrových systémov, 818 00:48:36,220 --> 00:48:41,220 počítače s možnosťou robiť viac vecí naraz, môže zlé veci sa stávajú 819 00:48:41,220 --> 00:48:44,530 ako bankové účty boli odpísané nesprávne, nákup dvakrát toľko mlieka, 820 00:48:44,530 --> 00:48:46,730 alebo v tomto prípade zlý počet podielov. 821 00:48:46,730 --> 00:48:48,370 Ale je tu jednoduchší spôsob, ako premýšľať o tom. 822 00:48:48,370 --> 00:48:53,290 >> Ukazuje sa, že SQL podporuje tiež, ak si nastaviť tabuľku správne, 823 00:48:53,290 --> 00:48:56,920 niečo ako transakcie, ktoré by som si dovolil tvrdiť, je vlastne ešte zrozumiteľnejšie 824 00:48:56,920 --> 00:49:00,650 ako to, ale nie je to 1-liner, takže je to vlastne trochu viac zapojiť. 825 00:49:00,650 --> 00:49:04,960 Tam je doslova vyhlásenie v SQL názvom START TRANSACTION. 826 00:49:04,960 --> 00:49:08,300 Rovnako ako tam SELECT, UPDATE, INSERT, DELETE, a JOIN a veľa ďalších, 827 00:49:08,300 --> 00:49:10,970 tam sú kľúčové slová ako START TRANSAKCIE. 828 00:49:10,970 --> 00:49:13,560 A čo potom robiť v rámci PSet 7 - 829 00:49:13,560 --> 00:49:17,270 nemusíte urobiť pre PSet 7, je to výslovne poprel ako nie je nutné, 830 00:49:17,270 --> 00:49:18,830 ale pre konečné projektov to môže byť užitočné - 831 00:49:18,830 --> 00:49:22,820 Ak zavoláte dotaz na START transakcie a potom ďalšie dotaz 832 00:49:22,820 --> 00:49:25,620 a potom ďalší dotaz a potom ďalšie, ďalšie a ďalšie, 833 00:49:25,620 --> 00:49:31,860 tieto otázky nebude v skutočnosti byť vykonaná, kým nezavoláte SQL príkaz COMMIT, 834 00:49:31,860 --> 00:49:37,220 na ktorom mieste, či už je to 2 vyhlásenie alebo 20 vyhlásenie, budú všetci byť vykonané naraz, 835 00:49:37,220 --> 00:49:42,770 čo znamená, že nikto iný nemôže náhodne kúpiť príliš veľa mlieka alebo debetnej príliš veľa peňazí 836 00:49:42,770 --> 00:49:46,340 alebo kúpiť príliš veľa akcií, pretože všetky vaše otázky bude vykonávať 837 00:49:46,340 --> 00:49:48,410 chrbtom k sebe k sebe dozadu. 838 00:49:48,410 --> 00:49:51,580 A to je super dôležité, zvlášť keď robíte niečo také. 839 00:49:51,580 --> 00:49:54,900 Toto je ľubovoľný príklad, ktorý hovorí, že poďme aktualizovať bankový účet 840 00:49:54,900 --> 00:50:00,200 nastavením vyváženia rovnajúcu sa zostatku - 1000 dolárov, kde číslo účtu je 2. 841 00:50:00,200 --> 00:50:04,260 A potom druhý príkaz je teraz poďme vklad, že 1000 dolárov 842 00:50:04,260 --> 00:50:07,310 do niekoho iného bankový účet, ktorého číslo účtu je 1. 843 00:50:07,310 --> 00:50:10,400 >> Inými slovami, je to dokonalý príklad, kde chcete, aby sa ubezpečil 844 00:50:10,400 --> 00:50:13,590 že obe tieto vyhlásenia stane, alebo vôbec nie 845 00:50:13,590 --> 00:50:15,450 pretože inak zákazník sa chystá priskrutkovaním 846 00:50:15,450 --> 00:50:17,670 a budete mať svoje peniaze a neuloží ju inde, 847 00:50:17,670 --> 00:50:20,470 alebo banka sa chystá priskrutkovať kam sa chystáte uložiť peniaze 848 00:50:20,470 --> 00:50:23,140 ale v skutočnosti odpočítame z účtu užívateľa. 849 00:50:23,140 --> 00:50:25,810 Takže chcete obaja vykonať spoločne. 850 00:50:25,810 --> 00:50:29,140 Tak vstupuje do sveta transakcií. 851 00:50:29,140 --> 00:50:31,360 Tak to je niečo, čo mať na zadnej časti svojej mysle, 852 00:50:31,360 --> 00:50:34,710 ani nie tak pre účely len konečný projekt, 853 00:50:34,710 --> 00:50:36,700 ale ak chcete, aby vaše konečné projekt niekam, 854 00:50:36,700 --> 00:50:39,040 ak chcete spustiť nejakú spoločnosť okolo neho, 855 00:50:39,040 --> 00:50:41,270 Ak chcete vyriešiť nejakom študentskom skupiny problém na akademickej pôde 856 00:50:41,270 --> 00:50:45,210 a skutočne živé, aktívne webové stránky, sú druh jemné chýb, ktoré môžu vzniknúť 857 00:50:45,210 --> 00:50:49,480 ak nemáte dosť premýšľať, čo sa môže stať, ak 2 ľudia 858 00:50:49,480 --> 00:50:54,190 sa snažia získať prístup k internetovej stránky na adrese doslova v rovnakom okamihu v čase, 859 00:50:54,190 --> 00:50:56,890 pričom by ich otázky inak si prelína. 860 00:50:58,840 --> 00:51:01,420 >> Pripravené pre niektoré JavaScript, ukážku ich? 861 00:51:01,420 --> 00:51:04,320 Toto je naša posledná jazyk pre semestra. Dobrá. 862 00:51:04,320 --> 00:51:09,940 Našťastie, JavaScript vyzerá veľmi, veľmi, veľmi podobný 2 jazykov, C a PHP, 863 00:51:09,940 --> 00:51:11,140 sme urobili tak ďaleko. 864 00:51:11,140 --> 00:51:14,340 Nie je JavaScript vo PSet 7, ale je to veľmi užitočný nástroj 865 00:51:14,340 --> 00:51:18,840 pokiaľ ide robiť webové záverečných prác, alebo naozaj len webové programovanie všeobecne. 866 00:51:18,840 --> 00:51:20,950 Tak rýchly prehľad niečím, čo nazývajú DOM. 867 00:51:20,950 --> 00:51:23,600 Tu je super jednoduchý webovej stránky, ktorá naozaj len hovorí ahoj, svet 868 00:51:23,600 --> 00:51:25,970 a to ako v názve, a v tele. 869 00:51:25,970 --> 00:51:29,270 Vzhľadom k tomu, odsadenie bolo naznačuje nejakú dobu, 870 00:51:29,270 --> 00:51:31,380 tam je naozaj hierarchia na webové stránky. 871 00:51:31,380 --> 00:51:34,220 Mohol by som nakresliť rovnaký fragment HTML ako strom, 872 00:51:34,220 --> 00:51:37,470 spomínal na naše diskusie o dátových štruktúr v C, takto. 873 00:51:37,470 --> 00:51:40,710 Mám nejaké špeciálne koreňový uzol uzol dokumentu, 874 00:51:40,710 --> 00:51:43,650 a uvidíme, na analógový tohto v JavaScripte za chvíľu. 875 00:51:43,650 --> 00:51:48,330 Prvé dieťa a jediné dieťa, ktoré je v tomto prípade HTML tag. 876 00:51:48,330 --> 00:51:49,880 Tam je žiadny priamy mapovanie DOCTYPE. 877 00:51:49,880 --> 00:51:53,170 To je zvláštna vec, a tak sme mali jednoducho ignorovať, pokiaľ ide o túto DOM, 878 00:51:53,170 --> 00:51:55,810 Tento Document Object Model stromu. 879 00:51:55,810 --> 00:51:59,530 Všimnite si, že tag HTML, ktoré som líčil svojvoľne ako obdĺžnik, 880 00:51:59,530 --> 00:52:02,890 má 2 deti: hlava a telo. 881 00:52:02,890 --> 00:52:04,840 >> Tie sú podobne kreslený ako obdĺžniky. 882 00:52:04,840 --> 00:52:08,970 Je zmysluplné obrazovo, že hlava je na ľavej strane tela. 883 00:52:08,970 --> 00:52:11,960 Dôsledkom je, že hlava je na prvom mieste vo stromu. 884 00:52:11,960 --> 00:52:14,910 Takže je to vlastne objednanie do stromu pri kreslení to takto, 885 00:52:14,910 --> 00:52:17,460 aj keď tvary a ktovie čo ešte sú ľubovoľné. 886 00:52:17,460 --> 00:52:20,360 Vedúci medzitým má jedno dieťa s názvom názov, 887 00:52:20,360 --> 00:52:25,170 a názov vlastne má jeho vlastné dieťa, ktoré je "hello, world", 888 00:52:25,170 --> 00:52:32,210 ktoré som zámerne kreslil ako ovál tu, aby to trochu odlišné od obdĺžnika. 889 00:52:32,210 --> 00:52:37,420 Tieto obdĺžniky sú prvky, vzhľadom k tomu, ahoj, svet je naozaj textový uzol. 890 00:52:37,420 --> 00:52:39,850 Takže je to uzol v strome, ale je to iný typ uzla 891 00:52:39,850 --> 00:52:41,730 tak som vytiahol ho ľubovoľne inak. 892 00:52:41,730 --> 00:52:45,000 Podobne sa telo mať dieťa s názvom hello, world i, 893 00:52:45,000 --> 00:52:47,910 tak odlišný uzol, aj keď sú zhodou okolností rovnaký text, 894 00:52:47,910 --> 00:52:52,100 ale ja som vypracovaná to pomocou rovnakého tvaru. Takže koho to zaujíma? 895 00:52:52,100 --> 00:52:56,820 No, čo je pekné o HTML, je, že nemá túto hierarchickú povahu. 896 00:52:56,820 --> 00:53:01,010 A čo je pekné o JavaScriptu a najmä knižníc, ktoré sú voľne k dispozícii 897 00:53:01,010 --> 00:53:07,120 a populárny ako jQuery, môžete prechádzať stromovú štruktúru tak úžasne jednoduché. 898 00:53:07,120 --> 00:53:11,790 Každá z vecí sme robili v C s ukazovateľmi a posuvu stromy a recursing na uzloch 899 00:53:11,790 --> 00:53:15,300 vľavo dieťa pravej dieťa, zrazu môžeme nejako brať za samozrejmosť 900 00:53:15,300 --> 00:53:19,450 ako úžasne poučné, ak nie trochu frustrujúce 901 00:53:19,450 --> 00:53:22,470 ale zďaleka nie efektívny spôsob, ako ísť o programovaní. 902 00:53:22,470 --> 00:53:24,470 A tak s týmito jazykoch vyššej úrovne, ako je JavaScript 903 00:53:24,470 --> 00:53:28,340 budeme môcť prejsť tento strom oveľa viac intuitívne. 904 00:53:28,340 --> 00:53:30,430 >> A skutočne syntaxe bude celkom povedome. 905 00:53:30,430 --> 00:53:32,950 Ak ste nikdy nevideli JavaScript predtým, je to naozaj pekný odkaz 906 00:53:32,950 --> 00:53:35,910 od Mozilly ľudí, že ľudia, ktorí, aby Firefox, 907 00:53:35,910 --> 00:53:38,370 takže sa pokojne prechádzať, že na vaše pohodlie. 908 00:53:38,370 --> 00:53:41,590 Čo nájdete - a tieto snímky sú totožné s tým, čo sme druhý deň - 909 00:53:41,590 --> 00:53:44,030 podobne, je preč hlavné. 910 00:53:44,030 --> 00:53:47,010 Takže keď napíšete program v JavaScripte, nie je hlavné funkcie. 911 00:53:47,010 --> 00:53:48,690 Stačí začať písať kód. 912 00:53:48,690 --> 00:53:51,660 Ale kľúčový rozdiel medzi JavaScript a C a PHP 913 00:53:51,660 --> 00:53:55,890 je to, že vzhľadom k tomu, C a PHP doteraz boli vykonané na strane servera 914 00:53:55,890 --> 00:53:59,180 spotrebičom v tomto prípade, alebo všeobecnejšie servera, 915 00:53:59,180 --> 00:54:04,270 JavaScript zámerné je zvyčajne vykonáva pomocou prehliadača. 916 00:54:04,270 --> 00:54:08,440 Inými slovami, môžete si napísať kód JavaScriptu, pretože sa chystáme, 917 00:54:08,440 --> 00:54:13,080 na serveri v zariadení, ale ho zahrnúť medzi HTML, medzi vaše CSS, 918 00:54:13,080 --> 00:54:16,100 medzi svojimi GIF a PNG vaše a vašich obrázkov vo formáte JPEG 919 00:54:16,100 --> 00:54:19,170 tak, že keď užívateľ navštívi webovú stránku, ak používate JavaScript, 920 00:54:19,170 --> 00:54:21,770 že kód JavaScript pochádza zo servera do prehliadača, 921 00:54:21,770 --> 00:54:24,540 a to je prehliadač, ktorý skutočne spustí ho. 922 00:54:24,540 --> 00:54:27,960 Takže to má dôsledky pre zmysluplné aj duševného vlastníctva. 923 00:54:27,960 --> 00:54:32,600 Je to trochu hlúpe dokonca premýšľať o tom, chráni vaše IP, pokiaľ ide o kód JavaScript 924 00:54:32,600 --> 00:54:37,560 pretože podľa povahy jazyka dostane bol vykonaný zvyčajne strane prehliadača. 925 00:54:37,560 --> 00:54:40,360 >> Môžete popliesť to, čo znamená, že môže to vyzerať blázon a škaredý 926 00:54:40,360 --> 00:54:45,400 bez medzery, hrozné názvy premenných, aby bolo ťažšie pre ľudí ukradnúť vaše IP, 927 00:54:45,400 --> 00:54:48,120 ale kľúčové je to, že sa vykonáva strane prehliadača. 928 00:54:48,120 --> 00:54:51,790 Aj keď ako stranou JavaScript možno použiť strane servera, 929 00:54:51,790 --> 00:54:54,480 najčastejší prípad použitia práve teraz je ešte na prehliadači. 930 00:54:54,480 --> 00:54:59,800 A tu je to, čo vyzerá. Tu je if-else if-else, rovnako ako C, rovnako ako PHP. 931 00:54:59,800 --> 00:55:02,420 Tu je Boolovský výraz, keď ste "alebo" 2 veci dohromady. 932 00:55:02,420 --> 00:55:04,330 Tu je, keď sa "a" 2 veci dohromady. 933 00:55:04,330 --> 00:55:08,300 Tu je switch, ktorý je podobný PHP 934 00:55:08,300 --> 00:55:10,810 v tom, že si môžete prepnúť na rôzne typy hodnôt. 935 00:55:10,810 --> 00:55:15,180 Slučky podobne majú pre slučky, ktorá sem sú štruktúrované rovnakým spôsobom s tým, čo sme videli predtým. 936 00:55:15,180 --> 00:55:18,110 Kým slučky, sme dostali urobiť while. 937 00:55:18,110 --> 00:55:20,290 Premenné, niekedy tak trochu inak. 938 00:55:20,290 --> 00:55:24,560 Tie deklarovať premenné, ako to robíte v PHP a C, 939 00:55:24,560 --> 00:55:27,860 ale rovnako je JavaScript slabo zadali. 940 00:55:27,860 --> 00:55:32,730 Neurčíte int alebo float alebo povrázok alebo niečo podobné, že obvykle. 941 00:55:32,730 --> 00:55:34,240 Môžete zadať var. 942 00:55:34,240 --> 00:55:38,040 Nemusíte špecifikovať var, ale to má dôsledky, ak nechcete. 943 00:55:38,040 --> 00:55:42,000 Zvyčajne, ak vynecháte var, omylom vytvoriť globálnu premennú miesto miestnych. 944 00:55:42,000 --> 00:55:46,420 Takže mi dovoľte navrhnúť, aby si takmer vždy len povedať, var a potom názov premennej. 945 00:55:46,420 --> 00:55:48,740 Nie je to typ, je to len var pre premennú. 946 00:55:48,740 --> 00:55:52,930 To by bol príklad, či už je to 123 alebo "hello, world". 947 00:55:52,930 --> 00:55:58,910 Polia sú prítomné a syntakticky podobný PHP. 948 00:55:58,910 --> 00:56:03,690 Poviem var čísla a potom som použiť hranaté zátvorky znovu deklarovať premennú 949 00:56:03,690 --> 00:56:08,870 ktorého typ je pole, ktoré má tieto konkrétne čísla v ňom oddelené čiarkami. 950 00:56:08,870 --> 00:56:11,740 A potom konečne, to je len jeden, že skutočne vyzerá inak. 951 00:56:11,740 --> 00:56:16,700 Pripomeňme, že v PHP by sme zaviedli asociatívne pole pre študenta 952 00:56:16,700 --> 00:56:20,220 ako Zamyla by mohol vyzerať takto, kde je premenná nazýva študent. 953 00:56:20,220 --> 00:56:23,370 Hranaté zátvorky znamenajú, tu je pole. 954 00:56:23,370 --> 00:56:28,500 >> Skutočnosť, že nie som pomocou číselných indexov, ale reťazca - id, dom, a meno - 955 00:56:28,500 --> 00:56:30,990 Znamená to, že sa jedná o asociatívne pole, 956 00:56:30,990 --> 00:56:34,490 a tieto šípky s znakom rovnosti a šikmé konzoly 957 00:56:34,490 --> 00:56:37,310 Znamená to, že je kľúč "id", je hodnota 1; 958 00:56:37,310 --> 00:56:39,310 Kľúčom k úspechu je "dom", je hodnota Winthrop House; 959 00:56:39,310 --> 00:56:41,800 Kľúčom k úspechu je "názov", je hodnota Zamyla Chan. 960 00:56:41,800 --> 00:56:47,110 Takže tam je 3 kľúče vo vnútri tohto asociatívneho poľa, z ktorých každý má svoju vlastnú hodnotu. 961 00:56:47,110 --> 00:56:52,880 Videli sme, že v PSet 7, alebo čoskoro bude, v JavaScriptu rovnaký nápad, 962 00:56:52,880 --> 00:56:55,220 ale bude to vyzerať takto. 963 00:56:55,220 --> 00:57:00,070 Tak var študent - no dolára a žiadna zmienka o type ešte, ale var - 964 00:57:00,070 --> 00:57:05,860 rovná a potom otvorte zložené zátvorky, pretože v JavaScripte, keď máte kľúč hodnota pary, 965 00:57:05,860 --> 00:57:08,900 v skutočnosti používate niečo ako objekt. 966 00:57:08,900 --> 00:57:13,490 A tí z vás, ktorí sa transportéry alebo ako by pripomenúť objekty z Java 967 00:57:13,490 --> 00:57:15,140 alebo podobné jazyky. 968 00:57:15,140 --> 00:57:17,880 JavaScript nie je Java, predovšetkým. 969 00:57:17,880 --> 00:57:21,600 Jednalo sa o úmyselné rokmi návrhu rozhodnutia pred ukradnúť niečo iné, že bola populárna, 970 00:57:21,600 --> 00:57:25,640 jeho meno, aj keď nemá žiadnu zásadnú vzťah k Java sám. 971 00:57:25,640 --> 00:57:31,490 JavaScript má objekty, a vytvoriť im prostredníctvom notácie ortézy kučeravé. 972 00:57:31,490 --> 00:57:36,710 Objekty v JavaScripte sú do značnej miery zodpovedá asociatívne pole v PHP 973 00:57:36,710 --> 00:57:40,030 pokiaľ ide o ukladanie dát vo vnútri nich. 974 00:57:40,030 --> 00:57:44,100 >> Ale ešte silnejšie v JavaScripte môžete priradiť veľmi ľahko funkcie 975 00:57:44,100 --> 00:57:48,040 vo vnútri objektu, a keď si to urobiť v iných jazykoch, 976 00:57:48,040 --> 00:57:50,040 je to celkom bežné paradigma, ako uvidíme. 977 00:57:50,040 --> 00:57:54,380 Stručne povedané, tento objekt reprezentuje študenta, ktorý je zvlášť Zamyla, 978 00:57:54,380 --> 00:58:00,380 a je to podobné ako koncepčne, len syntakticky odlišné od tohto. 979 00:58:00,380 --> 00:58:03,840 Poďme vlastne používať JavaScript v súbore. 980 00:58:03,840 --> 00:58:05,570 Ukazuje sa, že je to skript tag. 981 00:58:05,570 --> 00:58:08,180 Videli sme štýl značku a my sme videli ďalšie HTML tagy. 982 00:58:08,180 --> 00:58:11,510 Skript tag vlastne bude obsahovať nejaký kód JavaScript. 983 00:58:11,510 --> 00:58:15,500 Nechaj ma ísť do zariadenia, kde máme nejaký zdrojový kód pre-made. 984 00:58:15,500 --> 00:58:18,700 Nemám zanechané to ešte na webových stránkach, ale budem robiť, že po triede. 985 00:58:18,700 --> 00:58:21,770 Poďme otvoriť túto, blink.html. 986 00:58:21,770 --> 00:58:27,560 Späť v roku 1990, tam bol doslova HTML tag nazýva blikajú tag, 987 00:58:27,560 --> 00:58:30,340 a toto bol jeden z najviac nádherne nadmerne značky na internete 988 00:58:30,340 --> 00:58:36,140 kedy by ste navštíviť nejaký 1990 v štýle webovej stránky a začať vidieť texte blikať ťa takto, 989 00:58:36,140 --> 00:58:39,810 výsledky markíz tagu, ktorý textu bude takhle. 990 00:58:39,810 --> 00:58:45,070 Jeden z mála okamihov, kedy sa svet skutočne dohodnutých na webovom štandardu, 991 00:58:45,070 --> 00:58:48,250 všetci plošne zabil blikanie značku pred niekoľkými rokmi. 992 00:58:48,250 --> 00:58:52,860 Ale môžeme vzkriesiť s JavaScriptom ako demonštráciu sily máte 993 00:58:52,860 --> 00:58:56,660 keď môžete napísať program vo vnútri webovej stránky. 994 00:58:56,660 --> 00:59:00,240 Najprv sa preskočiť nové veci a sústrediť sa iba na starý. 995 00:59:00,240 --> 00:59:01,780 >> Tu je staré veci v tomto príklade. 996 00:59:01,780 --> 00:59:06,350 Mám tag HTML, hlavu značku, a titul tag. 997 00:59:06,350 --> 00:59:11,210 Potom mám tag body tu div, ktorý odvolanie je len obdĺžnikový rozdeliť stránku 998 00:59:11,210 --> 00:59:14,720 že som dostal jedinečnú ID ľubovoľne z "pozdrav", aby, 999 00:59:14,720 --> 00:59:18,320 Len tak som si spôsob, ako jednoznačne odkazuje na to, že má niektoré veľmi jednoduchý text: 1000 00:59:18,320 --> 00:59:20,220 ahoj, svet. 1001 00:59:20,220 --> 00:59:23,940 Teraz mi dovoľte rolovať hore na začiatok tohto súboru a zistiť, čo je nové. 1002 00:59:23,940 --> 00:59:27,710 Prvá vec, ktorá je nová až hore je skript tag, 1003 00:59:27,710 --> 00:59:31,280 a vnútri oznámenia tag script som deklaroval funkciu. 1004 00:59:31,280 --> 00:59:34,610 Ak chcete deklarovať funkciu v JavaScriptu, dosť podobný PHP, 1005 00:59:34,610 --> 00:59:37,930 budete doslova napísať Funkcia potom na názov funkcie, zátvorka, 1006 00:59:37,930 --> 00:59:40,400 a možno niektoré argumenty, ak to trvá nejaký. 1007 00:59:40,400 --> 00:59:43,510 Potom som dostal môj zložená zátvorka ako zvyčajne, a teraz máme nejaký mierne nového kódu, 1008 00:59:43,510 --> 00:59:45,230 ale uvidíme, čo to znamená. 1009 00:59:45,230 --> 00:59:48,670 Tak var div, to jednoducho znamená, dať mi premennú s názvom div. 1010 00:59:48,670 --> 00:59:50,530 Mohol som to nazval foo, ale ja som chcel, aby to nazvať div 1011 00:59:50,530 --> 00:59:52,620 z dôvodov, ktoré budú zrejmé v druhej. 1012 00:59:52,620 --> 00:59:57,480 Potom to dopadá v JavaScripte - a to je JavaScript kód vložený v mojej webovej stránky - 1013 00:59:57,480 --> 01:00:01,760 je zvláštne globálna premenná druhov tzv dokument. 1014 01:00:01,760 --> 01:00:04,780 JavaScript je v skutočnosti objektovo orientovaný jazyk. 1015 01:00:04,780 --> 01:00:07,230 Nebudeme zachádzať do detailov v 50, čo to znamená, 1016 01:00:07,230 --> 01:00:11,180 ale teraz viem, že objekt je skoro ako struct. 1017 01:00:11,180 --> 01:00:14,740 Rovnako ako sme videli pri ceste späť v jednom z prvých problému sety 1018 01:00:14,740 --> 01:00:17,150 kde sme dať veľa informácií v struct, 1019 01:00:17,150 --> 01:00:21,330 Podobne je dokumentovať zvláštne struct, ktorý je dodávaný s prehliadačom, 1020 01:00:21,330 --> 01:00:24,810 prichádza s ľubovoľnou webovú stránku. Nie je to niečo, čo som vytvoril. 1021 01:00:24,810 --> 01:00:28,210 Vnútri tohto dokumentu štruktúry, aj keď budete mať nielen dáta 1022 01:00:28,210 --> 01:00:30,010 ale tiež majú funkcie. 1023 01:00:30,010 --> 01:00:34,090 >> A kedykoľvek budete mať funkciu vnútri štruktúry, vo vnútri objektu, 1024 01:00:34,090 --> 01:00:36,490 je to tzv metóda. Ale je to to isté. 1025 01:00:36,490 --> 01:00:40,110 Metóda je funkcia, ktorá len tak sa stane, že je vo vnútri niečo iné. 1026 01:00:40,110 --> 01:00:42,990 Takže to znamená, že táto špeciálna globálne premenné s názvom dokumentu 1027 01:00:42,990 --> 01:00:47,690 je funkcia nazvaná getElementById, že doslova robí, že. 1028 01:00:47,690 --> 01:00:52,460 To sa vám element z DOM, Document Object Model strom, 1029 01:00:52,460 --> 01:00:55,520 ktorého ID je v tomto prípade pozdrav. 1030 01:00:55,520 --> 01:00:59,200 Inými slovami, celú tú dobu sme strávili na dátových štruktúrach prichádza do hry. 1031 01:00:59,200 --> 01:01:01,400 Tento obraz DOM, ktorý sme mali pred chvíľou, 1032 01:01:01,400 --> 01:01:06,100 aj keď stránka je trochu iný, keby som mal div na tomto obrázku, 1033 01:01:06,100 --> 01:01:11,180 čo document.getElementById by sa vrátil ku mne by účinne sa ukazovateľ 1034 01:01:11,180 --> 01:01:15,440 k obdĺžnika v strome, odkaz na obdĺžnik vo stromu. 1035 01:01:15,440 --> 01:01:18,410 Takže to, čo to znamená v skutočnosti zavolajte na jedno z týchto funkcií. 1036 01:01:18,410 --> 01:01:21,960 V tomto prípade je to opäť div. Nie je to subjekt alebo titul. 1037 01:01:21,960 --> 01:01:26,480 Tak sa pozrime, čo som potom robiť s touto div teraz, že som si to v tejto premennej nazvanej div. 1038 01:01:26,480 --> 01:01:32,580 Ukázalo sa, že s JavaScriptom máte možnosť doladiť CSS vašej stránky dynamicky. 1039 01:01:32,580 --> 01:01:39,060 Až teraz, všetky CSS sme kedy urobili, aj keď obmedzený, je v štýle atribúty, 1040 01:01:39,060 --> 01:01:41,730 alebo kde inde sme dať CSS? 1041 01:01:42,730 --> 01:01:45,810 Tak nejako som skazený, že jeden. V štýle značky v hornej časti súboru. 1042 01:01:45,810 --> 01:01:49,180 Alebo tretie miesto bol v? 1043 01:01:50,710 --> 01:01:54,590 >> Externý súbor, niečo. Css. 1044 01:01:54,590 --> 01:01:56,730 Takže to sú tie 3 miesta sme urobili CSS tak ďaleko, 1045 01:01:56,730 --> 01:01:59,310 ale úlovok je, že sme pevne dané, že všetko. 1046 01:01:59,310 --> 01:02:04,060 Rozhodli ste sa, ako si ponorila do PSet 7, rozhodli sme sa pred prednášať to, čo naše CSS bude. 1047 01:02:04,060 --> 01:02:07,380 Ale ak chcete zmeniť CSS, môžete skutočne urobiť 1048 01:02:07,380 --> 01:02:09,370 Akonáhle budete mať skutočný programovací jazyk. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - nie je programovacie jazyky. JavaScript je. 1050 01:02:13,910 --> 01:02:18,200 Tak to dopadá, že akonáhle máte jeden z tých obdĺžnikov zo stromu 1051 01:02:18,200 --> 01:02:23,050 volal DOM, to má sám nejaké dáta v nej. 1052 01:02:23,050 --> 01:02:27,820 Takže div, že som schmatol zo stromu má to, čo budeme hovoriť vlastnosť vnútri neho 1053 01:02:27,820 --> 01:02:34,390 volal štýl, a vlastnosť štýlu má sám vlastnosť nazvanú viditeľnosť. 1054 01:02:34,390 --> 01:02:37,330 Ja by som si toho až pri pohľade do užívateľove CSS príručke. 1055 01:02:37,330 --> 01:02:41,160 Ukazuje sa, že je viditeľnosť CSS vlastnosť, ktorá robí to, čo hovorí. 1056 01:02:41,160 --> 01:02:44,530 To je niečo viditeľné alebo nie, viditeľné alebo nie. 1057 01:02:44,530 --> 01:02:46,810 A ako to robíte, že je to. 1058 01:02:46,810 --> 01:02:50,510 Pýtam sa programovo, ak viditeľnosť tohto div sa skrýva, 1059 01:02:50,510 --> 01:02:53,390 čo mám zmeniť to? Viditeľné. 1060 01:02:53,390 --> 01:02:58,840 Inak, ak viditeľnosť tejto stránke nie je skrytá, logicky som si, aby to skryté. 1061 01:02:58,840 --> 01:03:04,070 Nemám potuchy, prečo je to viditeľné a skryté a nie sú viditeľné a neviditeľné. 1062 01:03:04,070 --> 01:03:06,000 To bol zlý tvar rozhodnutia na ceste. 1063 01:03:06,000 --> 01:03:09,530 Ale to sú naozaj protiklady v CSS: k prehliadnutiu a skryté. 1064 01:03:09,530 --> 01:03:15,520 To všetko robí je, znamená to zmeniť CSS môjho súboru zapnutie a vypnutie, zapnutie a vypnutie 1065 01:03:15,520 --> 01:03:16,870 pre daný div. 1066 01:03:16,870 --> 01:03:20,630 Ale znova, to je funkcia nazvaná blikajú. Keď je blikanie funkcia sa nazýva? 1067 01:03:20,630 --> 01:03:24,080 Ukazuje sa, že je tu ešte zvláštne globálne premenná tzv okno, 1068 01:03:24,080 --> 01:03:28,220 svojím duchom podobať dokumentu, ale vzhľadom k tomu, že dokument sa odvoláva na svoje webové stránky, 1069 01:03:28,220 --> 01:03:31,700 ako strom DOM, HTML si poslal zo servera, 1070 01:03:31,700 --> 01:03:35,250 Okno sa odkazuje na chróm okolo neho, adresa bar, bar titulu, 1071 01:03:35,250 --> 01:03:37,880 a všetky tie veci okolo svojej webovej stránky. 1072 01:03:37,880 --> 01:03:42,800 >> A ukázalo sa, že objekt window má špeciálnu funkciu vo vnútri neho volal setInterval 1073 01:03:42,800 --> 01:03:44,360 že robí to, čo hovorí. 1074 01:03:44,360 --> 01:03:48,600 Ak bude nastaviť interval - v tomto prípade každých 500 milisekúnd - 1075 01:03:48,600 --> 01:03:52,270 a hádať, čo to bude robiť každých 500 milisekúnd? 1076 01:03:52,270 --> 01:03:55,240 Bude to vykonať túto funkciu blikania. 1077 01:03:55,240 --> 01:03:58,560 A čo to tu pekné, že sme mohli urobiť to v C, aj keď sme nikdy neurobil. 1078 01:03:58,560 --> 01:04:01,580 C má niečo, čo nazýva ukazovateľov funkcií, kde si môžete prejsť funkcie okolo 1079 01:04:01,580 --> 01:04:03,140 ako argumenty. 1080 01:04:03,140 --> 01:04:07,620 Podobne v JavaScriptu môžete odovzdať názov funkcie do inej funkcie. 1081 01:04:07,620 --> 01:04:10,630 A upozornenie, čo robím. Ja to nerobím. 1082 01:04:10,630 --> 01:04:14,380 Ak som zátvorky po žmurknutia, znamenalo by to volanie blikať funkcie. 1083 01:04:14,380 --> 01:04:17,430 Keby som ich zrušenie, to znamená, že je tu blikanie funkcie 1084 01:04:17,430 --> 01:04:21,330 takže setInterval dá hovoriť každých 500 milisekúnd. 1085 01:04:21,330 --> 01:04:28,200 Takže konečný výsledok, otrasné hoci to je, je to, že keď pôjdem do localhost a ísť do blink.html, 1086 01:04:28,200 --> 01:04:32,120 Teraz mám túto udalosť znovu a znovu. 1087 01:04:32,120 --> 01:04:34,950 A keď som vlastne Skontrolujte prvok, uvidíme, či môžeme vidieť. 1088 01:04:34,950 --> 01:04:38,550 Dovoľte mi, aby som Skontrolujte prvok, dovoľte mi, aby som prejdite dole len trochu, 1089 01:04:38,550 --> 01:04:44,320 dovoľte mi, aby som si vybrať Elements sem, a všimnite si DOM vnútro inšpektora Chrome. 1090 01:04:44,320 --> 01:04:48,840 Je to doslova mení tam a späť každých 500 milisekúnd. 1091 01:04:48,840 --> 01:04:55,660 Ak pôjdeme do nášho priateľa Nate, 1092 01:04:55,660 --> 01:05:00,020 ak ste sa niekedy nad tým, ako to funguje, podobný nápad s intervalom, 1093 01:05:00,020 --> 01:05:04,810 ale Nate je vlastne robiť veľmi efektívne využitie farby v tomto konkrétnom prípade tu. 1094 01:05:04,810 --> 01:05:07,350 Takže čo viac môžeme vlastne robiť s tým? 1095 01:05:07,350 --> 01:05:09,990 Poďme otvoriť ďalší príklad a skúsiť niečo 1096 01:05:09,990 --> 01:05:12,940 že je programovo ešte užitočnejšie, ako robiť veci blikať. 1097 01:05:12,940 --> 01:05:17,990 Nechaj ma ísť do nášho formulára adresára dnes a ísť do form0. 1098 01:05:17,990 --> 01:05:20,820 To bolo najškaredšie možné formulár, ktorý som mohol prísť s, 1099 01:05:20,820 --> 01:05:23,290 a dovoľte mi, aby som vám ukázať, ako vyzerá v prehliadači. 1100 01:05:23,290 --> 01:05:28,960 >> Nechaj ma ísť do localhost / formulárov, a to je form0. 1101 01:05:28,960 --> 01:05:33,400 To je super škaredé HTML formulár, ktorý má niekoľko polí pre e-mail, na heslo, 1102 01:05:33,400 --> 01:05:37,190 heslo, a potom sa trochu zaškrtávacie políčko, aby sa dohodli na niektorých pojmov a podmienok. 1103 01:05:37,190 --> 01:05:41,350 Háčik je, či som navštíviť tento formulár a ja nechcem, aby vám svoju e-mailovú adresu, 1104 01:05:41,350 --> 01:05:44,730 Nechcem, aby sa dohodli na podmienkach možná, môžem kliknite na tlačidlo Zaregistrovať 1105 01:05:44,730 --> 01:05:46,920 a to umožňuje mňa rovnako. 1106 01:05:46,920 --> 01:05:50,800 To sa stáva, aby sa podrobil stupídny súboru PHP s názvom dump.php. 1107 01:05:50,800 --> 01:05:58,420 Všetko, čo to urobí, je vytlačiť obsah $ _GET len na diagnostické účely. 1108 01:05:58,420 --> 01:06:01,580 To bolo to, čo bolo predložené užívateľom práve teraz. 1109 01:06:01,580 --> 01:06:05,010 Predpokladajme však, že chceme skutočne overiť užívateľa odoslaní formulára. 1110 01:06:05,010 --> 01:06:06,530 Nechaj ma ísť do verzie 1. 1111 01:06:06,530 --> 01:06:11,420 To je form1.html. Vyzerá to esteticky rovnako ako zlé, ale všimnite si, ako je to fantázia. 1112 01:06:11,420 --> 01:06:15,450 Keby som na tlačidlo Registrovať bez spolupráce, som si zakričal na. 1113 01:06:15,450 --> 01:06:17,320 "Musíte zadať vašu e-mailovú adresu." 1114 01:06:17,320 --> 01:06:21,670 Dobrá. Tak skúsim to. Tak malan@harvard.edu. Nepotrebujem heslo. 1115 01:06:21,670 --> 01:06:25,100 Registrácia. "Musíte zadať heslo." Dobrá. 1116 01:06:25,100 --> 01:06:28,470 Tak som sa zadať heslo Crimson. Registrácia. 1117 01:06:28,470 --> 01:06:32,300 "Heslá sa nezhodujú." Musím teraz písať crimson tu. 1118 01:06:32,300 --> 01:06:35,710 Omylom som čítal, že. Registrácia. 1119 01:06:35,710 --> 01:06:39,860 "Vy musíte súhlasiť s podmienkami." Dobrá. Súhlasím tam. Registrácia. 1120 01:06:39,860 --> 01:06:43,700 A teraz to ukazuje mi diagnostický výstup tamto. 1121 01:06:43,700 --> 01:06:45,630 >> Takže to, čo sa práve stalo? 1122 01:06:45,630 --> 01:06:48,330 Sme mali túto schopnosť overiť odosielanie formulára. 1123 01:06:48,330 --> 01:06:51,420 V skutočnosti, ak ste ponoriť do PSet 7, je tu ospravedlniť funkcie 1124 01:06:51,420 --> 01:06:54,620 že je to celkom jednoduché kričať na užívateľa s hlásením na obrazovke. 1125 01:06:54,620 --> 01:06:57,580 Ja používam trochu iný mechanizmus, záznam funkcie, 1126 01:06:57,580 --> 01:07:03,690 ktorá nie je funkcia, ktorá je sa usmial na, pretože to robí veľmi škaredé užívateľské správy. 1127 01:07:03,690 --> 01:07:05,710 Ale pozrime sa, čo tu robím. 1128 01:07:05,710 --> 01:07:09,620 To je form1.html, a všimnite si, že mám nejaký docela známy syntax: 1129 01:07:09,620 --> 01:07:12,920 telo tag, tag formuláre, akcie atribút, metóda atribút. 1130 01:07:12,920 --> 01:07:17,050 Ale nevšimol som rovnako moja forma jedinečné ID pre pohodlie. 1131 01:07:17,050 --> 01:07:19,190 Potom som dostal e-mail pole, ktorého typ je text, 1132 01:07:19,190 --> 01:07:23,780 pole pre heslo, ktorého typ je heslo, potvrdenie poľa, ktorého typ je heslo, 1133 01:07:23,780 --> 01:07:28,070 a potom checkbox, ktorého meno je zmluva tu, typ checkbox. 1134 01:07:28,070 --> 01:07:30,380 A potom mám tlačidlo Odoslať. 1135 01:07:30,380 --> 01:07:33,050 Všimnime si ale na vrchole, čo viac mám. 1136 01:07:33,050 --> 01:07:35,810 Po prvé, je tu ďalšie použitie skriptu značky. 1137 01:07:35,810 --> 01:07:40,520 Ak máte nejaký kód JavaScriptu v inom súbore, rovnako ako s CSS môžete zahrnúť. 1138 01:07:40,520 --> 01:07:44,530 A vy, že sa skript zdroje, a potom zistíte som pripojenie zrejme 1139 01:07:44,530 --> 01:07:50,349 na googleapis.com na veľmi dlhej ceste, ale ktorého meno končí v jquery.min 1140 01:07:50,349 --> 01:07:52,420 pre minimum. js. 1141 01:07:52,420 --> 01:07:55,969 jQuery je super populárny knižnica pre JavaScript, ktorý jednoducho robí JavaScript 1142 01:07:55,969 --> 01:07:58,230 všetky užívateľsky prívetivejšie na použitie. 1143 01:07:58,230 --> 01:08:00,610 Je to skutočne stalo de facto štandardom. 1144 01:08:00,610 --> 01:08:04,090 Takže aj keď to, čo ste asi vidieť nie je čistá JavaScript samo o sebe, 1145 01:08:04,090 --> 01:08:09,340 to je knižnica na vrchole JavaScriptu podobne ako na CS50 knižnice vrstva 1146 01:08:09,340 --> 01:08:13,670 na vrchole low-level kód C, realita je takmer každý na internete používa. 1147 01:08:13,670 --> 01:08:18,030 Takže sa nejedná o školení kolesá. To je len najlepšia prax v týchto dňoch. 1148 01:08:18,030 --> 01:08:22,830 Teraz všimnete nižšie, že je môj vlastný scenár tag, a všimnite si, čo som tu urobil. 1149 01:08:22,830 --> 01:08:27,450 Ukazuje sa, že jQuery robí niečo trochu fantázie. 1150 01:08:27,450 --> 01:08:29,660 JavaScript má doláre, ale oni sú bezvýznamní. 1151 01:08:29,660 --> 01:08:32,870 >> Sú ako písmeno A alebo B alebo C. 1152 01:08:32,870 --> 01:08:36,670 jQuery je jednoducho prijala konvenciu alebo druhu položil požiadavku na skutočnosť, 1153 01:08:36,670 --> 01:08:40,280 že $ bude ich špeciálny symbol. 1154 01:08:40,280 --> 01:08:44,950 Takže akonáhle vložíte tento globálny JavaScript súbor tu s skriptu značky, 1155 01:08:44,950 --> 01:08:49,080 máte prístup k špeciálnym globálne premenné, ktorá sa volá $. 1156 01:08:49,080 --> 01:08:53,009 Je to viac vhodne volal jQuery, ale to nevyzerá zďaleka tak sexy ako $. 1157 01:08:53,009 --> 01:08:56,250 Ale $ nemá žiadny zvláštny význam. V PHP to malo osobitný význam. 1158 01:08:56,250 --> 01:08:58,440 Musel si mať pred premenné. 1159 01:08:58,440 --> 01:09:01,670 To je len sexi vec, ktorú prijal. 1160 01:09:01,670 --> 01:09:03,389 Čo sa to tu deje? 1161 01:09:03,389 --> 01:09:08,830 Všimnite si, som okolo na jQuery funkcie moju globálne premenné dokumentu 1162 01:09:08,830 --> 01:09:10,860 a potom volám. pripravený. 1163 01:09:10,860 --> 01:09:15,480 Čo jQuery podstate robí, je, že vám umožní vziať nejaké vanilkové JavaScriptu veci 1164 01:09:15,480 --> 01:09:17,889 ako objektu dokumentu, objekt window, 1165 01:09:17,889 --> 01:09:20,790 a keď si odovzdať ho do jQuery funkcie - 1166 01:09:20,790 --> 01:09:24,429 a znova, aby bolo jasno, to je funkcia nazvaná jQuery - 1167 01:09:24,429 --> 01:09:28,240 to, čo robí je vráti na vás špeciálnu verziu dokumentu 1168 01:09:28,240 --> 01:09:30,700 , Ktorý má viac funkcií, s ním spojené. 1169 01:09:30,700 --> 01:09:34,760 Takže v surovom JavaScript nie je k dispozícii žiadny funkcie, 1170 01:09:34,760 --> 01:09:37,810 ale ak odovzdáte dokument jQuery funkcie ako prvý, 1171 01:09:37,810 --> 01:09:40,960 sa vráti do Vás špeciálnu verziu objektu dokumentu 1172 01:09:40,960 --> 01:09:43,030 že má viac fantázie funkcií. 1173 01:09:43,030 --> 01:09:48,230 A to je dôvod, prečo ľudia radi. Je to jednoducho robí veci jednoduchšie urobiť, ako sme o tom vidieť. 1174 01:09:48,230 --> 01:09:49,820 Takže čo tento riadok kódu znamená? 1175 01:09:49,820 --> 01:09:52,690 Tento riadok kódu tu znamená, že keď je dokument pripravený - 1176 01:09:52,690 --> 01:09:56,830 inými slovami, akonáhle prehliadač prečítaní tohto súboru zhora nadol - 1177 01:09:56,830 --> 01:09:59,200 choďte do toho a spustiť nasledujúce funkcie. 1178 01:09:59,200 --> 01:10:03,540 Čo je naozaj zaujímavé v JavaScripte - a PHP je to rovnako - 1179 01:10:03,540 --> 01:10:05,450 je anonymný funkcie. 1180 01:10:05,450 --> 01:10:10,560 V JavaScriptu môžete deklarovať funkcie, ktoré nemajú meno, ale oni predsa majú telo. 1181 01:10:10,560 --> 01:10:12,570 Všimnite si, čo sa tu deje. 1182 01:10:12,570 --> 01:10:16,220 >> To je funkcia nazvaná pripravený, a znamená to, vykonať nasledujúce 1183 01:10:16,220 --> 01:10:20,220 kedy sa celá webová stránka je pripravená, keď je to všetko bolo čítať v zo servera. 1184 01:10:20,220 --> 01:10:23,090 Čo chcete urobiť? Chcem spustiť kus kódu. 1185 01:10:23,090 --> 01:10:27,120 Všimnite si, že nechceme, aby spustenie tohto kódu hneď. 1186 01:10:27,120 --> 01:10:34,350 Ak som vynechal to, znamenalo by to okamžite začať vykonávanie týchto riadkov kódu. 1187 01:10:34,350 --> 01:10:39,040 Ale fakt, že hovorím nie, nie, nie, zabaliť to v anonymnej funkcie, ako je táto 1188 01:10:39,040 --> 01:10:43,000 prostriedky nespustiť ju doteraz; hovoriť to nakoniec. 1189 01:10:43,000 --> 01:10:45,430 Videli sme to pred chvíľou v našom predchádzajúcom príklade formulára. 1190 01:10:45,430 --> 01:10:49,990 Akú funkciu sme zavolať nakoniec, 500 milisekúnd neskôr? Blink. 1191 01:10:49,990 --> 01:10:51,480 Takže rovnaký nápad. 1192 01:10:51,480 --> 01:10:53,950 Opäť platí, že aj keď to vyzerá trochu divne, vezmite zatiaľ o viere 1193 01:10:53,950 --> 01:10:57,060 že vyhlásiť anonymné funkcie, ktorá hovorí sa nakoniec, 1194 01:10:57,060 --> 01:11:01,720 stačí napísať function () { 1195 01:11:01,720 --> 01:11:05,380 Takže, aký kód sa budeme vykonávať nakoniec? Nasledujúce. 1196 01:11:05,380 --> 01:11:10,460 To tiež vyzerá trochu nový, ale to znamená, tu je jQuery funkcie, 1197 01:11:10,460 --> 01:11:13,430 a to je teraz skratka. 1198 01:11:13,430 --> 01:11:18,830 Tento fragment HTML v dolnej časti okna samozrejme má nejaký strom zastúpenie. 1199 01:11:18,830 --> 01:11:21,730 To nie je to. Táto stránka je oveľa zaujímavejšia ako tento Hello, World napríklad. 1200 01:11:21,730 --> 01:11:25,210 Ale tam je nejaký strom, ktorý zodpovedá tomuto HTML. 1201 01:11:25,210 --> 01:11:28,910 Bolo by bolesť v krku musieť realizovať nejaký rekurzívne funkcie 1202 01:11:28,910 --> 01:11:34,380 začať na koreňový uzol a potom nájsť uzol, ktorého ID je registrácia. 1203 01:11:34,380 --> 01:11:38,340 Takže to, čo robí jQuery super ľahké pre nás je doslova to. 1204 01:11:38,340 --> 01:11:43,000 Nehanbite sa a dostať ma, čo div, alebo akejkoľvek podobe, bez ohľadu na HTML element 1205 01:11:43,000 --> 01:11:45,820 má ID registrácie. 1206 01:11:45,820 --> 01:11:52,440 Toto je ekvivalent k document.getElementById ("registrácia"). 1207 01:11:52,440 --> 01:11:54,170 >> Prečo ľudia ako jQuery? 1208 01:11:54,170 --> 01:12:00,110 Vzhľadom k tomu, že je to kratšie písať. Ale to je všetko, čo je. Je to rovnaká myšlienka. 1209 01:12:00,110 --> 01:12:02,630 Dajte mi tag, ktorého ID je registrácia. 1210 01:12:02,630 --> 01:12:06,300 A keď sa nám, že tag, ktorý sa stane byť forma,, 1211 01:12:06,300 --> 01:12:08,300 choďte do toho a spustenie tohto kódu. 1212 01:12:08,300 --> 01:12:11,320 Takže poďme sa jeden pohľad teraz na to, ako si vedieme formulára overenie. 1213 01:12:11,320 --> 01:12:15,950 Syntax je síce záhadnej na prvý, ale to, čo sa deje? 1214 01:12:15,950 --> 01:12:21,050 Ak tento riadok kódu je pravda, budem kričať na užívateľa, aby jeho alebo jej e-mailovú adresu. 1215 01:12:21,050 --> 01:12:22,970 Takže to, čo je tento riadok kódu? 1216 01:12:22,970 --> 01:12:25,560 $ Znamená jQuery. Teraz si toho všimnúť. 1217 01:12:25,560 --> 01:12:27,920 To je niečo ako CSS. 1218 01:12:27,920 --> 01:12:33,370 Ak ste sa ponorila do CSS ešte, budete vedieť, že to znamená, že prvok, ktorého ID je registrácia. 1219 01:12:33,370 --> 01:12:39,840 Priestor znamená nájsť dieťa alebo potomok registráciu, ktorého meno je na vstupe. 1220 01:12:39,840 --> 01:12:42,970 A potom sa tá vec v hranatých zátvorkách je trochu filter. 1221 01:12:42,970 --> 01:12:47,010 A aj keď to vyzerá tajomná, to len znamená ísť do formulára, ktorého ID je registrácia, 1222 01:12:47,010 --> 01:12:51,230 prejsť na vnútornej vstupný prvok toho, ktorého meno je e-mail, 1223 01:12:51,230 --> 01:12:55,440 a potom sa jeho hodnotu, bez ohľadu na jeho hodnotu sa stane, že - 1224 01:12:55,440 --> 01:12:59,670 asdf či je to všetko, čo som na písacom stroji alebo malan@harvard.edu či to, čo som napísal. 1225 01:12:59,670 --> 01:13:05,250 Takže, ak je hodnota formulára emailovú poľa == nič, revať na užívateľa. 1226 01:13:05,250 --> 01:13:09,700 Alebo ak je hodnota v poli hesla == nič, revať na užívateľa. 1227 01:13:09,700 --> 01:13:19,520 >> Alebo ak je hodnota v poli hesla nie rovnať hodnote pole pre potvrdenie, 1228 01:13:19,520 --> 01:13:22,850 ktorý bol iný prvok formulára, revať na užívateľa. 1229 01:13:22,850 --> 01:13:25,680 A potom konečne - a to taky má nejakú novú syntax vlastné, 1230 01:13:25,680 --> 01:13:29,270 ale akonáhle ste videli, že je to aspoň trochu rozumné - 1231 01:13:29,270 --> 01:13:34,060 else if formulár, ktorého ID je registrácia má vstupný prvok, ktorého meno je zmluva 1232 01:13:34,060 --> 01:13:39,720 a je kontrolovaná, choďte do toho a revať na užívateľa. 1233 01:13:39,720 --> 01:13:42,520 Tak som úplne priznať, je to absolútne ohromujúci na prvý pohľad. 1234 01:13:42,520 --> 01:13:46,530 Je to veľa novej syntax. Ale všetci jQuery sa riadia týmito druhmi vzorov. 1235 01:13:46,530 --> 01:13:49,880 A úprimne, ja ani nevedel, to existoval ešte pred niekoľkými minútami. 1236 01:13:49,880 --> 01:13:53,640 Aj Googled, "Ako by ste skontrolovať, či je začiarknuté políčko v jQuery?" 1237 01:13:53,640 --> 01:13:55,680 a to je syntaxe, pretože tam je rôzne spôsoby, ako to urobiť 1238 01:13:55,680 --> 01:13:58,010 s aktuálnym zdrojovom kóde JavaScript. 1239 01:13:58,010 --> 01:14:01,030 Tak ako prvá stránka problému Set 7 zdôrazňuje, 1240 01:14:01,030 --> 01:14:04,500 Pset 7 je veľmi cvičenie v Bootstrapping sami 1241 01:14:04,500 --> 01:14:08,650 kde sme za predpokladu, dúfajme, koncepčný rámec, s ktorým sa vysporiadať s PSet. 1242 01:14:08,650 --> 01:14:12,280 >> Ale ako je to často v prípade web design, je to na vás naozaj hrabať okolo, 1243 01:14:12,280 --> 01:14:16,680 začlenil úryvky kódu a príklady z webu tak dlho, ako budete citovať je 1244 01:14:16,680 --> 01:14:17,960 Podľa podmienok na tomto prvom liste, 1245 01:14:17,960 --> 01:14:21,460 a uvedomiť si, že učenie HTML, CSS, JavaScript, a dokonca aj SQL 1246 01:14:21,460 --> 01:14:26,020 je naozaj chcel byť tento at-home cvičenia, ako sme začali brať tieto vzdelávacie kolesá off. 1247 01:14:26,020 --> 01:14:29,150 A uvedomiť si, taky je tu oveľa viac vecí, ktoré môžete robiť s prehliadačom. 1248 01:14:29,150 --> 01:14:33,790 Vnútri väčšiny z týchto prvkov existujú aj iné veci, tzv obslužné rutiny. 1249 01:14:33,790 --> 01:14:37,140 A aj keď sme sa pozrel na tie tzv onsubmit a onready, 1250 01:14:37,140 --> 01:14:40,310 môžete robiť veci, ako OnKeyDown, OnKeyUp, 1251 01:14:40,310 --> 01:14:43,410 rád, keď sa používateľ dotkne kľúč, môžete počúvať, že aj kláves hore. 1252 01:14:43,410 --> 01:14:45,940 Gmail má klávesové skratky. 1253 01:14:45,940 --> 01:14:49,490 Ako Google implementovať klávesové skratky, ako je C pre písanie? 1254 01:14:49,490 --> 01:14:54,120 Oni počúvať udalostiam, ako sa im hovorí, ako onkeypress alebo OnKeyUp a OnKeyDown. 1255 01:14:54,120 --> 01:14:56,360 Ak ste niekedy vznášal myši nad nejakým menu 1256 01:14:56,360 --> 01:15:00,180 a zrazu, máte to, objaví ponuka alebo grafiku mení farbu, 1257 01:15:00,180 --> 01:15:01,920 ako to robia? 1258 01:15:01,920 --> 01:15:06,940 Skôr než počúvať onready alebo OnSubmit, môžete počúvať onmouseover alebo onmouseout. 1259 01:15:06,940 --> 01:15:10,920 >> Takže v skratke, s týmito veľmi jednoduché základy, ktoré sme začali, aby ste nepoškriabali povrch dnes 1260 01:15:10,920 --> 01:15:13,940 a budeme potápať v nadväznosti na stredu, budete mať stále viac, 1261 01:15:13,940 --> 01:15:17,530 právomoc vykonávať veľa vecí, ktoré ste už zvyknutí. 1262 01:15:17,530 --> 01:15:21,620 Takže poďme nekončí, a my budeme pokračovať v tomto stredu. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]