1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> DAVID Malan: Dobre. 3 00:00:12,360 --> 00:00:15,970 To je CS50, a to je Koniec týždňa deväť. 4 00:00:15,970 --> 00:00:18,560 Je to už viac ako víchrica v posledných niekoľkých dňoch. 5 00:00:18,560 --> 00:00:21,580 A problém nastaviť sedem, ak ste koleno hlboko do nej uvedomiť, že je to celkom 6 00:00:21,580 --> 00:00:23,340 trochu nové, že tam je. 7 00:00:23,340 --> 00:00:26,660 Ale uvidíme, či nemôžeme poskladať všetko dohromady tu krátko 8 00:00:26,660 --> 00:00:29,230 skôr potom skáču off v ešte iný smer a vidí 9 00:00:29,230 --> 00:00:30,510 kde ešte môžeme ísť. 10 00:00:30,510 --> 00:00:32,630 >> Takže tak ďaleko, sme hovorili o HTML. 11 00:00:32,630 --> 00:00:33,740 Hovorili sme o CSS. 12 00:00:33,740 --> 00:00:34,705 Hovorili sme o PHP. 13 00:00:34,705 --> 00:00:36,520 Začali ste zažiť SQL. 14 00:00:36,520 --> 00:00:38,360 Dnes budeme hovoriť trochu o JavaScriptu. 15 00:00:38,360 --> 00:00:41,230 Ale ako všetky tieto nesúrodé jazyky zapadajú? 16 00:00:41,230 --> 00:00:44,970 >> Tak sme hovorili minulý týždeň o Pojem má server. 17 00:00:44,970 --> 00:00:48,470 Tak nech to jednoducho nakresliť tento obdĺžnik ako webový server tu. 18 00:00:48,470 --> 00:00:52,200 A webový server slúži veď súbory. 19 00:00:52,200 --> 00:00:54,640 A niektoré z týchto súborov môže byť HTML súbory. 20 00:00:54,640 --> 00:00:58,270 Takže jedna z vecí, ktoré webový server môže vypľuť môže byť súbor, ktorý 21 00:00:58,270 --> 00:01:01,290 jednoducho budeme kresliť takhle obsahujú niektoré HTML. 22 00:01:01,290 --> 00:01:04,786 Takže laicky povedané, to, čo HTML sa vám to? 23 00:01:04,786 --> 00:01:06,036 >> DIVÁKOV: Strana vyzerať pekne. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> DAVID Malan: OK, aby stránka vyzerala pekne, aj keď myslím, že som ukázal 26 00:01:12,310 --> 00:01:13,370 ktoré by inak. 27 00:01:13,370 --> 00:01:18,250 Takže HTML sa vám rozloženia stránok štrukturálne, a to vám umožní 28 00:01:18,250 --> 00:01:22,410 trochu esteticky označiť stránku, označiť statický obsah, takže si 29 00:01:22,410 --> 00:01:23,640 potom môžete zobraziť pomocou webového prehliadača. 30 00:01:23,640 --> 00:01:24,690 >> Ale to je kľúč. 31 00:01:24,690 --> 00:01:26,130 Je to statický obsah. 32 00:01:26,130 --> 00:01:28,590 Môžete napísať, ju uložíte, a potom ich odoslať. 33 00:01:28,590 --> 00:01:31,130 A webový server potom slúži že až vaše návštevníkov. 34 00:01:31,130 --> 00:01:35,700 >> Ale štylizovať veci pomocou iného jazyka vôbec. 35 00:01:35,700 --> 00:01:40,150 Začali sme používať atribút style o niektorých značiek. 36 00:01:40,150 --> 00:01:43,400 A štýl atribút vydajme veci, ako je veľkosť a farbu písma. 37 00:01:43,400 --> 00:01:46,460 A pravdepodobne ste začali objavovať, alebo čoskoro budú pre konečné 38 00:01:46,460 --> 00:01:50,160 projekty potenciálne ešte iné vlastnosti, ktoré môžete použiť v CSS. 39 00:01:50,160 --> 00:01:54,710 A tak v Laicky povedané, to, čo Naozaj potom sa CSS robiť? 40 00:01:54,710 --> 00:01:57,810 To sú len príklady tohto rozhodnutia. 41 00:01:57,810 --> 00:02:00,730 Čo to nechať urobiť HTML Nezdá sa, že z toho, čo 42 00:02:00,730 --> 00:02:02,606 sme videli tak ďaleko? 43 00:02:02,606 --> 00:02:04,850 >> DIVÁKOV: Definovať štýly sami. 44 00:02:04,850 --> 00:02:06,700 >> DAVID Malan: Definovať štýly sami. 45 00:02:06,700 --> 00:02:10,280 Takže definovať veci ako triedy ako vy sa mohli stretnúť, alebo jednoznačne 46 00:02:10,280 --> 00:02:13,800 identifikovať uzly v dokumente tak, ktoré si môžete štylizovať ich. 47 00:02:13,800 --> 00:02:16,890 Ale konkrétne, povedal by som, že CSS naozaj vám umožní vziať veci 48 00:02:16,890 --> 00:02:20,790 poslednej míle a umožňuje určiť oveľa presnejšie estetika, 49 00:02:20,790 --> 00:02:24,340 vzhľadom k tomu, HTML z väčšej časti umožňuje si štruktúru svojej stránky. 50 00:02:24,340 --> 00:02:27,310 >> A aj keď existujú niektoré defaults, ako sme videli značku pre 51 00:02:27,310 --> 00:02:30,690 záhlavie tag, ktorý zhruba povedané robil veci veľké a tučné. 52 00:02:30,690 --> 00:02:34,250 To je dosť všeobecná definícia o značke - veľký a odvážny. 53 00:02:34,250 --> 00:02:35,260 Aká je veľkosť písma, že? 54 00:02:35,260 --> 00:02:36,080 Akú farbu má, že? 55 00:02:36,080 --> 00:02:36,890 Ako tučne je? 56 00:02:36,890 --> 00:02:39,830 A CSS umožňuje jemnejšie ladenie a podobné veci. 57 00:02:39,830 --> 00:02:42,150 Ako aj usporiadanie, pretože niektoré z vás videli. 58 00:02:42,150 --> 00:02:45,180 >> A úprimne povedané, CSS je trochu z chaotický jazyka. 59 00:02:45,180 --> 00:02:48,370 Je to veľmi silný v tom, že si môžete robiť doslova všetky webové stránky, ktoré ste 60 00:02:48,370 --> 00:02:51,880 vidieť na webe dnes, ale je to trochu bolesti v krku. 61 00:02:51,880 --> 00:02:54,440 A niektorí z vás udrel hlavou proti múru už len robiť 62 00:02:54,440 --> 00:02:58,560 niečo hlúpeho ako centra menu na problém nastaviť sedem, ak ste sa dostali do 63 00:02:58,560 --> 00:02:59,470 tento bod už. 64 00:02:59,470 --> 00:03:01,530 >> Ale uvedomiť si, tie veci mať ľahšie v priebehu času. 65 00:03:01,530 --> 00:03:02,820 Začnete všímať vzory. 66 00:03:02,820 --> 00:03:06,020 A opäť, Google bude váš priateľ pre rôzne spôsoby, v ktorom môžete 67 00:03:06,020 --> 00:03:07,220 riešiť tieto druhy problémov. 68 00:03:07,220 --> 00:03:11,520 >> A trúfam si povedať s CSS a HTML viac Všeobecne platí, že môžete vyriešiť problémy 69 00:03:11,520 --> 00:03:15,910 mnoho ďalších spôsobov, možno všetky, ktoré veľmi rovnako správne, ako by ste mohli 70 00:03:15,910 --> 00:03:18,900 niečo ako C, a to aj Teraz PHP alebo JavaScript. 71 00:03:18,900 --> 00:03:21,080 Existuje len mnoho rôznych spôsoby, ako položiť veci. 72 00:03:21,080 --> 00:03:22,570 >> Ale to sa začali chaotický, sme si povedali. 73 00:03:22,570 --> 00:03:26,480 Len trochu zmiešaním svoje HTML a Váš CSS s atribút štýl bol 74 00:03:26,480 --> 00:03:27,590 trochu nedbalý. 75 00:03:27,590 --> 00:03:31,460 A tak sme namiesto toho povedal, tak nejako abstraktne povedané, že by ste mali 76 00:03:31,460 --> 00:03:34,050 aspoň začať faktor sa vaše CSS pravdepodobne. 77 00:03:34,050 --> 00:03:37,430 Nie je váš štýl atribúty, ale aspoň používajte štýl značky vnútro čo 78 00:03:37,430 --> 00:03:38,840 časť webovej stránky? 79 00:03:38,840 --> 00:03:39,560 >> Divákov: hlava. 80 00:03:39,560 --> 00:03:40,120 >> DAVID Malan: Do hlavy. 81 00:03:40,120 --> 00:03:43,270 Až doteraz sme mali len titul až tam, ale môžete tiež pridať štýl 82 00:03:43,270 --> 00:03:47,230 tag, a vy môžete dať svoje CSS zhruba rozprávanie k hornej časti stránky. 83 00:03:47,230 --> 00:03:52,550 Ale potom sme si vzali veci o krok ďalej a my zapracované, že z viacerých 84 00:03:52,550 --> 00:03:54,130 do samostatného súboru. 85 00:03:54,130 --> 00:03:57,240 >> A tak sa tieto dva súbory boli nejako teraz prepojený. 86 00:03:57,240 --> 00:03:59,550 A naozaj to bolo tag, ktorý to urobil. 87 00:03:59,550 --> 00:04:02,920 A to, čo bolo jednou z hlavných motivácia pre factoring sa na naše CSS 88 00:04:02,920 --> 00:04:04,057 o to viac? 89 00:04:04,057 --> 00:04:05,280 >> Divákov: znovupoužitelnost. 90 00:04:05,280 --> 00:04:05,785 >> DAVID Malan: znovupoužitelnost. 91 00:04:05,785 --> 00:04:06,150 Je to tak? 92 00:04:06,150 --> 00:04:09,470 Možno ste videli v p-set sedem už že veľa stránok, 93 00:04:09,470 --> 00:04:12,260 nákup stránku, predaj stránku portfólio strana, sú pravdepodobne 94 00:04:12,260 --> 00:04:13,550 štruktúrovaný trochu podobne. 95 00:04:13,550 --> 00:04:17,579 Je tu CS50 financie logo hore ak ste sa rozhodli zmeniť. 96 00:04:17,579 --> 00:04:19,839 K dispozícii je päta na spodnej časti stránky. 97 00:04:19,839 --> 00:04:24,315 A CSS umožňuje potom faktor von ich do samostatného súboru tak, že ak 98 00:04:24,315 --> 00:04:27,780 Ak chcete niečo zmeniť globálne po celý svoj web, môžete si naozaj 99 00:04:27,780 --> 00:04:29,390 stačí zmeniť na jednom mieste. 100 00:04:29,390 --> 00:04:32,750 >> Ale tam je cena, ktorú zaplatíte potenciálne tým, že počítaná 101 00:04:32,750 --> 00:04:38,380 CSS z môjho súbor HTML, do samostatnej súbor odkazovanie sa 102 00:04:38,380 --> 00:04:40,650 tag, ktorý sme videli v pondelok. 103 00:04:40,650 --> 00:04:43,850 Čo by mohlo Nevýhodou je to? 104 00:04:43,850 --> 00:04:48,830 Myslenie späť pred týždňom, keď sme hovorí o HTTP a TCP / IP a ako 105 00:04:48,830 --> 00:04:52,070 internet funguje. 106 00:04:52,070 --> 00:04:53,530 Niečo tu? 107 00:04:53,530 --> 00:04:54,730 >> DIVÁKOV: To zaberie viac času. 108 00:04:54,730 --> 00:04:55,470 >> DAVID Malan: To zaberie viac času. 109 00:04:55,470 --> 00:04:56,750 Prečo? 110 00:04:56,750 --> 00:04:59,450 >> DIVÁKOV: [nepočuteľné]. 111 00:04:59,450 --> 00:04:59,750 >> DAVID Malan: Jo. 112 00:04:59,750 --> 00:05:01,240 Tak to pravdepodobne trvá trochu viac času. 113 00:05:01,240 --> 00:05:04,290 Vzhľadom k tomu, jeden, CSS je samozrejme nie je v rovnakom súbore. 114 00:05:04,290 --> 00:05:06,920 Takže teraz máte robiť nie jeden, ale dve požiadavky. 115 00:05:06,920 --> 00:05:11,230 A každý z týchto požiadaviek, ako sme videli v Chrome v tzv Inspector, 116 00:05:11,230 --> 00:05:15,740 a my sme sa pozerali na karte siete, každý z týchto súborov vyžaduje jeden HTTP 117 00:05:15,740 --> 00:05:18,360 požiadavka, ktorý sme videli sa určité množstvo času. 118 00:05:18,360 --> 00:05:19,290 Teraz, možno, že to nie je veľa. 119 00:05:19,290 --> 00:05:20,670 Možno je to len 20 milisekúnd. 120 00:05:20,670 --> 00:05:22,260 Možno je to 200 milisekúnd. 121 00:05:22,260 --> 00:05:25,530 >> Ale premýšľať o stránke, ako je Facebook, alebo CNN alebo Google, ktoré sú oveľa 122 00:05:25,530 --> 00:05:28,060 väčší než príkladoch sme Pozrel sa na tak ďaleko. 123 00:05:28,060 --> 00:05:32,070 Tieto stránky môžu mať desiatky súborov, pričom každý z nich môže vyžadovať 124 00:05:32,070 --> 00:05:33,550 sťahovanie súboru. 125 00:05:33,550 --> 00:05:35,800 Takže čo môže potenciálne začať spomaľovať. 126 00:05:35,800 --> 00:05:39,280 >> A najmä v týchto dňoch, kedy sme sa všetci majú mobilné telefóny v našich vreckách a 127 00:05:39,280 --> 00:05:43,010 pomalšie pripojenie k internetu, ktoré majú na počkajte pár milisekúnd, pár 128 00:05:43,010 --> 00:05:46,110 viac milisekúnd pre ďalšie Súbory môžu byť v skutočnosti pomalé. 129 00:05:46,110 --> 00:05:50,430 Latencia je slovo, ktoré opisuje druh čakania, ktoré máte, že vám 130 00:05:50,430 --> 00:05:53,110 skúsenosti pri čakaní na niektorí údaj. 131 00:05:53,110 --> 00:05:54,430 >> Ale je tu hore. 132 00:05:54,430 --> 00:05:56,600 Takže to nie je všetko tak nejako - 133 00:05:56,600 --> 00:05:58,170 v skutočnosti je trochu hojdačke tu. 134 00:05:58,170 --> 00:06:02,970 Spomalenie teraz, ale to, čo prehliadača môžu robiť v prípade, že sú inteligentné, aby sa zabránilo 135 00:06:02,970 --> 00:06:08,870 museli žiadať rovnaký Styles.css súbor opäť možné urobiť, čo? 136 00:06:08,870 --> 00:06:09,390 >> Cache je. 137 00:06:09,390 --> 00:06:10,370 Takže cache - 138 00:06:10,370 --> 00:06:11,690 C-A-C-H-E - 139 00:06:11,690 --> 00:06:15,810 všeobecne znamená, že tu práve pre uloženie súbor, ktorý požiadal prvýkrát, a 140 00:06:15,810 --> 00:06:17,440 potom skontrolovať cache pre neho. 141 00:06:17,440 --> 00:06:20,400 Skontrolujte, či ste nejako skladovacie nádoby, a ak už máte 142 00:06:20,400 --> 00:06:24,520 kópie styles.css, aj keď niektoré ďalšie Stránka v p-set, alebo akejkoľvek webovej stránky, 143 00:06:24,520 --> 00:06:28,560 žiada znova, len aby Užívateľ, ktorý rovnaký medzipamäte kópie. 144 00:06:28,560 --> 00:06:30,140 Neobťažujte sa o to požiada. 145 00:06:30,140 --> 00:06:32,560 >> Spomalenie tam, aj keď, ako sa niektorí z vás sa zakopol v p-set. 146 00:06:32,560 --> 00:06:35,870 Ak urobíte zmenu na serveri a sa vrátite do prehliadača a vy 147 00:06:35,870 --> 00:06:39,250 znovu, niekedy prehliadač nemá si láskavosť a neobťažuje 148 00:06:39,250 --> 00:06:43,660 znovu stiahnuť váš Styles.css súbor pretože, no, aká je pravdepodobnosť, 149 00:06:43,660 --> 00:06:47,620 že tieto štýly, ktoré Facebook používa sa bude meniť každú hodinu, alebo 150 00:06:47,620 --> 00:06:48,140 zo dňa na deň? 151 00:06:48,140 --> 00:06:48,800 Je to celkom nízka. 152 00:06:48,800 --> 00:06:52,260 Môžu v priebehu času mení, ale nie minútu od minúty alebo hodiny. 153 00:06:52,260 --> 00:06:55,810 >> Takže trik, len FYI, keď robí web vývoj, je často podržte 154 00:06:55,810 --> 00:06:59,500 klávesy shift napríklad a potom kliknite na tlačidlo znovu vo svojom prehliadači, a ktorý bude 155 00:06:59,500 --> 00:07:03,280 typicky povedať prehliadača znovu načítať všetko, aj keď už máte 156 00:07:03,280 --> 00:07:04,180 je vo vyrovnávacej pamäti. 157 00:07:04,180 --> 00:07:06,630 Takže znovu, upsides a nevýhody, ale všetky z nich 158 00:07:06,630 --> 00:07:08,260 nakoniec navrhnúť rozhodnutie. 159 00:07:08,260 --> 00:07:11,520 >> Takže teraz, sme nielen koniec príbehu tu. 160 00:07:11,520 --> 00:07:15,790 Keby som sa vrátiť a späť a späť a späť, sme začali zavádzať nielen 161 00:07:15,790 --> 00:07:18,060 HTML, ale PHP. 162 00:07:18,060 --> 00:07:20,786 Takže laicky povedané, to, čo sa PHP poďme robiť? 163 00:07:20,786 --> 00:07:22,770 >> DIVÁKOV: [nepočuteľné]. 164 00:07:22,770 --> 00:07:24,258 >> DAVID Malan: Čo je to? 165 00:07:24,258 --> 00:07:25,250 >> DIVÁKOV: Zaviesť logiku do kódu. 166 00:07:25,250 --> 00:07:26,620 >> DAVID Malan: Jo, zaviesť logika do vášho kódu. 167 00:07:26,620 --> 00:07:29,570 Takže je to pravda, programovací jazyk s slučky, a premenné, a 168 00:07:29,570 --> 00:07:32,620 funkcie, a podmienky, a všetky veci, ktoré sme používali cestu späť 169 00:07:32,620 --> 00:07:33,780 keď od samého začiatku. 170 00:07:33,780 --> 00:07:36,780 A PHP, ktoré sme videli, môže byť použitý buď na príkazovom riadku - to 171 00:07:36,780 --> 00:07:39,190 nemusí mať nič spoločné s webom, a to aj napriek tomu, že je 172 00:07:39,190 --> 00:07:43,150 naozaj jeho pôvod a to, čo má tendenciu byť dobrý v a prispieva k - 173 00:07:43,150 --> 00:07:47,130 ale môžete použiť PHP len podľa povahy k tomu, že sa má tlač () 174 00:07:47,130 --> 00:07:49,660 funkcie, a funkcie printf (), alebo echo () funkcie. 175 00:07:49,660 --> 00:07:52,440 Je tu hrozno zo spôsobov, ako si môžete tlačiť text s PHP. 176 00:07:52,440 --> 00:07:56,540 >> Preto, môžete použiť tento programovanie jazyk na výstupe presne 177 00:07:56,540 --> 00:07:58,460 to, čo sme hovorili predtým. 178 00:07:58,460 --> 00:08:01,360 Môžete dynamicky vytvárať vaše HTML. 179 00:08:01,360 --> 00:08:02,300 Možno, že nie všetky z nich. 180 00:08:02,300 --> 00:08:06,460 Možno, že tvrdé kód veci, ako je hlavičky a päty, a logo, 181 00:08:06,460 --> 00:08:07,950 a vaše štýlov, a všetky, ktoré. 182 00:08:07,950 --> 00:08:11,190 Ale niečo ako p-set sedem, kam manipuláciu zásoby a 183 00:08:11,190 --> 00:08:14,690 ukazuje portfólio užívateľa, ktorý je bude dynamicky meniť, môžete 184 00:08:14,690 --> 00:08:18,960 určite používať PHP a logiku to dáva ste ako programovací jazyk pre 185 00:08:18,960 --> 00:08:22,320 výstup dynamicky podskupín stránky. 186 00:08:22,320 --> 00:08:25,900 >> Takže keď budete hovoriť o dynamických webových stránok, alebo webové programovanie, ktoré je 187 00:08:25,900 --> 00:08:27,200 čo ste naozaj hovoríš. 188 00:08:27,200 --> 00:08:31,450 Používania jazyka, ako je PHP, alebo veci, s názvom Python, alebo Ruby alebo Java, alebo 189 00:08:31,450 --> 00:08:35,900 Zatiaľ iné jazyky, k dotazu na databázu často, alebo iný server, a 190 00:08:35,900 --> 00:08:38,580 potom dynamicky vypľuť HTML. 191 00:08:38,580 --> 00:08:42,470 >> Teraz konečný výsledok, ako stranou, je že HTML väčšiny webových stránok, 192 00:08:42,470 --> 00:08:45,970 vrátane svojej p-set sedem, je pravdepodobne Bude to obrovský zmätok, pokiaľ 193 00:08:45,970 --> 00:08:48,060 sa pozriete na zdroje kód v prehliadači. 194 00:08:48,060 --> 00:08:49,010 To nie je veľký problém. 195 00:08:49,010 --> 00:08:51,550 V tomto okamihu, kedy sa staráme o štýl, staráme sa o 196 00:08:51,550 --> 00:08:52,740 veci, ktoré píšete. 197 00:08:52,740 --> 00:08:56,240 Budeme sa nestarajú o veci že to, čo vaše výstupy kód. 198 00:08:56,240 --> 00:08:59,520 Takže sa nemusíte báť o odsadenie tu, ak je to PHP, ktorý je 199 00:08:59,520 --> 00:09:01,190 vlastne výstupu veci. 200 00:09:01,190 --> 00:09:04,430 Koniec koncov, bude prehliadač nie je jedno, a človek nebude hľadať 201 00:09:04,430 --> 00:09:05,400 pri zdroji rovnako. 202 00:09:05,400 --> 00:09:09,000 My zamestnanci, napríklad, by pri pohľade na vaše PHP. 203 00:09:09,000 --> 00:09:13,440 >> Takže mi dovoľte dať rýchly príklad teraz prečo inak by to mohlo byť užitočné. 204 00:09:13,440 --> 00:09:18,620 Takže úprimne povedané, nemôžem si spomenúť posledný Keď som použiť C vyriešiť problém 205 00:09:18,620 --> 00:09:19,620 reálny svet. 206 00:09:19,620 --> 00:09:22,330 Bolo to pravdepodobne v postgraduálnom štúdiu, keď Potreboval som sa použiť jazyk, ktorý 207 00:09:22,330 --> 00:09:26,710 Bol pomerne nízkej úrovni, a dal mi príležitosť urobiť niečo veľmi vysokú 208 00:09:26,710 --> 00:09:30,720 predvádzanie naozaj ušetriť toľko CPU cyklov, ako som mohol, z veľkej časti 209 00:09:30,720 --> 00:09:33,990 pretože som bol s použitím veľké dátové súbory, a každý CPU cyklu počíta. 210 00:09:33,990 --> 00:09:37,750 A úprimne povedané, aj vo veciach, ako sú mobilné telefóny v týchto dňoch a ďalšie zariadenia 211 00:09:37,750 --> 00:09:39,910 kde nemáte dosť mať toľko pamäte a nemáte dosť mať za 212 00:09:39,910 --> 00:09:44,160 veľa CPU, vďaka rýchlejším jazykov je stále atraktívna. 213 00:09:44,160 --> 00:09:47,290 >> Ale v reálnom svete, keď ste práve chcem hodiť nejaký program, spoločne so 214 00:09:47,290 --> 00:09:50,340 analyzovať niektoré údaje, alebo ste nazbierali Celá partia registráciou pre 215 00:09:50,340 --> 00:09:53,330 niektoré študentská skupina a chcete sa veľmi rýchlo automatizovať odosielanie e-mailov 216 00:09:53,330 --> 00:09:56,240 jeden po druhom, aby každý z tých o registrácii, budete dosiahnuť na 217 00:09:56,240 --> 00:09:59,240 jazyk vyššej úrovne ako C, aby som tak povedal. 218 00:09:59,240 --> 00:10:04,060 Niečo ako PHP alebo Python alebo Ruby, alebo pol tucta ďalších, ktoré existujú 219 00:10:04,060 --> 00:10:04,550 v týchto dňoch. 220 00:10:04,550 --> 00:10:07,200 Ale tí traja sú pravdepodobne Najviac trendy práve teraz. 221 00:10:07,200 --> 00:10:10,840 >> A čo to znamená, je to, že môžete otvoriť do textového editora, napríklad gedit alebo 222 00:10:10,840 --> 00:10:14,030 väčšina niečo iné a potom už len začať písanie kódu, bez toho aby sa museli starať 223 00:10:14,030 --> 00:10:17,800 o zostavovaní, bez toho aby ste museli naozaj starať o správu pamäte, 224 00:10:17,800 --> 00:10:20,820 mať na pamäti, že aj keď trochu povrchnosť sa nakoniec vráti 225 00:10:20,820 --> 00:10:24,790 vás uhryznúť, ak dátový súbor dostane väčší alebo problém dostane veľký. 226 00:10:24,790 --> 00:10:27,230 Ale čo to znamená pre nám je nasledujúci. 227 00:10:27,230 --> 00:10:29,860 >> Nechaj ma ísť napred a spustiť pravopisu od problém nastaviť šesť. 228 00:10:29,860 --> 00:10:33,480 Tak toto je moja implementácia trie na báze ktoré som použil na veľký 229 00:10:33,480 --> 00:10:35,500 board, kde som vykonal to tak dobre. 230 00:10:35,500 --> 00:10:38,720 Vrátime sa za týždeň a znovu tých, ktorí sa skončiť na vrchole 231 00:10:38,720 --> 00:10:40,430 veľká tabuľa na našej poslednej prednáške. 232 00:10:40,430 --> 00:10:44,520 Ale teraz, nechaj ma ísť dopredu a len spustiť môj riešenie v texte, a budeme robiť 233 00:10:44,520 --> 00:10:48,460 King James Biblie, a ideme na to. 234 00:10:48,460 --> 00:10:51,080 >> Tak to sú všetci údajne chybne zapísaná slová z 235 00:10:51,080 --> 00:10:52,240 King James Bible. 236 00:10:52,240 --> 00:10:55,560 A môj realizácia sa pol druhej v celkom. 237 00:10:55,560 --> 00:10:58,270 Takže nie je tak zlé na to najmä počítače. 238 00:10:58,270 --> 00:11:01,540 Ale premýšľať o tom, koľko Kód som musel napísať. 239 00:11:01,540 --> 00:11:02,880 Zamyslite sa, koľko kód, ktorý musel napísať. 240 00:11:02,880 --> 00:11:06,170 Zamyslite sa, koľko hodín ste strávili v D-haly alebo na koľaji, alebo tam, kde 241 00:11:06,170 --> 00:11:07,890 vlastne kódovanie sa toto riešenie. 242 00:11:07,890 --> 00:11:11,850 >> No, keď som v skutočnosti majú vyššiu úroveň jazyk ako PHP, vziať na vedomie 243 00:11:11,850 --> 00:11:13,350 čo sa dá robiť. 244 00:11:13,350 --> 00:11:16,410 Najprv predpokladajme, že je to miesto vaša distribúcia kódu. 245 00:11:16,410 --> 00:11:17,790 Jedná sa o súbor s názvom pravopisu. 246 00:11:17,790 --> 00:11:20,220 Je k dispozícii ako súčasť dnešnej distribúcia kód. 247 00:11:20,220 --> 00:11:22,670 A budem mávať moju ruku nanajvýš detailov, ale to je vlastne 248 00:11:22,670 --> 00:11:25,500 zaujímavý príklad toho, ako by ste mohli portu jazyk 249 00:11:25,500 --> 00:11:28,870 ako C cez PHP. 250 00:11:28,870 --> 00:11:33,420 Doslova som otvoril dve textové okná, jeden s mojím C verzie speller.c, 251 00:11:33,420 --> 00:11:36,960 a ja som práve začal jeho preklad v mojom zamierte do PHP a písať to pomocou 252 00:11:36,960 --> 00:11:38,840 najbližšou ekvivalentnou funkcie. 253 00:11:38,840 --> 00:11:40,100 >> Takže niektoré z týchto vecí sú rôzne. 254 00:11:40,100 --> 00:11:43,730 Videli sme minule, že PHP nepoužíva sú v úplne rovnakým spôsobom. 255 00:11:43,730 --> 00:11:47,050 Používa sa zvyčajne vyžaduje, aj keď patrí skutočne existuje. 256 00:11:47,050 --> 00:11:50,330 Definujte je trochu odlišný od # Define v C, ale to je 257 00:11:50,330 --> 00:11:51,890 ako urobiť konštantu. 258 00:11:51,890 --> 00:11:55,860 $ Argc to dopadá existuje v PHP, takže sme predtým videli, že. 259 00:11:55,860 --> 00:11:58,650 To sú len premenné, všetko z ktoré začínajú znakmi dolára. 260 00:11:58,650 --> 00:12:00,590 Pripomeňme, to sú len banda plávajúce bodov. 261 00:12:00,590 --> 00:12:03,970 >> Tak dlhý príbeh krátky, ste vítaní flip cez to, ak zvedavý, je to 262 00:12:03,970 --> 00:12:10,010 takmer line-pre-line konverzie C verzie speller.c do PHP. 263 00:12:10,010 --> 00:12:12,630 A môžete to urobiť znova pol tucta ďalších jazykov. 264 00:12:12,630 --> 00:12:14,910 >> Ale čo je zaujímavé je to. 265 00:12:14,910 --> 00:12:16,910 Alebo to, čo je povedané skľučujúca je to. 266 00:12:16,910 --> 00:12:20,790 Nechaj ma ísť do toho a napíšte o dictionary.php, a tvrdia, že som 267 00:12:20,790 --> 00:12:23,670 ísť dopredu a re-implementovať problém nastaviť šesť tu. 268 00:12:23,670 --> 00:12:27,530 >> Takže poďme navrhnúť ako prvý, že v tomto súbor, ktorý bude realizovaný v roku 269 00:12:27,530 --> 00:12:30,550 PHP, tak nech mi otvorí svoje značky, ako je to. 270 00:12:30,550 --> 00:12:34,780 Dovoľte mi, aby som sám globálne Premenná $ veľkosť dostane na nulu. 271 00:12:34,780 --> 00:12:36,710 A ja idem dať Sám hash tabuľky. 272 00:12:36,710 --> 00:12:38,110 Budem používať hash tabuľky pre túto vec. 273 00:12:38,110 --> 00:12:42,070 Ako môžem vyhlásiť hash tabuľky v PHP? 274 00:12:42,070 --> 00:12:42,990 Hotovo. 275 00:12:42,990 --> 00:12:43,980 OK. 276 00:12:43,980 --> 00:12:48,870 >> Takže ľavá zátvorka zátvorka predstavuje čo v PHP, ako sme videli? 277 00:12:48,870 --> 00:12:51,850 Poľa, ale pole, ktoré by mohli byť asociatívne pole. 278 00:12:51,850 --> 00:12:54,320 Asociatívne pole je dátová štruktúra, ktorá 279 00:12:54,320 --> 00:12:55,860 združuje kľúče s hodnotami. 280 00:12:55,860 --> 00:12:59,430 >> Teraz v najjednoduchšie číselne indexované polia, tieto klávesy sú, čo? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 Nula, jedna, dva, tri, jo? 283 00:13:03,960 --> 00:13:08,780 Old school veci späť od C. Ale to môže byť aj reťazca ako foo a bar, 284 00:13:08,780 --> 00:13:12,210 alebo Maxwell, poprípade za reťazec. 285 00:13:12,210 --> 00:13:14,240 Takže môžem využiť, že za chvíľu. 286 00:13:14,240 --> 00:13:17,550 >> Nechaj ma ísť dopredu a vyhlásiť funkcie ako - 287 00:13:17,550 --> 00:13:19,020 poďme urobiť prvý load (). 288 00:13:19,020 --> 00:13:20,690 Takže funkcia load (). 289 00:13:20,690 --> 00:13:23,440 A PHP je v tom, že trochu iný doslova typ funkcie, ale 290 00:13:23,440 --> 00:13:24,930 nezadáte návratový typ. 291 00:13:24,930 --> 00:13:28,760 Chystám sa ísť ďalej a hovoria, že funkcia load () by mala v 292 00:13:28,760 --> 00:13:31,000 Argument $ slovník, len ako C verzie robila. 293 00:13:31,000 --> 00:13:32,510 Robím, že z pamäte. 294 00:13:32,510 --> 00:13:34,910 >> A ja navrhujem, že som bude to robiť. 295 00:13:34,910 --> 00:13:37,080 Ja proste robiť foreach. 296 00:13:37,080 --> 00:13:40,710 Idem zavolať funkciu nazvanú súbor (), prechádzajúce v názve, ktorá 297 00:13:40,710 --> 00:13:44,990 súbor, ktorý je variabilný $ Slovník ako $ slovo. 298 00:13:44,990 --> 00:13:49,410 A potom sa v mojej slučky for tu, som ísť dopredu a skladovať v mojom 299 00:13:49,410 --> 00:13:57,440 $ Tabuľka $ slovo dostane pravda. 300 00:13:57,440 --> 00:13:57,918 Hotovo. 301 00:13:57,918 --> 00:14:01,264 Oh, počkaj. 302 00:14:01,264 --> 00:14:02,422 Hotovo. 303 00:14:02,422 --> 00:14:02,760 OK. 304 00:14:02,760 --> 00:14:04,970 >> To je záťaž funkcia () hovoria v PHP. 305 00:14:04,970 --> 00:14:05,865 A teraz, prečo to má fungovať? 306 00:14:05,865 --> 00:14:07,010 A ja som trochu podvádzanie tu. 307 00:14:07,010 --> 00:14:09,980 >> Tak, jeden, foreach sme videli krátko minule. 308 00:14:09,980 --> 00:14:13,680 To len znamená, že môžete iterácii pole, bez toho aby sa obťažoval sa aj 309 00:14:13,680 --> 00:14:16,150 a n a a a, a to všetko. 310 00:14:16,150 --> 00:14:21,350 Slovník je samozrejme názov súboru, niečo ako veľký alebo malý, dva 311 00:14:21,350 --> 00:14:22,830 slovníky, ktoré sme použili minule. 312 00:14:22,830 --> 00:14:26,715 Súbor je funkcia, ktorá otvára texte súbor, prečíta ju v riadok po riadku, a 313 00:14:26,715 --> 00:14:29,840 ruky môžete zálohovať obrovskú škálu, každý z ktorého prvkov sa 314 00:14:29,840 --> 00:14:31,340 riadok z tohto súboru. 315 00:14:31,340 --> 00:14:36,040 Tak to je kombinácia fopen, a fread, a zatiaľ čo slučka, a fclose, 316 00:14:36,040 --> 00:14:37,080 a všetky, ktoré. 317 00:14:37,080 --> 00:14:40,150 Napokon, ako slovo jednoducho znamená, že je Premenná Budem mať prístup k 318 00:14:40,150 --> 00:14:41,890 na každej iterácii v tejto slučke. 319 00:14:41,890 --> 00:14:46,910 >> Takže v skratke, táto jedna vložka sa tu rozumie otvoriť súbor, ktorého meno je v 320 00:14:46,910 --> 00:14:50,750 slovník, variabilný, iterácii je riadok po riadku, a zakaždým, keď sa 321 00:14:50,750 --> 00:14:54,290 linka, sklad v premennej s názvom slovom, a potom urobiť niečo so slovom. 322 00:14:54,290 --> 00:14:55,280 Čo chcem robiť? 323 00:14:55,280 --> 00:14:58,110 Chcem vložiť slovo do môjho hash tabuľky. 324 00:14:58,110 --> 00:15:00,860 >> No, môžem dať niečo v mojom hash tabuľky, rovnako ako v C 325 00:15:00,860 --> 00:15:02,140 pomocou hranatých zátvoriek. 326 00:15:02,140 --> 00:15:03,660 To je meno mojej tabuľky hash. 327 00:15:03,660 --> 00:15:07,180 Budem index do tohto hash tabuľka na tomto mieste. 328 00:15:07,180 --> 00:15:08,920 Takže nie je bracketing nula, nie je bracketing jeden. 329 00:15:08,920 --> 00:15:11,990 Držiak citácie koniec citátu niečo, čo to slovo je. 330 00:15:11,990 --> 00:15:15,200 A rovnako ako môžete mať vo vašom hash table práce trie, ktorý ste práve obchod 331 00:15:15,200 --> 00:15:17,650 účinne Boolean, implicitne alebo explicitne. 332 00:15:17,650 --> 00:15:18,260 Hotovo. 333 00:15:18,260 --> 00:15:20,000 Ja skladovanie hodnota true. 334 00:15:20,000 --> 00:15:23,150 >> Teraz je tu pár vecí, Som rezanie zákrut na tu. 335 00:15:23,150 --> 00:15:27,720 Technicky vzaté, tam to bude nepríjemné nový riadok, / n, na konci 336 00:15:27,720 --> 00:15:28,820 každé z týchto slov. 337 00:15:28,820 --> 00:15:31,770 Takže som mal asi zavolať funkciu PHP tzv chop (), ktorá bude 338 00:15:31,770 --> 00:15:33,460 doslova kosiť to preč. 339 00:15:33,460 --> 00:15:35,020 A ja naozaj potrebujete urobiť ešte jednu vec. 340 00:15:35,020 --> 00:15:38,380 Asi by som mala zvýšiť veľkosť na každom iterácie, takže som sledovanie 341 00:15:38,380 --> 00:15:39,560 na celom svete o tom, čo to je. 342 00:15:39,560 --> 00:15:43,180 A úprimne povedané, a to je jeden z hlúpejší aspekty PHP ak ste 343 00:15:43,180 --> 00:15:46,950 použitie globálne premenné, je nutné explicitne povedať, že ste. 344 00:15:46,950 --> 00:15:51,670 Takže budem vlastne písať v globálnom $ Veľkosť, global $ table, a teraz 345 00:15:51,670 --> 00:15:52,690 má funkcia je kompletný. 346 00:15:52,690 --> 00:15:57,475 >> Takže nie je tak jednoduché, ako predtým, ale Pravdepodobne trvalo kratšie ako C 347 00:15:57,475 --> 00:15:58,220 verzia, možná? 348 00:15:58,220 --> 00:15:58,730 OK. 349 00:15:58,730 --> 00:16:00,390 >> Takže teraz poďme urobiť kontrolu funkcie (). 350 00:16:00,390 --> 00:16:04,300 Uvidíme, či to aspoň sa hodiny na konci, že nám to trvalo v C. Takže 351 00:16:04,300 --> 00:16:06,500 nechaj ma ísť dopredu a vyhlásiť kontrolu ako funkcie. 352 00:16:06,500 --> 00:16:09,070 Berie v argumente slovo, ktoré je príde z pravopisu. 353 00:16:09,070 --> 00:16:13,410 A ja som jednoducho ísť skontrolovať, či Nasledujúce premenné isset, stolný 354 00:16:13,410 --> 00:16:18,400 Držiak strtolower slová - 355 00:16:18,400 --> 00:16:20,590 poďme vyvážiť všetky moje zátvorkách - 356 00:16:20,590 --> 00:16:24,275 potom sa vrátiť pravda. 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 Else - 359 00:16:28,460 --> 00:16:30,330 to bolo naozaj ťažké Súčasťou tohto programu. 360 00:16:30,330 --> 00:16:31,940 Else, vráti false. 361 00:16:31,940 --> 00:16:32,630 Hotovo. 362 00:16:32,630 --> 00:16:33,460 To je kontrola (). 363 00:16:33,460 --> 00:16:34,520 >> A teraz, prečo to funguje? 364 00:16:34,520 --> 00:16:37,040 No, raz som prešiel v slove, čo je reťazec. 365 00:16:37,040 --> 00:16:41,400 Za druhé, ja som kontrolu vnútri hash stôl, ktorý sa nazýva $ tabuľka. 366 00:16:41,400 --> 00:16:45,470 Ja nútiť ju, aby malá volaním funkcia veľmi podobné tolower () v 367 00:16:45,470 --> 00:16:48,580 C, ale to robí celé slovo, nie je jediný znak. 368 00:16:48,580 --> 00:16:52,680 A v prípade, že je nastavený, inými slovami, že je nastavená hodnota, inými slovami, 369 00:16:52,680 --> 00:16:54,880 či je to pravda, potom áno, to je slovo. 370 00:16:54,880 --> 00:16:56,530 Pretože som ju tam s load (). 371 00:16:56,530 --> 00:16:59,100 A ak nie, budem sa vrátiť false. 372 00:16:59,100 --> 00:17:00,090 >> Teraz ostatné sú jednoduché. 373 00:17:00,090 --> 00:17:03,570 Veľkosť Function (), ako to mám urobiť? 374 00:17:03,570 --> 00:17:05,230 V podstate som to vrátiť $ veľkosť. 375 00:17:05,230 --> 00:17:07,770 Ale ja to technicky nevyhnutné urobiť tento nepríjemný vec. 376 00:17:07,770 --> 00:17:10,640 A vlastne sa počuť, bol som rezanie jeden roh príliš veľa. 377 00:17:10,640 --> 00:17:12,920 Ja naozaj potreba urobiť global $ tabuľku. 378 00:17:12,920 --> 00:17:16,260 >> Ale to bolo povedané, vyložiť). 379 00:17:16,260 --> 00:17:17,380 Uvoľniť () je úžasná. 380 00:17:17,380 --> 00:17:20,500 Funkcie vyložiť (). 381 00:17:20,500 --> 00:17:23,990 Ako môžem chcú zaviesť vyložiť ()? 382 00:17:23,990 --> 00:17:25,079 Hotovo. 383 00:17:25,079 --> 00:17:25,450 OK. 384 00:17:25,450 --> 00:17:28,900 >> Takže vyložiť (), správa pamäte je kompletne postarané pre vás 385 00:17:28,900 --> 00:17:31,800 niečo ako PHP a mnoho v jazykoch vyššej úrovne. 386 00:17:31,800 --> 00:17:32,600 Tak to je úžasné. 387 00:17:32,600 --> 00:17:36,080 Ako dôvod, prečo to sakra sme strávili na minulosť osem plus týždňov na C písomne 388 00:17:36,080 --> 00:17:41,030 zrejme docela pomalé, ale naozaj čas náročné problémy s desiatkami hodín 389 00:17:41,030 --> 00:17:42,530 z práce pod našimi pásy? 390 00:17:42,530 --> 00:17:46,110 >> No, na jednu vec, to môže fungovať pokuta pre malé programy. 391 00:17:46,110 --> 00:17:47,840 To iste zrýchlil my doba vývoja. 392 00:17:47,840 --> 00:17:49,790 Ale poďme sa pozrieť, čo sa deje v reálnom svete. 393 00:17:49,790 --> 00:17:52,370 >> Nechaj ma ísť do tohto adresára v termináli. 394 00:17:52,370 --> 00:17:53,370 Tam je kontrola pravopisu. 395 00:17:53,370 --> 00:17:56,570 A všimnite si, ako stranou, a vy by ste mohli sa stretol tento problém v nastavení 396 00:17:56,570 --> 00:17:58,190 šesť alebo problém nastaviť sedem. 397 00:17:58,190 --> 00:18:01,610 Nemusíte striktne nutné koniec PHP súbory s príponami. php. 398 00:18:01,610 --> 00:18:05,250 Ak dáte čiaru ako ten prvý na samom vrchole, to je zvláštne linka 399 00:18:05,250 --> 00:18:10,980 syntaxe, ktorá v podstate znamená, že si program s názvom PHP a používať to, aby 400 00:18:10,980 --> 00:18:12,270 interpretovať tento súbor. 401 00:18:12,270 --> 00:18:15,410 Takže teraz nikto nevie, že Bežím PHP program. 402 00:18:15,410 --> 00:18:19,860 Môžem spustiť rovnako ako by to bolo niečo zostavené v C. 403 00:18:19,860 --> 00:18:20,650 >> Ale tu je to vec. 404 00:18:20,650 --> 00:18:21,600 V skutočnosti, poďme to urobiť znova. 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /. 406 00:18:23,530 --> 00:18:25,390 Tam je kontrola pravopisu. 407 00:18:25,390 --> 00:18:26,720 OK, 0,44 sekundy. 408 00:18:26,720 --> 00:18:28,080 To má rýchlejší tentoraz. 409 00:18:28,080 --> 00:18:29,745 >> Teraz poďme do verzie PHP. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 Pekné. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 Ale len pomyslite, ako veľa času Zachránil som v úradných hodinách. 414 00:18:53,285 --> 00:18:56,990 415 00:18:56,990 --> 00:18:57,790 OK. 416 00:18:57,790 --> 00:19:01,020 >> Takže 3,59 sekundy, čo v skutočnosti neznie presné jeden. 417 00:19:01,020 --> 00:19:03,710 Ale to je preto, že dlhý príbeh krátky, keď tlačíte z obrovské množstvo 418 00:19:03,710 --> 00:19:06,840 vecí na obrazovke, ktoré sám spomaľuje veci dole. 419 00:19:06,840 --> 00:19:11,260 Čo to vlastne vzal v CPU Prístroj bol 3,59 sekundy, v 420 00:19:11,260 --> 00:19:15,260 kontrast na C, ktorý sa 0,44 sekúnd najnovšie. 421 00:19:15,260 --> 00:19:17,620 To je naozaj poradí veľkosť inak. 422 00:19:17,620 --> 00:19:20,280 >> Takže tam, kde je to, že cena ide? 423 00:19:20,280 --> 00:19:21,790 Prečo je to tak oveľa pomalší? 424 00:19:21,790 --> 00:19:24,220 Prečo PHP vykonávať tak zle? 425 00:19:24,220 --> 00:19:25,242 Danielle? 426 00:19:25,242 --> 00:19:26,550 >> DIVÁKOV: Vy ste naozaj použiť hash tabuľky. 427 00:19:26,550 --> 00:19:27,710 >> DAVID Malan: Ja som naozaj použiť hash tabuľky. 428 00:19:27,710 --> 00:19:28,760 Tak nejako som to urobil. 429 00:19:28,760 --> 00:19:29,870 Takže je to asociatívne pole. 430 00:19:29,870 --> 00:19:33,650 S najväčšou pravdepodobnosťou, ak ľudia v PHP sú naozaj šikovný, oni používali pod 431 00:19:33,650 --> 00:19:39,520 kapucňa aktuálne hash tabuľka implementovaná v niečo ako C alebo C + +. 432 00:19:39,520 --> 00:19:41,290 Ale. 433 00:19:41,290 --> 00:19:42,760 Jo. 434 00:19:42,760 --> 00:19:44,010 >> DIVÁKOV: [nepočuteľné]. 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> DAVID Malan: Jo. 437 00:19:47,080 --> 00:19:50,780 Takže každý z funkcií som písal teraz - v skutočnosti, môžete povedať, že ešte raz 438 00:19:50,780 --> 00:19:51,480 trochu hlasnejšie? 439 00:19:51,480 --> 00:19:54,509 >> DIVÁKOV: Každá z funkcií, ktoré ste súčasťou má oveľa plnšie 440 00:19:54,509 --> 00:19:56,610 kapacita ako - 441 00:19:56,610 --> 00:19:57,550 >> DAVID Malan: Tak to je pravda. 442 00:19:57,550 --> 00:20:01,490 Je tu oveľa viac hlavou, že sme nie je naozaj vidieť, že sa zameria iba na 443 00:20:01,490 --> 00:20:03,730 dictionary.php, ktorý som napísal. 444 00:20:03,730 --> 00:20:08,020 Naopak, je tu celá tlmočník deje v pozadí. 445 00:20:08,020 --> 00:20:12,040 Naozaj, keď som bežal tohto programu je nebola spustená zostavené núl a jedničiek 446 00:20:12,040 --> 00:20:14,290 určený pre svoj procesor Intel. 447 00:20:14,290 --> 00:20:19,270 Skôr to bol spustený riadok po riadku PHP kód, ktorý vyzerá presne 448 00:20:19,270 --> 00:20:20,350 radi by sme zadali. 449 00:20:20,350 --> 00:20:22,475 A tak pri každom použití interpretovaný jazyk, môžete 450 00:20:22,475 --> 00:20:23,850 skutočne zaplatiť túto cenu. 451 00:20:23,850 --> 00:20:27,010 Bude to trvať nejaký čas na čítanie váš súbor zhora nadol, zľava 452 00:20:27,010 --> 00:20:30,740 vpravo, a potom vykonať každý zoradiť znova a znova. 453 00:20:30,740 --> 00:20:34,250 >> Teraz v skutočnosti, a to najmä na internete, môžete skutočne urýchliť tento proces 454 00:20:34,250 --> 00:20:38,660 ukladanie do medzipamäte výsledky PHP kód sa vykladá. 455 00:20:38,660 --> 00:20:41,640 A to dáva zmysel na webe, pretože Ak nemáte jeden používateľ podobného 456 00:20:41,640 --> 00:20:46,300 ma tu, ale 1000 alebo 10000 užívateľov, potom možno prvýkrát, kedy je súbor 457 00:20:46,300 --> 00:20:49,050 prístup je pomalé, ale potom je to oveľa rýchlejšie. 458 00:20:49,050 --> 00:20:51,000 >> Ale aj toto je opäť kompromis. 459 00:20:51,000 --> 00:20:53,870 A niečo ako údaje z výskumu nastavenie, alebo dokonca niečo ako veľké 460 00:20:53,870 --> 00:20:58,330 to bude nakoniec používatelia začínajú cítiť, že spomalenie. 461 00:20:58,330 --> 00:21:02,670 >> Takže v skratke, interpretované jazyky veľmi veľa v móde veľmi obľúbená, a 462 00:21:02,670 --> 00:21:06,710 úprimne povedané, sú pravdepodobne jazyky, by sa mali dostať k pri riešení problémov 463 00:21:06,710 --> 00:21:08,200 Po CS50. 464 00:21:08,200 --> 00:21:12,720 Ale uvedomí, ako veľmi ste naozaj brať ako samozrejmosť pod pokrievku 465 00:21:12,720 --> 00:21:15,910 naozaj tých niekoľko posledných týždňov hash tabuľky a stromy, a snaží sa, 466 00:21:15,910 --> 00:21:20,770 ktoré sa používajú v konečnom dôsledku k skutočne realizovať veci, ako je ľavá zátvorka, 467 00:21:20,770 --> 00:21:24,200 hranatá zátvorka, ktorú môžeme teraz vďačne brať za samozrejmosť. 468 00:21:24,200 --> 00:21:26,360 >> Takže poďme sa pozrieť teraz V tejto súvislosti web. 469 00:21:26,360 --> 00:21:29,890 A už som spomenul minule, že je tu banda superglobálnych v PHP, ktorý 470 00:21:29,890 --> 00:21:32,490 naozaj nie sú dôležité na príkazovom riadku. 471 00:21:32,490 --> 00:21:36,210 Sú viac relevantné v kontexte použitie PHP vo webovom kontexte. 472 00:21:36,210 --> 00:21:41,220 Takže PHP beží na webovom serveri, aby vytvárať veci, ako je HTML. 473 00:21:41,220 --> 00:21:44,540 >> A my sme sa pozrel na $ _GET a $ _POST a to je miesto, kde používatelia automaticky " 474 00:21:44,540 --> 00:21:49,100 vstup skončí jednoducho ak zadáte tvorí na súbor s príponou. php v na webe 475 00:21:49,100 --> 00:21:50,460 servera ako zariadenie. 476 00:21:50,460 --> 00:21:53,310 Ale pozrime sa krátko na $ A $ _SESSION _COOKIE. 477 00:21:53,310 --> 00:21:56,670 >> Laicky povedané, to, čo je ako cookie chápete to v kontexte 478 00:21:56,670 --> 00:21:58,220 pomocou web? 479 00:21:58,220 --> 00:21:59,450 >> DIVÁKOV: Súbor v počítači. 480 00:21:59,450 --> 00:21:59,920 >> DAVID Malan: Jo. 481 00:21:59,920 --> 00:22:03,500 Je to súbor v počítači užívateľa vysadené z nejakého webu 482 00:22:03,500 --> 00:22:04,410 ste náhodou navštíviť. 483 00:22:04,410 --> 00:22:07,334 Takže keď idete na Facebooku, keď idete na bankofamerica.com, keď idete 484 00:22:07,334 --> 00:22:10,330 na google.com, keď idete do takmer akejkoľvek internetové stránky na svete v týchto dňoch, 485 00:22:10,330 --> 00:22:14,850 vrátane cs50.net, je zasadený cookie na počítači, ktorý je 486 00:22:14,850 --> 00:22:19,800 buď hodnota uložená v pamäti RAM v počítača v pamäti prehliadača, alebo 487 00:22:19,800 --> 00:22:22,800 niekedy naozaj súbor uložený na pevnom disku. 488 00:22:22,800 --> 00:22:26,960 >> A čo je zvyčajne uložená v tomto súbore nie je vaše užívateľské meno, nie 489 00:22:26,960 --> 00:22:31,060 heslo, zvyčajne nie je niečo, citlivé, ak webovej stránky nie je tak 490 00:22:31,060 --> 00:22:35,040 dobre sa ich bezpečnosti, ale skôr to je veľký jedinečný identifikátor medzi 491 00:22:35,040 --> 00:22:35,680 ďalších vecí. 492 00:22:35,680 --> 00:22:38,920 Je to veľké náhodné číslo zasadil na vašom počítač, ale môžete myslieť, ako 493 00:22:38,920 --> 00:22:42,740 akýsi virtuálny ruky pečiatka ako z klub alebo nejaký zábavný park, ktorý 494 00:22:42,740 --> 00:22:47,160 umožňuje zamestnancovi, majitelia, ktoré služby, sa spomenúť si, kto ste. 495 00:22:47,160 --> 00:22:51,030 Takže v prípade, že veľké náhodné číslo ako 12345678, aj keď to je samozrejme 496 00:22:51,030 --> 00:22:54,180 nie príliš náhodné, myslím, že o tom, ako ručné pečiatka, že pri návšteve 497 00:22:54,180 --> 00:22:57,930 facebook.com prvýkrát, že pečiatka, že číslo na ruke. 498 00:22:57,930 --> 00:23:01,510 A potom, pretože hovoríte HTTP, vás je prehliadač, a pretože Facebook 499 00:23:01,510 --> 00:23:06,440 samozrejme hovorí rovnako ako web server, HTTP protokol hovorí, že 500 00:23:06,440 --> 00:23:09,930 kedykoľvek následne dostaví facebook.com, či už je to druhá 501 00:23:09,930 --> 00:23:13,560 neskôr o hodinu neskôr, aj ďalší deň, tak dlho, ako máte explicitne 502 00:23:13,560 --> 00:23:17,050 odhlásený, ktorý účinne je ako umývanie rúk. 503 00:23:17,050 --> 00:23:20,280 HTTP hovorí, že by ste mali prezentovať svoje odovzdať pečiatka Zakaždým, keď 504 00:23:20,280 --> 00:23:22,020 vrátiť sa k danej internetovej stránke. 505 00:23:22,020 --> 00:23:24,390 >> Čo Facebook potom robí, je, že pozrite sa na tej strane pečiatka a 506 00:23:24,390 --> 00:23:26,850 hovoria, ach, 123456789. 507 00:23:26,850 --> 00:23:30,260 Neviem, na prvý pohľad, že tento je David Malan v Cambridge, 508 00:23:30,260 --> 00:23:34,690 Massachusetts, ale môžu kontrolovať svoje databázy a hovoria, ach, človek 509 00:23:34,690 --> 00:23:39,930 na ktorého počítača sa zasadil 123456789 je David Malan z Cambridge, 510 00:23:39,930 --> 00:23:40,440 Štáte Massachusetts. 511 00:23:40,440 --> 00:23:46,000 Ukážme, že užívateľ potom jeho profil strana alebo jeho News Feed. 512 00:23:46,000 --> 00:23:49,660 >> Ale je tu problém, pokiaľ to je, ako web naozaj funguje. 513 00:23:49,660 --> 00:23:51,390 Poďme sa pozrieť na rýchly príklad. 514 00:23:51,390 --> 00:23:55,190 Poďme skutočne ísť povedať facebook.com. 515 00:23:55,190 --> 00:23:58,130 Ale skôr, než sme mohli ísť tam, nech ma ísť dopredu a otvoriť Chrome je 516 00:23:58,130 --> 00:23:59,790 Inšpektor tu dole. 517 00:23:59,790 --> 00:24:01,140 Pozrime sa na karte siete. 518 00:24:01,140 --> 00:24:06,020 A teraz poďme do toho a zadajte v https://facebook.com. 519 00:24:06,020 --> 00:24:09,410 A robím to tak, že nevidíme všetky tieto presmerovanie a odpadov 520 00:24:09,410 --> 00:24:10,660 čas pozerať sa cez tie. 521 00:24:10,660 --> 00:24:12,690 Dovoľte mi, aby som stlačte kláves Enter. 522 00:24:12,690 --> 00:24:13,130 >> Dobrá. 523 00:24:13,130 --> 00:24:14,580 Vidíme veľa žiadostí. 524 00:24:14,580 --> 00:24:15,640 Tam je Facebook. 525 00:24:15,640 --> 00:24:16,930 Je tu celá banda súborov. 526 00:24:16,930 --> 00:24:19,290 A tu, na mojej zmienky o Latencie poslednej dobe, to je 527 00:24:19,290 --> 00:24:21,240 Veľa požiadaviek HTTP. 528 00:24:21,240 --> 00:24:23,700 Ale prvý z nich je pravdepodobne najzaujímavejšie. 529 00:24:23,700 --> 00:24:26,420 >> Takže poďme prejdite sem, a Budem priblížiť v sekunde. 530 00:24:26,420 --> 00:24:29,090 To bude trochu neporiadok, ale poďme sa pozrieť. 531 00:24:29,090 --> 00:24:31,660 Facebook sa zaslaním Veľa vecí. 532 00:24:31,660 --> 00:24:33,490 >> Ale hej, zaujímavé. 533 00:24:33,490 --> 00:24:37,880 Sú výsadbu nie jeden, ale štyri ručné pečiatky na ruky tu. 534 00:24:37,880 --> 00:24:40,400 Set-cookie, Set-cookie, set-cookie, set-cookie. 535 00:24:40,400 --> 00:24:44,030 A existuje niekoľko funkcií tu. 536 00:24:44,030 --> 00:24:46,170 Všetky z nich spomenúť niektoré druh expirácie. 537 00:24:46,170 --> 00:24:50,090 A vyzerá to, že Facebook je dúfať, že pamätať si ma až do roku 2015. 538 00:24:50,090 --> 00:24:53,670 Tak to je pravdepodobne čas od ktorej Musím sa odhlásiť alebo sa budem len 539 00:24:53,670 --> 00:24:55,710 automaticky predpokladať, že som nevráti. 540 00:24:55,710 --> 00:24:57,840 Takže to je vlastne slušný množstvo času. 541 00:24:57,840 --> 00:24:59,170 >> A tam sú niektoré ďalšie čo sa deje tu. 542 00:24:59,170 --> 00:25:03,036 Táto cookie sa zdá byť násilne odstránené tým, že hovorí, že sa skončila v roku 1970 543 00:25:03,036 --> 00:25:04,460 pred sušienky existoval. 544 00:25:04,460 --> 00:25:06,510 Takže prehliadač práve deje predpokladať, OK, to je ako 545 00:25:06,510 --> 00:25:07,910 umývanie rúk pečiatka. 546 00:25:07,910 --> 00:25:11,240 >> Ale teraz, keď môj prehliadač je následné žiadosti - 547 00:25:11,240 --> 00:25:14,340 nechaj ma ísť napred a to Znovu a znovu načítať. 548 00:25:14,340 --> 00:25:18,170 Teraz mi dovoľte prejdite späť do top žiadosť a ísť dole 549 00:25:18,170 --> 00:25:20,760 tu požiadať hlavičky. 550 00:25:20,760 --> 00:25:21,390 Všimnite si toto. 551 00:25:21,390 --> 00:25:25,280 Takže teraz som za ne hlavičky odpovede, ale všimnete, že hovorí, že záhlavie požiadaviek. 552 00:25:25,280 --> 00:25:29,220 A všimnite si, že môj prehliadač ako súčasť jeho žiadosť po tom, čo udrel znovu načítať je 553 00:25:29,220 --> 00:25:32,780 poslal aspoň nasledujúce informácie. 554 00:25:32,780 --> 00:25:34,670 Nezadané-cookie však cookie. 555 00:25:34,670 --> 00:25:38,750 Tak toto je riadok, hlavičky HTTP tak, hovoriť, kde môj prehliadač je druh 556 00:25:38,750 --> 00:25:43,340 z, bez toho aby som vedel, že predloženie moja ruka na Facebooku kontrole. 557 00:25:43,340 --> 00:25:46,020 >> Takže tieto súbory cookie môžu byť použiť potom na čo? 558 00:25:46,020 --> 00:25:49,420 Ak chcete si spomenúť, kto ste, alebo si spomenúť, ako koľkokrát ste tam boli, alebo 559 00:25:49,420 --> 00:25:50,280 naozaj niečo. 560 00:25:50,280 --> 00:25:52,742 >> Takže tu je counter.php. 561 00:25:52,742 --> 00:25:53,780 A dovoľte mi, aby som zväčšiť písmo. 562 00:25:53,780 --> 00:25:58,380 A zakaždým, keď som znovu načítajte túto stránku, oznámenia je to pamätať, koľkokrát 563 00:25:58,380 --> 00:25:59,250 Bol som tam. 564 00:25:59,250 --> 00:26:00,570 No, to nie je tak pôsobivé. 565 00:26:00,570 --> 00:26:03,140 Povedzme, zatvorte túto kartu, a teraz sa vráťme k 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php. 567 00:26:07,860 --> 00:26:08,970 >> Ach, to je zaujímavé. 568 00:26:08,970 --> 00:26:10,960 To ešte si pamätal, aj keď som zavrel kartu. 569 00:26:10,960 --> 00:26:14,010 A úprimne povedané, keď zavriete prehliadač, ak by bola vykonaná správnym spôsobom, som 570 00:26:14,010 --> 00:26:18,950 mohol ešte pamätať, že tento užívateľ je ktorý on alebo ona bola prvýkrát, a 571 00:26:18,950 --> 00:26:22,840 len raz som sa ísť do ponuky Chrome, ktorý tu je tu, a prejdite na 572 00:26:22,840 --> 00:26:25,990 Histórie a kliknite na tlačidlo Vymazať údaje prehliadania, ako niektorí z vás môžu mať v 573 00:26:25,990 --> 00:26:33,050 minulých, len potom súbory cookie v skutočnosti sa v priebehu webe zmazané 574 00:26:33,050 --> 00:26:33,970 vývoj. 575 00:26:33,970 --> 00:26:35,340 >> Takže, ak pôjdeme - 576 00:26:35,340 --> 00:26:37,080 poďme zblízka gedit tu. 577 00:26:37,080 --> 00:26:38,910 A keď sme sa ísť do tohto súboru. 578 00:26:38,910 --> 00:26:44,210 Nechaj ma ísť do nášho vhosts / localhost / public, a nechaj ma to urobiť 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 Všimnite si, že to je dosť jednoduchý program. 581 00:26:48,350 --> 00:26:50,250 Je to celkom jednoduché webové stránky. 582 00:26:50,250 --> 00:26:51,770 >> Takže v hornej časti súboru je len komentár. 583 00:26:51,770 --> 00:26:54,930 Ale tu je nová linka, ktorá vám môže videli už v p-set sedem, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 Toto je riadok PHP kódu, ktorý v podstate hovorí, webový server, make 586 00:27:00,380 --> 00:27:03,400 Uistite sa, že pečiatka rúk a urobiť Uistite sa, že kontrolu ručných pečiatok. 587 00:27:03,400 --> 00:27:06,810 To je všetko, čo vedenie robí, a to robí všetko tento proces pre nás. 588 00:27:06,810 --> 00:27:09,510 Potom všimnete Práve som dostal dve pobočky tu. 589 00:27:09,510 --> 00:27:14,150 Je-li čítač kľúč vo vnútri tejto špeciálny globálne premenná s názvom 590 00:27:14,150 --> 00:27:18,010 $ _SESSION Sa nachádza - inými slovami, v prípade, že je nejaká hodnota, že - 591 00:27:18,010 --> 00:27:22,440 poďme ju a uložiť ich do miestnej premennej s názvom $ counter. 592 00:27:22,440 --> 00:27:27,000 Else, poďme priradiť $ counter Predvolená hodnota 0. 593 00:27:27,000 --> 00:27:30,320 >> Tu je jeden aspekt PHP, ktorý je požehnaním i prekliatím. 594 00:27:30,320 --> 00:27:32,080 PHP je trochu nedbalý. 595 00:27:32,080 --> 00:27:35,160 Takže zatiaľ čo v C, čo by Rozsah počítadla boli 596 00:27:35,160 --> 00:27:36,725 buď tu, alebo tu? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> To by bola obmedzená na týchto zložených zátvoriek. 599 00:27:41,690 --> 00:27:42,090 Hádajte, čo? 600 00:27:42,090 --> 00:27:46,920 V PHP existuje aj mimo tie, zložené zátvorky, tu a tu, 601 00:27:46,920 --> 00:27:49,120 a tu a tu, a aj dole. 602 00:27:49,120 --> 00:27:52,400 Takže hovorím, to je požehnanie v tom zmysle, že nemusíte premýšľať, ako 603 00:27:52,400 --> 00:27:54,070 ťažké, ako sme to urobili pred niekoľkými týždňami. 604 00:27:54,070 --> 00:27:56,880 Ale je to tiež trochu prekliatie v tom, že bez ohľadu na to, kde môžete použiť premennú v 605 00:27:56,880 --> 00:28:00,020 PHP, aspoň v programe, ako je tento, je to globálne prístupné pre 606 00:28:00,020 --> 00:28:01,170 lepší alebo horší. 607 00:28:01,170 --> 00:28:06,130 Takže budete musieť mať na pamäti, že sa Vaše premenné nemusia byť definované. 608 00:28:06,130 --> 00:28:07,640 Možno ste ich definovali inde. 609 00:28:07,640 --> 00:28:09,460 >> Ale čo mám robiť nakoniec? 610 00:28:09,460 --> 00:28:13,160 Idem uložiť vo vnútri, že globálna premenná ako hodnota 611 00:28:13,160 --> 00:28:17,060 Počítadlo kľúč výsledok robí počítadlo plus 1. 612 00:28:17,060 --> 00:28:18,910 Takže je to len aritmetický že robí 613 00:28:18,910 --> 00:28:20,590 inkrementácia tohto pultu. 614 00:28:20,590 --> 00:28:24,850 A skutočnosť, že som ukladania, ktoré hodnota v roku je tu znamená 615 00:28:24,850 --> 00:28:29,970 v podstate aktualizovať databázu si uvedomiť, že používateľ 123456789 bola 616 00:28:29,970 --> 00:28:31,010 tu dvakrát. 617 00:28:31,010 --> 00:28:33,780 A keď som to zase nabudúce znovu načítať stránku, bude to kontrolovať 618 00:28:33,780 --> 00:28:36,710 moja ruka pečiatka a hovoria, ach, užívateľ 123456789 má teraz 619 00:28:36,710 --> 00:28:38,410 tu bol trikrát. 620 00:28:38,410 --> 00:28:43,390 >> A čo má PHP a podobné jazyky robia pre nás je, že sa zisťuje, 621 00:28:43,390 --> 00:28:47,720 ako a kde a ako dlho ukladať hodnoty v tejto špeciálnej 622 00:28:47,720 --> 00:28:48,830 superglobal. 623 00:28:48,830 --> 00:28:52,750 A to superglobal nabudúce navštívte stránky je trochu magicky 624 00:28:52,750 --> 00:28:57,440 Predvyplnenie, naplnené hodnotami, ktoré tam boli posledný krát ste navštívili, 625 00:28:57,440 --> 00:29:02,310 či bola druhá pred týždeň pred alebo v roku 2013 a my sme teraz hovorí 626 00:29:02,310 --> 00:29:03,790 zhruba do roku 2015. 627 00:29:03,790 --> 00:29:07,600 PHP a webový server starať zo všetkých, ktoré pre vás. 628 00:29:07,600 --> 00:29:08,850 >> DIVÁKOV: [nepočuteľné]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> DAVID Malan: Premenné sú v PHP v podstate vždy globálnej, ak vás 631 00:29:15,760 --> 00:29:18,400 deklarovať vnútri funkcie, a potom sú miestne 632 00:29:18,400 --> 00:29:19,420 iba funkcie. 633 00:29:19,420 --> 00:29:22,300 Ale preto, že som nenapísal nejaký funkcie, ktoré sú teraz v zásade 634 00:29:22,300 --> 00:29:25,090 Globálne priebehu celého môjho súboru tu. 635 00:29:25,090 --> 00:29:26,040 >> DIVÁKOV: Existuje spôsob, ako tak, aby boli miestne? 636 00:29:26,040 --> 00:29:28,470 >> DAVID Malan: Je nejaká spôsob, ako je miestna? 637 00:29:28,470 --> 00:29:30,680 Iba tým, že balí ich do funkcií. 638 00:29:30,680 --> 00:29:32,790 Ktoré sa v poslednej verzii PHP, môžete to urobiť s 639 00:29:32,790 --> 00:29:34,130 anonymné funkcie. 640 00:29:34,130 --> 00:29:35,930 Ale o tom viac kontext JavaScript. 641 00:29:35,930 --> 00:29:37,260 Ale krátka odpoveď znie nie. 642 00:29:37,260 --> 00:29:40,888 Dlhšia odpoveď je áno. 643 00:29:40,888 --> 00:29:42,380 Pekný. 644 00:29:42,380 --> 00:29:43,380 Dobrý kvíz otázka. 645 00:29:43,380 --> 00:29:43,930 Dobrá. 646 00:29:43,930 --> 00:29:47,760 >> Tak konečne, stránka je sám o sebe vlastne celkom jednoduché. 647 00:29:47,760 --> 00:29:51,470 Všimnite si, že akonáhle som opustiť PHP režime vyvolanie že všetky tieto veci dole 648 00:29:51,470 --> 00:29:53,700 nižšie je len dostane slinu z raw do prehliadača. 649 00:29:53,700 --> 00:29:57,050 Čo je v poriadku, pretože chcem poslať užívateľ niektoré HTML, ale chcem 650 00:29:57,050 --> 00:29:59,140 dynamicky aktualizovať HTML. 651 00:29:59,140 --> 00:30:03,930 A jeden spôsob, ako to dosiahnuť, je radiť veľmi rýchlo klesnúť späť do PHP 652 00:30:03,930 --> 00:30:07,730 režim, použite zátvorka otáznik znamienko rovná sa, a potom výstupná hodnota 653 00:30:07,730 --> 00:30:08,650 počítadla. 654 00:30:08,650 --> 00:30:12,360 >> Alebo, ak to vyzerá trochu záhadné, to znamienko rovnosti je vlastne len niektoré 655 00:30:12,360 --> 00:30:16,190 syntaktický cukor pre tento printf ($ counter). 656 00:30:16,190 --> 00:30:19,160 Ale úprimne povedané, je to len trochu škaredý a trochu nepríjemné písať. 657 00:30:19,160 --> 00:30:23,660 Takže PHP veľmi pekne ponúka túto funkciu kde môžete len povedať, že viac 658 00:30:23,660 --> 00:30:25,450 stručne rovnakým spôsobom. 659 00:30:25,450 --> 00:30:26,940 >> Takže to, čo sa deje pod kapucňa? 660 00:30:26,940 --> 00:30:31,210 Poďme rýchlo pozrieť na sieti Záložka tu counter.php. 661 00:30:31,210 --> 00:30:35,090 A dovoľte mi ísť dopredu a prvý poďme vymazať súbory cookie. 662 00:30:35,090 --> 00:30:38,670 Poďme Vymazať údaje prehliadania od začiatku času. 663 00:30:38,670 --> 00:30:39,680 Teraz sa vráťme sem. 664 00:30:39,680 --> 00:30:41,340 Teraz sa poďme znova načítať stránku. 665 00:30:41,340 --> 00:30:42,170 A ja som zase na nule. 666 00:30:42,170 --> 00:30:44,810 Pretože moja ruka známka bola praná, Teraz si nový cookie. 667 00:30:44,810 --> 00:30:48,780 >> V skutočnosti, ak sa pozriem na sieťovej karte a pozrite sa na hlavičky odpovede, všimnite si, 668 00:30:48,780 --> 00:30:51,960 že prístroj posiela ma cookie, ktorého názov je trochu 669 00:30:51,960 --> 00:30:55,820 ľubovoľne, ale trochu rozumne, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 A to ma poslal to naozaj veľké náhodné číslo. 671 00:30:58,440 --> 00:30:59,440 Nie je to celá rada. 672 00:30:59,440 --> 00:31:00,390 Nie je to zas šestnástkovej. 673 00:31:00,390 --> 00:31:03,600 Je to nejaký druh alfanumerického reťazca, ale pravdepodobne je to náhodné. 674 00:31:03,600 --> 00:31:06,830 A to je ruka, pečiatku tak, aby hovoriť, že som na mysli. 675 00:31:06,830 --> 00:31:11,960 >> Zatiaľ keď som kliknite na tlačidlo znova a potom pozrite sa na tejto druhej linky na môj druhý 676 00:31:11,960 --> 00:31:17,600 žiadosť, všimnite si, že sa moja žiadosť Hlavičky sú PHPSESSID rovná to, 677 00:31:17,600 --> 00:31:19,390 nie je set-cookie, ale len cookie. 678 00:31:19,390 --> 00:31:22,950 A to je môj prehliadač je prezentácia z mojej ruky známky. 679 00:31:22,950 --> 00:31:28,820 >> Takže teraz ako ukážku, a porozprávame sa viac o tom v týždni alebo tak, ale 680 00:31:28,820 --> 00:31:31,590 akým spôsobom to, aby vás zraniteľné, váš Facebook účet 681 00:31:31,590 --> 00:31:34,137 zraniteľné, a iné takéto účty zraniteľné? 682 00:31:34,137 --> 00:31:35,510 >> DIVÁKOV: Ak niekto má svoje cookie. 683 00:31:35,510 --> 00:31:36,750 >> DAVID Malan: Jo, keď niekto má svoje cookie. 684 00:31:36,750 --> 00:31:39,920 Myslím naozaj, rovnako ako niektorí z vás Pravdepodobne ste sa pokúsili na ako klub alebo 685 00:31:39,920 --> 00:31:44,030 Zábavný park, ak sa pokúsite niečo takhle kopírovať pečiatka, aj keď 686 00:31:44,030 --> 00:31:47,560 späť na niekoho iného strane, a potom on alebo ona prezentuje ako 687 00:31:47,560 --> 00:31:53,250 vlastné, ak je to skutočne vyzerá identické, 123456789, potom web 688 00:31:53,250 --> 00:31:57,980 Server je zrejme len tak veriť, že užívateľ si. 689 00:31:57,980 --> 00:32:01,450 >> A to je skutočne základnou Hrozba kedykoľvek používať cookies 690 00:32:01,450 --> 00:32:05,420 pretože ak niekto len tak spoofs hovorí súbory cookie, obrázky, čo to 691 00:32:05,420 --> 00:32:08,660 je, a to buď skutočne skopírovaním pri pohľade na vašom počítači 692 00:32:08,660 --> 00:32:09,890 a je rád, OK. 693 00:32:09,890 --> 00:32:14,520 Dávidov Cookie je JJ3JIK a tak ďalej, a potom, že sú dosť bystrí na to vedieť, 694 00:32:14,520 --> 00:32:18,080 ako triediť manuálne Poslať že cookie z prehliadača alebo z 695 00:32:18,080 --> 00:32:22,350 Program píšu, by sa úplne prihlásiť do webovej stránky ako vy. 696 00:32:22,350 --> 00:32:28,560 Nie je to tak ťažké predstierať, že niekto iný, ak sa znovu p-set 697 00:32:28,560 --> 00:32:30,790 dva, ktorý predstavil čo? 698 00:32:30,790 --> 00:32:32,065 >> Divákov: kryptografia. 699 00:32:32,065 --> 00:32:33,860 >> DAVID Malan: málo trochu kryptografie. 700 00:32:33,860 --> 00:32:36,550 Jednoduché kryptografia, aspoň v štandardná verzia, ale crypto 701 00:32:36,550 --> 00:32:36,870 však. 702 00:32:36,870 --> 00:32:37,410 menej. 703 00:32:37,410 --> 00:32:41,440 Tak to dopadá, keď sa šifrovať všetky Tieto hlavičky pomocou niečoho, čo 704 00:32:41,440 --> 00:32:48,770 možno už vieme, známejší ako SSL, secure socket layer alebo https:// URL, 705 00:32:48,770 --> 00:32:51,890 potom sa všetky tieto veci sme boli pozrel sa na sú vlastne šifrované, 706 00:32:51,890 --> 00:32:54,800 čo znamená, že je to ako by ste nemôže čítať ručná pečiatka. 707 00:32:54,800 --> 00:32:59,350 Iba facebook.com môže, alebo google.com, alebo v tomto prípade, môže prístroj 708 00:32:59,350 --> 00:33:00,550 čítal, že ručná pečiatka. 709 00:33:00,550 --> 00:33:04,020 >> Tragicky aj keď, a znova, je to príliš vhodné s vecou NSA 710 00:33:04,020 --> 00:33:06,410 neskoro, i SSL je krehký. 711 00:33:06,410 --> 00:33:09,850 A je to vlastne nie je tak ťažké dokonca prasknúť, že šifrovanie. 712 00:33:09,850 --> 00:33:12,040 Ani nie tak tým, praskanie šifrovanie, ale tým, že napalm 713 00:33:12,040 --> 00:33:15,720 prehliadač na dešifrovanie údaje predčasne. 714 00:33:15,720 --> 00:33:17,880 Ale opäť budeme dráždiť vás sa, že onedlho. 715 00:33:17,880 --> 00:33:21,242 Pre teraz, len sa nebojte. 716 00:33:21,242 --> 00:33:23,070 Je to tragicky trochu pravda. 717 00:33:23,070 --> 00:33:23,760 >> Dobrá. 718 00:33:23,760 --> 00:33:27,910 Takže tam, kde to teraz nás opustil? 719 00:33:27,910 --> 00:33:29,010 Dobre, poďme na to. 720 00:33:29,010 --> 00:33:31,790 Poďme do toho a vziať rýchlo teaser, než sme si pauzu. 721 00:33:31,790 --> 00:33:33,790 A myslím, že sa budeme zdržiavať dlhšie dnes, ale budeme sa ponoriť do 722 00:33:33,790 --> 00:33:37,850 niečo úplne nového a sexy, čo bude povzbudiť chuť k jedlu ešte viac. 723 00:33:37,850 --> 00:33:38,950 Tak to je teaser. 724 00:33:38,950 --> 00:33:41,520 >> Takže SQL, začali sme hovoriť o niekedy tak krátko minule. 725 00:33:41,520 --> 00:33:44,670 Budete naozaj dostať svoje špinavé ruky s niektorými z nich v p-set sedem. 726 00:33:44,670 --> 00:33:46,480 A v Laicky povedané, to, čo robí SQL - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 urobiť pre vás? 729 00:33:49,850 --> 00:33:50,310 Čo je to? 730 00:33:50,310 --> 00:33:51,546 Jo. 731 00:33:51,546 --> 00:33:53,240 >> DIVÁKOV: Poďme si prístupové údaje. 732 00:33:53,240 --> 00:33:53,360 >> DAVID Malan: Jo. 733 00:33:53,360 --> 00:33:55,120 Je to poďme prístupu k dátam v databáze. 734 00:33:55,120 --> 00:33:56,710 Structured Query Language. 735 00:33:56,710 --> 00:33:59,890 A to je v podstate programovací jazyk. 736 00:33:59,890 --> 00:34:03,400 K dispozícii sú funkcie tom, že nebudeme používať aj v triede. 737 00:34:03,400 --> 00:34:04,710 Ale môžete efektívne definovanie funkcií. 738 00:34:04,710 --> 00:34:06,870 Hovorí sa im uložené postupy v SQL. 739 00:34:06,870 --> 00:34:09,860 Ale budeme držať to celkom jednoduché a stačí ho použiť pre niektoré základné operácie 740 00:34:09,860 --> 00:34:14,320 ako je výber dát, vkladanie dát, aktualizácie dát a mazanie dát. 741 00:34:14,320 --> 00:34:17,400 >> A vy si naozaj myslíte, že databáza, ako SQL databáze, ako len 742 00:34:17,400 --> 00:34:18,800 je Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 Vzhľadom k tomu, SQL odkazuje na relačnej databázy, kde 744 00:34:21,989 --> 00:34:23,480 vzťah jednoducho znamená tabuľky. 745 00:34:23,480 --> 00:34:24,739 Riadky a stĺpce. 746 00:34:24,739 --> 00:34:27,929 Takže všetko, čo môžete dať v tabuľke ako je tento, alebo Google Docs, 747 00:34:27,929 --> 00:34:32,460 by ste mohli dať do SQL databázy vyhlásením tabuľky. 748 00:34:32,460 --> 00:34:34,800 >> Teraz, ako sa v skutočnosti prístup že informácie? 749 00:34:34,800 --> 00:34:38,239 No, s príkazmi alebo otázky, ako je tento. 750 00:34:38,239 --> 00:34:40,199 SELECT, INSERT, UPDATE a DELETE. 751 00:34:40,199 --> 00:34:44,489 A z veľkej časti, ktoré sú Štyri iba ingrediencie, ktoré budete potrebovať, aby 752 00:34:44,489 --> 00:34:47,370 niečo celkom silno v probléme set sedem. 753 00:34:47,370 --> 00:34:49,940 >> Teraz späť v deň, by ste v skutočnosti interakciu s databázou v 754 00:34:49,940 --> 00:34:52,730 čierna a biela okná terminálu na blikajúce výzva takto. 755 00:34:52,730 --> 00:34:56,370 A databázy sme beží na Prístroj sa nazýva MySQL, ktorá je 756 00:34:56,370 --> 00:34:58,560 zadarmo a open source databázový stroj. 757 00:34:58,560 --> 00:35:02,240 Ak ste Google a prečítajte si Wikipédie článok, budete vedieť, že názov je 758 00:35:02,240 --> 00:35:05,060 bit prechodu pre niektoré verzie Linuxu. 759 00:35:05,060 --> 00:35:10,460 Maria databázy je v skutočnosti vidlica tak hovoriť o MySQL. 760 00:35:10,460 --> 00:35:12,740 >> Dlhý príbeh krátky, Oracle kúpil MySQL. 761 00:35:12,740 --> 00:35:13,870 Oracle je to veľká firma. 762 00:35:13,870 --> 00:35:17,010 Ľudia boli obávajú, že by už zostávajú úplne ako open source, 763 00:35:17,010 --> 00:35:20,930 takže je to len kópia MySQL, ktorá je ešte voľný, stále open source, a 764 00:35:20,930 --> 00:35:23,550 inštalované v Fedora Linux v predvolenom nastavení. 765 00:35:23,550 --> 00:35:26,130 >> Ale to je trochu bolesti v krk, aby sa zoznámili s 766 00:35:26,130 --> 00:35:27,310 Databáza týmto spôsobom. 767 00:35:27,310 --> 00:35:30,560 Takže sme sa zahrnúť do CS50 spotrebiče slobodný open source nástroj s názvom 768 00:35:30,560 --> 00:35:31,700 phpMyAdmin. 769 00:35:31,700 --> 00:35:33,940 Len náhoda, že je to napísaný v PHP. 770 00:35:33,940 --> 00:35:36,450 Neexistuje žiadny zásadný Potrebujeme tu pre PHP. 771 00:35:36,450 --> 00:35:40,090 Ale to je len webový nástroj, ktorý sme stiahli zadarmo, inštalovaný v 772 00:35:40,090 --> 00:35:43,850 spotrebič, ktorý nám umožňuje mať grafické užívateľské rozhranie, ktoré sa 773 00:35:43,850 --> 00:35:48,610 preskúmať p-set sedem databáze pre vytvorenie novej databázy, 774 00:35:48,610 --> 00:35:51,980 povedať, pre vlastné konečné projektu, ak by ako je, a nakoniec vytvoriť 775 00:35:51,980 --> 00:35:55,900 dynamické webové stránky, ako CS50 financií ktoré umožňujú dáta dotazu a 776 00:35:55,900 --> 00:35:58,140 aktualizovať dáta dynamicky. 777 00:35:58,140 --> 00:36:01,420 >> Nebudete musieť použiť len jednoduchý textový súbor alebo CSV. 778 00:36:01,420 --> 00:36:05,950 Môžete dokonca použiť inteligentné databázy program, takže môžete spustiť viac 779 00:36:05,950 --> 00:36:10,240 sofistikované otázky, než len čítanie cez všetko lineárne. 780 00:36:10,240 --> 00:36:14,150 >> Tak napríklad, to je to, čo dávame si po vybalení z krabice pre p-set sedem. 781 00:36:14,150 --> 00:36:18,280 Toto je tabuľka s zrejme aspoň tri stĺpce, z ktorých jeden je 782 00:36:18,280 --> 00:36:21,450 užívateľské meno, z ktorých jeden je hash, a z ktorých druhý je ID. 783 00:36:21,450 --> 00:36:26,200 >> Ale zaujímavá vec, a len preto, aby podpichovať sa jednu myšlienku tu, užívateľské meno 784 00:36:26,200 --> 00:36:29,270 je pravdepodobne už unikátny, že jo? 785 00:36:29,270 --> 00:36:31,190 Myslím, že väčšinu akejkoľvek webovej stránky, ak Máte-užívateľské meno, tam 786 00:36:31,190 --> 00:36:32,370 nemôžu byť dva Caesars. 787 00:36:32,370 --> 00:36:33,440 Nemôže byť dva Malans. 788 00:36:33,440 --> 00:36:34,950 Nemôže byť dva jharvards. 789 00:36:34,950 --> 00:36:35,600 Jeho jedinečná. 790 00:36:35,600 --> 00:36:38,610 V opačnom prípade, že neviete, ktorá jharvard to vlastne je. 791 00:36:38,610 --> 00:36:42,710 Takže to, čo by mohlo byť motiváciou pre i s treťou stĺpec vľavo 792 00:36:42,710 --> 00:36:46,970 existuje tzv ID, ktorý vyzerá ako číslo, ktoré je podobne jedinečný? 793 00:36:46,970 --> 00:36:51,300 Je toho názoru, trochu redundantné sa mi na prvý pohľad. 794 00:36:51,300 --> 00:36:54,910 Prečo by mohlo byť presvedčivé, aby sa nielen unikátny užívateľské mená, 795 00:36:54,910 --> 00:36:56,837 ale tiež jedinečná čísla? 796 00:36:56,837 --> 00:36:59,460 >> DIVÁKOV: Mohli mať rovnaké heslo. 797 00:36:59,460 --> 00:37:01,720 >> DAVID Malan: Ľudia môžu mať rovnaké heslo, iste. 798 00:37:01,720 --> 00:37:03,900 To by mohlo úplne stalo. 799 00:37:03,900 --> 00:37:08,270 Ale ak majú túto jedinečnú užívateľské meno, som by mohol namietnuť, že nie je naozaj 800 00:37:08,270 --> 00:37:11,630 záležitosť, pretože keby zadajte svoje užívateľské meno, len musím skontrolovať ich 801 00:37:11,630 --> 00:37:15,060 heslo, ich hash z nich. 802 00:37:15,060 --> 00:37:15,970 Prečo inak? 803 00:37:15,970 --> 00:37:17,950 >> DIVÁKOV: Rýchlejšie vyhľadávanie. 804 00:37:17,950 --> 00:37:18,680 >> DAVID Malan: Rýchlejšie vyhľadávanie. 805 00:37:18,680 --> 00:37:19,548 Prečo? 806 00:37:19,548 --> 00:37:21,460 >> DIVÁKOV: ID je len jeden. 807 00:37:21,460 --> 00:37:24,040 >> DAVID Malan: ID je len jeden znak, alebo presnejšie povedané, je to číslo, 808 00:37:24,040 --> 00:37:26,910 takže je to asi 32 bitov alebo niečo také. 809 00:37:26,910 --> 00:37:30,270 Vzhľadom k tomu, užívateľské meno, zrejme Jason Hirschhorn je tam je trochu 810 00:37:30,270 --> 00:37:33,900 smiešne dlhý, a bude to sa mi oveľa viac času na reťazec 811 00:37:33,900 --> 00:37:40,910 porovnať H-I-R-S-C-H-H-O-R-N, a možno / 0, alebo niečo také, aby 812 00:37:40,910 --> 00:37:45,100 vyhľadať Jasona, ako protiľahlý k len povedal mi dať užívateľské číslo dva. 813 00:37:45,100 --> 00:37:46,510 To je 32 bitov. 814 00:37:46,510 --> 00:37:48,550 Je to jediný INT, že Máte k porovnanie. 815 00:37:48,550 --> 00:37:52,150 A vskutku, to je presne dôvod, prečo databázy majú tendenciu priradiť jedinečné identifikátory, aby 816 00:37:52,150 --> 00:37:53,710 riadky v nich. 817 00:37:53,710 --> 00:37:56,280 >> A teraz, čo ostatné dátové typy sú tam Okrem INT a zrejme 818 00:37:56,280 --> 00:37:57,160 reťazca, ako je tento? 819 00:37:57,160 --> 00:37:59,700 No, aby som bol vhodnejší, SQL databáz, ako je 820 00:37:59,700 --> 00:38:02,060 MySQL, majú CHAR poľa. 821 00:38:02,060 --> 00:38:05,320 A CHAR trochu zavádzajúcim nie je jediný CHAR. 822 00:38:05,320 --> 00:38:10,290 CHAR poľa v databáze MySQL je jeden alebo viac znakov, ale je to 823 00:38:10,290 --> 00:38:11,780 pevný počet znakov. 824 00:38:11,780 --> 00:38:15,710 >> Tak napríklad, keď som prejsť na phpMyAdmin, ako ste už možno, alebo 825 00:38:15,710 --> 00:38:21,340 čoskoro bude problém nastaviť sedem, a ja idem do mojej databázy, a len tak pre zábavu, 826 00:38:21,340 --> 00:38:25,700 poďme vytvoriť novú tabuľku s názvom test s iba dvoma stĺpmi. 827 00:38:25,700 --> 00:38:27,160 Budem kliknite na tlačidlo Prejsť. 828 00:38:27,160 --> 00:38:30,070 A to sa stane pomerne známe, najmä ak si pohrať 829 00:38:30,070 --> 00:38:31,130 asi na vlastnú päsť. 830 00:38:31,130 --> 00:38:34,140 Tu by som mohol zadať ID vytvoriť nová tabuľka typu INT. 831 00:38:34,140 --> 00:38:37,770 Ale tu som mohol zadať užívateľské meno znova, že skoršie tabuľky. 832 00:38:37,770 --> 00:38:40,700 A všimnite si, mám veľa typov z čoho vyberať. 833 00:38:40,700 --> 00:38:43,610 >> A to aj preto phpMyAdmin je celkom pekný. 834 00:38:43,610 --> 00:38:46,770 Je to druh self-učenie v tom, že môže len tak bod a kliknite na tlačidlo, a 835 00:38:46,770 --> 00:38:50,730 pozrite sa na rozbaľovacích ponúk, a vyvodiť z že to, čo sily SQL vám dáva. 836 00:38:50,730 --> 00:38:54,090 >> A skutočne, keď sa rozhodnem CHAR, som potom je potrebné zadať dĺžku, alebo ako 837 00:38:54,090 --> 00:38:55,940 mnoho hodnôt, koľko znakov. 838 00:38:55,940 --> 00:39:00,090 Takže veľmi bežné hodnoty, sú veci ako 255, ale to je trochu dlho. 839 00:39:00,090 --> 00:39:02,250 Bežne je osem na užívateľské meno. 840 00:39:02,250 --> 00:39:03,590 Ale to je trochu malá v týchto dňoch. 841 00:39:03,590 --> 00:39:05,430 Tak to je rozhodnutie dizajnu. 842 00:39:05,430 --> 00:39:08,630 Je to maximálne 8 znakov, 32, 255, 1000? 843 00:39:08,630 --> 00:39:09,830 Je to naozaj len na vás. 844 00:39:09,830 --> 00:39:12,350 Ale CHAR pole pevné číslo. 845 00:39:12,350 --> 00:39:16,420 Tak si vyberte príliš málo a ste trochu skrutkované, ak chcete dlhší meno. 846 00:39:16,420 --> 00:39:19,132 Vyberte si príliš veľa, a to, čo je nevýhoda? 847 00:39:19,132 --> 00:39:20,820 >> DIVÁKOV: [nepočuteľné]. 848 00:39:20,820 --> 00:39:21,620 >> DAVID Malan: Je to plytvanie. 849 00:39:21,620 --> 00:39:24,835 Rovnako ako v C, ak máte väčší kus pamäti, ako budete potrebovať, budete 850 00:39:24,835 --> 00:39:27,190 len strácaš čas a plytváte diskovým priestorom. 851 00:39:27,190 --> 00:39:31,430 Tak ako alternatíva, existuje VARCHAR, ktorý rieši tento problém tým, že 852 00:39:31,430 --> 00:39:36,390 liečenie dĺžku nie ako pevnou dĺžkou, ale ako maximálnu dĺžku, a pomocou 853 00:39:36,390 --> 00:39:40,990 premenlivý počet znakov, ktorý potom inklinuje používať iba ako mnoho pripáli ako vy 854 00:39:40,990 --> 00:39:42,710 skutočne potrebujú. 855 00:39:42,710 --> 00:39:43,670 To znie skvele. 856 00:39:43,670 --> 00:39:45,640 >> Prečo by sme sa zbaviť CHAR typ dát a potom? 857 00:39:45,640 --> 00:39:48,500 Čo by mohlo byť nevýhodou pomocou VARCHARs, ktorý znie 858 00:39:48,500 --> 00:39:51,644 ako by to bolo pekné vyhrať? 859 00:39:51,644 --> 00:39:52,596 Jo? 860 00:39:52,596 --> 00:39:53,846 >> DIVÁKOV: [nepočuteľné]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> DAVID Malan: OK, dobre. 863 00:39:57,790 --> 00:40:01,101 Takže ak všetky vaše dáta je rovnaký dĺžka, čo je to starosť? 864 00:40:01,101 --> 00:40:05,250 >> DIVÁKOV: Vzhľadom k tomu, strácate údaje podľa nich všetko hovoriť. 865 00:40:05,250 --> 00:40:09,060 >> DAVID Malan: Takže ak všetky vaše dáta je rovnakej dĺžky, aj keď ja by som tvrdiť, 866 00:40:09,060 --> 00:40:12,300 že určenie maximálnu dĺžku na VARCHAR sa nijako nelíši od 867 00:40:12,300 --> 00:40:16,070 určenia pevnej dĺžky na CHAR ak Viete, že číslo v predstihu. 868 00:40:16,070 --> 00:40:19,500 Ale tam je naozaj, a ja budem trochu extrakt z tejto odpovede realitu 869 00:40:19,500 --> 00:40:22,610 že je tu ešte max, ktoré by mohli byť nepríjemné, najmä ak sa 870 00:40:22,610 --> 00:40:25,920 narazíte na meno osoby, ktorá je neobvykle dlho, že nie 871 00:40:25,920 --> 00:40:26,860 predvídať. 872 00:40:26,860 --> 00:40:31,420 A je to tiež o niečo menej efektívne skutočne hľadať na VARCHARs ako 873 00:40:31,420 --> 00:40:35,620 na rozdiel od vyhľadávacích znakov, a to najmä na dlhých stolov, ktoré majú veľa a 874 00:40:35,620 --> 00:40:36,510 veľké množstvo dát. 875 00:40:36,510 --> 00:40:40,060 Takže aj tu, tematické je opäť no jasná voľba. 876 00:40:40,060 --> 00:40:42,870 >> Takže stačí, aby vám zmysel pre iné dátové typy, ktoré by mohli byť zaujímavé 877 00:40:42,870 --> 00:40:45,400 a to buď pre p-set sedem alebo budúcnosť, je tu INT. 878 00:40:45,400 --> 00:40:47,270 K dispozícii je BIGINT, ktoré je ako long long. 879 00:40:47,270 --> 00:40:48,880 To inklinuje byť 64 bitov. 880 00:40:48,880 --> 00:40:51,640 K dispozícii je DECIMAL, ktoré uvidíte v Problém set, čo je oveľa 881 00:40:51,640 --> 00:40:55,300 čistič odpovedí na problémy, sa sa stretol s plavákom a plávajúce 882 00:40:55,300 --> 00:40:55,980 bod nepresnosti. 883 00:40:55,980 --> 00:40:57,390 A potom je tu DATETIME. 884 00:40:57,390 --> 00:41:01,530 Tam je doslova dátový typ, ktorý má vyzerať ako rok, mesiac, deň, 885 00:41:01,530 --> 00:41:03,730 a hodiny, minúty a sekundy. 886 00:41:03,730 --> 00:41:07,470 >> Ale SQL databázy tiež veci, zavoláme indexy. 887 00:41:07,470 --> 00:41:11,630 A index je niečo, čo zadajte pri vytváraní tabuľky 888 00:41:11,630 --> 00:41:15,720 aby vyhľadávanie a ďalšie operácie účinnejšie. 889 00:41:15,720 --> 00:41:18,550 Konkrétne, je tu niečo, čo nazýva primárny index, ktorý by mohol 890 00:41:18,550 --> 00:41:19,440 deklarovať takto. 891 00:41:19,440 --> 00:41:22,330 >> Urobili sme to za vás Užívatelia stôl dáme vám. 892 00:41:22,330 --> 00:41:26,160 Ale všimnite keby som ručne obnovovať Tabuľka používatelia tu dáva 893 00:41:26,160 --> 00:41:27,110 je meno užívateľa. 894 00:41:27,110 --> 00:41:28,125 Už som je uvedené ID. 895 00:41:28,125 --> 00:41:29,330 Aj podľa INT. 896 00:41:29,330 --> 00:41:32,000 Špecifikované som užívateľské meno s maximálne 32 znakov. 897 00:41:32,000 --> 00:41:36,140 Ale ak budeme držať rolovanie v tomto pomerne široké okno, upozornenie, že je 898 00:41:36,140 --> 00:41:38,260 veľa ďalších vecí, ktoré som si určíte. 899 00:41:38,260 --> 00:41:40,950 >> Jeden, môžem nastaviť atribúty ako, vieš čo, to 900 00:41:40,950 --> 00:41:42,190 INT by mala byť unsigned. 901 00:41:42,190 --> 00:41:45,510 Nechcem záporné čísla, tak sa poďme robiť to unsigned. 902 00:41:45,510 --> 00:41:48,660 Null nie je relevantná, pretože Ja chcem, aby každý užívateľ 903 00:41:48,660 --> 00:41:49,640 má jedinečné číslo. 904 00:41:49,640 --> 00:41:50,830 Nechcem, aby to bolo null. 905 00:41:50,830 --> 00:41:52,330 >> Ale to je zaujímavé. 906 00:41:52,330 --> 00:41:57,780 Môžem určiť, že ID je buď primárny kľúč tejto databázy, alebo je to 907 00:41:57,780 --> 00:42:00,620 Unikátny, alebo je to indexovaný, alebo celý text. 908 00:42:00,620 --> 00:42:05,630 Takže pre dnešné účely, dlhý príbeh Stručne povedané, primárna znamená, že musí 909 00:42:05,630 --> 00:42:10,570 byť ako koncepčne a technicky pole, ktoré sa používajú pre jednoznačnú 910 00:42:10,570 --> 00:42:12,140 identifikáciu užívateľa. 911 00:42:12,140 --> 00:42:16,140 >> Takže keď sa pozrieme do používateľov, je to druh o sľubu je vyhľadať väčšinou 912 00:42:16,140 --> 00:42:17,370 že jedinečný identifikátor. 913 00:42:17,370 --> 00:42:21,930 A databázy zabezpečí, že ak majú užívateľské číslo 3, nemôžete 914 00:42:21,930 --> 00:42:25,400 fyzicky vložiť ďalšie užívateľa s rovnakým číslom 3. 915 00:42:25,400 --> 00:42:28,380 Databáza bude jednoducho odmietne uložte zmeny. 916 00:42:28,380 --> 00:42:32,310 Čo je dobrá vec, pretože môžete chrániť pred seba. ja 917 00:42:32,310 --> 00:42:34,270 >> Alternatívne, pre užívateľské meno. 918 00:42:34,270 --> 00:42:37,670 Takže druhá rada, vyvolanie, je užívateľské meno poľa. 919 00:42:37,670 --> 00:42:41,860 Takže druhý riadok je tu užívateľské meno, ako sme sa tam ďaleko vľavo. 920 00:42:41,860 --> 00:42:43,940 >> Takže čo iného by som mohol chcieť špecifikovať? 921 00:42:43,940 --> 00:42:47,840 Nesmiem, podľa SQL, špecifikovať dva primárne kľúče. 922 00:42:47,840 --> 00:42:50,750 môžete určiť spoločný kľúč, kde sa pozrite sa na oboch poliach, ale nemôžu 923 00:42:50,750 --> 00:42:52,260 individuálne byť primárne kľúče. 924 00:42:52,260 --> 00:42:54,750 Tak to je vylúčené. 925 00:42:54,750 --> 00:42:56,040 Tak ktorý ja by som mohol chcieť vybrať? 926 00:42:56,040 --> 00:42:59,710 >> No, UNIQUE je podobný ducha primárny kľúč, kde zadáte tento 927 00:42:59,710 --> 00:43:03,570 poľa musí byť jedinečný, ale je to nebude jedno 928 00:43:03,570 --> 00:43:04,410 Ja používam po celú dobu. 929 00:43:04,410 --> 00:43:08,450 A my nebudeme používať tohle všetko čas akého dôvodu znova? 930 00:43:08,450 --> 00:43:10,490 Je to pomalší, ak potenciálne je to dlhý užívateľské meno. 931 00:43:10,490 --> 00:43:11,740 Je to len strata času. 932 00:43:11,740 --> 00:43:16,140 >> INDEX medzitým uvádza, že je to nebude jedinečná, ale rád by som 933 00:43:16,140 --> 00:43:19,470 vám umožní pracovať svoje kúzlo pod kapucňa, aby bol rýchlejší pre mňa 934 00:43:19,470 --> 00:43:21,420 hľadať v tejto oblasti. 935 00:43:21,420 --> 00:43:23,320 Takže to asi nie je relevantná. 936 00:43:23,320 --> 00:43:26,500 Pre užívateľským menom, ja tvrdím, že UNIKÁTNY je dobrá odpoveď. 937 00:43:26,500 --> 00:43:31,200 Ale predpokladajme, že sme viac užívateľov zaujímavejšie než len používateľské mená, 938 00:43:31,200 --> 00:43:32,430 hashe, a identifikačné čísla. 939 00:43:32,430 --> 00:43:33,860 Čo keby sme dali ľuďom celé mená? 940 00:43:33,860 --> 00:43:37,700 Čo keby sme im dali adresy a ďalšie údaje o nich? 941 00:43:37,700 --> 00:43:43,360 >> No, ak zadáte, že stĺpec Databáza je indexovaná, to znamená, že 942 00:43:43,360 --> 00:43:47,730 MySQL alebo Oracle, alebo čokoľvek databázy , Ktorú používate, by mali pracovať svoje kúzlo 943 00:43:47,730 --> 00:43:51,300 a použiť nejaký maškarný dát štruktúra ako strom, alebo trie, alebo 944 00:43:51,300 --> 00:43:55,940 hash tabuľky, alebo niečo na zabezpečenie že pri hľadaní dát pomocou 945 00:43:55,940 --> 00:43:58,150 vyberte v danom poli - 946 00:43:58,150 --> 00:44:01,310 chcel mi ukázať všetkým, že žije na Oxford Street. 947 00:44:01,310 --> 00:44:02,540 Dotaz takhle. 948 00:44:02,540 --> 00:44:06,250 Ak ste určili vopred, že Chcete-index v tejto oblasti, 949 00:44:06,250 --> 00:44:09,050 vyhľadávanie bude oveľa, oveľa rýchlejšie. 950 00:44:09,050 --> 00:44:12,090 >> Ak neurčíte index, najlepšie môžete urobiť, je lineárne vyhľadávanie, ak 951 00:44:12,090 --> 00:44:13,030 to nie je zoradená. 952 00:44:13,030 --> 00:44:16,220 Ale ak zadáte INDEX inteligentný ľudia, ktorí sa do databázy - 953 00:44:16,220 --> 00:44:19,340 ľudia ako vy, ktorí teraz vedia stromy a pokusy a hash tabuľky - 954 00:44:19,340 --> 00:44:23,220 automaticky vytvoriť také dátové štruktúra v pamäti RAM, aby sa ubezpečil, že 955 00:44:23,220 --> 00:44:26,050 tieto prehliadky sú oveľa rýchlejšie. 956 00:44:26,050 --> 00:44:29,660 >> TELE zatiaľ je podobný v duchu, ale umožňuje robiť zástupné 957 00:44:29,660 --> 00:44:35,480 vyhľadávanie, ako mi ukázal všetkým, že žije v uliciach, ktoré začínajú 958 00:44:35,480 --> 00:44:36,960 písmeno O z akéhokoľvek dôvodu. 959 00:44:36,960 --> 00:44:38,850 Môžete to urobiť zástupné vyhľadávanie páči. 960 00:44:38,850 --> 00:44:45,880 Alebo, čo je závažné veci, ako výstavy mi každý, kto má slovo - 961 00:44:45,880 --> 00:44:49,400 Ukáž mi všetky, ktorých názov začína zvláštnym listom. 962 00:44:49,400 --> 00:44:51,880 Môžete vyhľadávať kľúčové slová týmto spôsobom. 963 00:44:51,880 --> 00:44:52,630 Dobrá. 964 00:44:52,630 --> 00:44:55,760 >> Takže, dizajn príležitosti tam potenciálne. 965 00:44:55,760 --> 00:44:57,740 Tam sú iní, že budem mávať rukami na. 966 00:44:57,740 --> 00:45:00,530 Ukazuje sa, že môžete mať rôzne ukladacie motory. 967 00:45:00,530 --> 00:45:04,390 A to je viac, než potrebujeme tajomný Určite na problém nastaviť sedem. 968 00:45:04,390 --> 00:45:06,920 V predvolenom nastavení je vy používate niečo, čo nazýva InnoDB. 969 00:45:06,920 --> 00:45:10,910 Uvidíte zmienka o tomto niekde v phpMyAdmin je rozhranie s najväčšou pravdepodobnosťou. 970 00:45:10,910 --> 00:45:14,130 Ale viem, že existujú aj iné konštrukcie rozhodnutia, ktoré by mohli byť 971 00:45:14,130 --> 00:45:18,030 záujem prísť záverečných prác, ak urobíte niečo webový. 972 00:45:18,030 --> 00:45:19,330 >> Ale poďme na to. 973 00:45:19,330 --> 00:45:23,130 Poďme do toho a dať to na obrazovke ako ukážku pre príbeh 974 00:45:23,130 --> 00:45:26,330 zahŕňajúce ťa, spolubývajúci a pohár mlieka. 975 00:45:26,330 --> 00:45:28,240 Poďme sa dve minúty alebo tak nejako zlomiť tu. 976 00:45:28,240 --> 00:45:31,060 A ak môžete držať okolo, poďme späť vyzerať trochu viac na SQL a 977 00:45:31,060 --> 00:45:35,160 potom trochu JavaScript s p-set osem na mysli. 978 00:45:35,160 --> 00:45:36,120 >> Dobrá. 979 00:45:36,120 --> 00:45:40,420 Takže, poďme si myslieť rohový prípad, ktorý môže veľmi ľahko vzniknúť 980 00:45:40,420 --> 00:45:44,240 v súvislosti s pomocou databázy, alebo úprimne povedané, aj za použitia reálnych vecí 981 00:45:44,240 --> 00:45:46,280 ako bankomaty získať peniaze. 982 00:45:46,280 --> 00:45:47,640 Tak tu je to chladnička. 983 00:45:47,640 --> 00:45:50,040 Predpokladajme, že máte taky v na koľaji alebo váš dom. 984 00:45:50,040 --> 00:45:54,990 A máš jednu spolubývajúci, a obe sa vám páči mlieko pre inštanciu. 985 00:45:54,990 --> 00:45:57,210 >> Takže sa vrátiš domov z triedy jeden deň. 986 00:45:57,210 --> 00:45:58,490 On alebo ona ešte nie je staré. 987 00:45:58,490 --> 00:45:59,180 Otvorte chladničku. 988 00:45:59,180 --> 00:46:00,870 Naozaj chceš veľký pohár mlieka. 989 00:46:00,870 --> 00:46:01,820 Nie je mlieko. 990 00:46:01,820 --> 00:46:02,920 Takže to, čo robíte? 991 00:46:02,920 --> 00:46:03,840 Zatvorte chladničku. 992 00:46:03,840 --> 00:46:04,670 Vezmete si svoje kľúče. 993 00:46:04,670 --> 00:46:05,930 Môžete ísť von na námestí. 994 00:46:05,930 --> 00:46:09,240 A vy ste sa do fronty na CVS na tie, samoobslužnom pokladničnom veci, ktoré vždy 995 00:46:09,240 --> 00:46:11,180 trvať dlhšie, než v skutočnosti s pokladničné. 996 00:46:11,180 --> 00:46:11,820 Tak či onak. 997 00:46:11,820 --> 00:46:15,490 >> Takže medzitým dot dot dot, vaše spolubývajúci príde domov a on alebo ona 998 00:46:15,490 --> 00:46:17,440 Podobne má túžbu pre trochu mlieka. 999 00:46:17,440 --> 00:46:20,380 Takže on alebo ona otvorí chladničku, vyzerá vnútri a oh, sakra. 1000 00:46:20,380 --> 00:46:21,160 Žiadne mlieko. 1001 00:46:21,160 --> 00:46:24,750 Takže on alebo ona hlavy von, stane sa ísť s ostatnými CVS, ktorý bol len 1002 00:46:24,750 --> 00:46:27,900 blok preč z nejakého dôvodu, a to ani sa dostane do súladu kúpiť nejaké mlieko. 1003 00:46:27,900 --> 00:46:30,480 >> Medzitým, prídete domov, alebo príde domov, a čo 1004 00:46:30,480 --> 00:46:31,980 budete mať v konečnom dôsledku? 1005 00:46:31,980 --> 00:46:33,080 Dvakrát toľko mlieka. 1006 00:46:33,080 --> 00:46:34,620 Ale nemáte naozaj páči mlieko, že veľa. 1007 00:46:34,620 --> 00:46:37,300 Takže teraz máte toľko mlieka, že teraz jeden z nich je jednoducho ísť kyslé 1008 00:46:37,300 --> 00:46:37,820 nakoniec. 1009 00:46:37,820 --> 00:46:39,370 Tak to je naozaj zlý problém. 1010 00:46:39,370 --> 00:46:39,900 Je to tak? 1011 00:46:39,900 --> 00:46:41,990 >> Tak čo sa stalo? 1012 00:46:41,990 --> 00:46:44,810 Takže v podstate, to je druh z príkladu smiešne. 1013 00:46:44,810 --> 00:46:48,580 Ale pod pokrievku, čo sme mali stáť, tu je oba kontrolované 1014 00:46:48,580 --> 00:46:52,390 stav nejakého kusu pamäť, chladnička. 1015 00:46:52,390 --> 00:46:54,420 Obaja si skontrolujete stav niektoré premenné,. 1016 00:46:54,420 --> 00:46:57,360 Obaja ste došli k záveru ktorý potom konal. 1017 00:46:57,360 --> 00:47:01,420 Ale bohužiaľ, keď váš spolubývajúci bol v obchode, stav, ktorý 1018 00:47:01,420 --> 00:47:05,670 premenná zmení, on alebo ona sa vrátila a teraz chce zmeniť stav, ale 1019 00:47:05,670 --> 00:47:07,480 to už bolo zmenené na ňom alebo nej. 1020 00:47:07,480 --> 00:47:11,120 A samozrejme, že on alebo ona nemá šiel do obchodu, keby vedeli, 1021 00:47:11,120 --> 00:47:13,010 že ste už na ceste. 1022 00:47:13,010 --> 00:47:16,430 >> Takže v reálnom svete, ako si mohol sa tomuto problému vyhnúť, za predpokladu, že máte 1023 00:47:16,430 --> 00:47:18,940 chladničky, máte spolubývajúci, a vlastne radi mlieko? 1024 00:47:18,940 --> 00:47:19,760 >> Divákov: Komunikácia. 1025 00:47:19,760 --> 00:47:20,580 >> DAVID Malan: Komunikácia. 1026 00:47:20,580 --> 00:47:21,160 OK. 1027 00:47:21,160 --> 00:47:22,500 Ale ako môžete komunikovať? 1028 00:47:22,500 --> 00:47:23,990 >> DIVÁKOV: Nechajte poznámku. 1029 00:47:23,990 --> 00:47:25,480 >> DAVID Malan: Zanechať odkaz, že jo? 1030 00:47:25,480 --> 00:47:28,025 Vždy nechajte poznámku, pre fanúšikovia prehliadky. 1031 00:47:28,025 --> 00:47:31,580 Dobre, takže vždy zanechať odkaz, alebo dať naozaj ako visiaci zámok, alebo tak niečo 1032 00:47:31,580 --> 00:47:35,440 na chladničku, ktorá udržuje vaše spolubývajúci z kontroly stavu 1033 00:47:35,440 --> 00:47:36,540 táto premenná. 1034 00:47:36,540 --> 00:47:40,800 >> A teraz, prečo by to mohlo byť relevantné k problém nastaviť sedem, alebo do bankomatov. 1035 00:47:40,800 --> 00:47:46,780 No, predstavte si svet, v bankomate, kde by ste mali byť schopní ísť až do bankomatu 1036 00:47:46,780 --> 00:47:48,920 stroje tu, a ďalšie tu ATM. 1037 00:47:48,920 --> 00:47:50,680 A to sa stáva docela často. 1038 00:47:50,680 --> 00:47:54,150 A predpokladajme, že mal dve ATM karty, ktoré je možné získať. 1039 00:47:54,150 --> 00:47:57,420 A sa prihlásiť do oboch strojoch účinne súčasne, dúfajme, že 1040 00:47:57,420 --> 00:47:58,660 zatiaľ čo nikto nepozerá. 1041 00:47:58,660 --> 00:48:01,260 A potom zadáte PIN zhruba súčasne. 1042 00:48:01,260 --> 00:48:06,280 A potom robíte dotaz bilancie vidieť, koľko peňazí máte. 1043 00:48:06,280 --> 00:48:08,920 A povedzme, že máte 100 dolárov vľavo na vašom účte. 1044 00:48:08,920 --> 00:48:13,310 Takže v podstate súčasne, môžete povedal jeden, nula, nula, zadajte. 1045 00:48:13,310 --> 00:48:16,000 A dúfajme, že sa vrátiť nejaké peniaze. 1046 00:48:16,000 --> 00:48:18,440 >> Ale koľko peňazí môžete dostať späť? 1047 00:48:18,440 --> 00:48:21,710 Teraz počítača na konci dňa, najmä keď hovoríte 1048 00:48:21,710 --> 00:48:27,360 servery, nemusí nutne robiť veci, v poradí, ktoré sa očakáva. 1049 00:48:27,360 --> 00:48:30,860 >> Takže predpokladať, čo sa stane, pretože bez ohľadu na sieť rýchlosť otázky tam 1050 00:48:30,860 --> 00:48:34,530 sú, alebo problémy CPU existujú, alebo niečo také, predpokladám, že 1051 00:48:34,530 --> 00:48:38,530 Prvý bankomat skontroluje rovnováhu a vidí, oh, má táto osoba 100 dolárov. 1052 00:48:38,530 --> 00:48:41,840 Ale potom dostane roztržitý, pretože možno zálohovanie sa deje, a tak je to 1053 00:48:41,840 --> 00:48:42,500 spomaľuje. 1054 00:48:42,500 --> 00:48:45,080 Alebo snáď pri kontrole, siete Pripojenie mám trochu pomalší, pretože 1055 00:48:45,080 --> 00:48:45,910 to sa jednoducho stáva. 1056 00:48:45,910 --> 00:48:47,100 Sú to fyzické zariadenie. 1057 00:48:47,100 --> 00:48:49,330 Tak zatiaľ, druhý bankomat je pýta rovnakú otázku. 1058 00:48:49,330 --> 00:48:53,030 Koľko peňazí sa David má? 100 dolárov je odpoveď. 1059 00:48:53,030 --> 00:48:58,930 Ale pretože prvý bankomat doteraz nie je správa odoslaná odpočítať $ 100, a to ako 1060 00:48:58,930 --> 00:49:03,000 Bankomaty sú kontrolované trezoru banky, vidieť, že je to 100 dolárov tam, a teraz 1061 00:49:03,000 --> 00:49:07,160 Oba stroje sú potenciálne ísť vypľuť odpoveď. 1062 00:49:07,160 --> 00:49:12,240 >> Teraz, to je skvelé pre vás v určitom zmysle či to, čo banka robí nakoniec 1063 00:49:12,240 --> 00:49:17,200 je zmeniť výšku mínus 100 o nastavenie premennej rovná vašej 1064 00:49:17,200 --> 00:49:21,570 bankový účet rovná 0, na rozdiel od robiť mínus 100.. 1065 00:49:21,570 --> 00:49:24,410 Teraz, v najhoršom prípade pre banku - 1066 00:49:24,410 --> 00:49:27,470 alebo v najlepšom pre banku, zatiaľ, dávajú 200 dolárov, a 1067 00:49:27,470 --> 00:49:31,690 váš bankový účet teraz ukazuje negatívny 100 dolárov, čo naozaj nie je 1068 00:49:31,690 --> 00:49:32,950 prínosom pre vás vôbec. 1069 00:49:32,950 --> 00:49:36,500 Ale ide o to, že tento závod Podmienkou pre dvoch spolubývajúcich dostať 1070 00:49:36,500 --> 00:49:40,660 mlieko, alebo pre dva bankomaty, ktorí sa snažia získať hotovosť a zmeniť stav klenby 1071 00:49:40,660 --> 00:49:44,510 súčasne existujú nejaké keď budete mať databázu. 1072 00:49:44,510 --> 00:49:48,290 >> Teraz v probléme nastaviť sedem táto otázka vyvstáva v tom zmysle, že ak si kúpite 1073 00:49:48,290 --> 00:49:52,110 Podiel Facebooku skladom, a potom na inštancie môžete kúpiť druhý diel 1074 00:49:52,110 --> 00:49:55,160 Facebook skladom, budete musieť vykonať rozhodnutie ako programátor. 1075 00:49:55,160 --> 00:49:58,710 Aby bolo možné rozhodnúť, ako aktualizovať databázy, kurzy sa budete 1076 00:49:58,710 --> 00:50:02,250 má jeden riadok pre túto populáciu, a to je jeden spôsob, ako to urobiť. 1077 00:50:02,250 --> 00:50:06,640 A budeš mať jednu akciu FB, čo je ich burzový symbol 1078 00:50:06,640 --> 00:50:10,120 Pre túto užívateľské meno, alebo tohto používateľa ID, jedinečný identifikátor. 1079 00:50:10,120 --> 00:50:12,340 >> Ale rovnaký príbeh sa môže stať tu. 1080 00:50:12,340 --> 00:50:15,800 Pokiaľ si vyberiete v SQL, ako uvidíte v probléme nastaviť sedem, keď vidíte, 1081 00:50:15,800 --> 00:50:18,460 oh, David má jeden akcií Facebook skladom. 1082 00:50:18,460 --> 00:50:23,240 Dovoľte mi, aby som sa zmeniť to byť dve akcie, preto, že chce kúpiť 1083 00:50:23,240 --> 00:50:24,120 Druhý podiel. 1084 00:50:24,120 --> 00:50:27,860 Ale predpokladajme, že David vlastne mal dvoch okna prehliadača otvorte, alebo predpokladať, že 1085 00:50:27,860 --> 00:50:32,150 je to spoločný účet s dvoma manželmi, a obaja sa snažia plniť 1086 00:50:32,150 --> 00:50:36,770 rovnaká operácia, tam taky, existuje potenciál pre rozhodnutie bolo 1087 00:50:36,770 --> 00:50:39,670 vykonaná na základe predchádzajúceho stav sveta - 1088 00:50:39,670 --> 00:50:41,290 účet má jednu share - 1089 00:50:41,290 --> 00:50:45,630 a obaja ľudia, alebo oba servery, teraz skúste povedať, zvýšiť ju na dva podiely. 1090 00:50:45,630 --> 00:50:49,020 Ale v tomto prípade, možno ste nabitá mi peniaze na oboch akcií, ale 1091 00:50:49,020 --> 00:50:50,830 zvýši len raz. 1092 00:50:50,830 --> 00:50:54,730 >> Takže v skratke, zásadný problém tu, rovnako ako u vtipu o odchode 1093 00:50:54,730 --> 00:50:58,750 Upozorňujeme, alebo uvedenie visiaci zámok na ňom, je ak dvaja ľudia, alebo dva závity - 1094 00:50:58,750 --> 00:50:59,930 myslíte, že späť do nuly - 1095 00:50:59,930 --> 00:51:03,220 môžete skontrolovať stav nejakej premennej a potom skúste zmeniť túto premennú, 1096 00:51:03,220 --> 00:51:07,950 ale tieto dve veci sa nedejú na Zároveň ale môže dostať prerušený 1097 00:51:07,950 --> 00:51:11,500 ostatné, čo sa deje, údaje môže dostať do veľmi podivné stavu. 1098 00:51:11,500 --> 00:51:15,450 A môžete využiť, alebo môžete trpieť v zmysle peňažného príklade. 1099 00:51:15,450 --> 00:51:18,110 >> Takže problém nastaviť sedem, my vám tento jeden riadok kódu, ktorý dlhé 1100 00:51:18,110 --> 00:51:21,000 Stručne povedané, tento problém rieši problém v MySQL. 1101 00:51:21,000 --> 00:51:24,950 Jedná sa o veľmi dlhé inštrukcie, ktorá nie je ešte zmestí do jedného riadku na 1102 00:51:24,950 --> 00:51:30,370 screen tu zabezpečuje, že váš prevádzku je to, čo sa hovorí atómová. 1103 00:51:30,370 --> 00:51:33,720 To všetko sa deje naraz, alebo to nestane vôbec. 1104 00:51:33,720 --> 00:51:37,530 Jedná sa o veľmi dlhú frázu nemožno sa preruší čiastočne. 1105 00:51:37,530 --> 00:51:39,840 >> A to, čo robí, je doslova to, čo hovorí. 1106 00:51:39,840 --> 00:51:44,200 Vložiť do nejakej tabuľky nasledujúce tri polia tieto špecifické hodnoty, 1107 00:51:44,200 --> 00:51:47,280 ale duplicitné kľúč, nerobia vložku. 1108 00:51:47,280 --> 00:51:48,280 Vykonajte aktualizáciu. 1109 00:51:48,280 --> 00:51:52,450 Takže je to ako robiť SELECT a INSERT tak povediac v rovnakom čase. 1110 00:51:52,450 --> 00:51:55,150 A čo je kľúčom, ktorý je pravdepodobne sú odvolával sa na tu? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> Ukazuje sa, a budete vidieť v problém nastaviť sedem je spec, pretože 1113 00:52:01,380 --> 00:52:06,040 sme tam vyhlásila, že je jedinečný kľúč Na tomto stole tak, aby nebolo 1114 00:52:06,040 --> 00:52:08,480 nemôžete mať viac riadkov pre rovnakého užívateľa s 1115 00:52:08,480 --> 00:52:10,150 Rovnaký Penny Sklad symbol - 1116 00:52:10,150 --> 00:52:13,780 v tomto príklade tu, DVN.V je hlúpe penny zásob, ktoré sme 1117 00:52:13,780 --> 00:52:14,980 pozri v spec. 1118 00:52:14,980 --> 00:52:17,860 Pretože sme vyhlásil, že je jedinečný, To znamená, že ak 1119 00:52:17,860 --> 00:52:23,580 pokuse o vloženie duplicitné riadok, ste miesto bude aktualizovať, bez toho, aby 1120 00:52:23,580 --> 00:52:27,020 niekto má šancu zmeniť stav sveta jeden. 1121 00:52:27,020 --> 00:52:29,400 Takže v skratke, čo zaisťuje veci sú atomické. 1122 00:52:29,400 --> 00:52:32,530 >> Všeobecnejšie však databázy ako je MySQL - 1123 00:52:32,530 --> 00:52:35,460 a nemusíte túto funkciu pre p-set sedem, ale majte to na pamäti 1124 00:52:35,460 --> 00:52:36,200 budúcnosť - 1125 00:52:36,200 --> 00:52:38,870 podporu, čo sa nazýva transakcie, kde si môžete povedať, 1126 00:52:38,870 --> 00:52:40,990 START TRANSACTION doslova. 1127 00:52:40,990 --> 00:52:43,270 Potom môžete spustiť dva SQL príkazy. 1128 00:52:43,270 --> 00:52:45,710 A SQL príkaz, ako uvidíte v p-set sedem, vyzerá trochu 1129 00:52:45,710 --> 00:52:46,750 niečo také. 1130 00:52:46,750 --> 00:52:48,820 Aktualizovať tabuľku s názvom účtu. 1131 00:52:48,820 --> 00:52:52,550 Nastavte vyváženie stĺpec rovnajúcu sa čo Stĺpec Zostatok v súčasnosti 1132 00:52:52,550 --> 00:52:57,280 je mínus 1000, kde je číslo, na číslo účtu, ako je užívateľské meno, 1133 00:52:57,280 --> 00:53:00,830 sa rovná 2 a aktualizovať Účet dot dot dot. 1134 00:53:00,830 --> 00:53:04,350 >> Takže laicky povedané, čo majú tieto dve otázky Zdá sa, že robil v 1135 00:53:04,350 --> 00:53:05,840 skutočný svet zmysel pre bankovníctvo? 1136 00:53:05,840 --> 00:53:07,440 >> DIVÁKOV: Prenos k úsporám. 1137 00:53:07,440 --> 00:53:08,020 >> DAVID Malan: Presne tak. 1138 00:53:08,020 --> 00:53:10,470 Prevodom peňažných prostriedkov z účtu na druhý. 1139 00:53:10,470 --> 00:53:14,400 A to je ďalší príklad, kde sa Naozaj chcete tieto dve veci, ktoré sa stalo 1140 00:53:14,400 --> 00:53:15,570 alebo nestane. 1141 00:53:15,570 --> 00:53:18,880 Nechcete niečo dostať do prostredný z nich a potenciálne pokaziť 1142 00:53:18,880 --> 00:53:22,220 matematika, alebo pokaziť, koľko peňazí máte, alebo koľko 1143 00:53:22,220 --> 00:53:23,170 Peniaze banka. 1144 00:53:23,170 --> 00:53:26,890 Takže to, čo je naozaj pekné o transakciách v MySQL je to, že, a 1145 00:53:26,890 --> 00:53:30,160 databázy všeobecnejšie, je to, že a chytrí ľudia, ktorí si realizované 1146 00:53:30,160 --> 00:53:33,670 Tieto funkcie zistiť, ako uisti, že obe tieto veci sa stalo 1147 00:53:33,670 --> 00:53:35,120 alebo vôbec nie. 1148 00:53:35,120 --> 00:53:38,580 >> A ak ste naozaj túžila, aby sa webové stránky, ktoré ich používajú ľudia na 1149 00:53:38,580 --> 00:53:41,490 kampus, ľudia v reálnom svete, robiť niečo vo spúšťacie slova zmysle, 1150 00:53:41,490 --> 00:53:43,300 to sú druhy rozhodnutie o návrhu, že 1151 00:53:43,300 --> 00:53:45,020 byť stále tak dôležité. 1152 00:53:45,020 --> 00:53:48,240 V opačnom prípade začnete strácať dáta stratiť používateľa, alebo v najhoršom prípade, ako 1153 00:53:48,240 --> 00:53:51,800 Videli sme tu, prípadne prísť o peniaze. 1154 00:53:51,800 --> 00:53:56,180 Takže znova, o tom viac v probléme nastavení sedem, a tiež možno pre niektoré 1155 00:53:56,180 --> 00:53:57,530 Ste v záverečných prác. 1156 00:53:57,530 --> 00:54:01,870 >> Takže zmeňme ten obraz sme mali Pred chvíľou práve jedna cesta. 1157 00:54:01,870 --> 00:54:04,070 Dovoľte mi teda skutočne vidieť, či môžem - 1158 00:54:04,070 --> 00:54:06,030 Nie, je to preč, že. 1159 00:54:06,030 --> 00:54:06,690 Tu to je. 1160 00:54:06,690 --> 00:54:09,020 >> Tak toto je miesto, kde sme opustili minule. 1161 00:54:09,020 --> 00:54:12,390 A ukázalo sa, že budeme prehadzovať ešte jedna vec, do mixu tu - 1162 00:54:12,390 --> 00:54:14,510 jazyka JavaScript s názvom. 1163 00:54:14,510 --> 00:54:18,060 Takže JavaScript zodpovedá skutočne do tohto kusu - 1164 00:54:18,060 --> 00:54:22,086 a ja som celkom dostatok miesta, takže to nie je teraz v mierke. 1165 00:54:22,086 --> 00:54:23,900 OK, to je naozaj úbohé. 1166 00:54:23,900 --> 00:54:27,075 OK, tak je to JavaScript. 1167 00:54:27,075 --> 00:54:27,340 Dobrá. 1168 00:54:27,340 --> 00:54:28,760 Som naozaj robí to medvediu službu. 1169 00:54:28,760 --> 00:54:29,390 Dobrá. 1170 00:54:29,390 --> 00:54:34,790 >> Takže JavaScript je ďalší programovací jazyk, a naša posledná, či to pomôže 1171 00:54:34,790 --> 00:54:37,770 uistiť, že to nie je o mnoho viac z požiarnych hydrantov tu. 1172 00:54:37,770 --> 00:54:41,100 Takže JavaScript je interpretovaný jazyk, čo znamená, že nepotrebujete 1173 00:54:41,100 --> 00:54:42,670 skompilovať do núl a jednotiek. 1174 00:54:42,670 --> 00:54:43,690 Stačí spustiť ho. 1175 00:54:43,690 --> 00:54:47,680 Ale to, čo je zásadne odlišná s JavaScript je zvyčajne, že 1176 00:54:47,680 --> 00:54:49,815 nespúšťajte ju na vašom webovom serveri. 1177 00:54:49,815 --> 00:54:52,570 To už ani nemôže spustiť v Prístroj sám o sebe. 1178 00:54:52,570 --> 00:54:57,490 Skôr, dostane stiahne užívateľom cez HTTP do svojho prehliadača - 1179 00:54:57,490 --> 00:55:00,260 Chrome, Safari, Internet Explorer, Firefox, čokoľvek - 1180 00:55:00,260 --> 00:55:03,860 a je to prehliadač, ktorý vykonáva toto najmä programovací jazyk. 1181 00:55:03,860 --> 00:55:08,000 >> Takže aby bolo jasno, PHP bolo doteraz vykonáva buď na príkazovom riadku v 1182 00:55:08,000 --> 00:55:11,290 Naše čierne a biele okno, na serveri ako zariadenie, počítačové 1183 00:55:11,290 --> 00:55:14,490 ako zariadenie, alebo to bolo vykonaný webový server 1184 00:55:14,490 --> 00:55:15,860 beží na počítači. 1185 00:55:15,860 --> 00:55:20,490 Ale téma je, že PHP doteraz bol vykonaný na strane servera, takže 1186 00:55:20,490 --> 00:55:24,820 používateľ a prehliadač užívateľa nikdy nevidí riadok kódu PHP. 1187 00:55:24,820 --> 00:55:28,530 >> V skutočnosti, ak ste niekedy otvoriť prehliadač vaše webové stránky alebo iný a vy 1188 00:55:28,530 --> 00:55:32,400 skutočne vidieť PHP kód v okne, niekto posral. 1189 00:55:32,400 --> 00:55:34,950 Vzhľadom k tomu, že to nemá byť poslaný do prehliadača priamo. 1190 00:55:34,950 --> 00:55:38,150 Malo by to byť vykonané a obrátil do niečoho ako HTML. 1191 00:55:38,150 --> 00:55:40,120 >> Ale JavaScript je vo svojej podstate opak. 1192 00:55:40,120 --> 00:55:44,350 Je určený pre beh typicky vnútri z užívateľovho okna prehliadača. 1193 00:55:44,350 --> 00:55:46,840 A aké druhy webových stránok používať JavaScript potom v týchto dňoch? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> Ako doslova každú obľúbené webové stránky. 1196 00:55:52,180 --> 00:55:55,430 Každej webovej stránky, ktoré ste pravdepodobne používať JavaScript pre každodenné použitie 1197 00:55:55,430 --> 00:55:57,330 Najjednoduchšie a dokonca sexy vlastnosti. 1198 00:55:57,330 --> 00:55:59,800 >> Takže niečo ako Facebook Chat ak používate to. 1199 00:55:59,800 --> 00:56:01,040 Ako to vlastne funguje? 1200 00:56:01,040 --> 00:56:05,090 No tak ďaleko, všetci, čo sme kedy urobiť s HTML a PHP sa predpokladá, že 1201 00:56:05,090 --> 00:56:08,750 môžete vytiahnuť URL, a stlačte klávesu Enter, a vidíte nejaký obsah HTML. 1202 00:56:08,750 --> 00:56:11,970 A kliknete na odkaz, ktorý mení URL, zmení stránku a načíta 1203 00:56:11,970 --> 00:56:12,740 nejaký nový obsah. 1204 00:56:12,740 --> 00:56:16,340 Kliknite na ďalšie adresy URL alebo odoslať formulár, musíte sa bleskurýchlo na inú stránku a 1205 00:56:16,340 --> 00:56:17,420 Vidíte nejaký nový obsah. 1206 00:56:17,420 --> 00:56:22,710 >> Ale používať niečo ako Facebook Chat, alebo Gchat alebo Google Maps, zriedka 1207 00:56:22,710 --> 00:56:27,350 sa celá stránka osviežiť tak, že uvidíte bielu obrazovku okamih a 1208 00:56:27,350 --> 00:56:28,470 potom nový obsah. 1209 00:56:28,470 --> 00:56:32,610 Skôr, webové stránky sú dnes dynamicky stále znovu aktualizovaný a 1210 00:56:32,610 --> 00:56:35,570 znova a znova všetko nejako zo zákulisia. 1211 00:56:35,570 --> 00:56:38,560 A ukázalo sa, že keď idú na niečo ako Facebook, alebo Gchat, 1212 00:56:38,560 --> 00:56:43,050 alebo Gmail a aktualizácie stránok automaticky, bez prekládky 1213 00:56:43,050 --> 00:56:47,630 Celá obrazovka, čo sa stalo, je, že Váš prehliadač má z trochu tajne 1214 00:56:47,630 --> 00:56:49,410 ďalšie požiadavky HTTP - 1215 00:56:49,410 --> 00:56:52,740 nie celých webových stránok, ale len pre malé kúsky dát, ako sú 1216 00:56:52,740 --> 00:56:55,740 rýchle správy, že váš priateľ práve poslal vás, alebo aktualizáciu stavu, ktorý 1217 00:56:55,740 --> 00:56:58,210 niekto, alebo tweet poslal že niekto poslal. 1218 00:56:58,210 --> 00:57:02,120 Je to proste robiť malé požiadavky na dát, a potom pomocou JavaScriptu, tento 1219 00:57:02,120 --> 00:57:06,370 programovací jazyk, zmeniť to, čo webová stránka vyzerá bez 1220 00:57:06,370 --> 00:57:09,860 Server pomáhajú, bez servera generovanie tento HTML. 1221 00:57:09,860 --> 00:57:13,820 >> Takže v skratke, JavaScript môže byť použitý a potom nielen načítať nové dáta z 1222 00:57:13,820 --> 00:57:16,750 servera bez prekládky celok stránky alebo odoslanie formulára. 1223 00:57:16,750 --> 00:57:20,060 To môže byť tiež použitý k zmene tzv DOM - 1224 00:57:20,060 --> 00:57:21,520 Document Object Model - 1225 00:57:21,520 --> 00:57:24,620 ktorý je len fantázia spôsob, ako hovorí strom HTML 1226 00:57:24,620 --> 00:57:26,220 že sme videli minule. 1227 00:57:26,220 --> 00:57:31,640 >> Takže uistiť, JavaScript je syntakticky tak podobný C i 1228 00:57:31,640 --> 00:57:32,820 Nie je hlavné funkcie. 1229 00:57:32,820 --> 00:57:35,430 Stačí začať písať kód a to bude vykonaný, alebo 1230 00:57:35,430 --> 00:57:36,900 vykladať správne. 1231 00:57:36,900 --> 00:57:38,660 Podmienky budú vyzerať takto. 1232 00:57:38,660 --> 00:57:41,230 Sa nijako nelíši od C alebo PHP na to príde. 1233 00:57:41,230 --> 00:57:43,890 Booleovské výrazy alebo-ed spolu bude vyzerať takto. 1234 00:57:43,890 --> 00:57:45,590 Anded spolu vyzerať takto. 1235 00:57:45,590 --> 00:57:47,750 >> Spínače bude vyzerať takto. 1236 00:57:47,750 --> 00:57:49,440 Pre slučky bude vyzerať takto. 1237 00:57:49,440 --> 00:57:51,060 Kým slučky bude vyzerať takto. 1238 00:57:51,060 --> 00:57:53,316 Do while bude vyzerať takto. 1239 00:57:53,316 --> 00:57:54,780 >> To je nové. 1240 00:57:54,780 --> 00:57:58,753 Takže JavaScript nemá s foreach postaviť per sa, ale tento konštrukt 1241 00:57:58,753 --> 00:58:03,870 pre variabilné aj v poli, a aj v tomto Prípad sa hodnota indexu. 1242 00:58:03,870 --> 00:58:06,880 Takže je to trochu odlišné od foreach, ale nové verzie 1243 00:58:06,880 --> 00:58:10,280 JavaScript je coming out po celú dobu, takže aj táto funkcia jazyka 1244 00:58:10,280 --> 00:58:10,880 sa vyvíjajú. 1245 00:58:10,880 --> 00:58:16,920 >> A ako stranou, JavaScript týchto dňoch môže byť tiež použitý na serveri, rovnako ako 1246 00:58:16,920 --> 00:58:19,920 PHP pomocou rámca s názvom Node.js. 1247 00:58:19,920 --> 00:58:24,670 Jeden z CS50 je TFs, Kevin, viedlo seminár o Node.js, že je k dispozícii na adrese 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars. 1249 00:58:26,440 --> 00:58:28,830 Takže ak ste zvedaví, viem, že vám možno použiť na strane servera, ako to 1250 00:58:28,830 --> 00:58:33,870 dobre, ale to je pomerne nedávny trend, ale mocný na to. 1251 00:58:33,870 --> 00:58:35,270 >> To je trochu iný. 1252 00:58:35,270 --> 00:58:37,910 To je pole v JavaScriptu. 1253 00:58:37,910 --> 00:58:40,115 A čo udrie vás, ako rôzne v porovnaní s C alebo PHP? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 Existuje niekoľko rýchlych príbehov môžeme povedať tu. 1256 00:58:47,420 --> 00:58:49,367 Čo chýba v porovnaní s PHP? 1257 00:58:49,367 --> 00:58:51,652 >> DIVÁKOV: [nepočuteľné]. 1258 00:58:51,652 --> 00:58:52,110 >> DAVID Malan: Áno? 1259 00:58:52,110 --> 00:58:53,322 Ospravedlňujeme sa, ešte raz? 1260 00:58:53,322 --> 00:58:54,740 >> DIVÁKOV: Nie je vyhlásenie typ premennej. 1261 00:58:54,740 --> 00:58:56,390 >> DAVID Malan: Nie sme vyhlásenie typ premennej. 1262 00:58:56,390 --> 00:58:59,630 Takže vlastne celkom ako PHP, nie sme uvedie typy tejto premennej. 1263 00:58:59,630 --> 00:59:02,670 Skôr sme viac druhovo hovorí var pre premenné. 1264 00:59:02,670 --> 00:59:06,690 Nemáme PHP obťažovanie znak dolára, čo pri únavné 1265 00:59:06,690 --> 00:59:09,160 typ, to aby sa viac zrejmé, že niečo, čo je variabilný. 1266 00:59:09,160 --> 00:59:11,830 Kým tu, sme trochu späť do C je prístup len o volanie 1267 00:59:11,830 --> 00:59:14,500 premenná názvom chceme dať to, ako čísla. 1268 00:59:14,500 --> 00:59:17,170 A tiež ako PHP, máme hranaté zátvorky pre 1269 00:59:17,170 --> 00:59:19,170 hodnoty vnútri tohto poľa. 1270 00:59:19,170 --> 00:59:22,490 >> Takže premenné v JavaScripte aj môže vyzerať napríklad takto. 1271 00:59:22,490 --> 00:59:26,900 Všimnite si, to je reťazec s názvom s, ale rovnako máme neurčené 1272 00:59:26,900 --> 00:59:28,750 že je to reťazec. 1273 00:59:28,750 --> 00:59:33,160 Tu však je funkcia, ktorá nie je existujú v presne rovnakým spôsobom v PHP, 1274 00:59:33,160 --> 00:59:34,460 ale trochu podobne. 1275 00:59:34,460 --> 00:59:36,530 Toto je objekt v JavaScriptu. 1276 00:59:36,530 --> 00:59:42,110 A objekty sú trochu Swiss Army Nôž na dátové štruktúry v tom, že 1277 00:59:42,110 --> 00:59:43,900 možno použiť pre ľubovoľný počet vecí. 1278 00:59:43,900 --> 00:59:46,860 >> Tu, napríklad, budeme deklarovať premenná s názvom citácie. 1279 00:59:46,860 --> 00:59:49,110 Typ tejto premennej je objekt. 1280 00:59:49,110 --> 00:59:53,550 Môžete myslieť na to ako C struct že má kľúče a hodnoty. 1281 00:59:53,550 --> 00:59:55,250 Symbol je kľúč. 1282 00:59:55,250 --> 00:59:57,350 FB je hodnota, zrejme symbol stock. 1283 00:59:57,350 --> 00:59:57,930 Čiarka. 1284 00:59:57,930 --> 01:00:02,180 Cena je ďalším kľúčovým, a jeho hodnota je zrejme s plávajúcou desatinnou čiarkou, alebo 1285 01:00:02,180 --> 01:00:06,510 číslo všeobecnejšie v JavaScript, na 49,26 dolárov. 1286 01:00:06,510 --> 01:00:09,030 >> Takže PHP nemá - 1287 01:00:09,030 --> 01:00:12,980 sme nevideli v PHP objekty úplne takto, ale my sme vidieť analógové, 1288 01:00:12,980 --> 01:00:14,093 ktorý bol, čo? 1289 01:00:14,093 --> 01:00:14,980 >> DIVÁKOV: [nepočuteľné]. 1290 01:00:14,980 --> 01:00:16,110 >> DAVID Malan: Asociatívne pole. 1291 01:00:16,110 --> 01:00:19,990 Takže zatiaľ čo PHP má asociatívne polia ktorého syntax je niekedy mierne tak 1292 01:00:19,990 --> 01:00:20,370 rôzne - 1293 01:00:20,370 --> 01:00:21,780 sme videli hranaté zátvorky. 1294 01:00:21,780 --> 01:00:23,860 Videli sme podivné šípky symboly. 1295 01:00:23,860 --> 01:00:27,330 JavaScript musí objektov, ale je to predovšetkým sémantické rozdiely a 1296 01:00:27,330 --> 01:00:29,260 iný synonymom pre túto chvíľu. 1297 01:00:29,260 --> 01:00:35,060 Avšak, ako stranou, PHP tiež objekty, a to spôsobom, ktorý Java a ďalšie 1298 01:00:35,060 --> 01:00:37,810 jazyky majú objekty objektovo orientované programovanie. 1299 01:00:37,810 --> 01:00:40,440 Ale budeme používať to len Pre dátové typy pre teraz. 1300 01:00:40,440 --> 01:00:42,170 Objekty a asociatívne pole. 1301 01:00:42,170 --> 01:00:44,140 >> To by sa dalo robiť, že trochu jasnejšie. 1302 01:00:44,140 --> 01:00:45,890 Tu je dôvod, prečo je užitočný objekt. 1303 01:00:45,890 --> 01:00:48,760 Ak chcete deklarovať študenta, ako Zamyla, môžeme skutočne 1304 01:00:48,760 --> 01:00:52,630 zapouzdřit tak povediac vo vnútri, ktoré objekt pomocou zložených zátvoriek, rovnako ako 1305 01:00:52,630 --> 01:00:55,060 pred celým zväzkom kľúčov a hodnoty tu. 1306 01:00:55,060 --> 01:00:59,150 Máme ID, dom, a názov Zamyla, nasleduje bodkočiarka ako 1307 01:00:59,150 --> 01:01:00,690 zvyčajne na konci. 1308 01:01:00,690 --> 01:01:04,840 >> Tu dole tiež, čo je o niečo odlišné, ale aj veľmi silný 1309 01:01:04,840 --> 01:01:05,690 v týchto dňoch. 1310 01:01:05,690 --> 01:01:08,780 Tu je pole, a ja viem, že preto, tam je hranatá zátvorka up 1311 01:01:08,780 --> 01:01:11,090 Horná a hranatá zátvorka v spodnej časti. 1312 01:01:11,090 --> 01:01:16,050 A to je pole, aké dáta napíšte zrejme v JavaScripte? 1313 01:01:16,050 --> 01:01:21,260 To je rad z nich vyzerá ako tri objekty. 1314 01:01:21,260 --> 01:01:24,580 A ja viem, že je to len objekt pretože zložených zátvoriek. 1315 01:01:24,580 --> 01:01:28,760 A všimnite si, že je otvorený zložená zátvorka, niektoré veci, blízko zložená zátvorka, čiarka, 1316 01:01:28,760 --> 01:01:31,180 potom ešte viac, čiarka, a potom ešte viac. 1317 01:01:31,180 --> 01:01:33,800 Tak to je tri argumenty oddelené dvoma čiarkami. 1318 01:01:33,800 --> 01:01:36,810 >> Tak toto je pole z troch objektov. 1319 01:01:36,810 --> 01:01:39,940 A každý z týchto objektov, sa zdá, že je študent alebo zamestnancom niektorých 1320 01:01:39,940 --> 01:01:42,370 triedenie, každý s ID, dom, a meno. 1321 01:01:42,370 --> 01:01:45,060 Ale ja som to nazval niečo tzv JSON - 1322 01:01:45,060 --> 01:01:47,450 JavaScript Object Notation. 1323 01:01:47,450 --> 01:01:52,060 A to je formát dát, ktorý skutočne Je to veľmi populárny a vo 1324 01:01:52,060 --> 01:01:55,100 móda v týchto dňoch, že ak píšete aplikácie, ktorá používa Facebook 1325 01:01:55,100 --> 01:01:59,150 API, Twitter API, naozaj takmer akékoľvek API tam v týchto dňoch, 1326 01:01:59,150 --> 01:02:02,820 vrátane niektorých CS50 vlastné, Údaje sa vrátiš nie je 1327 01:02:02,820 --> 01:02:04,720 old school formát CSV. 1328 01:02:04,720 --> 01:02:06,780 >> Vzhľadom k tomu, že odvolanie CSV je veľmi jednoduchá. 1329 01:02:06,780 --> 01:02:10,230 Je to len stĺpce oddelené čiarkou. 1330 01:02:10,230 --> 01:02:13,190 JSON dát vám dáva ďalšie metadáta. 1331 01:02:13,190 --> 01:02:17,800 Združuje kľúč s každou hodnotou, aby nemajú len predpokladať, že 1332 01:02:17,800 --> 01:02:22,460 nultý stĺpec je jedna hodnota, stĺpec z nich je iný, stĺpec dve ďalšie. 1333 01:02:22,460 --> 01:02:26,790 Všetko, čo sa v objekte JSON tu je niečo self-popisovať, pretože každý 1334 01:02:26,790 --> 01:02:30,940 jedným z mien v tomto súbore má doslova meno pred ním ako 1335 01:02:30,940 --> 01:02:32,510 reťazec v úvodzovkách. 1336 01:02:32,510 --> 01:02:34,950 >> Takže poďme sa pozrieť na Pár príkladov tu. 1337 01:02:34,950 --> 01:02:36,800 Nechaj ma ísť do prístroja. 1338 01:02:36,800 --> 01:02:41,000 A nechaj ma ísť do našej vhost adresár na verejnosti. 1339 01:02:41,000 --> 01:02:45,590 A dovoľte mi ísť do JavaScript adresár. 1340 01:02:45,590 --> 01:02:49,610 A poďme do toho a otvoriť dom-0.html, kde DOM jednoducho znamená, 1341 01:02:49,610 --> 01:02:51,010 Document Object Model. 1342 01:02:51,010 --> 01:02:53,490 Je to strom, veci, na ktoré Som sa zmienil už skôr. 1343 01:02:53,490 --> 01:02:54,950 >> A dovoľte mi navrhnúť nasledujúce. 1344 01:02:54,950 --> 01:02:57,720 Tu je webová stránka, ktorej Telo je pomerne jednoduchý. 1345 01:02:57,720 --> 01:03:00,170 Tak tu sa na dne, Všimol som si formu. 1346 01:03:00,170 --> 01:03:01,500 Už sme videli tie. 1347 01:03:01,500 --> 01:03:07,600 To má dva vstupy, z ktorých jeden má ID mená, z ktorých jeden je typu 1348 01:03:07,600 --> 01:03:09,830 predložiť, a prvý niečí typ textu. 1349 01:03:09,830 --> 01:03:11,900 Takže to vlastne znie celkom jednoduché. 1350 01:03:11,900 --> 01:03:13,090 >> Poďme sem. 1351 01:03:13,090 --> 01:03:15,390 Vráťme sa na túto stránku tu. 1352 01:03:15,390 --> 01:03:21,030 Poďme na localhost, a ísť do náš adresár JavaScript, a ísť do 1353 01:03:21,030 --> 01:03:24,640 dom-0, a tu máme tento formulár. 1354 01:03:24,640 --> 01:03:26,550 Tak to je zrejme všetko Táto stránka nemá. 1355 01:03:26,550 --> 01:03:28,740 Má názov poľa, sa tlačidlo Odoslať. 1356 01:03:28,740 --> 01:03:30,340 Ale ja nebudem používať PHP tu. 1357 01:03:30,340 --> 01:03:34,310 Budem robiť všetko strane klienta tak povediac v JavaScripte takto. 1358 01:03:34,310 --> 01:03:39,100 >> Všimnite si, že som sa naozaj dostal meno Pole tohto vstupu jedinečný 1359 01:03:39,100 --> 01:03:42,350 identifikátor, ktorý bude skutočne daj mi nejaký čas na chvíľu. 1360 01:03:42,350 --> 01:03:45,480 A všimnite si, čo som predstavil ďalší tag v hlave mojej webovej stránky, 1361 01:03:45,480 --> 01:03:46,565  tag. 1362 01:03:46,565 --> 01:03:50,120 >> Takže je to v tomto zmysle, že JavaScript je programovací jazyk na strane klienta. 1363 01:03:50,120 --> 01:03:55,020 V tomto prípade, rovnako ako CSS, som dal je priamo vnútri môjho HTML. 1364 01:03:55,020 --> 01:03:58,810 Ale nevšimla som deklaroval funkciu že vyzerá trochu ako PHP 1365 01:03:58,810 --> 01:04:01,530 syntakticky, ale je to v skutočnosti JavaScript, pretože opäť, je to 1366 01:04:01,530 --> 01:04:03,920 na strane klienta v prehliadači. 1367 01:04:03,920 --> 01:04:07,590 A hádajte, čo je to chystá áno, aj keď niektoré syntaxe 1368 01:04:07,590 --> 01:04:09,338 Tu je nový. 1369 01:04:09,338 --> 01:04:11,760 >> DIVÁKOV: Pozdravuj ktokoľvek. 1370 01:04:11,760 --> 01:04:14,020 >> DAVID Malan: Bude to pozdraviť každému, kto navštívi túto stránku. 1371 01:04:14,020 --> 01:04:15,120 Tak ako? 1372 01:04:15,120 --> 01:04:18,070 >> Takže všimnete, že sa ukáže v JavaScriptu tam je upozornenie function (). 1373 01:04:18,070 --> 01:04:22,840 To je veľmi akési smutné funkcie, ktoré naozaj len inklinuje k obťažovať užívateľa. 1374 01:04:22,840 --> 01:04:25,440 Nie je to jeden, mali by ste naozaj používať zvyčajne, ale je to rýchle a špinavé 1375 01:04:25,440 --> 01:04:27,710 spôsob, druh tlače niečo s grafickým užívateľským 1376 01:04:27,710 --> 01:04:29,180 rozhranie, ako prehliadača. 1377 01:04:29,180 --> 01:04:31,400 Všimnite si, že mám reťazec apostrofmi. 1378 01:04:31,400 --> 01:04:36,010 Ukazuje sa, že na rozdiel od C JavaScript môže mať v skutočnosti použiť jeden 1379 01:04:36,010 --> 01:04:38,730 cituje, a úprimne povedané, je to len trochu o štylistické konvencie medzi 1380 01:04:38,730 --> 01:04:41,180 JavaScript programátorov použiť apostrofy. 1381 01:04:41,180 --> 01:04:43,750 PHP, ale v skutočnosti majú mierne iný význam. 1382 01:04:43,750 --> 01:04:45,810 Ale teraz, len viem, že To je jediný dôvod. 1383 01:04:45,810 --> 01:04:49,270 Konvencie v JavaScriptu je často použiť apostrofy, ale môžeme použiť 1384 01:04:49,270 --> 01:04:50,950 dvojité úvodzovky v oboch miestach rovnako. 1385 01:04:50,950 --> 01:04:52,610 >> Tak to je zaujímavé. 1386 01:04:52,610 --> 01:04:56,430 Pripomeňme si posledný čas, ktorý sme mali, že obraz na obrazovke, ktorý kreslil strom 1387 01:04:56,430 --> 01:04:59,720 kde ste mali uzol HTML, a hlava uzol a uzol tela, 1388 01:04:59,720 --> 01:05:00,800 a potom nejaký text. 1389 01:05:00,800 --> 01:05:04,700 Ale bol tam jeden špeciálny uzol na veľmi top, ktorý som nazval dokument. 1390 01:05:04,700 --> 01:05:08,260 No, ukázalo sa, v JavaScripte, akejkoľvek čas si napísať program v JavaScripte 1391 01:05:08,260 --> 01:05:11,040 v prehliadači, máte prístup k špeciálny globálne premenné. 1392 01:05:11,040 --> 01:05:14,130 Podobné duchom PHP superglobálnych, táto sa volá v 1393 01:05:14,130 --> 01:05:16,050 všetko malými písmenami dokument. 1394 01:05:16,050 --> 01:05:21,480 >> Je to ako struct, ale to struct Má tiež funkcie vnútri nej. 1395 01:05:21,480 --> 01:05:23,790 Takže C struct má len údaje obvykle. 1396 01:05:23,790 --> 01:05:29,060 Ale objekt JavaScript, pretože to Technicky je tiež funkcia, 1397 01:05:29,060 --> 01:05:31,830 inak známy ako spôsob, vnútri nej. 1398 01:05:31,830 --> 01:05:35,750 A môžete volať funkciu vnútri tento objekt doslova robí svoju 1399 01:05:35,750 --> 01:05:39,610 názov, bodka, a potom názov funkcie, alebo tiež metóda. 1400 01:05:39,610 --> 01:05:41,160 Je to len synonymum, naozaj. 1401 01:05:41,160 --> 01:05:42,450 >> A čo táto funkcia robiť? 1402 01:05:42,450 --> 01:05:43,840 Môžete trochu hádať z názvu. 1403 01:05:43,840 --> 01:05:45,590 Získať element podľa ID. 1404 01:05:45,590 --> 01:05:50,040 Takže to bude prehľadávať webové stránky, hľadať ten strom, hľadali 1405 01:05:50,040 --> 01:05:55,210 bez ohľadu na uzol, AKA element, má Unikátny ID citátom koniec citátu meno. 1406 01:05:55,210 --> 01:05:56,560 A potom to, čo mám robiť? 1407 01:05:56,560 --> 01:06:00,350 Chystám sa získať hodnotu vo vnútri že uzol v strome, a idem 1408 01:06:00,350 --> 01:06:02,580 nejako pozdraviť týmto menom. 1409 01:06:02,580 --> 01:06:05,360 >> Tak sa hádať, aj keď máme nie videl ešte, čo robiť a 1410 01:06:05,360 --> 01:06:07,396 symboly znamenajú tu a tu asi? 1411 01:06:07,396 --> 01:06:08,230 >> Divákov: Zlúčiť. 1412 01:06:08,230 --> 01:06:09,220 >> DAVID Malan: Zlúčiť. 1413 01:06:09,220 --> 01:06:11,290 Správne, a to sú len druh rozhodnutia o návrhu 1414 01:06:11,290 --> 01:06:12,280 ľud rokmi. 1415 01:06:12,280 --> 01:06:15,190 V PHP zřetězit veci s bodkami. 1416 01:06:15,190 --> 01:06:18,800 V jazyku C, si skočiť cez niekoľko obručou a volanie funkcií, ako je strcopy () alebo 1417 01:06:18,800 --> 01:06:20,600 Strčte () alebo iné podobné funkcie. 1418 01:06:20,600 --> 01:06:22,060 Ale v JavaScripte, môžete použiť plusy. 1419 01:06:22,060 --> 01:06:24,770 Takže je to len zreťazenie tri reťazca - 1420 01:06:24,770 --> 01:06:27,850 ahoj, meno, a potom výkričník. 1421 01:06:27,850 --> 01:06:30,390 >> Takže, kedy a prečo je táto funkcia volal aj keď? 1422 01:06:30,390 --> 01:06:33,150 No, hádajte od HTML v dolnej časti. 1423 01:06:33,150 --> 01:06:35,810 Prečo pozdraviť (), označovaný ako, alebo kedy? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> Zdá sa, že ako najlepšie môžem povedať, na predložiť pri predložení tohto formulára, 1426 01:06:44,030 --> 01:06:47,200 Budem robiť to, čo je vnútri týchto úvodzoviek. 1427 01:06:47,200 --> 01:06:50,900 A konkrétne, idem volať pozdraviť () a potom sa vrátiť false. 1428 01:06:50,900 --> 01:06:53,090 >> No, uvidíme, čo sa čistá účinok je tu ako prvý. 1429 01:06:53,090 --> 01:06:58,290 Tak ma nechaj ísť dopredu a zadajte v, povedzme, Loren, Odoslať. 1430 01:06:58,290 --> 01:06:59,440 Ahoj Loren. 1431 01:06:59,440 --> 01:07:02,990 Poďme sa pozrieť, či by to bolo len šťastie implementácie. 1432 01:07:02,990 --> 01:07:03,200 Nie. 1433 01:07:03,200 --> 01:07:05,990 Takže to, čo sa písanie meno Vlastne som tam dal. 1434 01:07:05,990 --> 01:07:07,970 >> Všimnime si ale, čo sa nemení. 1435 01:07:07,970 --> 01:07:10,360 URL je stále dom-0.html. 1436 01:07:10,360 --> 01:07:11,820 Nie sú tu register.php. 1437 01:07:11,820 --> 01:07:13,110 Neexistuje žiadny druhý súbor. 1438 01:07:13,110 --> 01:07:14,930 Neexistuje žiadna akcia atribút. 1439 01:07:14,930 --> 01:07:19,720 Takže čo je to return false pravdepodobne robiť? 1440 01:07:19,720 --> 01:07:23,660 Prečo som volanie pozdraviť () a potom vracia false asi? 1441 01:07:23,660 --> 01:07:26,420 Čo sa zvyčajne stane, keď kliknete na tlačidlo Odoslať na formulári, ktorý ešte máme 1442 01:07:26,420 --> 01:07:27,854 videl v minulom týždni? 1443 01:07:27,854 --> 01:07:29,900 >> DIVÁKOV: [nepočuteľné]. 1444 01:07:29,900 --> 01:07:30,860 >> DAVID Malan: Ide to niekde, že jo? 1445 01:07:30,860 --> 01:07:32,720 Ide do určitej cieľovej adrese URL. 1446 01:07:32,720 --> 01:07:34,120 Ale ja nechcem aby sa to stalo tu. 1447 01:07:34,120 --> 01:07:37,620 Chcem webové stránky, aby bol úplne dynamický, ako je Gmail, kde akonáhle ste 1448 01:07:37,620 --> 01:07:38,650 tam, zostaň tam. 1449 01:07:38,650 --> 01:07:42,900 URL nezmenia spôsobom, ktorý indikuje, že celá stránka je prekládky. 1450 01:07:42,900 --> 01:07:46,680 Skôr chcem niečo zmeniť ako tlač niečo 1451 01:07:46,680 --> 01:07:48,320 tu na obrazovke. 1452 01:07:48,320 --> 01:07:49,630 >> No dovoľte mi to vyčistiť sa trochu. 1453 01:07:49,630 --> 01:07:55,370 Dovoľte mi otvoriť ani dom-0, ale dovoľte mi, aby som otvorila dom-2. 1454 01:07:55,370 --> 01:07:57,350 Len aby ste videli nejaké syntaxe tu. 1455 01:07:57,350 --> 01:08:02,080 >> Ukazuje sa, že to, čo sme práve sa používa surové JavaScript. 1456 01:08:02,080 --> 01:08:04,420 Tak toto je naozaj jazyk JavaScript. 1457 01:08:04,420 --> 01:08:07,340 Niektorí z vás možno vedia o knižnica s názvom jQuery. 1458 01:08:07,340 --> 01:08:09,980 >> Takže jQuery nie je to isté vec ako JavaScript. 1459 01:08:09,980 --> 01:08:14,110 Je to len knižnica, ktorá naozaj šikovný chlapec napísal a popularizoval také 1460 01:08:14,110 --> 01:08:18,100 že takmer všetci na svete, teraz používa pri používaní jQuery JavaScript. 1461 01:08:18,100 --> 01:08:20,890 A na prvý pohľad, úprimne, to vyzerá trochu viac zložitejšie. 1462 01:08:20,890 --> 01:08:24,990 Ale zistíte, najmä ak idete že pre konečný projekt s web 1463 01:08:24,990 --> 01:08:29,029 vývoj, zistíte, že tento čistí veci a ušetrí docela 1464 01:08:29,029 --> 01:08:30,229 pár riadkov kódu. 1465 01:08:30,229 --> 01:08:33,189 >> Tak nech to jednoducho pozrel na to, ako Táto forma je v poriadku. 1466 01:08:33,189 --> 01:08:35,664 Všimnite si, čo som odstrániť zrejme z môjho HTML? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 Nie je na odoslať handler aby som tak povedal. 1469 01:08:40,630 --> 01:08:41,470 Neexistuje žiadny atribút. 1470 01:08:41,470 --> 01:08:43,359 Pretože viete, čo Nechcel som naozaj rád? 1471 01:08:43,359 --> 01:08:45,640 Cítil som sa, ako by sme padali do starej zvyky tam. 1472 01:08:45,640 --> 01:08:49,340 Rovnako ako, že sa začína cítiť nedbalý stretávať aj CSS sa 1473 01:08:49,340 --> 01:08:52,149 HTML, pretože si trochu hádzanie rôznych jazykov po celom 1474 01:08:52,149 --> 01:08:56,180 miesto, podobne ako sa to začať cítiť ako zlé ceste ísť dole, kde 1475 01:08:56,180 --> 01:09:01,069 Dávam kód JavaScript vnútri môjho HTML skôr než factoring to. 1476 01:09:01,069 --> 01:09:02,279 >> Tak to je ponaučenie. 1477 01:09:02,279 --> 01:09:05,080 V dom-2.html, som factoring to. 1478 01:09:05,080 --> 01:09:07,399 A robím veci mierne inak. 1479 01:09:07,399 --> 01:09:09,630 Pre túto chvíľu, budem mávať rukami na to, čo to naozaj robí 1480 01:09:09,630 --> 01:09:10,590 pod kapotou. 1481 01:09:10,590 --> 01:09:14,210 Ale práve teraz predpokladať, že prvé riadok kódu v tejto knižnici 1482 01:09:14,210 --> 01:09:18,170 tzv jQuery len znamená, že keď Dokument je pripravený, vykonajte nasledujúce kroky. 1483 01:09:18,170 --> 01:09:20,080 >> Pretože sú tieto webové stránky môžu mať nejaký čas na načítanie. 1484 01:09:20,080 --> 01:09:23,029 Tie by mohli byť na pomalom internete pripojenia, a to by mohlo byť pradenie 1485 01:09:23,029 --> 01:09:25,290 a odstreďovania, nakoniec je nabitá. 1486 01:09:25,290 --> 01:09:29,060 To riadok kódu hovorí len čakať, až celá stránka je pripravená, dokument 1487 01:09:29,060 --> 01:09:31,189 je pripravený, pred spustením tohto kódu. 1488 01:09:31,189 --> 01:09:34,390 >> A teraz oznámenia, je to pravdepodobne najužitočnejšie prvý 1489 01:09:34,390 --> 01:09:36,189 sa od jQuery. 1490 01:09:36,189 --> 01:09:42,140 Táto linka je tu veľmi podobný v duchu k tomuto oveľa dlhšiu linky tu. 1491 01:09:42,140 --> 01:09:46,920 Kým v surovom kóde JavaScript, tam existuje dokument globálny objekt, ktorý 1492 01:09:46,920 --> 01:09:50,460 má funkciu nazvanú getElementById (), ľudia, ktorí písali 1493 01:09:50,460 --> 01:09:55,720 jQuery zjednodušené, že len povedať, znak dolára, a potom vo vnútri 1494 01:09:55,720 --> 01:10:00,250 zátvorky dal dve citácie, a potom dať hash symbol nasleduje 1495 01:10:00,250 --> 01:10:02,250 jedinečný identifikátor, ktorý chcete uložiť. 1496 01:10:02,250 --> 01:10:06,170 Tak to je ekvivalentná document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> Medzitým. Submit jednoducho znamená na predloženie akejkoľvek forme ste 1498 01:10:11,090 --> 01:10:14,240 s odkazom na vľavo, choďte dopredu a spustiť túto funkciu. 1499 01:10:14,240 --> 01:10:16,600 Ale to je teraz taky zvedavosť. 1500 01:10:16,600 --> 01:10:19,560 Čo je divné o tom, čo Som zdôraznil tu? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 Nielen, že je to trochu syntakticky nové, je tu tiež niečo chýba. 1503 01:10:28,594 --> 01:10:29,558 >> DIVÁKOV: Je to len volané funkcie? 1504 01:10:29,558 --> 01:10:31,970 Nie je to nazýva záznam? 1505 01:10:31,970 --> 01:10:32,440 >> DAVID Malan: Jo. 1506 01:10:32,440 --> 01:10:35,450 No, tak upozorniť () je dole tu musí byť spravodlivý. 1507 01:10:35,450 --> 01:10:39,520 Ale nie je tam žiadna zmienka o meno, rovnako ako viete, foo alebo 1508 01:10:39,520 --> 01:10:40,980 Niečo sa deje tu. 1509 01:10:40,980 --> 01:10:43,830 A naozaj, je to jeden z prvkov, JavaScriptu, ktorý je celkom 1510 01:10:43,830 --> 01:10:45,370 silný, ale aj úplne nové. 1511 01:10:45,370 --> 01:10:47,460 PHP a vlastne to má rovnako. 1512 01:10:47,460 --> 01:10:49,500 >> Nechaj ma ísť ďalej a robiť niečo naozaj rýchlo. 1513 01:10:49,500 --> 01:10:52,030 Nechaj ma ísť dopredu a dať to sem. 1514 01:10:52,030 --> 01:10:52,600 Nechaj ma to urobiť. 1515 01:10:52,600 --> 01:10:53,690 Funkcie. 1516 01:10:53,690 --> 01:10:56,455 Hovorme toto spracovanie (). 1517 01:10:56,455 --> 01:10:58,290 Funkcie ovládača, aby som tak povedal. 1518 01:10:58,290 --> 01:11:00,110 Niečo, čo sa zaoberá nejakú operáciu. 1519 01:11:00,110 --> 01:11:02,700 Dovoľte mi, aby som upratať svoj odsadenie. 1520 01:11:02,700 --> 01:11:04,380 A dať to sem. 1521 01:11:04,380 --> 01:11:06,090 A daj to sem. 1522 01:11:06,090 --> 01:11:06,470 Jo. 1523 01:11:06,470 --> 01:11:07,060 OK. 1524 01:11:07,060 --> 01:11:10,300 >> Takže teraz mám funkciu nazvanú handler (), že som naozaj neviem 1525 01:11:10,300 --> 01:11:10,890 čo to robí ešte. 1526 01:11:10,890 --> 01:11:12,710 Je to jednoducho stále má tie veci. 1527 01:11:12,710 --> 01:11:13,900 Jejda. 1528 01:11:13,900 --> 01:11:15,820 Trvalo príliš veľa. 1529 01:11:15,820 --> 01:11:18,490 Poďme na to. 1530 01:11:18,490 --> 01:11:18,990 Dobrá. 1531 01:11:18,990 --> 01:11:20,240 Prepáčte. 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 Dobrá. 1534 01:11:23,690 --> 01:11:24,720 Nechaj ma to urobiť. 1535 01:11:24,720 --> 01:11:25,020 OK. 1536 01:11:25,020 --> 01:11:27,040 To vyzerá pekne a rovno odovzdal dnes. 1537 01:11:27,040 --> 01:11:29,090 Nechaj ma to urobiť. 1538 01:11:29,090 --> 01:11:29,860 Urob to. 1539 01:11:29,860 --> 01:11:30,950 A OK. 1540 01:11:30,950 --> 01:11:33,080 Takže teraz, poďme dať to sem. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 Žiadne ďalšie programovanie v reálnom čase. 1543 01:11:37,270 --> 01:11:37,900 OK. 1544 01:11:37,900 --> 01:11:40,000 >> Takže teraz, poďme sa vrátiť do kde začal príbeh. 1545 01:11:40,000 --> 01:11:43,530 Predtým som povedal, že táto linka tu znamená, že ak je dokument pripravený, ísť 1546 01:11:43,530 --> 01:11:44,380 dopredu a to. 1547 01:11:44,380 --> 01:11:45,660 Čo chcem robiť? 1548 01:11:45,660 --> 01:11:49,070 No konkrétne, chcem ísť dopredu a vykonajte nasledujúce. 1549 01:11:49,070 --> 01:11:53,700 Vykonať tento riadok kódu, a potom to, čo chcem, aby ste urobiť, je zavolať to 1550 01:11:53,700 --> 01:11:56,370 fungovať, ak je predložený formulár. 1551 01:11:56,370 --> 01:11:57,730 >> Teraz to je to, čo je zaujímavé. 1552 01:11:57,730 --> 01:11:59,170 To nie je samo o sebe funkcií. 1553 01:11:59,170 --> 01:12:02,540 Všimnite si, nie som uvedenie zátvorky tu v normálnym spôsobom. 1554 01:12:02,540 --> 01:12:06,800 Som doslova okolo funkciu nazvanú handler () na inú funkciu 1555 01:12:06,800 --> 01:12:10,800 tzv predložiť () ako argument ako aj keď je to ako premenné. 1556 01:12:10,800 --> 01:12:14,290 A to je jeden z rysov JavaScript je svojou funkciou sami 1557 01:12:14,290 --> 01:12:15,710 sú naozaj len objekty. 1558 01:12:15,710 --> 01:12:18,350 V skutočnosti, oni sú naozaj len premenné nejakého druhu. 1559 01:12:18,350 --> 01:12:21,340 A v prípade, že názov funkcie je handler (), nie je žiadny dôvod, prečo nemôžem 1560 01:12:21,340 --> 01:12:23,390 odovzdať ho v ako argument tu. 1561 01:12:23,390 --> 01:12:27,530 A to znamená, keď je formulár s ID demo je 1562 01:12:27,530 --> 01:12:29,320 predložené, volanie tejto funkcie. 1563 01:12:29,320 --> 01:12:32,770 >> Ale teraz keď som späť všetko to, prečo potom som asi robiť 1564 01:12:32,770 --> 01:12:34,850 pred tento okamih? 1565 01:12:34,850 --> 01:12:36,840 No, to je anonymný funkcia. 1566 01:12:36,840 --> 01:12:41,080 Vzhľadom k tomu, úprimne povedané, som si uvedomil, prečo som obťažovať strácať čas vyhlásenia 1567 01:12:41,080 --> 01:12:45,540 Funkcia tzv handler () len pre volanie že v jednom a iba jednom mieste? 1568 01:12:45,540 --> 01:12:48,640 Ak Nepotrebujem meno, a ja nie potrebné hovoriť viac než jedno miesto, 1569 01:12:48,640 --> 01:12:51,200 povedzme, implementovať funkcie presne tam, kde som ju potrebujú. 1570 01:12:51,200 --> 01:12:55,190 A tak JavaScript a PHP podporovať čo sú tzv anonymné funkcie, ktoré 1571 01:12:55,190 --> 01:12:57,900 dovoľte mi, aby som to presne to tu. 1572 01:12:57,900 --> 01:12:59,570 >> Ale my sme len poškriabaniu povrchu. 1573 01:12:59,570 --> 01:13:02,430 Poďme dráždiť sa len pár Konečné príklady tu. 1574 01:13:02,430 --> 01:13:04,600 >> Ak idem do quote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 Všimnite si, že je to v skutočnosti PHP funkcie, PHP program, ktorý som napísal 1577 01:13:11,870 --> 01:13:15,270 ktorá očakáva parameter HTTP s názvom symbol, a môžem odovzdať 1578 01:13:15,270 --> 01:13:16,730 hodnota ako FB. 1579 01:13:16,730 --> 01:13:20,010 A ak sa skutočne pozrieť na zdroje kód, to je dotazovanie webové stránky zadarmo 1580 01:13:20,010 --> 01:13:23,680 volal Yahoo Finance, rovnako ako p-set sedem, a to je návrat do mňa 1581 01:13:23,680 --> 01:13:26,580 niečo, čo sa zrejme formát známy je JSON - 1582 01:13:26,580 --> 01:13:28,010 JavaScript Object Notation. 1583 01:13:28,010 --> 01:13:28,810 Je to len objekt. 1584 01:13:28,810 --> 01:13:32,500 Všimnite zložené zátvorky, úvodzovky, hrubého čreva a čiarky. 1585 01:13:32,500 --> 01:13:34,720 >> Teraz medzitým, to je celkom v pohode. 1586 01:13:34,720 --> 01:13:38,520 Pretože som si asi použiť programovanie jazyk pre generovanie adresy URL 1587 01:13:38,520 --> 01:13:40,370 ktoré vyzerajú ako to dynamicky, že jo? 1588 01:13:40,370 --> 01:13:43,340 Môžem zmeniť na Google a vrátiť spoločnosti Google 1589 01:13:43,340 --> 01:13:47,930 Cena akcií $ 1,017.55. 1590 01:13:47,930 --> 01:13:49,640 Tak uvidíme, či nemôžeme použiť teraz. 1591 01:13:49,640 --> 01:13:56,590 >> Nechaj ma ísť na ajax-0, ktorá sem vyzerá nasledovne. 1592 01:13:56,590 --> 01:13:59,750 Je to len webová stránka, ktorá má formulár s tlačidlom. 1593 01:13:59,750 --> 01:14:05,860 Dovoľte mi, aby som tu do toho pustite a zadajte YHOO Yahoo burzový symbol, kliknite na tlačidlo Načítať 1594 01:14:05,860 --> 01:14:10,530 Citácie, a teraz Všimol som si, som dostal upozornenie na 32,86. 1595 01:14:10,530 --> 01:14:14,050 >> Dovoľte mi, aby som skutočne ísť do milovník verzia na túto stránku, verzia dva, a 1596 01:14:14,050 --> 01:14:17,530 zadajte povedzme Microsoft, MSFT. 1597 01:14:17,530 --> 01:14:18,410 Získať cenovú ponuku. 1598 01:14:18,410 --> 01:14:19,850 A teraz všimnete, žiadny záznam. 1599 01:14:19,850 --> 01:14:22,770 Všimnite si, kde sa hovorí, že cena , Ktoré majú byť stanovené? 1600 01:14:22,770 --> 01:14:27,060 Je najjednoduchšie príklady, ktoré naznačuje, v akom Gchat a Facebook 1601 01:14:27,060 --> 01:14:30,070 Chat a Gmail, a iné takéto webové stránky robia podľa skutočnosti 1602 01:14:30,070 --> 01:14:31,290 meniace sa webové stránky. 1603 01:14:31,290 --> 01:14:31,800 >> Všimnite si toto. 1604 01:14:31,800 --> 01:14:33,120 Dovoľte mi, aby som znovu načítať stránku. 1605 01:14:33,120 --> 01:14:35,080 Dovoľte mi, aby som otvorila Chrome Inspector. 1606 01:14:35,080 --> 01:14:36,890 Nechaj ma ísť na prvky Karta tu dole. 1607 01:14:36,890 --> 01:14:42,310 Teraz všimnúť, či som priblížiť tu a otvoriť toto hore, zistíte, že to je moje 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - môj objektový model dokumentu. 1609 01:14:44,500 --> 01:14:45,920 To je môj HTML. 1610 01:14:45,920 --> 01:14:48,750 Ale teraz nevšimol, aj keď to bude byť trochu ťažké ho vidieť v oboch 1611 01:14:48,750 --> 01:14:52,080 miest naraz, keď som zadať FB tu, pozerať sa na dno 1612 01:14:52,080 --> 01:14:54,110 na obrazovke iba. 1613 01:14:54,110 --> 01:14:57,720 >> Je to skutočne mení, môj HTML za behu. 1614 01:14:57,720 --> 01:15:01,670 A to robí to celkom jednoducho tým, že robí niečo také. 1615 01:15:01,670 --> 01:15:06,800 Ak otvorím ajax-2, oznámenia, ktorým sa vykonáva niečo tak sexy ako 1616 01:15:06,800 --> 01:15:09,560 že, aj keď je to dosť škaredé, ale prepracovaný ako 1617 01:15:09,560 --> 01:15:11,910 funkčne, že má niektoré HTML v dolnej časti. 1618 01:15:11,910 --> 01:15:13,810 Ale všimnite som sa označiť. 1619 01:15:13,810 --> 01:15:16,640 Sme nepoužíva skôr, ale to je ako, ale nenúti 1620 01:15:16,640 --> 01:15:17,840 všetko na nový riadok. 1621 01:15:17,840 --> 01:15:20,830 Je to proste robí obdĺžnikovú oblasť, na rovnakom riadku v podstate. 1622 01:15:20,830 --> 01:15:22,870 >> Všimnite si, že som dal tomu ID ceny. 1623 01:15:22,870 --> 01:15:26,800 A ukázalo sa, s použitím rovnakej JavaScript knižnica, mám funkciu 1624 01:15:26,800 --> 01:15:30,440 tzv úvodzovky (), ktorá je volaná pri každom Formulár je predkladaný. 1625 01:15:30,440 --> 01:15:31,800 A to, čo robím, je to. 1626 01:15:31,800 --> 01:15:35,730 Som deklarovaní premennej v JavaScripte volal url, uloženie hodnoty 1627 01:15:35,730 --> 01:15:38,650 quote.php symbol? =. 1628 01:15:38,650 --> 01:15:44,220 Inými slovami, ja sám som začínal pripraviť požiadavke HTTP, a potom 1629 01:15:44,220 --> 01:15:49,250 Ja zreťazenie na ktoré sa znamienkom plus bez ohľadu na element s ID 1630 01:15:49,250 --> 01:15:54,190 o symbol, ktorý oznámenie je, že textové pole priamo sem. 1631 01:15:54,190 --> 01:15:56,630 Takže rovnako ako sme mali formulára v minulosti. 1632 01:15:56,630 --> 01:16:01,450 >> A potom to dopadá v jQuery, ak volanie. Val (), ktorá volá o val 1633 01:16:01,450 --> 01:16:05,900 funkcie, funkcia hodnotu, ktorá sa dostane čo užívateľ zadal palcov 1634 01:16:05,900 --> 01:16:08,920 A potom všetci sieťovú prevádzku že sa stane toto. 1635 01:16:08,920 --> 01:16:11,230 $. GetJSON. 1636 01:16:11,230 --> 01:16:13,720 >> A ako stranou, znak dolára je len skratka notácie. 1637 01:16:13,720 --> 01:16:16,860 Je to naozaj jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 Dostaň ma do JSON z tejto adresy URL, a keď žiadosť vráti, volať toto 1639 01:16:21,520 --> 01:16:26,550 funkcie a odovzdať ako argument čo sa vrátil zo servera. 1640 01:16:26,550 --> 01:16:31,205 >> Takže inými slovami, keď som sa vrátiť do prehliadač, a idem späť do quote.php, 1641 01:16:31,205 --> 01:16:35,590 čo môj prehliadač robí, je stále Tento kus dát. 1642 01:16:35,590 --> 01:16:38,930 A keď idem na tejto webovej stránke tu, Všimnite si, keby sme namiesto toho ísť do siete 1643 01:16:38,930 --> 01:16:43,820 Záložka a vyčistiť ho, a potom zadajte niečo ako GOOG pre Google a získať 1644 01:16:43,820 --> 01:16:46,340 Citácie, všimnite si stránku nezmenil. 1645 01:16:46,340 --> 01:16:50,990 Ale požiadavka HTTP bol vyrobený, a to vrátil sa sem, ak sa pozrieme na 1646 01:16:50,990 --> 01:16:56,130 odpoveď je celá banda JSON že prístup nakoniec 1647 01:16:56,130 --> 01:16:58,070 tento jednoduchý riadok tu. 1648 01:16:58,070 --> 01:17:00,150 >> Dát je to, čo sa dostal zo servera. 1649 01:17:00,150 --> 01:17:02,120 Cena je názov key mi záleží. 1650 01:17:02,120 --> 01:17:05,230 Takže data.price mi to dáva. 1651 01:17:05,230 --> 01:17:07,540 >> Teraz medzitým, a to je posledný príklad. 1652 01:17:07,540 --> 01:17:09,280 Môžete to urobiť ešte viac sa stránkou. 1653 01:17:09,280 --> 01:17:12,440 Jeden dokonca, aj dve. 1654 01:17:12,440 --> 01:17:14,780 Môžeme priviesť späť označiť, ak si pamätať. 1655 01:17:14,780 --> 01:17:15,850 To je JavaScript. 1656 01:17:15,850 --> 01:17:17,110 Môžeme to urobiť. 1657 01:17:17,110 --> 01:17:17,690 Veľmi vzrušujúce. 1658 01:17:17,690 --> 01:17:18,800 Necháme to ako Cliffhanger. 1659 01:17:18,800 --> 01:17:21,590 >> Ale viac vzrušujúce, môžete robiť veci, ako je tento. 1660 01:17:21,590 --> 01:17:25,940 Ak idem do Geolocation-1, ukázalo sa, že Chrome vie, že sme na 1661 01:17:25,940 --> 01:17:30,672 Zemepisná šírka a dĺžka 42.37. -71,10. 1662 01:17:30,672 --> 01:17:32,940 Takže je tu ešte existuje k dispozícii. 1663 01:17:32,940 --> 01:17:34,290 Ale o tom až budúci týždeň. 1664 01:17:34,290 --> 01:17:35,540 Uvidíme sa v pondelok. 1665 01:17:35,540 --> 01:17:37,558