1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH Blumberg: Ahoj všichni. 3 00:00:07,030 --> 00:00:09,530 Chystáme se začít jen pár minut brzy 4 00:00:09,530 --> 00:00:11,738 protože máme spoustu materiálu projít. 5 00:00:11,738 --> 00:00:12,790 Já jsem Hannah. 6 00:00:12,790 --> 00:00:13,865 Jsem TF. 7 00:00:13,865 --> 00:00:16,239 Maria se bude spojení nám za pár minut. 8 00:00:16,239 --> 00:00:17,560 Sekce Učí těsně před. 9 00:00:17,560 --> 00:00:19,351 Učím sekce právo po, takže jdeme 10 00:00:19,351 --> 00:00:21,200 aby ji udrželi na hodinu a půl. 11 00:00:21,200 --> 00:00:25,490 >> Tak jak uvidíte tady, máme dost několik témat musíme dostat přes, 12 00:00:25,490 --> 00:00:27,200 takže budeme jít trochu rychle. 13 00:00:27,200 --> 00:00:31,140 Ale pokud se v jakémkoli bodě řekneme něco příliš rychle, nebo nechcete pochopit, 14 00:00:31,140 --> 00:00:33,170 neváhejte a přerušit s otázkami. 15 00:00:33,170 --> 00:00:36,610 Chceme být schopni, aby se tento přezkoumá relaci jako užitečné pro všechny z vás, 16 00:00:36,610 --> 00:00:37,973 jak je to možné. 17 00:00:37,973 --> 00:00:38,920 Skvělý. 18 00:00:38,920 --> 00:00:41,650 >> Takže pojďme skočit přímo v s některá témata, že jsme vlastně 19 00:00:41,650 --> 00:00:46,980 velmi, velmi stručně se vztahuje pro kvíz 0 v přezkumném zasedání kvíz 0. 20 00:00:46,980 --> 00:00:48,840 Takže počínaje spojových seznamů. 21 00:00:48,840 --> 00:00:52,090 Takže jen ujistěte se, že máte nějaké základní znalosti o spojových seznamů 22 00:00:52,090 --> 00:00:55,110 a jsou pohodlně dělat některé ze základních operací. 23 00:00:55,110 --> 00:00:58,560 >> Takže jen přezkoumat, spojený seznamy jsou lepší než pole 24 00:00:58,560 --> 00:01:01,020 protože oni mohou růst dynamicky. 25 00:01:01,020 --> 00:01:03,300 Takže máme tu obrovskou výhodu. 26 00:01:03,300 --> 00:01:06,031 Viděli jsme je použit V stoly mřížky, kdy jsme 27 00:01:06,031 --> 00:01:08,280 nevím přesně, kolik co budeme chtít 28 00:01:08,280 --> 00:01:10,900 vložit do naší datové struktury. 29 00:01:10,900 --> 00:01:15,700 Bohužel, máme kusy propojený seznam všude paměť, 30 00:01:15,700 --> 00:01:20,820 takže nemusí být nutně schopný dělat konstantním čase přístup 31 00:01:20,820 --> 00:01:22,502 jakéhokoli prvku v Google seznamu. 32 00:01:22,502 --> 00:01:24,210 Aby bylo možné najít Zejména prvek, my 33 00:01:24,210 --> 00:01:26,510 muset opakovat všechny cesta od začátku. 34 00:01:26,510 --> 00:01:30,610 Takže mějte na paměti, že většina Základní operace jsou omega kyseliny 1. 35 00:01:30,610 --> 00:01:32,130 Takže vložka je prostě bude trvat 1. 36 00:01:32,130 --> 00:01:37,520 Smazat bude trvat n, protože jsme muset jít najít ji ze seznamu. 37 00:01:37,520 --> 00:01:39,260 A hledání může trvat, v nejhorším případě, n. 38 00:01:39,260 --> 00:01:42,330 Nemůžeme udělat něco jako binární vyhledávání na Google seznamu 39 00:01:42,330 --> 00:01:45,101 protože nemůžeme jen náhodně skok do středu. 40 00:01:45,101 --> 00:01:45,600 Bezva. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Skvělý. 43 00:01:48,960 --> 00:01:50,270 >> Trochu stohů. 44 00:01:50,270 --> 00:01:53,980 To opět přišel na kvíz 0, takže vás by měly být super pohodlné s ním. 45 00:01:53,980 --> 00:01:57,210 Ale pro komíny, žádáme vás pamatovat stoh zásobníků. 46 00:01:57,210 --> 00:01:59,940 A to bude první, poslední ven. 47 00:01:59,940 --> 00:02:02,272 Tak jsme stack věci v zásobníku, a potom 48 00:02:02,272 --> 00:02:04,980 pokud se snažíme, aby se něco, off-- který nazýváme praskání off 49 00:02:04,980 --> 00:02:06,581 stack-- jsme přišli z vrcholu. 50 00:02:06,581 --> 00:02:09,289 A pokud chceme dát něco ve stohu, říkáme to tlačit. 51 00:02:09,289 --> 00:02:13,170 Takže je vždy bude vyrůstat ze dna jako sloupce podložek. 52 00:02:13,170 --> 00:02:14,540 Skvělý. 53 00:02:14,540 --> 00:02:17,607 >> Viděli jsme komíny implementována s oběma propojené seznamy a pole. 54 00:02:17,607 --> 00:02:19,440 Pokud jste se provádí s poli, chcete 55 00:02:19,440 --> 00:02:22,350 aby se ujistil, sledovat, jak velikost a kapacita. 56 00:02:22,350 --> 00:02:27,540 Takže velikost bude aktuální řada věcí ve vašem stacku, 57 00:02:27,540 --> 00:02:32,900 vzhledem k tomu, kapacita je celkový počet věcí, které můžete uložit do vašeho stacku. 58 00:02:32,900 --> 00:02:34,220 Bezva. 59 00:02:34,220 --> 00:02:35,767 >> Velmi podobně, máme fronty. 60 00:02:35,767 --> 00:02:38,850 V tomto případě, místo toho přemýšlet o stoh přihrádek, myslím, že na řádku. 61 00:02:38,850 --> 00:02:40,697 To bude první dovnitř, první ven. 62 00:02:40,697 --> 00:02:42,780 Takže pokud jste čekají, až pro něco v obchodě, 63 00:02:42,780 --> 00:02:46,920 doufáme, že se osoba poprvé v linka bude musí pomoci jako první. 64 00:02:46,920 --> 00:02:49,350 >> Místo toho, říká tlačit a pop jako my na stack, 65 00:02:49,350 --> 00:02:52,000 my jen říct zařazení do fronty a Dequeue. 66 00:02:52,000 --> 00:02:54,970 A opět, pokud jste se provádí to s řadou, 67 00:02:54,970 --> 00:02:56,720 musíme sledovat ne pouze velikost 68 00:02:56,720 --> 00:03:02,390 a kapacity, ale také hlava, která bude přední část naší fronty. 69 00:03:02,390 --> 00:03:03,010 Bezva. 70 00:03:03,010 --> 00:03:05,770 Jakékoli otázky týkající se něco z toho? 71 00:03:05,770 --> 00:03:06,320 Skvělý. 72 00:03:06,320 --> 00:03:07,640 Pohybující se vpravo podél. 73 00:03:07,640 --> 00:03:08,564 >> OK, hashovací tabulky. 74 00:03:08,564 --> 00:03:10,605 Tady je místo, kde to začíná opravdu zajímavé. 75 00:03:10,605 --> 00:03:14,150 Takže hash tabulka je jedna implementace asociativního pole. 76 00:03:14,150 --> 00:03:16,700 Takže v podstatě, co se stalo je máme všechny tohoto vstupu, 77 00:03:16,700 --> 00:03:18,750 a dáme ji do hash funkce, která říká, 78 00:03:18,750 --> 00:03:21,840 OK, to je místo, kde v hash tabulka patří. 79 00:03:21,840 --> 00:03:24,860 >> Takže nejjednodušší hashovací funkce že jsme viděli, je jen říká, 80 00:03:24,860 --> 00:03:28,170 OK, předpokládám, že chceme dát řetězce v našem hash tabulky. 81 00:03:28,170 --> 00:03:30,870 A opravdu jednoduchý nápad by mohlo být říci, v pořádku, 82 00:03:30,870 --> 00:03:34,350 ať to jen řadit dle První písmeno slova. 83 00:03:34,350 --> 00:03:37,570 Takže si můžete prohlédnout zde, bereme banán, dáme přes transformační funkce, 84 00:03:37,570 --> 00:03:40,190 a říká, hej, že by měl jít na indexu 1. 85 00:03:40,190 --> 00:03:45,120 >> Takže můžeme v podstatě myslet na hash stůl jako spoustu různých kbelíky. 86 00:03:45,120 --> 00:03:49,880 A každá z těchto lopaty se děje držet hlavu propojeného seznamu. 87 00:03:49,880 --> 00:03:55,030 A v tomto seznamu Google je místo, kde můžeme skutečně dát různých kusů dat. 88 00:03:55,030 --> 00:03:57,820 >> Takže potápění trochu víc do funkce hash, tady je 89 00:03:57,820 --> 00:03:59,870 Příklad Prostě popsal, kde jsme jen říct, 90 00:03:59,870 --> 00:04:02,460 OK, vezmi první písmeno slova a my jsme 91 00:04:02,460 --> 00:04:03,990 bude třídit do věder. 92 00:04:03,990 --> 00:04:08,490 Tak pravděpodobně, bude tam 26 kbelíky, jeden pro každé písmeno abecedy. 93 00:04:08,490 --> 00:04:10,090 Proč není to skvělá funkce hash? 94 00:04:10,090 --> 00:04:13,461 Co je to non-ideál? 95 00:04:13,461 --> 00:04:13,960 To jo. 96 00:04:13,960 --> 00:04:15,790 >> Diváků: Jdete mít kolize. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Jo, přesně tak. 98 00:04:16,390 --> 00:04:18,000 Budeš mít kolize. 99 00:04:18,000 --> 00:04:18,954 Takže to je jedna věc. 100 00:04:18,954 --> 00:04:21,620 A budeme mluvit o tom, jak můžeme opravit kolizím jen sekundu. 101 00:04:21,620 --> 00:04:23,980 Další problém s tímto zejména hashovací funkce 102 00:04:23,980 --> 00:04:25,980 je, že náš liší lopaty se bude 103 00:04:25,980 --> 00:04:28,960 docela drasticky různých velikostí. 104 00:04:28,960 --> 00:04:33,840 >> Víme, že tam je mnohem více slov, které začínají než X, 105 00:04:33,840 --> 00:04:38,980 takže budeme mít velmi nevyvážené kbelíky v naší hash tabulky. 106 00:04:38,980 --> 00:04:40,050 Bezva. 107 00:04:40,050 --> 00:04:41,340 Tak jo, pojďme se dostat zpět do bod kolizí. 108 00:04:41,340 --> 00:04:42,900 Co budeme dělat, když tam je kolize? 109 00:04:42,900 --> 00:04:44,490 >> Máme několik různých možností. 110 00:04:44,490 --> 00:04:47,600 Takže člověk, takže předpokládám, že se snažíme dát bobule do naší tabulky hash. 111 00:04:47,600 --> 00:04:50,370 A vidíme, oh, chceme dát do indexu 1, 112 00:04:50,370 --> 00:04:52,070 ale banán už tam žije. 113 00:04:52,070 --> 00:04:53,110 Co budeme dělat? 114 00:04:53,110 --> 00:04:54,560 Máme dvě hlavní možnosti. 115 00:04:54,560 --> 00:04:58,050 >> Číslo jedna je, můžeme říci, v pořádku, tam není místo v indexu 1, 116 00:04:58,050 --> 00:05:03,210 ale ať to jen hledat dál skrz dokud se nám nepodaří najít další volné místo. 117 00:05:03,210 --> 00:05:08,490 Takže budeme říkat, OK, Řekněme to v místě 3. 118 00:05:08,490 --> 00:05:09,240 To je jedna možnost. 119 00:05:09,240 --> 00:05:11,470 Tomu se říká lineární sondování. 120 00:05:11,470 --> 00:05:15,500 >> A druhá možnost říká, OK, dobře, ať to jen, aby každý z těchto kbelíky 121 00:05:15,500 --> 00:05:17,470 být vedoucí spojových seznamů. 122 00:05:17,470 --> 00:05:21,910 A je to v pořádku, pokud je toho víc než jednu věc v kbelíku. 123 00:05:21,910 --> 00:05:23,820 Jsme jen tak připojit jej na přední straně. 124 00:05:23,820 --> 00:05:26,032 Takže tady vidíte, OK, Když jsme vložena bobule, my 125 00:05:26,032 --> 00:05:28,240 si vzal banán, druh tlačil ji trochu 126 00:05:28,240 --> 00:05:29,842 a hodil bobule tam. 127 00:05:29,842 --> 00:05:31,050 A to je taky úplně v pohodě. 128 00:05:31,050 --> 00:05:32,830 To se nazývá samostatný řetězení. 129 00:05:32,830 --> 00:05:38,100 Můžete si myslet na to jako něco jako řada hlav na spojových seznamů. 130 00:05:38,100 --> 00:05:41,950 Jakékoliv dotazy týkající hash stoly, hashovací funkce? 131 00:05:41,950 --> 00:05:44,290 Skvělý. 132 00:05:44,290 --> 00:05:45,470 >> Stromy a pokusů. 133 00:05:45,470 --> 00:05:47,287 Takže strom je nějaký druh datové struktury 134 00:05:47,287 --> 00:05:49,453 ve kterém tam je nějaký druh hierarchie nebo nějaký druh 135 00:05:49,453 --> 00:05:51,247 o pořadí na vaše různé objekty. 136 00:05:51,247 --> 00:05:53,580 A to se stane výborný jasné, kdy vidíme příklad. 137 00:05:53,580 --> 00:05:56,960 A my jsme viděli pokusy, spolu se stoly mřížky, v pset5-- 138 00:05:56,960 --> 00:06:00,700 který, znovu, naprosto poctivá hra pro tento quiz-- jako další dat 139 00:06:00,700 --> 00:06:03,110 struktury, které můžeme ukládat různé věci. 140 00:06:03,110 --> 00:06:06,782 V případě slovníku, jsme skladovat spoustu slov. 141 00:06:06,782 --> 00:06:08,240 Takže pojďme se podívat na některé stromy. 142 00:06:08,240 --> 00:06:10,190 Tak to je příklad stromu. 143 00:06:10,190 --> 00:06:13,105 Má druh struktury, že hierarchické struktuře, 144 00:06:13,105 --> 00:06:15,920 kde můžete vidět, že Tento uzel 1 v horní části 145 00:06:15,920 --> 00:06:20,750 má nějaký hodnosti nad 2 a 3, , které jsou vyšší než 4, 5 a 6 a 7, 146 00:06:20,750 --> 00:06:22,860 které jsou nad 8 a 9. 147 00:06:22,860 --> 00:06:25,210 Tak to je vše, myslíme strom, takže si můžete jen tak 148 00:06:25,210 --> 00:06:26,660 Picture to ve vaší hlavě. 149 00:06:26,660 --> 00:06:29,050 >> Nyní máme pár specializovanější stromy. 150 00:06:29,050 --> 00:06:31,070 Takže jeden příklad je binární strom. 151 00:06:31,070 --> 00:06:33,290 A binární strom je, znovu, jen bude 152 00:06:33,290 --> 00:06:37,040 datová struktura s nějakou hierarchie, ale každý z uzlů 153 00:06:37,040 --> 00:06:38,650 mohou mít maximálně dvě děti. 154 00:06:38,650 --> 00:06:41,530 To je místo, kde slovo binární pochází. 155 00:06:41,530 --> 00:06:43,410 Takže toto je příklad binárního stromu. 156 00:06:43,410 --> 00:06:45,720 Tak to je menší kategorie stromů. 157 00:06:45,720 --> 00:06:48,960 >> Nyní pojďme ještě konkrétnější a mluvit o binární trees-- binárního vyhledávání 158 00:06:48,960 --> 00:06:51,310 stromy, spíše. 159 00:06:51,310 --> 00:06:56,430 Tak tady je nápad není jen každý uzel má u většiny dvou dětí, 160 00:06:56,430 --> 00:07:00,300 ale všechny děti do vlevo se bude menší 161 00:07:00,300 --> 00:07:03,450 a všechny děti do právo se bude větší. 162 00:07:03,450 --> 00:07:05,890 Takže oznámení v právě naší binární strom, je tu 163 00:07:05,890 --> 00:07:08,650 mezi čísly žádný vztah. 164 00:07:08,650 --> 00:07:12,990 Ale v našem binární vyhledávání strom, vidíme, OK, tady je 44. 165 00:07:12,990 --> 00:07:17,080 A každé číslo na levé straně 44, je menší a všechno vpravo 166 00:07:17,080 --> 00:07:17,920 je větší. 167 00:07:17,920 --> 00:07:20,130 >> A to platí u každé úroveň stromu. 168 00:07:20,130 --> 00:07:24,810 Tak zde, to je menší než 22, a to je větší než 22. 169 00:07:24,810 --> 00:07:26,390 A to je binární vyhledávací strom. 170 00:07:26,390 --> 00:07:28,900 Proč si myslíme, že je to jen binární vyhledávací strom? 171 00:07:28,900 --> 00:07:30,651 Co algoritmus to vám připomíná? 172 00:07:30,651 --> 00:07:31,650 Diváků: Binární vyhledávání. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: Binární vyhledávání. 174 00:07:32,480 --> 00:07:35,150 Protože pokud hledáte Zejména čísla v této větvi, 175 00:07:35,150 --> 00:07:38,800 na každém místě, stačí zaklepat off polovina stromu, což je skvělé. 176 00:07:38,800 --> 00:07:43,800 A tak, co se děje, aby nám něco že vypadá jako binární vyhledávání. 177 00:07:43,800 --> 00:07:45,870 Nějaké otázky? 178 00:07:45,870 --> 00:07:47,570 Dobře, v pohodě. 179 00:07:47,570 --> 00:07:48,560 >> V pořádku, se snaží. 180 00:07:48,560 --> 00:07:49,657 Oblíbený každého z nás. 181 00:07:49,657 --> 00:07:51,990 Tak to je příklad, který jsme viděli spoustu ve třídě. 182 00:07:51,990 --> 00:07:54,710 A opět, je to jen další způsob, jak můžeme ukládat data. 183 00:07:54,710 --> 00:07:57,530 V případě slovníku, opět, je to jen bude řetězce. 184 00:07:57,530 --> 00:08:00,870 Takže pojďme se podívat, co to vlastně vypadá jako na mírně nižší úrovni. 185 00:08:00,870 --> 00:08:03,690 >> Takže pojďme se podívat na jednom uzlu v trie. 186 00:08:03,690 --> 00:08:07,532 A vidíme, OK, tam se děje být logická a uzel, 187 00:08:07,532 --> 00:08:09,170 ukazatel na uzlu. 188 00:08:09,170 --> 00:08:11,400 A vidíme, že Boolean se nazývá is_word. 189 00:08:11,400 --> 00:08:13,490 Takže v podstatě, to je bude odpovídat 190 00:08:13,490 --> 00:08:16,750 na těchto malých trojúhelníky, které říká, pokud jste sem dostali, 191 00:08:16,750 --> 00:08:19,100 jste našli kompletní slovo. 192 00:08:19,100 --> 00:08:23,670 >> Víme, že "Turing" přes Zde je kompletní slovo, 193 00:08:23,670 --> 00:08:28,030 vzhledem k tomu, jen T-U-R není slovo protože my nevidíme tu malou delta. 194 00:08:28,030 --> 00:08:31,440 A ten malý trojúhelník, opět, odpovídá tomuto is_word, 195 00:08:31,440 --> 00:08:34,480 tento Boolean is_word. 196 00:08:34,480 --> 00:08:36,320 A pak máme řadu dětí. 197 00:08:36,320 --> 00:08:39,860 Takže na každé úrovni, budete mají zvláštní uzel, 198 00:08:39,860 --> 00:08:42,470 a že uzel ukazuje na array celé abecedy. 199 00:08:42,470 --> 00:08:44,346 >> Takže vidíte, zase, V tomto picture-- Jsem 200 00:08:44,346 --> 00:08:48,170 bude držet skákání zpět a forth--, že, že pole na vrcholu 201 00:08:48,170 --> 00:08:51,640 má spoustu různých uzly přicházející z ní. 202 00:08:51,640 --> 00:08:57,140 To má 26, nebo 27, pokud chcete, zahrnout zvláštní charakter. 203 00:08:57,140 --> 00:09:01,320 A to nás si dává způsob ukládání naše data 204 00:09:01,320 --> 00:09:04,450 a to způsobem, který může být přihlíželi že se můžete podívat na super rychlý. 205 00:09:04,450 --> 00:09:06,650 Jaká je doba vyhledávání na trie? 206 00:09:06,650 --> 00:09:07,970 >> Diváků: [Neslyšitelné]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Jo. 208 00:09:08,300 --> 00:09:09,550 Teoreticky je to konstantní čas. 209 00:09:09,550 --> 00:09:13,230 Je to jen bude být velikost slovo, které chcete vyhledat. 210 00:09:13,230 --> 00:09:15,950 I když přidáme obrovské množství více slov naší trie, 211 00:09:15,950 --> 00:09:18,160 není to bude trvat nás déle k určení 212 00:09:18,160 --> 00:09:19,690 v případě, že dané slovo je v trie. 213 00:09:19,690 --> 00:09:21,412 Tak to je opravdu pěkné. 214 00:09:21,412 --> 00:09:23,697 >> Diváků: Právě jsi inicializovat, že pole? 215 00:09:23,697 --> 00:09:24,780 Přišli jste na bod nebo dva. 216 00:09:24,780 --> 00:09:26,130 Můžeš jen mluvit o že na vteřinu? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: Jasně, určitě. 218 00:09:26,680 --> 00:09:27,590 Dobrá otázka. 219 00:09:27,590 --> 00:09:31,140 Otázkou bylo, my mají celou řadu, který je 220 00:09:31,140 --> 00:09:34,180 bude mít uzel hvězdy as na rozdíl od pouhých uzlu, že jo? 221 00:09:34,180 --> 00:09:35,180 Bezva. 222 00:09:35,180 --> 00:09:37,990 Tak tady, co říkáme je naše pole je právě 223 00:09:37,990 --> 00:09:40,035 Bude odkazy na další pole. 224 00:09:40,035 --> 00:09:42,910 Takže to essentially-- to druh cítí jako Google seznamu tímto způsobem 225 00:09:42,910 --> 00:09:46,620 kde každý z těchto dětí jen bod na další uzel. 226 00:09:46,620 --> 00:09:49,030 >> A to tak, že jsme vlastně určit, hej, OK, 227 00:09:49,030 --> 00:09:52,320 jsme opakoval přes celý slovo, je toto slovo ve slovníku, 228 00:09:52,320 --> 00:09:54,476 jsme jen zkontrolovat tuto is_word. 229 00:09:54,476 --> 00:09:55,100 Velká otázka. 230 00:09:55,100 --> 00:09:55,675 To jo. 231 00:09:55,675 --> 00:09:56,216 Diváků: OK. 232 00:09:56,216 --> 00:09:57,470 Takže to, co bylo runtime pro trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: Jistě. 234 00:09:58,386 --> 00:10:01,852 Takže runtime pro trie pro vyhledávání bude konstantní čas. 235 00:10:01,852 --> 00:10:04,310 Takže je to jen bude být počet písmen ve slově. 236 00:10:04,310 --> 00:10:06,310 To není závislé na Velikost slovníku 237 00:10:06,310 --> 00:10:09,510 nebo velikost datové struktury. 238 00:10:09,510 --> 00:10:12,170 Tak tady je to trochu jednodušší příklad. 239 00:10:12,170 --> 00:10:15,430 >> V takovém případě můžete vidět, že slovo bat je ve slovníku 240 00:10:15,430 --> 00:10:18,900 a máte zoom, ale vy nemají něco jako zoo. 241 00:10:18,900 --> 00:10:20,050 Jak bychom udělat zoo? 242 00:10:20,050 --> 00:10:24,276 Jak můžeme přidat zoo na náš slovník, k našemu trie? 243 00:10:24,276 --> 00:10:24,776 To jo. 244 00:10:24,776 --> 00:10:27,014 >> Publikum: Udělat is_word platí pro [neslyšitelných]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Dobrý. 246 00:10:27,930 --> 00:10:31,731 Takže bychom říci, Z-O-O, a pak jsme si chcete zaškrtnout políčko, že stejně. 247 00:10:31,731 --> 00:10:32,230 Skvělý. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Srovnejme velmi stručně se snaží proti stoly mřížky. 250 00:10:37,930 --> 00:10:39,770 Pokusy jsou opravdu skvělé protože, jak jsme řekli, 251 00:10:39,770 --> 00:10:41,610 poskytují konstantní-time vyhledávání. 252 00:10:41,610 --> 00:10:44,285 Ale obrovská nevýhoda je, že jsou humongous. 253 00:10:44,285 --> 00:10:46,160 Můžete získat pocit, dokonce i při pohledu na to, 254 00:10:46,160 --> 00:10:48,454 že to bude trvat obrovské množství paměti. 255 00:10:48,454 --> 00:10:50,620 Takže oni bude mnohem větší než hash tabulky, 256 00:10:50,620 --> 00:10:52,270 ale jdou dát nás mnohem rychlejší časy vyhledávání. 257 00:10:52,270 --> 00:10:54,478 Takže to je druh vašeho Kompromis, co vám záleží, 258 00:10:54,478 --> 00:10:57,350 ať už je to rychlost nebo paměť. 259 00:10:57,350 --> 00:11:02,251 Jakékoliv dotazy na nic z toho, všechny C datových struktur. 260 00:11:02,251 --> 00:11:02,750 Krásný. 261 00:11:02,750 --> 00:11:03,250 DOBŘE. 262 00:11:03,250 --> 00:11:07,322 Chystáme se přejít na trochu bit vývoj webových aplikací s Marií. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 DOBŘE. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Můžete používat svůj notebook. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Nice. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 OK v pohodě. 269 00:11:14,912 --> 00:11:17,120 Jak jsme se přestěhovat nyní na web vývoj, mluvili jsme trochu 270 00:11:17,120 --> 00:11:20,680 o měnících se oprávnění souborů a adresářů 271 00:11:20,680 --> 00:11:24,190 tak, aby mohly být přístupné pro ostatní uživatele, do světa, 272 00:11:24,190 --> 00:11:28,640 a tak, že můžeme vidět, jak v podstatě jim můžeme sdělit 273 00:11:28,640 --> 00:11:32,600 při vývoji webových stránek věci jako že jsme většinou dělali. 274 00:11:32,600 --> 00:11:36,400 >> Takže jsme viděli příkaz chmod, což je režim změnit, v podstatě. 275 00:11:36,400 --> 00:11:39,300 To je příkaz Linux a mění oprávnění k přístupu 276 00:11:39,300 --> 00:11:40,410 z objektů systému souborů. 277 00:11:40,410 --> 00:11:43,370 A objekt souborový systém jen adresář, soubor, 278 00:11:43,370 --> 00:11:46,810 cokoliv, co můžete změnit oprávnění. 279 00:11:46,810 --> 00:11:53,750 >> Takže vidět soubor oprávnění, jsme zadejte příkaz ls -l, seznam. 280 00:11:53,750 --> 00:11:56,500 A když jsme typ, který jsme obvykle vidět nějaké oprávnění 281 00:11:56,500 --> 00:11:59,660 které vypadají nějak takhle v přední části názvu adresáře. 282 00:11:59,660 --> 00:12:01,260 Takže d odkazuje na adresář. 283 00:12:01,260 --> 00:12:05,930 A pak máme tři trojice, které v podstatě 284 00:12:05,930 --> 00:12:11,675 odkazují na oprávněními buď uživatel, skupina, nebo svět. 285 00:12:11,675 --> 00:12:16,490 >> Typy oprávnění, které můžeme mít pro tyto tři skupiny lidí 286 00:12:16,490 --> 00:12:20,830 jsou buď r pro čtení, w pro psát, a X pro spustit. 287 00:12:20,830 --> 00:12:23,650 A můžeme mít pro ty, skupina a svět stejně. 288 00:12:23,650 --> 00:12:26,940 Nejtěžší věc je, že někdy když jsme zadejte příkaz chmod, 289 00:12:26,940 --> 00:12:32,960 bychom zadejte nějaké číslo že se skládala ze tří bitů. 290 00:12:32,960 --> 00:12:36,990 Takže jsme mohli udělat jako 777, a které v podstatě 291 00:12:36,990 --> 00:12:40,450 odkazoval se na přidané hodnotě každého z těchto triád 292 00:12:40,450 --> 00:12:45,060 protože r odkazuje na 4, by w odkazují na 2, a x odkazuje na 1, 293 00:12:45,060 --> 00:12:50,020 takže když sečtou, každé z čísel přijde až na kumulativní číslo 294 00:12:50,020 --> 00:12:52,750 na kumulativní hodnotou mezi 0 a 7. 295 00:12:52,750 --> 00:12:55,150 Tak bychom mohli také 0 k vůbec žádné oprávnění. 296 00:12:55,150 --> 00:12:58,200 A to by v podstatě dá nám oprávnění buď pro uživatele, 297 00:12:58,200 --> 00:13:00,450 skupina, nebo svět. 298 00:13:00,450 --> 00:13:02,620 Jakékoli otázky týkající se to tak daleko? 299 00:13:02,620 --> 00:13:05,331 >> Diváků: jste řekl číst byl 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Ano. 301 00:13:06,164 --> 00:13:07,568 Diváků: [Neslyšitelné]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Jo. 303 00:13:08,504 --> 00:13:11,790 Diváků: A pak přidáním všichni ti, jiní by uveďte vaše číslo. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Jo. 305 00:13:12,665 --> 00:13:14,970 To jo. 306 00:13:14,970 --> 00:13:17,810 To jsou velké otázky. 307 00:13:17,810 --> 00:13:20,490 Půvabný. 308 00:13:20,490 --> 00:13:25,340 Dále jsme skočili do HTML a něco více o vývoj webových aplikací. 309 00:13:25,340 --> 00:13:27,990 Takže HTML prostě znamená, Hyper Text Markup Language. 310 00:13:27,990 --> 00:13:30,460 A to je značky jazyk, který je standardní 311 00:13:30,460 --> 00:13:32,720 že to používá k vytvoření webové stránky. 312 00:13:32,720 --> 00:13:35,750 >> Jmenuje se to značkovací jazyk protože to není ve skutečnosti sestavují. 313 00:13:35,750 --> 00:13:40,310 Neříká, jak nějaký kód by měl být provedeny, nebo něco takového. 314 00:13:40,310 --> 00:13:44,800 Je to jen a vymezuje popisuje, jak web 315 00:13:44,800 --> 00:13:46,840 stránka by měla být zřízena s každým z jejích prvků 316 00:13:46,840 --> 00:13:48,460 a jak by měly vypadat pro uživatele. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Některé z HTML tagů, které jsme přešel jsou následující. 319 00:13:57,110 --> 00:14:00,500 Všechny naše dokumenty HTML začala s DOCTYPE html. 320 00:14:00,500 --> 00:14:02,550 Pak máme vždy html tag. 321 00:14:02,550 --> 00:14:03,930 Máme hlavu a tělo. 322 00:14:03,930 --> 00:14:07,890 A to je důležité, že má HTML tento druh vnořené struktury 323 00:14:07,890 --> 00:14:09,280 protože to je velmi jasné. 324 00:14:09,280 --> 00:14:13,200 A pak se to stává velmi jasné, kdy my je třeba otevřít a zavřít vlastně tagy. 325 00:14:13,200 --> 00:14:18,400 A vždy je třeba zavřít tagy, které jsme otevřeli. 326 00:14:18,400 --> 00:14:23,170 >> A máme zde některé z typů věcí příštích, které chceme mít. 327 00:14:23,170 --> 00:14:26,580 Takže máme, například, název CS50. 328 00:14:26,580 --> 00:14:31,980 A pak jsme vlastně můžete propojit stylů 329 00:14:31,980 --> 00:14:34,030 že definuje, jak styl naše webové stránky. 330 00:14:34,030 --> 00:14:35,650 To je CSS. 331 00:14:35,650 --> 00:14:39,320 Chystáme se jít přes to v další pár snímků stejně. 332 00:14:39,320 --> 00:14:42,580 >> V těle, nastavíme některé třídy a ID. 333 00:14:42,580 --> 00:14:45,860 A jako připomínka, znovu, ID jsou jedinečné a třídy 334 00:14:45,860 --> 00:14:47,390 lze přiřadit k více položek. 335 00:14:47,390 --> 00:14:52,110 A to právě znamená, že můžeme použít třídy a ID 336 00:14:52,110 --> 00:14:55,860 v rámci druhé structures-- tak, pro Například v rámci CSS souborů nebo stylu 337 00:14:55,860 --> 00:15:00,940 sheets-- se odkazovat na zvláštní prvky a v podstatě říkají, že chceme styl 338 00:15:00,940 --> 00:15:03,280 nebo navrhnout nějaký prvek nějakým konkrétním způsobem. 339 00:15:03,280 --> 00:15:06,440 A máme na mysli jim jejich ID a třídy. 340 00:15:06,440 --> 00:15:09,870 A můžeme také odkazovat na různé věci podle tagů stejně, 341 00:15:09,870 --> 00:15:13,830 ale ID a třídy nám jen dát nějaké všestrannost a co konkrétně my 342 00:15:13,830 --> 00:15:15,850 chcete odkázat. 343 00:15:15,850 --> 00:15:19,620 >> Takže jen příklad. 344 00:15:19,620 --> 00:15:22,730 Můžeme opět v rámci soubor CSS, kde jsme 345 00:15:22,730 --> 00:15:25,770 chcete definovat některé style-- takže barvy, typ písma, 346 00:15:25,770 --> 00:15:30,340 a tak podobně that-- můžeme definovat styl pro tělo. 347 00:15:30,340 --> 00:15:32,640 Tak, že by ji definují pro celé tělo tag. 348 00:15:32,640 --> 00:15:36,160 Ale pak se můžeme také definovat styl pro #title. 349 00:15:36,160 --> 00:15:40,390 A opět se hashtag se vztahuje k našemu ID a dot odkazuje na naší třídy. 350 00:15:40,390 --> 00:15:44,760 >> A pak se pro .info, jsme můžete také nastavit některé atributy. 351 00:15:44,760 --> 00:15:49,750 A opět, když se vrátíme, jsme měli třídy nazvané info a náš titul ID. 352 00:15:49,750 --> 00:15:53,422 A my můžeme vidět, že mluvíme které jim #title a .info. 353 00:15:53,422 --> 00:15:55,380 Diváků: Řekl byste, hashtag [? přijímá mě? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Sorry? 355 00:15:55,725 --> 00:15:58,120 Diváků: Řekl byste, hashtag [? přijímá mě? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: hashtag znamená ID, takže #title 357 00:16:01,400 --> 00:16:07,890 se týká jakýchkoliv prvků mají toto ID s názvem titulu. 358 00:16:07,890 --> 00:16:10,735 A pak dot odkazuje na třídu. 359 00:16:10,735 --> 00:16:14,590 Takže .info se odkazuje na tento prvek proto, že má informace třídy. 360 00:16:14,590 --> 00:16:15,090 Jo. 361 00:16:15,090 --> 00:16:17,905 >> Diváků: Proč vás odlišit je v HTML? 362 00:16:17,905 --> 00:16:20,985 Proč říkáte, některé věci jsou ID a některé věci jsou třídy? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: To je jen na vás-- 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: Zopakujte otázku. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, promiň. 366 00:16:25,370 --> 00:16:29,480 Proč rozlišujeme určité prvky jako ID a dalšími prvky, jako jsou třídy? 367 00:16:29,480 --> 00:16:34,760 Je to jen proto, že je to opravdu často výběr designu. 368 00:16:34,760 --> 00:16:38,520 To vám dává hodně všestrannost v tom, že 369 00:16:38,520 --> 00:16:43,250 schopný říct, že jsem chci tuto konkrétní položky mít toto ID, protože chtějí 370 00:16:43,250 --> 00:16:45,300 udělat hodně věcí s ním, a já jsem jen 371 00:16:45,300 --> 00:16:50,010 chcete definovat styl, určitý styl nebo barvu bez ohledu na tuto položku. 372 00:16:50,010 --> 00:16:52,630 A způsob, jak to udělat, je prostě dávat to ID. 373 00:16:52,630 --> 00:16:55,060 >> A pak, pokud chci mít několik různých položek 374 00:16:55,060 --> 00:16:58,940 které mají, že místo jít a nastavení their-- 375 00:16:58,940 --> 00:17:03,840 místo toho, dělat jej tag, protože by tag 376 00:17:03,840 --> 00:17:07,369 nastavit buňku pro celý tag pro každou dobu se používá, že tag, 377 00:17:07,369 --> 00:17:09,740 můžete nastavit třídu na více položek. 378 00:17:09,740 --> 00:17:15,109 A pak už jen přístup k dané třídě a říkat Chci stylu s třídu, která cestu. 379 00:17:15,109 --> 00:17:17,579 >> A opět, třída může být více různých položek 380 00:17:17,579 --> 00:17:21,150 a ID musí být unikátní. 381 00:17:21,150 --> 00:17:21,849 Velké otázky. 382 00:17:21,849 --> 00:17:25,339 Nějaké další otázky? 383 00:17:25,339 --> 00:17:26,220 OK, úžasné. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Opět platí, že je to, jak se tyto voliče jsou zmíněny v CSS, s hashtag, 386 00:17:35,330 --> 00:17:40,031 s tečkou, nebo bez ničem přiřazení styl nějakého tagu, 387 00:17:40,031 --> 00:17:40,530 jako tělo. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 A máme tady obecný syntax, jak se to dělá. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Chcete-li zopakovat některé nejlepší postupy pro HTML a CSS, 392 00:17:55,680 --> 00:17:59,170 musíme znovu, zavřete všechny značky HTML, které jsme otevřené. 393 00:17:59,170 --> 00:18:03,950 A to, co jsme vás doporučuje udělat pro vaše závěrečných prací, 394 00:18:03,950 --> 00:18:10,560 jakož i pro CS50 finance, je, aby se jisti, že všechny vaše HTML potvrzuje. 395 00:18:10,560 --> 00:18:12,920 A to udělal s W3 Validator. 396 00:18:12,920 --> 00:18:16,940 >> A pak to, co jsme dělali a to, co doporučujeme dělat 397 00:18:16,940 --> 00:18:19,790 odděluje styl, takže CSS z HTML značky. 398 00:18:19,790 --> 00:18:24,210 Takže vše, co se týká jak vaše stránka bude vizuálně vypadat 399 00:18:24,210 --> 00:18:27,330 a jak to bude upraven by měl jít do CSS dokumentu. 400 00:18:27,330 --> 00:18:33,880 A pak se vaše značky říkat, jak se věci jsou ve vztahu k sobě navzájem, je HTML, 401 00:18:33,880 --> 00:18:37,550 a to by mělo jít dovnitř z vašich dokumentů HTML. 402 00:18:37,550 --> 00:18:38,590 Nějaké otázky? 403 00:18:38,590 --> 00:18:39,226 MHM. 404 00:18:39,226 --> 00:18:42,628 >> Diváků: Co přesně se děje na s validaci stránky 405 00:18:42,628 --> 00:18:47,945 když jsme potvrzování HTML, že [neslyšitelný] vytvořil? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Takže what--, že ty. 407 00:18:49,850 --> 00:18:53,020 Takže co přesně se děje Na stránce s validací 408 00:18:53,020 --> 00:18:55,570 a proč musíme udělat, že? 409 00:18:55,570 --> 00:18:59,180 V podstatě, musíme k tomu, že protože mnoho časů, váš prohlížeč, 410 00:18:59,180 --> 00:19:01,390 pokud nechcete uzavřít tag nebo něco takového, 411 00:19:01,390 --> 00:19:05,680 Váš prohlížeč je stále na vykreslení stránku a může stále fungovat, 412 00:19:05,680 --> 00:19:10,840 ale to je nejlepší praxe, aby se ujistil, že jste opět zavřel všechny své značky, 413 00:19:10,840 --> 00:19:13,190 že všechny vaše prvky jsou tak, že by měly být, 414 00:19:13,190 --> 00:19:18,470 a v podstatě, že je touto konvence, které jsou přednastaveny. 415 00:19:18,470 --> 00:19:21,970 >> Je to opět, jen věc, kterou byste měli 416 00:19:21,970 --> 00:19:24,040 je naučit se dělat, na rozdíl od mít 417 00:19:24,040 --> 00:19:25,696 nedbalejší kód a tak podobně. 418 00:19:25,696 --> 00:19:26,688 To jo. 419 00:19:26,688 --> 00:19:27,680 Promiň. 420 00:19:27,680 --> 00:19:29,221 Myslel jsem, že zvyšování ruku. 421 00:19:29,221 --> 00:19:31,240 Publikum: Ne, jen jsem [neslyšitelných]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> Diváků: Děkuji. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Samozřejmě, děkuji. 425 00:19:36,181 --> 00:19:41,680 Takže znovu, děje na tom, jak informace se přenáší 426 00:19:41,680 --> 00:19:44,630 a komunikační modely k přenosu informací. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP prostě znamená, Převodovka Control Protocol a IP 429 00:19:48,600 --> 00:19:51,260 odkazuje na internetový protokol. 430 00:19:51,260 --> 00:19:54,275 A to jen odkazuje na způsob jakým jsou data doručena. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Pokud máme nějaké údaje, které je třeba doručit tak vás-- 433 00:20:02,710 --> 00:20:06,770 uděláte žádost o nějakém serveru. 434 00:20:06,770 --> 00:20:09,800 Například, když jsme pokusu o přístup k cs50.net, 435 00:20:09,800 --> 00:20:12,420 uděláme žádost CS50 serveru a my 436 00:20:12,420 --> 00:20:14,720 vidět, že chceme dostat tento druh informací. 437 00:20:14,720 --> 00:20:19,294 A pak se na základě tohoto protokolu na to, jak je tato informace doručena, 438 00:20:19,294 --> 00:20:21,460 server poskytuje informace zpět k nám, klient. 439 00:20:21,460 --> 00:20:25,590 A pak jsme schopni zobrazit informace pro stránku 440 00:20:25,590 --> 00:20:26,390 a pak ji použít. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Takže Hypertext Transfer Protocol je jen další protokol nebo nastavení 443 00:20:33,050 --> 00:20:37,470 úmluv, které určuje, jak webový prohlížeč a webový server 444 00:20:37,470 --> 00:20:38,890 by měly sdělovat. 445 00:20:38,890 --> 00:20:43,730 A to vše uvedení spolu, HTTP, opět, 446 00:20:43,730 --> 00:20:50,960 definuje, jak jen to hypertext definováno o HTML, které jsme pracovali to, 447 00:20:50,960 --> 00:20:59,500 jak to by mělo být dodáno na vás a jak to data, která je dodávána na vás 448 00:20:59,500 --> 00:21:00,540 dostane k vám. 449 00:21:00,540 --> 00:21:05,990 >> A to je důvod, proč, pokud vy pamatovat ze třídy, měli jsme spoustu žádostí 450 00:21:05,990 --> 00:21:08,970 a měli jsme spoustu syntaxe pro tyto požadavky, které jsme 451 00:21:08,970 --> 00:21:10,250 jít přes právě teď. 452 00:21:10,250 --> 00:21:13,270 Takže znovu, když jsme se poslat požadavek na server, 453 00:21:13,270 --> 00:21:15,920 musíme definovat několik věcí. 454 00:21:15,920 --> 00:21:18,520 Proto musíme najít typ požadavku, že jsme nastavení. 455 00:21:18,520 --> 00:21:22,180 A opět, máme, například, GET je jeden typ metody 456 00:21:22,180 --> 00:21:25,290 že máme v naší žádosti. 457 00:21:25,290 --> 00:21:31,710 >> A pak HTTP / 1.1 je jen Protokol, který používáme v současné době. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Většinu času, že se děje do protokolu, že používáte. 460 00:21:36,890 --> 00:21:40,290 Takže pokud máte dotaz takhle na kvíz. 461 00:21:40,290 --> 00:21:43,120 To je konvence že máme tak daleko. 462 00:21:43,120 --> 00:21:46,580 >> Zpětné lomítko označuje, jaká věcí jsme požádá. 463 00:21:46,580 --> 00:21:52,810 Potom, náš hostitel je, například, v tomto Případ, snažíme se jít na google.com. 464 00:21:52,810 --> 00:21:57,070 Tak tohle je hodnota pro hostitele. 465 00:21:57,070 --> 00:21:59,330 Jedná se o typ žádosti které by mohly být zaslány. 466 00:21:59,330 --> 00:22:02,890 >> A pak typ reakce, které by mohly být odeslán, opět na základě tohoto protokolu, 467 00:22:02,890 --> 00:22:05,190 je opět, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Tak to je zase verze protokolu HTTP. 469 00:22:07,150 --> 00:22:09,730 200 OK je jen stavový kód. 470 00:22:09,730 --> 00:22:12,860 A to v pořádku, je jen fráze na základě tohoto stavového kódu. 471 00:22:12,860 --> 00:22:15,520 >> A pak Content-Type Odkazuje na druh 472 00:22:15,520 --> 00:22:20,295 která je vrácena se vám, že je pro danou webovou stránku, která se zobrazí 473 00:22:20,295 --> 00:22:22,570 a že ve vašem prohlížeči může způsobit později. 474 00:22:22,570 --> 00:22:24,401 A to je text / html. 475 00:22:24,401 --> 00:22:26,660 >> Diváků: Co to 1.1 znamená? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: To je právě verze of-- oh, co 1.1 znamená? 477 00:22:29,910 --> 00:22:37,075 To je jen verze, HTTP Verze protokolu, který jsme používáte. 478 00:22:37,075 --> 00:22:37,700 Velká otázka. 479 00:22:37,700 --> 00:22:38,366 Další otázky? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> Diváků: Mohl byste shrnout Content-Type opravdu rychle? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Takže to je to, co je server. 483 00:22:48,150 --> 00:22:51,020 typ information--, co je typ obsahu bylo otázky. 484 00:22:51,020 --> 00:22:53,400 A tak, že byl typ informace, které se dostanete zpět 485 00:22:53,400 --> 00:22:58,200 ze serveru, typ Data, že prohlížeč pak mohou 486 00:22:58,200 --> 00:23:00,604 vykreslení, které používáte. 487 00:23:00,604 --> 00:23:03,020 Diváků: Je to to, co tato Protokol je ti dělat? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Sorry? 489 00:23:03,390 --> 00:23:05,380 Diváků: Je to to, co protokol říct? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: The protocol-- 491 00:23:05,915 --> 00:23:07,940 Publikum: --what Content-Type je nebo what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: Protokol je založen on-- co je protokol říkám? 493 00:23:12,040 --> 00:23:16,070 Je to přesně tak, jak že tyto informace 494 00:23:16,070 --> 00:23:18,610 se vydal na vás na bázi o jaký druh protokolu 495 00:23:18,610 --> 00:23:21,830 byla tato informace se dostal doručeno zpět k vám. 496 00:23:21,830 --> 00:23:23,500 Dává to smysl druh? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: Vy může myslet protokolu 499 00:23:30,070 --> 00:23:33,300 jak je-- Myslím, že profesor Malan popisoval to 500 00:23:33,300 --> 00:23:36,910 ve třídě jako něco jako je-- to je ekvivalent lidské handshaking. 501 00:23:36,910 --> 00:23:44,930 Řekněme, stejně jako, hej, já jsem žádost a já vědět, jak zacházet HTTP verze 1.1. 502 00:23:44,930 --> 00:23:48,770 A pak server říká, oh, OK, já-- a oba existují. 503 00:23:48,770 --> 00:23:51,337 Také vím, jak se vypořádat s HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 A já jdu dát vám zpět nějaký obsah. 505 00:23:53,170 --> 00:23:56,230 V tomto případě, bude to být typu text / html. 506 00:23:56,230 --> 00:23:58,480 Takže je to trochu jen způsob, z nich communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: Je to jen potvrzující, že jste 508 00:24:00,480 --> 00:24:03,290 a to jak po stejné Protokol a to jak 509 00:24:03,290 --> 00:24:06,620 klient a tak server-- Váš prohlížeč a server-- 510 00:24:06,620 --> 00:24:09,280 trochu vím, co jste mluví, a mají 511 00:24:09,280 --> 00:24:12,557 konvence pro předávání v datech. 512 00:24:12,557 --> 00:24:17,022 >> Diváků: Takže Content-Type part-- Content-Type text / html-- to je 513 00:24:17,022 --> 00:24:18,521 Samostatnou částí stejné zprávě? 514 00:24:18,521 --> 00:24:20,509 Nebo je to součástí řekněme, 200? 515 00:24:20,509 --> 00:24:22,010 Má 200 Řekněte jim, že nebo je-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 říká, že to všechno proběhlo v pořádku. 517 00:24:23,770 --> 00:24:27,900 A pak typ obsahu je něco jako Samostatnou částí stejné zprávě, 518 00:24:27,900 --> 00:24:34,274 a říkat, co mám Vráceno má tento typ text / html. 519 00:24:34,274 --> 00:24:35,690 Je to jen dávat více informací. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Mít něco dodat? 522 00:24:39,995 --> 00:24:40,495 DOBŘE. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Nějaké další otázky o tom myslíte? 525 00:24:46,530 --> 00:24:48,370 Skvělý. 526 00:24:48,370 --> 00:24:54,070 Takže některé další HTTP stavy, které bychom se mohli dostat navíc k 200 OK, 527 00:24:54,070 --> 00:24:59,500 Ty, které jsme viděli možná možná hodně, jsou 403 a 404. 528 00:24:59,500 --> 00:25:05,190 Takže 404, pokud jste se snažili Přístup něco, co neexistuje. 529 00:25:05,190 --> 00:25:10,460 Tak například ve vaší CS50 Finance psets, 530 00:25:10,460 --> 00:25:15,640 pokud jste byli rendering quote.html a jste neměli tento soubor, 531 00:25:15,640 --> 00:25:19,740 ale místo toho jste měli quote.php, že by mělo za následek 404 Not Found 532 00:25:19,740 --> 00:25:21,600 protože soubor nemusí existovat. 533 00:25:21,600 --> 00:25:25,690 >> Pro 403 zakázáno, že odkazuje na oprávnění. 534 00:25:25,690 --> 00:25:31,150 Takže pokud nějaký soubor není čitelné svět, byste mohli dostat 403 se vrátil. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Někteří jiní, že by vás mohly get-- 301, Trvale přesunuto; 537 00:25:37,810 --> 00:25:41,300 302, nalezeno; 304, Modified; 400, Bad Request; 538 00:25:41,300 --> 00:25:47,330 a pak Vnitřní chyba serveru pro 500 a 503, Služba není k dispozici. 539 00:25:47,330 --> 00:25:48,140 Ano. 540 00:25:48,140 --> 00:25:51,490 >> Diváků: Will jsme očekávali pamatovat všechny ty stavy? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: Já bych měl je na tahák. 542 00:25:53,739 --> 00:25:55,146 [SMÍCH] 543 00:25:55,146 --> 00:25:59,954 Diváků: Jsme očekává, vím, co spouští každý z nich? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: Jsou? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: Pro ty, které jsme spustit into-- takže otázka was-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Jsou Očekává se, vědět, co každé z těchto stavu 547 00:26:08,010 --> 00:26:09,330 kódy by mohly být vyvolány? 548 00:26:09,330 --> 00:26:13,240 Takže pro ty, které jsme použili a narazil na, řekl bych, že ano. 549 00:26:13,240 --> 00:26:16,610 Takže jsme určitě viděli 200 OK a přednášel ji psets. 550 00:26:16,610 --> 00:26:19,071 Viděli jsme 403, 404. 551 00:26:19,071 --> 00:26:20,550 Pro ty ostatní? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: Rád bych říkají, 500 se zdá spravedlivé hry. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, jo. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH Blumberg: Jo. 555 00:26:24,246 --> 00:26:27,006 Stačí mít všeobecný pocit z toho, co je způsobuje. 556 00:26:27,006 --> 00:26:28,880 A také právě jimi jména, můžete druh 557 00:26:28,880 --> 00:26:32,890 stejně jako provést kvalifikovaný odhad jako k čemu vlastně způsobilo je. 558 00:26:32,890 --> 00:26:36,919 Například přesunout natrvalo, pravděpodobně Soubor byl přesunut natrvalo. 559 00:26:36,919 --> 00:26:39,328 >> Diváků: Ale na předchozí zkouška, tam byl tak 560 00:26:39,328 --> 00:26:41,050 jak si nás očekávat, že to odpovědět? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: To stálo za nula bodů. 562 00:26:42,883 --> 00:26:45,870 Otázka na 418 na konvici je technicky stav HTTP, 563 00:26:45,870 --> 00:26:47,090 ale stálo to za nula bodů. 564 00:26:47,090 --> 00:26:48,320 Je zřejmé, že nejste Očekává se, že je známe. 565 00:26:48,320 --> 00:26:49,670 >> Diváků: Je to skutečný? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: Je to skutečný člověk, ale to nic neznamená. 567 00:26:51,970 --> 00:26:52,700 Je to jen vtip. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Internetové lidé jsou legrační. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: Velké otázky, chlapi. 571 00:26:59,680 --> 00:27:01,452 Nějaké další otázky? 572 00:27:01,452 --> 00:27:04,891 >> Diváků: Co je vnitřní chyba serveru? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: Vnitřní chyba serveru jen 574 00:27:06,640 --> 00:27:10,050 Znamená to, že jste byli schopen komunikovat 575 00:27:10,050 --> 00:27:13,400 se serverem z nějakého důvodu. 576 00:27:13,400 --> 00:27:15,400 Takže to není nezbytně něco, co má co do činění 577 00:27:15,400 --> 00:27:19,170 s klientem, nebo něco takového. 578 00:27:19,170 --> 00:27:22,170 Nevím o žádné konkrétní příklad že jsme přešli k vysvětlení, 579 00:27:22,170 --> 00:27:23,000 ale jo. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: Jistě. 581 00:27:23,250 --> 00:27:25,625 Tak například, jako je ať to že jste pracovali na mashup 582 00:27:25,625 --> 00:27:30,440 a server Google klesly pro některé Důvodem, výpadek proudu, řekněme. 583 00:27:30,440 --> 00:27:33,400 To by být interní server Chyba, nebo nějaký druh of-- tě rád 584 00:27:33,400 --> 00:27:34,630 by se nedostal odpověď zpět. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Jo. 586 00:27:35,260 --> 00:27:37,050 Je to jen, když jste schopen komunikovat 587 00:27:37,050 --> 00:27:40,299 se serverem z nějakého důvodu následujících důvodů to jít dolů, nebo nějaký jiný důvod. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Takže skákání do PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, na rozdíl od HTML, je programovací jazyk. 591 00:27:49,930 --> 00:27:54,820 A my jsme začali používat, protože je to velmi užitečné pro vývoj webových aplikací. 592 00:27:54,820 --> 00:27:56,940 >> Poprvé jsme se používal to v CS50 financí. 593 00:27:56,940 --> 00:28:02,240 A to v podstatě pomáhá nám přivést spolu toto značení, design, 594 00:28:02,240 --> 00:28:07,460 a jak vlastně používat údaje zobrazit věci na webové stránce. 595 00:28:07,460 --> 00:28:11,870 Takže PHP samo o sobě znamená, že PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 takže je to rekurzivní backnorym sám. 597 00:28:15,360 --> 00:28:22,330 A otevření značky pro PHP jsme levý a pravou šipku s otazníky 598 00:28:22,330 --> 00:28:23,060 a php. 599 00:28:23,060 --> 00:28:25,890 >> Takže jsme již viděli spoustu to. 600 00:28:25,890 --> 00:28:29,150 Teď jsme to jen tak přejít některé základní věci o tom. 601 00:28:29,150 --> 00:28:32,280 Takže s PHP, proměnné názvy začínají znakem dolaru. 602 00:28:32,280 --> 00:28:35,660 Nechceme specifikovat, znovu, typ proměnná ještě. 603 00:28:35,660 --> 00:28:38,450 Stejně jako jsme to udělali s C, nepotřebujeme k tomu, že. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Můžeme dělat spoustu různých věci s proměnnými. 606 00:28:44,490 --> 00:28:47,750 Můžeme dát dohromady tím, že je zřetězením 607 00:28:47,750 --> 00:28:52,900 s tečkové notace, který jsme nemohli udělat v C znovu. 608 00:28:52,900 --> 00:28:57,490 Opět platí, že máme trochu větší univerzálnost s PHP, pokud jde o proměnných. 609 00:28:57,490 --> 00:29:00,080 Opět platí, že nemáme mít hlavní funkci. 610 00:29:00,080 --> 00:29:03,370 >> A PHP je interpretován na rozdíl od zkompilovaný, 611 00:29:03,370 --> 00:29:09,970 Tak, jak jsme se vytvořit pro soubory C, nemusíme dělat, že pro PHP. 612 00:29:09,970 --> 00:29:15,440 Ale spíše tak, že jazyka je provozován sám o sobě, je interpretován. 613 00:29:15,440 --> 00:29:18,550 A pak volně zadali prostě znamená, že my 614 00:29:18,550 --> 00:29:22,490 Nemusíte specifikovat proměnnou typ, a typy proměnných 615 00:29:22,490 --> 00:29:25,415 se rozumí za běhu. 616 00:29:25,415 --> 00:29:29,185 >> Diváků: Ale to, co jste udělal mysli dot konkatenace? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Jistě. 618 00:29:30,060 --> 00:29:37,660 Když chceme dát věci together-- takže pokud bychom měli nějaké proměnné 619 00:29:37,660 --> 00:29:41,500 měl hodnotu 3 a my jsme měli další proměnná, která měla hodnotu řetězce, 620 00:29:41,500 --> 00:29:45,920 bychom mohli dát dohromady proměnné tím, že tečku mezi nimi 621 00:29:45,920 --> 00:29:46,970 a zřetězení je. 622 00:29:46,970 --> 00:29:52,670 Nebo bychom mohli vytvořit proměnná s názvem název 623 00:29:52,670 --> 00:29:56,900 a dát to dohromady zřetězení dvou řetězců. 624 00:29:56,900 --> 00:30:00,680 >> Takže pokud jsme měli řetězec v double citace a klademe tečku za ním, 625 00:30:00,680 --> 00:30:03,660 a pak jsme měli další řetězec, který by vytvořila řetězec úplně. 626 00:30:03,660 --> 00:30:05,242 >> Diváků: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA LOTYŠSKO: Bylo to jasné? 628 00:30:06,450 --> 00:30:07,099 Diváků: Jo. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Ano. 631 00:30:08,766 --> 00:30:11,146 >> Diváků: Když se řekne vykládán spíše než zkompilovaný, 632 00:30:11,146 --> 00:30:14,160 mluvíte o vás ne musí být co nejkonkrétnější, pokud 633 00:30:14,160 --> 00:30:15,906 jde o PHP ve srovnání s C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Když říkáme, vykládat tak, na rozdíl od zkompilovaný, 636 00:30:20,710 --> 00:30:21,850 Co máme na mysli? 637 00:30:21,850 --> 00:30:26,220 Takže to znamená, že nepotřebujeme spustitelné soubory spustit PHP. 638 00:30:26,220 --> 00:30:29,870 To znamená, že to běží, jak to chodí. 639 00:30:29,870 --> 00:30:31,650 Dává to smysl? 640 00:30:31,650 --> 00:30:32,495 Trochu více. 641 00:30:32,495 --> 00:30:34,620 HANNAH Blumberg: Takže vy může myslet na tlumočníka 642 00:30:34,620 --> 00:30:38,980 jako další program, který je zodpovědný pro přechod řádek po řádku pomocí PHP 643 00:30:38,980 --> 00:30:42,745 a vlastně spuštěním, jak protichůdný k sestavování to všechno až do binární. 644 00:30:42,745 --> 00:30:46,050 To není ve skutečnosti nic neznamená o tom, jak specifické musíme být. 645 00:30:46,050 --> 00:30:49,470 Stále potřebujeme být přesné, a ne zapomněli středník, a ujistěte se, 646 00:30:49,470 --> 00:30:51,470 máte znak dolaru, a podobné věci. 647 00:30:51,470 --> 00:30:52,240 Dobrá otázka. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Jo. 649 00:30:53,115 --> 00:30:55,590 Takže řádek po řádku, as na rozdíl od se soubory C, 650 00:30:55,590 --> 00:30:59,100 musíme celý finále než budeme moci skutečně spustit. 651 00:30:59,100 --> 00:31:00,360 To je hlavní rozdíl. 652 00:31:00,360 --> 00:31:02,655 Ale opět, nemůžeme opravdu méně konkrétní. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Takže pole v PHP představují vlastně objednal mapa. 655 00:31:13,950 --> 00:31:17,550 >> Takže pole přidružených hodnot ke klíčům. 656 00:31:17,550 --> 00:31:23,350 Tyto dva způsoby, jak deklarovat pole, na základě této syntaxi, 657 00:31:23,350 --> 00:31:26,380 můžeme být více explicitní když říká, máme řadu 658 00:31:26,380 --> 00:31:31,010 a máme tuto key1, která mapuje tento hodnota1, key2, která mapuje hodnota2. 659 00:31:31,010 --> 00:31:34,660 Nebo můžeme jen vytvořit pole , který obsahuje hodnoty sám 660 00:31:34,660 --> 00:31:38,360 a pak jsou klíče chápat způsobem. 661 00:31:38,360 --> 00:31:40,000 Jakékoliv dotazy na to? 662 00:31:40,000 --> 00:31:42,500 >> Diváků: Co by klíče se v druhém příkladu? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: Například, je to jen klíče v této nemusí nutně 667 00:31:55,780 --> 00:31:56,550 dělat rozdíl. 668 00:31:56,550 --> 00:32:01,720 Prostě definovat, jak je to možné použít hodnoty uvnitř ní. 669 00:32:01,720 --> 00:32:08,660 Takže pokud jsme měli foreach smyčka v PHP, který by 670 00:32:08,660 --> 00:32:14,760 nám umožní projít všechny hodnoty, můžeme jít přes všechny hodnoty, 671 00:32:14,760 --> 00:32:19,570 i když jsme měli, nebo že není definován konkrétní klíč v rámci webu 672 00:32:19,570 --> 00:32:20,820 předchozí syntax. 673 00:32:20,820 --> 00:32:23,460 >> Takže i tento druh z pole, mohli bychom ještě 674 00:32:23,460 --> 00:32:26,260 mají smyčky foreach že prochází každý 675 00:32:26,260 --> 00:32:31,240 hodnot v klíči v poli. 676 00:32:31,240 --> 00:32:36,180 Takže syntaxi foreach smyčka, začneme s řadou. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Tato $ arr proměnná je naše skutečná array , že je definována v předchozí snímek 679 00:32:43,900 --> 00:32:47,550 jako hodnota, které doslova jde přes každou z hodnot, 680 00:32:47,550 --> 00:32:50,122 bez ohledu na to, zda jsme měl klíč, nebo ne. 681 00:32:50,122 --> 00:32:53,080 A pak můžeme něco udělat s hodnota uvnitř smyčky foreach. 682 00:32:53,080 --> 00:32:57,730 Takže znovu, pokud jsme měli pole takhle tady created-- 683 00:32:57,730 --> 00:33:03,270 takže máme klíč foo a hodnoty bar, klíč Baz a hodnotu qux-- 684 00:33:03,270 --> 00:33:09,730 můžeme mít smyčky foreach, který prochází pole jako na hodnoty klíče 685 00:33:09,730 --> 00:33:11,900 a pak dělat něco s klíčem a / nebo hodnoty. 686 00:33:11,900 --> 00:33:15,980 Ale ne nutně vždy musí mít foreach smyčky, která 687 00:33:15,980 --> 00:33:19,410 prochází polem jako klíčový mapy do hodnoty. 688 00:33:19,410 --> 00:33:26,060 Můžeme jít přes foreach smyčky pole jako hodnotu. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: A myslím, že to-- byla vaše otázka, co 690 00:33:28,990 --> 00:33:31,229 je implicitní index? 691 00:33:31,229 --> 00:33:31,895 Diváků: Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH Blumberg: Jo, jo. 694 00:33:33,406 --> 00:33:36,150 Takže v podstatě, pokud nechcete zadat klíč, to bude 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Jo. 696 00:33:37,140 --> 00:33:41,718 Stejně jako v C, je to nula indexované pokud nechcete zadat klíč. 697 00:33:41,718 --> 00:33:42,384 Diváků: Omlouvám se. 698 00:33:42,384 --> 00:33:43,827 Mohl byste zkusit mluvit trochu hlasitěji? 699 00:33:43,827 --> 00:33:45,270 Mám trochu potíže všechno sluchu. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Je mi to moc líto. 701 00:33:46,478 --> 00:33:48,439 Jo samozřejmě. 702 00:33:48,439 --> 00:33:50,230 Tak chceš se mnou jít přes to znovu? 703 00:33:50,230 --> 00:33:51,680 Nebo je tohle-- 704 00:33:51,680 --> 00:33:54,930 Diváků: Tak na předchozí slide-- pokud můžete prostě vrátit na jednu sekundu. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Samozřejmě, je mi líto. 706 00:33:57,313 --> 00:33:59,237 Diváků: Takže druhý array zde není 707 00:33:59,237 --> 00:34:04,135 Zdá se, že mají hodnotu pro zadání, druh [? příčina. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Dobře, dobře. 709 00:34:05,343 --> 00:34:07,608 Diváků: Tak jak to funguje když říkáte, že je to všechno, nebo nic. 710 00:34:07,608 --> 00:34:08,969 Pro mě, že vypadá jako A [? foo?] už. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Jo, jo. 712 00:34:10,093 --> 00:34:12,969 Takže znovu, to je objednat mapa v tomto smyslu 713 00:34:12,969 --> 00:34:15,639 , že se rozumí, například indexy 714 00:34:15,639 --> 00:34:20,159 zde je možno chápat jako 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Opět platí, že to mají ti, Indexy je naše ekvivalentní 716 00:34:25,929 --> 00:34:28,980 mít klíče mapovaných na hodnoty. 717 00:34:28,980 --> 00:34:34,710 Takže pokud naše klíčové bylo 0-- líto. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: Ne, Je tu křída sem. 719 00:34:36,524 --> 00:34:36,929 Ve skutečnosti je to opravdu pěkné. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: To je skvělé. 721 00:34:37,460 --> 00:34:38,260 DOBŘE. 722 00:34:38,260 --> 00:34:49,489 Takže znovu, $ arr 0 by bylo klíč pro hodnotu 1. 723 00:34:49,489 --> 00:34:51,138 0 by být klíčem pro hodnotu 1. 724 00:34:51,138 --> 00:34:51,971 Diváků: Je mi to líto. 725 00:34:51,971 --> 00:34:53,190 Je to neviditelné. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: Dobře, nevadí. 727 00:34:53,659 --> 00:34:54,980 Křída byl špatný nápad. 728 00:34:54,980 --> 00:34:58,030 Beru to zpátky. 729 00:34:58,030 --> 00:35:01,425 Můžete si myslet klíčů as 0 mapy na hodnotu 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Jo. 731 00:35:02,300 --> 00:35:04,630 Takže to je 0, to je 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Ty mohou být vaše klíče. 733 00:35:05,760 --> 00:35:10,020 Můžete si myslet z nich as-- jo. 734 00:35:10,020 --> 00:35:12,740 A tak místo toho, explicitní klíče, jsou 735 00:35:12,740 --> 00:35:17,180 nějak chápáno jako indexy začínající při 0 ° C. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 Křída nepomohlo. 738 00:35:24,820 --> 00:35:25,722 To jo. 739 00:35:25,722 --> 00:35:30,914 >> Obecenstvo: pro foreach smyčky, Pokud bychom chtěli zobrazit jako hodnota, 740 00:35:30,914 --> 00:35:33,245 by to prostě automaticky index na 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Jo. 742 00:35:34,120 --> 00:35:35,745 To by projít každou z hodnot. 743 00:35:35,745 --> 00:35:39,130 Diváků: [Neslyšitelné] as 0 nebo by to prostě udělat 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Ty by musely tedy jako znak dolaru a pak 745 00:35:43,710 --> 00:35:46,266 někteří název proměnné, hodnota. 746 00:35:46,266 --> 00:35:47,182 Diváků: [Neslyšitelné]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Sorry? 749 00:35:50,964 --> 00:35:52,839 Publikum: Omlouvám se, že jsem Jen se snažím vzpomenout. 750 00:35:52,839 --> 00:35:57,190 Jak byste si, že když to dokážeš automatické indexace je jen 0 z? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Tak jak byste to udělal pokud jste neměli konkrétní jména klíčů? 752 00:36:00,780 --> 00:36:01,710 >> Diváků: Jo. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: Ty by prostě define-- jen říct, sami sebe jako nějaká jména. 754 00:36:07,820 --> 00:36:17,950 Takže ve vašich psets, vy by mohla pamatovat foreach $ řádek $ jako řádky, 755 00:36:17,950 --> 00:36:24,610 jsme vytvořili sami tuto $ řádek rčení chceme projít řadě, jak $ řádky. 756 00:36:24,610 --> 00:36:28,360 I když jsme neměli Tento explicitní $ řádků definovaný, 757 00:36:28,360 --> 00:36:31,990 mohli bychom prostě jít a říkají, že toto může být náš klíč, 758 00:36:31,990 --> 00:36:33,615 a prostě projít každou z hodnot. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> Diváků: Takže je hodnota nová proměnná vytváříme uložit [neslyšitelných]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Takže to není neodmyslitelně nový variabilní. 763 00:36:49,990 --> 00:37:00,310 Je to proměnná, která odkazuje na uvnitř pole na každý z nich. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: Je to nový název proměnné. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Jo, je to nový název proměnné, 766 00:37:04,018 --> 00:37:06,680 ale není to inherently-- jo. 767 00:37:06,680 --> 00:37:08,950 Je to jen nová proměnná které můžete udělat. 768 00:37:08,950 --> 00:37:12,680 Tak, jak jsme to udělali dělat $ řadě, jak $ řádky, řádky 769 00:37:12,680 --> 00:37:17,980 byl nový název proměnné, které jsme mohl vytvořit v naší foreach smyčce. 770 00:37:17,980 --> 00:37:22,065 Nemusí se preexist před tím. 771 00:37:22,065 --> 00:37:25,777 >> Diváků: Mohl si projít Logika pro každý, na příkladu tam? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: Mhm. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Promiň. 775 00:37:32,080 --> 00:37:33,780 Tady je příklad. 776 00:37:33,780 --> 00:37:34,280 Jistě. 777 00:37:34,280 --> 00:37:38,950 Takže pro každý tak array-- to znamená, že jít do tohoto pole 778 00:37:38,950 --> 00:37:43,930 jako klíč value--, co se děje projít tohoto pole 779 00:37:43,930 --> 00:37:49,480 a jako první jít a dostat foo se key foo a hodnota bar. 780 00:37:49,480 --> 00:37:51,570 A pak na druhý iteraci smyčky for, 781 00:37:51,570 --> 00:37:55,090 že to bude projít a vzít klíč baz a hodnota qux. 782 00:37:55,090 --> 00:38:00,512 A pak můžete něco udělat s jeden z nich nebo oba. 783 00:38:00,512 --> 00:38:03,488 >> Diváků: Takže myšlenka které mají klíčový bod na hodnotu, 784 00:38:03,488 --> 00:38:07,470 co jste skončili přístup? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: Jaká je idea mít klíč ukazující na hodnotu? 786 00:38:10,680 --> 00:38:16,400 Je to jen další konvence, další způsob, jak prochází polem 787 00:38:16,400 --> 00:38:22,600 a jsou schopni přistupovat buď klíč nebo hodnotu, nebo obojí a jejich použití. 788 00:38:22,600 --> 00:38:27,100 >> Diváků: Jaká je role pro nařídit, že foreach pracuje v? 789 00:38:27,100 --> 00:38:29,250 Takže pokud bychom měli přidat prvky do pole později 790 00:38:29,250 --> 00:38:32,140 by ti, být první z nich zavolal foreach poli, 791 00:38:32,140 --> 00:38:33,750 nebo by to bylo později? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Takže to, co je objednávka, že foreach 793 00:38:37,770 --> 00:38:39,210 smyčka prochází pole v? 794 00:38:39,210 --> 00:38:42,220 To prochází první element na poslední prvek, 795 00:38:42,220 --> 00:38:43,400 na poslední přidaný prvek. 796 00:38:43,400 --> 00:38:48,020 Pokud přidáte prvky později, oni odkázaný být accessed-- první prvky by 797 00:38:48,020 --> 00:38:51,410 získat přístup jako první prvky pole, 798 00:38:51,410 --> 00:38:57,620 a pak bych šel přes každého prvky jako jakýsi ordered-- 799 00:38:57,620 --> 00:39:02,930 není objednané, ale tak, že jejich uvedení do pole. 800 00:39:02,930 --> 00:39:06,855 >> Diváků: Takže nové prvky jsou přidány později? 801 00:39:06,855 --> 00:39:10,680 Takže oni added-- budou být poslední z nich v [? opakování. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: Nové prvky can-- v podstatě, když jsou přidány nové prvky, 803 00:39:14,280 --> 00:39:16,520 se přidali do konce pole? 804 00:39:16,520 --> 00:39:17,632 >> Diváků: Jo. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Myslím, že ano. 806 00:39:18,840 --> 00:39:20,850 Ano. 807 00:39:20,850 --> 00:39:24,330 A pak se svým smyčky foreach, poté, co jste přidali nové prvky 808 00:39:24,330 --> 00:39:26,790 a jít přes ně, nové prvky by 809 00:39:26,790 --> 00:39:30,930 být accessed-- nového prvku, pokud je to přidána jako poslední, bylo by být přístupné jako poslední. 810 00:39:30,930 --> 00:39:34,416 >> Diváků: Můžete jen dát příklad něčeho, co by [neslyšitelných] 811 00:39:34,416 --> 00:39:37,404 s něčím s hodnotou jako [neslyšitelný] nebo hodnoty, 812 00:39:37,404 --> 00:39:38,910 Líbí se mi, jak byste formátovat, že? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Jistě. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Mohu uvést příklad toho, co budeme dělat s hodnotou? 816 00:39:46,410 --> 00:39:52,440 Takže to, co si kluci by mohlo být obeznámeni s je, že jsme prošli pole 817 00:39:52,440 --> 00:39:55,380 a v podstatě tištěný každý z prvků, 818 00:39:55,380 --> 00:40:00,910 například jako součást objednal seznam nebo něco, co. 819 00:40:00,910 --> 00:40:02,674 Dává to smysl, nebo chceme to-- 820 00:40:02,674 --> 00:40:04,340 Diváků: Můžeme vytiskněte si tyto hodnoty ven? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Jo, mohli bychom vytisknout a pak v podstatě $ value, protože v 822 00:40:13,220 --> 00:40:16,570 že konkrétní hodnota, budeme tisk hodnotu uvnitř ní. 823 00:40:16,570 --> 00:40:20,150 Takže pokud jsme byli na naší první iteraci to a my tištěný $ value, 824 00:40:20,150 --> 00:40:23,775 budeme tisknout bar. 825 00:40:23,775 --> 00:40:27,020 >> Diváků: Jsou zde také smyčky v PHP nebo jen foreach smyčky? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: Existuje i pro smyček v PHP. 827 00:40:30,430 --> 00:40:33,399 A jejich logika je většinou stejně jako to, co jste byli zvyklí. 828 00:40:33,399 --> 00:40:34,690 Diváků: Takže jeho hodnota je null. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: Je to jako stejný. 830 00:40:35,090 --> 00:40:35,590 To jo. 831 00:40:35,590 --> 00:40:37,747 Diváků: Já jsem prostě jít zeptat. 832 00:40:37,747 --> 00:40:39,695 Takže když jste prohlásit pole, nepotřebujete 833 00:40:39,695 --> 00:40:42,617 říct, co velikost to bude být, což znamená, že můžete jen 834 00:40:42,617 --> 00:40:44,417 přidat a odnést prvky [neslyšitelných]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Jo. 836 00:40:45,250 --> 00:40:45,750 Jo. 837 00:40:45,750 --> 00:40:46,251 Přesně. 838 00:40:46,251 --> 00:40:48,875 Když jsme se prohlásit pole, my Nemusíte říkat, co velikost to je, 839 00:40:48,875 --> 00:40:51,022 takže můžeme jen přidat prvky na to i později. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Další otázky? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Takže přinášet PHP a HTML dohromady, to, co jsme seen-- dobře, 844 00:41:05,950 --> 00:41:15,130 Například, v tomto příkladu, máme HTML forma, která má vstupní pole. 845 00:41:15,130 --> 00:41:18,830 >> A je vstupní pole jen název a pak má tlačítko Odeslat. 846 00:41:18,830 --> 00:41:26,040 A když stisknete tlačítko Odeslat Tlačítko, v naší hello.php souboru, 847 00:41:26,040 --> 00:41:32,130 protože metoda pro formu je dostat, můžeme přistupovat co je v názvu 848 00:41:32,130 --> 00:41:40,360 tím získat globální proměnnou, která je-- syntaxe pro to je $ _GET. 849 00:41:40,360 --> 00:41:44,520 A pak můžeme získat přístup bez ohledu na Uživatel vstup uvnitř daného formuláře pro název 850 00:41:44,520 --> 00:41:47,410 zadáním názvu této oblasti. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Jakékoliv další dotazy nebo jakékoli Otázky týkající se této konkrétní příklad? 853 00:41:55,060 --> 00:41:58,275 >> Diváků: Kde je PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Tady. 855 00:41:59,150 --> 00:42:01,150 Tak tohle je naše otevírací tag pro PHP. 856 00:42:01,150 --> 00:42:01,530 >> Publikum: Jo, jasně. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Ano. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH Blumberg? Odpověď: = je zkratka k tomu je PHP a jen ozvěna. 860 00:42:09,609 --> 00:42:10,150 Diváků: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Jo, je mi líto. 862 00:42:10,720 --> 00:42:12,040 Měl jsem udělal to jasné. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: Print. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: Je to prostě funkce který nám umožňuje tisknout něco. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Velká otázka. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Takže going-- ano. 869 00:42:25,495 --> 00:42:31,940 >> Diváků: Je tam bude dost trochu ruky kódování PHP a HTML 870 00:42:31,940 --> 00:42:33,450 na kvíz 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: Tam může být slušné množství interpretace 873 00:42:38,810 --> 00:42:43,330 PHP a HTML, ne nutně jako obrovské množství kódování, 874 00:42:43,330 --> 00:42:46,960 i když budete muset napsat foreach smyčky, i když, je pro smyčce. 875 00:42:46,960 --> 00:42:49,790 Jedno ze smyček, které jsme pokrytí tady je poctivá hra. 876 00:42:49,790 --> 00:42:51,889 A to je většinou to. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: Já bych být připraven. 878 00:42:53,430 --> 00:42:57,010 Stejným způsobem, že jsme vás o to prosil napsat spoustu funkcí C na kvíz 0, 879 00:42:57,010 --> 00:42:59,766 Chtěl bych být připraveni dělat Totéž v PHP a JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Jo. 881 00:43:00,640 --> 00:43:03,210 HANNAH Blumberg: Řekl bych, little--, jako že nejsme 882 00:43:03,210 --> 00:43:06,251 bude, abyste napsat obrovský HTML stránky jen proto, že je to trochu 883 00:43:06,251 --> 00:43:08,240 nudné, ale můžete mít dílů. 884 00:43:08,240 --> 00:43:09,310 To je naprosto fér hra. 885 00:43:09,310 --> 00:43:11,082 Stejně jako malý HTML stránky, úplně fér. 886 00:43:11,082 --> 00:43:11,623 Diváků: OK. 887 00:43:11,623 --> 00:43:13,814 Jak se asi v JavaScriptu stejně? 888 00:43:13,814 --> 00:43:14,730 HANNAH Blumberg: Jo. 889 00:43:14,730 --> 00:43:15,250 JavaScript je fér. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Jo. 891 00:43:15,635 --> 00:43:16,801 To je naprosto fér hra. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Dostaneme se, že v, jako je 10 minut. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, znovu, Strukturovaný dotazovací jazyk. 894 00:43:23,750 --> 00:43:28,651 To v podstatě nám umožňuje spravovat data v relační databázový 895 00:43:28,651 --> 00:43:29,150 systém. 896 00:43:29,150 --> 00:43:31,149 To v podstatě znamená, jen že máme někde 897 00:43:31,149 --> 00:43:37,980 ukládat některá data, že bychom mohli chtít použití na internetových stránkách nebo v nějaké jiné formě. 898 00:43:37,980 --> 00:43:42,190 A pak jsme se dostat dotazy Informace z naší databáze, 899 00:43:42,190 --> 00:43:44,320 nebo vložit informace v nich. 900 00:43:44,320 --> 00:43:47,560 Mnoho společného ones-- UPDATE, INSERT, SELECT a DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Takže pro UPDATE, to je syntaxe pro aktualizaci dat v databázi. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Aktualizace tuto tabulku nazvanou stůl tím, že říká SET, 904 00:43:57,340 --> 00:44:04,170 můžeme nastavit některé hodnoty ve všech řádků na rovné něco jiného. 905 00:44:04,170 --> 00:44:09,410 Takže můžeme také určit některé konkrétní položky, které chceme změnit 906 00:44:09,410 --> 00:44:11,240 a to může být pomocí WHERE. 907 00:44:11,240 --> 00:44:16,380 A můžeme určit, že chceme jen upravit některé řádky, kde dům, 908 00:44:16,380 --> 00:44:19,830 kdybychom měli tabulku studentů a všichni studenti měli dům, 909 00:44:19,830 --> 00:44:24,890 tak bychom jen změnit některé hodnoty kde dům se rovná jirchář 910 00:44:24,890 --> 00:44:25,430 například. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Pro INSERT, můžeme vložit určité hodnoty do tabulky. 913 00:44:31,800 --> 00:44:35,150 Takže INSERT INTO tabulky, a pak se hodnoty, 914 00:44:35,150 --> 00:44:39,080 a pak se v závorkách, specifikujeme které hodnoty chcete vložit. 915 00:44:39,080 --> 00:44:43,220 Takže INSERT INTO tabulky, col1 a col2, je hodnota val1 a hodnota2. 916 00:44:43,220 --> 00:44:48,930 Takže to v podstatě vloží nový řádek do tabulku, která obsahuje hodnoty 1 a 2 917 00:44:48,930 --> 00:44:50,850 Ve sloupci 1 a 2. 918 00:44:50,850 --> 00:44:54,760 >> A pak budeme jít přes rychlý příklad toho, jak to vypadá 919 00:44:54,760 --> 00:44:56,310 stejně jako v naší databázi trochu. 920 00:44:56,310 --> 00:44:58,685 Ale to, že jsem v konečném dotaz že budeme jít přes, 921 00:44:58,685 --> 00:45:01,450 SELECT, to nám právě umožňuje k výběru dat z tabulky 922 00:45:01,450 --> 00:45:03,080 eventuálně používat později. 923 00:45:03,080 --> 00:45:05,830 A způsob, jak to udělat, je, že jsme stačí uložit jej do nějaké proměnné. 924 00:45:05,830 --> 00:45:07,780 A pak můžeme případně znovu použít. 925 00:45:07,780 --> 00:45:10,260 >> Takže SELECT hvězda znamená vyberte všechny. 926 00:45:10,260 --> 00:45:13,280 To je jen zkratka pro výběr všechny. 927 00:45:13,280 --> 00:45:19,760 FROM stolu, kde hledáme pro některé specifické podmínky, 928 00:45:19,760 --> 00:45:22,290 tak kde sloupec se rovná něco, například. 929 00:45:22,290 --> 00:45:24,410 Pokud bychom jen chtěli vybrat vše z tabulky, 930 00:45:24,410 --> 00:45:28,400 to jen vybere všechny sloupce a všechny řádky z tabulky. 931 00:45:28,400 --> 00:45:32,040 >> A pak DELETE FROM tabulka WHERE col rovná něco, 932 00:45:32,040 --> 00:45:36,440 to jen odstraní některé řádek z našeho stolu 933 00:45:36,440 --> 00:45:38,860 kde máme nějaké specifické podmínky. 934 00:45:38,860 --> 00:45:41,870 V tomto případě, podmínky jsou sloupec se rovná něco. 935 00:45:41,870 --> 00:45:43,460 Takže jen rychlý příkladem. 936 00:45:43,460 --> 00:45:49,100 Máme-li tuto tabulku tady a my vložte ji do tabulky, tyto hodnoty, 937 00:45:49,100 --> 00:45:50,400 že by vložení nového řádku. 938 00:45:50,400 --> 00:45:56,380 A kdybychom měli auto-přírůstek, to by jen zvýšit naši ID od 0 do 1 až 2. 939 00:45:56,380 --> 00:46:00,010 >> Pokud jsme vybrali všichni ze studentů to, Jen vrátí všechna pole a všechny řádky. 940 00:46:00,010 --> 00:46:02,430 Kde rok je větší než nebo se rovná 2016, 941 00:46:02,430 --> 00:46:04,390 že by prostě vrátí Hannah a já. 942 00:46:04,390 --> 00:46:08,360 A pak, pokud jsme právě zvolena id rok a rok od studentů 943 00:46:08,360 --> 00:46:11,710 kde dům je Cabot dům, že by se opět vrátit Hannah a já. 944 00:46:11,710 --> 00:46:14,430 >> Pak, pokud jsme se zrušuje od studentů kde název je rovno Rob, 945 00:46:14,430 --> 00:46:16,760 které by odstranit celý řádek. 946 00:46:16,760 --> 00:46:19,696 A pak, když jsme se nastavit jméno, UPDATE studenti 947 00:46:19,696 --> 00:46:21,570 SET název rovná Daven KDE Dům je rovna 948 00:46:21,570 --> 00:46:27,010 Cabot dům, který půjde do ty řádky a aktualizovat název. 949 00:46:27,010 --> 00:46:31,470 >> A pak několik datových typů SQL jsou CHAR, VARCHAR, INT, a plavidlo. 950 00:46:31,470 --> 00:46:32,760 Jsou to poctivá hra. 951 00:46:32,760 --> 00:46:36,740 Chtěl bych jít znovu a ujistěte se, že víte, 952 00:46:36,740 --> 00:46:40,930 a mít je na vaší tahák, co každý z těchto znaků, 953 00:46:40,930 --> 00:46:44,140 byly použity pro to, co jste použili je na svých psets, 954 00:46:44,140 --> 00:46:48,050 a ujistěte se, že jste se seznámili a pohodlné s muset vybrat 955 00:46:48,050 --> 00:46:51,450 z různých typů dat ve vašem pset. 956 00:46:51,450 --> 00:46:51,950 Ano. 957 00:46:51,950 --> 00:46:54,300 >> Diváků: Co to bylo, že tabulka uložena? 958 00:46:54,300 --> 00:46:57,119 Ano, pokud je tato tabulka uložena? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: No, právě teď, to není uloženo. 960 00:46:59,160 --> 00:47:00,700 V každém případě, pokud je tato tabulka uložena? 961 00:47:00,700 --> 00:47:04,503 Ale to může být uloženo v databázi SQL. 962 00:47:04,503 --> 00:47:07,330 >> Diváků: A kde je SQL databáze? 963 00:47:07,330 --> 00:47:11,200 V počítači, online Někde, server? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: To může být počet různých věcí. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: jsme propojen s SQL tabulky většinou s phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 A tak bychom mohli požádat server uložit je pro nás. 967 00:47:22,060 --> 00:47:23,830 Mohli bychom je uložit na vlastním počítači. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: Záleží jen na jak chcete, aby to pro sebe. 969 00:47:27,950 --> 00:47:30,075 Ale my jsme byli skladování je, jak bylo uvedeno Hannah, 970 00:47:30,075 --> 00:47:31,755 na phpMyAdmin, který je online. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 A pak způsob, jakým využíváme PHP a SQL, uložíme ho 973 00:47:39,280 --> 00:47:43,450 do nějaké proměnné co jsme dotázán na. 974 00:47:43,450 --> 00:47:48,370 >> Takže pokud budeme-li vybrat všechny z historie kde user_id rovná ID relace, 975 00:47:48,370 --> 00:47:53,900 že by vybrat všechny řádky pro konkrétní osobu, která 976 00:47:53,900 --> 00:47:58,327 je zaznamenána z historie stůl a třídit je do řad. 977 00:47:58,327 --> 00:48:00,410 Cool věc je vědět, je že funkci dotazu CS50 je 978 00:48:00,410 --> 00:48:02,180 chrání proti SQL injection tagy. 979 00:48:02,180 --> 00:48:07,420 To prostě znamená, že dbá na to, vstup, který je zadán správný 980 00:48:07,420 --> 00:48:09,920 a že osoba, která vstupuje do vstupu 981 00:48:09,920 --> 00:48:15,100 se nesnaží vstup některé typy škodlivého Kód buď klesnout naše stoly 982 00:48:15,100 --> 00:48:17,305 nebo odstranit všechno uvnitř naší databázi. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Rychlý Přehled Model Model View Controller, 985 00:48:23,400 --> 00:48:27,360 je to jen způsob, jak organizovat a přemýšlet o kódu. 986 00:48:27,360 --> 00:48:29,100 Je to opět, design paradigma. 987 00:48:29,100 --> 00:48:33,380 Znamená to, že jsme can-- a je to dobré praxe 988 00:48:33,380 --> 00:48:37,790 k oddělení jednotlivých částí z našeho kódu a to, co 989 00:48:37,790 --> 00:48:40,530 ovládání do těchto tří paradigmat. 990 00:48:40,530 --> 00:48:46,700 >> Takže náš pohled je nejčastěji naše šablony, naše dispozice, jak 991 00:48:46,700 --> 00:48:48,260 že jsme si stanovili, jak náš kód vypadá. 992 00:48:48,260 --> 00:48:55,190 To je hlavně naše CSS souborů a způsob, jakým že jsme definovali návrh našeho kódu, 993 00:48:55,190 --> 00:48:55,710 v podstatě. 994 00:48:55,710 --> 00:48:59,280 Náš regulátor je většinou to, co jsme dělali s PHP soubory. 995 00:48:59,280 --> 00:49:03,030 Takže znovu, práci s informace, které máme 996 00:49:03,030 --> 00:49:06,700 a definování jak to informace se používají, 997 00:49:06,700 --> 00:49:10,660 a pak předá tuto informaci a to buď na zobrazení nebo modelu. 998 00:49:10,660 --> 00:49:13,880 A model, tak, že máme Používám v němž bylo naše databáze, 999 00:49:13,880 --> 00:49:17,510 takže kde naše informace uložen tak, že má někde 1000 00:49:17,510 --> 00:49:21,490 k životu, a některou z kód, který se vztahuje na způsob, jakým 1001 00:49:21,490 --> 00:49:25,410 že jsme si tyto informace nebo způsob, jakým můžeme uvedené informace aktualizuje. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Takže v modelu MVC, HTTP Žádosti jsou odesílány na webový server. 1004 00:49:33,200 --> 00:49:36,220 Potom se interpretuje regulátor požadavek od uživatele 1005 00:49:36,220 --> 00:49:38,260 a pak ověřuje vstup uživatele. 1006 00:49:38,260 --> 00:49:41,580 Je volitelná, že máme regulátor komunikovat 1007 00:49:41,580 --> 00:49:44,000 s modelem, tak něco jako naší databázi 1008 00:49:44,000 --> 00:49:47,500 nebo nějaké jiné funkce že relé informace. 1009 00:49:47,500 --> 00:49:50,340 A nakonec, regulátor předá informace na pohled 1010 00:49:50,340 --> 00:49:52,090 tak, že to může být tavené a že může 1011 00:49:52,090 --> 00:49:55,860 stává viditelným na jakoukoli osobu přístupu na webové stránky. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Nějaké otázky? 1014 00:50:01,340 --> 00:50:01,840 Skvělý. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Takže znovu, model, jeho funkce, opět, 1017 00:50:08,469 --> 00:50:11,260 je trvalé uchovávání informací, správu a organizaci dat. 1018 00:50:11,260 --> 00:50:13,890 A to, co jsme viděli tak pokud je databáze MySQL 1019 00:50:13,890 --> 00:50:16,200 a všechny datové soubory, které mohou používat. 1020 00:50:16,200 --> 00:50:20,580 >> Pohled, prezentace informací Uživatel, uživatelské rozhraní, nebo uživatelské rozhraní. 1021 00:50:20,580 --> 00:50:22,350 A příkladem je HTML. 1022 00:50:22,350 --> 00:50:23,950 A pak bychom mohli mít minimální PHP. 1023 00:50:23,950 --> 00:50:28,360 Takže pro smyčce, která iteruje přes data, která jsou vytištěna 1024 00:50:28,360 --> 00:50:30,720 je součástí toho názoru, as na rozdíl od regulátoru. 1025 00:50:30,720 --> 00:50:35,660 A pak spousta našich PHP soubory spadají do kategorie regulátoru. 1026 00:50:35,660 --> 00:50:38,410 Je to jen zpracovává požadavky uživatelů a získává informace z modelu. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Skákání do dokumentu Object Model, to jen 1029 00:50:45,590 --> 00:50:47,700 se vztahuje na způsob, jakým HTML dokumenty jsou organizovány. 1030 00:50:47,700 --> 00:50:51,600 A oni jsou organizovány do stromu struktura, která má hierarchii. 1031 00:50:51,600 --> 00:50:56,720 Takže pokud máme přístup k [neslyšitelných] reprezentace dokumentu, 1032 00:50:56,720 --> 00:51:02,750 můžeme pracovat s dokumentem, jako jsme manipulaci s objekty v podstatě. 1033 00:51:02,750 --> 00:51:06,630 >> A aby to trochu jasnější, když 1034 00:51:06,630 --> 00:51:10,540 Máme mnoho našich různé značky reagovat 1035 00:51:10,540 --> 00:51:12,590 se různými cestami v našem stromu. 1036 00:51:12,590 --> 00:51:17,070 A pak se pro tento příklad, jsme mají počáteční uzel dokumentu. 1037 00:51:17,070 --> 00:51:20,010 Máme tedy naše HTML uzel která rozděluje do hlavy a těla. 1038 00:51:20,010 --> 00:51:22,810 Hlava má titul a poté titul obsahuje ahoj, svět. 1039 00:51:22,810 --> 00:51:24,860 A naše tělo právě obsahuje ahoj, svět stejně. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Takže jakékoli otázky týkající se některý z věci, které jsme dosud na které se vztahuje? 1042 00:51:31,900 --> 00:51:35,891 A pokud ne, bude Hannah převzít s JavaScriptem. 1043 00:51:35,891 --> 00:51:36,390 Skvělý. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, v pohodě. 1045 00:51:37,473 --> 00:51:40,980 Pokud něco přijde s PHP nebo HTML, nebo některý z věcí Maria vztahuje, 1046 00:51:40,980 --> 00:51:42,700 můžeme vždy pozastavit. 1047 00:51:42,700 --> 00:51:46,430 Děláme lépe čas znovu, tak úžasné. 1048 00:51:46,430 --> 00:51:48,770 A jen proto, aby se vrátit velmi rychle na to, 1049 00:51:48,770 --> 00:51:51,010 když se podíváte na každý Loňské zkouška, to 1050 00:51:51,010 --> 00:51:54,120 přichází either-- zde některé HTML, aby tento diagram. 1051 00:51:54,120 --> 00:51:58,380 Nebo tady je to schéma, aby některé HTML, takže určitě praktikovat to. 1052 00:51:58,380 --> 00:52:01,500 A pak to je jeden zaručené Otázka, která se můžete dostat pravdu. 1053 00:52:01,500 --> 00:52:02,000 Bezva. 1054 00:52:02,000 --> 00:52:04,510 Tak pojďme mluvit o JavaScriptu a jak je to trochu 1055 00:52:04,510 --> 00:52:09,130 odlišný od jazyků, jako je PHP a C, oba jazyky jsme viděli předtím. 1056 00:52:09,130 --> 00:52:10,780 Takže číslo jedna, je to volně zadali. 1057 00:52:10,780 --> 00:52:14,630 To je jako PHP, ale na rozdíl od C. 1058 00:52:14,630 --> 00:52:15,890 >> Je to interpretovaný jazyk. 1059 00:52:15,890 --> 00:52:19,870 Opět platí, že je jako PHP, na rozdíl od C a to 1060 00:52:19,870 --> 00:52:24,630 se chystá, aby nám to use-- funguje opravdu dobře s webovými stránkami. 1061 00:52:24,630 --> 00:52:28,350 Bude to nám umožňuje manipulovat obsah a jak to vypadá, 1062 00:52:28,350 --> 00:52:30,300 a co to dělá. 1063 00:52:30,300 --> 00:52:32,330 >> Budeme vidět trochu Ajax. 1064 00:52:32,330 --> 00:52:36,140 To nám umožňuje komunikovat asynchronně s různými servery 1065 00:52:36,140 --> 00:52:37,950 a získat informace. 1066 00:52:37,950 --> 00:52:42,820 A to je věc, která opravdu odděluje JavaScript z PHP a C 1067 00:52:42,820 --> 00:52:45,590 je to, že je na straně klienta. 1068 00:52:45,590 --> 00:52:49,860 Oba PHP a C jsou obvykle na straně serveru. 1069 00:52:49,860 --> 00:52:51,960 >> Z větší části, a téměř úplně, co 1070 00:52:51,960 --> 00:52:53,900 jsme viděli, alespoň v tato třída, JavaScript 1071 00:52:53,900 --> 00:52:57,040 působí na straně klienta, což znamená, že prohlížeč je vlastně 1072 00:52:57,040 --> 00:52:58,597 odpovědný za spuštěním. 1073 00:52:58,597 --> 00:53:01,180 A to znamená, že my ne je třeba komunikovat se serverem. 1074 00:53:01,180 --> 00:53:04,380 Takže to znamená, že může být mnohem rychlejší protože je to vlastně jen, že je to Chrome, 1075 00:53:04,380 --> 00:53:10,420 to je Safari, Firefox je to, co vás používat ve skutečnosti spuštěn váš JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> Diváků: Co to asynchronní znamená? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ach, co to asynchronně znamená? 1078 00:53:13,620 --> 00:53:14,250 Velká otázka. 1079 00:53:14,250 --> 00:53:17,890 Asynchronní means-- dobře, obsah, v němž 1080 00:53:17,890 --> 00:53:22,140 používáme to je, OK, vytvářejí webové stránky 1081 00:53:22,140 --> 00:53:23,860 a potřebujeme získat nějaké informace. 1082 00:53:23,860 --> 00:53:28,250 Tak na příkladu mashup, Některé informace, že bychom mohli chtít 1083 00:53:28,250 --> 00:53:30,580 Je tituly článek. 1084 00:53:30,580 --> 00:53:33,330 Nyní jsme could-- jednu možnost je to synchronně 1085 00:53:33,330 --> 00:53:37,940 a to znamená, pojďme zastavit, jdi si článek, 1086 00:53:37,940 --> 00:53:41,275 ten článek Zpět, a potom render, ale to by bylo docela pomalé. 1087 00:53:41,275 --> 00:53:44,150 To by bylo špatné uživatelské zkušenosti protože byste jen sedět 1088 00:53:44,150 --> 00:53:46,630 čeká na něco reagovat. 1089 00:53:46,630 --> 00:53:50,020 >> Asynchronní znamená, že budeme i nadále se o našem podnikání, 1090 00:53:50,020 --> 00:53:52,529 vykreslování stránky, a budeme odeslat žádost 1091 00:53:52,529 --> 00:53:54,570 Je to něco jako jít do stát v pozadí. 1092 00:53:54,570 --> 00:53:57,610 Myslím, že jsme použít příklad v přednáška volání Rob a říká, 1093 00:53:57,610 --> 00:53:59,980 hej, můžete se podívat toto nahoru Pro mě a vrátit se ke mně, 1094 00:53:59,980 --> 00:54:02,870 na rozdíl od právě mně čekání na telefonu. 1095 00:54:02,870 --> 00:54:07,020 Takže asynchronně znamená, že se stane V pozadí se od nás 1096 00:54:07,020 --> 00:54:08,676 paralelně. 1097 00:54:08,676 --> 00:54:10,400 >> Velká otázka. 1098 00:54:10,400 --> 00:54:11,830 Něco dalšího? 1099 00:54:11,830 --> 00:54:12,330 Skvělý. 1100 00:54:12,330 --> 00:54:15,020 Budeme skákat mnohem více do asynchronních požadavků s Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> Diváků: Má JavaScript-- Odkud spadnout s Model-View-Controller? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: Velká otázka. 1103 00:54:19,620 --> 00:54:23,320 Odkud JavaScript pád s Model-View-Controller? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Myslím, že to může fall-- takže my obvykle 1106 00:54:28,350 --> 00:54:31,340 Líbí se přebít ji do toho paradigma, ale myslím, že bych řekl, 1107 00:54:31,340 --> 00:54:34,280 OK, takže JavaScriptu ve skutečnosti bude umožnění 1108 00:54:34,280 --> 00:54:37,587 nám shromáždit údaje, interpretovat data, vlastně dělat 1109 00:54:37,587 --> 00:54:38,920 smysluplné věci s daty. 1110 00:54:38,920 --> 00:54:41,100 Tímto způsobem, je to velmi podobné ovládání. 1111 00:54:41,100 --> 00:54:43,900 >> Ale je to také bude, aby nám umožňují zobrazit věcí a tiskové věci. 1112 00:54:43,900 --> 00:54:47,021 Tímto způsobem, je to velmi pohled-podobně. 1113 00:54:47,021 --> 00:54:47,520 To jo. 1114 00:54:47,520 --> 00:54:51,710 Takže je to něco jako v PHP kde může být trochu obojí. 1115 00:54:51,710 --> 00:54:53,330 Dobrá otázka. 1116 00:54:53,330 --> 00:54:55,209 Něco dalšího? 1117 00:54:55,209 --> 00:54:56,000 V pořádku, úžasné. 1118 00:54:56,000 --> 00:54:57,120 Pohybující se vpravo podél. 1119 00:54:57,120 --> 00:54:59,110 >> Tak se podívejme, příklad o tom, jak můžeme použít 1120 00:54:59,110 --> 00:55:02,250 JavaScript v jednom z našich webových programů. 1121 00:55:02,250 --> 00:55:05,680 Tak jsem si to považují index.html s partou HTML. 1122 00:55:05,680 --> 00:55:08,800 A věc, kterou chci tě zaměřit se na to tag skript. 1123 00:55:08,800 --> 00:55:13,280 A to říká, OK, já chci spustit některé JavaScript a tady je místo, kde to žije. 1124 00:55:13,280 --> 00:55:15,400 Žije ve hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> A velmi podobně jako CSS, mohli bychom vložit JavaScript v HTML. 1126 00:55:21,120 --> 00:55:24,000 Proč bychom mohli chtít oddělit to? 1127 00:55:24,000 --> 00:55:24,500 To jo. 1128 00:55:24,500 --> 00:55:25,486 >> Diváků: Snadnější přepsat? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Jo. 1130 00:55:26,402 --> 00:55:28,450 Je to jednodušší používat napříč různé webové stránky. 1131 00:55:28,450 --> 00:55:29,980 Udržuje věci čistší. 1132 00:55:29,980 --> 00:55:32,090 Je to prostě dobré praxe. 1133 00:55:32,090 --> 00:55:32,590 Skvělý. 1134 00:55:32,590 --> 00:55:33,930 Dobrá odpověď. 1135 00:55:33,930 --> 00:55:36,690 Tak dobře, takže to se děje aby byl naším index.html. 1136 00:55:36,690 --> 00:55:39,430 A pak tady je naše malinké soubor JavaScript. 1137 00:55:39,430 --> 00:55:42,410 >> A všechno, co říká, že je ostražitý Hello, world. 1138 00:55:42,410 --> 00:55:46,040 Takže co se stane, když je Tato stránka renders-- 1139 00:55:46,040 --> 00:55:49,680 takže pokud jdete na jakékoliv webové stránky to je-- všechno, co se bude dít 1140 00:55:49,680 --> 00:55:53,330 Je to bude říkat, OK, já jsem chystá spustit tento kód JavaScript. 1141 00:55:53,330 --> 00:55:56,370 A tento kód JavaScript jen říká upozornění Hello, world. 1142 00:55:56,370 --> 00:55:59,090 Takže budu si to Přátelská malá pop-up. 1143 00:55:59,090 --> 00:56:00,360 >> Bezva? 1144 00:56:00,360 --> 00:56:04,746 To je něco jako naše první JavaScript programu, naše Hello, world. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Pojďme se podívat trochu víc o tom, co syntaxe JavaScriptu vypadá. 1147 00:56:12,190 --> 00:56:16,330 A konkrétně, pojďme porovnat ji s C a PHP, které jsme viděli předtím. 1148 00:56:16,330 --> 00:56:20,610 >> V JavaScriptu, budeme mít var, název proměnné, a pak 1149 00:56:20,610 --> 00:56:21,690 jeho skutečná hodnota. 1150 00:56:21,690 --> 00:56:26,170 A my neurčíte typ, jen stejně jako v PHP, ale velmi na rozdíl od C. 1151 00:56:26,170 --> 00:56:28,850 Tak například, když jsme chtěli pro uložení hodnoty 50, 1152 00:56:28,850 --> 00:56:32,490 v C, museli bychom říci, hej, C, chci celé číslo, 1153 00:56:32,490 --> 00:56:35,076 Chystám se to nazvat i, a jeho hodnota je 50. 1154 00:56:35,076 --> 00:56:36,450 V PHP, je to trochu jednodušší. 1155 00:56:36,450 --> 00:56:41,880 My říkáme, hej, já chci proměnnou Zavolal jsem a jeho hodnota je 50. 1156 00:56:41,880 --> 00:56:45,890 Velmi podobně, v JavaScript, jsme říkají hej, chci proměnná zavolal jsem, 1157 00:56:45,890 --> 00:56:47,080 jeho hodnota je 50. 1158 00:56:47,080 --> 00:56:52,140 Každý další čas, který jsem použít i, nemám potřebu psát var. 1159 00:56:52,140 --> 00:56:53,810 Je to jen jsem od tohoto okamžiku. 1160 00:56:53,810 --> 00:56:58,660 Stejným způsobem, v C, kde se jakmile řekneme int i, my stačí použít i. 1161 00:56:58,660 --> 00:57:00,340 Bezva? 1162 00:57:00,340 --> 00:57:01,800 Dobře. 1163 00:57:01,800 --> 00:57:03,710 >> Přesun do smyčky, naštěstí, tyto téměř 1164 00:57:03,710 --> 00:57:06,720 vypadat exactly-- Myslím, že jsou přesně stejné jako to, co 1165 00:57:06,720 --> 00:57:09,799 smyčky budou vypadat v něco jako C, kde se vaše pro smyčce 1166 00:57:09,799 --> 00:57:11,840 bude mít tři parts-- inicializaci, 1167 00:57:11,840 --> 00:57:13,640 podmínka, a aktualizace. 1168 00:57:13,640 --> 00:57:15,340 Smyčka while, to vypadá přesně stejný. 1169 00:57:15,340 --> 00:57:16,390 Právě jsme dát podmínku. 1170 00:57:16,390 --> 00:57:18,264 >> A dělat, zatímco smyčka, opět, přesně stejné. 1171 00:57:18,264 --> 00:57:20,190 Dáváme to podmínkou. 1172 00:57:20,190 --> 00:57:24,510 Řekněme, že jsem chtěl opakovat over-- Chtěl jsem udělat něco pětkrát. 1173 00:57:24,510 --> 00:57:27,840 V jazyce C, můžeme psát pro init i rovná 0. 1174 00:57:27,840 --> 00:57:30,480 i je menší než 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 Jediný rozdíl, v JavaScriptu, místo toho říká, int i = 0, 1176 00:57:34,240 --> 00:57:36,820 říkáme var i = 0. 1177 00:57:36,820 --> 00:57:38,370 Krásný. 1178 00:57:38,370 --> 00:57:41,320 To je jediný rozdíl. 1179 00:57:41,320 --> 00:57:43,200 Jakékoli otázky týkající se něco z toho? 1180 00:57:43,200 --> 00:57:44,160 Ano. 1181 00:57:44,160 --> 00:57:48,480 >> Diváků: Takže v PHP, je to stejné věc, s výjimkou ale jako proměnné? 1182 00:57:48,480 --> 00:57:49,564 Nebo to byl příklad var? 1183 00:57:49,564 --> 00:57:50,480 HANNAH Blumberg: Jo. 1184 00:57:50,480 --> 00:57:52,310 Takže v PHP, bude to být znak dolaru. 1185 00:57:52,310 --> 00:57:59,450 Tak to bude i $ rovným 0, $ i je menší než 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Velká otázka. 1187 00:58:02,490 --> 00:58:04,570 >> Nyní pojďme mluvit o deklarace funkce. 1188 00:58:04,570 --> 00:58:07,010 V jazyce C, když prohlásil funkce, dal nám jméno 1189 00:58:07,010 --> 00:58:08,490 a dal nám některé parametry. 1190 00:58:08,490 --> 00:58:10,670 A na začátku, jsme napsali typ. 1191 00:58:10,670 --> 00:58:12,440 V JavaScript, všechno, co jsme musíte udělat, je napsat 1192 00:58:12,440 --> 00:58:15,080 funkce klíčové slovo říká, hej, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Chystám se definování funkce. 1194 00:58:16,570 --> 00:58:18,520 >> V tomto případě, má název součet. 1195 00:58:18,520 --> 00:58:20,820 A to trvá dva argumenty, X a Y. 1196 00:58:20,820 --> 00:58:23,280 Všimněte si, že je nám jedno, o typech x a y. 1197 00:58:23,280 --> 00:58:26,280 A stejně jako C, my máme tento návrat klíčové slovo, 1198 00:58:26,280 --> 00:58:29,140 takže můžeme něco udělat jako zpáteční x a y. 1199 00:58:29,140 --> 00:58:32,540 >> A teď najednou psali jsme to poprvé funkce, můžeme použít součet kdekoliv. 1200 00:58:32,540 --> 00:58:34,740 A to je úplně v pohodě. 1201 00:58:34,740 --> 00:58:37,530 Jedna opravdu cool věc, o JavaScript, že je velmi na rozdíl od C 1202 00:58:37,530 --> 00:58:40,770 je to, že funkce mohou zacházet jako hodnoty. 1203 00:58:40,770 --> 00:58:43,895 Takže můžeme něco takového zde kde jsem, že jsem to pokrýt up-- 1204 00:58:43,895 --> 00:58:46,400 Zakryl jsem si var součet part-- a my jsme jen řekl 1205 00:58:46,400 --> 00:58:49,850 Funkce xy rovná se zpáteční X plus y. 1206 00:58:49,850 --> 00:58:52,140 >> To je to, co by byl nazýván anonymní funkce. 1207 00:58:52,140 --> 00:58:53,920 Je to funkce bez názvu. 1208 00:58:53,920 --> 00:58:56,290 Vzhledem k tomu, tato funkce říká suma, bla, bla, bla, 1209 00:58:56,290 --> 00:58:59,340 To by jen říct funkci. 1210 00:58:59,340 --> 00:59:02,020 Ale teď, i když mám tato anonymní funkce, 1211 00:59:02,020 --> 00:59:03,630 tato funkce je opravdu jen hodnotu. 1212 00:59:03,630 --> 00:59:05,160 Můžeme to zacházet jako hodnotu. 1213 00:59:05,160 --> 00:59:10,180 >> Takže můžeme uložit do proměnné stejného Způsob, jakým mohl uložit 50 v proměnné. 1214 00:59:10,180 --> 00:59:13,870 Takže můžeme říci, v pořádku, chci variabilní, je to jen součet, 1215 00:59:13,870 --> 00:59:16,011 a je to právě tato funkce. 1216 00:59:16,011 --> 00:59:18,760 Takže tyto dvě věci jsou ve skutečnosti dělat přesně to samé, 1217 00:59:18,760 --> 00:59:21,576 ale syntaxe je poněkud odlišný a druh zábavné poznámky. 1218 00:59:21,576 --> 00:59:22,076 To jo. 1219 00:59:22,076 --> 00:59:25,548 >> Diváků: Takže jste mohli nazvat funkce, která byla anonymní tím, že říká, 1220 00:59:25,548 --> 00:59:28,244 Suma konzole 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Jo. 1222 00:59:29,160 --> 00:59:32,280 Můžete volat to anonymní funkce stejným způsobem. 1223 00:59:32,280 --> 00:59:33,350 Ty by to součet (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 To by bylo úplně v pohodě. 1226 00:59:38,200 --> 00:59:41,575 >> Kdybych to neudělal var suma rovná funkce, když jsem právě smazal 1227 00:59:41,575 --> 00:59:45,480 tohle-- Vím, že je na mé straně, ale předstírat, že vypouští tohle-- poté 1228 00:59:45,480 --> 00:59:46,964 tato funkce je druh prostě pryč. 1229 00:59:46,964 --> 00:59:49,630 Můžete nikdy znovu použít, protože nemáte jeho název. 1230 00:59:49,630 --> 00:59:53,497 Je těžké odkazovat na něco nevíte, jak to nazvat. 1231 00:59:53,497 --> 00:59:54,080 Dobrá otázka. 1232 00:59:54,080 --> 00:59:54,580 To jo. 1233 00:59:54,580 --> 00:59:59,580 >> Diváků: Můžete odkazovat sumu v dalších míst s hodnotou X plus Y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Můžete reference součet v okolí 1235 01:00:01,940 --> 01:00:03,360 s hodnotou X plus y? 1236 01:00:03,360 --> 01:00:05,130 Nejsem si úplně jistý, co máte na mysli. 1237 01:00:05,130 --> 01:00:10,582 >> Diváků: Takže vaše minulost semi-anonymní funkce je součet je roven této 1238 01:00:10,582 --> 01:00:14,452 Funkce anonymní, takže součet Nyní proměnná, která vám can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: Správně. 1240 01:00:15,410 --> 01:00:18,980 Aby součet je proměnná, ale je to actually-- 1241 01:00:18,980 --> 01:00:23,770 aby součet je proměnná, jejíž hodnota je funkce. 1242 01:00:23,770 --> 01:00:27,030 Tak to je funkce, která je druh podivné věci zabalit hlavu kolem 1243 01:00:27,030 --> 01:00:29,880 od té doby jsme se hrát s C a můžete to dělat v C. 1244 01:00:29,880 --> 01:00:32,679 Ale teď se můžeme nazývat se sečtou Stejně tak bychom mohli nazvat součet zde. 1245 01:00:32,679 --> 01:00:33,220 Diváků: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Jo. 1247 01:00:33,970 --> 01:00:34,553 Dobrá otázka. 1248 01:00:34,553 --> 01:00:35,438 To jo. 1249 01:00:35,438 --> 01:00:39,862 >> Diváků: Takže nepoužívejte prototypy v PHP nebo JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: Ne, my Nemusíte používat prototypy, 1251 01:00:42,070 --> 01:00:43,880 zejména v JavaScriptu. 1252 01:00:43,880 --> 01:00:49,380 Takže člověk praxe věc špatně, že jsem chtěl říct, že byste neměli dělat 1253 01:00:49,380 --> 01:00:52,620 je nemusíte psát var i = 50. 1254 01:00:52,620 --> 01:00:54,840 Dalo by se prostě začít dělat i = 50. 1255 01:00:54,840 --> 01:00:57,490 A bude jen aby i globální proměnnou. 1256 01:00:57,490 --> 01:01:00,550 >> Je to velmi špatné praxe nikdy neříkej výslovně var i, 1257 01:01:00,550 --> 01:01:01,800 ale je to něco, co můžete udělat. 1258 01:01:01,800 --> 01:01:03,591 Tlumočník není bude řvát na vás. 1259 01:01:03,591 --> 01:01:05,920 JavaScript je docela rád, můžete dělat, co chcete. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Promiň. 1262 01:01:09,800 --> 01:01:10,300 Je tu dva. 1263 01:01:10,300 --> 01:01:12,150 V oranžové kalhoty. 1264 01:01:12,150 --> 01:01:13,190 Pokračuj. 1265 01:01:13,190 --> 01:01:14,390 >> Publikum: Ne, ty první. 1266 01:01:14,390 --> 01:01:16,765 >> Publikum: Ne, já jsem jen říct Neměl jsem svou ruku. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 DOBŘE. 1269 01:01:20,748 --> 01:01:26,604 Takže pokud jste byli volat že poprvé, nyní shrnout, 1270 01:01:26,604 --> 01:01:29,864 říkáme, že stejným způsobem, x, y, stejně jako každý čas? 1271 01:01:29,864 --> 01:01:30,780 HANNAH Blumberg: Jo. 1272 01:01:30,780 --> 01:01:32,572 Takže tyto dvě v podstatě dělají stejnou věc. 1273 01:01:32,572 --> 01:01:35,113 Diváků: A jaká je výhoda použití jednoho nebo druhého? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg: žádná výhoda použití jedno nebo druhé. 1275 01:01:37,500 --> 01:01:40,080 Chtěl jsem vám ukázat dva různé části syntaxe. 1276 01:01:40,080 --> 01:01:42,770 Mnohokrát, kde anonymní Funkce mají smysl 1277 01:01:42,770 --> 01:01:48,220 je-li argument na jiný funkce by měla být funkce. 1278 01:01:48,220 --> 01:01:50,600 A uvidíme, že v jen na druhém místě s Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Takže pokud to nedávalo žádný smysl, uložte ho do zadní části hlavy. 1280 01:01:53,577 --> 01:01:55,660 To je místo, kde anonymní Funkce mohou být užitečné 1281 01:01:55,660 --> 01:01:58,284 protože to není opravdu stojí za to dávat to jméno, protože jsme jen 1282 01:01:58,284 --> 01:01:59,443 bude jednou použít. 1283 01:01:59,443 --> 01:02:00,370 To jo. 1284 01:02:00,370 --> 01:02:03,635 >> Diváků: Je-li x a y později změnit na, bude součet změní stejně? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: Je-li x a y změna později, shrne změní stejně? 1286 01:02:06,510 --> 01:02:08,840 Takže to je vlastně já myslím, něco, co je, 1287 01:02:08,840 --> 01:02:12,260 znovu, to prostě cítí velmi odlišné z C. Toto není hodnota. 1288 01:02:12,260 --> 01:02:13,620 Není to 5. 1289 01:02:13,620 --> 01:02:15,550 Je to jen samotná funkce. 1290 01:02:15,550 --> 01:02:19,110 Takže jakmile si jej parametry, pak budete skutečně vypočítat hodnotu. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: A pak můžete volat funkci 1292 01:02:21,193 --> 01:02:23,272 a používat to, aby si nějakou hodnotu. 1293 01:02:23,272 --> 01:02:24,230 HANNAH Blumberg: Správně. 1294 01:02:24,230 --> 01:02:25,250 Přesně. 1295 01:02:25,250 --> 01:02:25,863 To jo. 1296 01:02:25,863 --> 01:02:27,946 >> Diváků: Takže pokud jste právě uložte ji do proměnné, 1297 01:02:27,946 --> 01:02:31,430 jako var x se rovná součtu dvou values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH Blumberg: Jo. 1299 01:02:32,420 --> 01:02:35,320 Takže jste mohli jen dělat var součet se rovná součtu dvou hodnot. 1300 01:02:35,320 --> 01:02:37,670 To jo. 1301 01:02:37,670 --> 01:02:38,680 Nějaké další otázky? 1302 01:02:38,680 --> 01:02:39,642 To jo. 1303 01:02:39,642 --> 01:02:42,047 >> Diváků: Ale by to zmást částku a částku? 1304 01:02:42,047 --> 01:02:45,062 Stejně jako Pokud zavoláte své variabilní částky, by volání funkce částku? 1305 01:02:45,062 --> 01:02:45,895 HANNAH Blumberg: MM. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Pokud jste něco jako, částka se rovná součtu 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> Diváků: Jo. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: Věřím, že by se přepsat hodnotu částky. 1310 01:02:56,465 --> 01:02:59,290 Takže další zajímavé věc, o JavaScriptu 1311 01:02:59,290 --> 01:03:02,950 je to, že jedna proměnná může trvat na spoustu různých typů. 1312 01:03:02,950 --> 01:03:03,790 Špatná praxe. 1313 01:03:03,790 --> 01:03:06,280 Neměli byste dělat něco jako to, co jste právě řekl. 1314 01:03:06,280 --> 01:03:10,240 >> Ale v C, pokud jsem je nastaven rovná celé číslo, 1315 01:03:10,240 --> 01:03:13,570 víme, že to nikdy stane řetězec. 1316 01:03:13,570 --> 01:03:15,670 To není případ v JavaScriptu. 1317 01:03:15,670 --> 01:03:17,770 Jo, dobrá otázka. 1318 01:03:17,770 --> 01:03:20,151 Něco dalšího? 1319 01:03:20,151 --> 01:03:20,650 Dobře. 1320 01:03:20,650 --> 01:03:21,850 Dělat všechno přesně na čas. 1321 01:03:21,850 --> 01:03:23,050 Vedení jít. 1322 01:03:23,050 --> 01:03:25,200 Dobře. 1323 01:03:25,200 --> 01:03:27,780 >> Pokud se podíváme na pole v JavaScriptu, tady je 1324 01:03:27,780 --> 01:03:30,250 rychlý příklad pole řetězců. 1325 01:03:30,250 --> 01:03:31,967 A pole může růst dynamicky. 1326 01:03:31,967 --> 01:03:33,675 Oni nemají pevné velikosti stejným způsobem 1327 01:03:33,675 --> 01:03:37,990 že to dělají v C. Můžeme přístup k prvky s jen v hranatých závorkách. 1328 01:03:37,990 --> 01:03:41,720 >> To vypadá hodně jako PHP a spoustou jako je C, kde se můžeme říci, v tomto případě, 1329 01:03:41,720 --> 01:03:48,360 kdybych chtěl slovo JavaScript, udělal bych to se arr hranatých závorek s 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 A pak, pokud si vzpomínáte, když jsme v C chtěl dostat délku pole, 1332 01:03:55,390 --> 01:03:56,820 to bylo opravdu otravné. 1333 01:03:56,820 --> 01:03:58,460 Ale v JavaScriptu, super snadné. 1334 01:03:58,460 --> 01:03:59,910 Všechno, co děláme, .length. 1335 01:03:59,910 --> 01:04:01,120 Dává jí délky. 1336 01:04:01,120 --> 01:04:01,892 To je všechno. 1337 01:04:01,892 --> 01:04:03,140 >> Diváků: To je jednoduché. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Jo, dělá váš život mnohem jednodušší. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, object-- tam není. 1341 01:04:11,560 --> 01:04:15,480 Objekty v JavaScriptu pocit hodně jako structs v C 1342 01:04:15,480 --> 01:04:18,280 a asociativní pole v PHP. 1343 01:04:18,280 --> 01:04:20,270 Takže to, co jsme viděli Hodně je JSON, který 1344 01:04:20,270 --> 01:04:23,150 je zkratka pro JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 A je to v podstatě způsob, strukturovat naše data. 1346 01:04:25,550 --> 01:04:27,880 >> Tak uvidíme příklad, asi nejjednodušší. 1347 01:04:27,880 --> 01:04:32,540 Tak tady je příklad objektu který ukládá třídu, CS50. 1348 01:04:32,540 --> 01:04:37,790 A když říkám třídu, mám na mysli samozřejmě, Není jako-- jo, běh, CS50. 1349 01:04:37,790 --> 01:04:40,730 A uvidíte, že vše v objektu 1350 01:04:40,730 --> 01:04:43,526 se bude obsažena do složených závorek. 1351 01:04:43,526 --> 01:04:48,260 >> A začneme spojovat názvy polí nebo klávesy s různými hodnotami. 1352 01:04:48,260 --> 01:04:52,920 Takže můžete začít vidět, jak tento druh cítí jako asociativní pole v PHP. 1353 01:04:52,920 --> 01:04:57,450 Takže budeme spojovat pole nebo název klíče, samozřejmě, s řetězci, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Budeme mít instruktora. 1356 01:04:59,940 --> 01:05:00,940 Budeme muset TFS. 1357 01:05:00,940 --> 01:05:05,240 Budeme mít řadu psets a budeme mít zaznamenány. 1358 01:05:05,240 --> 01:05:10,720 A jedna super věc k poznámce je všechny tyto věci mají různé typy, 1359 01:05:10,720 --> 01:05:12,020 a to je naprosto v pořádku. 1360 01:05:12,020 --> 01:05:15,330 >> To je v pořádku pro objekt, ve skutečnosti, je to asi očekávali pro objekt 1361 01:05:15,330 --> 01:05:19,620 mít kombinace řetězců a čísla a Booleans a pole 1362 01:05:19,620 --> 01:05:23,420 a cokoli jiného, ​​co byste mohli Chcete mít uvnitř vašeho objektu. 1363 01:05:23,420 --> 01:05:28,570 A všimněte si, že tyto se bude názvy nebo klíče, a pak jsme jen 1364 01:05:28,570 --> 01:05:30,300 nastavit tak, rovný s malou tlustého střeva. 1365 01:05:30,300 --> 01:05:32,015 >> Diváků: Co přesně JSON znamená? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: Co přesně to JSON znamená? 1367 01:05:33,890 --> 01:05:36,470 JSON jen zkratka pro JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 Je to jen způsob, jak formátování. 1369 01:05:38,430 --> 01:05:40,040 To jo. 1370 01:05:40,040 --> 01:05:41,800 Je to způsob, jak formátování naše data. 1371 01:05:41,800 --> 01:05:43,620 >> V jazyce C, je to structs. 1372 01:05:43,620 --> 01:05:45,800 V PHP, je to asociativní pole. 1373 01:05:45,800 --> 01:05:47,120 V JavaScriptu, máme objekty. 1374 01:05:47,120 --> 01:05:48,969 >> Diváků: Takže CS50 to objekt? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 je objekt v tomto případě. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 A teď, jak to vlastně přístup tato pole nebo změnit těchto polí. 1378 01:05:57,880 --> 01:06:03,920 Předpokládejme například, že jsme se rozhodli, že jste chtěl jeden méně pset tomto semestru. 1379 01:06:03,920 --> 01:06:06,300 Místo toho, devět, my jsme prostě muset osm. 1380 01:06:06,300 --> 01:06:08,240 Jak bychom to změnit? 1381 01:06:08,240 --> 01:06:09,436 >> Oh, špatně. 1382 01:06:09,436 --> 01:06:11,060 Existují dva způsoby, jak to můžeme udělat. 1383 01:06:11,060 --> 01:06:13,490 Číslo jedna je s tečkou notace a číslo dvě 1384 01:06:13,490 --> 01:06:15,750 je s hranatých závorkách notace. 1385 01:06:15,750 --> 01:06:19,720 Tak například, pokud I chtěli změnit nebo přístup 1386 01:06:19,720 --> 01:06:26,820 pole psets v naší CS50 objektu, co budu dělat, je CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 takže název objektu tečkou název pole nebo klíče. 1388 01:06:30,770 --> 01:06:37,120 >> Velmi podobně, to je přesně to, ekvivalentní k tomu CS50, a poté 1389 01:06:37,120 --> 01:06:42,050 v hranatých závorkách, psets. 1390 01:06:42,050 --> 01:06:42,837 Bezva? 1391 01:06:42,837 --> 01:06:44,298 To jo. 1392 01:06:44,298 --> 01:06:47,707 >> Diváků: Tak je JSON technicky stále JavaScript, 1393 01:06:47,707 --> 01:06:51,814 i když v psets jsme oddělit ji [neslyšitelných]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: Jistě. 1395 01:06:52,730 --> 01:06:56,290 Takže otázka zní, jsou JavaScript a JSON ekvivalent? 1396 01:06:56,290 --> 01:07:00,750 Takže JSON je zápis, v zásadě tak, že jsme se zapsat 1397 01:07:00,750 --> 01:07:02,700 objekt z jazyka JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Takže to nejsou úplně stejné. 1399 01:07:05,190 --> 01:07:08,950 >> Řekl bych, že JavaScript, tam jsou objekty v JavaScriptu. 1400 01:07:08,950 --> 01:07:12,590 JSON vezme ty objekty a vytiskne je a zobrazuje je 1401 01:07:12,590 --> 01:07:15,160 nebo ukládá je v příjemném způsobem. 1402 01:07:15,160 --> 01:07:18,110 Takže JSON není programovací jazyk, tak, že JavaScript je. 1403 01:07:18,110 --> 01:07:20,900 Je to jen zápis pro v JavaScriptu naše objekty. 1404 01:07:20,900 --> 01:07:21,400 To jo. 1405 01:07:21,400 --> 01:07:24,144 >> Diváků: Takže co přesně [Neslyšitelný] kompletní? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: Jistě. 1407 01:07:25,060 --> 01:07:27,727 Takže to vlastně nic nedělá. 1408 01:07:27,727 --> 01:07:28,935 To je jen způsob, jak získat přístup. 1409 01:07:28,935 --> 01:07:31,393 Takže řekněme, že bychom chtěli změnit počet problémových sad 1410 01:07:31,393 --> 01:07:32,450 z devíti na osm. 1411 01:07:32,450 --> 01:07:34,383 To, co děláme, je něco udělat jako CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Jo, skvělá otázka. 1414 01:07:39,400 --> 01:07:40,733 To je jen ukázat vám syntaxi. 1415 01:07:40,733 --> 01:07:43,620 Není ve skutečnosti dělat nic užitečného. 1416 01:07:43,620 --> 01:07:46,085 Nějaké otázky? 1417 01:07:46,085 --> 01:07:48,210 Pohybující se vpravo podél. 1418 01:07:48,210 --> 01:07:51,960 >> Takže pojďme se podívat na rychlý příklad toho, jak JavaScript funguje, protože jsem vám řekl, že to 1419 01:07:51,960 --> 01:07:55,170 dělá všechny tyto věci a chladné nám umožňuje upravovat webové stránky. 1420 01:07:55,170 --> 01:07:56,970 Pojďme se skutečně vidět v akci. 1421 01:07:56,970 --> 01:07:59,850 Tak se například tento soubor HTML. 1422 01:07:59,850 --> 01:08:04,350 >> A věc, kterou chci, abys zaměřit, je tento konkrétní tag, který je tlačítko, 1423 01:08:04,350 --> 01:08:06,182 s id search_button. 1424 01:08:06,182 --> 01:08:08,670 Je to jen na stránce. 1425 01:08:08,670 --> 01:08:10,690 Takže teď uvidíme, co můžeme vlastně dělat. 1426 01:08:10,690 --> 01:08:12,560 >> No, předpokládám, že když klepnete na toto tlačítko, 1427 01:08:12,560 --> 01:08:16,010 chceme udělat alert-- jste klikli na tlačítko. 1428 01:08:16,010 --> 01:08:17,840 Podívejme se, jak to můžeme udělat. 1429 01:08:17,840 --> 01:08:23,869 Takže window.onload-- to není něco, že jste viděli ve třídě, a proto 1430 01:08:23,869 --> 01:08:26,180 nebudou muset znát na kvíz. 1431 01:08:26,180 --> 01:08:33,660 Ale to v podstatě říká, OK, call Tuto funkci použijte při načte okno. 1432 01:08:33,660 --> 01:08:35,080 >> Tak to je jen trochu nastavení kódu. 1433 01:08:35,080 --> 01:08:36,390 Nebojte se tolik o tom. 1434 01:08:36,390 --> 01:08:39,170 To, co chci, abyste zaměřit, je tady. 1435 01:08:39,170 --> 01:08:44,020 Říkáme var searchButton rovná document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Takže, jak asi tušíte, co to dělá, je to říká, 1437 01:08:46,450 --> 01:08:50,920 OK, jdi najít prvek s ID search_button. 1438 01:08:50,920 --> 01:08:52,790 A teď máme, že Aktuální prvek a já jsem 1439 01:08:52,790 --> 01:08:56,279 chystá uložit v variabilní searchButton. 1440 01:08:56,279 --> 01:09:00,651 A nyní můžeme skutečně používat tento prvek a změnit nebo otevřít své hodnoty, 1441 01:09:00,651 --> 01:09:01,359 takovéhle věci. 1442 01:09:01,359 --> 01:09:04,649 Můžeme skutečně začít zapojit s webovou stránkou. 1443 01:09:04,649 --> 01:09:10,330 >> Tak tady říkám, v pořádku, teď, když mám toto tlačítko, když na něj klepnete, 1444 01:09:10,330 --> 01:09:12,859 volání této anonymní funkce. 1445 01:09:12,859 --> 01:09:16,811 Takže tohle je místo, kde anonymní Funkce se stal užitečným. 1446 01:09:16,811 --> 01:09:18,060 A co dělá funkce dělat? 1447 01:09:18,060 --> 01:09:20,529 No, to prostě nazývá funkce upozornění a říká, 1448 01:09:20,529 --> 01:09:22,910 jste klikli na tlačítko Hledat. 1449 01:09:22,910 --> 01:09:29,670 >> Takže co se stane, když půjdu tam, kam tento HTML žije a já klepněte na tlačítko, 1450 01:09:29,670 --> 01:09:33,729 Dostanu vymyšleného trochu upozornění který říká, že jste klikli na tlačítko. 1451 01:09:33,729 --> 01:09:40,710 Takže věci, aby se zaměřily na here-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 dostane konkrétní HTML prvek s daným ID. 1453 01:09:44,960 --> 01:09:48,529 A teď můžeme nastavit co se má stát, když 1454 01:09:48,529 --> 01:09:50,702 že určitý prvek kliknutí. 1455 01:09:50,702 --> 01:09:52,670 >> Diváků: Musíme dát vše v? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg: Sorry? 1457 01:09:53,162 --> 01:09:55,130 >> Diváků: Musíme fyzicky kódovat všechno, že? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: Musíme fyzicky kódovat všechno, že? 1459 01:09:56,340 --> 01:09:56,839 Ano. 1460 01:09:56,839 --> 01:09:58,120 Není to trochu nepříjemné? 1461 01:09:58,120 --> 01:10:00,032 To je hodně kódu. 1462 01:10:00,032 --> 01:10:01,574 >> Diváků: Dalo by se něco importovat. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: Správně. 1464 01:10:02,532 --> 01:10:03,610 Mohli bychom použít něco. 1465 01:10:03,610 --> 01:10:08,140 A v particular-- ach, to je mi říkal, musím naučit sekci. 1466 01:10:08,140 --> 01:10:11,061 Zejména, pojďme používat knihovnu jQuery, 1467 01:10:11,061 --> 01:10:13,060 protože to bylo opravdu dlouhá a opravdu otravné 1468 01:10:13,060 --> 01:10:16,860 a já chci, aby bylo možné jej zjednodušit a aby bylo kratší a jednodušší napsat. 1469 01:10:16,860 --> 01:10:19,810 >> Takže jQuery je knihovna JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Takže JavaScript je programovací jazyk; jQuery je knihovna. 1471 01:10:24,930 --> 01:10:27,190 A to dělá spoustu věcí jednodušší. 1472 01:10:27,190 --> 01:10:33,230 To je měnící se a jít napříč dokument HTML mnohem jednodušší. 1473 01:10:33,230 --> 01:10:35,030 >> To je akce pro manipulaci s jednodušší. 1474 01:10:35,030 --> 01:10:37,580 To dělá animace jednodušší a to je Ajax jednodušší. 1475 01:10:37,580 --> 01:10:40,140 Takže pojďme se skočit do dvou ty věci hned teď. 1476 01:10:40,140 --> 01:10:40,900 Omluvte mě. 1477 01:10:40,900 --> 01:10:42,620 Než tak učiníme, některé základní syntaxe. 1478 01:10:42,620 --> 01:10:46,870 >> To je to, co většina volání knihovna jQuery vypadat. 1479 01:10:46,870 --> 01:10:50,520 Používáme tento dolar sign-- žádné připojení znamení PHP, 1480 01:10:50,520 --> 01:10:56,030 Jen inconvenient-- na jméno Volič, tečka, a pak akce. 1481 01:10:56,030 --> 01:10:58,860 Takže pojďme se podívat na nějaké konkrétní příklady, které. 1482 01:10:58,860 --> 01:11:02,980 >> Takže to je vlastně stejný Kód ze snímku události. 1483 01:11:02,980 --> 01:11:08,740 Tak dlouho, ošklivá věc se stane to mnohem hezčí, menší věc. 1484 01:11:08,740 --> 01:11:10,370 Takže pojďme se pokusit rozčlenit tento systém. 1485 01:11:10,370 --> 01:11:17,090 To říká, OK, jQuery-- tento dolar sign-- jQuery, najděte mi okno. 1486 01:11:17,090 --> 01:11:18,480 Tak to je volič. 1487 01:11:18,480 --> 01:11:21,800 >> Když se to načte, tuto funkci volat. 1488 01:11:21,800 --> 01:11:23,880 Takže to je všechno uvnitř. 1489 01:11:23,880 --> 01:11:24,380 DOBŘE. 1490 01:11:24,380 --> 01:11:25,740 Zatím je vše dobré? 1491 01:11:25,740 --> 01:11:26,750 Dobře. 1492 01:11:26,750 --> 01:11:32,970 >> Nyní, jQuery, najít mě o ta věc s ID search_button. 1493 01:11:32,970 --> 01:11:36,090 A co na něj klepnete, volání této funkce. 1494 01:11:36,090 --> 01:11:37,900 A pak se tato funkce je přesně to samé. 1495 01:11:37,900 --> 01:11:41,052 Jen to trochu výstrahy, jste klikli na tlačítko Hledat. 1496 01:11:41,052 --> 01:11:42,650 >> Takže je to opravdu pěkné. 1497 01:11:42,650 --> 01:11:46,260 Je to opravdu kondenzuje a zjednodušuje náš kód. 1498 01:11:46,260 --> 01:11:49,030 Jak jsem věděl, že je to ID search_button 1499 01:11:49,030 --> 01:11:50,960 a ne jako třídní search_button? 1500 01:11:50,960 --> 01:11:52,024 >> Publikum: hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Jo. 1502 01:11:52,940 --> 01:11:56,450 Tento symbol hash, je to jen jako CSS. 1503 01:11:56,450 --> 01:12:00,080 Takže pamatujte, že se CSS, když jsme se chtěl vybrat něco podle ID, 1504 01:12:00,080 --> 01:12:01,590 jsme použili libry. 1505 01:12:01,590 --> 01:12:05,400 A když jsme chtěli vybrat něco podle třídy, používáme tečku. 1506 01:12:05,400 --> 01:12:06,870 Skvělý. 1507 01:12:06,870 --> 01:12:08,230 Dávat smysl? 1508 01:12:08,230 --> 01:12:11,500 Takže jQuery má jen aby se náš život jednodušší. 1509 01:12:11,500 --> 01:12:12,000 To jo. 1510 01:12:12,000 --> 01:12:15,660 >> Diváků: Takže jsem trochu zmatený, jak s tím, jak anonymní funkce pracuje. 1511 01:12:15,660 --> 01:12:19,027 Myslíte si název tohoto anonymní funkce, fungují? 1512 01:12:19,027 --> 01:12:20,594 Jak se to jmenuje? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: Jistě. 1514 01:12:21,510 --> 01:12:25,812 Takže funkce je jen klíčové slovo říká, že jsem asi pro definování funkce. 1515 01:12:25,812 --> 01:12:26,520 Publikum: Oh, OK. 1516 01:12:26,520 --> 01:12:27,353 HANNAH Blumberg: OK? 1517 01:12:27,353 --> 01:12:32,120 A pak jsme to projít jako Argument to-- pojďme 1518 01:12:32,120 --> 01:12:37,040 tento vnitřní one-- funkci click. 1519 01:12:37,040 --> 01:12:39,420 Tak jo, takže funkce, tato anonymní funkce, 1520 01:12:39,420 --> 01:12:40,910 se stává skutečný argument. 1521 01:12:40,910 --> 01:12:43,632 Takže pamatujte v JavaScriptu, my může léčit funkce jako hodnoty. 1522 01:12:43,632 --> 01:12:44,340 Publikum: Oh, OK. 1523 01:12:44,340 --> 01:12:45,256 HANNAH Blumberg: Jo. 1524 01:12:45,256 --> 01:12:46,035 Líbí se mi, že "Aha." 1525 01:12:46,035 --> 01:12:47,490 Pěkný. 1526 01:12:47,490 --> 01:12:49,915 Další otázky? 1527 01:12:49,915 --> 01:12:50,505 Čas? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Dobrý. 1529 01:12:51,380 --> 01:12:52,760 Dobrý. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Úžasné. 1531 01:12:54,210 --> 01:12:55,720 Některé rychlé užitečné jQuery. 1532 01:12:55,720 --> 01:12:57,559 Nebudu jít přes všechny z nich. 1533 01:12:57,559 --> 01:12:59,350 Tyto snímky budou up on-line trochou 1534 01:12:59,350 --> 01:13:02,040 později, takže můžete zkontrolovat it out o něco později. 1535 01:13:02,040 --> 01:13:07,120 Ale v podstatě, generální vzor drží kde říkáme, 1536 01:13:07,120 --> 01:13:11,510 OK, hej, jQuery, tady je moje Volič, a pak je tu akce. 1537 01:13:11,510 --> 01:13:15,940 A vy můžete dělat věci, jako je přístup k Hodnota formy, přístup k některým HTML, 1538 01:13:15,940 --> 01:13:19,195 Ovládání co se stane, když uživatel předloží formulář, takové věci. 1539 01:13:19,195 --> 01:13:20,106 Ano. 1540 01:13:20,106 --> 01:13:22,090 >> Diváků: Takže v zkouška, budeme potřebovat 1541 01:13:22,090 --> 01:13:25,066 vědět, hodně z dokumentace jQuery. 1542 01:13:25,066 --> 01:13:31,018 Takže vzhledem k tomu, že jsme se kopírovat / vložit jQuery dokumentace k naší tahák, 1543 01:13:31,018 --> 01:13:32,506 Kde je čára? 1544 01:13:32,506 --> 01:13:33,957 Stejně jako to, kolik potřebujeme vědět? 1545 01:13:33,957 --> 01:13:35,290 HANNAH Blumberg: Velká otázka. 1546 01:13:35,290 --> 01:13:37,765 Otázkou je, v podstatě vzhledem k tomu, že vás 1547 01:13:37,765 --> 01:13:41,330 nemůže získat přístup k dokumentaci k jQuery během testu, kolik byste měli 1548 01:13:41,330 --> 01:13:41,830 vědět? 1549 01:13:41,830 --> 01:13:45,540 Neměli bychom očekávat, že vám přijde s nějakou náhodnou funkcí 1550 01:13:45,540 --> 01:13:47,240 že bychom vás očekávat, že Google. 1551 01:13:47,240 --> 01:13:52,930 >> Věci, které jsou poctivá hra jsou bych říkají jen tak obecné syntaxe, 1552 01:13:52,930 --> 01:13:58,310 budou moci vybrat podle ID a podle class-- tak jen jako CSS. 1553 01:13:58,310 --> 01:14:01,876 A pak skutečné funkce themself, budeme pravděpodobně řekne. 1554 01:14:01,876 --> 01:14:02,376 To jo. 1555 01:14:02,376 --> 01:14:05,591 >> Diváků: Takže když zvolíte podle třídy by znamenalo bod. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Ano, přesně tak. 1557 01:14:06,840 --> 01:14:07,340 Dobrý. 1558 01:14:07,340 --> 01:14:10,461 Pokud vyberete podle třídy, bude to se tečka namísto libry. 1559 01:14:10,461 --> 01:14:10,960 Ano. 1560 01:14:10,960 --> 01:14:12,710 >> Publikum: Chtěli byste projít tím rozdílem, 1561 01:14:12,710 --> 01:14:14,310 mezi výběrem podle ID a podle třídy? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: Jistě. 1563 01:14:14,560 --> 01:14:17,510 Rozdíl mezi výběru ID a výběru podle třídy. 1564 01:14:17,510 --> 01:14:20,685 Tak jak říká Maria a trochu dříve, tam 1565 01:14:20,685 --> 01:14:26,280 může být pouze jedním prvkem HTML s daným ID, vzhledem k tomu, třídy, 1566 01:14:26,280 --> 01:14:29,740 to nám umožňuje skupině banda různých prvků dohromady, 1567 01:14:29,740 --> 01:14:34,300 takže věci, které se vztahují, ale ne přesně to samé. 1568 01:14:34,300 --> 01:14:35,685 Znamená to, že odpověď na otázku? 1569 01:14:35,685 --> 01:14:36,200 Skvělý. 1570 01:14:36,200 --> 01:14:37,194 Ano. 1571 01:14:37,194 --> 01:14:40,680 >> Diváků: Co když máte více věci, které jsou ve stejné třídě? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Co se stane, pokud máte více věcí, které 1573 01:14:42,150 --> 01:14:43,280 jsou stejné třídy? 1574 01:14:43,280 --> 01:14:45,829 Tak, například, když jsme jen s použitím čistého JavaScript, 1575 01:14:45,829 --> 01:14:48,120 budeme dělat něco takového document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 A potom, co to vlastně dělá je vrátí pole prvků. 1578 01:14:56,320 --> 01:14:59,517 >> A budete muset buď iteraci je nebo zjistit, který z nich chcete. 1579 01:14:59,517 --> 01:15:01,350 Nebude to dát Jste jediný prvek. 1580 01:15:01,350 --> 01:15:03,450 Bude to, aby vám pole prvků. 1581 01:15:03,450 --> 01:15:05,280 Velká otázka. 1582 01:15:05,280 --> 01:15:07,700 Něco dalšího? 1583 01:15:07,700 --> 01:15:09,520 Skvělý. 1584 01:15:09,520 --> 01:15:12,860 >> Takže si myslím, pokud jste obeznámeni s jakýkoli jQuery jste viděli v pset, 1585 01:15:12,860 --> 01:15:15,600 měli byste být dobré jít. 1586 01:15:15,600 --> 01:15:16,325 Otázka? 1587 01:15:16,325 --> 01:15:17,610 Ale ne. 1588 01:15:17,610 --> 01:15:18,859 Opravdu musím učit. 1589 01:15:18,859 --> 01:15:19,358 Relaxovat. 1590 01:15:19,358 --> 01:15:20,035 Bude to v pořádku. 1591 01:15:20,035 --> 01:15:20,660 Budu tam dostat. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Pojďme se bavit o Ajax. 1594 01:15:26,870 --> 01:15:31,350 Takže Ajax bude je-- dobře, začněme s tím, co to znamená. 1595 01:15:31,350 --> 01:15:32,350 Je to zkratka. 1596 01:15:32,350 --> 01:15:35,855 To je zkratka pro asynchronní JavaScript a XML. 1597 01:15:35,855 --> 01:15:39,800 A XML je v podstatě bude [Neslyšitelný] s typem našich dat. 1598 01:15:39,800 --> 01:15:42,100 Ale my jsme to vlastně použitý XML. 1599 01:15:42,100 --> 01:15:43,430 Místo toho stačí použít JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Takže v podstatě, je to nějaký data-- asynchronní, JavaScript, a data, 1601 01:15:48,350 --> 01:15:50,040 V tomto případě, JSON. 1602 01:15:50,040 --> 01:15:52,820 A náš cíl, jak jsme již uvedli trochu dříve, 1603 01:15:52,820 --> 01:15:56,880 je, aby bylo možné, aby se Požadavek, že se žádost dělat 1604 01:15:56,880 --> 01:16:00,700 jeho věc v pozadí, ale i nadále 1605 01:16:00,700 --> 01:16:02,550 dělat, co jsme byli v úmyslu dělat. 1606 01:16:02,550 --> 01:16:06,650 A pak, když jsou tyto informace připravený, pak budeme začlenit ji. 1607 01:16:06,650 --> 01:16:08,470 >> Takže pojďme se podívat, co to ve skutečnosti vypadá. 1608 01:16:08,470 --> 01:16:11,210 A to, měli byste být trochu povědomý 1609 01:16:11,210 --> 01:16:13,680 od pset8, ten, který jste právě obrátil. 1610 01:16:13,680 --> 01:16:16,200 Tak tady je platný jQuery funkce, kterou bychom mohli 1611 01:16:16,200 --> 01:16:18,250 Chcete vědět about-- tento znak dolaru. 1612 01:16:18,250 --> 01:16:21,500 Tak to říká funkce jQuery, .getJson. 1613 01:16:21,500 --> 01:16:25,020 >> A to, co tato funkce dělá, je to trvá URL a některé parameters-- 1614 01:16:25,020 --> 01:16:28,000 takže myslím, že v případě, z pset8, bylo to jako, 1615 01:16:28,000 --> 01:16:33,520 URL byla articles.php a Parametry byl go = nějaký poštovní směrovací číslo. 1616 01:16:33,520 --> 01:16:41,580 A říká, OK, podat žádost adresovanou Tato adresa URL s danými parametry. 1617 01:16:41,580 --> 01:16:43,480 A to se prostě stává. 1618 01:16:43,480 --> 01:16:47,730 >> Když to skončí, je to buď bude úspěšně dokončit 1619 01:16:47,730 --> 01:16:49,370 nebo to bude k nezdaru. 1620 01:16:49,370 --> 01:16:53,480 Tak to je ekvivalent výzvy Rob a požádat ho, aby něco udělat. 1621 01:16:53,480 --> 01:17:00,260 A pak, když mu zavolá zpátky, je to buď chystá říct, že jsem udělal, nebo jsem selhal. 1622 01:17:00,260 --> 01:17:04,030 >> Takže v případě, kam hotovo, říkáte, OK, já jsem udělal. 1623 01:17:04,030 --> 01:17:05,980 A pak budete volat tuto funkci. 1624 01:17:05,980 --> 01:17:08,915 V tomto případě, bude to být funkce, která vezme nějaké informace. 1625 01:17:08,915 --> 01:17:12,890 Ten obvykle zajímá je dat, Data, která jsme vlastně vrátili 1626 01:17:12,890 --> 01:17:15,900 jako výsledek volání .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> A vy můžete udělat něco s ním. 1628 01:17:17,470 --> 01:17:23,670 Takže v případě pset8, my zobrazeno jako seznam. 1629 01:17:23,670 --> 01:17:29,050 Fail bude funkce která je aktivována, jestliže požadavek selže 1630 01:17:29,050 --> 01:17:30,450 z jakéhokoli důvodu. 1631 01:17:30,450 --> 01:17:35,104 A v případě pset8, my jen console.log to. 1632 01:17:35,104 --> 01:17:36,020 Jakékoliv dotazy na to? 1633 01:17:36,020 --> 01:17:36,300 To jo. 1634 01:17:36,300 --> 01:17:39,633 >> Diváků: Můžeme stačí použít funkci theta namísto funkce, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: Jistě. 1637 01:17:44,380 --> 01:17:46,713 Tak jo, myslím, že v pset, jsme právě viděli funkci data. 1638 01:17:46,713 --> 01:17:48,700 Takže je to jen the-- ano, OK. 1639 01:17:48,700 --> 01:17:50,510 To je to, co jsme viděli v pset. 1640 01:17:50,510 --> 01:17:51,480 To je naprosto v pořádku. 1641 01:17:51,480 --> 01:17:54,210 >> To jsou jen pokud jste chtěli vytáhnout více informací, 1642 01:17:54,210 --> 01:17:57,190 to jsou věci, které byste mohli dostat od .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Dobrá otázka. 1644 01:17:59,040 --> 01:17:59,706 Něco dalšího? 1645 01:17:59,706 --> 01:18:00,206 To jo. 1646 01:18:00,206 --> 01:18:01,787 >> Diváků: Takže .getJSON je Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH Blumberg: OK. 1648 01:18:02,620 --> 01:18:05,700 Tak tohle je ten druh choulostivé části. 1649 01:18:05,700 --> 01:18:12,390 Jedná se o funkci, která umožňuje jQuery jste k tomu asynchronní volání. 1650 01:18:12,390 --> 01:18:16,080 A ty asynchronní volání, to je co jsme na mysli jako Ajax. 1651 01:18:16,080 --> 01:18:16,850 To jo. 1652 01:18:16,850 --> 01:18:20,185 To mi trvalo opravdu dlouho tahat od sebe, když jsem byl studentem. 1653 01:18:20,185 --> 01:18:21,560 Diváků: Můžete říci, že znovu? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Jo. 1655 01:18:22,476 --> 01:18:23,630 Mohu říci, že znovu? 1656 01:18:23,630 --> 01:18:29,010 Tato funkce .getJSON, to je funkce jQuery. 1657 01:18:29,010 --> 01:18:31,970 A bude to dělat asynchronní volání. 1658 01:18:31,970 --> 01:18:35,700 A tyto asynchronní volání, máme byl na mysli ty, jako Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Nějaké další otázky? 1661 01:18:41,872 --> 01:18:43,330 Máme jen pár minut odešel. 1662 01:18:43,330 --> 01:18:45,080 A Maria se chystá zabalit s bezpečností 1663 01:18:45,080 --> 01:18:47,464 a pak půjdeme třeba jen o hotové. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Super, OK. 1665 01:18:48,630 --> 01:18:54,030 Tak to je-- jen vzít pár sekund se podívat přes to. 1666 01:18:54,030 --> 01:18:56,750 A to není něco, co opravdu skvělé. 1667 01:18:56,750 --> 01:18:59,430 A může mi někdo říct, proč? 1668 01:18:59,430 --> 01:19:05,650 To, co se děje v foo a mohou se mohl potenciálně vyústit v něco špatného, 1669 01:19:05,650 --> 01:19:06,770 a co, že se jmenuje? 1670 01:19:06,770 --> 01:19:07,270 To jo. 1671 01:19:07,270 --> 01:19:10,391 Diváků: V případě, že argument, že je prošel v roce je více než 12 znaků, 1672 01:19:10,391 --> 01:19:11,454 to může přetékat. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Správně. 1674 01:19:12,370 --> 01:19:14,180 Perfektní. 1675 01:19:14,180 --> 01:19:15,384 Jak se to jmenuje? 1676 01:19:15,384 --> 01:19:16,300 Právě jste se o tom zmínil. 1677 01:19:16,300 --> 01:19:16,840 >> Diváků: přetečení vyrovnávací paměti. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Jo, přetečení vyrovnávací paměti. 1679 01:19:18,381 --> 01:19:21,230 Tak to je něco, co označujeme jako přetečení vyrovnávací paměti. 1680 01:19:21,230 --> 01:19:25,500 A vidíme, že uvnitř foo, jsme formulovali jsme vyrovnávací paměti, C, 1681 01:19:25,500 --> 01:19:27,240 o velikosti 12. 1682 01:19:27,240 --> 01:19:32,680 Nicméně, v hlavní, my ne zjistit v žádném případě vůbec 1683 01:19:32,680 --> 01:19:36,480 zda tak, že argv1-- byl druhý argument. 1684 01:19:36,480 --> 01:19:39,630 Nechceme kontrolovat, zda Velikost je to vhodné. 1685 01:19:39,630 --> 01:19:43,380 >> Takže pokud jsme měli Uživatel se zlými úmysly, zejména 1686 01:19:43,380 --> 01:19:47,170 kteří se dát do nějaké tvrzení, že byl déle než 12 let, a poté případně 1687 01:19:47,170 --> 01:19:50,850 za hranice, které Argument, měl nějaký spustitelný kód 1688 01:19:50,850 --> 01:19:55,570 že se snaží udělat něco špatného s tím; pak to, co by se stalo, 1689 01:19:55,570 --> 01:19:59,310 by se přepsat návrat adresa funkce foo, 1690 01:19:59,310 --> 01:20:04,370 způsobující funkci, která při vracet k provedení tohoto kódu. 1691 01:20:04,370 --> 01:20:07,540 A pak se špatné věci se může stát. 1692 01:20:07,540 --> 01:20:09,850 Má to smysl, aby všechny? 1693 01:20:09,850 --> 01:20:12,424 >> A jak můžeme chránit proti tomu? 1694 01:20:12,424 --> 01:20:13,090 Nějaké návrhy? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 V podstatě, uvnitř potenciálně foo, jak 1697 01:20:21,890 --> 01:20:28,294 můžeme zkontrolovat, aby se ujistil , že se nemůže stát? 1698 01:20:28,294 --> 01:20:33,879 >> Diváků: Pokud je překročena velikost 12, byste přidělit další paměť? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: návrh je, přidělit překročeny další paměť velikosti. 1700 01:20:37,170 --> 01:20:39,800 Ve skutečnosti, můžeme udělat něco mnohem jednodušší, než je také. 1701 01:20:39,800 --> 01:20:44,870 Můžeme jen získat délka řetězce argumentu, který je zadán, 1702 01:20:44,870 --> 01:20:48,590 zkontrolovat, zda, který je méně než nebo rovno 12-- 1703 01:20:48,590 --> 01:20:50,790 což je to, co to chceme být, protože nechceme 1704 01:20:50,790 --> 01:20:52,373 to překročit meze naší paměti. 1705 01:20:52,373 --> 01:20:55,690 A pak, pokud tomu tak není, my může pracovat s argumentem. 1706 01:20:55,690 --> 01:21:00,296 A pak, pokud se tak stane, budeme skutečně chtějí na Yello potenciálně u uživatele. 1707 01:21:00,296 --> 01:21:01,670 Ale to je, jak bychom to udělat. 1708 01:21:01,670 --> 01:21:02,443 Ano. 1709 01:21:02,443 --> 01:21:04,360 >> Publikum: Mohl byste vysvětlit memcpy opravdu rychle? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, promiň. 1711 01:21:05,443 --> 01:21:06,040 Ano. 1712 01:21:06,040 --> 01:21:11,290 Memcpy vezme cokoliv je-- líto, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy bere, co je v barech, co je předán 1714 01:21:15,850 --> 01:21:18,050 na foo jako argument příkazového řádku. 1715 01:21:18,050 --> 01:21:19,440 Takže to bude trvat argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 se nazývá bar zde. 1717 01:21:21,420 --> 01:21:24,453 Takže to bude trvat a baru to bude kopírovat to do cca. 1718 01:21:24,453 --> 01:21:25,402 >> Diváků: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: A bude to copy-- třetí argument prostě se odkazuje 1720 01:21:28,360 --> 01:21:30,601 na to, jak moc to bude kopírovat do cca. 1721 01:21:30,601 --> 01:21:31,142 Diváků: Ah. 1722 01:21:31,142 --> 01:21:33,030 Takže tohle je kopírování všechno to pak. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Jo, je to kopírování všechno. 1724 01:21:34,310 --> 01:21:34,810 Ano. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 Za prvé, jsme se ujistěte, že bar není rovná null, protože je to ukazatel. 1727 01:21:41,910 --> 01:21:44,680 Pak jsme si délka řetězce bar. 1728 01:21:44,680 --> 01:21:47,530 Snažíme se o to, že je to menší než nebo rovný 12. 1729 01:21:47,530 --> 01:21:50,070 A pak proto, že jsme ujistil, můžeme vlastně 1730 01:21:50,070 --> 01:21:53,122 memcpy a ujistěte se, že to je v pořádku. 1731 01:21:53,122 --> 01:21:53,705 Nějaké otázky? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Skvělý. 1734 01:21:58,690 --> 01:22:00,400 Mám dvě true nebo false otázky. 1735 01:22:00,400 --> 01:22:05,470 Může mi někdo říct hned pokud se jedná o pravdivé nebo nepravdivé? 1736 01:22:05,470 --> 01:22:07,460 Ano, je to falešné. 1737 01:22:07,460 --> 01:22:07,960 Přesně. 1738 01:22:07,960 --> 01:22:09,330 Oba z nich jsou falešné. 1739 01:22:09,330 --> 01:22:12,682 Takže za použití jedno heslo je nikdy opravdu dobrý nápad 1740 01:22:12,682 --> 01:22:14,890 protože pokud někdo ví, vaše heslo, mohou jen 1741 01:22:14,890 --> 01:22:16,260 přístup ke všem vaše další účty. 1742 01:22:16,260 --> 01:22:19,260 A pak ikony dělat nic aby byla zajištěna bezpečnost. 1743 01:22:19,260 --> 01:22:24,900 Měli bychom se obvykle vypadají na HTTPS místo HTTP a URL. 1744 01:22:24,900 --> 01:22:28,560 >> A některé další druhy útoky, které jsme uváděné 1745 01:22:28,560 --> 01:22:31,390 že David je uvedeno v přednáška, SQL injection útoky. 1746 01:22:31,390 --> 01:22:37,310 Už jsme viděli, že pokud budeme ne-- Funkce CS50 dotaz zaručuje, že SQL 1747 01:22:37,310 --> 01:22:39,530 injection útoky nemůže nastat. 1748 01:22:39,530 --> 01:22:42,640 Ale když jsme nebyli používat CS50, citát, konec citátu "v dotazu" 1749 01:22:42,640 --> 01:22:46,830 bychom se ujistit, že vstup uživatele není vlastně nějaký SQL 1750 01:22:46,830 --> 01:22:49,670 dotaz, který způsobí, vše naše stoly být zrušen 1751 01:22:49,670 --> 01:22:54,070 nebo něco špatného na stane s naší databázi. 1752 01:22:54,070 --> 01:22:56,790 >> Session je únos jiný typ útoku 1753 01:22:56,790 --> 01:23:05,940 že se stane, když některé špatné osoba používá relace nějaké oběti 1754 01:23:05,940 --> 01:23:08,740 ID pro přístup k přihlašovací údaje. 1755 01:23:08,740 --> 01:23:13,620 Takže velmi triviální příklad, který je jako když máme veřejného počítače, 1756 01:23:13,620 --> 01:23:21,120 pak je špatný člověk přihlásí a pak mají soubory cookie, které jsou uloženy. 1757 01:23:21,120 --> 01:23:23,380 A cookies nemění na zasedání. 1758 01:23:23,380 --> 01:23:27,620 >> Pak máme oběť jít a pak se přihlásit na webových stránkách. 1759 01:23:27,620 --> 01:23:30,290 Cookies se nemění pro určitou relaci. 1760 01:23:30,290 --> 01:23:33,060 A pak oběť přihlásí do webové stránky a pak odejde. 1761 01:23:33,060 --> 01:23:36,190 A pak ten, kdo se vrací pak mohou i nadále používat své ID relace 1762 01:23:36,190 --> 01:23:37,430 pro přístup k jejich informace. 1763 01:23:37,430 --> 01:23:40,050 Takže to je jeden z příkladů, jak se to mohlo stát. 1764 01:23:40,050 --> 01:23:45,570 >> A pak bych si starosti příliš mnoho o zvláštní kód nebo cokoliv 1765 01:23:45,570 --> 01:23:49,270 jako to, které by mohly způsobit to, ale má nějaký nápad, co 1766 01:23:49,270 --> 01:23:51,400 zahrnuté proměnné jsou v tom. 1767 01:23:51,400 --> 01:23:53,897 A pak manipulace záhlaví Data je jiný typ útoku 1768 01:23:53,897 --> 01:23:55,230 že má David mluvil o. 1769 01:23:55,230 --> 01:23:59,730 A to jen odkazuje na co se může stát, když 1770 01:23:59,730 --> 01:24:04,300 byly reakce, HTTP odezva uvnitř naší hlavičky 1771 01:24:04,300 --> 01:24:05,720 není správně dezinfikují. 1772 01:24:05,720 --> 01:24:14,340 >> A každý z fields-- například, pokud někdo přepíše jeden z hlavičky 1773 01:24:14,340 --> 01:24:18,860 Hodnoty, které mají obsahovat nic víc, než co by měli contain-- a vlastně 1774 01:24:18,860 --> 01:24:22,720 obsahovat, například, 200 OK stavový kód, pak se 1775 01:24:22,720 --> 01:24:26,890 by mohly dělat škodlivý věci, když nemáš. 1776 01:24:26,890 --> 01:24:30,815 Ale já bych si starosti příliš moc o zvláštním kódem 1777 01:24:30,815 --> 01:24:34,110 které by mohly způsobit to, jen trochu porozumění 1778 01:24:34,110 --> 01:24:37,290 na vysoké úrovni takové věci. 1779 01:24:37,290 --> 01:24:39,570 >> Myslím, že to je vše, že musíme pokrýt. 1780 01:24:39,570 --> 01:24:40,090 Úžasný. 1781 01:24:40,090 --> 01:24:43,310 Každý, kdo má nějaké otázky týkající se některý z věcí, které jsme na které se vztahuje? 1782 01:24:43,310 --> 01:24:44,213 Ano. 1783 01:24:44,213 --> 01:24:48,077 >> Diváků: Takže jeden druh více logistické otázka. 1784 01:24:48,077 --> 01:24:53,400 Je zaměřena především obsah na věci, po kvíz 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: So Otázkou je, je obsah 1786 01:24:55,730 --> 01:24:59,720 zaměřena především na věci po kvíz 1? 1787 01:24:59,720 --> 01:25:06,070 Takže je kladen důraz na později kvíz 1, s výjimkou 1788 01:25:06,070 --> 01:25:10,914 že se musíme soustředit na věci v pset5 a mnoho datových struktur 1789 01:25:10,914 --> 01:25:11,580 že se vztahuje. 1790 01:25:11,580 --> 01:25:14,300 A nemůžeme říci, že jsme můžete ignorovat cokoli předtím, než 1791 01:25:14,300 --> 01:25:17,120 že proto, že navazuje na to, jak dobře. 1792 01:25:17,120 --> 01:25:21,845 >> Tak se zaměřují na to, že navíc pset5 materiál jako zahrnující propojené seznamy, stohy, 1793 01:25:21,845 --> 01:25:23,720 fronty, a vše, co že Hannah přešel. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: Správně. 1795 01:25:24,050 --> 01:25:27,450 Jo, šli jsme přes všechny věci C hned na začátku velmi rychle. 1796 01:25:27,450 --> 01:25:29,090 Ale ujistěte se, že přezkoumat. 1797 01:25:29,090 --> 01:25:32,700 Vraťte se zpět a dívat se na kvíz 0 hodnocení. 1798 01:25:32,700 --> 01:25:36,110 >> Pár více logistické poznámky, Jen když máme vaši pozornost. 1799 01:25:36,110 --> 01:25:39,100 Budeme mít úřední hodiny a to jak v pondělí a úterý večer. 1800 01:25:39,100 --> 01:25:41,540 Chystají se být v MD 119. 1801 01:25:41,540 --> 01:25:44,220 To vše je na webových stránkách, tak pokud nechcete slyšet, žádné starosti. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA: 08:30 do 11:00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH Blumberg: Jo, 08:30 do 11:00. 1804 01:25:46,260 --> 01:25:46,910 Budeme tam. 1805 01:25:46,910 --> 01:25:48,368 Budeme tam odpovědět na otázky. 1806 01:25:48,368 --> 01:25:49,480 Je to docela chladno a zábavné. 1807 01:25:49,480 --> 01:25:53,240 Vy můžete klást žádné otázky že budete mít na kvíz 1. 1808 01:25:53,240 --> 01:25:55,740 A kvíz 1 je Středa, tak hodně štěstí. 1809 01:25:55,740 --> 01:25:59,770 Máte-li jakékoli dotazy, možná přijít s námi mluvit tady one-on-one. 1810 01:25:59,770 --> 01:26:00,880 Bezva. 1811 01:26:00,880 --> 01:26:01,630 Díky moc. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Díky moc, kluci. 1813 01:26:02,880 --> 01:26:03,480 >> Diváků: Hurá. 1814 01:26:03,480 --> 01:26:05,930 >> [POTLESK] 1815 01:26:05,930 --> 01:26:07,530