1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> DAVID Malan: Dobře. 3 00:00:12,360 --> 00:00:15,970 To je CS50, a to je Konec týdne devět. 4 00:00:15,970 --> 00:00:18,560 Bylo to vichřice přes Posledních pár dní. 5 00:00:18,560 --> 00:00:21,580 A problém nastavit sedm, pokud jste koleno hluboko do ní, uvědomit si, že je to docela 6 00:00:21,580 --> 00:00:23,340 trochu nového, co tam je. 7 00:00:23,340 --> 00:00:26,660 Ale uvidíme, jestli nemůžeme kus vše dohromady zde stručně 8 00:00:26,660 --> 00:00:29,230 do té doby skáčou off v ještě jiný směr a vidění 9 00:00:29,230 --> 00:00:30,510 kam jinam můžeme jít. 10 00:00:30,510 --> 00:00:32,630 >> Takže tak daleko, že jsme mluvili o HTML. 11 00:00:32,630 --> 00:00:33,740 Mluvili jsme o CSS. 12 00:00:33,740 --> 00:00:34,705 Mluvili jsme o PHP. 13 00:00:34,705 --> 00:00:36,520 Začali jste zažít SQL. 14 00:00:36,520 --> 00:00:38,360 Dnes budeme mluvit trochu o JavaScriptu. 15 00:00:38,360 --> 00:00:41,230 Ale jak se všechny tyto nesourodé jazyky zapadají? 16 00:00:41,230 --> 00:00:44,970 >> Takže jsme mluvili minulý týden o Pojem má server. 17 00:00:44,970 --> 00:00:48,470 Takže pojďme jen kreslit tento obdélník jako webový server zde. 18 00:00:48,470 --> 00:00:52,200 A webový server slouží jistě souborů. 19 00:00:52,200 --> 00:00:54,640 A některé z těchto souborů mohou být soubory HTML. 20 00:00:54,640 --> 00:00:58,270 Takže jedna z věcí, které webový server může vyplivnout může být soubor, který 21 00:00:58,270 --> 00:01:01,290 budeme jen kreslit takhle obsahuje nějaké HTML. 22 00:01:01,290 --> 00:01:04,786 Takže laicky řečeno, to, co se HTML nechat udělat? 23 00:01:04,786 --> 00:01:06,036 >> DIVÁKŮ: Page sluší. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> DAVID Malan: OK, aby stránky vypadat hezky, i když myslím, že jsem ukázala 26 00:01:12,310 --> 00:01:13,370 které by jinak. 27 00:01:13,370 --> 00:01:18,250 Takže HTML se vám rozvrhnout stránky strukturálně, a to umožňuje 28 00:01:18,250 --> 00:01:22,410 trochu esteticky označit stránku, označí se statický obsah, takže 29 00:01:22,410 --> 00:01:23,640 pak jej prohlížet pomocí webového prohlížeče. 30 00:01:23,640 --> 00:01:24,690 >> Ale to je ten klíč. 31 00:01:24,690 --> 00:01:26,130 Je to statický obsah. 32 00:01:26,130 --> 00:01:28,590 Můžete psát, můžete ji uložit, a pak si to loď. 33 00:01:28,590 --> 00:01:31,130 A webový server pak slouží že až vaše návštěvníky. 34 00:01:31,130 --> 00:01:35,700 >> Ale stylizovat věci pomocí odlišné jazyka vůbec. 35 00:01:35,700 --> 00:01:40,150 Začali jsme používat atribut stylu o některých značek. 36 00:01:40,150 --> 00:01:43,400 A atribut style vydejme věci, jako je velikost a barvu písma. 37 00:01:43,400 --> 00:01:46,460 A pravděpodobně jste začali objevovat, nebo brzy bude na finále 38 00:01:46,460 --> 00:01:50,160 projekty potenciálně, zatím ostatní vlastnosti, které můžete použít v CSS. 39 00:01:50,160 --> 00:01:54,710 A tak v Laicky řečeno, to, co Opravdu pak se CSS dělat? 40 00:01:54,710 --> 00:01:57,810 To jsou jen příklady z nich. 41 00:01:57,810 --> 00:02:00,730 Co to nechat udělat HTML Nezdá se, že z toho, co 42 00:02:00,730 --> 00:02:02,606 Viděli jsme tak daleko? 43 00:02:02,606 --> 00:02:04,850 >> DIVÁKŮ: Definovat styly sami. 44 00:02:04,850 --> 00:02:06,700 >> DAVID Malan: Definovat styly sami. 45 00:02:06,700 --> 00:02:10,280 Takže definovat věci jako třídy jako vy může se setkali, nebo jedinečné 46 00:02:10,280 --> 00:02:13,800 identifikaci uzlů v dokumentu tak, které si můžete stylizovat je. 47 00:02:13,800 --> 00:02:16,890 Ale přesněji, řekl bych, že CSS Opravdu vám umožní vzít věci 48 00:02:16,890 --> 00:02:20,790 poslední míle a umožňuje specifikovat mnohem přesněji estetika, 49 00:02:20,790 --> 00:02:24,340 vzhledem k tomu, HTML z větší části umožňuje strukturovat své stránky. 50 00:02:24,340 --> 00:02:27,310 >> A i když tam jsou některé výchozí hodnoty, jak jsme viděli značku pro 51 00:02:27,310 --> 00:02:30,690 číslo tag, který zhruba řečeno dělal věci velké a tučné. 52 00:02:30,690 --> 00:02:34,250 To je dost obecná definice tagu - velký a odvážný. 53 00:02:34,250 --> 00:02:35,260 Co velikost písma je, že? 54 00:02:35,260 --> 00:02:36,080 Jakou barvu má, že? 55 00:02:36,080 --> 00:02:36,890 Jak tučně je, že? 56 00:02:36,890 --> 00:02:39,830 A CSS vám umožní jemněji naladit podobné věci. 57 00:02:39,830 --> 00:02:42,150 Stejně jako vzhled, jako některé o které jste viděli. 58 00:02:42,150 --> 00:02:45,180 >> A upřímně řečeno, CSS je trochu nepořádek jazyka. 59 00:02:45,180 --> 00:02:48,370 Je to velmi silný v tom, že si můžete dělat doslova všechny webové stránky, které jste 60 00:02:48,370 --> 00:02:51,880 vidět na webu dnes, ale je to docela bolest v krku. 61 00:02:51,880 --> 00:02:54,440 A někteří z vás se praštil hlavou proti zdi už jen udělat 62 00:02:54,440 --> 00:02:58,560 něco hloupého jako centra nabídek na problém nastavit sedm, pokud jste se dostali do 63 00:02:58,560 --> 00:02:59,470 tento bod již. 64 00:02:59,470 --> 00:03:01,530 >> Ale uvědomit si, ty věci mít snazší v průběhu času. 65 00:03:01,530 --> 00:03:02,820 Začnete všímat vzory. 66 00:03:02,820 --> 00:03:06,020 A opět, Google bude váš přítel pro různé způsoby, ve kterém můžete 67 00:03:06,020 --> 00:03:07,220 řešit tyto druhy problémů. 68 00:03:07,220 --> 00:03:11,520 >> A troufám si říci, CSS, HTML a další Obecně platí, že můžete vyřešit problémy 69 00:03:11,520 --> 00:03:15,910 mnohem více způsobů, z nichž všechny by mohly velmi dobře být v pořádku, než byste mohli 70 00:03:15,910 --> 00:03:18,900 něco jako C, a to i PHP nebo JavaScript teď. 71 00:03:18,900 --> 00:03:21,080 Existuje jen mnoho různých způsoby, jak laické věci. 72 00:03:21,080 --> 00:03:22,570 >> Ale to se začali chaotický, řekli jsme. 73 00:03:22,570 --> 00:03:26,480 Jen trochu směšování vaše HTML a Váš CSS s atributem style byla 74 00:03:26,480 --> 00:03:27,590 trochu nedbalý. 75 00:03:27,590 --> 00:03:31,460 A tak jsme místo toho řekl, druh abstraktně řečeno, že byste měli 76 00:03:31,460 --> 00:03:34,050 alespoň začít faktor z vašeho CSS pravděpodobně. 77 00:03:34,050 --> 00:03:37,430 Atributy, není váš styl, ale alespoň používat značku stylu v co 78 00:03:37,430 --> 00:03:38,840 část webové stránky? 79 00:03:38,840 --> 00:03:39,560 >> DIVÁKŮ: Head. 80 00:03:39,560 --> 00:03:40,120 >> DAVID Malan: V čele. 81 00:03:40,120 --> 00:03:43,270 Až dosud jsme měli jen titul až tam, ale můžete také přidat styl 82 00:03:43,270 --> 00:03:47,230 označit, a můžete dát svůj CSS zhruba mluvení směrem k horní části stránky. 83 00:03:47,230 --> 00:03:52,550 Ale pak jsme si vzali věci o krok dále a my zapracovány, že z více 84 00:03:52,550 --> 00:03:54,130 do samostatného souboru. 85 00:03:54,130 --> 00:03:57,240 >> A tak se tyto dva soubory byly nějak se podnikem propojeny. 86 00:03:57,240 --> 00:03:59,550 A opravdu to bylo tag, že to udělal. 87 00:03:59,550 --> 00:04:02,920 A to, co bylo jednou z hlavních motivace pro vytknutí naši CSS 88 00:04:02,920 --> 00:04:04,057 o to více? 89 00:04:04,057 --> 00:04:05,280 >> DIVÁKŮ: 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žná jste viděli v p-set sedm již že mnoho stránek, 93 00:04:09,470 --> 00:04:12,260 nákup strana, prodejní stránky, portfolio stránky, jsou pravděpodobně 94 00:04:12,260 --> 00:04:13,550 strukturované poněkud podobně. 95 00:04:13,550 --> 00:04:17,579 Je tu CS50 finance logo nahoře Pokud jste se rozhodli to změnit. 96 00:04:17,579 --> 00:04:19,839 K dispozici je zápatí na spodní stran. 97 00:04:19,839 --> 00:04:24,315 A CSS umožňuje pak faktor ven je do samostatného souboru tak, aby v případě, 98 00:04:24,315 --> 00:04:27,780 Chcete-li něco změnit na celém světě v rámci celého vašeho webu, můžete opravdu 99 00:04:27,780 --> 00:04:29,390 Jen ji změnit na jednom místě. 100 00:04:29,390 --> 00:04:32,750 >> Ale je tu cena, kterou zaplatíte potenciálně by mít zapracovány ven 101 00:04:32,750 --> 00:04:38,380 CSS z mého souboru HTML do samostatné soubor odkazování ji 102 00:04:38,380 --> 00:04:40,650 tag, který jsme viděli v pondělí. 103 00:04:40,650 --> 00:04:43,850 Co by mohlo být nevýhodou to? 104 00:04:43,850 --> 00:04:48,830 Vzpomínal před týdnem, když jsme mluví o HTTP a TCP / IP a jak 105 00:04:48,830 --> 00:04:52,070 internet funguje. 106 00:04:52,070 --> 00:04:53,530 Něco tady? 107 00:04:53,530 --> 00:04:54,730 >> DIVÁKŮ: Je to zabere více času. 108 00:04:54,730 --> 00:04:55,470 >> DAVID Malan: Je to zabere více času. 109 00:04:55,470 --> 00:04:56,750 Proč? 110 00:04:56,750 --> 00:04:59,450 >> DIVÁKŮ: [neslyšitelné]. 111 00:04:59,450 --> 00:04:59,750 >> DAVID Malan: Jo. 112 00:04:59,750 --> 00:05:01,240 Takže to pravděpodobně zabere trochu více času. 113 00:05:01,240 --> 00:05:04,290 Vzhledem k tomu, jeden, CSS je samozřejmě není ve stejném souboru. 114 00:05:04,290 --> 00:05:06,920 Takže teď musíte udělat ne jedna, ale dvě žádosti. 115 00:05:06,920 --> 00:05:11,230 A každý z těchto požadavků, jak jsme viděli v Chrome v tzv. inspektor, 116 00:05:11,230 --> 00:05:15,740 a podívali jsme se na síťové kartě, každý z těchto souborů vyžaduje jeden HTTP 117 00:05:15,740 --> 00:05:18,360 Žádost, kterou jsme viděli se nějaké množství času. 118 00:05:18,360 --> 00:05:19,290 Nyní, možná to není moc. 119 00:05:19,290 --> 00:05:20,670 Možná je to jen 20 milisekund. 120 00:05:20,670 --> 00:05:22,260 Možná je to 200 milisekund. 121 00:05:22,260 --> 00:05:25,530 >> Ale myslet na stránce jako je Facebook, nebo CNN nebo Google, které jsou mnohem 122 00:05:25,530 --> 00:05:28,060 větší než příkladech jsme Podíval se na tak daleko. 123 00:05:28,060 --> 00:05:32,070 Tyto stránky mohou mít desítky souborů, z nichž každá může vyžadovat 124 00:05:32,070 --> 00:05:33,550 stahování souboru. 125 00:05:33,550 --> 00:05:35,800 Takže, co může potenciálně začít zpomalovat. 126 00:05:35,800 --> 00:05:39,280 >> A zejména v těchto dnech, kdy jsme se všichni mají mobilní telefony v našich kapsách a 127 00:05:39,280 --> 00:05:43,010 pomalejší připojení k internetu, které mají na počkejte několik milisekund, pár 128 00:05:43,010 --> 00:05:46,110 více milisekund pro další soubory mohou být ve skutečnosti pomalé. 129 00:05:46,110 --> 00:05:50,430 Latence je slovo, které popisuje druh čekání, že jste, že jste 130 00:05:50,430 --> 00:05:53,110 zkušenosti při čekání na některé údaj. 131 00:05:53,110 --> 00:05:54,430 >> Ale je tu vzhůru. 132 00:05:54,430 --> 00:05:56,600 Takže to není jen druh - 133 00:05:56,600 --> 00:05:58,170 ve skutečnosti je trochu houpačce zde. 134 00:05:58,170 --> 00:06:02,970 Zpomalení teď, ale co můžete udělat prohlížeče pokud jsou inteligentní, aby se zabránilo 135 00:06:02,970 --> 00:06:08,870 museli žádat stejný Styles.css soubor opět možné udělat co? 136 00:06:08,870 --> 00:06:09,390 >> Cache je. 137 00:06:09,390 --> 00:06:10,370 Tak caching - 138 00:06:10,370 --> 00:06:11,690 C-A-C-H-E - 139 00:06:11,690 --> 00:06:15,810 obecně znamená, zde jen ušetřit soubor, který požádal poprvé, a 140 00:06:15,810 --> 00:06:17,440 pak zkontrolovat cache pro něj. 141 00:06:17,440 --> 00:06:20,400 Zkontrolujte, zda jste tak trochu zásobníku, a pokud již 142 00:06:20,400 --> 00:06:24,520 kopie styles.css, i když jiné Stránka v p-set, nebo webové stránky, 143 00:06:24,520 --> 00:06:28,560 žádá znovu, jen aby uživatel, který stejný mezipaměti kopie. 144 00:06:28,560 --> 00:06:30,140 Neobtěžujte se o to požádá. 145 00:06:30,140 --> 00:06:32,560 >> Nevýhodou je, i když, jak někteří z vás se zakopl v p-set. 146 00:06:32,560 --> 00:06:35,870 Pokud provedete změnu na serveru a se vrátíte zpět do prohlížeče a vy 147 00:06:35,870 --> 00:06:39,250 znovu, někdy dělá prohlížeč si laskavost a neobtěžuje 148 00:06:39,250 --> 00:06:43,660 si znovu stáhnout si soubor Styles.css protože, no tak, jaká je pravděpodobnost, 149 00:06:43,660 --> 00:06:47,620 že tyto styly, které Facebook používá se bude měnit každou hodinu, nebo 150 00:06:47,620 --> 00:06:48,140 ze dne na den? 151 00:06:48,140 --> 00:06:48,800 Je to docela nízká. 152 00:06:48,800 --> 00:06:52,260 Mohou v průběhu času měnit, ale ne minutu od minuty nebo hodiny. 153 00:06:52,260 --> 00:06:55,810 >> Takže trik, jen FYI, když dělá web vývoj, je často podržte 154 00:06:55,810 --> 00:06:59,500 klávesa Shift pro instance a pak klepněte na tlačítko znovu v prohlížeči, a které budou 155 00:06:59,500 --> 00:07:03,280 typicky říct prohlížeče znovu načíst všechno, i když už máte 156 00:07:03,280 --> 00:07:04,180 se ve vyrovnávací paměti. 157 00:07:04,180 --> 00:07:06,630 Takže znovu, upsides a nevýhody, ale všechny z nich 158 00:07:06,630 --> 00:07:08,260 nakonec rozhodnutí o návrhu. 159 00:07:08,260 --> 00:07:11,520 >> Takže teď jsme nejen konec příběhu zde. 160 00:07:11,520 --> 00:07:15,790 Kdybych se vrátit a znovu a znovu a zpět, jsme začali zavádět nejen 161 00:07:15,790 --> 00:07:18,060 HTML, ale PHP. 162 00:07:18,060 --> 00:07:20,786 Takže laicky řečeno, to, co PHP se pojďme dělat? 163 00:07:20,786 --> 00:07:22,770 >> DIVÁKŮ: [neslyšitelné]. 164 00:07:22,770 --> 00:07:24,258 >> DAVID Malan: Co je to? 165 00:07:24,258 --> 00:07:25,250 >> DIVÁKŮ: Zavést logiku do kódu. 166 00:07:25,250 --> 00:07:26,620 >> DAVID Malan: Jo, zavést logika do kódu. 167 00:07:26,620 --> 00:07:29,570 Takže je to pravda, programovací jazyk se smyčkami a proměnných a 168 00:07:29,570 --> 00:07:32,620 funkce, a podmínky, a všechny věci, které jsme používali cestu zpět 169 00:07:32,620 --> 00:07:33,780 když od nuly. 170 00:07:33,780 --> 00:07:36,780 A PHP, jsme viděli, může být použit buď na příkazovém řádku - to 171 00:07:36,780 --> 00:07:39,190 nemusí mít nic společného s webem, i když je to 172 00:07:39,190 --> 00:07:43,150 opravdu jeho původ a co to inklinuje být dobrý v a přispívá k - 173 00:07:43,150 --> 00:07:47,130 ale můžete použít PHP pouze od přírody k tomu, že má na tisk () 174 00:07:47,130 --> 00:07:49,660 funkci a funkci printf (), nebo echo () funkce. 175 00:07:49,660 --> 00:07:52,440 Je tu hrozny způsobů, jak si můžete tisknout text s PHP. 176 00:07:52,440 --> 00:07:56,540 >> Proto, můžete použít tento programování Jazyk pro výstup přesně 177 00:07:56,540 --> 00:07:58,460 to, co jsme mluvili předtím. 178 00:07:58,460 --> 00:08:01,360 Můžete dynamicky generovat vaše HTML. 179 00:08:01,360 --> 00:08:02,300 Možná, že ne všechno. 180 00:08:02,300 --> 00:08:06,460 Možná, že tvrdé kód věci, jako záhlaví a zápatí, a logo, 181 00:08:06,460 --> 00:08:07,950 a vaše stylů, a to vše. 182 00:08:07,950 --> 00:08:11,190 Ale něco jako p-set sedm, kam manipulaci zásoby a 183 00:08:11,190 --> 00:08:14,690 ukazuje uživatele portfolio, které je bude dynamicky měnit, můžete 184 00:08:14,690 --> 00:08:18,960 určitě používat PHP a logiku to dává Vy jako programovací jazyk pro 185 00:08:18,960 --> 00:08:22,320 výstup dynamicky podmnožiny části stránky. 186 00:08:22,320 --> 00:08:25,900 >> Takže když mluvíte o dynamických webových stránek, nebo webové programování, je to 187 00:08:25,900 --> 00:08:27,200 co jste o tom mluvili. 188 00:08:27,200 --> 00:08:31,450 Používání jazyka, jako je PHP, nebo věci tzv. Python, Ruby nebo, nebo Java, nebo 189 00:08:31,450 --> 00:08:35,900 Zatím další jazyky, dotazů na databázový často, nebo jiný server, a 190 00:08:35,900 --> 00:08:38,580 pak dynamicky vyplivnout HTML. 191 00:08:38,580 --> 00:08:42,470 >> Nyní konečný výsledek, jako stranou, je že HTML většiny internetových stránek, 192 00:08:42,470 --> 00:08:45,970 včetně vašeho p-set sedm, je pravděpodobně Bude to obrovský zmatek, pokud 193 00:08:45,970 --> 00:08:48,060 se podíváte na zdroje kód v prohlížeči. 194 00:08:48,060 --> 00:08:49,010 To není velký problém. 195 00:08:49,010 --> 00:08:51,550 V tomto okamžiku, kdy nám záleží styl, Staráme se o 196 00:08:51,550 --> 00:08:52,740 věci, které píšete. 197 00:08:52,740 --> 00:08:56,240 Nebudeme starat o věci že to, co váš kód výstupy. 198 00:08:56,240 --> 00:08:59,520 Takže se nemusíte starat o odsazení zde, pokud je to PHP je to 199 00:08:59,520 --> 00:09:01,190 vlastně výstup věci. 200 00:09:01,190 --> 00:09:04,430 Koneckonců, bude prohlížeč nezajímá, a lidské nebude hledat 201 00:09:04,430 --> 00:09:05,400 u zdroje v každém případě. 202 00:09:05,400 --> 00:09:09,000 My zaměstnanci, například, by při pohledu na vaše PHP. 203 00:09:09,000 --> 00:09:13,440 >> Takže mi dovolte dát rychlý příklad nyní proč jinak by to mohlo být užitečné. 204 00:09:13,440 --> 00:09:18,620 Takže upřímně řečeno, nemůžu si vzpomenout poslední Když jsem použít C vyřešit problém 205 00:09:18,620 --> 00:09:19,620 reálný svět. 206 00:09:19,620 --> 00:09:22,330 Bylo to pravděpodobně v postgraduálním studiu, když Potřeboval jsem se použít jazyk, který 207 00:09:22,330 --> 00:09:26,710 Byl poměrně nízké úrovni, a dal mi příležitost udělat něco velmi vysokou 208 00:09:26,710 --> 00:09:30,720 předvádění opravdu ušetřit tolik CPU cyklů, jak jsem mohl, z velké části 209 00:09:30,720 --> 00:09:33,990 protože jsem byl s použitím velké datové soubory, a každý CPU cyklu počítá. 210 00:09:33,990 --> 00:09:37,750 A upřímně řečeno, i ve věcech, jako jsou mobilní telefony v těchto dnech a další zařízení 211 00:09:37,750 --> 00:09:39,910 kde nemáte dost mít tolik paměti a nemáte dost mít za 212 00:09:39,910 --> 00:09:44,160 hodně CPU, díky rychlejším jazyků je stále atraktivní. 213 00:09:44,160 --> 00:09:47,290 >> Ale v reálném světě, když jste právě chci hodit nějaký program, společně se 214 00:09:47,290 --> 00:09:50,340 analyzovat některé údaje, nebo jste nasbírali Celá parta registrací pro 215 00:09:50,340 --> 00:09:53,330 některé studentská skupina a chcete se velmi rychle automatizovat odesílání e-mailů 216 00:09:53,330 --> 00:09:56,240 jeden po druhém, aby každý z těch o registraci, budete dosáhnout na 217 00:09:56,240 --> 00:09:59,240 jazyk vyšší úrovně než C, abych tak řekl. 218 00:09:59,240 --> 00:10:04,060 Něco jako PHP nebo Python nebo Ruby, nebo půl tuctu dalších, které existují 219 00:10:04,060 --> 00:10:04,550 v těchto dnech. 220 00:10:04,550 --> 00:10:07,200 Ale ti tři jsou pravděpodobně Nejvíce trendy právě teď. 221 00:10:07,200 --> 00:10:10,840 >> A co to znamená, je to, že můžete otevřít do textového editoru, například gedit nebo 222 00:10:10,840 --> 00:10:14,030 většina něco jiného a pak už jen začít psaní kódu, aniž by se museli starat 223 00:10:14,030 --> 00:10:17,800 o sestavování, aniž byste museli opravdu starat o správu paměti, 224 00:10:17,800 --> 00:10:20,820 mít na paměti, že i když trochu povrchnost se nakonec vrátí 225 00:10:20,820 --> 00:10:24,790 vás kousnout, pokud datový soubor dostane větší nebo problém dostane velký. 226 00:10:24,790 --> 00:10:27,230 Ale co to znamená pro nám je následující. 227 00:10:27,230 --> 00:10:29,860 >> Nech mě jít napřed a spustit pravopisu od problém nastavit šest. 228 00:10:29,860 --> 00:10:33,480 Tak tohle je moje implementace trie na bázi které jsem použil na velký 229 00:10:33,480 --> 00:10:35,500 board, kde jsem provedl to tak dobře. 230 00:10:35,500 --> 00:10:38,720 Vrátíme se za týden a znovu ty, kteří se skončit na vrcholu 231 00:10:38,720 --> 00:10:40,430 velká tabule na naší poslední přednášce. 232 00:10:40,430 --> 00:10:44,520 Ale teď, nech mě jít dopředu a jen spustit můj řešení v textu, a budeme dělat 233 00:10:44,520 --> 00:10:48,460 King James Bible, a jdeme na to. 234 00:10:48,460 --> 00:10:51,080 >> Tak to jsou všichni údajně chybně zapsaná slova 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 realizace se půl druhé v celkem. 237 00:10:55,560 --> 00:10:58,270 Takže není tak špatné na to zejména počítače. 238 00:10:58,270 --> 00:11:01,540 Ale přemýšlet o tom, kolik Kód jsem musel napsat. 239 00:11:01,540 --> 00:11:02,880 Zamyslete se, kolik kód, který musel napsat. 240 00:11:02,880 --> 00:11:06,170 Zamyslete se, kolik hodin jste strávili v D-haly nebo na koleji, nebo tam, kde 241 00:11:06,170 --> 00:11:07,890 vlastně kódování se toto řešení. 242 00:11:07,890 --> 00:11:11,850 >> No, když jsem ve skutečnosti mají vyšší úroveň jazyk jako PHP, vzít na vědomí 243 00:11:11,850 --> 00:11:13,350 co se dá dělat. 244 00:11:13,350 --> 00:11:16,410 Nejprve předpokládejme, že je to místo vaše distribuce kódu. 245 00:11:16,410 --> 00:11:17,790 Jedná se o soubor s názvem pravopisu. 246 00:11:17,790 --> 00:11:20,220 Je k dispozici jako součást dnešní distribuce kód. 247 00:11:20,220 --> 00:11:22,670 A budu mávat mou ruku nanejvýš detailů, ale to je vlastně 248 00:11:22,670 --> 00:11:25,500 zajímavý příklad toho, jak byste mohli portu jazyk 249 00:11:25,500 --> 00:11:28,870 jako C přes PHP. 250 00:11:28,870 --> 00:11:33,420 Doslova jsem otevřel dvě textová okna, jeden s mým C verze speller.c, 251 00:11:33,420 --> 00:11:36,960 a já jsem právě začal jeho překlad v mém zamiřte do PHP a psát to pomocí 252 00:11:36,960 --> 00:11:38,840 nejbližší ekvivalentní funkce. 253 00:11:38,840 --> 00:11:40,100 >> Takže některé z těchto věcí jsou různé. 254 00:11:40,100 --> 00:11:43,730 Viděli jsme minule, že PHP nepoužívá jsou ve zcela stejným způsobem. 255 00:11:43,730 --> 00:11:47,050 Používá se obvykle vyžaduje, i když patří skutečně 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 jak udělat konstantu. 258 00:11:51,890 --> 00:11:55,860 $ Argc to dopadá existuje v PHP, takže jsme předtím viděli, že. 259 00:11:55,860 --> 00:11:58,650 To jsou jen proměnné, vše z které začínají znaky dolaru. 260 00:11:58,650 --> 00:12:00,590 Připomeňme, to jsou jen banda plovoucí bodů. 261 00:12:00,590 --> 00:12:03,970 >> Tak dlouhý příběh krátký, jste vítáni flip přes to, pokud zvědavý, je to 262 00:12:03,970 --> 00:12:10,010 téměř line-pro-line konverze C verze speller.c do PHP. 263 00:12:10,010 --> 00:12:12,630 A můžete to udělat znovu půl tuctu dalších jazyků. 264 00:12:12,630 --> 00:12:14,910 >> Ale co je zajímavé je to. 265 00:12:14,910 --> 00:12:16,910 Nebo to, co je řečeno skličující je to. 266 00:12:16,910 --> 00:12:20,790 Nech mě jít do toho a napište o dictionary.php, a tvrdí, že jsem 267 00:12:20,790 --> 00:12:23,670 jít dopředu a re-implementovat problém nastavit šest zde. 268 00:12:23,670 --> 00:12:27,530 >> Takže pojďme navrhnout jako první, že v tomto soubor, který bude realizován v roce 269 00:12:27,530 --> 00:12:30,550 PHP, tak ať mi otevře své značky, jako je to. 270 00:12:30,550 --> 00:12:34,780 Dovolte mi, abych sám globální Proměnná $ velikost dostane na nulu. 271 00:12:34,780 --> 00:12:36,710 A já jdu dát Sám hash tabulky. 272 00:12:36,710 --> 00:12:38,110 Budu používat hash tabulky pro tuto věc. 273 00:12:38,110 --> 00:12:42,070 Jak mohu vyhlásit hash tabulky 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 levá závorka závorka představuje co v PHP, jak jsme viděli? 277 00:12:48,870 --> 00:12:51,850 Pole, ale pole, které by mohly být asociativní pole. 278 00:12:51,850 --> 00:12:54,320 Asociativní pole je datová struktura, která 279 00:12:54,320 --> 00:12:55,860 sdružuje klíče s hodnotami. 280 00:12:55,860 --> 00:12:59,430 >> Nyní v nejjednodušší číselně indexované pole, tyto klávesy jsou, co? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 Nula, jedna, dva, tři, jo? 283 00:13:03,960 --> 00:13:08,780 Old school věci zpět od C. Ale to může být i řetězce jako foo a bar, 284 00:13:08,780 --> 00:13:12,210 nebo Maxwell, popřípadě za řetězec. 285 00:13:12,210 --> 00:13:14,240 Takže můžu využít, že za chvíli. 286 00:13:14,240 --> 00:13:17,550 >> Nech mě jít dopředu a prohlásit funkce jako - 287 00:13:17,550 --> 00:13:19,020 pojďme udělat první load (). 288 00:13:19,020 --> 00:13:20,690 Takže funkce load (). 289 00:13:20,690 --> 00:13:23,440 A PHP je v tom, že trochu jinak doslova typ funkce, 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 se jít dál a říkají, že funkce load () by měla v 292 00:13:28,760 --> 00:13:31,000 Argument $ slovník, jen jako C verze dělala. 293 00:13:31,000 --> 00:13:32,510 Dělám, že z paměti. 294 00:13:32,510 --> 00:13:34,910 >> A já navrhuji, že jsem bude to dělat. 295 00:13:34,910 --> 00:13:37,080 Já prostě dělat foreach. 296 00:13:37,080 --> 00:13:40,710 Jdu zavolat funkci nazvanou soubor (), procházející v názvu, která 297 00:13:40,710 --> 00:13:44,990 soubor, který je variabilní $ Slovník jako $ slovo. 298 00:13:44,990 --> 00:13:49,410 A pak se v mé smyčky for tady, jsem jít dopředu a skladovat v mém 299 00:13:49,410 --> 00:13:57,440 $ Tabulka $ slovo dostane pravda. 300 00:13:57,440 --> 00:13:57,918 Hotovo. 301 00:13:57,918 --> 00:14:01,264 Oh, počkej. 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átěž funkce () říkají v PHP. 305 00:14:04,970 --> 00:14:05,865 A teď, proč to má fungovat? 306 00:14:05,865 --> 00:14:07,010 A já jsem trochu podvádění zde. 307 00:14:07,010 --> 00:14:09,980 >> Tak, jeden, foreach jsme viděli krátce minule. 308 00:14:09,980 --> 00:14:13,680 To jen znamená, že můžete iteraci pole, aniž by se obtěžoval se i 309 00:14:13,680 --> 00:14:16,150 a n a a a, a to všechno. 310 00:14:16,150 --> 00:14:21,350 Slovník je samozřejmě název souboru, něco jako velký nebo malý, dva 311 00:14:21,350 --> 00:14:22,830 slovníky, které jsme použili minule. 312 00:14:22,830 --> 00:14:26,715 Soubor je funkce, která otevírá textu soubor, přečte ji v řádek po řádku, a 313 00:14:26,715 --> 00:14:29,840 ruce můžete zálohovat obrovskou škálu, každý z jehož prvků se 314 00:14:29,840 --> 00:14:31,340 řádek z tohoto souboru. 315 00:14:31,340 --> 00:14:36,040 Tak to je kombinace fopen, a fread, a zatímco smyčka, a fclose, 316 00:14:36,040 --> 00:14:37,080 a všechny, které. 317 00:14:37,080 --> 00:14:40,150 Konečně, jak slovo prostě znamená, že je Proměnná Budu mít přístup k 318 00:14:40,150 --> 00:14:41,890 na každé iteraci v této smyčce. 319 00:14:41,890 --> 00:14:46,910 >> Takže ve zkratce, tato jedna vložka se zde rozumí otevřít soubor, jehož jméno je v 320 00:14:46,910 --> 00:14:50,750 slovník, variabilní, iteraci je řádek po řádku, a pokaždé, když se 321 00:14:50,750 --> 00:14:54,290 linka, sklad v proměnné s názvem slovem, a pak udělat něco se slovem. 322 00:14:54,290 --> 00:14:55,280 Co chci dělat? 323 00:14:55,280 --> 00:14:58,110 Chci vložit slovo do mého hash tabulky. 324 00:14:58,110 --> 00:15:00,860 >> No, můžu dát něco v mém hash tabulky, stejně jako v C 325 00:15:00,860 --> 00:15:02,140 pomocí hranatých závorek. 326 00:15:02,140 --> 00:15:03,660 To je jméno mé tabulky hash. 327 00:15:03,660 --> 00:15:07,180 Budu index do tohoto hash tabulka na tomto místě. 328 00:15:07,180 --> 00:15:08,920 Takže není bracketing nula, není bracketing jeden. 329 00:15:08,920 --> 00:15:11,990 Držák citace konec citátu něco, co to slovo je. 330 00:15:11,990 --> 00:15:15,200 A stejně jako můžete mít ve vašem hash table práce trie, který jste právě obchod 331 00:15:15,200 --> 00:15:17,650 účinně Boolean, implicitně nebo explicitně. 332 00:15:17,650 --> 00:15:18,260 Hotovo. 333 00:15:18,260 --> 00:15:20,000 Já skladování hodnota true. 334 00:15:20,000 --> 00:15:23,150 >> Teď je tu pár věcí, Jsem řezání zatáček na tady. 335 00:15:23,150 --> 00:15:27,720 Technicky vzato, tam to bude nepříjemné nový řádek, / 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 jsem měl asi zavolat funkci PHP tzv. chop (), která bude 338 00:15:31,770 --> 00:15:33,460 doslova sekat to pryč. 339 00:15:33,460 --> 00:15:35,020 A já opravdu potřebujete udělat ještě jednu věc. 340 00:15:35,020 --> 00:15:38,380 Asi bych měla zvýšit velikost na každém iterace, takže jsem sledování 341 00:15:38,380 --> 00:15:39,560 na celém světě o tom, co to je. 342 00:15:39,560 --> 00:15:43,180 A upřímně řečeno, a to je jeden z hloupější aspekty PHP pokud jste 343 00:15:43,180 --> 00:15:46,950 použití globální proměnné, je nutné explicitně říci, že jste. 344 00:15:46,950 --> 00:15:51,670 Takže budu vlastně psát v globálním $ Velikost, global $ table, a teď 345 00:15:51,670 --> 00:15:52,690 má funkce je kompletní. 346 00:15:52,690 --> 00:15:57,475 >> Takže není tak jednoduché, jako předtím, ale Pravděpodobně trvalo kratší dobu než C 347 00:15:57,475 --> 00:15:58,220 verze, možná? 348 00:15:58,220 --> 00:15:58,730 OK. 349 00:15:58,730 --> 00:16:00,390 >> Takže teď pojďme udělat kontrolu funkce (). 350 00:16:00,390 --> 00:16:04,300 Uvidíme, jestli to alespoň se hodiny na konci, že nám to trvalo v C. Takže 351 00:16:04,300 --> 00:16:06,500 nech mě jít dopředu a prohlásit kontrolu jako funkce. 352 00:16:06,500 --> 00:16:09,070 Bere v argumentu slovo, které je přijde z pravopisu. 353 00:16:09,070 --> 00:16:13,410 A já jsem prostě jít zkontrolovat, zda Následující proměnné isset, stolní 354 00:16:13,410 --> 00:16:18,400 Držák strtolower slova - 355 00:16:18,400 --> 00:16:20,590 pojďme vyvážit všechny mé závorkách - 356 00:16:20,590 --> 00:16:24,275 pak se vrátit 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 bylo opravdu těžké Součástí tohoto programu. 360 00:16:30,330 --> 00:16:31,940 Else, vrátí 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 teď, proč to funguje? 364 00:16:34,520 --> 00:16:37,040 No, jednou jsem prošel ve slově, což je řetězec. 365 00:16:37,040 --> 00:16:41,400 Za druhé, já jsem kontrolu uvnitř hash stůl, který se nazývá $ tabulka. 366 00:16:41,400 --> 00:16:45,470 Já nutit ji, aby malá voláním funkce velmi podobné tolower () v 367 00:16:45,470 --> 00:16:48,580 C, ale to dělá celé slovo, není jediný znak. 368 00:16:48,580 --> 00:16:52,680 A v případě, že je nastaven, jinými slovy, že je nastavena hodnota, jinými slovy, 369 00:16:52,680 --> 00:16:54,880 jestli je to pravda, pak ano, to je slovo. 370 00:16:54,880 --> 00:16:56,530 Protože jsem ji tam s load (). 371 00:16:56,530 --> 00:16:59,100 A jestli ne, budu se vrátit false. 372 00:16:59,100 --> 00:17:00,090 >> Nyní ostatní jsou jednoduché. 373 00:17:00,090 --> 00:17:03,570 Velikost Function (), jak to mám udělat? 374 00:17:03,570 --> 00:17:05,230 V podstatě jsem to vrátit $ velikost. 375 00:17:05,230 --> 00:17:07,770 Ale já to technicky nutné udělat tento nepříjemný věc. 376 00:17:07,770 --> 00:17:10,640 A vlastně se slyšet, byl jsem řezání jeden roh příliš mnoho. 377 00:17:10,640 --> 00:17:12,920 Já opravdu potřeba udělat global $ tabulku. 378 00:17:12,920 --> 00:17:16,260 >> Ale to bylo řečeno, vyložit). 379 00:17:16,260 --> 00:17:17,380 Uvolnit () je úžasná. 380 00:17:17,380 --> 00:17:20,500 Funkce vyložit (). 381 00:17:20,500 --> 00:17:23,990 Jak mohu chtějí zavést vyložit ()? 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žit (), správa paměti je kompletně postaráno pro vás 385 00:17:28,900 --> 00:17:31,800 něco jako PHP a mnoho v jazycích vyšší úrovně. 386 00:17:31,800 --> 00:17:32,600 Tak to je úžasné. 387 00:17:32,600 --> 00:17:36,080 Jako důvod, proč to sakra jsme strávili na minulost osm plus týdnů na C písemně 388 00:17:36,080 --> 00:17:41,030 zřejmě docela pomalé, ale opravdu čas náročné problémy s desítkami hodin 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 věc, to může fungovat pokuta pro malé programy. 391 00:17:46,110 --> 00:17:47,840 To jistě zrychlil my doba vývoje. 392 00:17:47,840 --> 00:17:49,790 Ale pojďme se podívat, co se děje v reálném světě. 393 00:17:49,790 --> 00:17:52,370 >> Nech mě jít do tohoto adresáře v terminálu. 394 00:17:52,370 --> 00:17:53,370 Tam je kontrola pravopisu. 395 00:17:53,370 --> 00:17:56,570 A všimněte si, jak stranou, a vy byste mohli se setkal tento problém v nastavení 396 00:17:56,570 --> 00:17:58,190 šest nebo problém nastavit sedm. 397 00:17:58,190 --> 00:18:01,610 Nemusíte striktně nutné konec PHP soubory s příponami. php. 398 00:18:01,610 --> 00:18:05,250 Pokud vložíte řádek, jako ten první na samém vrcholu, to je zvláštní linka 399 00:18:05,250 --> 00:18:10,980 syntaxe, která v podstatě znamená, že si program s názvem PHP a používat to, aby 400 00:18:10,980 --> 00:18:12,270 interpretovat tento soubor. 401 00:18:12,270 --> 00:18:15,410 Takže teď nikdo neví, že Běžím PHP program. 402 00:18:15,410 --> 00:18:19,860 Mohu spustit stejně jako by to bylo něco sestaveny v C. 403 00:18:19,860 --> 00:18:20,650 >> Ale tady je to věc. 404 00:18:20,650 --> 00:18:21,600 Ve skutečnosti, pojďme to udělat znovu. 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á rychlejší tentokrát. 409 00:18:28,080 --> 00:18:29,745 >> Teď pojďme do verze PHP. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 Hezké. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 Ale jen pomyslete, jak mnoho času Zachránil jsem v úřední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, což ve skutečnosti nezní přesné jeden. 417 00:19:01,020 --> 00:19:03,710 Ale to je proto, že dlouhý příběh krátký, když tisknete z obrovské množství 418 00:19:03,710 --> 00:19:06,840 věcí na obrazovce, které sám zpomaluje věci dolů. 419 00:19:06,840 --> 00:19:11,260 Co to vlastně vzal v CPU Přístroj byl 3,59 sekundy, v 420 00:19:11,260 --> 00:19:15,260 kontrast na C, který se 0,44 sekund nejnověji. 421 00:19:15,260 --> 00:19:17,620 To je opravdu pořadí velikost jinak. 422 00:19:17,620 --> 00:19:20,280 >> Takže tam, kde je to, že cena jde? 423 00:19:20,280 --> 00:19:21,790 Proč je to tak mnohem pomalejší? 424 00:19:21,790 --> 00:19:24,220 Proč PHP provádět tak špatně? 425 00:19:24,220 --> 00:19:25,242 Danielle? 426 00:19:25,242 --> 00:19:26,550 >> DIVÁKŮ: Vy jste opravdu použít hash tabulky. 427 00:19:26,550 --> 00:19:27,710 >> DAVID Malan: Já jsem opravdu použít hash tabulky. 428 00:19:27,710 --> 00:19:28,760 Tak nějak jsem to udělal. 429 00:19:28,760 --> 00:19:29,870 Takže je to asociativní pole. 430 00:19:29,870 --> 00:19:33,650 S největší pravděpodobností, pokud lidé v PHP jsou opravdu chytrý, oni používali pod 431 00:19:33,650 --> 00:19:39,520 kapuce aktuální hash tabulka implementována v něco jako C nebo 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ÁKŮ: [neslyšitelné]. 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 funkcí jsem psal nyní - ve skutečnosti, můžete říci, že ještě jednou 438 00:19:50,780 --> 00:19:51,480 trochu hlasitěji? 439 00:19:51,480 --> 00:19:54,509 >> DIVÁKŮ: Každá z funkcí, které jste součástí má mnohem plnější 440 00:19:54,509 --> 00:19:56,610 kapacita než - 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 mnohem víc hlavou, že jsme není opravdu vidět, že se zaměří pouze na 443 00:20:01,490 --> 00:20:03,730 dictionary.php, který jsem napsal. 444 00:20:03,730 --> 00:20:08,020 Naopak, je tu celá tlumočník děje v pozadí. 445 00:20:08,020 --> 00:20:12,040 Opravdu, když jsem běžel tohoto programu je nebyla spuštěna sestavené nul a jedniček 446 00:20:12,040 --> 00:20:14,290 určen pro svůj procesor Intel. 447 00:20:14,290 --> 00:20:19,270 Spíše to byl spuštěn řádek po řádku PHP kód, který vypadá přesně 448 00:20:19,270 --> 00:20:20,350 rádi bychom zadali. 449 00:20:20,350 --> 00:20:22,475 A tak při každém použití interpretovaný jazyk, můžete 450 00:20:22,475 --> 00:20:23,850 skutečně zaplatit tuto cenu. 451 00:20:23,850 --> 00:20:27,010 Bude to trvat nějaký čas na čtení váš soubor shora dolů, zleva 452 00:20:27,010 --> 00:20:30,740 vpravo, a pak provést každý seřadit znovu a znovu. 453 00:20:30,740 --> 00:20:34,250 >> Nyní ve skutečnosti, a to zejména na internetu, můžete skutečně urychlit tento proces 454 00:20:34,250 --> 00:20:38,660 ukládání do mezipaměti výsledky PHP kód se vykládá. 455 00:20:38,660 --> 00:20:41,640 A to dává smysl na webu, protože Pokud nemáte jeden uživatel podobného 456 00:20:41,640 --> 00:20:46,300 mě tady, ale 1000 nebo 10000 uživatelů, pak možná poprvé, kdy je soubor 457 00:20:46,300 --> 00:20:49,050 přístup je pomalé, ale poté je to mnohem rychlejší. 458 00:20:49,050 --> 00:20:51,000 >> Ale i toto je opět kompromis. 459 00:20:51,000 --> 00:20:53,870 A něco jako údaje z výzkumu nastavení, nebo dokonce něco jako velké 460 00:20:53,870 --> 00:20:58,330 to bude nakonec uživatelé začínají cítit, že zpomalení. 461 00:20:58,330 --> 00:21:02,670 >> Takže ve zkratce, interpretované jazyky velmi hodně v módě velmi oblíbená, a 462 00:21:02,670 --> 00:21:06,710 upřímně řečeno, jsou pravděpodobně jazyky, by se měly dostat k při řešení problémů 463 00:21:06,710 --> 00:21:08,200 Po CS50. 464 00:21:08,200 --> 00:21:12,720 Ale uvědomí, jak moc jste opravdu brát jako samozřejmost pod pokličku 465 00:21:12,720 --> 00:21:15,910 opravdu těch několik posledních týdnů hash tabulky a stromy, a snaží se, 466 00:21:15,910 --> 00:21:20,770 které se používají v konečném důsledku ke skutečně realizovat věci, jako je levá závorka, 467 00:21:20,770 --> 00:21:24,200 hranatá závorka, kterou můžeme nyní vděčně brát za samozřejmost. 468 00:21:24,200 --> 00:21:26,360 >> Takže pojďme se podívat teď V této souvislosti web. 469 00:21:26,360 --> 00:21:29,890 A už jsem zmínil minule, že je tu banda superglobálních v PHP, který 470 00:21:29,890 --> 00:21:32,490 opravdu nejsou důležité na příkazovém řádku. 471 00:21:32,490 --> 00:21:36,210 Jsou více relevantní v kontextu použití PHP ve webovém kontextu. 472 00:21:36,210 --> 00:21:41,220 Takže PHP běží na webovém serveru, aby vytvářet věci, jako je HTML. 473 00:21:41,220 --> 00:21:44,540 >> A my jsme se podíval na $ _GET a $ _POST a to je místo, kde uživatelé automaticky " 474 00:21:44,540 --> 00:21:49,100 vstup skončí prostě pokud zadáte tvoří na soubor s příponou. php v na webu 475 00:21:49,100 --> 00:21:50,460 serveru jako zařízení. 476 00:21:50,460 --> 00:21:53,310 Ale podívejme se krátce na $ A $ _SESSION _COOKIE. 477 00:21:53,310 --> 00:21:56,670 >> Laicky řečeno, to, co je jako cookie chápete to v kontextu 478 00:21:56,670 --> 00:21:58,220 pomocí web? 479 00:21:58,220 --> 00:21:59,450 >> DIVÁKŮ: Soubor 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 soubor v počítači uživatele vysazeny z nějakého webu 482 00:22:03,500 --> 00:22:04,410 jste náhodou navštívit. 483 00:22:04,410 --> 00:22:07,334 Takže když jdete na Facebooku, když jdete na bankofamerica.com, když jdete 484 00:22:07,334 --> 00:22:10,330 na google.com, když jdete do téměř jakékoliv internetové stránky na světě v těchto dnech, 485 00:22:10,330 --> 00:22:14,850 včetně cs50.net, je zasazen cookie na počítači, který je 486 00:22:14,850 --> 00:22:19,800 buď hodnota uložená v paměti RAM v počítače v paměti prohlížeče, nebo 487 00:22:19,800 --> 00:22:22,800 někdy opravdu soubor uložen na pevném disku. 488 00:22:22,800 --> 00:22:26,960 >> A co je obvykle uložena v tomto souboru není vaše uživatelské jméno, ne 489 00:22:26,960 --> 00:22:31,060 heslo, obvykle není něco, citlivé, pokud webové stránky není tak 490 00:22:31,060 --> 00:22:35,040 dobře se jejich bezpečnosti, ale spíše to je velký jedinečný identifikátor mezi 491 00:22:35,040 --> 00:22:35,680 dalších věcí. 492 00:22:35,680 --> 00:22:38,920 Je to velké náhodné číslo zasadil na vašem počítač, ale můžete myslet, jak 493 00:22:38,920 --> 00:22:42,740 jakýsi virtuální ruky razítko jako z klub nebo nějaký zábavní park, který 494 00:22:42,740 --> 00:22:47,160 umožňuje zaměstnanci, majitelé, které služby, se vzpomenout si, kdo jste. 495 00:22:47,160 --> 00:22:51,030 Takže v případě, že velké náhodné číslo jako 12345678, i když to je samozřejmě 496 00:22:51,030 --> 00:22:54,180 ne příliš náhodné, myslím, že o tom, jak ruční razítko, že při návštěvě 497 00:22:54,180 --> 00:22:57,930 facebook.com poprvé, že razítko, že číslo na ruce. 498 00:22:57,930 --> 00:23:01,510 A pak, protože mluvíte HTTP, vás je prohlížeč, a protože Facebook 499 00:23:01,510 --> 00:23:06,440 samozřejmě mluví stejně jako web server, HTTP protokol říká, že 500 00:23:06,440 --> 00:23:09,930 kdykoliv následně dostaví facebook.com, ať už je to druhá 501 00:23:09,930 --> 00:23:13,560 později o hodinu později, i další den, tak dlouho, jak máte explicitně 502 00:23:13,560 --> 00:23:17,050 odhlášeni, který účinně je jako mytí rukou. 503 00:23:17,050 --> 00:23:20,280 HTTP říká, že byste měli prezentovat své předat razítko Pokaždé, když 504 00:23:20,280 --> 00:23:22,020 vrátit se k dané internetové stránce. 505 00:23:22,020 --> 00:23:24,390 >> Co Facebook pak dělá, je, že podívejte se na té straně razítko a 506 00:23:24,390 --> 00:23:26,850 říkají, ach, 123456789. 507 00:23:26,850 --> 00:23:30,260 Nevím, na první pohled, že tento je David Malan v Cambridge, 508 00:23:30,260 --> 00:23:34,690 Massachusetts, ale mohou kontrolovat své databáze a říkají, ach, člověk 509 00:23:34,690 --> 00:23:39,930 na jehož počítače se zasadil 123456789 je David Malan z Cambridge, 510 00:23:39,930 --> 00:23:40,440 Státě Massachusetts. 511 00:23:40,440 --> 00:23:46,000 Ukažme, že uživatel pak jeho profil strana nebo jeho News Feed. 512 00:23:46,000 --> 00:23:49,660 >> Ale je tu problém, pokud to je, jak web opravdu funguje. 513 00:23:49,660 --> 00:23:51,390 Pojďme se podívat na rychlý příklad. 514 00:23:51,390 --> 00:23:55,190 Pojďme skutečně jít říct facebook.com. 515 00:23:55,190 --> 00:23:58,130 Ale dříve, než jsme mohli jít tam, ať mě jít dopředu a otevřít Chrome je 516 00:23:58,130 --> 00:23:59,790 Inspektor tady dole. 517 00:23:59,790 --> 00:24:01,140 Podívejme se na kartě sítě. 518 00:24:01,140 --> 00:24:06,020 A teď pojďme do toho a zadejte v https://facebook.com. 519 00:24:06,020 --> 00:24:09,410 A dělám to tak, že nevidíme všechny tyto přesměrování a odpadů 520 00:24:09,410 --> 00:24:10,660 čas dívat se skrz ty. 521 00:24:10,660 --> 00:24:12,690 Dovolte mi, abych stiskněte klávesu Enter. 522 00:24:12,690 --> 00:24:13,130 >> Dobrá. 523 00:24:13,130 --> 00:24:14,580 Vidíme spoustu žádostí. 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 souborů. 526 00:24:16,930 --> 00:24:19,290 A tady, na mé zmínky o Latence poslední době, to je 527 00:24:19,290 --> 00:24:21,240 Mnoho požadavků HTTP. 528 00:24:21,240 --> 00:24:23,700 Ale první z nich je pravděpodobně nejzajímavější. 529 00:24:23,700 --> 00:24:26,420 >> Takže pojďme přejděte sem, a Budu přiblížit ve vteřině. 530 00:24:26,420 --> 00:24:29,090 To bude trochu nepořádek, ale pojďme se podívat. 531 00:24:29,090 --> 00:24:31,660 Facebook se zasláním Spoustu věcí. 532 00:24:31,660 --> 00:24:33,490 >> Ale hej, zajímavé. 533 00:24:33,490 --> 00:24:37,880 Jsou výsadbu ne jeden, ale čtyři ruční razítka na ruce zde. 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 několik funkcí zde. 536 00:24:44,030 --> 00:24:46,170 Všechny z nich zmínit některé druh expirace. 537 00:24:46,170 --> 00:24:50,090 A vypadá to, že Facebook je doufat, že pamatovat si mě až do roku 2015. 538 00:24:50,090 --> 00:24:53,670 Tak to je pravděpodobně čas od které Musím se odhlásit nebo se budu jen 539 00:24:53,670 --> 00:24:55,710 automaticky předpokládat, že jsem nevrátí. 540 00:24:55,710 --> 00:24:57,840 Takže to je vlastně slušný množství času. 541 00:24:57,840 --> 00:24:59,170 >> A tam jsou některé další co se děje tady. 542 00:24:59,170 --> 00:25:03,036 Tato cookie se zdá být násilně odstraněny tím, že říká, že skončila v roce 1970 543 00:25:03,036 --> 00:25:04,460 před sušenky existoval. 544 00:25:04,460 --> 00:25:06,510 Takže prohlížeč právě děje předpokládat, OK, to je jako 545 00:25:06,510 --> 00:25:07,910 mytí rukou razítko. 546 00:25:07,910 --> 00:25:11,240 >> Ale teď, když můj prohlížeč je následné žádosti - 547 00:25:11,240 --> 00:25:14,340 nech mě jít napřed a to Znovu a znovu načíst. 548 00:25:14,340 --> 00:25:18,170 Nyní mi dovolte přejděte zpět do top žádost a jít dolů 549 00:25:18,170 --> 00:25:20,760 zde požádat záhlaví. 550 00:25:20,760 --> 00:25:21,390 Všimněte si toto. 551 00:25:21,390 --> 00:25:25,280 Takže teď jsem za ne hlavičky odpovědi, ale všimnete, že říká, že záhlaví požadavků. 552 00:25:25,280 --> 00:25:29,220 A všimněte si, že můj prohlížeč jako součást jeho žádost poté, co udeřil znovu načíst je 553 00:25:29,220 --> 00:25:32,780 poslal alespoň následující informace. 554 00:25:32,780 --> 00:25:34,670 Nezadáno-cookie, však cookie. 555 00:25:34,670 --> 00:25:38,750 Tak tohle je řádek, záhlaví HTTP tak, mluvit, kde můj prohlížeč je druh 556 00:25:38,750 --> 00:25:43,340 z, aniž bych věděl, že předložení moje ruka na Facebooku kontrole. 557 00:25:43,340 --> 00:25:46,020 >> Takže tyto soubory cookie mohou být použít pak na co? 558 00:25:46,020 --> 00:25:49,420 Chcete-li si vzpomenout, kdo jste, nebo si vzpomenout, jak kolikrát jste tam byli, nebo 559 00:25:49,420 --> 00:25:50,280 opravdu něco. 560 00:25:50,280 --> 00:25:52,742 >> Takže tady je counter.php. 561 00:25:52,742 --> 00:25:53,780 A dovolte mi, abych zvětšit písmo. 562 00:25:53,780 --> 00:25:58,380 A pokaždé, když jsem znovu načtěte tuto stránku, oznámení je to pamatovat, kolikrát 563 00:25:58,380 --> 00:25:59,250 Byl jsem tam. 564 00:25:59,250 --> 00:26:00,570 No, to není tak působivé. 565 00:26:00,570 --> 00:26:03,140 Řekněme, zavřete tuto kartu, a teď se vrať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 zajímavé. 568 00:26:08,970 --> 00:26:10,960 To ještě si pamatoval, i když jsem zavřel kartu. 569 00:26:10,960 --> 00:26:14,010 A upřímně řečeno, když zavřete prohlížeč, pokud by byla provedena správným způsobem, jsem 570 00:26:14,010 --> 00:26:18,950 mohl ještě pamatovat, že tento uživatel je který on nebo ona byla poprvé, a 571 00:26:18,950 --> 00:26:22,840 jen jednou jsem se jít do nabídky Chrome, který tady je tady, a přejděte na 572 00:26:22,840 --> 00:26:25,990 Historie a klepněte na tlačítko Vymazat údaje o prohlížení, jak někteří z vás mohou mít v 573 00:26:25,990 --> 00:26:33,050 minulých, jen pak soubory cookie ve skutečnosti se v průběhu webu smazány 574 00:26:33,050 --> 00:26:33,970 vývoj. 575 00:26:33,970 --> 00:26:35,340 >> Takže, pokud půjdeme - 576 00:26:35,340 --> 00:26:37,080 pojďme zblízka gedit zde. 577 00:26:37,080 --> 00:26:38,910 A když jsme se jít do tohoto souboru. 578 00:26:38,910 --> 00:26:44,210 Nech mě jít do našeho vhosts / localhost / public, a nech mě to udělat 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 Všimněte si, že to je dost jednoduchý program. 581 00:26:48,350 --> 00:26:50,250 Je to docela jednoduché webové stránky. 582 00:26:50,250 --> 00:26:51,770 >> Takže v horní části souboru je jen komentář. 583 00:26:51,770 --> 00:26:54,930 Ale tady je nová linka, která vám může viděli již v p-set sedm, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 Toto je řádek PHP kódu, který v podstatě říká, webový server, make 586 00:27:00,380 --> 00:27:03,400 Ujistěte se, že razítko rukou a učinit Ujistěte se, že kontrolu ručních razítek. 587 00:27:03,400 --> 00:27:06,810 To je vše, co vedení dělá, a to dělá všechno tento proces pro nás. 588 00:27:06,810 --> 00:27:09,510 Pak všimnete Právě jsem dostal dvě pobočky zde. 589 00:27:09,510 --> 00:27:14,150 Je-li čítač klíč uvnitř této speciální globální proměnná s názvem 590 00:27:14,150 --> 00:27:18,010 $ _SESSION Se nachází - jinými slovy, v případě, že je nějaká hodnota, že - 591 00:27:18,010 --> 00:27:22,440 pojďme ji a uložit je do místní proměnné s názvem $ counter. 592 00:27:22,440 --> 00:27:27,000 Else, pojďme přiřadit $ counter Výchozí hodnota 0. 593 00:27:27,000 --> 00:27:30,320 >> Tady je jeden aspekt PHP, který je požehnáním i prokletí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 zatímco v C, co by Rozsah počítadla byly 596 00:27:35,160 --> 00:27:36,725 buď tady, nebo tady? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> To by byla omezena na těchto složených závorek. 599 00:27:41,690 --> 00:27:42,090 Hádejte, co? 600 00:27:42,090 --> 00:27:46,920 V PHP existuje i mimo ty, složené závorky, tady a tady, 601 00:27:46,920 --> 00:27:49,120 a tady a tady, a i dole. 602 00:27:49,120 --> 00:27:52,400 Takže říkám, to je požehnání v tom smyslu, že nemusíte přemýšlet, jak 603 00:27:52,400 --> 00:27:54,070 těžké, jak jsme to udělali před několika týdny. 604 00:27:54,070 --> 00:27:56,880 Ale je to také trochu prokletí v tom, že bez ohledu na to, kde můžete použít proměnnou v 605 00:27:56,880 --> 00:28:00,020 PHP, alespoň v programu, jako je tento, je to globálně přístupné pro 606 00:28:00,020 --> 00:28:01,170 lepší nebo horší. 607 00:28:01,170 --> 00:28:06,130 Takže budete muset mít na paměti, že se Vaše proměnné nemusí být definováno. 608 00:28:06,130 --> 00:28:07,640 Možná jste je definovali jinde. 609 00:28:07,640 --> 00:28:09,460 >> Ale co mám dělat nakonec? 610 00:28:09,460 --> 00:28:13,160 Jdu uložit uvnitř, že globální proměnná jako hodnota 611 00:28:13,160 --> 00:28:17,060 Počítadlo klíč výsledek dělá počítadlo plus 1. 612 00:28:17,060 --> 00:28:18,910 Takže je to jen aritmetický že dělá 613 00:28:18,910 --> 00:28:20,590 inkrementace tohoto pultu. 614 00:28:20,590 --> 00:28:24,850 A skutečnost, že jsem ukládání, které hodnota v roce je zde znamená 615 00:28:24,850 --> 00:28:29,970 v podstatě aktualizovat databázi si uvědomit, že uživatel 123456789 byla 616 00:28:29,970 --> 00:28:31,010 zde dvakrát. 617 00:28:31,010 --> 00:28:33,780 A když jsem to zase příště znovu načíst stránku, bude to kontrolovat 618 00:28:33,780 --> 00:28:36,710 moje ruka razítko a říkají, ach, uživatel 123456789 má nyní 619 00:28:36,710 --> 00:28:38,410 zde byl třikrát. 620 00:28:38,410 --> 00:28:43,390 >> A tak to, co PHP a podobné jazyky dělají pro nás je, že se zjišťuje, 621 00:28:43,390 --> 00:28:47,720 jak a kde a na jak dlouho ukládat hodnoty v této speciální 622 00:28:47,720 --> 00:28:48,830 superglobal. 623 00:28:48,830 --> 00:28:52,750 A to superglobal na příště navštivte stránku je trochu magicky 624 00:28:52,750 --> 00:28:57,440 pre-obydlený, naplní hodnotami, které tam byli naposled jste navštívili, 625 00:28:57,440 --> 00:29:02,310 zda to bylo před druhou, týden před, nebo v roce 2013 a my teď mluvíme 626 00:29:02,310 --> 00:29:03,790 o 2015. 627 00:29:03,790 --> 00:29:07,600 PHP a webový server take care ze všech, které pro vás. 628 00:29:07,600 --> 00:29:08,850 >> DIVÁKŮ: [neslyšitelné]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> DAVID Malan: Proměnné v PHP jsou v podstatě vždy globální, pokud 631 00:29:15,760 --> 00:29:18,400 Prohlašuji, je uvnitř funkce, a pak jsou místní 632 00:29:18,400 --> 00:29:19,420 pouze funkce. 633 00:29:19,420 --> 00:29:22,300 Ale protože jsem nenapsal jakékoliv funkce, které jsou nyní efektivně 634 00:29:22,300 --> 00:29:25,090 Globální během celého mého souboru zde. 635 00:29:25,090 --> 00:29:26,040 >> DIVÁKŮ: Je tam způsob, jak tak, aby byly místní? 636 00:29:26,040 --> 00:29:28,470 >> DAVID Malan: Je nějaká způsob, jak je místní? 637 00:29:28,470 --> 00:29:30,680 Pouze tím, že balí je do funkce. 638 00:29:30,680 --> 00:29:32,790 Který v nejnovější verzi PHP, můžete to udělat s 639 00:29:32,790 --> 00:29:34,130 anonymní funkce. 640 00:29:34,130 --> 00:29:35,930 Ale o tom více v kontext JavaScript. 641 00:29:35,930 --> 00:29:37,260 Ale krátká odpověď je ne. 642 00:29:37,260 --> 00:29:40,888 Delší odpověď je ano. 643 00:29:40,888 --> 00:29:42,380 Pěkný. 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čně, samotná stránka je vlastně docela jednoduché. 647 00:29:47,760 --> 00:29:51,470 Všimněte si, že jednou jsem se ukončit režim PHP, odvolání že všechny tyto věci dolů 648 00:29:51,470 --> 00:29:53,700 Níže je jen tak nechat plivat z raw do prohlížeče. 649 00:29:53,700 --> 00:29:57,050 Což je v pořádku, protože já chci poslat uživatel některé HTML, ale chci 650 00:29:57,050 --> 00:29:59,140 dynamicky aktualizovat tento HTML. 651 00:29:59,140 --> 00:30:03,930 A jeden způsob, jak to udělat, je setřídit velmi rychle klesnout zpět do PHP 652 00:30:03,930 --> 00:30:07,730 režim, používání otevřené držák otazník znaménko rovná se, a pak výstupní hodnota 653 00:30:07,730 --> 00:30:08,650 čítače. 654 00:30:08,650 --> 00:30:12,360 >> Nebo v případě, že to vypadá trochu záhadné, to znaménko rovná se vlastně jen některé 655 00:30:12,360 --> 00:30:16,190 syntaktický cukr pro tento printf ($ counter). 656 00:30:16,190 --> 00:30:19,160 Ale upřímně řečeno, to je jen malý ošklivý a trochu nepříjemné psát. 657 00:30:19,160 --> 00:30:23,660 Takže PHP velmi pěkně nabízí tuto funkci kde si můžete jen říct, že více 658 00:30:23,660 --> 00:30:25,450 stručně stejným způsobem. 659 00:30:25,450 --> 00:30:26,940 >> Takže to, co se děje pod kapuce? 660 00:30:26,940 --> 00:30:31,210 Pojďme se rychle podívat na síti Karta pro counter.php zde. 661 00:30:31,210 --> 00:30:35,090 A nech mě jít napřed a první pojďme vymazat soubory cookie. 662 00:30:35,090 --> 00:30:38,670 Pojďme Vymazat údaje o prohlížení od počátku času. 663 00:30:38,670 --> 00:30:39,680 Nyní se pojďme vrátit sem. 664 00:30:39,680 --> 00:30:41,340 Nyní se pojďme znovu načtete stránku. 665 00:30:41,340 --> 00:30:42,170 A jsem zpátky na nulu. 666 00:30:42,170 --> 00:30:44,810 Vzhledem k tomu, moje ruka razítko bylo prát, I nyní získat nové cookie. 667 00:30:44,810 --> 00:30:48,780 >> Ve skutečnosti, pokud se podívám na kartě sítě a podívejte se na hlavičky odpovědi, oznámení 668 00:30:48,780 --> 00:30:51,960 že spotřebič je mi posílá cookie, jehož název je poněkud 669 00:30:51,960 --> 00:30:55,820 libovolně, ale druh rozumně, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 A to mi to posílá opravdu velké náhodné číslo. 671 00:30:58,440 --> 00:30:59,440 Není to celá řada. 672 00:30:59,440 --> 00:31:00,390 Není to úplně hexadecimální. 673 00:31:00,390 --> 00:31:03,600 Je to nějaký druh alfanumerický řetězec, ale pravděpodobně je to náhodné. 674 00:31:03,600 --> 00:31:06,830 A to je ruční razítko tak, aby mluvit, že jsem na mysli. 675 00:31:06,830 --> 00:31:11,960 >> Mezitím, když klepněte na tlačítko Načíst znovu a pak podívejte se na tomto druhém řádku mé druhé 676 00:31:11,960 --> 00:31:17,600 Žádost, oznámení nyní, že moje žádost Hlavičky jsou PHPSESSID rovná to, 677 00:31:17,600 --> 00:31:19,390 není set-cookie, ale jen cookie. 678 00:31:19,390 --> 00:31:22,950 A to je prezentace mého prohlížeče z mé ruky razítko. 679 00:31:22,950 --> 00:31:28,820 >> Takže teď jako ukázku, a promluvíme si více o tom za týden nebo tak, ale 680 00:31:28,820 --> 00:31:31,590 jakým způsobem to, aby vás zranitelné, váš účet Facebook 681 00:31:31,590 --> 00:31:34,137 zranitelné, a jiné takové účty zranitelné? 682 00:31:34,137 --> 00:31:35,510 >> DIVÁKŮ: Pokud někdo má své cookie. 683 00:31:35,510 --> 00:31:36,750 >> DAVID Malan: Jo, když někdo má své cookie. 684 00:31:36,750 --> 00:31:39,920 Myslím opravdu, stejně jako někteří z vás může se snažili na jako klub nebo 685 00:31:39,920 --> 00:31:44,030 zábavní park, pokud se pokusíte něco takhle kopírovat razítko, i když 686 00:31:44,030 --> 00:31:47,560 zpět na jiné osoby ruky, a pak on nebo ona prezentuje jako 687 00:31:47,560 --> 00:31:53,250 vlastní, je-li to skutečně vypadá identické, 123456789, pak web 688 00:31:53,250 --> 00:31:57,980 Server je zřejmě jen tak věřit, že uživatel je vám. 689 00:31:57,980 --> 00:32:01,450 >> A to je skutečně zásadní Hrozba kdykoliv budete používat cookies 690 00:32:01,450 --> 00:32:05,420 protože pokud někdo jen tak spoofs na Mluvíme vaším cookie, zjistí, co je 691 00:32:05,420 --> 00:32:08,660 je, a to buď skutečně je kopírování při pohledu na 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 David cookie je JJ3JIK a tak dále, a pak jsou dost chytrý, aby věděl 694 00:32:14,520 --> 00:32:18,080 jak třídit ručně odeslat, že cookie z prohlížeče nebo z 695 00:32:18,080 --> 00:32:22,350 Program píší, že by mohla zcela přihlásit do webové stránky jako vy. 696 00:32:22,350 --> 00:32:28,560 Není to tak těžké předstírat, že je někdo jiný, pokud se znovu p-set 697 00:32:28,560 --> 00:32:30,790 dvě, které představil, co? 698 00:32:30,790 --> 00:32:32,065 >> DIVÁKŮ: kryptografie. 699 00:32:32,065 --> 00:32:33,860 >> DAVID Malan: málo bit kryptografie. 700 00:32:33,860 --> 00:32:36,550 Jednoduché kryptografie, alespoň v Standard Edition, ale crypto 701 00:32:36,550 --> 00:32:36,870 nicméně. 702 00:32:36,870 --> 00:32:37,410 méně. 703 00:32:37,410 --> 00:32:41,440 Tak to dopadá, když se šifrovat všechny Tyto hlavičky pomocí něco, co vás 704 00:32:41,440 --> 00:32:48,770 může nyní víme, známější jako SSL, secure socket layer, nebo https:// adresy URL, 705 00:32:48,770 --> 00:32:51,890 pak se všechny tyto věci jsme byli podíval se na skutečně šifrována, 706 00:32:51,890 --> 00:32:54,800 což znamená, že je to jako ty nemůže číst ruční razítko. 707 00:32:54,800 --> 00:32:59,350 Pouze facebook.com může, nebo google.com, nebo v tomto případě přístroj může 708 00:32:59,350 --> 00:33:00,550 četl, že ruční razítko. 709 00:33:00,550 --> 00:33:04,020 >> Tragicky však, a znovu, je to příliš vhodné s NSA věci 710 00:33:04,020 --> 00:33:06,410 pozdě, dokonce i SSL je křehký. 711 00:33:06,410 --> 00:33:09,850 A je to ve skutečnosti není tak těžké dokonce prasknout, že šifrování. 712 00:33:09,850 --> 00:33:12,040 Ani ne tak tím, praskání šifrování, ale tím, že napálí 713 00:33:12,040 --> 00:33:15,720 prohlížeč na dešifrování údaje předčasně. 714 00:33:15,720 --> 00:33:17,880 Ale opět, budeme vás škádlit se, že zanedlouho. 715 00:33:17,880 --> 00:33:21,242 Pro tuto chvíli, jen se nebojte. 716 00:33:21,242 --> 00:33:23,070 Je to tragicky docela 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 teď nás opustil? 719 00:33:27,910 --> 00:33:29,010 Dobře, pojďme na to. 720 00:33:29,010 --> 00:33:31,790 Pojďme do toho a vzít rychle teaser, než jsme si pauzu. 721 00:33:31,790 --> 00:33:33,790 A myslím, že se budeme zdržovat déle dnes, ale budeme se ponořit do 722 00:33:33,790 --> 00:33:37,850 něco zcela nového a sexy, což bude povzbudit chuť k jídlu ještě víc. 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 jsme mluvit o někdy tak krátce minule. 725 00:33:41,520 --> 00:33:44,670 Budete opravdu dostat své špinavé ruce s některými z nich v p-set sedm. 726 00:33:44,670 --> 00:33:46,480 A v Laicky řečeno, to, co dělá SQL - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 udělat pro vás? 729 00:33:49,850 --> 00:33:50,310 Co je to? 730 00:33:50,310 --> 00:33:51,546 Jo. 731 00:33:51,546 --> 00:33:53,240 >> DIVÁKŮ: Pojďme si pří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 pojďme přístupu k datům v databázi. 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 podstatě programovací jazyk. 736 00:33:59,890 --> 00:34:03,400 K dispozici jsou funkce tom, že nebudeme používat i ve třídě. 737 00:34:03,400 --> 00:34:04,710 Ale můžete efektivně definování funkcí. 738 00:34:04,710 --> 00:34:06,870 Říká se jim uloženy postupy v SQL. 739 00:34:06,870 --> 00:34:09,860 Ale budeme držet to docela jednoduché a stačí jej použít pro některé základní operace 740 00:34:09,860 --> 00:34:14,320 jako je výběr dat, vkládání dat, aktualizace dat a mazání dat. 741 00:34:14,320 --> 00:34:17,400 >> A vy si opravdu myslíte, že databáze, jako SQL databázi, jak jen 742 00:34:17,400 --> 00:34:18,800 je Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 Vzhledem k tomu, SQL odkazuje na relační databáze, kde 744 00:34:21,989 --> 00:34:23,480 vztah prostě znamená tabulky. 745 00:34:23,480 --> 00:34:24,739 Řádky a sloupce. 746 00:34:24,739 --> 00:34:27,929 Takže vše, co můžete dát v tabulce jako je tento, nebo Google Docs, 747 00:34:27,929 --> 00:34:32,460 byste mohli dát do SQL databáze prohlášením tabulky. 748 00:34:32,460 --> 00:34:34,800 >> Nyní, jak se ve skutečnosti přístup že informace? 749 00:34:34,800 --> 00:34:38,239 No, s příkazy nebo dotazy, jako 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 velké části, které jsou Čtyři pouze ingredience, které budete potřebovat, aby 752 00:34:44,489 --> 00:34:47,370 něco docela silně v problému set sedm. 753 00:34:47,370 --> 00:34:49,940 >> Nyní zpět v den, byste ve skutečnosti interakci s databází v 754 00:34:49,940 --> 00:34:52,730 černá a bílá okna terminálu na blikající výzva takhle. 755 00:34:52,730 --> 00:34:56,370 A databáze jsme běží na Přístroj se nazývá MySQL, která je 756 00:34:56,370 --> 00:34:58,560 zdarma a open source databázový stroj. 757 00:34:58,560 --> 00:35:02,240 Pokud jste Google a přečtěte si Wikipedie článek, budete vědět, že název je 758 00:35:02,240 --> 00:35:05,060 bit přechodu pro některé verze Linuxu. 759 00:35:05,060 --> 00:35:10,460 Maria databáze je ve skutečnosti vidlice tak mluvit o MySQL. 760 00:35:10,460 --> 00:35:12,740 >> Dlouhý příběh krátký, Oracle koupil MySQL. 761 00:35:12,740 --> 00:35:13,870 Oracle je to velká firma. 762 00:35:13,870 --> 00:35:17,010 Lidé byli obávají, že by již zůstávají zcela jako open source, 763 00:35:17,010 --> 00:35:20,930 takže je to jen kopie MySQL, která je ještě volný, stále open source, a 764 00:35:20,930 --> 00:35:23,550 instalovány v Fedora Linux ve výchozím nastavení. 765 00:35:23,550 --> 00:35:26,130 >> Ale to je trochu bolesti v krk, aby se seznámili s 766 00:35:26,130 --> 00:35:27,310 Databáze tímto způsobem. 767 00:35:27,310 --> 00:35:30,560 Takže jsme se zahrnout do CS50 spotřebiče svobodný open source nástroj s názvem 768 00:35:30,560 --> 00:35:31,700 phpMyAdmin. 769 00:35:31,700 --> 00:35:33,940 Jen náhoda, že je to napsaný v PHP. 770 00:35:33,940 --> 00:35:36,450 Neexistuje žádný zásadní Potřebujeme zde pro PHP. 771 00:35:36,450 --> 00:35:40,090 Ale to je jen webový nástroj, který jsme stáhli zdarma, instalovaný v 772 00:35:40,090 --> 00:35:43,850 spotřebič, který nám umožňuje mít grafické uživatelské rozhraní, které se 773 00:35:43,850 --> 00:35:48,610 prozkoumat p-set sedm databázi pro vytvoření nové databáze, 774 00:35:48,610 --> 00:35:51,980 říci, pro vlastní konečné projektu, pokud by jako je, a nakonec vytvořit 775 00:35:51,980 --> 00:35:55,900 dynamické webové stránky, jako CS50 financí které umožňují data dotazu a 776 00:35:55,900 --> 00:35:58,140 aktualizovat data dynamicky. 777 00:35:58,140 --> 00:36:01,420 >> Nebudete muset použít jen jednoduchý textový soubor nebo CSV. 778 00:36:01,420 --> 00:36:05,950 Můžete dokonce použít inteligentní databáze program, takže můžete spustit více 779 00:36:05,950 --> 00:36:10,240 sofistikované dotazy, než jen čtení přes všechno lineárně. 780 00:36:10,240 --> 00:36:14,150 >> Tak například, to je to, co dáváme si po vybalení z krabice pro p-set sedm. 781 00:36:14,150 --> 00:36:18,280 Toto je tabulka s zřejmě alespoň tři sloupce, z nichž jeden je 782 00:36:18,280 --> 00:36:21,450 uživatelské jméno, z nichž jeden je hash, a z nichž druhý je ID. 783 00:36:21,450 --> 00:36:26,200 >> Ale zajímavá věc, a jen proto, aby škádlit se jednu myšlenku tady, uživatelské jméno 784 00:36:26,200 --> 00:36:29,270 je pravděpodobně již unikátní, že jo? 785 00:36:29,270 --> 00:36:31,190 Myslím, že většinu jakékoliv webové stránky, pokud Máte-uživatelské jméno, tam 786 00:36:31,190 --> 00:36:32,370 nemohou být dva Caesars. 787 00:36:32,370 --> 00:36:33,440 Nemůže být dva Malans. 788 00:36:33,440 --> 00:36:34,950 Nemůže být 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čném případě, že nevíte, která jharvard to vlastně je. 791 00:36:38,610 --> 00:36:42,710 Takže to, co by mohlo být motivací pro i s třetí sloupec vlevo 792 00:36:42,710 --> 00:36:46,970 existuje tzv. ID, který vypadá jako číslo, které je podobně jedinečný? 793 00:36:46,970 --> 00:36:51,300 Je toho názoru, trochu redundantní se mi na první pohled. 794 00:36:51,300 --> 00:36:54,910 Proč by mohlo být přesvědčivé, aby se nejen unikátní uživatelská jména, 795 00:36:54,910 --> 00:36:56,837 ale také jedinečná čísla? 796 00:36:56,837 --> 00:36:59,460 >> DIVÁKŮ: Mohli mít stejné heslo. 797 00:36:59,460 --> 00:37:01,720 >> DAVID Malan: Lidé mohou mít stejné heslo, jistě. 798 00:37:01,720 --> 00:37:03,900 To by mohlo naprosto stalo. 799 00:37:03,900 --> 00:37:08,270 Ale pokud mají tuto jedinečnou uživatelské jméno, jsem by mohl namítnout, že není opravdu 800 00:37:08,270 --> 00:37:11,630 záležitost, protože kdyby zadejte své uživatelské jméno, jen musím zkontrolovat jejich 801 00:37:11,630 --> 00:37:15,060 heslo, jejich hash z nich. 802 00:37:15,060 --> 00:37:15,970 Proč jinak? 803 00:37:15,970 --> 00:37:17,950 >> DIVÁKŮ: Rychlejší vyhledávání. 804 00:37:17,950 --> 00:37:18,680 >> DAVID Malan: Rychlejší vyhledávání. 805 00:37:18,680 --> 00:37:19,548 Proč? 806 00:37:19,548 --> 00:37:21,460 >> DIVÁKŮ: ID je jen jeden. 807 00:37:21,460 --> 00:37:24,040 >> DAVID Malan: ID je jen jeden znak, nebo přesněji řečeno, je to číslo, 808 00:37:24,040 --> 00:37:26,910 takže je to asi 32 bitů nebo něco takového. 809 00:37:26,910 --> 00:37:30,270 Vzhledem k tomu, uživatelské jméno, zřejmě Jason Hirschhorn je tam je trochu 810 00:37:30,270 --> 00:37:33,900 směšně dlouhý, a bude to se mi mnohem více času na řetězec 811 00:37:33,900 --> 00:37:40,910 porovnat H-I-R-S-C-H-H-O-R-N, a možná / 0, nebo něco takového, aby 812 00:37:40,910 --> 00:37:45,100 vyhledat Jasona, jak protilehlý k jen řekl mi dát uživatelské číslo dvě. 813 00:37:45,100 --> 00:37:46,510 To je 32 bitů. 814 00:37:46,510 --> 00:37:48,550 Je to jediný INT, že Máte k porovnání. 815 00:37:48,550 --> 00:37:52,150 A vskutku, to je přesně důvod, proč databáze mají tendenci přiřadit jedinečné identifikátory, aby 816 00:37:52,150 --> 00:37:53,710 řádky v nich. 817 00:37:53,710 --> 00:37:56,280 >> A teď, co ostatní datové typy jsou tam Kromě INT a zřejmě 818 00:37:56,280 --> 00:37:57,160 řetězce, jako je tento? 819 00:37:57,160 --> 00:37:59,700 No, abych byl vhodnější, SQL databází, jako je 820 00:37:59,700 --> 00:38:02,060 MySQL, mají CHAR pole. 821 00:38:02,060 --> 00:38:05,320 A CHAR trochu zavádějícím není jediný CHAR. 822 00:38:05,320 --> 00:38:10,290 CHAR pole v databázi MySQL je jeden nebo více znaků, ale je to 823 00:38:10,290 --> 00:38:11,780 pevný počet znaků. 824 00:38:11,780 --> 00:38:15,710 >> Tak například, když jsem přejít na phpMyAdmin, jak jste již možná, nebo 825 00:38:15,710 --> 00:38:21,340 brzy bude problém nastavit sedm, a já jdu do mé databáze, a jen tak pro zábavu, 826 00:38:21,340 --> 00:38:25,700 pojďme vytvořit novou tabulku s názvem test s pouze dvěma sloupy. 827 00:38:25,700 --> 00:38:27,160 Budu klepněte na tlačítko Přejít. 828 00:38:27,160 --> 00:38:30,070 A to se stane poměrně známé, zejména pokud si pohrát 829 00:38:30,070 --> 00:38:31,130 asi na vlastní pěst. 830 00:38:31,130 --> 00:38:34,140 Tady bych mohl zadat ID vytvořit nová tabulka typu INT. 831 00:38:34,140 --> 00:38:37,770 Ale tady jsem mohl zadat uživatelské jméno znovu, že dřívější tabulky. 832 00:38:37,770 --> 00:38:40,700 A všimněte si, mám spoustu typů z čeho vybírat. 833 00:38:40,700 --> 00:38:43,610 >> A to i proto phpMyAdmin je docela hezký. 834 00:38:43,610 --> 00:38:46,770 Je to druh self-učení v tom, že může jen tak bod a klepněte na tlačítko, a 835 00:38:46,770 --> 00:38:50,730 podívejte se na rozevíracích nabídek, a vyvodit z že to, co síly SQL vám dává. 836 00:38:50,730 --> 00:38:54,090 >> A skutečně, když se rozhodnu CHAR, jsem pak je třeba zadat délku, nebo jak 837 00:38:54,090 --> 00:38:55,940 mnoho hodnot, kolik znaků. 838 00:38:55,940 --> 00:39:00,090 Takže velmi běžné hodnoty, jsou věci jako 255, ale to je trochu dlouho. 839 00:39:00,090 --> 00:39:02,250 Běžně je osm na uživatelské jméno. 840 00:39:02,250 --> 00:39:03,590 Ale to je trochu malá v těchto dnech. 841 00:39:03,590 --> 00:39:05,430 Tak to je rozhodnutí designu. 842 00:39:05,430 --> 00:39:08,630 Je to maximálně 8 znaků, 32, 255, 1000? 843 00:39:08,630 --> 00:39:09,830 Je to opravdu jen 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 příliš málo a jste trochu šroubované, pokud chcete delší jméno. 846 00:39:16,420 --> 00:39:19,132 Vyberte si příliš mnoho, a to, co je nevýhoda? 847 00:39:19,132 --> 00:39:20,820 >> DIVÁKŮ: [neslyšitelné]. 848 00:39:20,820 --> 00:39:21,620 >> DAVID Malan: Je to plýtvání. 849 00:39:21,620 --> 00:39:24,835 Stejně jako v C, pokud máte větší kus paměti, než budete potřebovat, budete 850 00:39:24,835 --> 00:39:27,190 jen ztrácíš čas a plýtváte diskovým prostorem. 851 00:39:27,190 --> 00:39:31,430 Tak jako alternativa, existuje VARCHAR, který řeší tento problém tím, že 852 00:39:31,430 --> 00:39:36,390 léčení délku ne jako pevnou délkou, ale jako maximální délku, a pomocí 853 00:39:36,390 --> 00:39:40,990 proměnlivý počet znaků, který pak inklinuje používat pouze jako mnoho připálí jako vy 854 00:39:40,990 --> 00:39:42,710 skutečně potřebují. 855 00:39:42,710 --> 00:39:43,670 To zní skvěle. 856 00:39:43,670 --> 00:39:45,640 >> Proč bychom se zbavit CHAR typ dat a pak? 857 00:39:45,640 --> 00:39:48,500 Co by mohlo být nevýhodou pomocí VARCHARs, který zní 858 00:39:48,500 --> 00:39:51,644 jako by to bylo hezké vyhrát? 859 00:39:51,644 --> 00:39:52,596 Jo? 860 00:39:52,596 --> 00:39:53,846 >> DIVÁKŮ: [neslyšitelné]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> DAVID Malan: OK, dobře. 863 00:39:57,790 --> 00:40:01,101 Takže pokud všechna vaše data je stejný délka, co je to starost? 864 00:40:01,101 --> 00:40:05,250 >> DIVÁKŮ: Vzhledem k tomu, ztrácíte údaje podle nich všechno říkat. 865 00:40:05,250 --> 00:40:09,060 >> DAVID Malan: Takže pokud všechny vaše data je stejné délky, i když já bych tvrdit, 866 00:40:09,060 --> 00:40:12,300 že určení maximální délku na VARCHAR se nijak neliší od 867 00:40:12,300 --> 00:40:16,070 určení pevné délky na CHAR-li Víte, že číslo v předstihu. 868 00:40:16,070 --> 00:40:19,500 Ale tam je opravdu, a já budu trochu extrakt z této odpovědi realitu 869 00:40:19,500 --> 00:40:22,610 že je tu ještě max, které by mohly být nepříjemné, zvláště pokud se 870 00:40:22,610 --> 00:40:25,920 narazíte na jméno osoby, která je neobvykle dlouho, že ne 871 00:40:25,920 --> 00:40:26,860 předvídat. 872 00:40:26,860 --> 00:40:31,420 A je to také o něco méně efektivní skutečně hledat na VARCHARs jako 873 00:40:31,420 --> 00:40:35,620 na rozdíl od vyhledávacích znaků, a to zejména na dlouhých stolů, které mají hodně a 874 00:40:35,620 --> 00:40:36,510 velké množství dat. 875 00:40:36,510 --> 00:40:40,060 Takže i zde, tematické je opět no jasná volba. 876 00:40:40,060 --> 00:40:42,870 >> Takže stačí, aby vám smysl pro jiné datové typy, které by mohly být zajímavé 877 00:40:42,870 --> 00:40:45,400 a to buď pro p-set sedm nebo budoucnost, je tu INT. 878 00:40:45,400 --> 00:40:47,270 K dispozici je BIGINT, které je jako long long. 879 00:40:47,270 --> 00:40:48,880 To inklinuje být 64 bitů. 880 00:40:48,880 --> 00:40:51,640 K dispozici je DECIMAL, které uvidíte v Problém set, což je mnohem 881 00:40:51,640 --> 00:40:55,300 čistič odpovědí na problémy, se se setkal s plovákem a plovoucí 882 00:40:55,300 --> 00:40:55,980 bod nepřesnosti. 883 00:40:55,980 --> 00:40:57,390 A pak je tu DATETIME. 884 00:40:57,390 --> 00:41:01,530 Tam je doslova datový typ, který má vypadat jako rok, měsíc, den, 885 00:41:01,530 --> 00:41:03,730 a hodiny, minuty a sekundy. 886 00:41:03,730 --> 00:41:07,470 >> Ale SQL databáze také věci, zavoláme indexy. 887 00:41:07,470 --> 00:41:11,630 A index je něco, co zadejte při vytváření tabulky 888 00:41:11,630 --> 00:41:15,720 aby vyhledávání a další operace účinnější. 889 00:41:15,720 --> 00:41:18,550 Konkrétně, je tu něco, co nazývá primární index, který by mohl 890 00:41:18,550 --> 00:41:19,440 deklarovat takto. 891 00:41:19,440 --> 00:41:22,330 >> Udělali jsme to za vás Uživatelé stůl dáme vám. 892 00:41:22,330 --> 00:41:26,160 Ale všimněte kdybych ručně obnovovat Tabulka uživatelé zde dává 893 00:41:26,160 --> 00:41:27,110 je jméno uživatele. 894 00:41:27,110 --> 00:41:28,125 Už jsem je uvedeno ID. 895 00:41:28,125 --> 00:41:29,330 I podle INT. 896 00:41:29,330 --> 00:41:32,000 Specifikovány jsem uživatelské jméno s maximálně 32 znaků. 897 00:41:32,000 --> 00:41:36,140 Ale pokud budeme držet rolování v tomto poměrně široké okno, upozornění, že je 898 00:41:36,140 --> 00:41:38,260 spoustu dalších věcí, které jsem si určíte. 899 00:41:38,260 --> 00:41:40,950 >> Jeden, mohu nastavit atributy jako, víš co, to 900 00:41:40,950 --> 00:41:42,190 INT by měla být UNSIGNED. 901 00:41:42,190 --> 00:41:45,510 Nechci záporná čísla, tak se pojďme dělat to UNSIGNED. 902 00:41:45,510 --> 00:41:48,660 Null není relevantní, protože Já chci, aby každý uživatel 903 00:41:48,660 --> 00:41:49,640 má jedinečné číslo. 904 00:41:49,640 --> 00:41:50,830 Nechci, aby to bylo null. 905 00:41:50,830 --> 00:41:52,330 >> Ale to je zajímavé. 906 00:41:52,330 --> 00:41:57,780 Mohu určit, že ID je buď primární klíč této databáze, nebo je to 907 00:41:57,780 --> 00:42:00,620 Unikátní, nebo je to indexovaný, nebo celý text. 908 00:42:00,620 --> 00:42:05,630 Takže pro dnešní účely, dlouhý příběh Stručně řečeno, primární znamená, že musí 909 00:42:05,630 --> 00:42:10,570 být jak koncepčně a technicky pole, které se používají pro jednoznačnou 910 00:42:10,570 --> 00:42:12,140 identifikaci uživatele. 911 00:42:12,140 --> 00:42:16,140 >> Takže když se podíváme do uživatelů, je to druh o slibu je vyhledat větš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áze zajistí, že pokud mají uživatelské číslo 3, nemůžete 914 00:42:21,930 --> 00:42:25,400 fyzicky vložit další uživatele se stejným číslem 3. 915 00:42:25,400 --> 00:42:28,380 Databáze bude prostě odmítne uložte změny. 916 00:42:28,380 --> 00:42:32,310 Což je dobrá věc, protože můžete chránit před sebe. já 917 00:42:32,310 --> 00:42:34,270 >> Alternativně, pro uživatelské jméno. 918 00:42:34,270 --> 00:42:37,670 Takže druhá řada, vyvolání, je uživatelské jméno pole. 919 00:42:37,670 --> 00:42:41,860 Takže druhý řádek je zde uživatelské jméno, jak jsme se tam daleko vlevo. 920 00:42:41,860 --> 00:42:43,940 >> Takže co jiného bych mohl chtít specifikovat? 921 00:42:43,940 --> 00:42:47,840 Nesmím, podle SQL, specifikovat dva primární klíče. 922 00:42:47,840 --> 00:42:50,750 můžete určit společný klíč, kde se podívejte se na obou polích, ale nemohou 923 00:42:50,750 --> 00:42:52,260 individuálně být primární klíče. 924 00:42:52,260 --> 00:42:54,750 Takže to nepřipadá v úvahu. 925 00:42:54,750 --> 00:42:56,040 Takže, které by mohly chci vybrat? 926 00:42:56,040 --> 00:42:59,710 >> No, UNIQUE je podobný v duchu, aby primární klíč, kde zadáte tento 927 00:42:59,710 --> 00:43:03,570 pole musí být jedinečné, ale je to nebude jedním 928 00:43:03,570 --> 00:43:04,410 I používat po celou dobu. 929 00:43:04,410 --> 00:43:08,450 A my nebudeme používat tuhle všechny Doba jakého důvodu znovu? 930 00:43:08,450 --> 00:43:10,490 Je to pomalejší, případně pokud je to dlouhý uživatelské jméno. 931 00:43:10,490 --> 00:43:11,740 Je to jen ztráta času. 932 00:43:11,740 --> 00:43:16,140 >> INDEX, mezitím, uvádí, že je to nebude jedinečná, ale rád bych 933 00:43:16,140 --> 00:43:19,470 vám umožní pracovat své kouzlo pod kapuce, aby to rychleji, abych 934 00:43:19,470 --> 00:43:21,420 hledat v této oblasti. 935 00:43:21,420 --> 00:43:23,320 Takže to asi není relevantní. 936 00:43:23,320 --> 00:43:26,500 Pro uživatelským jménem, ​​já tvrdím, že UNIKÁTNÍ je dobrá odpověď. 937 00:43:26,500 --> 00:43:31,200 Ale předpokládám, že jsme uživatelům více zajímavější než jen uživatelská jména, 938 00:43:31,200 --> 00:43:32,430 hashe, a identifikační čísla. 939 00:43:32,430 --> 00:43:33,860 Co kdyby jsme dali lidem celá jména? 940 00:43:33,860 --> 00:43:37,700 Co kdybychom jim dali adresy a další údaje o nich? 941 00:43:37,700 --> 00:43:43,360 >> No, pokud zadáte, že sloupec Databáze je indexována, to znamená, že 942 00:43:43,360 --> 00:43:47,730 MySQL nebo Oracle, nebo cokoliv databáze , kterou používáte, by měl fungovat její kouzlo 943 00:43:47,730 --> 00:43:51,300 a používat nějaký druh fantazie dat strukturu jako strom, nebo trie, nebo 944 00:43:51,300 --> 00:43:55,940 hash tabulky, nebo něco k zajištění že při hledání dat pomocí 945 00:43:55,940 --> 00:43:58,150 vyberte v daném poli - 946 00:43:58,150 --> 00:44:01,310 jako mi ukázat všem, ž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 Pokud jste zadali předem, že Chcete-index na tomto poli, 949 00:44:06,250 --> 00:44:09,050 vyhledávání bude mnohem, mnohem rychleji. 950 00:44:09,050 --> 00:44:12,090 >> Pokud nezadáte index, nejlepší můžete udělat, je lineární hledání, pokud 951 00:44:12,090 --> 00:44:13,030 to není seřazena. 952 00:44:13,030 --> 00:44:16,220 Ale pokud zadáte INDEX, smart lidé, kteří se do databáze - 953 00:44:16,220 --> 00:44:19,340 lidé jako vy, kteří nyní vědí, stromy a pokusy a hashovací tabulky - 954 00:44:19,340 --> 00:44:23,220 automaticky vytvořit takové údaje struktura v paměti RAM, aby se ujistil, že 955 00:44:23,220 --> 00:44:26,050 tyto prohlídky jsou mnohem rychlejší. 956 00:44:26,050 --> 00:44:29,660 >> FULLTEXT zatím je podobný v duchu, ale umožňuje udělat zástupný znak 957 00:44:29,660 --> 00:44:35,480 vyhledávání, stejně jako mi ukázat všem, že žije na ulicích, které začínají 958 00:44:35,480 --> 00:44:36,960 písmeno O jakéhokoli důvodu. 959 00:44:36,960 --> 00:44:38,850 Můžete to udělat zástupné vyhledávání takhle. 960 00:44:38,850 --> 00:44:45,880 Nebo, více závažné věci, jako je představení mi každý, kdo má slovo - 961 00:44:45,880 --> 00:44:49,400 Ukaž mi všechny, jejichž název začíná se zvláštním dopisem. 962 00:44:49,400 --> 00:44:51,880 Můžete vyhledávat klíčová slova tímto způsobem. 963 00:44:51,880 --> 00:44:52,630 Dobrá. 964 00:44:52,630 --> 00:44:55,760 >> Takže, design příležitosti tam potenciálně. 965 00:44:55,760 --> 00:44:57,740 Tam jsou jiní, že budu vlna ruce na. 966 00:44:57,740 --> 00:45:00,530 Ukazuje se, že můžete mít různé ukládací motory. 967 00:45:00,530 --> 00:45:04,390 A to je více tajemný, než potřebujeme Určitě na problém nastavit sedm. 968 00:45:04,390 --> 00:45:06,920 Ve výchozím nastavení je vy používáte něco, co nazývá InnoDB. 969 00:45:06,920 --> 00:45:10,910 Uvidíte zmínku o tomto někde v rozhraní phpMyAdmin je s největší pravděpodobností. 970 00:45:10,910 --> 00:45:14,130 Ale vím, že existují i ​​jiné konstrukce rozhodnutí, která mají potenciál 971 00:45:14,130 --> 00:45:18,030 zájem přijít finální projekty, pokud děláte něco webový. 972 00:45:18,030 --> 00:45:19,330 >> Ale pojďme na to. 973 00:45:19,330 --> 00:45:23,130 Pojďme do toho a dát na to Obrazovka jako ukázku pro příběh 974 00:45:23,130 --> 00:45:26,330 zahrnující vás, spolubydlící, a sklenici mléka. 975 00:45:26,330 --> 00:45:28,240 Pojďme se dvě minuty nebo tak zlomit zde. 976 00:45:28,240 --> 00:45:31,060 A pokud můžete držet kolem, pojďme zpět, podívejte se trochu na SQL, a 977 00:45:31,060 --> 00:45:35,160 pak trochu JavaScriptu se p-set osm v mysli. 978 00:45:35,160 --> 00:45:36,120 >> Dobrá. 979 00:45:36,120 --> 00:45:40,420 Takže, pojďme si myslet rohový případ, který může velmi snadno vzniknout 980 00:45:40,420 --> 00:45:44,240 v souvislosti s pomocí databáze, nebo Upřímně řečeno, i za použití skutečných světových věci 981 00:45:44,240 --> 00:45:46,280 jako bankomaty získat peníze. 982 00:45:46,280 --> 00:45:47,640 Tak tady je lednička. 983 00:45:47,640 --> 00:45:50,040 Předpokládejme, že máte taky v Váš koleji nebo váš dům. 984 00:45:50,040 --> 00:45:54,990 A máte jednu spolubydlící, a to jak z se vám líbí mléko například. 985 00:45:54,990 --> 00:45:57,210 >> Takže jste přišel domů ze třídy jeden den. 986 00:45:57,210 --> 00:45:58,490 On nebo ona ještě není zpátky. 987 00:45:58,490 --> 00:45:59,180 Otevřete ledničku. 988 00:45:59,180 --> 00:46:00,870 Opravdu chceš velkou sklenici mléka. 989 00:46:00,870 --> 00:46:01,820 Není mléko. 990 00:46:01,820 --> 00:46:02,920 Takže to, co děláte? 991 00:46:02,920 --> 00:46:03,840 Můžete zavřete ledničku. 992 00:46:03,840 --> 00:46:04,670 Můžete chytit klíče. 993 00:46:04,670 --> 00:46:05,930 Jdete ven na náměstí. 994 00:46:05,930 --> 00:46:09,240 A máte ve frontě na CVS na ty, vlastní pokladní věci, které vždy 995 00:46:09,240 --> 00:46:11,180 trvat déle, než ve skutečnosti s pokladní. 996 00:46:11,180 --> 00:46:11,820 Tak či onak. 997 00:46:11,820 --> 00:46:15,490 >> Takže, zatím, dot dot dot, vaše spolubydlící přijde domů a on nebo ona 998 00:46:15,490 --> 00:46:17,440 Podobně má touhu pro trochu mléka. 999 00:46:17,440 --> 00:46:20,380 Takže on nebo ona otevře ledničku, vypadá uvnitř, a oh, sakra. 1000 00:46:20,380 --> 00:46:21,160 Žádné mléko. 1001 00:46:21,160 --> 00:46:24,750 Takže on nebo ona jde ven, stane se jít na druhou CVS, který byl jen 1002 00:46:24,750 --> 00:46:27,900 blok pryč z nějakého důvodu, a to ani ona se dostane do souladu se koupit nějaké mléko. 1003 00:46:27,900 --> 00:46:30,480 >> Mezitím, přijdete domů, on nebo ona přijde domů, a co dělat, 1004 00:46:30,480 --> 00:46:31,980 budete nakonec mít? 1005 00:46:31,980 --> 00:46:33,080 Dvakrát tolik mléka. 1006 00:46:33,080 --> 00:46:34,620 Ale nemáte opravdu rád mléko, které hodně. 1007 00:46:34,620 --> 00:46:37,300 Takže teď máte tolik mléka, že nyní jedním z nich je právě jít kyselé 1008 00:46:37,300 --> 00:46:37,820 nakonec. 1009 00:46:37,820 --> 00:46:39,370 Tak tohle je opravdu špatný problém. 1010 00:46:39,370 --> 00:46:39,900 Je to tak? 1011 00:46:39,900 --> 00:46:41,990 >> Tak co se stalo? 1012 00:46:41,990 --> 00:46:44,810 Takže v podstatě, je to druh ze směšné příklad. 1013 00:46:44,810 --> 00:46:48,580 Ale pod kapotou, to, co jsme měli stát, zde je jak vás zkontrolovat 1014 00:46:48,580 --> 00:46:52,390 stav nějakého kusu paměti, lednička. 1015 00:46:52,390 --> 00:46:54,420 Oba vás zkontrolovat stav nějaké proměnné. 1016 00:46:54,420 --> 00:46:57,360 Oba došli k závěru , který pak jednal dál. 1017 00:46:57,360 --> 00:47:01,420 Ale bohužel, zatímco váš spolubydlící byl v obchodě, stav, který 1018 00:47:01,420 --> 00:47:05,670 Proměnná změnila, on nebo ona se vrátila a nyní chce změnit stav, ale 1019 00:47:05,670 --> 00:47:07,480 to již bylo změněno na něm nebo ní. 1020 00:47:07,480 --> 00:47:11,120 A samozřejmě by se on nebo ona nemá šel do obchodu, pokud věděli, 1021 00:47:11,120 --> 00:47:13,010 že jste již na cestě. 1022 00:47:13,010 --> 00:47:16,430 >> Takže v reálném světě, jak jsi mohl se tomuto problému vyhnout, za předpokladu, že máte 1023 00:47:16,430 --> 00:47:18,940 lednička, budete mít spolubydlící, a vlastně rádi mléko? 1024 00:47:18,940 --> 00:47:19,760 >> DIVÁKŮ: Komunikace. 1025 00:47:19,760 --> 00:47:20,580 >> DAVID Malan: Komunikace. 1026 00:47:20,580 --> 00:47:21,160 OK. 1027 00:47:21,160 --> 00:47:22,500 Ale jak můžete komunikovat? 1028 00:47:22,500 --> 00:47:23,990 >> DIVÁKŮ: Nechte poznámku. 1029 00:47:23,990 --> 00:47:25,480 >> DAVID Malan: Zanechat vzkaz, že jo? 1030 00:47:25,480 --> 00:47:28,025 Vždy nechte poznámku, pro fanoušci přehlídky. 1031 00:47:28,025 --> 00:47:31,580 Dobře, takže vždy zanechat vzkaz, nebo dát opravdu jako visací zámek, nebo tak něco 1032 00:47:31,580 --> 00:47:35,440 na lednici, která udržuje vaše spolubydlící z kontroly stavu 1033 00:47:35,440 --> 00:47:36,540 tato proměnná. 1034 00:47:36,540 --> 00:47:40,800 >> A teď, proč by to mohlo být relevantní k problém nastavit sedm, nebo do bankomatů. 1035 00:47:40,800 --> 00:47:46,780 No, představte si svět, v bankomatu, kde byste měli být schopni jít až do bankomatu 1036 00:47:46,780 --> 00:47:48,920 stroje zde, a další zde ATM. 1037 00:47:48,920 --> 00:47:50,680 A to se stává docela často. 1038 00:47:50,680 --> 00:47:54,150 A předpokládejme, že měl dvě ATM karty, které je možno získat. 1039 00:47:54,150 --> 00:47:57,420 A se přihlásit do obou strojích účinně současně, doufejme, že 1040 00:47:57,420 --> 00:47:58,660 zatímco nikdo nedívá. 1041 00:47:58,660 --> 00:48:01,260 A pak zadáte PIN zhruba současně. 1042 00:48:01,260 --> 00:48:06,280 A pak děláte dotaz bilance vidět, kolik peněz máte. 1043 00:48:06,280 --> 00:48:08,920 A řekněme, že máte 100 dolarů vlevo na vašem účtu. 1044 00:48:08,920 --> 00:48:13,310 Takže v podstatě současně, můžete řekl jeden, nula, nula, zadejte. 1045 00:48:13,310 --> 00:48:16,000 A doufejme, že se vrátit nějaké peníze. 1046 00:48:16,000 --> 00:48:18,440 >> Ale kolik peněz můžete dostat zpět? 1047 00:48:18,440 --> 00:48:21,710 Nyní počítače na konci dne, zvláště když mluvíte 1048 00:48:21,710 --> 00:48:27,360 servery, nemusí nutně dělat věci, v pořadí, které se očekává. 1049 00:48:27,360 --> 00:48:30,860 >> Takže předpokládat, co se stane, protože bez ohledu na síť rychlost otázky tam 1050 00:48:30,860 --> 00:48:34,530 jsou, nebo problémy CPU existují, nebo něco takového, předpokládám, že 1051 00:48:34,530 --> 00:48:38,530 První bankomat zkontroluje rovnováhu a vidí, oh, má tato osoba 100 dolarů. 1052 00:48:38,530 --> 00:48:41,840 Ale pak dostane roztržitý, protože možná zálohování se děje, a tak je to 1053 00:48:41,840 --> 00:48:42,500 zpomaluje. 1054 00:48:42,500 --> 00:48:45,080 Nebo snad při kontrole, sítě Připojení mám trochu pomalejší, protože 1055 00:48:45,080 --> 00:48:45,910 to se prostě stává. 1056 00:48:45,910 --> 00:48:47,100 Jsou to fyzická zařízení. 1057 00:48:47,100 --> 00:48:49,330 Tak zatím, druhý bankomat je ptá stejnou otázku. 1058 00:48:49,330 --> 00:48:53,030 Kolik peněz se David má? 100 dolarů je odpověď. 1059 00:48:53,030 --> 00:48:58,930 Ale protože první bankomat dosud není zpráva odeslána odečíst $ 100, a to jak 1060 00:48:58,930 --> 00:49:03,000 Bankomaty jsou kontrolovány trezoru banky, vidět, že je to 100 dolarů tam, a teď 1061 00:49:03,000 --> 00:49:07,160 Oba stroje jsou potenciálně jít vyplivnout odpověď. 1062 00:49:07,160 --> 00:49:12,240 >> Nyní, to je skvělé pro vás v určitém smyslu jestli to, co banka dělá nakonec 1063 00:49:12,240 --> 00:49:17,200 je změnit výši minus 100 o nastavení proměnné rovná vaší 1064 00:49:17,200 --> 00:49:21,570 bankovní účet rovna 0, na rozdíl od dělat minus 100.. 1065 00:49:21,570 --> 00:49:24,410 Nyní, v nejhorším případě pro banku - 1066 00:49:24,410 --> 00:49:27,470 nebo v nejlepším pro banku, zatím, dávají 200 dolarů, a 1067 00:49:27,470 --> 00:49:31,690 váš bankovní účet nyní ukazuje negativní 100 dolarů, což opravdu není 1068 00:49:31,690 --> 00:49:32,950 přínosem pro vás vůbec. 1069 00:49:32,950 --> 00:49:36,500 Ale jde o to, že tento závod Podmínkou pro dva spolubydlící dostat 1070 00:49:36,500 --> 00:49:40,660 mléko, nebo pro dva bankomaty, kteří se snaží získat hotovost a změnit stav klenby 1071 00:49:40,660 --> 00:49:44,510 současně existují nějaké když budete mít databázi. 1072 00:49:44,510 --> 00:49:48,290 >> Nyní v problému nastavit sedm tato otázka vyvstává v tom smyslu, že pokud si koupíte 1073 00:49:48,290 --> 00:49:52,110 Podíl Facebooku skladem, a pak na instance můžete koupit druhý díl 1074 00:49:52,110 --> 00:49:55,160 Facebook skladem, budete muset provést rozhodnutí jako programátor. 1075 00:49:55,160 --> 00:49:58,710 Aby bylo možné rozhodnout, jak aktualizovat databáze, kurzy se budete 1076 00:49:58,710 --> 00:50:02,250 má jeden řádek pro tuto populaci, a to je jeden způsob, jak to provést. 1077 00:50:02,250 --> 00:50:06,640 A budeš mít jednu akcii FB, což je jejich burzovní symbol 1078 00:50:06,640 --> 00:50:10,120 Pro tuto uživatelské jméno, nebo tohoto uživatele ID, jedinečný identifikátor. 1079 00:50:10,120 --> 00:50:12,340 >> Ale stejný příběh se může stát zde. 1080 00:50:12,340 --> 00:50:15,800 Pokud si vyberete v SQL, jak uvidíte v problému nastavit sedm, když vidíte, 1081 00:50:15,800 --> 00:50:18,460 oh, David má jeden akcí Facebook skladem. 1082 00:50:18,460 --> 00:50:23,240 Dovolte mi, abych se změnit to být dvě akce, proto, že chce koupit 1083 00:50:23,240 --> 00:50:24,120 Druhý podíl. 1084 00:50:24,120 --> 00:50:27,860 Ale předpokládejme, že David vlastně měl dva okna prohlížeče otevřete, nebo předpokládat, že 1085 00:50:27,860 --> 00:50:32,150 je to společný účet se dvěma manželi, a oba se snaží plnit 1086 00:50:32,150 --> 00:50:36,770 stejná operace, tam taky, existuje potenciál pro rozhodnutí bylo 1087 00:50:36,770 --> 00:50:39,670 provedena na základě předchozího stav světa - 1088 00:50:39,670 --> 00:50:41,290 účet má jednu share - 1089 00:50:41,290 --> 00:50:45,630 a oba lidé, nebo oba servery, nyní zkuste říci, zvýšit ji na dva podíly. 1090 00:50:45,630 --> 00:50:49,020 Ale v tomto případě, možná jste nabitá mi peníze na obou akcií, ale 1091 00:50:49,020 --> 00:50:50,830 zvýší jenom jednou. 1092 00:50:50,830 --> 00:50:54,730 >> Takže ve zkratce, zásadní problém zde, stejně jako u vtipu o odchodu 1093 00:50:54,730 --> 00:50:58,750 Upozorňujeme, nebo uvedení visací zámek na něm, je pokud dva lidé, nebo dva závity - 1094 00:50:58,750 --> 00:50:59,930 myslíte, že zpět do nuly - 1095 00:50:59,930 --> 00:51:03,220 můžete zkontrolovat stav nějaké proměnné a pak zkuste změnit tuto proměnnou, 1096 00:51:03,220 --> 00:51:07,950 ale tyto dvě věci se nedějí na Zároveň ale může dostat přerušen 1097 00:51:07,950 --> 00:51:11,500 ostatní, co se děje, údaje může dostat do velmi podivné stavu. 1098 00:51:11,500 --> 00:51:15,450 A můžete využít, nebo můžete trpět ve smyslu peněžního příkladu. 1099 00:51:15,450 --> 00:51:18,110 >> Takže problém nastavit sedm, my vám tento jeden řádek kódu, který dlouhá 1100 00:51:18,110 --> 00:51:21,000 Stručně řečeno, tento problém řeší problém v MySQL. 1101 00:51:21,000 --> 00:51:24,950 Jedná se o velmi dlouhé instrukce, která není ještě vejde do jednoho řádku na 1102 00:51:24,950 --> 00:51:30,370 screen zde zajišťuje, že váš provoz je to, co se říká atomová. 1103 00:51:30,370 --> 00:51:33,720 To vše se děje najednou, nebo to nestane vůbec. 1104 00:51:33,720 --> 00:51:37,530 Jedná se o velmi dlouhou frázi nelze se přeruší částečně. 1105 00:51:37,530 --> 00:51:39,840 >> A to, co dělá, je doslova to, co říká. 1106 00:51:39,840 --> 00:51:44,200 Vložit do nějaké tabulky následující tři pole tyto specifické hodnoty, 1107 00:51:44,200 --> 00:51:47,280 ale duplicitní klíč, nedělají vložku. 1108 00:51:47,280 --> 00:51:48,280 Proveďte aktualizaci. 1109 00:51:48,280 --> 00:51:52,450 Takže je to jako dělat SELECT a INSERT tak říkajíc ve stejnou dobu. 1110 00:51:52,450 --> 00:51:55,150 A co je klíčem, který je pravděpodobně bytí odkazovalo se na tady? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> Ukazuje se, a uvidíte to v problém nastavit sedm je spec, protože 1113 00:52:01,380 --> 00:52:06,040 jsme tam prohlásila, že je jedinečný klíč Na tomto stole tak, že 1114 00:52:06,040 --> 00:52:08,480 nemůžete mít více řádků pro stejného uživatele s 1115 00:52:08,480 --> 00:52:10,150 Totéž penny stock symbol - 1116 00:52:10,150 --> 00:52:13,780 V tomto příkladu zde, DVN.V je hloupý cent populace, která se 1117 00:52:13,780 --> 00:52:14,980 naleznete v spec. 1118 00:52:14,980 --> 00:52:17,860 Vzhledem k tomu, že jsme prohlásil, že je jedinečný, co to znamená, že pokud vám 1119 00:52:17,860 --> 00:52:23,580 pokusu o vložení duplicitní řádek, jste místo toho bude ji aktualizovat, aniž by 1120 00:52:23,580 --> 00:52:27,020 někdo jiný má šanci na změnu stav světa a to buď. 1121 00:52:27,020 --> 00:52:29,400 Takže ve zkratce, což zajišťuje věci jsou atomické. 1122 00:52:29,400 --> 00:52:32,530 >> Obecněji však, databáze jako je MySQL - 1123 00:52:32,530 --> 00:52:35,460 a nemusíte tuto funkci pro p-set sedm, ale mějte na paměti, pro 1124 00:52:35,460 --> 00:52:36,200 budoucnost - 1125 00:52:36,200 --> 00:52:38,870 podporu, co se nazývá transakce, kde si můžete říct, 1126 00:52:38,870 --> 00:52:40,990 START TRANSACTION doslova. 1127 00:52:40,990 --> 00:52:43,270 Pak můžete spustit dva SQL příkazy. 1128 00:52:43,270 --> 00:52:45,710 A SQL, jak uvidíte v p-set sedm, vypadá trochu 1129 00:52:45,710 --> 00:52:46,750 něco takového. 1130 00:52:46,750 --> 00:52:48,820 Aktualizovat tabulku s názvem účtu. 1131 00:52:48,820 --> 00:52:52,550 Nastavte vyvážení sloupec rovnající se bez ohledu na Sloupec Zůstatek v současné době 1132 00:52:52,550 --> 00:52:57,280 je minus 1000, kdy je počet, číslo účtu, stejně jako ID uživatele, 1133 00:52:57,280 --> 00:53:00,830 se rovná 2, a pak aktualizovat Účet dot dot dot. 1134 00:53:00,830 --> 00:53:04,350 >> Takže laicky řečeno, co tyto dva dotazy Zdá se, že dělat v 1135 00:53:04,350 --> 00:53:05,840 reálný svět smysl bankovnictví? 1136 00:53:05,840 --> 00:53:07,440 >> DIVÁKŮ: Přenos k úsporám. 1137 00:53:07,440 --> 00:53:08,020 >> DAVID Malan: Přesně tak. 1138 00:53:08,020 --> 00:53:10,470 Převod peněžních prostředků z jednoho účtu na druhý. 1139 00:53:10,470 --> 00:53:14,400 A to je další příklad, kde se Opravdu chcete tyto dvě věci se stane 1140 00:53:14,400 --> 00:53:15,570 nebo nestane. 1141 00:53:15,570 --> 00:53:18,880 Nechcete něco dostat do prostřední z nich a potenciálně zkazit 1142 00:53:18,880 --> 00:53:22,220 matematika, nebo zkazit, kolik peněz máte, nebo kolik 1143 00:53:22,220 --> 00:53:23,170 Peníze banka. 1144 00:53:23,170 --> 00:53:26,890 Takže to, co je opravdu pěkné o transakcích v MySQL je, že, a 1145 00:53:26,890 --> 00:53:30,160 databáze obecněji, je to, že a chytří lidé, kteří si realizované 1146 00:53:30,160 --> 00:53:33,670 Tyto funkce přijít na to, jak se dělá Ujistěte se, že oba z těchto věcí se stalo 1147 00:53:33,670 --> 00:53:35,120 nebo vůbec ne. 1148 00:53:35,120 --> 00:53:38,580 >> A pokud jste skutečně ucházejí, aby webové stránky, které je používají lidé na 1149 00:53:38,580 --> 00:53:41,490 kampus, lidé v reálném světě, dělá něco ve smyslu uvedení do provozu, 1150 00:53:41,490 --> 00:53:43,300 jedná se o druhy Rozhodnutí design, který 1151 00:53:43,300 --> 00:53:45,020 stávají stále tak důležité. 1152 00:53:45,020 --> 00:53:48,240 V opačném případě, začnete ztrácet data ztratit Uživatelé, nebo v nejhorším případě jako 1153 00:53:48,240 --> 00:53:51,800 jsme zde viděli, potenciálně přijít o peníze. 1154 00:53:51,800 --> 00:53:56,180 Takže znovu, o tom více v problému nastavení sedm, stejně jako možná pro některé 1155 00:53:56,180 --> 00:53:57,530 jste v závěrečných prací. 1156 00:53:57,530 --> 00:54:01,870 >> Takže změňme ten obraz jsme měli před chvílí jen v jedné další cestě. 1157 00:54:01,870 --> 00:54:04,070 Dovolte mi tedy skutečně vidět, jestli můžu - 1158 00:54:04,070 --> 00:54:06,030 Ne, že je pryč. 1159 00:54:06,030 --> 00:54:06,690 Tady to je. 1160 00:54:06,690 --> 00:54:09,020 >> Tak tohle je místo, kde jsme opustili minule. 1161 00:54:09,020 --> 00:54:12,390 A ukázalo se, že budeme hodit ještě jedna věc, do mixu zde - 1162 00:54:12,390 --> 00:54:14,510 jazyk volal JavaScript. 1163 00:54:14,510 --> 00:54:18,060 Takže JavaScript ve skutečnosti odpovídá do tohoto kusu - 1164 00:54:18,060 --> 00:54:22,086 a já jsem docela dostatek místa, takže se není v měřítku. 1165 00:54:22,086 --> 00:54:23,900 OK, to je opravdu ubohé. 1166 00:54:23,900 --> 00:54:27,075 OK, takže to JavaScript. 1167 00:54:27,075 --> 00:54:27,340 Dobrá. 1168 00:54:27,340 --> 00:54:28,760 Jsem opravdu dělat to medvědí 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 další programovací jazyk, a naše poslední, jestli to pomůže 1171 00:54:34,790 --> 00:54:37,770 ujistit, že to není o mnoho víc z požárních hydrantů zde. 1172 00:54:37,770 --> 00:54:41,100 Takže JavaScript je interpretovaný jazyk, což znamená, že ne 1173 00:54:41,100 --> 00:54:42,670 zkompilovat do nul a jedniček. 1174 00:54:42,670 --> 00:54:43,690 Stačí jej spustit. 1175 00:54:43,690 --> 00:54:47,680 Ale to, co je zásadně odlišná s JavaScript je obvykle, že vám 1176 00:54:47,680 --> 00:54:49,815 neběží to na vašem webovém serveru. 1177 00:54:49,815 --> 00:54:52,570 Není se spustit v Přístroj sám o sobě. 1178 00:54:52,570 --> 00:54:57,490 Spíše to stáhne uživatel přes HTTP do svého prohlížeče - 1179 00:54:57,490 --> 00:55:00,260 Chrome, Safari, Internet Explorer, Firefox, cokoliv - 1180 00:55:00,260 --> 00:55:03,860 a to je prohlížeč, který vykonává toto zejména programovací jazyk. 1181 00:55:03,860 --> 00:55:08,000 >> Takže aby bylo jasno, PHP dosud bylo provedeny buď na příkazovém řádku 1182 00:55:08,000 --> 00:55:11,290 naše černé a bílé okno, na serveru stejně jako zařízení, počítačové 1183 00:55:11,290 --> 00:55:14,490 Líbí se spotřebič, nebo to bylo provedený webový server 1184 00:55:14,490 --> 00:55:15,860 běžící na počítači. 1185 00:55:15,860 --> 00:55:20,490 Ale téma je, že PHP tak daleko byl proveden na straně serveru, tak 1186 00:55:20,490 --> 00:55:24,820 uživatel a prohlížeč uživatele nikdy nevidí řádek PHP kódu. 1187 00:55:24,820 --> 00:55:28,530 >> Ve skutečnosti, pokud jste někdy otevřít prohlížeč pro vaše webové stránky nebo jiný a vy 1188 00:55:28,530 --> 00:55:32,400 skutečně vidět PHP kód v okně, někdo zvoral. 1189 00:55:32,400 --> 00:55:34,950 Vzhledem k tomu, že to nemá být poslal do prohlížeče přímo. 1190 00:55:34,950 --> 00:55:38,150 Má to být provedeny a obrátil se do něčeho, jako je HTML. 1191 00:55:38,150 --> 00:55:40,120 >> Ale JavaScript je v podstatě opak. 1192 00:55:40,120 --> 00:55:44,350 Je určen pro běh typicky uvnitř okna prohlížeče uživatele. 1193 00:55:44,350 --> 00:55:46,840 A jaké druhy webových stránek používat JavaScript pak v těchto dnech? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> Jako doslova každý oblíbených webových stránek. 1196 00:55:52,180 --> 00:55:55,430 Každé webové stránky, které vy nejspíš používat denně používat JavaScript pro 1197 00:55:55,430 --> 00:55:57,330 Nejjednodušší a dokonce sexy vlastnosti. 1198 00:55:57,330 --> 00:55:59,800 >> Takže něco jako Facebook Chat pokud používáte to. 1199 00:55:59,800 --> 00:56:01,040 Jak to vlastně funguje? 1200 00:56:01,040 --> 00:56:05,090 No tak daleko, všechny věci máme udělat s HTML a PHP se předpokládá, že 1201 00:56:05,090 --> 00:56:08,750 můžete vytáhnout URL, a stiskněte klávesu Enter, a vidíte nějaký obsah HTML. 1202 00:56:08,750 --> 00:56:11,970 A kliknete na odkaz, který změní URL, změní stránku, a znovu načte 1203 00:56:11,970 --> 00:56:12,740 nějaký nový obsah. 1204 00:56:12,740 --> 00:56:16,340 Klepněte na jinou adresu, nebo odeslat formulář, musíte se bleskurychle na jinou stránku a 1205 00:56:16,340 --> 00:56:17,420 Vidíte nějaký nový obsah. 1206 00:56:17,420 --> 00:56:22,710 >> Ale pomocí něco jako Facebook Chat, nebo Gchat, nebo Google Maps, zřídka 1207 00:56:22,710 --> 00:56:27,350 se celá stránka aktualizovat tak, aby uvidíte bílou obrazovku okamžik a 1208 00:56:27,350 --> 00:56:28,470 pak nový obsah. 1209 00:56:28,470 --> 00:56:32,610 Spíše, webové stránky jsou dnes dynamicky stále znovu aktualizován a 1210 00:56:32,610 --> 00:56:35,570 znovu a znovu všechno nějak ze zákulisí. 1211 00:56:35,570 --> 00:56:38,560 A ukázalo se, že když jdou na něco jako Facebook, nebo Gchat, 1212 00:56:38,560 --> 00:56:43,050 nebo Gmail a aktualizace stránek automaticky, bez překládky 1213 00:56:43,050 --> 00:56:47,630 Celá obrazovka, co se stalo, je, že Váš prohlížeč má z trochu tajně 1214 00:56:47,630 --> 00:56:49,410 další požadavky HTTP - 1215 00:56:49,410 --> 00:56:52,740 ne celých webových stránek, ale jen pro malé kousky dat, jako jsou 1216 00:56:52,740 --> 00:56:55,740 rychlé zprávy, že váš přítel právě poslal vás, nebo aktualizaci stavu, který 1217 00:56:55,740 --> 00:56:58,210 někdo, nebo tweet poslal že někdo poslal. 1218 00:56:58,210 --> 00:57:02,120 Je to prostě dělat malé požadavky na dat, a pak pomocí JavaScriptu, tento 1219 00:57:02,120 --> 00:57:06,370 programovací jazyk, změnit to, co webová stránka vypadá bez 1220 00:57:06,370 --> 00:57:09,860 Server pomáhají, bez serveru generování tento HTML. 1221 00:57:09,860 --> 00:57:13,820 >> Takže ve zkratce, JavaScript může být použit a pak nejen načíst nová data z 1222 00:57:13,820 --> 00:57:16,750 serveru bez překládky celek stránky nebo odeslání formuláře. 1223 00:57:16,750 --> 00:57:20,060 To může být také použit ke změně tzv. DOM - 1224 00:57:20,060 --> 00:57:21,520 Document Object Model - 1225 00:57:21,520 --> 00:57:24,620 který je jen fantazie způsob, jak říká strom HTML 1226 00:57:24,620 --> 00:57:26,220 že jsme viděli minule. 1227 00:57:26,220 --> 00:57:31,640 >> Takže ujistit, JavaScript je syntakticky tak podobný C i. 1228 00:57:31,640 --> 00:57:32,820 Není hlavní funkce. 1229 00:57:32,820 --> 00:57:35,430 Stačí začít psát kód a to bude vykonán, nebo 1230 00:57:35,430 --> 00:57:36,900 vykládat správně. 1231 00:57:36,900 --> 00:57:38,660 Podmínky budou vypadat takto. 1232 00:57:38,660 --> 00:57:41,230 Se nijak neliší od C nebo PHP na to přijde. 1233 00:57:41,230 --> 00:57:43,890 Booleovské výrazy nebo-ed spolu bude vypadat takto. 1234 00:57:43,890 --> 00:57:45,590 Anded spolu vypadat takto. 1235 00:57:45,590 --> 00:57:47,750 >> Spínače bude vypadat takto. 1236 00:57:47,750 --> 00:57:49,440 Pro smyčky bude vypadat takto. 1237 00:57:49,440 --> 00:57:51,060 Zatímco smyčky bude vypadat takto. 1238 00:57:51,060 --> 00:57:53,316 Do while bude vypadat 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 postavit per se, ale tento konstrukt 1241 00:57:58,753 --> 00:58:03,870 pro variabilní i v poli, a i v tomto Případ se hodnota indexu. 1242 00:58:03,870 --> 00:58:06,880 Takže je to trochu odlišné od foreach, ale nové verze 1243 00:58:06,880 --> 00:58:10,280 JavaScript je coming out po celou dobu, takže i tato funkce jazyka 1244 00:58:10,280 --> 00:58:10,880 se vyvíjejí. 1245 00:58:10,880 --> 00:58:16,920 >> A jako stranou, JavaScript těchto dnech může být také použit na serveru, stejně jako 1246 00:58:16,920 --> 00:58:19,920 PHP pomocí rámce s názvem Node.js. 1247 00:58:19,920 --> 00:58:24,670 Jeden z CS50 je TFs, Kevin, vedlo seminář o Node.js, že je k dispozici 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 pokud jste zvědaví, vím, že vám lze použít na straně serveru, jak to 1250 00:58:28,830 --> 00:58:33,870 dobře, ale to je poměrně nedávný trend, ale mocný na to. 1251 00:58:33,870 --> 00:58:35,270 >> To je trochu jiný. 1252 00:58:35,270 --> 00:58:37,910 To je pole v JavaScriptu. 1253 00:58:37,910 --> 00:58:40,115 A co udeří vás, jak různé ve srovnání s C nebo PHP? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 Existuje několik rychlých příběhů můžeme říci zde. 1256 00:58:47,420 --> 00:58:49,367 Co chybí ve srovnání s PHP? 1257 00:58:49,367 --> 00:58:51,652 >> DIVÁKŮ: [neslyšitelné]. 1258 00:58:51,652 --> 00:58:52,110 >> DAVID Malan: Ano? 1259 00:58:52,110 --> 00:58:53,322 Omlouváme se, ještě jednou? 1260 00:58:53,322 --> 00:58:54,740 >> DIVÁKŮ: Není vyhlášení typ proměnné. 1261 00:58:54,740 --> 00:58:56,390 >> DAVID Malan: Nejsme vyhlášení typ proměnné. 1262 00:58:56,390 --> 00:58:59,630 Takže vlastně docela jako PHP, nejsme uvede typy této proměnné. 1263 00:58:59,630 --> 00:59:02,670 Spíše jsme více druhově říká var pro proměnné. 1264 00:59:02,670 --> 00:59:06,690 Nemáme PHP obtěžování znak dolaru, což při únavné 1265 00:59:06,690 --> 00:59:09,160 typ, to aby se více zřejmé, že něco, co je variabilní. 1266 00:59:09,160 --> 00:59:11,830 Zatímco tady, jsme trochu zpět do C je přístup jen o volání 1267 00:59:11,830 --> 00:59:14,500 proměnná názvem chceme dát to, jako čísla. 1268 00:59:14,500 --> 00:59:17,170 A také jako PHP, máme hranaté závorky pro 1269 00:59:17,170 --> 00:59:19,170 hodnoty uvnitř tohoto pole. 1270 00:59:19,170 --> 00:59:22,490 >> Takže proměnné v JavaScriptu i může vypadat například takto. 1271 00:59:22,490 --> 00:59:26,900 Všimněte si, to je řetězec s názvem s, ale stejně máme neurčeno 1272 00:59:26,900 --> 00:59:28,750 že je to řetězec. 1273 00:59:28,750 --> 00:59:33,160 Zde však je funkce, která není existují v přesně stejným způsobem v PHP, 1274 00:59:33,160 --> 00:59:34,460 ale trochu podobně. 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 jsou trochu Swiss Army Nůž na datové struktury v tom, že 1277 00:59:42,110 --> 00:59:43,900 lze použít pro libovolný počet věcí. 1278 00:59:43,900 --> 00:59:46,860 >> Zde, například, budeme deklarovat proměnná s názvem citace. 1279 00:59:46,860 --> 00:59:49,110 Typ této proměnné je objekt. 1280 00:59:49,110 --> 00:59:53,550 Můžete myslet na to jako C struct že má klíče a hodnoty. 1281 00:59:53,550 --> 00:59:55,250 Symbol je klíč. 1282 00:59:55,250 --> 00:59:57,350 FB je hodnota, zřejmě symbol stock. 1283 00:59:57,350 --> 00:59:57,930 Čárka. 1284 00:59:57,930 --> 01:00:02,180 Cena je dalším klíčovým, a jeho hodnota je zřejmě s plovoucí desetinnou čárkou, nebo 1285 01:00:02,180 --> 01:00:06,510 číslo obecněji v JavaScript, na 49,26 dolarů. 1286 01:00:06,510 --> 01:00:09,030 >> Takže PHP nemá - 1287 01:00:09,030 --> 01:00:12,980 jsme neviděli v PHP objekty zcela takhle, ale my jsme vidět analogové, 1288 01:00:12,980 --> 01:00:14,093 který byl, co? 1289 01:00:14,093 --> 01:00:14,980 >> DIVÁKŮ: [neslyšitelné]. 1290 01:00:14,980 --> 01:00:16,110 >> DAVID Malan: Asociativní pole. 1291 01:00:16,110 --> 01:00:19,990 Takže zatímco PHP má asociativní pole jehož syntax je někdy mírně tak 1292 01:00:19,990 --> 01:00:20,370 různé - 1293 01:00:20,370 --> 01:00:21,780 jsme viděli hranaté závorky. 1294 01:00:21,780 --> 01:00:23,860 Viděli jsme podivné šipky symboly. 1295 01:00:23,860 --> 01:00:27,330 JavaScript musí objektů, ale je to především sémantické rozdíly a 1296 01:00:27,330 --> 01:00:29,260 jiný synonymem pro tuto chvíli. 1297 01:00:29,260 --> 01:00:35,060 Nicméně, jak stranou, PHP také objekty, a to způsobem, který Java a další 1298 01:00:35,060 --> 01:00:37,810 jazyky mají objekty objektově orientované programování. 1299 01:00:37,810 --> 01:00:40,440 Ale budeme používat to jen Pro datové typy pro teď. 1300 01:00:40,440 --> 01:00:42,170 Objekty a asociativní pole. 1301 01:00:42,170 --> 01:00:44,140 >> To by se dalo dělat, že trochu jasnější. 1302 01:00:44,140 --> 01:00:45,890 Zde je důvod, proč je užitečný objekt. 1303 01:00:45,890 --> 01:00:48,760 Chcete-li deklarovat studenta, jako Zamyla, můžeme skutečně 1304 01:00:48,760 --> 01:00:52,630 zapouzdřit tak říkajíc uvnitř, které objekt pomocí složených závorek, stejně jako 1305 01:00:52,630 --> 01:00:55,060 před celým svazkem klíčů a hodnoty zde. 1306 01:00:55,060 --> 01:00:59,150 Máme ID, dům, a název Zamyla, následuje středník jako 1307 01:00:59,150 --> 01:01:00,690 obvykle na konci. 1308 01:01:00,690 --> 01:01:04,840 >> Tady dole také, což je o něco odlišné, ale i velmi silný 1309 01:01:04,840 --> 01:01:05,690 v těchto dnech. 1310 01:01:05,690 --> 01:01:08,780 Zde je pole, a já vím, že proto, tam je hranatá závorka up 1311 01:01:08,780 --> 01:01:11,090 Horní a hranatá závorka ve spodní části. 1312 01:01:11,090 --> 01:01:16,050 A to je pole, jaká data napište zřejmě v JavaScriptu? 1313 01:01:16,050 --> 01:01:21,260 To je řada z nich vypadá jako tři objekty. 1314 01:01:21,260 --> 01:01:24,580 A já vím, že je to jen objekt protože složených závorek. 1315 01:01:24,580 --> 01:01:28,760 A všimněte si, že je otevřený složená závorka, některé věci, blízko složená závorka, čárka, 1316 01:01:28,760 --> 01:01:31,180 pak ještě víc, čárka, a pak ještě víc. 1317 01:01:31,180 --> 01:01:33,800 Tak to je tři argumenty odděleny dvěma čárkami. 1318 01:01:33,800 --> 01:01:36,810 >> Tak tohle je pole ze tří objektů. 1319 01:01:36,810 --> 01:01:39,940 A každý z těchto objektů, se zdá, že je student nebo zaměstnancem některých 1320 01:01:39,940 --> 01:01:42,370 třídění, každý s ID, dům, a jméno. 1321 01:01:42,370 --> 01:01:45,060 Ale já jsem to nazval něco 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 dat, který skutečně Je to velmi populární a ve 1324 01:01:52,060 --> 01:01:55,100 móda v těchto dnech, že pokud píšete aplikace, která používá Facebook 1325 01:01:55,100 --> 01:01:59,150 API, Twitter API, opravdu téměř jakékoliv API tam v těchto dnech, 1326 01:01:59,150 --> 01:02:02,820 včetně některých CS50 vlastní, Údaje se vrátíš není 1327 01:02:02,820 --> 01:02:04,720 old school formát CSV. 1328 01:02:04,720 --> 01:02:06,780 >> Vzhledem k tomu, že odvolání CSV je velmi jednoduchá. 1329 01:02:06,780 --> 01:02:10,230 Je to jen sloupce oddělené čárkou. 1330 01:02:10,230 --> 01:02:13,190 JSON dat vám dává další metadata. 1331 01:02:13,190 --> 01:02:17,800 Sdružuje klíč s každou hodnotou, aby nemají jen předpokládat, že 1332 01:02:17,800 --> 01:02:22,460 nultý sloupec je jedna hodnota, sloupec z nich je jiný, sloupec dvě další. 1333 01:02:22,460 --> 01:02:26,790 Vše, co se v objektu JSON zde je něco self-popisovat, protože každý 1334 01:02:26,790 --> 01:02:30,940 jedním z jmen v tomto souboru má doslova jméno před ním jako 1335 01:02:30,940 --> 01:02:32,510 řetězec v uvozovkách. 1336 01:02:32,510 --> 01:02:34,950 >> Takže pojďme se podívat na Pár příkladů zde. 1337 01:02:34,950 --> 01:02:36,800 Nech mě jít do přístroje. 1338 01:02:36,800 --> 01:02:41,000 A nech mě jít do naší VHOST adresář na veřejnosti. 1339 01:02:41,000 --> 01:02:45,590 A dovolte mi jít do JavaScript adresář. 1340 01:02:45,590 --> 01:02:49,610 A pojďme do toho a otevřít dom-0.html, kde DOM prostě 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, věci, na které Jsem se zmínil již dříve. 1343 01:02:53,490 --> 01:02:54,950 >> A dovolte mi navrhnout následující. 1344 01:02:54,950 --> 01:02:57,720 Zde je webová stránka, jejíž Tělo je poměrně jednoduchý. 1345 01:02:57,720 --> 01:03:00,170 Tak zde se na dně, Všiml jsem si formu. 1346 01:03:00,170 --> 01:03:01,500 Už jsme viděli ty. 1347 01:03:01,500 --> 01:03:07,600 To má dva vstupy, z nichž jeden má ID jména, z nichž jeden je typu 1348 01:03:07,600 --> 01:03:09,830 předložit, a první něčí typ textu. 1349 01:03:09,830 --> 01:03:11,900 Takže to vlastně zní docela jednoduché. 1350 01:03:11,900 --> 01:03:13,090 >> Pojďme sem. 1351 01:03:13,090 --> 01:03:15,390 Vraťme se na tuto stránku zde. 1352 01:03:15,390 --> 01:03:21,030 Pojďme na localhost, a jít do náš adresář JavaScript, a jít do 1353 01:03:21,030 --> 01:03:24,640 dom-0, a tady máme tento formulář. 1354 01:03:24,640 --> 01:03:26,550 Tak to je zřejmě vše Tato stránka nemá. 1355 01:03:26,550 --> 01:03:28,740 Má název pole, se tlačítko Odeslat. 1356 01:03:28,740 --> 01:03:30,340 Ale já nebudu používat PHP zde. 1357 01:03:30,340 --> 01:03:34,310 Budu dělat vše straně klienta tak říkajíc v JavaScriptu takto. 1358 01:03:34,310 --> 01:03:39,100 >> Všimněte si, že jsem se opravdu dostal jméno Pole tohoto vstupu jedinečný 1359 01:03:39,100 --> 01:03:42,350 identifikátor, který bude skutečně dej mi nějaký čas na chvíli. 1360 01:03:42,350 --> 01:03:45,480 A všimněte si, co jsem představil další tag v hlavě mé webové 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 smyslu, že JavaScript je programovací jazyk na straně klienta. 1363 01:03:50,120 --> 01:03:55,020 V tomto případě, stejně jako CSS, jsem dal je přímo uvnitř mého HTML. 1364 01:03:55,020 --> 01:03:58,810 Ale nevšimla jsem deklaroval funkci že vypadá trochu jako PHP 1365 01:03:58,810 --> 01:04:01,530 syntakticky, ale je to ve skutečnosti JavaScript, protože opět, je to 1366 01:04:01,530 --> 01:04:03,920 na straně klienta v prohlížeči. 1367 01:04:03,920 --> 01:04:07,590 A hádejte, co je to chystá ano, i když některé syntaxe 1368 01:04:07,590 --> 01:04:09,338 Zde je nový. 1369 01:04:09,338 --> 01:04:11,760 >> DIVÁKŮ: Pozdravuj kdokoli. 1370 01:04:11,760 --> 01:04:14,020 >> DAVID Malan: Bude to pozdravit každému, kdo navštíví tuto stránku. 1371 01:04:14,020 --> 01:04:15,120 Tak jak? 1372 01:04:15,120 --> 01:04:18,070 >> Takže všimnete, že se ukáže v JavaScriptu tam je upozornění function (). 1373 01:04:18,070 --> 01:04:22,840 To je velmi jakési smutné funkce, které opravdu jen inklinuje k obtěžovat uživatele. 1374 01:04:22,840 --> 01:04:25,440 Není to jeden, měli byste opravdu používat obvykle, ale je to rychlé a špinavé 1375 01:04:25,440 --> 01:04:27,710 způsob, druh tisku něco s grafickým uživatelským 1376 01:04:27,710 --> 01:04:29,180 rozhraní, jako prohlížeče. 1377 01:04:29,180 --> 01:04:31,400 Všimněte si, že mám řetězec v apostrofech. 1378 01:04:31,400 --> 01:04:36,010 Ukazuje se, že na rozdíl od C JavaScript může mít ve skutečnosti použít jeden 1379 01:04:36,010 --> 01:04:38,730 cituje, a upřímně řečeno, je to jen trochu o stylistické konvence mezi 1380 01:04:38,730 --> 01:04:41,180 JavaScript programátory použít apostrofy. 1381 01:04:41,180 --> 01:04:43,750 PHP, ale ve skutečnosti mají mírně jiný význam. 1382 01:04:43,750 --> 01:04:45,810 Ale teď, jen vím, že To je jediný důvod. 1383 01:04:45,810 --> 01:04:49,270 Konvence v JavaScriptu je často použít apostrofy, ale můžeme použít 1384 01:04:49,270 --> 01:04:50,950 dvojité uvozovky v obou místech stejně. 1385 01:04:50,950 --> 01:04:52,610 >> Tak to je zajímavé. 1386 01:04:52,610 --> 01:04:56,430 Připomeňme si poslední čas, který jsme měli, že obraz na obrazovce, který kreslil strom 1387 01:04:56,430 --> 01:04:59,720 kde jste měli uzel HTML, a hlava uzel a uzel těla, 1388 01:04:59,720 --> 01:05:00,800 a pak nějaký text. 1389 01:05:00,800 --> 01:05:04,700 Ale byl tam jeden speciální uzel na velmi top, který jsem nazval dokument. 1390 01:05:04,700 --> 01:05:08,260 No, ukázalo se, v JavaScriptu, jakékoliv čas si napsat program v JavaScriptu 1391 01:05:08,260 --> 01:05:11,040 v prohlížeči, máte přístup k speciální globální proměnné. 1392 01:05:11,040 --> 01:05:14,130 Podobné duchem PHP superglobálních, tahle se jmenuje v 1393 01:05:14,130 --> 01:05:16,050 vše malými písmeny dokument. 1394 01:05:16,050 --> 01:05:21,480 >> Je to jako struct, ale to struct Má také funkce uvnitř ní. 1395 01:05:21,480 --> 01:05:23,790 Takže C struct má jen údaje obvykle. 1396 01:05:23,790 --> 01:05:29,060 Ale objekt JavaScript, protože to technicky je také funkce, 1397 01:05:29,060 --> 01:05:31,830 jinak známý jako způsob, uvnitř ní. 1398 01:05:31,830 --> 01:05:35,750 A můžete volat funkci uvnitř tento objekt doslova dělá svou 1399 01:05:35,750 --> 01:05:39,610 název, tečka, a pak název funkce, nebo také metoda. 1400 01:05:39,610 --> 01:05:41,160 Je to jen synonymum, opravdu. 1401 01:05:41,160 --> 01:05:42,450 >> A co tato funkce dělat? 1402 01:05:42,450 --> 01:05:43,840 Můžete trochu hádat z názvu. 1403 01:05:43,840 --> 01:05:45,590 Získat element podle ID. 1404 01:05:45,590 --> 01:05:50,040 Takže to bude prohledávat webové stránky, hledat ten strom, hledali 1405 01:05:50,040 --> 01:05:55,210 bez ohledu na uzel, AKA element, má Unikátní ID citátem konec citátu jméno. 1406 01:05:55,210 --> 01:05:56,560 A pak to, co mám dělat? 1407 01:05:56,560 --> 01:06:00,350 Chystám se získat hodnotu uvnitř že uzel ve stromu, a jdu 1408 01:06:00,350 --> 01:06:02,580 nějak pozdravit tímto jménem. 1409 01:06:02,580 --> 01:06:05,360 >> Tak se hádat, i když máme ne viděl ještě, co dělat, a 1410 01:06:05,360 --> 01:06:07,396 symboly znamenají tady a tady asi? 1411 01:06:07,396 --> 01:06:08,230 >> DIVÁKŮ: Zřetězit. 1412 01:06:08,230 --> 01:06:09,220 >> DAVID Malan: Zřetězit. 1413 01:06:09,220 --> 01:06:11,290 Správně, a to jsou jen druh navrhnout rozhodnutí 1414 01:06:11,290 --> 01:06:12,280 lid před lety. 1415 01:06:12,280 --> 01:06:15,190 V PHP můžete zřetězit věci s tečkami. 1416 01:06:15,190 --> 01:06:18,800 V jazyce C, budete skákat přes několik obručí a volání funkce, jako je strCopyDatabaseOK () nebo 1417 01:06:18,800 --> 01:06:20,600 strcat () nebo jiné podobné funkce. 1418 01:06:20,600 --> 01:06:22,060 Ale v JavaScriptu, můžete použít plusy. 1419 01:06:22,060 --> 01:06:24,770 Takže je to jen zřetězení tři řetězce - 1420 01:06:24,770 --> 01:06:27,850 ahoj, jméno, a pak vykřičník. 1421 01:06:27,850 --> 01:06:30,390 >> Takže, kdy a proč je tato funkce volal i když? 1422 01:06:30,390 --> 01:06:33,150 No, hádat z HTML v dolní části. 1423 01:06:33,150 --> 01:06:35,810 Proč se pozdravit () volána, nebo kdy? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> Zdá se, že jak nejlépe mohu říct, na podat, je-li předložen tento formulář, 1426 01:06:44,030 --> 01:06:47,200 Budu dělat vše, co je uvnitř těchto uvozovek. 1427 01:06:47,200 --> 01:06:50,900 A konkrétně, jdu volat pozdravit () a pak se vrátit false. 1428 01:06:50,900 --> 01:06:53,090 >> Dobře, pojďme se podívat, co je čistá účinek je zde jako první. 1429 01:06:53,090 --> 01:06:58,290 Tak mě nech jít dopředu a zadejte v, řekněme, Loren, Odeslat. 1430 01:06:58,290 --> 01:06:59,440 Ahoj Loren. 1431 01:06:59,440 --> 01:07:02,990 Pojďme se podívat, jestli by to bylo jen štěstí implementace. 1432 01:07:02,990 --> 01:07:03,200 Ne. 1433 01:07:03,200 --> 01:07:05,990 Takže je to psaní se bez ohledu na jméno vlastně jsem tam dal. 1434 01:07:05,990 --> 01:07:07,970 >> Ale všimněte, co se nemění. 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 Není register.php. 1437 01:07:11,820 --> 01:07:13,110 Neexistuje žádný druhý soubor. 1438 01:07:13,110 --> 01:07:14,930 Tam je žádná akce atribut. 1439 01:07:14,930 --> 01:07:19,720 Takže co je to return false pravděpodobně dělat? 1440 01:07:19,720 --> 01:07:23,660 Proč jsem volání pozdravit () a poté vrací false asi? 1441 01:07:23,660 --> 01:07:26,420 Co se obvykle stane, když klepnete na tlačítko Odeslat na formuláři, který ještě máme 1442 01:07:26,420 --> 01:07:27,854 viděl v minulém týdnu? 1443 01:07:27,854 --> 01:07:29,900 >> DIVÁKŮ: [neslyšitelné]. 1444 01:07:29,900 --> 01:07:30,860 >> DAVID Malan: Jde to někde, že jo? 1445 01:07:30,860 --> 01:07:32,720 Jde do určité cílové adresy URL. 1446 01:07:32,720 --> 01:07:34,120 Ale já nechci aby se to stalo tady. 1447 01:07:34,120 --> 01:07:37,620 Chci webové stránky, aby se zcela dynamický, jako je Gmail, kde kdysi, kterou jste 1448 01:07:37,620 --> 01:07:38,650 tam, zůstaň tam. 1449 01:07:38,650 --> 01:07:42,900 URL nezmění způsobem, který označuje celá stránka je překládce. 1450 01:07:42,900 --> 01:07:46,680 Spíše, jen chci něco změnit jako je tisk na něco 1451 01:07:46,680 --> 01:07:48,320 tady na obrazovce. 1452 01:07:48,320 --> 01:07:49,630 >> No dovolte mi uklidit to až trochu. 1453 01:07:49,630 --> 01:07:55,370 Dovolte mi, abych otevřít ne dom-0, ale dovolte mi, abych otevřela dom-2. 1454 01:07:55,370 --> 01:07:57,350 Jen aby jste viděli nějaké syntaxe zde. 1455 01:07:57,350 --> 01:08:02,080 >> Ukazuje se, že to, co jsme právě se používá syrové JavaScript. 1456 01:08:02,080 --> 01:08:04,420 Tak tohle je opravdu jazyk JavaScript. 1457 01:08:04,420 --> 01:08:07,340 Někteří z vás možná vědí o knihovna s názvem jQuery. 1458 01:08:07,340 --> 01:08:09,980 >> Takže jQuery není totéž věc jako JavaScript. 1459 01:08:09,980 --> 01:08:14,110 Je to jen knihovna, která opravdu chytrý kluk napsal a propagován jako 1460 01:08:14,110 --> 01:08:18,100 že téměř všichni na světě nyní používá jQuery při používání JavaScript. 1461 01:08:18,100 --> 01:08:20,890 A na první pohled, upřímně, to Vypadá trochu záhadné. 1462 01:08:20,890 --> 01:08:24,990 Ale zjistíte, zvláště pokud jdete tam pro konečného projektu s webu 1463 01:08:24,990 --> 01:08:29,029 vývoj, zjistíte, že tento čistí věci a ušetří docela 1464 01:08:29,029 --> 01:08:30,229 pár řádků kódu. 1465 01:08:30,229 --> 01:08:33,189 >> Takže řekněme, pohled na to, jak Tato forma je v pořádku. 1466 01:08:33,189 --> 01:08:35,664 Všimněte si, co jsem odstranit zřejmě z mého HTML? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 Není na předložení handler abych tak řekl. 1469 01:08:40,630 --> 01:08:41,470 Neexistuje žádný atribut. 1470 01:08:41,470 --> 01:08:43,359 Protože víte, co Nechtěl jsem opravdu rád? 1471 01:08:43,359 --> 01:08:45,640 Měl jsem pocit, jako bychom padali do starých kolejí tam. 1472 01:08:45,640 --> 01:08:49,340 Stejně jako, že se začíná cítit nedbalý se prolínají i CSS se 1473 01:08:49,340 --> 01:08:52,149 HTML, protože jste trochu házení různých jazyků po celém 1474 01:08:52,149 --> 01:08:56,180 místo, podobně jako se to začít cítit jako špatné silnici jít dolů, kde 1475 01:08:56,180 --> 01:09:01,069 Dávám kód JavaScript uvnitř mého HTML spíše než factoring to. 1476 01:09:01,069 --> 01:09:02,279 >> Tak to je ponaučení. 1477 01:09:02,279 --> 01:09:05,080 V dom-2.html, jsem factoring to. 1478 01:09:05,080 --> 01:09:07,399 A já jsem něco dělal věci jinak. 1479 01:09:07,399 --> 01:09:09,630 Pro teď, budu mávat ruce na to, co to vlastně dělá 1480 01:09:09,630 --> 01:09:10,590 pod kapotou. 1481 01:09:10,590 --> 01:09:14,210 Ale právě teď předpokládat, že první řádek kódu v této knihovně 1482 01:09:14,210 --> 01:09:18,170 s názvem jQuery právě znamená, že když Dokument je připraven, proveďte následující kroky. 1483 01:09:18,170 --> 01:09:20,080 >> Vzhledem k tomu, webové stránky mohou mít nějaký čas k načtení. 1484 01:09:20,080 --> 01:09:23,029 Ty by mohly být na pomalém internetu spojení, a to by mohlo být předení 1485 01:09:23,029 --> 01:09:25,290 a točí, a nakonec je nabitá. 1486 01:09:25,290 --> 01:09:29,060 To řádek kódu jen říká, počkejte, dokud Celá stránka je připravena, dokument 1487 01:09:29,060 --> 01:09:31,189 je připraven, před spuštěním tohoto kódu. 1488 01:09:31,189 --> 01:09:34,390 >> A teď všimnete, je to pravděpodobně nejužitečnější první 1489 01:09:34,390 --> 01:09:36,189 odnést z jQuery. 1490 01:09:36,189 --> 01:09:42,140 Tato linka je zde velmi podobný v duchu k tomuto mnohem delší linky zde. 1491 01:09:42,140 --> 01:09:46,920 Zatímco v surovém kódu JavaScript, tam existuje dokument globální objekt, který 1492 01:09:46,920 --> 01:09:50,460 má funkci nazvanou getElementById (), lidé, kteří psali 1493 01:09:50,460 --> 01:09:55,720 jQuery zjednodušený, že jen říct, znak dolaru, a pak se uvnitř 1494 01:09:55,720 --> 01:10:00,250 závorky dát dvě citace, a pak vložit symbol hash následuje 1495 01:10:00,250 --> 01:10:02,250 jedinečný identifikátor, který chcete chytit. 1496 01:10:02,250 --> 01:10:06,170 Tak to je ekvivalentní document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> Mezitím,. Podat jen znamená, že na podání bez ohledu na formu, že jste 1498 01:10:11,090 --> 01:10:14,240 s odkazem na vlevo, jděte dopředu a spustit to. 1499 01:10:14,240 --> 01:10:16,600 Ale to je teď zvědavost příliš. 1500 01:10:16,600 --> 01:10:19,560 Co je to divné, co Já jsem tady zdůraznil? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 Nejen, že druh syntakticky nové, je tu také něco chybí. 1503 01:10:28,594 --> 01:10:29,558 >> DIVÁKŮ: Je to jen volaná funkce? 1504 01:10:29,558 --> 01:10:31,970 Není to nazývá varování? 1505 01:10:31,970 --> 01:10:32,440 >> DAVID Malan: Jo. 1506 01:10:32,440 --> 01:10:35,450 No, tak alert () je dole zde, abychom byli spravedliví. 1507 01:10:35,450 --> 01:10:39,520 Ale není tam žádná zmínka o jméno, jako víte, foo nebo 1508 01:10:39,520 --> 01:10:40,980 něco, co se tady. 1509 01:10:40,980 --> 01:10:43,830 A skutečně, to je jeden z prvků, JavaScript, který je zcela 1510 01:10:43,830 --> 01:10:45,370 silný, ale také zcela nové. 1511 01:10:45,370 --> 01:10:47,460 A PHP vlastně je to stejně. 1512 01:10:47,460 --> 01:10:49,500 >> Nech mě jít dál a dělat něco opravdu rychle. 1513 01:10:49,500 --> 01:10:52,030 Nech mě jít dopředu a dát to sem. 1514 01:10:52,030 --> 01:10:52,600 Nech mě to udělat. 1515 01:10:52,600 --> 01:10:53,690 Funkce. 1516 01:10:53,690 --> 01:10:56,455 Říkejme toto zpracování (). 1517 01:10:56,455 --> 01:10:58,290 Funkce handler, abych tak řekl. 1518 01:10:58,290 --> 01:11:00,110 Něco, co se zabývá nějakou operaci. 1519 01:11:00,110 --> 01:11:02,700 Dovolte mi, abych uklidit svůj odsazení. 1520 01:11:02,700 --> 01:11:04,380 A dát to sem. 1521 01:11:04,380 --> 01:11:06,090 A dej 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 teď mám funkci nazvanou handler (), že jsem opravdu nevím 1525 01:11:10,300 --> 01:11:10,890 co to dělá ještě. 1526 01:11:10,890 --> 01:11:12,710 Je to prostě pořád má ty věci. 1527 01:11:12,710 --> 01:11:13,900 Jejda. 1528 01:11:13,900 --> 01:11:15,820 Trvalo příliš mnoho. 1529 01:11:15,820 --> 01:11:18,490 Pojďme na to. 1530 01:11:18,490 --> 01:11:18,990 Dobrá. 1531 01:11:18,990 --> 01:11:20,240 Promiň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 Nech mě to udělat. 1535 01:11:24,720 --> 01:11:25,020 OK. 1536 01:11:25,020 --> 01:11:27,040 To vypadá hezky a rovně předal dnes. 1537 01:11:27,040 --> 01:11:29,090 Nech mě to udělat. 1538 01:11:29,090 --> 01:11:29,860 Udělej to. 1539 01:11:29,860 --> 01:11:30,950 A OK. 1540 01:11:30,950 --> 01:11:33,080 Takže teď, pojďme dát to sem. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 Žádné další programování v reálném čase. 1543 01:11:37,270 --> 01:11:37,900 OK. 1544 01:11:37,900 --> 01:11:40,000 >> Takže teď, pojďme se vrátit do kde začal příběh. 1545 01:11:40,000 --> 01:11:43,530 Dříve jsem řekl, že tato linka zde znamená, že pokud je dokument připraven, jít 1546 01:11:43,530 --> 01:11:44,380 dopředu a to. 1547 01:11:44,380 --> 01:11:45,660 Co chci dělat? 1548 01:11:45,660 --> 01:11:49,070 No konkrétně, chci jít dopředu a proveďte následující. 1549 01:11:49,070 --> 01:11:53,700 Provést tento řádek kódu, a pak to, co chci, abyste udělat, je zavolat to 1550 01:11:53,700 --> 01:11:56,370 fungovat, pokud je předložen formulář. 1551 01:11:56,370 --> 01:11:57,730 >> Nyní to je to, co je zajímavé. 1552 01:11:57,730 --> 01:11:59,170 To není samo o sobě funkcí. 1553 01:11:59,170 --> 01:12:02,540 Všimněte si, nejsem uvedení závorky zde v normálním způsobem. 1554 01:12:02,540 --> 01:12:06,800 Jsem doslova kolem funkci nazvanou handler () na jinou funkci 1555 01:12:06,800 --> 01:12:10,800 tzv. předložit () jako argument jako i když je to jako proměnné. 1556 01:12:10,800 --> 01:12:14,290 A to je jeden z rysů JavaScript je svou funkcí sami 1557 01:12:14,290 --> 01:12:15,710 jsou opravdu jen objekty. 1558 01:12:15,710 --> 01:12:18,350 Ve skutečnosti, oni jsou opravdu jen proměnné nějakého druhu. 1559 01:12:18,350 --> 01:12:21,340 A v případě, že název funkce je handler (), není žádný důvod, proč nemůžu 1560 01:12:21,340 --> 01:12:23,390 předat jej v jako argument zde. 1561 01:12:23,390 --> 01:12:27,530 A to znamená, když je formulář s ID demo je 1562 01:12:27,530 --> 01:12:29,320 předloženy, volání této funkce. 1563 01:12:29,320 --> 01:12:32,770 >> Ale teď když jsem zpět všechno to, proč pak jsem asi dělat 1564 01:12:32,770 --> 01:12:34,850 před tento okamžik? 1565 01:12:34,850 --> 01:12:36,840 No, to je anonymní funkce. 1566 01:12:36,840 --> 01:12:41,080 Vzhledem k tomu, upřímně řečeno, jsem si uvědomil, proč jsem obtěžovat ztrácet čas vyhlášení 1567 01:12:41,080 --> 01:12:45,540 Funkce tzv. handler () pouze pro volání že v jednom a pouze jednom místě? 1568 01:12:45,540 --> 01:12:48,640 Pokud Nepotřebuji jméno, a já ne třeba říkat více než jedno místo, 1569 01:12:48,640 --> 01:12:51,200 řekněme, implementovat funkce přesně tam, kde jsem ji potřebují. 1570 01:12:51,200 --> 01:12:55,190 A tak JavaScript a PHP podporovat co jsou tzv. anonymní funkce, které 1571 01:12:55,190 --> 01:12:57,900 dovolte mi, abych to přesně to tady. 1572 01:12:57,900 --> 01:12:59,570 >> Ale my jsme jen poškrábání povrchu. 1573 01:12:59,570 --> 01:13:02,430 Pojďme dráždit se jen pár Konečné příklady zde. 1574 01:13:02,430 --> 01:13:04,600 >> Pokud jdu do quote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 Všimněte si, že je to ve skutečnosti PHP funkce, PHP program, který jsem napsal 1577 01:13:11,870 --> 01:13:15,270 která očekává parametr HTTP s názvem symbol, a mohu předat 1578 01:13:15,270 --> 01:13:16,730 hodnota jako FB. 1579 01:13:16,730 --> 01:13:20,010 A pokud se skutečně podívat na zdroje kód, to je dotazování webové stránky zdarma 1580 01:13:20,010 --> 01:13:23,680 volal Yahoo Finance, stejně jako p-set sedm, a to je návrat do mě 1581 01:13:23,680 --> 01:13:26,580 něco, co se zřejmě formát známý 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 jen objekt. 1584 01:13:28,810 --> 01:13:32,500 Všimněte složené závorky, uvozovky, tlustého střeva a čárky. 1585 01:13:32,500 --> 01:13:34,720 >> Nyní mezitím, to je docela v pohodě. 1586 01:13:34,720 --> 01:13:38,520 Protože jsem si asi použít programování jazyk pro generování adresy URL 1587 01:13:38,520 --> 01:13:40,370 které vypadají jako to dynamicky, že jo? 1588 01:13:40,370 --> 01:13:43,340 Mohu změnit na Google a vrátit společ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, jestli nemůžeme použít nyní. 1591 01:13:49,640 --> 01:13:56,590 >> Nech mě jít na ajax-0, která sem vypadá následovně. 1592 01:13:56,590 --> 01:13:59,750 Je to jen webová stránka, která má formulář s tlačítkem. 1593 01:13:59,750 --> 01:14:05,860 Dovolte mi, abych tady do toho pusťte a zadejte yhoo Yahoo burzovní symbol, klepněte na tlačítko Načíst 1594 01:14:05,860 --> 01:14:10,530 Citace, a teď Všiml jsem si, jsem dostal upozornění na 32,86. 1595 01:14:10,530 --> 01:14:14,050 >> Dovolte mi, abych skutečně jít do milovník verze na tuto stránku, verze dva, a 1596 01:14:14,050 --> 01:14:17,530 zadejte řekněme Microsoft, MSFT. 1597 01:14:17,530 --> 01:14:18,410 Získat cenovou nabídku. 1598 01:14:18,410 --> 01:14:19,850 A teď všimnete, žádný záznam. 1599 01:14:19,850 --> 01:14:22,770 Všimněte si, kde se říká, že cena , které mají být stanoveny? 1600 01:14:22,770 --> 01:14:27,060 Je nejjednodušší příklady, které naznačuje, v jakém Gchat a Facebook 1601 01:14:27,060 --> 01:14:30,070 Chat a Gmail, a jiné takové webové stránky dělají podle skutečnosti 1602 01:14:30,070 --> 01:14:31,290 měnící se webové stránky. 1603 01:14:31,290 --> 01:14:31,800 >> Všimněte si toto. 1604 01:14:31,800 --> 01:14:33,120 Dovolte mi, abych znovu načíst stránku. 1605 01:14:33,120 --> 01:14:35,080 Dovolte mi, abych otevřela Chrome Inspector. 1606 01:14:35,080 --> 01:14:36,890 Nech mě jít na prvky Karta tady dole. 1607 01:14:36,890 --> 01:14:42,310 Teď všimnout, jestli jsem přiblížit tady a otevřít toto nahoru, zjistí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 teď nevšiml, i když to bude být trochu těžké ho vidět v obou 1611 01:14:48,750 --> 01:14:52,080 míst najednou, když jsem zadat FB tady, dívat se na dno 1612 01:14:52,080 --> 01:14:54,110 na obrazovce pouze. 1613 01:14:54,110 --> 01:14:57,720 >> Je to skutečně mění, můj HTML za běhu. 1614 01:14:57,720 --> 01:15:01,670 A to dělá to docela jednoduše tím, že dělá něco takového. 1615 01:15:01,670 --> 01:15:06,800 Pokud otevřu ajax-2, oznámení, kterým se provádí něco tak sexy jako 1616 01:15:06,800 --> 01:15:09,560 že, i když je to dost ošklivé, ale propracovaný jako 1617 01:15:09,560 --> 01:15:11,910 funkčně, že má některé HTML v dolní části. 1618 01:15:11,910 --> 01:15:13,810 Ale všimněte jsem se označit. 1619 01:15:13,810 --> 01:15:16,640 Jsme nepoužívá dříve, ale to je jako, ale nenutí 1620 01:15:16,640 --> 01:15:17,840 vše na nový řádek. 1621 01:15:17,840 --> 01:15:20,830 Je to prostě dělá obdélníkovou oblast, na stejném řádku v podstatě. 1622 01:15:20,830 --> 01:15:22,870 >> Všimněte si, že jsem dal tomu ID ceny. 1623 01:15:22,870 --> 01:15:26,800 A ukázalo se, s použitím stejné JavaScript knihovna, mám funkci 1624 01:15:26,800 --> 01:15:30,440 tzv. uvozovky (), která je volána při každém Formulář je předkládán. 1625 01:15:30,440 --> 01:15:31,800 A to, co dělám, je to. 1626 01:15:31,800 --> 01:15:35,730 Jsem deklarování proměnné v JavaScriptu volal url, uložení hodnoty 1627 01:15:35,730 --> 01:15:38,650 quote.php symbol? =. 1628 01:15:38,650 --> 01:15:44,220 Jinými slovy, já sám jsem začínal připravit požadavku HTTP, a pak 1629 01:15:44,220 --> 01:15:49,250 Já zřetězení na které se znaménkem plus bez ohledu na element s ID 1630 01:15:49,250 --> 01:15:54,190 o symbol, který oznámení je, že textové pole přímo sem. 1631 01:15:54,190 --> 01:15:56,630 Takže stejně jako jsme měli formuláře v minulosti. 1632 01:15:56,630 --> 01:16:01,450 >> A pak to dopadá v jQuery, pokud volání. Val (), která volá o val 1633 01:16:01,450 --> 01:16:05,900 funkce, funkce hodnotu, která se dostane co uživatel zadal palců 1634 01:16:05,900 --> 01:16:08,920 A pak všichni síťový provoz že se stane tohle. 1635 01:16:08,920 --> 01:16:11,230 $. GetJSON. 1636 01:16:11,230 --> 01:16:13,720 >> A jak stranou, znak dolaru je jen zkratka notace. 1637 01:16:13,720 --> 01:16:16,860 Je to opravdu jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 Dostaň mě do JSON z této adresy URL, a když žádost vrátí, volat toto 1639 01:16:21,520 --> 01:16:26,550 funkce a předat jako argument co se vrátil ze serveru. 1640 01:16:26,550 --> 01:16:31,205 >> Takže jinými slovy, když jsem se vrátit do prohlížeč, a jdu zpátky do quote.php, 1641 01:16:31,205 --> 01:16:35,590 co můj prohlížeč dělá, je stále Tento kus dat. 1642 01:16:35,590 --> 01:16:38,930 A když jdu na této webové stránce zde, Všimněte si, kdybychom místo toho jít do sítě 1643 01:16:38,930 --> 01:16:43,820 Záložka a vyčistit jej, a poté zadejte něco jako GOOG pro Google a získat 1644 01:16:43,820 --> 01:16:46,340 Citace, všimněte si stránku nezměnil. 1645 01:16:46,340 --> 01:16:50,990 Ale požadavek HTTP byl vyroben, a to vrátil se sem, pokud se podíváme na 1646 01:16:50,990 --> 01:16:56,130 odpověď je celá banda JSON že přístup nakonec 1647 01:16:56,130 --> 01:16:58,070 tento jednoduchý řádek zde. 1648 01:16:58,070 --> 01:17:00,150 >> Dat je to, co se dostal ze serveru. 1649 01:17:00,150 --> 01:17:02,120 Cena je název key mi záleží. 1650 01:17:02,120 --> 01:17:05,230 Takže data.price mi to dává. 1651 01:17:05,230 --> 01:17:07,540 >> Nyní mezitím, a to je poslední příklad. 1652 01:17:07,540 --> 01:17:09,280 Můžete to udělat ještě více se stránkou. 1653 01:17:09,280 --> 01:17:12,440 Jeden dokonce, i dvě. 1654 01:17:12,440 --> 01:17:14,780 Můžeme přivést zpět označit, pokud si pamatovat. 1655 01:17:14,780 --> 01:17:15,850 To je JavaScript. 1656 01:17:15,850 --> 01:17:17,110 Můžeme to udělat. 1657 01:17:17,110 --> 01:17:17,690 Velmi vzrušující. 1658 01:17:17,690 --> 01:17:18,800 Necháme to jako cliffhanger. 1659 01:17:18,800 --> 01:17:21,590 >> Ale víc vzrušující, můžete dělat věci, jako je tento. 1660 01:17:21,590 --> 01:17:25,940 Pokud jdu do Geolocation-1, ukázalo se, že Chrome ví, že jsme na 1661 01:17:25,940 --> 01:17:30,672 Zeměpisná šířka a délka 42.37. -71,10. 1662 01:17:30,672 --> 01:17:32,940 Takže je tu ještě existuje k dispozici. 1663 01:17:32,940 --> 01:17:34,290 Ale o tom až příští týden. 1664 01:17:34,290 --> 01:17:35,540 Uvidíme se v pondělí. 1665 01:17:35,540 --> 01:17:37,558