1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH Blumberg: Witam wszystkich. 3 00:00:07,030 --> 00:00:09,530 Mamy zamiar zacząć tylko kilka minut wcześnie 4 00:00:09,530 --> 00:00:11,738 ponieważ mamy dużo materiału do przejść. 5 00:00:11,738 --> 00:00:12,790 Jestem Hannah. 6 00:00:12,790 --> 00:00:13,865 Jestem TF. 7 00:00:13,865 --> 00:00:16,239 Maria będzie łączenia nam w zaledwie kilka minut. 8 00:00:16,239 --> 00:00:17,560 Uczy odcinek tuż przed. 9 00:00:17,560 --> 00:00:19,351 Uczę prawej części po, więc jedziemy 10 00:00:19,351 --> 00:00:21,200 aby go do półtorej godziny. 11 00:00:21,200 --> 00:00:25,490 >> Więc jak zobaczysz tu mamy dość kilka tematów musimy przejść, 12 00:00:25,490 --> 00:00:27,200 więc będziemy jechać trochę szybko. 13 00:00:27,200 --> 00:00:31,140 Ale jeśli w dowolnym momencie możemy powiedzieć coś zbyt szybko lub nie rozumiesz, 14 00:00:31,140 --> 00:00:33,170 nie krępuj się przerywać pytaniami. 15 00:00:33,170 --> 00:00:36,610 Chcemy być w stanie zrobić to przeglądu sesji jako użyteczne dla was wszystkich 16 00:00:36,610 --> 00:00:37,973 jak to możliwe. 17 00:00:37,973 --> 00:00:38,920 Niesamowite. 18 00:00:38,920 --> 00:00:41,650 >> Warto więc przejść w prawo z niektóre tematy, które faktycznie 19 00:00:41,650 --> 00:00:46,980 bardzo, bardzo krótko, pokryte dla Quiz 0 w opinii sesji quizu 0. 20 00:00:46,980 --> 00:00:48,840 Więc zaczynając od połączonych listach. 21 00:00:48,840 --> 00:00:52,090 Więc po prostu upewnij się, że niektóre Podstawowa wiedza na temat powiązanych list 22 00:00:52,090 --> 00:00:55,110 i są wygodne robi niektóre z podstawowych operacji. 23 00:00:55,110 --> 00:00:58,560 >> Więc po prostu przeglądać, związane Listy są lepsze od tablic 24 00:00:58,560 --> 00:01:01,020 ponieważ mogą one rozwijać się dynamicznie. 25 00:01:01,020 --> 00:01:03,300 Mamy więc tę ogromną przewagę. 26 00:01:03,300 --> 00:01:06,031 Widzieliśmy je używany w tabelach z cebulą, kiedy 27 00:01:06,031 --> 00:01:08,280 nie wiem dokładnie ile rzeczy, które będziesz chciał 28 00:01:08,280 --> 00:01:10,900 wstawić do naszej struktury danych. 29 00:01:10,900 --> 00:01:15,700 Niestety, mamy kawałki połączony lista całej pamięci, 30 00:01:15,700 --> 00:01:20,820 więc nie będzie konieczności w stanie zrobić stały dostęp czasowy 31 00:01:20,820 --> 00:01:22,502 do każdego elementu w połączonej listy. 32 00:01:22,502 --> 00:01:24,210 W celu znalezienia dany element, możemy 33 00:01:24,210 --> 00:01:26,510 mają do iteracji wszystkie sposób od początku. 34 00:01:26,510 --> 00:01:30,610 Tak więc należy pamiętać, że większość podstawowe operacje są omega 1. 35 00:01:30,610 --> 00:01:32,130 Tak więc wkładka jest po prostu zajmie 1. 36 00:01:32,130 --> 00:01:37,520 Usuń zajmie n Ponieważ trzeba iść znaleźć go z listy. 37 00:01:37,520 --> 00:01:39,260 Wyszukiwarka może potrwać i, co gorsza, n. 38 00:01:39,260 --> 00:01:42,330 Nie możemy zrobić coś takiego binarne wyszukiwania na połączonej listy 39 00:01:42,330 --> 00:01:45,101 Ponieważ nie możemy po prostu losowo wskoczyć do środka. 40 00:01:45,101 --> 00:01:45,600 Chłodny. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Niesamowite. 43 00:01:48,960 --> 00:01:50,270 >> Trochę stosy. 44 00:01:50,270 --> 00:01:53,980 To znów pojawił się na quizie 0, więc Ciebie powinno być super wygodne z nim. 45 00:01:53,980 --> 00:01:57,210 Ale na stosach, prosimy pamiętać, stos tac. 46 00:01:57,210 --> 00:01:59,940 I to będzie pierwsza w, wytrzyma. 47 00:01:59,940 --> 00:02:02,272 Więc stos rzeczy w stosie, po czym 48 00:02:02,272 --> 00:02:04,980 jeśli chcemy, aby wziąć coś off-- które nazywamy pstrykaliśmy 49 00:02:04,980 --> 00:02:06,581 stack-- możemy puścić na szczyt. 50 00:02:06,581 --> 00:02:09,289 A jeśli chcemy umieścić coś w stosie, nazywamy go naciska. 51 00:02:09,289 --> 00:02:13,170 Więc to zawsze będzie dorastania od dołu jak stosu tacek. 52 00:02:13,170 --> 00:02:14,540 Niesamowite. 53 00:02:14,540 --> 00:02:17,607 >> Widzieliśmy stosy realizowane z obu połączonych list i tablic. 54 00:02:17,607 --> 00:02:19,440 Jeśli realizacji z tablicami, chcesz 55 00:02:19,440 --> 00:02:22,350 aby upewnić się, aby śledzić zarówno wielkość i pojemność. 56 00:02:22,350 --> 00:02:27,540 Tak więc rozmiar będzie obecny ilość rzeczy w swoim stosie, 57 00:02:27,540 --> 00:02:32,900 podczas gdy zdolność jest całkowita liczba rzeczy, które można zapisać w stosie. 58 00:02:32,900 --> 00:02:34,220 Chłodny. 59 00:02:34,220 --> 00:02:35,767 >> Bardzo podobnie, mamy kolejki. 60 00:02:35,767 --> 00:02:38,850 W tym przypadku, zamiast myśleć o stos tac, myśleć o linię. 61 00:02:38,850 --> 00:02:40,697 To będzie pierwsze weszło, pierwsze wyszło. 62 00:02:40,697 --> 00:02:42,780 Więc jeśli jesteś w kolejce do coś w sklepie, 63 00:02:42,780 --> 00:02:46,920 mamy nadzieję, że osoba, najpierw w Linia będzie pierwszym pomógł. 64 00:02:46,920 --> 00:02:49,350 >> Zamiast mówić, naciśnij i pop jak my na stosie, 65 00:02:49,350 --> 00:02:52,000 po prostu powiedzieć, Kolejkuj i rozkolejkowania. 66 00:02:52,000 --> 00:02:54,970 I znowu, jeśli jesteś realizacji to z tablicy, 67 00:02:54,970 --> 00:02:56,720 musimy śledzić stanowi nie tylko rozmiar 68 00:02:56,720 --> 00:03:02,390 i pojemność, ale także głowy, które będzie przednia naszej kolejki. 69 00:03:02,390 --> 00:03:03,010 Chłodny. 70 00:03:03,010 --> 00:03:05,770 Wszelkie pytania dotyczące któregokolwiek z tego? 71 00:03:05,770 --> 00:03:06,320 Niesamowite. 72 00:03:06,320 --> 00:03:07,640 Przesuwanie w prawo wzdłuż. 73 00:03:07,640 --> 00:03:08,564 >> OK, tabele mieszania. 74 00:03:08,564 --> 00:03:10,605 Oto, gdzie zaczyna uzyskać naprawdę ciekawe. 75 00:03:10,605 --> 00:03:14,150 Więc tabeli mieszania jest wdrożenie z tablicy asocjacyjnej. 76 00:03:14,150 --> 00:03:16,700 Więc w zasadzie to, co się stało Mamy wszystko jest ten wkład, 77 00:03:16,700 --> 00:03:18,750 i dajemy go do hash Funkcja, która mówi, 78 00:03:18,750 --> 00:03:21,840 OK, to jest, gdy w tablica mieszająca należy. 79 00:03:21,840 --> 00:03:24,860 >> Więc najprostszej funkcji skrótu że widzieliśmy się tylko powiedzieć, 80 00:03:24,860 --> 00:03:28,170 OK, załóżmy, że chcemy umieścić struny w naszej tabeli mieszania. 81 00:03:28,170 --> 00:03:30,870 I bardzo prosty pomysł może być powiedzieć, OK, 82 00:03:30,870 --> 00:03:34,350 niech po prostu posortować przez pierwsza litera słowa. 83 00:03:34,350 --> 00:03:37,570 Więc można zobaczyć tutaj, bierzemy banana, umieścić go za pośrednictwem funkcji mieszającej, 84 00:03:37,570 --> 00:03:40,190 i mówi, hej, powinny iść w indeksie 1. 85 00:03:40,190 --> 00:03:45,120 >> Możemy więc w zasadzie myśleć o hash Stół jako kilka różnych wiadrach. 86 00:03:45,120 --> 00:03:49,880 I każdy z tych wiader będzie trzymać głowę połączonej listy. 87 00:03:49,880 --> 00:03:55,030 I w tej połączonej listy jest, gdzie się da faktycznie wprowadzone różne fragmenty danych. 88 00:03:55,030 --> 00:03:57,820 >> Więc nurkowania trochę więcej w funkcji skrótu, oto 89 00:03:57,820 --> 00:03:59,870 przykład po prostu opisane gdzie tylko powiedzieć, 90 00:03:59,870 --> 00:04:02,460 OK, weź pierwszą literę słowa i jesteśmy 91 00:04:02,460 --> 00:04:03,990 zamiar uporządkować je do wiader. 92 00:04:03,990 --> 00:04:08,490 Więc zapewne, że nie będzie 26 wiadra, po jednym dla każdej litery alfabetu. 93 00:04:08,490 --> 00:04:10,090 Dlaczego nie jest to wielka funkcja skrótu? 94 00:04:10,090 --> 00:04:13,461 Co sprawia, że ​​to nie idealne? 95 00:04:13,461 --> 00:04:13,960 Tak. 96 00:04:13,960 --> 00:04:15,790 >> PUBLICZNOŚCI: Zamierzasz mieć kolizji. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Tak, dokładnie. 98 00:04:16,390 --> 00:04:18,000 Będziesz mieć kolizji. 99 00:04:18,000 --> 00:04:18,954 Więc to jest jedna rzecz. 100 00:04:18,954 --> 00:04:21,620 I porozmawiamy o tym, jak możemy naprawić kolizji w ciągu sekundy. 101 00:04:21,620 --> 00:04:23,980 Kolejny problem z tym szczególności funkcja skrótu 102 00:04:23,980 --> 00:04:25,980 jest to, że nasza inna wiadra będą 103 00:04:25,980 --> 00:04:28,960 z dość drastycznie różne rozmiary. 104 00:04:28,960 --> 00:04:33,840 >> Wiemy, że jest dużo więcej słów, które zaczynają się od X, 105 00:04:33,840 --> 00:04:38,980 więc będziemy mieć bardzo niesymetryczne wiadra w naszej tabeli mieszania. 106 00:04:38,980 --> 00:04:40,050 Chłodny. 107 00:04:40,050 --> 00:04:41,340 Więc tak, wróćmy do punkt kolizji. 108 00:04:41,340 --> 00:04:42,900 Co zrobimy, jeśli nie ma kolizji? 109 00:04:42,900 --> 00:04:44,490 >> Mamy kilka różnych opcji. 110 00:04:44,490 --> 00:04:47,600 Tak jeden, więc przypuszczam, że próbujemy umieścić jagody na naszej tablicy mieszającej. 111 00:04:47,600 --> 00:04:50,370 I widzimy, oh, my chcemy umieścić go w indeksie 1, 112 00:04:50,370 --> 00:04:52,070 ale banan już tam mieszka. 113 00:04:52,070 --> 00:04:53,110 Co zrobimy? 114 00:04:53,110 --> 00:04:54,560 Mamy dwie główne opcje. 115 00:04:54,560 --> 00:04:58,050 >> Numer jeden to możemy powiedzieć, OK, nie ma miejsca w indeksie 1, 116 00:04:58,050 --> 00:05:03,210 ale niech po prostu zachować patrząc przez dopóki możemy znaleźć inną otwartą miejsce. 117 00:05:03,210 --> 00:05:08,490 Będziemy więc powiedzieć, OK, postawmy go w miejscu 3. 118 00:05:08,490 --> 00:05:09,240 To jedna z opcji. 119 00:05:09,240 --> 00:05:11,470 To się nazywa liniowa sondowania. 120 00:05:11,470 --> 00:05:15,500 >> I druga opcja jest mówiąc: OK, dobrze, niech po prostu zrobić każdy z tych wiader 121 00:05:15,500 --> 00:05:17,470 być szefowie połączonych listach. 122 00:05:17,470 --> 00:05:21,910 I to jest OK, jeśli jest więcej niż jednej rzeczy w wiadrze. 123 00:05:21,910 --> 00:05:23,820 Jesteśmy po prostu się dołączyć go do przodu. 124 00:05:23,820 --> 00:05:26,032 Więc tutaj można zobaczyć, OK, kiedy włożona jagody, mamy 125 00:05:26,032 --> 00:05:28,240 po prostu wziął banan, rodzaj pchnął go na trochę 126 00:05:28,240 --> 00:05:29,842 i rzucił berry tam. 127 00:05:29,842 --> 00:05:31,050 I to jest również całkowicie w porządku. 128 00:05:31,050 --> 00:05:32,830 To się nazywa oddzielne łańcuchowym. 129 00:05:32,830 --> 00:05:38,100 Możesz myśleć o tym, jak coś w rodzaju tablica głowic połączonych listach. 130 00:05:38,100 --> 00:05:41,950 Wszelkie pytania dotyczące hash tabele, funkcje hash? 131 00:05:41,950 --> 00:05:44,290 Niesamowite. 132 00:05:44,290 --> 00:05:45,470 >> Drzewa i prób. 133 00:05:45,470 --> 00:05:47,287 Tak więc drzewo jest każdy rodzaj struktury danych 134 00:05:47,287 --> 00:05:49,453 w których istnieje jakiś hierarchii lub jakimś 135 00:05:49,453 --> 00:05:51,247 z rankingu do różnych obiektów. 136 00:05:51,247 --> 00:05:53,580 A to stanie się bardzo jasne, kiedy widzimy przykład. 137 00:05:53,580 --> 00:05:56,960 I widzieliśmy prób, wraz z tabel hash, w pset5-- 138 00:05:56,960 --> 00:06:00,700 które znów całkowicie uczciwa gra za to quiz-- jako kolejny danych 139 00:06:00,700 --> 00:06:03,110 struktury, które możemy przechowywać różne rzeczy. 140 00:06:03,110 --> 00:06:06,782 W przypadku słownika możemy przechowywać kilka słów. 141 00:06:06,782 --> 00:06:08,240 Warto więc spojrzeć na niektóre drzewa. 142 00:06:08,240 --> 00:06:10,190 To jest to przykład drzewa. 143 00:06:10,190 --> 00:06:13,105 Ma coś w rodzaju struktury, że struktury hierarchicznej, 144 00:06:13,105 --> 00:06:15,920 gdzie można zobaczyć, że Ten węzeł 1 na górze 145 00:06:15,920 --> 00:06:20,750 ma jakieś rangi powyżej 2 i 3, które znajdują się powyżej 4, 5 i 6 oraz 7, 146 00:06:20,750 --> 00:06:22,860 które znajdują się powyżej 8 i 9. 147 00:06:22,860 --> 00:06:25,210 Więc to wszystko rozumiemy przez drzewo, więc może po prostu rodzaj 148 00:06:25,210 --> 00:06:26,660 Picture to w głowie. 149 00:06:26,660 --> 00:06:29,050 >> Teraz mamy kilka bardziej wyspecjalizowanych drzew. 150 00:06:29,050 --> 00:06:31,070 Tak więc jednym z przykładów jest drzewo binarne. 151 00:06:31,070 --> 00:06:33,290 A binarne drzewo, ponownie, tylko będzie 152 00:06:33,290 --> 00:06:37,040 struktura danych z pewnego rodzaju hierarchii, ale każdy z węzłów 153 00:06:37,040 --> 00:06:38,650 może mieć co najwyżej dwoje dzieci. 154 00:06:38,650 --> 00:06:41,530 To miejsce, gdzie binarny słowo pochodzi od. 155 00:06:41,530 --> 00:06:43,410 To jest to przykład binarnego drzewa. 156 00:06:43,410 --> 00:06:45,720 Tak, że to mniejszy kategoria drzew. 157 00:06:45,720 --> 00:06:48,960 >> Teraz przejdźmy jeszcze bardziej konkretne i mówić o binarnym trees-- wyszukiwania binarnego 158 00:06:48,960 --> 00:06:51,310 drzew, a. 159 00:06:51,310 --> 00:06:56,430 Więc pomysł jest nie tylko każdy węzeł posiada co najwyżej dwoje dzieci, 160 00:06:56,430 --> 00:07:00,300 ale wszystkie dzieci do lewa będą mniejsze 161 00:07:00,300 --> 00:07:03,450 i wszystkie dzieci do prawo będą większe. 162 00:07:03,450 --> 00:07:05,890 Więc zawiadomienia w właśnie nasze drzewo binarne, nie 163 00:07:05,890 --> 00:07:08,650 żadnego związku między numerami. 164 00:07:08,650 --> 00:07:12,990 Ale w poszukiwaniu binarnego drzewo, widzimy, OK, tutaj jest 44. 165 00:07:12,990 --> 00:07:17,080 A każdy numer z lewej 44 jest mniejsze i wszystko w prawo 166 00:07:17,080 --> 00:07:17,920 jest większa. 167 00:07:17,920 --> 00:07:20,130 >> I że posiada na każdym poziom drzewa. 168 00:07:20,130 --> 00:07:24,810 Więc, jest mniejsza niż 22 i jest większe niż 22. 169 00:07:24,810 --> 00:07:26,390 I to jest binarne drzewo poszukiwań. 170 00:07:26,390 --> 00:07:28,900 Dlaczego uważamy, że to się nazywa binarne drzewo wyszukiwania? 171 00:07:28,900 --> 00:07:30,651 Jaki algorytm to przypomina? 172 00:07:30,651 --> 00:07:31,650 PUBLICZNOŚCI: Binary wyszukiwania. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: Binary wyszukiwania. 174 00:07:32,480 --> 00:07:35,150 Bo jeśli szukasz szczególności liczba w tym drzewie, 175 00:07:35,150 --> 00:07:38,800 w każdym punkcie, wystarczy zapukać od połowy drzewa, co jest dobre. 176 00:07:38,800 --> 00:07:43,800 I tak, że zamierza dać nam coś że wygląda trochę jak wyszukiwania binarnego. 177 00:07:43,800 --> 00:07:45,870 Jakiekolwiek pytania? 178 00:07:45,870 --> 00:07:47,570 Wszystko w porządku, super. 179 00:07:47,570 --> 00:07:48,560 >> Dobra, stara. 180 00:07:48,560 --> 00:07:49,657 Ulubiona wszystkich. 181 00:07:49,657 --> 00:07:51,990 Więc to jest przykład, który widzieliśmy kilka w klasie. 182 00:07:51,990 --> 00:07:54,710 I znowu, jest to tylko kolejny sposób możemy przechowywać dane. 183 00:07:54,710 --> 00:07:57,530 W przypadku słownika znowu jest to po prostu będzie struny. 184 00:07:57,530 --> 00:08:00,870 Zobaczmy więc, co to właściwie wygląda na nieco niższym poziomie. 185 00:08:00,870 --> 00:08:03,690 >> Warto więc spojrzeć w jednym z węzłów w trie. 186 00:08:03,690 --> 00:08:07,532 I widzimy, OK, nie będzie być logiczna i węzeł, 187 00:08:07,532 --> 00:08:09,170 wskaźnik do węzła. 188 00:08:09,170 --> 00:08:11,400 I widzimy, że Boolean nazywa is_word. 189 00:08:11,400 --> 00:08:13,490 Tak w zasadzie, to będzie odpowiadać 190 00:08:13,490 --> 00:08:16,750 do tych małych trójkątów, które mówi, jeśli dotarłeś tutaj, 191 00:08:16,750 --> 00:08:19,100 znalazłeś całe słowo. 192 00:08:19,100 --> 00:08:23,670 >> Wiemy, że "Turinga" ponad Powyżej znajduje się pełna słowo, 193 00:08:23,670 --> 00:08:28,030 podczas gdy po prostu T-U-R nie jest słowem dlatego, że nie widzę, że trochę delta. 194 00:08:28,030 --> 00:08:31,440 A że trochę trójkąt, znowu, odpowiada tym is_word, 195 00:08:31,440 --> 00:08:34,480 to Boolean is_word. 196 00:08:34,480 --> 00:08:36,320 A potem mamy tablicę dzieci. 197 00:08:36,320 --> 00:08:39,860 Więc na każdym poziomie, można mają szczególną węzła 198 00:08:39,860 --> 00:08:42,470 i że punkty węzła do Tablica całego alfabetu. 199 00:08:42,470 --> 00:08:44,346 >> Więc widać, znowu, w tym picture-- jestem 200 00:08:44,346 --> 00:08:48,170 zamierza utrzymać skoki z powrotem i forth-- że matryca na początku 201 00:08:48,170 --> 00:08:51,640 ma kilka różnych węzły pochodzące poza nim. 202 00:08:51,640 --> 00:08:57,140 Ma 26 lub 27, jeśli chcesz zawierać dodatkowy znak. 203 00:08:57,140 --> 00:09:01,320 A to daje nam sposób przechowywania naszych danych 204 00:09:01,320 --> 00:09:04,450 w taki sposób, że można go znaleźć na że można patrzeć super szybko. 205 00:09:04,450 --> 00:09:06,650 Jaki jest czas wyszukiwania dla trie? 206 00:09:06,650 --> 00:09:07,970 >> PUBLICZNOŚCI: [niesłyszalne]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Tak. 208 00:09:08,300 --> 00:09:09,550 W teorii jest to stała czasowa. 209 00:09:09,550 --> 00:09:13,230 To będzie tylko być wielkości słowo, które chcesz wyszukać. 210 00:09:13,230 --> 00:09:15,950 Nawet jeśli dodamy zillion więcej słów do naszej trie, 211 00:09:15,950 --> 00:09:18,160 to nie będzie na nas dłużej, aby określić, 212 00:09:18,160 --> 00:09:19,690 czy dane słowo jest w trie. 213 00:09:19,690 --> 00:09:21,412 Więc to jest naprawdę miłe. 214 00:09:21,412 --> 00:09:23,697 >> PUBLICZNOŚCI: Czy ty zainicjować tej tablicy? 215 00:09:23,697 --> 00:09:24,780 Przegapiłeś punkt lub dwa. 216 00:09:24,780 --> 00:09:26,130 Można po prostu mówić o że na sekundę? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: Oczywiście, absolutnie. 218 00:09:26,680 --> 00:09:27,590 Dobre pytanie. 219 00:09:27,590 --> 00:09:31,140 Pytanie było, że mają tablicę, która jest 220 00:09:31,140 --> 00:09:34,180 będziemy mieć gwiazdę węzła jako przeciwieństwie do właśnie węzła, prawda? 221 00:09:34,180 --> 00:09:35,180 Chłodny. 222 00:09:35,180 --> 00:09:37,990 Więc o czym mówimy jest nasza tablica jest po prostu 223 00:09:37,990 --> 00:09:40,035 będzie wskaźniki do innych tablic. 224 00:09:40,035 --> 00:09:42,910 Więc to essentially-- to rodzaj czuje się jak w połączonej listy w ten sposób 225 00:09:42,910 --> 00:09:46,620 przy czym każdy z tych dzieci prostu wskazać następnego węzła. 226 00:09:46,620 --> 00:09:49,030 >> A sposób, że właściwie określić, hej, OK, 227 00:09:49,030 --> 00:09:52,320 mamy powtórzyć przez cały słowem, jest to słowo w słowniku, 228 00:09:52,320 --> 00:09:54,476 po prostu sprawdzić to is_word. 229 00:09:54,476 --> 00:09:55,100 Świetne pytanie. 230 00:09:55,100 --> 00:09:55,675 Tak. 231 00:09:55,675 --> 00:09:56,216 PUBLICZNOŚCI: OK. 232 00:09:56,216 --> 00:09:57,470 Więc co było środowisko wykonawcze dla trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: Jasne. 234 00:09:58,386 --> 00:10:01,852 Więc runtime dla trie dla wyszukiwanie będzie stała czasowa. 235 00:10:01,852 --> 00:10:04,310 Więc to tylko będzie to liczba liter w słowie. 236 00:10:04,310 --> 00:10:06,310 To nie jest zależne od Wielkość słownika 237 00:10:06,310 --> 00:10:09,510 lub wielkość struktury danych. 238 00:10:09,510 --> 00:10:12,170 Więc tutaj jest nieco prostszy przykład. 239 00:10:12,170 --> 00:10:15,430 >> W tym przypadku, można zobaczyć, że nietoperz słowo jest w słowniku 240 00:10:15,430 --> 00:10:18,900 i masz zoom, ale nie ma czegoś takiego jak zoo. 241 00:10:18,900 --> 00:10:20,050 Jak robimy zoo? 242 00:10:20,050 --> 00:10:24,276 Jak dodamy do zoo do naszego słownik, do naszego trie? 243 00:10:24,276 --> 00:10:24,776 Tak. 244 00:10:24,776 --> 00:10:27,014 >> PUBLICZNOŚCI: Sprawdź is_word odnosi się do [niesłyszalne]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Dobra. 246 00:10:27,930 --> 00:10:31,731 Więc chcemy powiedzieć, Z-O-O, a następnie my chcą sprawdzić się, że pole wyboru, jak również. 247 00:10:31,731 --> 00:10:32,230 Świetny. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Porównajmy bardzo krótko stara porównaniu tabel hash. 250 00:10:37,930 --> 00:10:39,770 Próby są naprawdę świetne ponieważ, jak powiedział, 251 00:10:39,770 --> 00:10:41,610 zapewniają stałą wyszukiwanie w czasie. 252 00:10:41,610 --> 00:10:44,285 Ale ogromna wada to są one naszego wspólnego. 253 00:10:44,285 --> 00:10:46,160 Można odnieść wrażenie, nawet patrząc na to, 254 00:10:46,160 --> 00:10:48,454 że zajmie ogromna ilość pamięci. 255 00:10:48,454 --> 00:10:50,620 Więc oni będą się znacznie większe niż tabele z cebulą, 256 00:10:50,620 --> 00:10:52,270 ale zamierzamy dać nam o wiele krótszy czas sprawdzania adresów. 257 00:10:52,270 --> 00:10:54,478 Więc to rodzaj twój kompromis, co cię obchodzi, 258 00:10:54,478 --> 00:10:57,350 czy to prędkość lub pamięci. 259 00:10:57,350 --> 00:11:02,251 Wszelkie pytania dotyczące któregokolwiek z tym, wszystkich struktur C danych. 260 00:11:02,251 --> 00:11:02,750 Pięknie. 261 00:11:02,750 --> 00:11:03,250 OK. 262 00:11:03,250 --> 00:11:07,322 Mamy zamiar przenieść się do nieco Trochę tworzenie stron internetowych z Marią. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 OK. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Możesz używać laptopa. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Nicea. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 Ok fajnie. 269 00:11:14,912 --> 00:11:17,120 Jak przejść teraz do sieci rozwój, rozmawialiśmy trochę 270 00:11:17,120 --> 00:11:20,680 o zmianie uprawnień plików i katalogów 271 00:11:20,680 --> 00:11:24,190 tak, że mogą być dostępne do innych użytkowników, w świecie 272 00:11:24,190 --> 00:11:28,640 i tak, że możemy zobaczyć, jak w zasadzie można je przekazać nam 273 00:11:28,640 --> 00:11:32,600 kiedy rozwijają rzeczy jak strony internetowe że mamy w większości robi. 274 00:11:32,600 --> 00:11:36,400 >> Więc widzieliśmy polecenia chmod, który jest zmiana trybu, w zasadzie. 275 00:11:36,400 --> 00:11:39,300 To polecenie Linux i zmienia uprawnienia dostępu 276 00:11:39,300 --> 00:11:40,410 obiektów systemu plików. 277 00:11:40,410 --> 00:11:43,370 I obiekt system plików jest tylko katalog, plik, 278 00:11:43,370 --> 00:11:46,810 coś, co można zmienić uprawnienia. 279 00:11:46,810 --> 00:11:53,750 >> Tak więc, aby zobaczyć uprawnienia do plików, wpisujemy polecenie ls, listy -l. 280 00:11:53,750 --> 00:11:56,500 I kiedy wpisać, że mamy zazwyczaj zobaczyć uprawnienia 281 00:11:56,500 --> 00:11:59,660 które wyglądają trochę jak ten przed nazwą katalogu. 282 00:11:59,660 --> 00:12:01,260 Tak d odnosi się do katalogu. 283 00:12:01,260 --> 00:12:05,930 A potem mamy trzy triady, że w zasadzie 284 00:12:05,930 --> 00:12:11,675 odnoszą się do uprawnień albo użytkownik, grupa, lub świat. 285 00:12:11,675 --> 00:12:16,490 >> Rodzaje uprawnień, które możemy mają dla tych trzech grup ludzi 286 00:12:16,490 --> 00:12:20,830 są albo r do odczytu, w dla Napisać, a x do wykonania. 287 00:12:20,830 --> 00:12:23,650 A może mamy tych, dla grupa i świata, jak również. 288 00:12:23,650 --> 00:12:26,940 Najtrudniejszą rzeczą jest to, że czasami kiedy wpisz polecenie chmod, 289 00:12:26,940 --> 00:12:32,960 chcemy wpisać jakiś numer które składa się z trzech bitów. 290 00:12:32,960 --> 00:12:36,990 Tak więc możemy zrobić, jak 777 i że w zasadzie 291 00:12:36,990 --> 00:12:40,450 skierowana do wartości dodanej każdego z tych triad 292 00:12:40,450 --> 00:12:45,060 ponieważ r odsyła do 4, w będzie odnosi się do 2, a x odsyła 1, 293 00:12:45,060 --> 00:12:50,020 Tak więc, gdy dodaje się do góry, a każdy z numerów przyjdzie do wielu skumulowanej 294 00:12:50,020 --> 00:12:52,750 do łącznej wartości pomiędzy 0 i 7. 295 00:12:52,750 --> 00:12:55,150 Więc możemy także 0 przez nie uprawnień w ogóle. 296 00:12:55,150 --> 00:12:58,200 I że w zasadzie dać nam uprawnienia zarówno dla użytkownika, 297 00:12:58,200 --> 00:13:00,450 grupa, świat. 298 00:13:00,450 --> 00:13:02,620 Wszelkie pytania na ten temat do tej pory? 299 00:13:02,620 --> 00:13:05,331 >> PUBLICZNOŚCI: Powiedziałeś przeczytać było 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Tak. 301 00:13:06,164 --> 00:13:07,568 PUBLICZNOŚCI: [niesłyszalne]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Tak. 303 00:13:08,504 --> 00:13:11,790 PUBLICZNOŚCI: A potem przez dodanie wszystkich tych, inni wskazują numer. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Tak. 305 00:13:12,665 --> 00:13:14,970 Tak. 306 00:13:14,970 --> 00:13:17,810 Są to wielkie pytania. 307 00:13:17,810 --> 00:13:20,490 Piękny. 308 00:13:20,490 --> 00:13:25,340 Następnie, wskoczył do HTML i nieco więcej na temat tworzenia stron WWW. 309 00:13:25,340 --> 00:13:27,990 Więc HTML po prostu oznacza, Hipertekstowy język znaczników. 310 00:13:27,990 --> 00:13:30,460 I to jest znaczników języka, który jest standardem 311 00:13:30,460 --> 00:13:32,720 który jest używany do tworzenia stron internetowych. 312 00:13:32,720 --> 00:13:35,750 >> To się nazywa język znaczników bo to nie jest faktycznie skompilowany. 313 00:13:35,750 --> 00:13:40,310 To nie powiedzieć, jak jakiś kod powinien być wykonane lub coś podobnego. 314 00:13:40,310 --> 00:13:44,800 To po prostu wyznacza i opisuje, jak internetowy 315 00:13:44,800 --> 00:13:46,840 Strona należy skonfigurować z każdym z jego elementami 316 00:13:46,840 --> 00:13:48,460 i jak powinny one wyglądać dla użytkownika. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Niektóre z tych tagów HTML, które Podszedłem są następujące. 319 00:13:57,110 --> 00:14:00,500 Wszystkie nasze dokumenty HTML Zaczęło się html DOCTYPE. 320 00:14:00,500 --> 00:14:02,550 Wtedy zawsze mamy tag HTML. 321 00:14:02,550 --> 00:14:03,930 Mamy głowę i ciało. 322 00:14:03,930 --> 00:14:07,890 I to jest ważne, że HTML ma ten rodzaj zagnieżdżonej struktury 323 00:14:07,890 --> 00:14:09,280 dlatego, że jest bardzo jasne. 324 00:14:09,280 --> 00:14:13,200 I to staje się jasne, kiedy Należy otworzyć i rzeczywiście bliskie tagi. 325 00:14:13,200 --> 00:14:18,400 I zawsze trzeba zamknąć tagi że mamy otwarte. 326 00:14:18,400 --> 00:14:23,170 >> A tutaj mamy kilka typów rzeczy przed nami, że chcemy mieć. 327 00:14:23,170 --> 00:14:26,580 Mamy więc, na przykład, tytuł CS50. 328 00:14:26,580 --> 00:14:31,980 I wtedy rzeczywiście można połączyć arkusz stylów 329 00:14:31,980 --> 00:14:34,030 która określa, w jaki sposób projektować naszą stronę internetową. 330 00:14:34,030 --> 00:14:35,650 To CSS. 331 00:14:35,650 --> 00:14:39,320 Mamy zamiar przejść nad nim w Następne kilka slajdów, jak również. 332 00:14:39,320 --> 00:14:42,580 >> W organizmie, ustawiamy niektóre klasy i identyfikatory. 333 00:14:42,580 --> 00:14:45,860 I jako przypomnienie, znowu, Identyfikatory są unikalne i zajęcia 334 00:14:45,860 --> 00:14:47,390 może być przypisany do wielu produktów. 335 00:14:47,390 --> 00:14:52,110 A to po prostu oznacza, że możemy użyć klasy i identyfikatory 336 00:14:52,110 --> 00:14:55,860 w ramach drugiej structures-- tak, na Przykładem, w plikach CSS lub stylu 337 00:14:55,860 --> 00:15:00,940 sheets-- odnosi się do określonych elementów i w zasadzie powiedzieć, że chcemy styl 338 00:15:00,940 --> 00:15:03,280 lub zaprojektować jakiś element w jakiś szczególny sposób. 339 00:15:03,280 --> 00:15:06,440 A my się do nich przez ich numery ID i klasy. 340 00:15:06,440 --> 00:15:09,870 I możemy również odnieść się do różne rzeczy by tagów oraz, 341 00:15:09,870 --> 00:15:13,830 Identyfikatory i klasy, ale po prostu dać nam trochę wszechstronność i co konkretnie mamy 342 00:15:13,830 --> 00:15:15,850 Aby odnieść się do. 343 00:15:15,850 --> 00:15:19,620 >> Więc to tylko przykład. 344 00:15:19,620 --> 00:15:22,730 Możemy ponownie, w ramach plik CSS, gdzie 345 00:15:22,730 --> 00:15:25,770 chcemy zdefiniować niektóre style-- tak, kolorów, czcionek, 346 00:15:25,770 --> 00:15:30,340 i takie that-- możemy zdefiniować styl dla ciała. 347 00:15:30,340 --> 00:15:32,640 Tak by ją zdefiniować na cały znacznik ciała. 348 00:15:32,640 --> 00:15:36,160 Ale możemy również zdefiniować styl na #title. 349 00:15:36,160 --> 00:15:40,390 I znowu, hashtag odnosi się do naszego ID i kropka odnosi się do naszej klasy. 350 00:15:40,390 --> 00:15:44,760 >> A następnie na .info, że Można również ustawić kilka atrybutów. 351 00:15:44,760 --> 00:15:49,750 I znowu, kiedy wrócimy, mieliśmy klasa nazywa informacji i nasz tytuł ID. 352 00:15:49,750 --> 00:15:53,422 I widzimy, że mamy na myśli im przez #title i .info. 353 00:15:53,422 --> 00:15:55,380 PUBLICZNOŚCI: Czy można powiedzieć, hashtag [? Adoptuj mnie? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Słucham? 355 00:15:55,725 --> 00:15:58,120 PUBLICZNOŚCI: Czy można powiedzieć, hashtag [? Adoptuj mnie? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: Hashtag Oznacza ID, aby #title 357 00:16:01,400 --> 00:16:07,890 odnosi się do dowolnych elementów mają ten numer identyfikacyjny zwany tytuł. 358 00:16:07,890 --> 00:16:10,735 A następnie dot odnosi się do klasy. 359 00:16:10,735 --> 00:16:14,590 Więc .info odnosi się do tego elementu ponieważ ma informacji klasy. 360 00:16:14,590 --> 00:16:15,090 Tak. 361 00:16:15,090 --> 00:16:17,905 >> PUBLICZNOŚCI: Dlaczego odróżnić je w HTML? 362 00:16:17,905 --> 00:16:20,985 Dlaczego mówisz, że pewne rzeczy są Identyfikatory i pewne rzeczy są klasy? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: To tylko do you-- 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: Powtórz pytanie. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, przepraszam. 366 00:16:25,370 --> 00:16:29,480 Dlaczego wyróżnić pewne elementy jako identyfikatorów i innych elementów jak klasy? 367 00:16:29,480 --> 00:16:34,760 To tylko dlatego, że jest bardzo często wybór projektu. 368 00:16:34,760 --> 00:16:38,520 To daje dużo Wszechstronność w byciu 369 00:16:38,520 --> 00:16:43,250 w stanie powiedzieć, że chcą tego konkretnego elementu mieć ten identyfikator, ponieważ chcą 370 00:16:43,250 --> 00:16:45,300 zrobić wiele rzeczy z nim, a ja tylko 371 00:16:45,300 --> 00:16:50,010 Aby zdefiniować styl, pewien styl lub kolor, co do tej pozycji. 372 00:16:50,010 --> 00:16:52,630 A sposób, aby to zrobić tylko nadając mu identyfikator. 373 00:16:52,630 --> 00:16:55,060 >> A jeśli chcę mieć kilka różnych przedmiotów 374 00:16:55,060 --> 00:16:58,940 o to, że zamiast dzieje i ustawienie their-- 375 00:16:58,940 --> 00:17:03,840 zamiast robić to przez tag, ponieważ tag będzie 376 00:17:03,840 --> 00:17:07,369 ustawienie urządzenia na cały znacznik za każdym razem, że używany jest znacznik, 377 00:17:07,369 --> 00:17:09,740 można ustawić klasę do wielu elementów. 378 00:17:09,740 --> 00:17:15,109 A potem po prostu dostęp do tej klasy i powiedzieć: Chcę styl tej klasy w ten sposób. 379 00:17:15,109 --> 00:17:17,579 >> I znowu, klasa może być wiele różnych przedmiotów 380 00:17:17,579 --> 00:17:21,150 oraz identyfikator musi być unikatowa. 381 00:17:21,150 --> 00:17:21,849 Wielkie pytania. 382 00:17:21,849 --> 00:17:25,339 Jakieś inne pytania? 383 00:17:25,339 --> 00:17:26,220 OK, super. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Ponownie, jest to, jak te przełączniki są wymienione w CSS, z hashtag, 386 00:17:35,330 --> 00:17:40,031 z kropką lub bez niczego dla przypisanie stylu jakiś znacznik, 387 00:17:40,031 --> 00:17:40,530 jak ciała. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 I tu mamy ogólny Składnia, jak to zrobić. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Aby powtórzyć niektóre najlepsze Praktyki dla HTML i CSS, 392 00:17:55,680 --> 00:17:59,170 musimy znowu zamknąć wszystkie tagi HTML, które otwierane. 393 00:17:59,170 --> 00:18:03,950 A co ci poleca zrobić dla swoich ostatnich projektów, 394 00:18:03,950 --> 00:18:10,560 jak również dla CS50 Finansów, jest, aby się, że wszystkie HTML sprawdza. 395 00:18:10,560 --> 00:18:12,920 I to się robi z W3 Validator. 396 00:18:12,920 --> 00:18:16,940 >> A potem, co zrobiliśmy i co to polecam 397 00:18:16,940 --> 00:18:19,790 oddziela styl, więc CSS od znaczniki HTML. 398 00:18:19,790 --> 00:18:24,210 Więc wszystko, co odnosi się do tego, jak Twoja strona będzie wizualnie wyglądają 399 00:18:24,210 --> 00:18:27,330 i jak to będzie być modyfikowane powinien przejść do dokumentu CSS. 400 00:18:27,330 --> 00:18:33,880 I wówczas znaczników mówiąc jak rzeczy są w stosunku do siebie, jest HTML 401 00:18:33,880 --> 00:18:37,550 i że powinien wejść do środka swoich dokumentów HTML. 402 00:18:37,550 --> 00:18:38,590 Jakiekolwiek pytania? 403 00:18:38,590 --> 00:18:39,226 Mhm. 404 00:18:39,226 --> 00:18:42,628 >> PUBLICZNOŚCI: Co dokładnie się dzieje z walidacji na stronę 405 00:18:42,628 --> 00:18:47,945 gdy jesteśmy walidacji HTML [niesłyszalne] stworzył? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Tak what-- że ty. 407 00:18:49,850 --> 00:18:53,020 Więc co dokładnie się dzieje na walidacji strona 408 00:18:53,020 --> 00:18:55,570 i dlaczego musimy to zrobić? 409 00:18:55,570 --> 00:18:59,180 Zasadniczo musimy zrobić ponieważ wiele razy, przeglądarka, 410 00:18:59,180 --> 00:19:01,390 jeśli nie zamknąć tag czy coś takiego, 411 00:19:01,390 --> 00:19:05,680 Twoja przeglądarka jest nadal będzie renderowanie strony i może nadal działać, 412 00:19:05,680 --> 00:19:10,840 ale to jest najlepsze praktyki, aby upewnić się, że ty znowu zamknął wszystkie swoje znaczniki, 413 00:19:10,840 --> 00:19:13,190 się, że wszystkie elementy są sposób, w jaki powinny być, 414 00:19:13,190 --> 00:19:18,470 a przede wszystkim, że to przez konwencje, które są ustawione. 415 00:19:18,470 --> 00:19:21,970 >> To znowu tylko rzeczy, które powinieneś 416 00:19:21,970 --> 00:19:24,040 uczyć się robić, w przeciwieństwie do konieczności 417 00:19:24,040 --> 00:19:25,696 sloppier kod i takie tam. 418 00:19:25,696 --> 00:19:26,688 Tak. 419 00:19:26,688 --> 00:19:27,680 Przepraszam. 420 00:19:27,680 --> 00:19:29,221 Myślałam, że podniesienie ręki. 421 00:19:29,221 --> 00:19:31,240 PUBLICZNOŚCI: Nie, ja po prostu [niesłyszalne]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> PUBLICZNOŚCI: Dziękuję. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Oczywiście, dziękuję. 425 00:19:36,181 --> 00:19:41,680 Więc jeszcze raz, dzieje się, w jaki sposób Informacja jest przekazywana 426 00:19:41,680 --> 00:19:44,630 i modele komunikacji do przesyłania informacji. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 Transmisja TCP oznacza po prostu, Protokół kontroli i IP 429 00:19:48,600 --> 00:19:51,260 odnosi się do protokołu internetowego. 430 00:19:51,260 --> 00:19:54,275 A to po prostu odnosi się do dane sposób dostawy. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Jeśli mamy jakieś dane, które musi dostarczane you-- tak 433 00:20:02,710 --> 00:20:06,770 można złożyć wniosek o określonym serwerze. 434 00:20:06,770 --> 00:20:09,800 Na przykład, kiedy próby uzyskania dostępu cs50.net, 435 00:20:09,800 --> 00:20:12,420 my się z prośbą do serwer CS50 i 436 00:20:12,420 --> 00:20:14,720 zobaczyć, że chcemy uzyskać tego rodzaju informacje. 437 00:20:14,720 --> 00:20:19,294 A następnie w oparciu o ten protokół w jaki sposób ta informacja nie została wydana, 438 00:20:19,294 --> 00:20:21,460 serwer podaje informacje Wróć do nas klient. 439 00:20:21,460 --> 00:20:25,590 I wtedy jesteśmy w stanie zobaczyć informacje o stronie 440 00:20:25,590 --> 00:20:26,390 a następnie użyć go. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Więc Hypertext Transfer Protocol Jest to kolejny protokół lub ustawić 443 00:20:33,050 --> 00:20:37,470 konwencji, która określa, jak przeglądarka i serwer WWW 444 00:20:37,470 --> 00:20:38,890 powinny komunikować. 445 00:20:38,890 --> 00:20:43,730 I oddanie to wszystko razem HTTP ponownie 446 00:20:43,730 --> 00:20:50,960 tylko określa, jak zdefiniowano to hipertekst przez HTML, które już go pracy, 447 00:20:50,960 --> 00:20:59,500 jak powinno być dostarczone do Ciebie i w jaki sposób dane, które są dostarczane do Ciebie 448 00:20:59,500 --> 00:21:00,540 dostaje się do Ciebie. 449 00:21:00,540 --> 00:21:05,990 >> I dlatego, jeśli faceci pamiętam z klasy, mieliśmy dużo wniosków 450 00:21:05,990 --> 00:21:08,970 i mieliśmy dużo składni dla tych wniosków, z którymi jesteśmy 451 00:21:08,970 --> 00:21:10,250 pójdzie na teraz. 452 00:21:10,250 --> 00:21:13,270 Więc jeszcze raz, gdy wyślemy żądanie do serwera, 453 00:21:13,270 --> 00:21:15,920 musimy zdefiniować kilka rzeczy. 454 00:21:15,920 --> 00:21:18,520 Więc musimy znaleźć typ wniosku, że mamy do ustawiania. 455 00:21:18,520 --> 00:21:22,180 I znów mamy, na przykład, GET jest jeden rodzaj metody 456 00:21:22,180 --> 00:21:25,290 że mamy w naszej prośby. 457 00:21:25,290 --> 00:21:31,710 >> A następnie HTTP / 1.1 jest po prostu Protokół, który używamy obecnie. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Przez większość czasu, to chodzi do protokołu, że używasz. 460 00:21:36,890 --> 00:21:40,290 Więc jeśli masz pytanie jak to na quiz. 461 00:21:40,290 --> 00:21:43,120 To konwencje że mamy do tej pory. 462 00:21:43,120 --> 00:21:46,580 >> Backslash odnosi się do jakiego rodzaju rzeczy jesteśmy prośbą. 463 00:21:46,580 --> 00:21:52,810 Następnie gospodarz jest, na przykład, w tym Sprawa, staramy się iść do google.com. 464 00:21:52,810 --> 00:21:57,070 Więc to jest wartość dla hosta. 465 00:21:57,070 --> 00:21:59,330 Ten typ żądania które mogą być przesłane. 466 00:21:59,330 --> 00:22:02,890 >> A potem to rodzaj odpowiedzi, które mogłyby być przesyłane powtórnie, w oparciu o ten protokół, 467 00:22:02,890 --> 00:22:05,190 to znowu, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Więc to jeszcze wersja HTTP. 469 00:22:07,150 --> 00:22:09,730 200 OK jest tylko kod statusu. 470 00:22:09,730 --> 00:22:12,860 I to OK, to tylko zdanie na podstawie tego kodu statusu. 471 00:22:12,860 --> 00:22:15,520 >> A potem Content-Type odnosi się do typu 472 00:22:15,520 --> 00:22:20,295 że wraca do ciebie, że jest dla tej strony internetowej, które otrzymują 473 00:22:20,295 --> 00:22:22,570 i że swojej przeglądarce może spowodować później. 474 00:22:22,570 --> 00:22:24,401 I to jest text / html. 475 00:22:24,401 --> 00:22:26,660 >> PUBLICZNOŚCI: Co 1,1 oznacza? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: To tylko Wersja of-- och, co to 1.1 oznacza? 477 00:22:29,910 --> 00:22:37,075 To jest tylko wersja HTTP wersja protokołu, że używasz. 478 00:22:37,075 --> 00:22:37,700 Świetne pytanie. 479 00:22:37,700 --> 00:22:38,366 Inne pytania? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> PUBLICZNOŚCI: Czy możesz podsumować Content-Type bardzo szybko? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Tak, że co serwer. 483 00:22:48,150 --> 00:22:51,020 typ information-- co jest Typ zawartości było pytania. 484 00:22:51,020 --> 00:22:53,400 Więc to był rodzaj informacje, że wrócisz 485 00:22:53,400 --> 00:22:58,200 z serwera, rodzaju Dane że przeglądarka może wtedy 486 00:22:58,200 --> 00:23:00,604 czynią, że używasz. 487 00:23:00,604 --> 00:23:03,020 PUBLICZNOŚCI: Czy to, co to Protokół mówi ci to zrobić? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Słucham? 489 00:23:03,390 --> 00:23:05,380 PUBLICZNOŚCI: Czy to co mówi protokół? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: The protocol-- 491 00:23:05,915 --> 00:23:07,940 PUBLICZNOŚCI: --what Content-Type jest lub what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: Protokół oparty jest on-- co to jest protokół z informacją? 493 00:23:12,040 --> 00:23:16,070 To tak, jak że tej informacji 494 00:23:16,070 --> 00:23:18,610 został dostarczony na podstawie na jaki rodzaj protokołu 495 00:23:18,610 --> 00:23:21,830 Czy te informacje dostał dostarczany z powrotem do Ciebie. 496 00:23:21,830 --> 00:23:23,500 Czy to ma sens rodzaju? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: Ty można myśleć o protokół 499 00:23:30,070 --> 00:23:33,300 jak A-- Myślę profesorze Malan opisałem 500 00:23:33,300 --> 00:23:36,910 w klasie, jak trochę jak A-- to jak odpowiednik ludzkiej uzgadniania. 501 00:23:36,910 --> 00:23:44,930 Powiedzieć, jak, hej, jestem wniosek i wiedzieć, jak radzić sobie HTTP wersji 1.1. 502 00:23:44,930 --> 00:23:48,770 A następnie serwer mówi: oh, OK, ja-- a zarówno istnieć. 503 00:23:48,770 --> 00:23:51,337 Wiem też, jak radzić sobie z HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 I mam zamiar dać kopii pewne treści. 505 00:23:53,170 --> 00:23:56,230 W tym przypadku, to będzie być typu text / html. 506 00:23:56,230 --> 00:23:58,480 Więc to trochę tylko sposób z nich communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: To jest po prostu potwierdzający, że jesteś 508 00:24:00,480 --> 00:24:03,290 zarówno po to samo Protokół oraz, że zarówno 509 00:24:03,290 --> 00:24:06,620 klient i server-- tak Twoja przeglądarka i server-- 510 00:24:06,620 --> 00:24:09,280 rodzaj wiedzieć, co masz mówisz i masz 511 00:24:09,280 --> 00:24:12,557 Konwencja o przejściu w danych. 512 00:24:12,557 --> 00:24:17,022 >> PUBLICZNOŚCI: Więc Content-Type part-- tekst Content-Type / html-- to 513 00:24:17,022 --> 00:24:18,521 wyodrębnioną częścią tej samej wiadomości? 514 00:24:18,521 --> 00:24:20,509 Czy jest to część, powiedzmy, 200? 515 00:24:20,509 --> 00:24:22,010 Czy powiedzieć im, że 200 lub jest-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 mówi, że wszystko poszło OK. 517 00:24:23,770 --> 00:24:27,900 A następnie wpisz treść jest coś w rodzaju Odrębną część tej samej wiadomości, 518 00:24:27,900 --> 00:24:34,274 i mówi rzeczy, które ja Zwrot ma tego typu text / html. 519 00:24:34,274 --> 00:24:35,690 To tylko daje więcej informacji. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Mają coś do dodania? 522 00:24:39,995 --> 00:24:40,495 OK. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Wszelkie inne pytania w tej sprawie? 525 00:24:46,530 --> 00:24:48,370 Niesamowite. 526 00:24:48,370 --> 00:24:54,070 Więc niektóre inne stany HTTP, że możemy uzyskać dodatkowo do 200 OK, 527 00:24:54,070 --> 00:24:59,500 te, które widzieliśmy może prawdopodobnie o wiele są 403 i 404. 528 00:24:59,500 --> 00:25:05,190 Więc 404, jeśli starali się Dostęp coś, co nie istnieje. 529 00:25:05,190 --> 00:25:10,460 Tak na przykład w telefonie Psets CS50 Finanse, 530 00:25:10,460 --> 00:25:15,640 jeśli zostały renderowania quote.html i nie masz tego pliku, 531 00:25:15,640 --> 00:25:19,740 ale zamiast tego trzeba było quote.php, że spowodowałoby 404 Not Found 532 00:25:19,740 --> 00:25:21,600 ponieważ plik może nie istnieć. 533 00:25:21,600 --> 00:25:25,690 >> Przez 403 zakazane, które odnosi się do uprawnień. 534 00:25:25,690 --> 00:25:31,150 Więc jeśli jakiś plik nie jest czytelny przez świecie, można dostać 403 wrócił. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Jeszcze inni, że może get-- 301, przeniósł się na stałe; 537 00:25:37,810 --> 00:25:41,300 302, Znalezione; 304, modyfikacja; 400 Nieprawidłowe żądanie; 538 00:25:41,300 --> 00:25:47,330 a następnie Internal Server Error dla 500 i 503, Usługa niedostępna. 539 00:25:47,330 --> 00:25:48,140 Tak. 540 00:25:48,140 --> 00:25:51,490 >> PUBLICZNOŚCI: Czy możemy spodziewać się zapamiętać wszystkie te stany? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: Musiałbym je na ściągawki. 542 00:25:53,739 --> 00:25:55,146 [ŚMIECH] 543 00:25:55,146 --> 00:25:59,954 PUBLICZNOŚCI: Czy możemy spodziewać się wiedzieć, co wyzwala każdy z nich? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: Czy oni są? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: Dla tych, że mamy uruchomić into-- więc pytanie was-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Czy są oczekiwano wiedzieć, co każdy z tych statusu 547 00:26:08,010 --> 00:26:09,330 Kody mogą być wywołane? 548 00:26:09,330 --> 00:26:13,240 Więc dla tych, które używaliśmy i wpadł, powiedziałbym, że tak. 549 00:26:13,240 --> 00:26:16,610 Więc my na pewno widziałem 200 OK i wykładał ją w psets. 550 00:26:16,610 --> 00:26:19,071 Widzieliśmy, 403, 404. 551 00:26:19,071 --> 00:26:20,550 Dla innych z nich? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: chciałbym powiedzieć, 500 wydaje uczciwej gry. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, tak. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH Blumberg: Tak. 555 00:26:24,246 --> 00:26:27,006 Wystarczy ogólny sens z tego, co je powoduje. 556 00:26:27,006 --> 00:26:28,880 A także po prostu przez nich nazwy, możesz rodzaju 557 00:26:28,880 --> 00:26:32,890 jak zrobić zgaduje jako do tego, co w rzeczywistości spowodowane ich. 558 00:26:32,890 --> 00:26:36,919 Na przykład, przenieść się na stałe, prawdopodobnie plik został przeniesiony na stałe. 559 00:26:36,919 --> 00:26:39,328 >> PUBLICZNOŚCI: Ale na poprzedni egzamin, nie było tak 560 00:26:39,328 --> 00:26:41,050 jak można się spodziewać nam odpowiedzieć, że? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: Tak był wart zero punktów. 562 00:26:42,883 --> 00:26:45,870 Pytanie na 418 na imbryku jest technicznie statusu HTTP, 563 00:26:45,870 --> 00:26:47,090 ale warto było zero punktów. 564 00:26:47,090 --> 00:26:48,320 Oczywiście, nie jesteś oczekuje się, że ich znam. 565 00:26:48,320 --> 00:26:49,670 >> PUBLICZNOŚCI: Czy jest prawdziwa? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: To jest prawdziwy jeden, ale to nic nie znaczy. 567 00:26:51,970 --> 00:26:52,700 To tylko żart. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Ludzie internetowe są śmieszne. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: Wielkie pytania, chłopaki. 571 00:26:59,680 --> 00:27:01,452 Jakieś inne pytania? 572 00:27:01,452 --> 00:27:04,891 >> PUBLICZNOŚCI: Co to jest wewnętrzny błąd serwera? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: Wewnętrzny błąd serwera tylko 574 00:27:06,640 --> 00:27:10,050 Oznacza to, że byliście w stanie komunikować 575 00:27:10,050 --> 00:27:13,400 z serwerem z jakiegoś powodu. 576 00:27:13,400 --> 00:27:15,400 Więc to nie jest koniecznie coś, co ma robić 577 00:27:15,400 --> 00:27:19,170 z klientem, czy coś takiego. 578 00:27:19,170 --> 00:27:22,170 Nie wiem, od konkretnego przykładu że posunęliśmy się do wyjaśnienia, 579 00:27:22,170 --> 00:27:23,000 ale tak. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: Jasne. 581 00:27:23,250 --> 00:27:25,625 Tak na przykład, jak niech powiedzieć, że pracujesz na mashup 582 00:27:25,625 --> 00:27:30,440 oraz serwer Google poszedł na pewne Powodem, przerwy w dostawie prądu, powiedzmy. 583 00:27:30,440 --> 00:27:33,400 To byłby wewnętrzny serwer Błąd lub jakiś of-- wam podoba 584 00:27:33,400 --> 00:27:34,630 nie otrzymasz odpowiedzi z powrotem. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Tak. 586 00:27:35,260 --> 00:27:37,050 To właśnie wtedy, gdy jesteś w stanie komunikować 587 00:27:37,050 --> 00:27:40,299 z serwerem, z jakiegoś powodu, ponieważ od leci w dół lub w jakiś inny powód. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Więc skoków do PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, w przeciwieństwie do HTML, jest język programowania. 591 00:27:49,930 --> 00:27:54,820 I zaczęliśmy go używać, bo to bardzo przydatne do tworzenia stron WWW. 592 00:27:54,820 --> 00:27:56,940 >> Po raz pierwszy użył go w CS50 Finansów. 593 00:27:56,940 --> 00:28:02,240 I to w zasadzie pomaga nam przynieść razem te znaczniki, projekt, 594 00:28:02,240 --> 00:28:07,460 i jak właściwie korzystać z informacji aby wyświetlić rzeczy na stronie internetowej. 595 00:28:07,460 --> 00:28:11,870 Tak samo PHP PHP oznacza Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 więc jest to rekurencyjny backnorym sama. 597 00:28:15,360 --> 00:28:22,330 I otwarcie znaczniki PHP możemy lewa i prawej strzałki z znaki zapytania 598 00:28:22,330 --> 00:28:23,060 i php. 599 00:28:23,060 --> 00:28:25,890 >> Tak więc widzieliśmy już kilka niego. 600 00:28:25,890 --> 00:28:29,150 Teraz jesteśmy po prostu się przejść kilka podstawowych rzeczy o nim. 601 00:28:29,150 --> 00:28:32,280 Więc z PHP, zmiennej nazwy zaczynają się znakiem dolara. 602 00:28:32,280 --> 00:28:35,660 Nie określić, znowu, zmienna typu już. 603 00:28:35,660 --> 00:28:38,450 Tak jak zrobiliśmy to z C, nie musimy tego robić. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Możemy zrobić kilka różnych rzeczy ze zmiennymi. 606 00:28:44,490 --> 00:28:47,750 Możemy umieścić je razem poprzez ich złączenie 607 00:28:47,750 --> 00:28:52,900 z notacji z kropkami, które nie mogliśmy zrobić w C ponownie. 608 00:28:52,900 --> 00:28:57,490 Znowu mamy nieco większą wszechstronność PHP w zakresie zmiennych. 609 00:28:57,490 --> 00:29:00,080 Ponownie, nie mamy głównego funkcji. 610 00:29:00,080 --> 00:29:03,370 >> I PHP jest interpretowany w przeciwieństwie do skompilowany, 611 00:29:03,370 --> 00:29:09,970 Tak po prostu, jak uczynił dla plików C, nie musimy tego robić dla PHP. 612 00:29:09,970 --> 00:29:15,440 Ale raczej sposób, w języku prowadzony jest sama w sobie jest interpretowane. 613 00:29:15,440 --> 00:29:18,550 A potem luźno wpisane oznacza po prostu, że my 614 00:29:18,550 --> 00:29:22,490 nie muszą określić zmienną rodzaj i typy zmiennych 615 00:29:22,490 --> 00:29:25,415 są rozumiane w czasie wykonywania. 616 00:29:25,415 --> 00:29:29,185 >> PUBLICZNOŚCI: Ale co prawda na myśli dot konkatenacji? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Jasne. 618 00:29:30,060 --> 00:29:37,660 Gdy chcemy, aby to together-- więc jeśli mieliśmy trochę zmienną, 619 00:29:37,660 --> 00:29:41,500 miał wartość 3 i mieliśmy kolejny zmienna, która miała wartość ciągu, 620 00:29:41,500 --> 00:29:45,920 możemy umieścić zmienne razem stawiając kropkę pomiędzy nimi 621 00:29:45,920 --> 00:29:46,970 i ich łączenie. 622 00:29:46,970 --> 00:29:52,670 Albo możemy stworzyć Zmienna o nazwie name 623 00:29:52,670 --> 00:29:56,900 i umieścić go razem przez złączenie dwóch ciągów. 624 00:29:56,900 --> 00:30:00,680 >> Więc jeśli mieliśmy łańcuch w podwójne cytaty i stawiamy kropkę po nim, 625 00:30:00,680 --> 00:30:03,660 a następnie mieliśmy kolejny ciąg, który by utworzyć ciąg całkowicie. 626 00:30:03,660 --> 00:30:05,242 >> PUBLICZNOŚCI: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA ŁOTWA: Czy to jasne? 628 00:30:06,450 --> 00:30:07,099 PUBLICZNOŚCI: Tak. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Tak. 631 00:30:08,766 --> 00:30:11,146 >> PUBLICZNOŚCI: Kiedy mówisz interpretować, a nie skompilowany, 632 00:30:11,146 --> 00:30:14,160 mówisz, że nie muszą być tak dokładnie, kiedy 633 00:30:14,160 --> 00:30:15,906 chodzi o PHP w porównaniu do C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Kiedy mówimy, interpretować w przeciwieństwie do skompilowany, 636 00:30:20,710 --> 00:30:21,850 Co mamy na myśli? 637 00:30:21,850 --> 00:30:26,220 To oznacza, że ​​nie musimy pliki wykonywalne uruchomić PHP. 638 00:30:26,220 --> 00:30:29,870 Oznacza to, że działa on jak to idzie. 639 00:30:29,870 --> 00:30:31,650 Czy to ma sens? 640 00:30:31,650 --> 00:30:32,495 Nieco więcej. 641 00:30:32,495 --> 00:30:34,620 HANNAH Blumberg: Więc można myśleć o tłumacza 642 00:30:34,620 --> 00:30:38,980 w innym programie, który jest odpowiedzialny na wyjście linia po linii przez PHP 643 00:30:38,980 --> 00:30:42,745 i rzeczywiście je wykonuje, w przeciwieństwie do kompilacji to wszystko na binarny. 644 00:30:42,745 --> 00:30:46,050 To tak naprawdę nie znaczy nic o tym, jak specyficzne musimy być. 645 00:30:46,050 --> 00:30:49,470 Wciąż musimy być precyzyjne, a nie zapomnieć średnik, i upewnić się, 646 00:30:49,470 --> 00:30:51,470 masz swój znak dolara, i tym podobne rzeczy. 647 00:30:51,470 --> 00:30:52,240 Dobre pytanie. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Tak. 649 00:30:53,115 --> 00:30:55,590 Tak więc linia po linii, jak zamiast z plików C, 650 00:30:55,590 --> 00:30:59,100 musimy mieć cały finał zanim rzeczywiście możemy go uruchomić. 651 00:30:59,100 --> 00:31:00,360 To jest główna różnica. 652 00:31:00,360 --> 00:31:02,655 Ale znowu, nie możemy naprawdę być mniej szczegółowe. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Więc tablice w PHP reprezentacji obecnie uporządkowaną map. 655 00:31:13,950 --> 00:31:17,550 >> Tak więc wartości tablice stowarzyszonych do kluczy. 656 00:31:17,550 --> 00:31:23,350 Dwa sposoby zadeklarować tablica, na podstawie tej składni, 657 00:31:23,350 --> 00:31:26,380 możemy być bardziej wyraźne mówiąc, mamy tablicę 658 00:31:26,380 --> 00:31:31,010 i mamy ten klucz1 który mapuje się to wartosc1, klucz2 które odwzorowuje wartość2. 659 00:31:31,010 --> 00:31:34,660 Albo może po prostu utworzyć tablicę która zawiera sama wartości 660 00:31:34,660 --> 00:31:38,360 a następnie klawisze są rozumiane w ten sposób. 661 00:31:38,360 --> 00:31:40,000 Wszelkie pytania w tej sprawie? 662 00:31:40,000 --> 00:31:42,500 >> WIDOWNI: co by klucze znajdować się w drugim przykładzie? 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: Na przykład, to tylko klawisze to nie koniecznie 667 00:31:55,780 --> 00:31:56,550 robić różnicę. 668 00:31:56,550 --> 00:32:01,720 Oni po prostu określić, jak można używać wartości w jej wnętrzu. 669 00:32:01,720 --> 00:32:08,660 Więc jeśli mieliśmy foreach pętli w PHP, który będzie 670 00:32:08,660 --> 00:32:14,760 pozwalają nam przejść przez wszystkie wartości, możemy przejść przez wszystkie wartości, 671 00:32:14,760 --> 00:32:19,570 nawet jeśli mieliśmy albo nie zdefiniowano Klucz w ramach konkretnego witryny 672 00:32:19,570 --> 00:32:20,820 poprzednia składnia. 673 00:32:20,820 --> 00:32:23,460 >> Więc nawet z tego rodzaju tablicy, mogliśmy nadal 674 00:32:23,460 --> 00:32:26,260 mają pętli foreach który przechodzi przez każdy 675 00:32:26,260 --> 00:32:31,240 wartości w kluczu tablicy. 676 00:32:31,240 --> 00:32:36,180 Więc składni foreach pętli, zaczynamy z tablicą. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Ta zmienna $ arr jest nasza rzeczywista tablica że określona w poprzednim szkiełku 679 00:32:43,900 --> 00:32:47,550 jako wartości, która dosłownie idzie przez każdy z wartościami 680 00:32:47,550 --> 00:32:50,122 niezależnie od tego, czy mieliśmy klucz czy nie. 681 00:32:50,122 --> 00:32:53,080 I wtedy możemy coś zrobić z wartość wewnątrz pętli foreach. 682 00:32:53,080 --> 00:32:57,730 Więc znowu, gdybyśmy mieli tablicę jak ten tutaj created-- 683 00:32:57,730 --> 00:33:03,270 więc mamy klucz foo i wartości bar, klucz baz i wartość qux-- 684 00:33:03,270 --> 00:33:09,730 możemy mieć pętli foreach, że przechodzi tablicy jako wartości klucza 685 00:33:09,730 --> 00:33:11,900 a następnie zrobić coś z klucza i / lub wartości. 686 00:33:11,900 --> 00:33:15,980 Ale niekoniecznie zawsze mają mieć pętle foreach, że 687 00:33:15,980 --> 00:33:19,410 przechodzi tablicy jako klucz mapie do wartości. 688 00:33:19,410 --> 00:33:26,060 Możemy przejść przez Tablica foreach pętli jako wartość. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: I ​​myślę, że to-- było twoje pytanie, co 690 00:33:28,990 --> 00:33:31,229 jest wskaźniku domyślnym? 691 00:33:31,229 --> 00:33:31,895 PUBLICZNOŚCI: Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Och. 693 00:33:32,240 --> 00:33:33,406 HANNAH Blumberg: Tak, tak. 694 00:33:33,406 --> 00:33:36,150 Więc w zasadzie, jeśli nie podasz klucz, to będzie 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Tak. 696 00:33:37,140 --> 00:33:41,718 Podobnie jak w C, to do zera indeksowane jeśli nie podasz klucz. 697 00:33:41,718 --> 00:33:42,384 PUBLICZNOŚCI: Niestety. 698 00:33:42,384 --> 00:33:43,827 Możesz spróbować mówić trochę głośniej? 699 00:33:43,827 --> 00:33:45,270 Mam trochę Kłopot wszystko słuchu. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Tak mi przykro. 701 00:33:46,478 --> 00:33:48,439 Oczywiście. 702 00:33:48,439 --> 00:33:50,230 Więc chcesz mnie iść na to jeszcze raz? 703 00:33:50,230 --> 00:33:51,680 Albo jest this-- 704 00:33:51,680 --> 00:33:54,930 PUBLICZNOŚCI: Więc na poprzedniej slide-- jeśli może po prostu wrócić na jedną sekundę. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Oczywiście, przepraszam. 706 00:33:57,313 --> 00:33:59,237 PUBLICZNOŚCI: Więc drugi Tablica tutaj nie 707 00:33:59,237 --> 00:34:04,135 wydają się mieć wartość, aby wprowadzić, raczej [? związek przyczynowy. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Racja, racja. 709 00:34:05,343 --> 00:34:07,608 PUBLICZNOŚCI: Więc jak to działa kiedy mówisz, że to wszystko lub nic. 710 00:34:07,608 --> 00:34:08,969 Dla mnie to wygląda za [? foo?] już. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Tak, tak. 712 00:34:10,093 --> 00:34:12,969 Ponownie więc, że jest to nakazał mapa w tym sensie, 713 00:34:12,969 --> 00:34:15,639 że są zrozumiałe Na przykład, wskaźniki 714 00:34:15,639 --> 00:34:20,159 Stąd można rozumieć jako 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Ponownie, to o tych, Indeksy jest naszym odpowiednikiem 716 00:34:25,929 --> 00:34:28,980 posiadania kluczy zamieniane następnie na wartości. 717 00:34:28,980 --> 00:34:34,710 Więc jeśli nasz klucz był 0-- przykro. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: Nie, Jest kredy tutaj. 719 00:34:36,524 --> 00:34:36,929 To rzeczywiście bardzo miłe. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: To świetnie. 721 00:34:37,460 --> 00:34:38,260 OK. 722 00:34:38,260 --> 00:34:49,489 Więc jeszcze raz, $ arr 0 byłoby klucz do wartości 1. 723 00:34:49,489 --> 00:34:51,138 0 będzie kluczem do wartości 1. 724 00:34:51,138 --> 00:34:51,971 PUBLICZNOŚCI: Przykro mi. 725 00:34:51,971 --> 00:34:53,190 Jest to niewidoczne. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: Dobra, nieważne. 727 00:34:53,659 --> 00:34:54,980 Kreda to zły pomysł. 728 00:34:54,980 --> 00:34:58,030 Biorę ją z powrotem. 729 00:34:58,030 --> 00:35:01,425 Można myśleć o klawiszach jako 0 mapy do wartości 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Tak. 731 00:35:02,300 --> 00:35:04,630 Tak to jest 0, to 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Te mogą być klucze. 733 00:35:05,760 --> 00:35:10,020 Można myśleć o nich as-- tak. 734 00:35:10,020 --> 00:35:12,740 Więc zamiast wyraźne klawisze, są 735 00:35:12,740 --> 00:35:17,180 rodzaj rozumieć jako indeksy zaczynają się od 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 Kreda nie pomogło. 738 00:35:24,820 --> 00:35:25,722 Tak. 739 00:35:25,722 --> 00:35:30,914 >> PUBLICZNOŚCI: Dla pętli foreach, jeśli chcemy, aby zobaczyć, jak wartości, 740 00:35:30,914 --> 00:35:33,245 to by po prostu automatycznie indeksu do 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Tak. 742 00:35:34,120 --> 00:35:35,745 By przejść przez każdą z tych wartości. 743 00:35:35,745 --> 00:35:39,130 PUBLICZNOŚCI: [niesłyszalne], jak 0 lub nie, że po prostu nie 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Trzeba powiedzieć, jak znak dolara, a następnie 745 00:35:43,710 --> 00:35:46,266 niektóre nazwy zmiennej, wartość. 746 00:35:46,266 --> 00:35:47,182 PUBLICZNOŚCI: [niesłyszalne]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Słucham? 749 00:35:50,964 --> 00:35:52,839 PUBLICZNOŚCI: Przepraszam, jestem po prostu staramy się pamiętać. 750 00:35:52,839 --> 00:35:57,190 Jak to zrobisz, jeśli może to zrobić automatyczne indeksowanie jest tylko 0? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Więc jak to robisz jeśli nie ma konkretnych nazwisk kluczowych? 752 00:36:00,780 --> 00:36:01,710 >> PUBLICZNOŚCI: Tak. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: Ty po prostu define-- po prostu powiedzieć sobie, jak pewnego imienia. 754 00:36:07,820 --> 00:36:17,950 Więc w swoim psets, chłopaki mogą pamiętaj foreach $ wiersz jako $ wiersze, 755 00:36:17,950 --> 00:36:24,610 stworzyliśmy Nas to $ wiersz mówiący chcemy przejść przez rząd jako $ rzędach. 756 00:36:24,610 --> 00:36:28,360 Nawet jeśli nie mamy to wyraźne $ wiersze zdefiniowane, 757 00:36:28,360 --> 00:36:31,990 możemy tylko iść i powiedzieć, może to być nasz klucz, 758 00:36:31,990 --> 00:36:33,615 i po prostu przejść przez każdy z tych wartości. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> PUBLICZNOŚCI: Tak jest wartość nowej zmiennej tworzymy przechowywać [niesłyszalne]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Więc to nie jest natury nową zmienną. 763 00:36:49,990 --> 00:37:00,310 Jest to zmienna, która odnosi się do Wewnątrz matrycy do każdego z nich. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: Jest nowa nazwa zmiennej. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Tak, jest to nowa nazwa zmiennej, 766 00:37:04,018 --> 00:37:06,680 ale to nie jest inherently-- tak. 767 00:37:06,680 --> 00:37:08,950 To tylko nowa zmienna że można to zrobić. 768 00:37:08,950 --> 00:37:12,680 Tak, jak to zrobiliśmy $ row jako $ wiersze, wiersze 769 00:37:12,680 --> 00:37:17,980 był nową nazwę zmiennej, że może stworzyć w naszej pętli foreach. 770 00:37:17,980 --> 00:37:22,065 To nie musi preegzystował wcześniej. 771 00:37:22,065 --> 00:37:25,777 >> PUBLICZNOŚCI: Czy można przejść przez logika dla każdego, korzystając tam przykład? 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 Przepraszam. 775 00:37:32,080 --> 00:37:33,780 Oto przykład. 776 00:37:33,780 --> 00:37:34,280 Pewnie. 777 00:37:34,280 --> 00:37:38,950 Tak więc dla każdego array-- tak to znaczy iść do tej tablicy 778 00:37:38,950 --> 00:37:43,930 jako klucz value--, że będzie przejść tej tablicy 779 00:37:43,930 --> 00:37:49,480 i najpierw pójść i dostać foo, Kluczem foo i bar wartość. 780 00:37:49,480 --> 00:37:51,570 A następnie na drugi iteracji pętli for 781 00:37:51,570 --> 00:37:55,090 to będzie przejść i podjąć klucz baz, a wartość qux. 782 00:37:55,090 --> 00:38:00,512 A potem można zrobić coś z jeden z nich lub oba z nich. 783 00:38:00,512 --> 00:38:03,488 >> PUBLICZNOŚCI: Więc idea odgrywają kluczową punkcie z wartością, 784 00:38:03,488 --> 00:38:07,470 co masz na końcu dostępu? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: Jaka jest idea posiadania kluczowym wskazujące na wartość? 786 00:38:10,680 --> 00:38:16,400 To jest po prostu inna konwencja, inny sposób przechodzi tablicy 787 00:38:16,400 --> 00:38:22,600 i jest w stanie uzyskać dostęp albo klucza lub wartości lub obu i używać ich. 788 00:38:22,600 --> 00:38:27,100 >> PUBLICZNOŚCI: Jaka jest rola nakazać foreach przebiega? 789 00:38:27,100 --> 00:38:29,250 Więc jeśli były, aby dodać elementy do tablicy później 790 00:38:29,250 --> 00:38:32,140 będzie ci się pierwsi zwany w tablicy foreach, 791 00:38:32,140 --> 00:38:33,750 czy to będzie później? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Więc to, co jest porządek, że foreach 793 00:38:37,770 --> 00:38:39,210 pętla przechodzi tablicy w? 794 00:38:39,210 --> 00:38:42,220 Przechodzi przez pierwszy Element do ostatniego elementu 795 00:38:42,220 --> 00:38:43,400 ostatniego dodanego pierwiastka. 796 00:38:43,400 --> 00:38:48,020 Jeśli dodać elementy później, oni by być accessed-- pierwsze elementy będą 797 00:38:48,020 --> 00:38:51,410 dostępne jako pierwszy Elementy macierzy, 798 00:38:51,410 --> 00:38:57,620 i chcesz przejść przez każdy z elementy jak swego rodzaju ordered-- 799 00:38:57,620 --> 00:39:02,930 nie uporządkowany, ale sposób, że zostały one wprowadzone do tablicy. 800 00:39:02,930 --> 00:39:06,855 >> PUBLICZNOŚCI: Więc nowe elementy dodaje się później? 801 00:39:06,855 --> 00:39:10,680 Więc oni added-- oni być Te ostatnie w [? iteracja. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: Nowe elementy can-- w zasadzie, gdy dodawane są nowe elementy, 803 00:39:14,280 --> 00:39:16,520 są dodane do końca tablicy? 804 00:39:16,520 --> 00:39:17,632 >> PUBLICZNOŚCI: Tak. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Wierzę, że tak. 806 00:39:18,840 --> 00:39:20,850 Tak. 807 00:39:20,850 --> 00:39:24,330 A potem z pętli foreach, po dodaniu nowych elementów 808 00:39:24,330 --> 00:39:26,790 i można przejść przez nich, nowe elementy będzie 809 00:39:26,790 --> 00:39:30,930 być accessed-- nowego elementu, jeśli jest to dodana ostatnia, byłoby uzyskać ostatni. 810 00:39:30,930 --> 00:39:34,416 >> PUBLICZNOŚCI: możesz po prostu dać przykład czegoś, co by [niesłyszalne] 811 00:39:34,416 --> 00:39:37,404 coś z wartości jak [niesłyszalne] lub wartości, 812 00:39:37,404 --> 00:39:38,910 jak, jak chcesz sformatować, że? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Jasne. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Mogę dać przykład tego, co zrobimy z wartością? 816 00:39:46,410 --> 00:39:52,440 Więc co wy może znać jest, że posunęliśmy się za pośrednictwem tablicy 817 00:39:52,440 --> 00:39:55,380 i zasadniczo drukowane Każdy z elementów, 818 00:39:55,380 --> 00:40:00,910 Na przykład, stanowiąca część uporządkowany lub coś. 819 00:40:00,910 --> 00:40:02,674 Czy to ma sens, czy też chcemy to-- 820 00:40:02,674 --> 00:40:04,340 PUBLICZNOŚCI: Czy możemy drukować te wartości się? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Tak, możemy wydrukować a następnie w zasadzie $ value ponieważ w 822 00:40:13,220 --> 00:40:16,570 że konkretna wartość, bylibyśmy drukowanie wartości wewnątrz niego. 823 00:40:16,570 --> 00:40:20,150 Więc jeśli byliśmy na naszej pierwszej iteracji o tym, a my drukowane $ wartość, 824 00:40:20,150 --> 00:40:23,775 będziemy drukowania bar. 825 00:40:23,775 --> 00:40:27,020 >> PUBLICZNOŚCI: Czy istnieją także pętli w PHP lub tylko foreach pętli? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: Jest także dla pętli w PHP. 827 00:40:30,430 --> 00:40:33,399 A ich logika jest głównie samo, jak to, co już kiedyś. 828 00:40:33,399 --> 00:40:34,690 PUBLICZNOŚCI: Więc jego wartość jest null. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: To jak to samo. 830 00:40:35,090 --> 00:40:35,590 Tak. 831 00:40:35,590 --> 00:40:37,747 PUBLICZNOŚCI: jestem po prostu zapytać. 832 00:40:37,747 --> 00:40:39,695 Więc kiedy zadeklarować tablica, nie trzeba 833 00:40:39,695 --> 00:40:42,617 powiedzieć jaki rozmiar to będzie być, co oznacza, że ​​można po prostu 834 00:40:42,617 --> 00:40:44,417 dodawać i zabrać elementy [niesłyszalne]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Tak. 836 00:40:45,250 --> 00:40:45,750 Tak. 837 00:40:45,750 --> 00:40:46,251 Dokładnie. 838 00:40:46,251 --> 00:40:48,875 Kiedy zadeklarować tablicę, my nie trzeba powiedzieć, jaki rozmiar jest to, 839 00:40:48,875 --> 00:40:51,022 więc można po prostu dodać elementy na to także później. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Więcej pytań? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Więc przynosząc PHP i HTML razem, co mamy seen-- dobrze, 844 00:41:05,950 --> 00:41:15,130 Na przykład, w tym przykładzie mamy formularz HTML, który ma pole wprowadzania. 845 00:41:15,130 --> 00:41:18,830 >> A pole wejściowe jest tylko nazwa a następnie ma przycisk Prześlij. 846 00:41:18,830 --> 00:41:26,040 A kiedy naciśniesz Wyślij Przycisk w naszym pliku hello.php, 847 00:41:26,040 --> 00:41:32,130 ponieważ metoda formy jest uzyskać, możemy uzyskać dostęp to, co jest w nazwie 848 00:41:32,130 --> 00:41:40,360 przez to uzyskać zmienną globalną, że jest-- składnię to $ _GET. 849 00:41:40,360 --> 00:41:44,520 I wtedy możemy uzyskać dostęp bez względu na wejściowe użytkownika wewnątrz tej formie do nazwy 850 00:41:44,520 --> 00:41:47,410 przez podanie nazwy tej dziedzinie. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Wszelkie inne pytania lub którykolwiek pytania dotyczące tego konkretnego przykładu? 853 00:41:55,060 --> 00:41:58,275 >> PUBLICZNOŚCI: Gdzie jest PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Tutaj. 855 00:41:59,150 --> 00:42:01,150 Więc to jest nasz tag otwarcia dla PHP. 856 00:42:01,150 --> 00:42:01,530 >> PUBLICZNOŚCI: Och, dobrze. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Tak. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH Blumberg? O: = jest skrótem bo to jest PHP i tylko echo. 860 00:42:09,609 --> 00:42:10,150 PUBLICZNOŚCI: Och. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Tak, przepraszam. 862 00:42:10,720 --> 00:42:12,040 Powinienem był się, że jasne. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: Drukuj. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: To tylko funkcja która pozwala nam coś wydrukować. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Świetne pytanie. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Więc going-- tak. 869 00:42:25,495 --> 00:42:31,940 >> PUBLICZNOŚCI: Czy nie będzie dość nieco kodowania strony PHP i HTML 870 00:42:31,940 --> 00:42:33,450 na quizie 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: Nie może być sporo interpretacji 873 00:42:38,810 --> 00:42:43,330 PHP i HTML, niekoniecznie jak ogromne ilości kodowania, 874 00:42:43,330 --> 00:42:46,960 choć może trzeba napisać Pętla foreach, choć pętli for. 875 00:42:46,960 --> 00:42:49,790 Każda z pętli, które omówić jest uczciwa gra. 876 00:42:49,790 --> 00:42:51,889 I to głównie ona. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: Chciałbym być przygotowany. 878 00:42:53,430 --> 00:42:57,010 W ten sam sposób, że poprosił cię Napisać kilka funkcji C na quizie 0, 879 00:42:57,010 --> 00:42:59,766 Byłbym gotów zrobić sama w PHP i JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Tak. 881 00:43:00,640 --> 00:43:03,210 HANNAH Blumberg: Powiedziałbym little-- jak nie jesteśmy 882 00:43:03,210 --> 00:43:06,251 będzie Ci napisać ogromny HTML Strona tylko dlatego, że jest trochę 883 00:43:06,251 --> 00:43:08,240 nudne, ale może mieć części. 884 00:43:08,240 --> 00:43:09,310 To całkowicie uczciwa gra. 885 00:43:09,310 --> 00:43:11,082 Jak małe stronie HTML, całkowicie uczciwe. 886 00:43:11,082 --> 00:43:11,623 PUBLICZNOŚCI: OK. 887 00:43:11,623 --> 00:43:13,814 Jak o języku JavaScript, jak również? 888 00:43:13,814 --> 00:43:14,730 HANNAH Blumberg: Tak. 889 00:43:14,730 --> 00:43:15,250 JavaScript jest uczciwa gra. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Tak. 891 00:43:15,635 --> 00:43:16,801 To całkowicie uczciwa gra. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Dostaniemy do tego, w takich jak 10 minut. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, znowu, Structured Query Language. 894 00:43:23,750 --> 00:43:28,651 To w zasadzie pozwala nam na zarządzanie danymi w zarządzania relacyjnymi bazami danych 895 00:43:28,651 --> 00:43:29,150 system. 896 00:43:29,150 --> 00:43:31,149 To właśnie w zasadzie oznacza, że mamy gdzieś 897 00:43:31,149 --> 00:43:37,980 do przechowywania niektóre dane, które mogą chcemy stosowania w stronę lub w innej formie. 898 00:43:37,980 --> 00:43:42,190 A potem mamy pytania, aby uzyskać Informacje z naszej bazy danych, 899 00:43:42,190 --> 00:43:44,320 lub wstawić informacje w nich. 900 00:43:44,320 --> 00:43:47,560 Wiele wspólnego ones-- UPDATE INSERT, SELECT i DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Więc do aktualizacji, to jest składnia do aktualizacji danych w bazie danych. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Aktualizacja tej tabeli o nazwie stół, mówiąc, SET, 904 00:43:57,340 --> 00:44:04,170 możemy ustawić niektóre wartości w ogóle wiersze do równego coś innego. 905 00:44:04,170 --> 00:44:09,410 Tak więc możemy również określić niektóre specyficzne wpisy, które chcemy zmienić 906 00:44:09,410 --> 00:44:11,240 i że może być przy użyciu WHERE. 907 00:44:11,240 --> 00:44:16,380 I możemy określić, że chcemy jedynie zmodyfikować niektóre wiersze, gdzie dom dla, 908 00:44:16,380 --> 00:44:19,830 jeśli mieliśmy stolik studentów a wszyscy studenci mieli dom, 909 00:44:19,830 --> 00:44:24,890 więc chcemy zmienić tylko niektóre wartości gdzie dom równa kuriera, 910 00:44:24,890 --> 00:44:25,430 na przykład. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Dla INSERT, możemy włożyć pewne wartości do tabeli. 913 00:44:31,800 --> 00:44:35,150 Więc INSERT INTO tabela, i wartości, 914 00:44:35,150 --> 00:44:39,080 a następnie w nawiasach, określamy wartości, które chcesz wstawić. 915 00:44:39,080 --> 00:44:43,220 Więc INSERT INTO tabela, col1 i kol2 wartość jest wart1 i wart2. 916 00:44:43,220 --> 00:44:48,930 Więc to wstawia w zasadzie nowy wiersz do tabeli zawierającej wartości 1 i 2 917 00:44:48,930 --> 00:44:50,850 w kolumnach 1 i 2. 918 00:44:50,850 --> 00:44:54,760 >> A potem mamy zamiar iść na szybkie przykładem tego, jak to wygląda 919 00:44:54,760 --> 00:44:56,310 jak w naszej bazie danych trochę. 920 00:44:56,310 --> 00:44:58,685 Ale to, że ostateczna zapytania myślę, że będziemy przejść, 921 00:44:58,685 --> 00:45:01,450 SELECT, po prostu pozwala nam do wyboru danych z tabeli 922 00:45:01,450 --> 00:45:03,080 aby ewentualnie użyć go później. 923 00:45:03,080 --> 00:45:05,830 A sposób, w jaki to jest to wystarczy zapisać go w jakiejś zmiennej. 924 00:45:05,830 --> 00:45:07,780 A potem możemy ewentualnie użyć go ponownie. 925 00:45:07,780 --> 00:45:10,260 >> Więc SELECT gwiazda oznacza zaznacz wszystko. 926 00:45:10,260 --> 00:45:13,280 To tylko skrót do wyboru wszystkich. 927 00:45:13,280 --> 00:45:19,760 FROM tabela WHERE, szukamy dla niektórych szczególnych warunkach, 928 00:45:19,760 --> 00:45:22,290 więc gdzie kolumna jest równa coś, na przykład. 929 00:45:22,290 --> 00:45:24,410 Jeśli chcieliśmy zaznacz wszystko ze stołu, 930 00:45:24,410 --> 00:45:28,400 to po prostu wybiera wszystkie kolumny i wszystkie wiersze z tabeli. 931 00:45:28,400 --> 00:45:32,040 >> A następnie DELETE FROM tabela GDZIE kol równa się coś, 932 00:45:32,040 --> 00:45:36,440 to po prostu usuwa niektóre wiersz z naszego stołu 933 00:45:36,440 --> 00:45:38,860 gdzie mamy pewne określone warunki. 934 00:45:38,860 --> 00:45:41,870 W tym przypadku warunki są kolumny wynosi coś. 935 00:45:41,870 --> 00:45:43,460 Więc po prostu szybkie przykładem. 936 00:45:43,460 --> 00:45:49,100 Jeśli mamy ten stół tutaj, a my włóż ją do tabeli, wartości te, 937 00:45:49,100 --> 00:45:50,400 że będzie wstawić nowy wiersz. 938 00:45:50,400 --> 00:45:56,380 I gdybyśmy mieli automatycznego przyrostu, to będzie po prostu zwiększyć naszą ID od 0 do 1 do 2. 939 00:45:56,380 --> 00:46:00,010 >> Jeśli wybraliśmy wszystkim od studentów, to po prostu zwraca wszystkie pola i wszystkie wiersze. 940 00:46:00,010 --> 00:46:02,430 W przypadku, gdy rok jest większa niż lub równą 2016, 941 00:46:02,430 --> 00:46:04,390 że po prostu wrócić Hannah i ja. 942 00:46:04,390 --> 00:46:08,360 A potem, jeśli tylko wybrane rok id i rok od studentów 943 00:46:08,360 --> 00:46:11,710 gdzie dom jest Cabot House, które by znów powrócić Hannah i ja. 944 00:46:11,710 --> 00:46:14,430 >> Następnie, jeśli usunięte z uczniami gdzie nazwa jest równa Rob, 945 00:46:14,430 --> 00:46:16,760 że będzie usunąć cały wiersz. 946 00:46:16,760 --> 00:46:19,696 A potem, jeśli ustawić nazwa, studenci UPDATE 947 00:46:19,696 --> 00:46:21,570 SET Nazwa równa Daven GDZIE dom jest równa 948 00:46:21,570 --> 00:46:27,010 Cabot House, który zamierza przejść do te wiersze, a następnie zaktualizować nazwę. 949 00:46:27,010 --> 00:46:31,470 >> A potem kilka typów danych SQL są CHAR, VARCHAR, INT, i pływak. 950 00:46:31,470 --> 00:46:32,760 Są to uczciwa gra. 951 00:46:32,760 --> 00:46:36,740 Chciałbym tam jeszcze raz i upewnij się, że wiesz, 952 00:46:36,740 --> 00:46:40,930 i mieć je na ściągawki, co każdy z tych znaków 953 00:46:40,930 --> 00:46:44,140 stosowano w co użyto je na psets, 954 00:46:44,140 --> 00:46:48,050 i upewnij się, że znasz i komfortowo mając do wyboru 955 00:46:48,050 --> 00:46:51,450 z różnych typów danych w swojej pset. 956 00:46:51,450 --> 00:46:51,950 Tak. 957 00:46:51,950 --> 00:46:54,300 >> PUBLICZNOŚCI: Co było, że tabela przechowywane? 958 00:46:54,300 --> 00:46:57,119 Tak, gdzie jest przechowywany w tej tabeli? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Cóż, teraz, to nie jest zapisywane. 960 00:46:59,160 --> 00:47:00,700 W każdym razie, gdzie jest przechowywany w tej tabeli? 961 00:47:00,700 --> 00:47:04,503 Ale to może być przechowywane w bazie danych SQL. 962 00:47:04,503 --> 00:47:07,330 >> PUBLICZNOŚCI: A gdzie jest baza danych SQL? 963 00:47:07,330 --> 00:47:11,200 W komputerze, w Internecie gdzieś serwer? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: To może być wiele różnych rzeczy. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: Mamy połączony z SQL tabele głównie z phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Więc możemy poprosić serwer zapisać je dla nas. 967 00:47:22,060 --> 00:47:23,830 Możemy przechowywać je na własnym komputerze. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: To zależy od tego, jak chcesz to zrobić dla siebie. 969 00:47:27,950 --> 00:47:30,075 Ale zostaliśmy przechowywania im, jak wspomniano Hannah, 970 00:47:30,075 --> 00:47:31,755 na phpMyAdmin, który jest w trybie online. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 A potem, jak nam się wykorzystać PHP i SQL, możemy go zapisać 973 00:47:39,280 --> 00:47:43,450 do jakiejś zmiennej co my zapytaliśmy o. 974 00:47:43,450 --> 00:47:48,370 >> Jeśli więc wybrać wszystkie z historii gdzie user_id równa ID sesji, 975 00:47:48,370 --> 00:47:53,900 które wybrać wszystkie wiersze dla określonej osoby 976 00:47:53,900 --> 00:47:58,327 jest zalogowany z historii Stół i sortować je w rzędy. 977 00:47:58,327 --> 00:48:00,410 Fajna jest, aby wiedzieć że funkcja zapytania CS50 jest 978 00:48:00,410 --> 00:48:02,180 chroni przed tagów SQL injection. 979 00:48:02,180 --> 00:48:07,420 To po prostu oznacza, że ​​pilnuje wejście, które jest wpisana jest poprawna 980 00:48:07,420 --> 00:48:09,920 oraz że osoba, która wchodzi wejście 981 00:48:09,920 --> 00:48:15,100 nie próbuje wprowadzić niektóre złośliwe Kod albo spadek nasze stoły 982 00:48:15,100 --> 00:48:17,305 lub usunąć wszystko wewnątrz naszej bazie danych. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Szybki przegląd z Model Model-View Controller, 985 00:48:23,400 --> 00:48:27,360 to tylko sposób organizacji i myślenie o kodzie. 986 00:48:27,360 --> 00:48:29,100 To kolejny paradygmat projektowania. 987 00:48:29,100 --> 00:48:33,380 Co oznacza, że ​​jest to, że can-- i jest to dobra praktyka 988 00:48:33,380 --> 00:48:37,790 w celu oddzielenia różnych elementów naszego kodu i co 989 00:48:37,790 --> 00:48:40,530 kontroli w tych trzech paradygmatów. 990 00:48:40,530 --> 00:48:46,700 >> Tak więc nasz widok jest najczęściej nasze szablony, nasz układ, sposób 991 00:48:46,700 --> 00:48:48,260 które możemy ustawić w jaki sposób nasz kod wygląda. 992 00:48:48,260 --> 00:48:55,190 To głównie nasze pliki CSS i sposób że zdefiniowany projekt naszego kodu, 993 00:48:55,190 --> 00:48:55,710 gruntownie. 994 00:48:55,710 --> 00:48:59,280 Nasz kontroler jest głównie to, co robiliśmy z plikami PHP. 995 00:48:59,280 --> 00:49:03,030 Więc jeszcze raz, praca z informacje, które mamy 996 00:49:03,030 --> 00:49:06,700 i określenie, w jaki sposób Informacje te są wykorzystywane, 997 00:49:06,700 --> 00:49:10,660 a następnie przepuszczanie tej informacji albo na widoku lub modelu. 998 00:49:10,660 --> 00:49:13,880 I model, tak, że mamy było korzystać, jest była nasza baza danych, 999 00:49:13,880 --> 00:49:17,510 więc gdzie nasze informacje przechowywane, więc ma gdzieś 1000 00:49:17,510 --> 00:49:21,490 żyć, a każdy z kod, który odnosi się do sposobu 1001 00:49:21,490 --> 00:49:25,410 że mamy takich informacji lub sposób, że aktualizacji tych informacji. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Tak więc w modelu MVC, HTTP żądania są wysyłane do serwera WWW. 1004 00:49:33,200 --> 00:49:36,220 Następnie interpretuje kontrolera żądanie od użytkownika 1005 00:49:36,220 --> 00:49:38,260 a następnie sprawdza poprawność danych wprowadzanych przez użytkownika. 1006 00:49:38,260 --> 00:49:41,580 Jest to opcja, że ​​mamy kontroler komunikacji 1007 00:49:41,580 --> 00:49:44,000 z modelem, więc coś jak naszej bazie danych 1008 00:49:44,000 --> 00:49:47,500 lub jakieś inne funkcjonalności który przekazuje informacje. 1009 00:49:47,500 --> 00:49:50,340 I w końcu, sterownik przekazuje informacje na widzenia 1010 00:49:50,340 --> 00:49:52,090 tak, że może być wydane i że może 1011 00:49:52,090 --> 00:49:55,860 widoczne dla każdej osoby dostęp do strony internetowej. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Jakiekolwiek pytania? 1014 00:50:01,340 --> 00:50:01,840 Niesamowite. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Więc jeszcze raz, model, jego funkcją znowu 1017 00:50:08,469 --> 00:50:11,260 jest trwałe przechowywanie informacji, zarządzania i organizowania danych. 1018 00:50:11,260 --> 00:50:13,890 I co widzieliśmy tak daleko jest baza danych MySQL 1019 00:50:13,890 --> 00:50:16,200 oraz pliki danych, które mogą wykorzystać. 1020 00:50:16,200 --> 00:50:20,580 >> Zobacz, prezentacja informacji użytkownik, interfejs użytkownika, czy interfejs użytkownika. 1021 00:50:20,580 --> 00:50:22,350 A przykładem tego jest HTML. 1022 00:50:22,350 --> 00:50:23,950 I wtedy możemy mieć minimalny PHP. 1023 00:50:23,950 --> 00:50:28,360 Więc dla pętli, które wykonuje iteracje na danych, które są drukowane 1024 00:50:28,360 --> 00:50:30,720 jest częścią widzenia, jako w przeciwieństwie do kontrolera. 1025 00:50:30,720 --> 00:50:35,660 I wtedy wielu z naszych plików PHP należą do kategorii kontrolera. 1026 00:50:35,660 --> 00:50:38,410 To po prostu obsługuje żądania użytkowników i pobiera informacje z modelu. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Skoki do dokumentu Object Model, to tylko 1029 00:50:45,590 --> 00:50:47,700 odnosi się do sposobu HTML organizowane są dokumenty. 1030 00:50:47,700 --> 00:50:51,600 I są zorganizowane w drzewo struktura, która ma hierarchii. 1031 00:50:51,600 --> 00:50:56,720 Więc jeśli mamy dostęp do [niesłyszalne] przedstawieniem dokumentu 1032 00:50:56,720 --> 00:51:02,750 możemy pracować z dokumentem, jak możemy manipulować obiektami w zasadzie. 1033 00:51:02,750 --> 00:51:06,630 >> I na to, że trochę wyraźniejsze, kiedy 1034 00:51:06,630 --> 00:51:10,540 mamy wiele z naszych różne znaczniki odpowiedzieć 1035 00:51:10,540 --> 00:51:12,590 do różnych tras w naszym drzewie. 1036 00:51:12,590 --> 00:51:17,070 A następnie w tym przykładzie mają początkowy węzeł dokumentu. 1037 00:51:17,070 --> 00:51:20,010 Mamy więc nasz węzeł HTML które dzieli się na głowę i ciało. 1038 00:51:20,010 --> 00:51:22,810 Głowica posiada tytuł, a następnie tytuł zawiera Witaj, świecie. 1039 00:51:22,810 --> 00:51:24,860 A nasz organizm po prostu zawiera Witaj, świecie, jak również. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Więc wszelkie pytania dotyczące któregokolwiek z rzeczy, które objęte do tej pory? 1042 00:51:31,900 --> 00:51:35,891 A jeśli nie, Hannah będzie przejąć z JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Niesamowite. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, fajnie. 1045 00:51:37,473 --> 00:51:40,980 Jeśli coś wyjdzie z PHP i HTML, lub któregokolwiek z tych rzeczy Maria pokryte, 1046 00:51:40,980 --> 00:51:42,700 zawsze możemy wstrzymać. 1047 00:51:42,700 --> 00:51:46,430 Robimy lepiej Czas znowu, tak niesamowite. 1048 00:51:46,430 --> 00:51:48,770 I po prostu wrócić bardzo szybko, z tym, 1049 00:51:48,770 --> 00:51:51,010 jeśli spojrzeć na każdy minionego roku egzamin, to 1050 00:51:51,010 --> 00:51:54,120 pojawia się either-- tutaj jest niektóre HTML, aby ten schemat. 1051 00:51:54,120 --> 00:51:58,380 Albo tu jest ten schemat, że niektóre HTML, więc na pewno praktyka, że. 1052 00:51:58,380 --> 00:52:01,500 A potem to gwarantowany Pytanie, które można dostać w prawo. 1053 00:52:01,500 --> 00:52:02,000 Chłodny. 1054 00:52:02,000 --> 00:52:04,510 Więc porozmawiajmy o JavaScript i jak to jest trochę 1055 00:52:04,510 --> 00:52:09,130 różni się od języków takich jak PHP i C, te dwa języki, które widzieliśmy wcześniej. 1056 00:52:09,130 --> 00:52:10,780 Więc numer jeden, to luźno wpisane. 1057 00:52:10,780 --> 00:52:14,630 To jest jak PHP, ale w przeciwieństwie do C 1058 00:52:14,630 --> 00:52:15,890 >> Jest to język interpretowany. 1059 00:52:15,890 --> 00:52:19,870 Ponownie, to jak PHP, w przeciwieństwie do C, a to 1060 00:52:19,870 --> 00:52:24,630 ma pozwolić nam go use-- działa bardzo dobrze z stron internetowych. 1061 00:52:24,630 --> 00:52:28,350 To będzie pozwalają manipulować treść i jak to wygląda 1062 00:52:28,350 --> 00:52:30,300 i co robi. 1063 00:52:30,300 --> 00:52:32,330 >> Jedziemy zobaczyć trochę Ajax. 1064 00:52:32,330 --> 00:52:36,140 To pozwala nam komunikować asynchronicznie z różnych serwerów 1065 00:52:36,140 --> 00:52:37,950 i uzyskać informacje. 1066 00:52:37,950 --> 00:52:42,820 I to jest rzecz, która naprawdę oddziela JavaScript z PHP i C 1067 00:52:42,820 --> 00:52:45,590 jest to, że po stronie klienta. 1068 00:52:45,590 --> 00:52:49,860 Zarówno PHP i C zazwyczaj po stronie serwera. 1069 00:52:49,860 --> 00:52:51,960 >> W przeważającej części, a prawie w całości, co 1070 00:52:51,960 --> 00:52:53,900 widzieliśmy, przynajmniej w ta klasa, JavaScript 1071 00:52:53,900 --> 00:52:57,040 działa na stronie klienta, co oznacza, że przeglądarka jest rzeczywiście 1072 00:52:57,040 --> 00:52:58,597 odpowiedzialny za uruchomienie go. 1073 00:52:58,597 --> 00:53:01,180 A to oznacza, że ​​nie potrzebne do interakcji z serwerem. 1074 00:53:01,180 --> 00:53:04,380 Więc to oznacza, że ​​może być dużo szybciej bo to właściwie tylko to Chrome, 1075 00:53:04,380 --> 00:53:10,420 to Safari, to Firefox, cokolwiek wam używać właściwie prowadzeniu JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> PUBLICZNOŚCI: Co asynchroniczny oznacza? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ach, co nie asynchronicznie na myśli? 1078 00:53:13,620 --> 00:53:14,250 Świetne pytanie. 1079 00:53:14,250 --> 00:53:17,890 Asynchronicznie means-- dobrze, treść, w której 1080 00:53:17,890 --> 00:53:22,140 używamy jest, OK, Tworzymy strony WWW 1081 00:53:22,140 --> 00:53:23,860 i musimy uzyskać pewne informacje. 1082 00:53:23,860 --> 00:53:28,250 Tak więc na przykładzie mashup, niektóre informacje, które mogą chcemy 1083 00:53:28,250 --> 00:53:30,580 to tytuły artykułów. 1084 00:53:30,580 --> 00:53:33,330 Teraz could-- jedną opcję jest zrobić to synchronicznie 1085 00:53:33,330 --> 00:53:37,940 a to oznacza, LET'S stop, przejdź się artykuł, 1086 00:53:37,940 --> 00:53:41,275 uzyskać artykułu plecy, a następnie render, ale to będzie bardzo powolny. 1087 00:53:41,275 --> 00:53:44,150 To byłoby złe doświadczenia użytkownika dlatego, że po prostu siedzieć 1088 00:53:44,150 --> 00:53:46,630 nie czekając na coś odpowiedzieć. 1089 00:53:46,630 --> 00:53:50,020 >> Asynchronicznie oznacza będziemy nadal będzie o naszej działalności, 1090 00:53:50,020 --> 00:53:52,529 renderowania strony, oraz wyślemy wyłączyć żądanie 1091 00:53:52,529 --> 00:53:54,570 To trochę będzie stało się w tle. 1092 00:53:54,570 --> 00:53:57,610 Myślę, że używamy przykład w Rob wykład dzwoni i mówi, 1093 00:53:57,610 --> 00:53:59,980 hej, możesz to patrzeć dla mnie i wrócić do mnie, 1094 00:53:59,980 --> 00:54:02,870 a nie tylko mnie czeka na telefon. 1095 00:54:02,870 --> 00:54:07,020 Więc asynchronicznie Oznacza to się dzieje w tle od nas 1096 00:54:07,020 --> 00:54:08,676 równolegle. 1097 00:54:08,676 --> 00:54:10,400 >> Świetne pytanie. 1098 00:54:10,400 --> 00:54:11,830 Cokolwiek innego? 1099 00:54:11,830 --> 00:54:12,330 Świetny. 1100 00:54:12,330 --> 00:54:15,020 Będziemy skakać o wiele więcej do asynchronicznych wywołań z Ajaxem. 1101 00:54:15,020 --> 00:54:18,287 >> PUBLICZNOŚCI: Czy JavaScript-- gdzie robi spaść z Model-View-Controller? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: Świetne pytanie. 1103 00:54:19,620 --> 00:54:23,320 Gdzie upadek JavaScript z Model-View-Controller? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Myślę, że może to fall-- więc zwykle nie 1106 00:54:28,350 --> 00:54:31,340 lubię squish go na które Paradygmat, ale myślę, powiedziałbym, 1107 00:54:31,340 --> 00:54:34,280 OK, więc JavaScript faktycznie się dzieje, aby umożliwić 1108 00:54:34,280 --> 00:54:37,587 nas do zbierania danych, interpretacji danych, faktycznie 1109 00:54:37,587 --> 00:54:38,920 znaczące rzeczy z danymi. 1110 00:54:38,920 --> 00:54:41,100 W ten sposób, jest bardzo podobny do sterowania. 1111 00:54:41,100 --> 00:54:43,900 >> Ale to również będzie pozwalają nam wyświetlić rzeczy i rzeczy drukowania. 1112 00:54:43,900 --> 00:54:47,021 W ten sposób, to bardzo podobny widok. 1113 00:54:47,021 --> 00:54:47,520 Tak. 1114 00:54:47,520 --> 00:54:51,710 Więc to jest trochę jak PHP w gdzie to niby być zarówno. 1115 00:54:51,710 --> 00:54:53,330 Dobre pytanie. 1116 00:54:53,330 --> 00:54:55,209 Cokolwiek innego? 1117 00:54:55,209 --> 00:54:56,000 Wszystko w porządku, niesamowite. 1118 00:54:56,000 --> 00:54:57,120 Przesuwanie w prawo wzdłuż. 1119 00:54:57,120 --> 00:54:59,110 >> Warto więc zobaczyć przykład w jaki sposób możemy wykorzystać 1120 00:54:59,110 --> 00:55:02,250 JavaScript w jednym z naszych programów internetowych. 1121 00:55:02,250 --> 00:55:05,680 Więc uważam, że to index.html z gronem HTML. 1122 00:55:05,680 --> 00:55:08,800 I co chcę cię skupić się na ten znacznik jest skrypt. 1123 00:55:08,800 --> 00:55:13,280 I to mówi, OK, chcę, aby uruchomić niektóre JavaScript i tutaj jest, gdzie mieszka. 1124 00:55:13,280 --> 00:55:15,400 Żyje w hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> I bardzo podobnie jak CSS, mogliśmy umieścić JavaScript w HTML. 1126 00:55:21,120 --> 00:55:24,000 Dlaczego może chcemy, aby oddzielić ją? 1127 00:55:24,000 --> 00:55:24,500 Tak. 1128 00:55:24,500 --> 00:55:25,486 >> PUBLICZNOŚCI: Łatwiejszy przepisać? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Tak. 1130 00:55:26,402 --> 00:55:28,450 Jest to łatwiejsze w użyciu w całej różne strony internetowe. 1131 00:55:28,450 --> 00:55:29,980 To sprawia, że ​​coś czystsze. 1132 00:55:29,980 --> 00:55:32,090 To jest po prostu dobra praktyka. 1133 00:55:32,090 --> 00:55:32,590 Niesamowite. 1134 00:55:32,590 --> 00:55:33,930 Dobra odpowiedź. 1135 00:55:33,930 --> 00:55:36,690 Więc dobrze, więc to będzie być naszym index.html. 1136 00:55:36,690 --> 00:55:39,430 A potem tu jest nasz malutkie plik JavaScript. 1137 00:55:39,430 --> 00:55:42,410 >> A wszystko to mówi jest czujny Witaj, świecie. 1138 00:55:42,410 --> 00:55:46,040 Więc co się dzieje, kiedy Ta strona renders-- 1139 00:55:46,040 --> 00:55:49,680 więc jeśli pójdziesz do jakiejkolwiek strony internetowej to jest-- wszystko, co się wydarzy 1140 00:55:49,680 --> 00:55:53,330 jest to powiedzieć, OK, jestem zamierza uruchomić ten kod JavaScript. 1141 00:55:53,330 --> 00:55:56,370 A ten kod JavaScript po prostu mówi alert Witaj, świecie. 1142 00:55:56,370 --> 00:55:59,090 Więc mam zamiar się tego przyjazny mały pop-up. 1143 00:55:59,090 --> 00:56:00,360 >> Chłodny? 1144 00:56:00,360 --> 00:56:04,746 To trochę jak nasz pierwszy JavaScript programu, nasz Witaj, świecie. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Przyjrzyjmy się nieco więcej o tym, co składnia JavaScript wygląda. 1147 00:56:12,190 --> 00:56:16,330 A konkretnie, porównajmy go do C i PHP, które widzieliśmy wcześniej. 1148 00:56:16,330 --> 00:56:20,610 >> W JavaScript, będziemy mieć var nazwa zmiennej, a następnie 1149 00:56:20,610 --> 00:56:21,690 jego rzeczywista wartość. 1150 00:56:21,690 --> 00:56:26,170 A my nie określić typ, po prostu jak w PHP, ale bardzo w przeciwieństwie do C 1151 00:56:26,170 --> 00:56:28,850 Tak na przykład, jeśli chcemy przechowywać wartość 50, 1152 00:56:28,850 --> 00:56:32,490 w C, to musimy powiedzieć, hej, C, chcę liczbę całkowitą, 1153 00:56:32,490 --> 00:56:35,076 Mam zamiar to nazwać i, a jej wartość to 50. 1154 00:56:35,076 --> 00:56:36,450 W PHP, to jest trochę łatwiej. 1155 00:56:36,450 --> 00:56:41,880 Mówimy, hej, chcę zmienną nazywa ja, a jej wartość wynosi 50. 1156 00:56:41,880 --> 00:56:45,890 Bardzo podobnie, w JavaScript, mamy powiedzieć, hej, chcę zmienną i, 1157 00:56:45,890 --> 00:56:47,080 jego wartość wynosi 50. 1158 00:56:47,080 --> 00:56:52,140 Każdy kolejny raz, że używam Ja nie muszę pisać var. 1159 00:56:52,140 --> 00:56:53,810 To tylko ja od tego momentu. 1160 00:56:53,810 --> 00:56:58,660 W ten sam sposób, w C, gdzie raz mówimy, int i, po prostu użyć i. 1161 00:56:58,660 --> 00:57:00,340 Chłodny? 1162 00:57:00,340 --> 00:57:01,800 W porządku. 1163 00:57:01,800 --> 00:57:03,710 >> Przechodząc do pętli, Na szczęście, te prawie 1164 00:57:03,710 --> 00:57:06,720 wyglądają exactly-- Myślę, że są dokładnie tak samo jak to, co 1165 00:57:06,720 --> 00:57:09,799 pętle będą wyglądać w coś jak C, gdzie w pętli 1166 00:57:09,799 --> 00:57:11,840 będzie miał trzy parts-- inicjalizacji, 1167 00:57:11,840 --> 00:57:13,640 stan i aktualizacji. 1168 00:57:13,640 --> 00:57:15,340 Pętla natomiast, że wygląda dokładnie to samo. 1169 00:57:15,340 --> 00:57:16,390 My po prostu dać mu warunek. 1170 00:57:16,390 --> 00:57:18,264 >> I robić podczas pętli, ponownie, dokładnie tak samo. 1171 00:57:18,264 --> 00:57:20,190 Dajemy to warunek. 1172 00:57:20,190 --> 00:57:24,510 Powiedzmy, że chciałem do iteracji over-- Chciałem coś zrobić pięć razy. 1173 00:57:24,510 --> 00:57:27,840 W C, możemy napisać dla init i jest równa 0. 1174 00:57:27,840 --> 00:57:30,480 i jest mniejsza niż 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 Jedyna różnica, w JavaScript, zamiast mówić int i jest równa 0, 1176 00:57:34,240 --> 00:57:36,820 mówimy var i jest równa 0. 1177 00:57:36,820 --> 00:57:38,370 Pięknie. 1178 00:57:38,370 --> 00:57:41,320 To jedyna różnica. 1179 00:57:41,320 --> 00:57:43,200 Wszelkie pytania dotyczące któregokolwiek z tego? 1180 00:57:43,200 --> 00:57:44,160 Tak. 1181 00:57:44,160 --> 00:57:48,480 >> PUBLICZNOŚCI: Więc w PHP, to jest to samo rzeczą, z wyjątkiem, ale jak zmienna? 1182 00:57:48,480 --> 00:57:49,564 Albo było to, że na przykład var? 1183 00:57:49,564 --> 00:57:50,480 HANNAH Blumberg: Tak. 1184 00:57:50,480 --> 00:57:52,310 Więc w PHP, to będzie na znak dolara. 1185 00:57:52,310 --> 00:57:59,450 Więc to będzie $ i równych 0, $ i jest mniejsza niż 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Świetne pytanie. 1187 00:58:02,490 --> 00:58:04,570 >> Teraz porozmawiajmy o deklaracje funkcji. 1188 00:58:04,570 --> 00:58:07,010 W C, gdy uznany za Funkcja, daliśmy mu nazwę 1189 00:58:07,010 --> 00:58:08,490 i daliśmy kilka parametrów. 1190 00:58:08,490 --> 00:58:10,670 I na początku pisaliśmy typ. 1191 00:58:10,670 --> 00:58:12,440 W JavaScript, wszystko, musisz zrobić, to napisać 1192 00:58:12,440 --> 00:58:15,080 funkcja słowo kluczowe mówi, hej, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Mam zamiar zdefiniować funkcję. 1194 00:58:16,570 --> 00:58:18,520 >> W tym przypadku, że ma nazwę sumy. 1195 00:58:18,520 --> 00:58:20,820 I trwa dwa argumenty, X i Y. 1196 00:58:20,820 --> 00:58:23,280 Zauważ, że nie dbamy o rodzajach xi y. 1197 00:58:23,280 --> 00:58:26,280 I podobnie jak C, mamy ten powrót słów kluczowych, 1198 00:58:26,280 --> 00:58:29,140 więc możemy zrobić coś jak powrotnej xi y. 1199 00:58:29,140 --> 00:58:32,540 >> A teraz, kiedy już napisane ten pierwszy Funkcja, możemy użyć sumę wszędzie. 1200 00:58:32,540 --> 00:58:34,740 I to jest całkowicie w porządku. 1201 00:58:34,740 --> 00:58:37,530 One naprawdę fajne rzeczy na temat JavaScript, który jest bardzo w przeciwieństwie do C 1202 00:58:37,530 --> 00:58:40,770 jest to, że funkcje mogą być traktowane jako wartości. 1203 00:58:40,770 --> 00:58:43,895 Tak więc możemy zrobić coś takiego tutaj gdzie przypuszczam, że obejmuje to up-- 1204 00:58:43,895 --> 00:58:46,400 I pokryta sumę var part-- i po prostu powiedział: 1205 00:58:46,400 --> 00:58:49,850 Funkcja xy wynosi powrotu X plus Y. 1206 00:58:49,850 --> 00:58:52,140 >> To, co można nazwać anonimowa funkcja. 1207 00:58:52,140 --> 00:58:53,920 Jest to funkcja, bez nazwy. 1208 00:58:53,920 --> 00:58:56,290 Podczas gdy funkcja ta mówi Suma, bla, bla, bla, 1209 00:58:56,290 --> 00:58:59,340 to byłoby po prostu powiedzieć funkcji. 1210 00:58:59,340 --> 00:59:02,020 Ale teraz, mimo że mam to anonimowa funkcja, 1211 00:59:02,020 --> 00:59:03,630 że funkcja jest naprawdę wartość. 1212 00:59:03,630 --> 00:59:05,160 Możemy traktować jak wartość. 1213 00:59:05,160 --> 00:59:10,180 >> Tak więc możemy zapisać go w zmiennej o to samo sposób możemy przechowywać 50 w zmiennej. 1214 00:59:10,180 --> 00:59:13,870 Można więc powiedzieć, OK, chcę Zmienna, nazywa się sumą, 1215 00:59:13,870 --> 00:59:16,011 i to jest ta funkcja. 1216 00:59:16,011 --> 00:59:18,760 Tak więc te dwie rzeczy są rzeczywiście zamiar zrobić dokładnie to samo, 1217 00:59:18,760 --> 00:59:21,576 ale składnia jest trochę inna i rodzaj notatki zabawy. 1218 00:59:21,576 --> 00:59:22,076 Tak. 1219 00:59:22,076 --> 00:59:25,548 >> PUBLICZNOŚCI: Tak można nazwać funkcja, która była anonimowa, mówiąc: 1220 00:59:25,548 --> 00:59:28,244 wsporniki suma 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Tak. 1222 00:59:29,160 --> 00:59:32,280 Można nazwać to anonimowy funkcjonują w ten sam sposób. 1223 00:59:32,280 --> 00:59:33,350 Zrobiłbyś sumę (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 To byłoby całkowicie w porządku. 1226 00:59:38,200 --> 00:59:41,575 >> Jeśli nie zrobiłem suma var równa funkcja, jeśli po prostu usunięte 1227 00:59:41,575 --> 00:59:45,480 this-- Wiem, że to na mojej ręce, ale udawać, że usunięte this-- następnie 1228 00:59:45,480 --> 00:59:46,964 że funkcja jest rodzajem prostu zniknął. 1229 00:59:46,964 --> 00:59:49,630 Nigdy nie można użyć go ponownie, ponieważ nie masz nazwy dla niego. 1230 00:59:49,630 --> 00:59:53,497 Trudno odnieść się do czegoś nie wiem jak to nazwać. 1231 00:59:53,497 --> 00:59:54,080 Dobre pytanie. 1232 00:59:54,080 --> 00:59:54,580 Tak. 1233 00:59:54,580 --> 00:59:59,580 >> PUBLICZNOŚCI: Czy można odwołać sumę w innych miejsc o wartości X i Y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Czy możesz Kwota referencyjna w innych miejscach 1235 01:00:01,940 --> 01:00:03,360 przy wartości X i Y? 1236 01:00:03,360 --> 01:00:05,130 Nie jestem do końca pewien, co masz na myśli. 1237 01:00:05,130 --> 01:00:10,582 >> PUBLICZNOŚCI: Więc obok pół-anonimowe Funkcja ta suma jest równa tej 1238 01:00:10,582 --> 01:00:14,452 funkcja anonimowa, więc suma jest Teraz zmienna, że ​​can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: Racja. 1240 01:00:15,410 --> 01:00:18,980 Więc suma jest zmienna, ale actually-- 1241 01:00:18,980 --> 01:00:23,770 więc suma jest zmienną, której wartość jest funkcja. 1242 01:00:23,770 --> 01:00:27,030 Więc jest to funkcja, która jest rodzajem dziwna rzecz, owinąć wokół twojej głowie 1243 01:00:27,030 --> 01:00:29,880 ponieważ graliśmy z C i nie można tego zrobić w C. 1244 01:00:29,880 --> 01:00:32,679 Ale teraz możemy nazwać zsumować sam sposób moglibyśmy nazwać sumę tutaj. 1245 01:00:32,679 --> 01:00:33,220 PUBLICZNOŚCI: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Tak. 1247 01:00:33,970 --> 01:00:34,553 Dobre pytanie. 1248 01:00:34,553 --> 01:00:35,438 Tak. 1249 01:00:35,438 --> 01:00:39,862 >> PUBLICZNOŚCI: Tak więc nie używać Prototypy w PHP lub JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: Nie, nie trzeba używać prototypów, 1251 01:00:42,070 --> 01:00:43,880 szczególnie w JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Tak jeden praktyką złą rzeczą, że jestem powie, że nie należy robić 1253 01:00:49,380 --> 01:00:52,620 to nie trzeba pisać var ​​i = 50. 1254 01:00:52,620 --> 01:00:54,840 Możesz po prostu zacząć robić i = 50. 1255 01:00:54,840 --> 01:00:57,490 I byłoby po prostu zrobić i zmienną globalną. 1256 01:00:57,490 --> 01:01:00,550 >> To bardzo zła praktyka nie mów nigdy jawnie var i, 1257 01:01:00,550 --> 01:01:01,800 ale to jest coś, co możesz zrobić. 1258 01:01:01,800 --> 01:01:03,591 Tłumacz nie jest będzie krzyczeć na ciebie. 1259 01:01:03,591 --> 01:01:05,920 JavaScript jest dość podobny, możesz robić co chcesz. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Przepraszam. 1262 01:01:09,800 --> 01:01:10,300 Nie ma dwóch. 1263 01:01:10,300 --> 01:01:12,150 W pomarańczowe spodnie. 1264 01:01:12,150 --> 01:01:13,190 Śmiało. 1265 01:01:13,190 --> 01:01:14,390 >> PUBLICZNOŚCI: Nie, ty pierwszy. 1266 01:01:14,390 --> 01:01:16,765 >> PUBLICZNOŚCI: Nie, po prostu mówiąc: Ja nie mam ręki do góry. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 OK. 1269 01:01:20,748 --> 01:01:26,604 Więc jeśli były zadzwonić za pierwszym razem, teraz podsumować, 1270 01:01:26,604 --> 01:01:29,864 nazywamy go w ten sam sposób, x, y, jak za każdym razem? 1271 01:01:29,864 --> 01:01:30,780 HANNAH Blumberg: Tak. 1272 01:01:30,780 --> 01:01:32,572 Więc te dwa zasadniczo zrobić to samo. 1273 01:01:32,572 --> 01:01:35,113 PUBLICZNOŚCI: A co jest zaletą z wykorzystaniem jednego lub drugiego? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg: Nie zaletą z użyciem jednego lub drugiego. 1275 01:01:37,500 --> 01:01:40,080 Chciałem tylko pokazać dwa różne elementami składni. 1276 01:01:40,080 --> 01:01:42,770 Wiele razy, gdy anonimowy funkcje mają jakiś cel 1277 01:01:42,770 --> 01:01:48,220 jeśli argument jest do drugiego Funkcja ta powinna być funkcją. 1278 01:01:48,220 --> 01:01:50,600 I zobaczymy, że w tylko druga z Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Więc jeśli to nie miało sensu, przechowywać go w tył głowy. 1280 01:01:53,577 --> 01:01:55,660 To miejsce, gdzie anonimowy Funkcja może być przydatna 1281 01:01:55,660 --> 01:01:58,284 bo to nie jest naprawdę warto nadając jej nazwę, ponieważ jesteśmy tylko 1282 01:01:58,284 --> 01:01:59,443 zamiar go użyć tylko raz. 1283 01:01:59,443 --> 01:02:00,370 Tak. 1284 01:02:00,370 --> 01:02:03,635 >> PUBLICZNOŚCI: Jeśli x i y zmiana później na, podsumuje zmienić, jak również? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: Jeśli x i y zmiany później, podsumuje zmienić, jak również? 1286 01:02:06,510 --> 01:02:08,840 Więc to jest właściwie, myśli coś, co jest, 1287 01:02:08,840 --> 01:02:12,260 znowu, po prostu czuje się bardzo różne z C. Nie jest to wartość. 1288 01:02:12,260 --> 01:02:13,620 To nie jest 5. 1289 01:02:13,620 --> 01:02:15,550 To jest po prostu sama funkcja. 1290 01:02:15,550 --> 01:02:19,110 Więc jak tylko dać to parametry, Pokochasz więc właściwie obliczyć wartość. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: A potem można wywołać funkcję 1292 01:02:21,193 --> 01:02:23,272 i używać go dostać jakąś wartość. 1293 01:02:23,272 --> 01:02:24,230 HANNAH Blumberg: Racja. 1294 01:02:24,230 --> 01:02:25,250 Dokładnie. 1295 01:02:25,250 --> 01:02:25,863 Tak. 1296 01:02:25,863 --> 01:02:27,946 >> PUBLICZNOŚCI: Tak, jeśli tylko przechowywać go w zmiennej, 1297 01:02:27,946 --> 01:02:31,430 jak var x równa się sumie dwóch values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH Blumberg: Tak. 1299 01:02:32,420 --> 01:02:35,320 Więc może po prostu zrobić sumę var jest równa sumie dwóch wartości. 1300 01:02:35,320 --> 01:02:37,670 Tak. 1301 01:02:37,670 --> 01:02:38,680 Jakieś inne pytania? 1302 01:02:38,680 --> 01:02:39,642 Tak. 1303 01:02:39,642 --> 01:02:42,047 >> PUBLICZNOŚCI: Ale czy to mylić sumy i sumy? 1304 01:02:42,047 --> 01:02:45,062 Podobnie jak w przypadku zadzwonić do zmiennej kwoty, nazwałbyś sumę funkcji? 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 Jeżeli zrobiłeś coś jak, suma równa suma 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> PUBLICZNOŚCI: Tak. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: Wierzę, że by nadpisać wartość sumy. 1310 01:02:56,465 --> 01:02:59,290 Tak więc kolejny ciekawy rzeczą JavaScript 1311 01:02:59,290 --> 01:03:02,950 jest to, że pojedyncza zmienna może mieć na kilka różnych typów. 1312 01:03:02,950 --> 01:03:03,790 Zła praktyka. 1313 01:03:03,790 --> 01:03:06,280 Nie powinno się coś zrobić jak to, co właśnie powiedział. 1314 01:03:06,280 --> 01:03:10,240 >> Ale w C, jeśli i jest ustawiony równa liczbie całkowitej, 1315 01:03:10,240 --> 01:03:13,570 wiemy, że nigdy nie jest stanie się ciąg. 1316 01:03:13,570 --> 01:03:15,670 To nie jest w JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Tak, dobre pytanie. 1318 01:03:17,770 --> 01:03:20,151 Cokolwiek innego? 1319 01:03:20,151 --> 01:03:20,650 W porządku. 1320 01:03:20,650 --> 01:03:21,850 Robi wszystko na czas. 1321 01:03:21,850 --> 01:03:23,050 Utrzymanie dzieje. 1322 01:03:23,050 --> 01:03:25,200 W porządku. 1323 01:03:25,200 --> 01:03:27,780 >> Jeśli spojrzymy na tablicy w JavaScript, tutaj 1324 01:03:27,780 --> 01:03:30,250 szybkie przykładem tablicy ciągów. 1325 01:03:30,250 --> 01:03:31,967 I tablice mogą rozwijać się dynamicznie. 1326 01:03:31,967 --> 01:03:33,675 Oni nie mają stałym rozmiarze w ten sam sposób 1327 01:03:33,675 --> 01:03:37,990 że robią w C. Możemy uzyskać dostęp do elementy z zaledwie nawiasach kwadratowych. 1328 01:03:37,990 --> 01:03:41,720 >> To wygląda trochę jak PHP i wiele jak C, w której można powiedzieć, w tym przypadku, 1329 01:03:41,720 --> 01:03:48,360 gdybym chciał słowo JavaScript, chciałbym nie arr nawiasów kwadratowych z 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 A potem, jeśli pamiętać w C kiedy chciał, aby uzyskać długość tablicy, 1332 01:03:55,390 --> 01:03:56,820 to było naprawdę denerwujące. 1333 01:03:56,820 --> 01:03:58,460 Ale w JavaScript, super łatwy. 1334 01:03:58,460 --> 01:03:59,910 Wszystko co robimy, .length. 1335 01:03:59,910 --> 01:04:01,120 Daje jej długości. 1336 01:04:01,120 --> 01:04:01,892 To jest. 1337 01:04:01,892 --> 01:04:03,140 >> PUBLICZNOŚCI: To proste. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Tak, sprawia, Twoje życie o wiele łatwiejsze. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, nie object-- tam. 1341 01:04:11,560 --> 01:04:15,480 Obiekty w dotyku JavaScript dużo jak elemencie w C 1342 01:04:15,480 --> 01:04:18,280 i tablice asocjacyjne w PHP. 1343 01:04:18,280 --> 01:04:20,270 Więc to, co widziałem Wiele jest JSON, które 1344 01:04:20,270 --> 01:04:23,150 oznacza JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 I to w zasadzie sposobem od ukształtowania naszych danych. 1346 01:04:25,550 --> 01:04:27,880 >> Zobaczmy więc, przykład, chyba najprostszy. 1347 01:04:27,880 --> 01:04:32,540 Tak oto przykład obiektu która przechowuje klasę, CS50. 1348 01:04:32,540 --> 01:04:37,790 I kiedy mówię klasy, mam na myśli oczywiście, Nie like-- tak, kurs, CS50. 1349 01:04:37,790 --> 01:04:40,730 I zobaczysz, że wszystko w obiekcie 1350 01:04:40,730 --> 01:04:43,526 będzie zawierał w nawiasy. 1351 01:04:43,526 --> 01:04:48,260 >> I zaczynamy kojarzyć nazwy pól lub klawisze z różnymi wartościami. 1352 01:04:48,260 --> 01:04:52,920 Więc można rozpocząć, aby zobaczyć, jak ten rodzaj czuje się jak tablicy asocjacyjnej w PHP. 1353 01:04:52,920 --> 01:04:57,450 Tak więc mamy zamiar powiązać pole lub nazwa klawisza, oczywiście z ciągiem, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> My będziemy mieć instruktora. 1356 01:04:59,940 --> 01:05:00,940 My będziemy mieć TFS. 1357 01:05:00,940 --> 01:05:05,240 My będziemy mieć wiele psets i będziemy mieć nagrane. 1358 01:05:05,240 --> 01:05:10,720 I jedna fajna rzecz, którą należy wszystkie te rzeczy mają różne typy, 1359 01:05:10,720 --> 01:05:12,020 i to jest całkowicie w porządku. 1360 01:05:12,020 --> 01:05:15,330 >> Jest dobrze do obiektu, w istocie to zapewne spodziewać dla obiektu 1361 01:05:15,330 --> 01:05:19,620 mieć połączenie strun oraz liczby i Boolean i tablice 1362 01:05:19,620 --> 01:05:23,420 i co tam jeszcze może chcą mieć wewnątrz obiektu. 1363 01:05:23,420 --> 01:05:28,570 I pamiętać, że te będą nazwy lub klucze, a następnie po prostu 1364 01:05:28,570 --> 01:05:30,300 ustawić go na równi z odrobiną okrężnicy. 1365 01:05:30,300 --> 01:05:32,015 >> PUBLICZNOŚCI: Co dokładnie JSON na myśli? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: Co JSON dokładnie ma na myśli? 1367 01:05:33,890 --> 01:05:36,470 JSON po prostu oznacza JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 To tylko sposób formatowania. 1369 01:05:38,430 --> 01:05:40,040 Tak. 1370 01:05:40,040 --> 01:05:41,800 Jest to sposób formatowania nasze dane. 1371 01:05:41,800 --> 01:05:43,620 >> W C, to konstrukcjom. 1372 01:05:43,620 --> 01:05:45,800 W PHP, to tablic asocjacyjnych. 1373 01:05:45,800 --> 01:05:47,120 W JavaScript, mamy obiektów. 1374 01:05:47,120 --> 01:05:48,969 >> PUBLICZNOŚCI: Tak CS50 to obiekt? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 jest obiekt w tym przypadku. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Teraz, w jaki sposób właściwie dostęp te pola lub zmienić te pola. 1378 01:05:57,880 --> 01:06:03,920 Na przykład, załóżmy, że zdecydowaliśmy, że chciałeś jeden mniej pset w tym semestrze. 1379 01:06:03,920 --> 01:06:06,300 Zamiast dziewięciu, jesteśmy po prostu będzie musiał osiem. 1380 01:06:06,300 --> 01:06:08,240 Jak to zmienić? 1381 01:06:08,240 --> 01:06:09,436 >> Och, niewłaściwy sposób. 1382 01:06:09,436 --> 01:06:11,060 Istnieją dwa sposoby, że możemy to zrobić. 1383 01:06:11,060 --> 01:06:13,490 Numer jeden jest z kropką Zapis i numer dwa 1384 01:06:13,490 --> 01:06:15,750 jest w notacji kwadratowego uchwytu. 1385 01:06:15,750 --> 01:06:19,720 Tak więc, na przykład, jeśli I chciał zmienić lub dostęp 1386 01:06:19,720 --> 01:06:26,820 pole psets w naszym obiekcie CS50, co bym zrobił to CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 więc nazwa obiektu kropką nazwa pola lub przycisku. 1388 01:06:30,770 --> 01:06:37,120 >> Bardzo podobnie, to jest dokładnie to, równoznaczne zrobić CS50, a następnie 1389 01:06:37,120 --> 01:06:42,050 w nawiasach kwadratowych, psets. 1390 01:06:42,050 --> 01:06:42,837 Chłodny? 1391 01:06:42,837 --> 01:06:44,298 Tak. 1392 01:06:44,298 --> 01:06:47,707 >> PUBLICZNOŚCI: Więc to jest JSON technicznie JavaScript nadal, 1393 01:06:47,707 --> 01:06:51,814 chociaż w psets mamy oddzielenia go [niesłyszalne]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: Jasne. 1395 01:06:52,730 --> 01:06:56,290 Więc pytanie brzmi, są JavaScript i JSON odpowiednik? 1396 01:06:56,290 --> 01:07:00,750 Więc JSON jest zapis, w zasadzie sposób, w jaki możemy napisać 1397 01:07:00,750 --> 01:07:02,700 obiekt z JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Więc oni nie są dokładnie takie same. 1399 01:07:05,190 --> 01:07:08,950 >> Powiedziałbym JavaScript, istnieje obiekty w JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON bierze te obiekty i drukuje je i wyświetla je 1401 01:07:12,590 --> 01:07:15,160 lub przechowuje je w miły sposób. 1402 01:07:15,160 --> 01:07:18,110 Więc nie jest to JSON programowania język sposób, że JavaScript jest. 1403 01:07:18,110 --> 01:07:20,900 To tylko zapis na nasze obiekty w JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Tak. 1405 01:07:21,400 --> 01:07:24,144 >> PUBLICZNOŚCI: Więc co dokładnie [Niesłyszalne] zakończyć? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: Jasne. 1407 01:07:25,060 --> 01:07:27,727 Więc to naprawdę nic nie robi. 1408 01:07:27,727 --> 01:07:28,935 Jest to po prostu sposób, aby uzyskać dostęp. 1409 01:07:28,935 --> 01:07:31,393 Więc powiedzmy, że chcemy zmienić liczba zestawów problemów 1410 01:07:31,393 --> 01:07:32,450 z dziewięciu do ośmiu. 1411 01:07:32,450 --> 01:07:34,383 Co możemy zrobić, to zrobić coś jak CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Tak, wielkie pytanie. 1414 01:07:39,400 --> 01:07:40,733 To jest po prostu pokazać, składni. 1415 01:07:40,733 --> 01:07:43,620 Faktycznie nie robić nic pożytecznego. 1416 01:07:43,620 --> 01:07:46,085 Jakiekolwiek pytania? 1417 01:07:46,085 --> 01:07:48,210 Przesuwanie w prawo wzdłuż. 1418 01:07:48,210 --> 01:07:51,960 >> Więc spójrzmy na szybki przykład jak JavaScript działa, bo powiedziałem ci go 1419 01:07:51,960 --> 01:07:55,170 robi te wszystkie fajne rzeczy i pozwala nam na zmianę stron internetowych. 1420 01:07:55,170 --> 01:07:56,970 Miejmy rzeczywiście zobaczyć go w akcji. 1421 01:07:56,970 --> 01:07:59,850 Więc weź, na przykład, plik HTML. 1422 01:07:59,850 --> 01:08:04,350 >> I co chcę skupić się na to ten konkretny znak, który znajduje się przycisk 1423 01:08:04,350 --> 01:08:06,182 o id search_button. 1424 01:08:06,182 --> 01:08:08,670 To właśnie na tej stronie. 1425 01:08:08,670 --> 01:08:10,690 Więc teraz zobaczmy, co możemy rzeczywiście zrobić. 1426 01:08:10,690 --> 01:08:12,560 >> Cóż, przypuszczam, kiedy Kliknięcie tego przycisku, 1427 01:08:12,560 --> 01:08:16,010 chcemy dokonać alert-- kliknąłeś przycisk. 1428 01:08:16,010 --> 01:08:17,840 Zobaczmy, jak możemy to zrobić. 1429 01:08:17,840 --> 01:08:23,869 Więc window.onload-- nie jest to coś że widziałeś w klasie, więc 1430 01:08:23,869 --> 01:08:26,180 Nie trzeba znać go do quizu. 1431 01:08:26,180 --> 01:08:33,660 Ale to w zasadzie mówi, OK, połączenie tej funkcji, gdy ładunki okno. 1432 01:08:33,660 --> 01:08:35,080 >> Więc to tylko rodzaj kodu instalacyjnego. 1433 01:08:35,080 --> 01:08:36,390 Nie martw się tak bardzo o tym. 1434 01:08:36,390 --> 01:08:39,170 Co chcę skupić się na to tutaj. 1435 01:08:39,170 --> 01:08:44,020 Mówimy var Searchbutton równa document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Tak jak można się domyślać, co to robi, to mówi, 1437 01:08:46,450 --> 01:08:50,920 OK, znajdź element z ID search_button. 1438 01:08:50,920 --> 01:08:52,790 A teraz mamy, że właściwy element i jestem 1439 01:08:52,790 --> 01:08:56,279 będzie przechowywać go w Zmienna Searchbutton. 1440 01:08:56,279 --> 01:09:00,651 A teraz możemy właściwie wykorzystać ten element i zmienić go lub dostępu do jej wartości, 1441 01:09:00,651 --> 01:09:01,359 Rzeczy jak te. 1442 01:09:01,359 --> 01:09:04,649 Możemy zacząć się zaangażować się na stronie internetowej. 1443 01:09:04,649 --> 01:09:10,330 >> Więc mówię: OK, teraz, że mam ten przycisk, po jego kliknięciu, 1444 01:09:10,330 --> 01:09:12,859 Nazywamy to anonimową funkcję. 1445 01:09:12,859 --> 01:09:16,811 Tak to jest, gdy anonimowy funkcje stają się przydatne. 1446 01:09:16,811 --> 01:09:18,060 A co robi funkcja zrobić? 1447 01:09:18,060 --> 01:09:20,529 Cóż, to po prostu nazywa to funkcją ostrzegania i mówi, 1448 01:09:20,529 --> 01:09:22,910 kliknąłeś przycisk Szukaj. 1449 01:09:22,910 --> 01:09:29,670 >> Więc co się stanie, jeśli pójdę tam, gdzie mieszka w tym HTML i kliknij przycisk, 1450 01:09:29,670 --> 01:09:33,729 Wezmę ochotę trochę alert które mówi, że klikniesz przycisk. 1451 01:09:33,729 --> 01:09:40,710 Więc rzeczy, aby skupić się na here-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 dostaje szczególności HTML element o określonym ID. 1453 01:09:44,960 --> 01:09:48,529 A teraz możemy ustawić co powinno się zdarzyć, gdy 1454 01:09:48,529 --> 01:09:50,702 że dany element jest kliknięty. 1455 01:09:50,702 --> 01:09:52,670 >> PUBLICZNOŚCI: Musimy umieścić wszystkie, że? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg: Słucham? 1457 01:09:53,162 --> 01:09:55,130 >> PUBLICZNOŚCI: Czy musimy fizycznie zakodować wszystko to? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: Czy musimy fizycznie zakodować wszystko to? 1459 01:09:56,340 --> 01:09:56,839 Tak. 1460 01:09:56,839 --> 01:09:58,120 Czy nie jest to trochę denerwujące? 1461 01:09:58,120 --> 01:10:00,032 Jest dużo kodu. 1462 01:10:00,032 --> 01:10:01,574 >> PUBLICZNOŚCI: Można importować coś. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: Racja. 1464 01:10:02,532 --> 01:10:03,610 Możemy użyć czegoś. 1465 01:10:03,610 --> 01:10:08,140 A w szczególności do: och, to mówią mi, że muszę nauczyć sekcji. 1466 01:10:08,140 --> 01:10:11,061 W szczególności, niech korzystania z biblioteki jQuery, 1467 01:10:11,061 --> 01:10:13,060 dlatego, że było naprawdę długo i naprawdę denerwujące 1468 01:10:13,060 --> 01:10:16,860 i chcę, aby być w stanie je uprościć i sprawiają, że krótsze i łatwiejsze do napisania. 1469 01:10:16,860 --> 01:10:19,810 >> Więc jQuery jest biblioteką JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Więc JavaScript jest programowanie język; jQuery jest biblioteką. 1471 01:10:24,930 --> 01:10:27,190 A to sprawia, że ​​kilka rzeczy łatwiejszych. 1472 01:10:27,190 --> 01:10:33,230 To sprawia, że ​​zmienia się i dzieje w dokument HTML jest znacznie łatwiejsze. 1473 01:10:33,230 --> 01:10:35,030 >> To sprawia, że ​​wydarzenia obsługi łatwiejsze. 1474 01:10:35,030 --> 01:10:37,580 To sprawia, że ​​animacji łatwiejsze a to sprawia, Ajax łatwiejsze. 1475 01:10:37,580 --> 01:10:40,140 Warto więc przejść do dwóch te rzeczy w tej chwili. 1476 01:10:40,140 --> 01:10:40,900 Przepraszam. 1477 01:10:40,900 --> 01:10:42,620 Zanim to zrobimy, niektóre Podstawowa składnia. 1478 01:10:42,620 --> 01:10:46,870 >> To jest to, co najbardziej zwraca się do biblioteki jQuery wyglądać. 1479 01:10:46,870 --> 01:10:50,520 Używamy tego dolara sign-- śladu połączenia PHP, 1480 01:10:50,520 --> 01:10:56,030 tylko inconvenient-- nazwa Przełącznik, kropka, a następnie działanie. 1481 01:10:56,030 --> 01:10:58,860 Zobaczmy więc, niektóre konkretne przykłady, które. 1482 01:10:58,860 --> 01:11:02,980 >> Więc to rzeczywiście jest takie samo Kod z zjeżdżalnią zdarzeń. 1483 01:11:02,980 --> 01:11:08,740 Więc tak długo, brzydkie rzeczy staje się to o wiele ładniejsze, mniejsze rzeczy. 1484 01:11:08,740 --> 01:11:10,370 Więc spróbujmy podzielenie go. 1485 01:11:10,370 --> 01:11:17,090 Mówi to, OK, jQuery-- ten dolar sign-- jQuery, znajdź mi okno. 1486 01:11:17,090 --> 01:11:18,480 Więc to jest przełącznik. 1487 01:11:18,480 --> 01:11:21,800 >> Po załadowaniu wywołać tę funkcję. 1488 01:11:21,800 --> 01:11:23,880 Więc to wszystko w środku. 1489 01:11:23,880 --> 01:11:24,380 OK. 1490 01:11:24,380 --> 01:11:25,740 Jak na razie dobrze? 1491 01:11:25,740 --> 01:11:26,750 W porządku. 1492 01:11:26,750 --> 01:11:32,970 >> Teraz, jQuery, znajdź mnie na Rzecz z ID search_button. 1493 01:11:32,970 --> 01:11:36,090 A co na niego kliknie, wywołać tę funkcję. 1494 01:11:36,090 --> 01:11:37,900 I wtedy ta funkcja dokładnie taki sam. 1495 01:11:37,900 --> 01:11:41,052 Wystarczy zrobić trochę ostrzegania, kliknąłeś przycisk Szukaj. 1496 01:11:41,052 --> 01:11:42,650 >> Więc to jest naprawdę miłe. 1497 01:11:42,650 --> 01:11:46,260 To naprawdę skrapla się i upraszcza nasz kod. 1498 01:11:46,260 --> 01:11:49,030 Skąd wiem, że to ID search_button 1499 01:11:49,030 --> 01:11:50,960 i nie podoba klasy search_button? 1500 01:11:50,960 --> 01:11:52,024 >> PUBLICZNOŚCI: Hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Tak. 1502 01:11:52,940 --> 01:11:56,450 Ten symbol krzyżyka, to tak jak CSS. 1503 01:11:56,450 --> 01:12:00,080 Więc pamiętaj, CSS, kiedy chciał wybrać coś przez ID, 1504 01:12:00,080 --> 01:12:01,590 wykorzystano znak funta. 1505 01:12:01,590 --> 01:12:05,400 I kiedy chcieliśmy, aby wybrać coś na klasy, używamy kropki. 1506 01:12:05,400 --> 01:12:06,870 Świetny. 1507 01:12:06,870 --> 01:12:08,230 Mieć sens? 1508 01:12:08,230 --> 01:12:11,500 Więc jQuery ma po prostu uczynić nasze życie łatwiejszym. 1509 01:12:11,500 --> 01:12:12,000 Tak. 1510 01:12:12,000 --> 01:12:15,660 >> PUBLICZNOŚCI: Więc jestem trochę zdezorientowany do tego, jak działa funkcja anonimowa. 1511 01:12:15,660 --> 01:12:19,027 Czy można nazwać ten Anonymouse Funkcja, funkcjonować? 1512 01:12:19,027 --> 01:12:20,594 Jak to się nazywa? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: Jasne. 1514 01:12:21,510 --> 01:12:25,812 Tak więc funkcja jest tylko słowo kluczowe mówi, jestem o zdefiniować funkcję. 1515 01:12:25,812 --> 01:12:26,520 PUBLICZNOŚCI: Och, OK. 1516 01:12:26,520 --> 01:12:27,353 HANNAH Blumberg: OK? 1517 01:12:27,353 --> 01:12:32,120 A potem przekazać go jako Argument to-- rzućmy 1518 01:12:32,120 --> 01:12:37,040 ta wewnętrzna jedno- z funkcją click. 1519 01:12:37,040 --> 01:12:39,420 Więc tak, więc tej funkcji, to anonimowa funkcja, 1520 01:12:39,420 --> 01:12:40,910 staje się prawdziwym argumentem. 1521 01:12:40,910 --> 01:12:43,632 Więc pamiętaj w JavaScript, mamy można traktować jako wartości funkcji. 1522 01:12:43,632 --> 01:12:44,340 PUBLICZNOŚCI: Och, OK. 1523 01:12:44,340 --> 01:12:45,256 HANNAH Blumberg: Tak. 1524 01:12:45,256 --> 01:12:46,035 Lubię to "och". 1525 01:12:46,035 --> 01:12:47,490 Miły. 1526 01:12:47,490 --> 01:12:49,915 Inne pytania? 1527 01:12:49,915 --> 01:12:50,505 Czas? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Dobra. 1529 01:12:51,380 --> 01:12:52,760 Dobry. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Niektóre szybkie przydatne jQuery. 1532 01:12:55,720 --> 01:12:57,559 Nie zamierzam iść przez wszystkie z nich. 1533 01:12:57,559 --> 01:12:59,350 Prowadnice zostanie się online, trochę 1534 01:12:59,350 --> 01:13:02,040 później, więc można sprawdzić to się trochę później. 1535 01:13:02,040 --> 01:13:07,120 Ale w zasadzie, ogólne wzór posiada w których możemy powiedzieć, 1536 01:13:07,120 --> 01:13:11,510 OK, hej, jQuery, tu jest mój selekcyjny i to tu jest akcja. 1537 01:13:11,510 --> 01:13:15,940 I można robić takie rzeczy jak dostęp do Wartość forma, dostęp niektóre HTML, 1538 01:13:15,940 --> 01:13:19,195 kontrola tego, co się dzieje, gdy użytkownik złoży formularz, takie rzeczy. 1539 01:13:19,195 --> 01:13:20,106 Tak. 1540 01:13:20,106 --> 01:13:22,090 >> PUBLICZNOŚCI: Więc w egzamin, będziemy potrzebować 1541 01:13:22,090 --> 01:13:25,066 dowiedzieć się sporo od dokumentacja jQuery. 1542 01:13:25,066 --> 01:13:31,018 Tak więc biorąc pod uwagę, że kopiuj / wklej w jQuery Dokumentacja do naszej ściągawki, 1543 01:13:31,018 --> 01:13:32,506 gdzie jest linia wyciągnąć? 1544 01:13:32,506 --> 01:13:33,957 Podobnie jak, ile potrzebujemy wiedzieć? 1545 01:13:33,957 --> 01:13:35,290 HANNAH Blumberg: Świetne pytanie. 1546 01:13:35,290 --> 01:13:37,765 Pytanie brzmi zasadniczo skoro Ciebie 1547 01:13:37,765 --> 01:13:41,330 nie może uzyskać dostęp do dokumentacji jQuery podczas testu, ile należy 1548 01:13:41,330 --> 01:13:41,830 wiedzieć? 1549 01:13:41,830 --> 01:13:45,540 Nie można oczekiwać, aby przyjść z jakimś losowym funkcji 1550 01:13:45,540 --> 01:13:47,240 Oczekujemy, że do Google. 1551 01:13:47,240 --> 01:13:52,930 >> Rzeczy, które są uczciwa gra to chciałbym powiedzieć tylko rodzaj ogólnej składni, 1552 01:13:52,930 --> 01:13:58,310 jest możliwość wyboru przez ID i przez class-- tak jak CSS. 1553 01:13:58,310 --> 01:14:01,876 A następnie rzeczywiste funkcje samym sobą, będziemy prawdopodobnie powiedzieć. 1554 01:14:01,876 --> 01:14:02,376 Tak. 1555 01:14:02,376 --> 01:14:05,591 >> PUBLICZNOŚCI: Więc kiedy wybrać przez klasy oznaczałoby kropkę. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Tak, dokładnie. 1557 01:14:06,840 --> 01:14:07,340 Dobry. 1558 01:14:07,340 --> 01:14:10,461 Po wybraniu przez klasy, to będzie być kropka zamiast krzyżyka. 1559 01:14:10,461 --> 01:14:10,960 Tak. 1560 01:14:10,960 --> 01:14:12,710 >> PUBLICZNOŚCI: Mógłbyś przejść różnicy 1561 01:14:12,710 --> 01:14:14,310 między wybraniu przez ID i klasy? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: Jasne. 1563 01:14:14,560 --> 01:14:17,510 Różnica pomiędzy wybierania ID oraz wybranie przez klasy. 1564 01:14:17,510 --> 01:14:20,685 Tak jak Maria powiedział Trochę wcześniej, 1565 01:14:20,685 --> 01:14:26,280 może być tylko jeden element HTML z danym ID, podczas gdy klasie 1566 01:14:26,280 --> 01:14:29,740 pozwala nam grupy banda różnych elementów razem, 1567 01:14:29,740 --> 01:14:34,300 więc rzeczy, które są związane, ale nie dokładnie takie same. 1568 01:14:34,300 --> 01:14:35,685 Czy to odpowiedź na pytanie? 1569 01:14:35,685 --> 01:14:36,200 Niesamowite. 1570 01:14:36,200 --> 01:14:37,194 Tak. 1571 01:14:37,194 --> 01:14:40,680 >> PUBLICZNOŚCI: Co zrobić, jeśli masz wiele rzeczy, które są w tej samej klasie? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Co się dzieje jeśli masz wiele rzeczy, które 1573 01:14:42,150 --> 01:14:43,280 są tej samej klasy? 1574 01:14:43,280 --> 01:14:45,829 Tak więc, na przykład, gdy jesteśmy tylko przy użyciu czystego JavaScript, 1575 01:14:45,829 --> 01:14:48,120 chcemy zrobić coś takiego document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 I co wtedy, że faktycznie robi to zwraca tablicę elementów. 1578 01:14:56,320 --> 01:14:59,517 >> I trzeba albo iteracyjnego je lub znaleźć których jeden chcesz. 1579 01:14:59,517 --> 01:15:01,350 To nie da Ci pojedynczy element. 1580 01:15:01,350 --> 01:15:03,450 To się daje szereg elementów. 1581 01:15:03,450 --> 01:15:05,280 Świetne pytanie. 1582 01:15:05,280 --> 01:15:07,700 Cokolwiek innego? 1583 01:15:07,700 --> 01:15:09,520 Niesamowite. 1584 01:15:09,520 --> 01:15:12,860 >> Więc myślę, że jeśli jesteś zaznajomiony z dowolny jQuery obejrzałeś w pset, 1585 01:15:12,860 --> 01:15:15,600 powinno być dobrze iść. 1586 01:15:15,600 --> 01:15:16,325 Pytanie? 1587 01:15:16,325 --> 01:15:17,610 O nie. 1588 01:15:17,610 --> 01:15:18,859 Naprawdę muszę nauczyć. 1589 01:15:18,859 --> 01:15:19,358 Zrelaksować się. 1590 01:15:19,358 --> 01:15:20,035 Będzie dobrze. 1591 01:15:20,035 --> 01:15:20,660 Będę tam dostać. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Porozmawiajmy o Ajax. 1594 01:15:26,870 --> 01:15:31,350 Więc Ajax będzie A-- dobrze, zacznijmy od tego, co to oznacza. 1595 01:15:31,350 --> 01:15:32,350 To skrót. 1596 01:15:32,350 --> 01:15:35,855 To oznacza Asynchronous JavaScript i XML. 1597 01:15:35,855 --> 01:15:39,800 I XML jest w zasadzie będzie [Niesłyszalne] w rodzaju naszych danych. 1598 01:15:39,800 --> 01:15:42,100 Ale nie faktycznie wykorzystane XML. 1599 01:15:42,100 --> 01:15:43,430 Zamiast tego, po prostu używać JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Tak w zasadzie, to niektóre data-- asynchroniczny, JavaScript, oraz dane, 1601 01:15:48,350 --> 01:15:50,040 w tym przypadku, JSON. 1602 01:15:50,040 --> 01:15:52,820 A naszym celem, jak wspomniano nieco wcześniej, 1603 01:15:52,820 --> 01:15:56,880 jest w stanie dokonać wniosek, nie, że wniosek nie 1604 01:15:56,880 --> 01:16:00,700 jego rzecz, w tło, ale nadal 1605 01:16:00,700 --> 01:16:02,550 robić co byliśmy zamierza zrobić. 1606 01:16:02,550 --> 01:16:06,650 I wtedy, gdy informacje te są gotowy, to my go włączyć. 1607 01:16:06,650 --> 01:16:08,470 >> Zobaczmy więc, co to faktycznie wygląda. 1608 01:16:08,470 --> 01:16:11,210 A to, powinno być trochę zna 1609 01:16:11,210 --> 01:16:13,680 z pset8, ten po prostu zagrał. 1610 01:16:13,680 --> 01:16:16,200 Więc tu jest ważne jQuery Funkcja, które może 1611 01:16:16,200 --> 01:16:18,250 Chcesz wiedzieć about-- tym znakiem dolara. 1612 01:16:18,250 --> 01:16:21,500 Tak mówi funkcji jQuery, .getJSON. 1613 01:16:21,500 --> 01:16:25,020 >> A co ta funkcja nie jest to trwa URL i trochę parameters-- 1614 01:16:25,020 --> 01:16:28,000 więc myślę, że w przypadku z pset8, to było jak, 1615 01:16:28,000 --> 01:16:33,520 URL był articles.php i Parametry było go = jakiś kod pocztowy. 1616 01:16:33,520 --> 01:16:41,580 I mówi, OK, może złożyć do ten adres URL z podanymi parametrami. 1617 01:16:41,580 --> 01:16:43,480 I to właśnie się dzieje. 1618 01:16:43,480 --> 01:16:47,730 >> Po jej zakończeniu, to albo zamiar ukończyć 1619 01:16:47,730 --> 01:16:49,370 czy to się nie uda. 1620 01:16:49,370 --> 01:16:53,480 Tak więc jest to odpowiednik połączenia Rob i poprosić go, aby coś zrobić. 1621 01:16:53,480 --> 01:17:00,260 A potem, kiedy oddzwania, jest albo powie skończę i nie udało mi się. 1622 01:17:00,260 --> 01:17:04,030 >> Tak więc w przypadku, gdy jesteś zrobione, można powiedzieć, OK, skończę. 1623 01:17:04,030 --> 01:17:05,980 A następnie wywołać tę funkcję. 1624 01:17:05,980 --> 01:17:08,915 W tym przypadku, to będzie Funkcja, która ma pewne informacje. 1625 01:17:08,915 --> 01:17:12,890 Ten, zwykle dbają o to dane, dane, które były faktycznie zwrócone 1626 01:17:12,890 --> 01:17:15,900 w wyniku dzwoniąc .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> I można coś z tym zrobić. 1628 01:17:17,470 --> 01:17:23,670 Tak więc w przypadku pset8, my wyświetlane jako listy. 1629 01:17:23,670 --> 01:17:29,050 Fail będzie funkcją które nazywa się, jeżeli wniosek nie 1630 01:17:29,050 --> 01:17:30,450 z jakiegokolwiek powodu. 1631 01:17:30,450 --> 01:17:35,104 I w przypadku pset8, po prostu console.log go. 1632 01:17:35,104 --> 01:17:36,020 Wszelkie pytania na ten temat? 1633 01:17:36,020 --> 01:17:36,300 Tak. 1634 01:17:36,300 --> 01:17:39,633 >> PUBLICZNOŚCI: Czy możemy po prostu użyć funkcji theta zamiast funkcji, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: Jasne. 1637 01:17:44,380 --> 01:17:46,713 Więc tak, myślę, że w pset, po prostu zobaczył danych funkcji. 1638 01:17:46,713 --> 01:17:48,700 Więc to tylko the-- tak, OK. 1639 01:17:48,700 --> 01:17:50,510 To, co widzieliśmy w pset. 1640 01:17:50,510 --> 01:17:51,480 To jest całkowicie w porządku. 1641 01:17:51,480 --> 01:17:54,210 >> Są to tylko jeśli chcesz wyciągnąć więcej informacji, 1642 01:17:54,210 --> 01:17:57,190 to są rzeczy, które można uzyskać od .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Dobre pytanie. 1644 01:17:59,040 --> 01:17:59,706 Cokolwiek innego? 1645 01:17:59,706 --> 01:18:00,206 Tak. 1646 01:18:00,206 --> 01:18:01,787 >> PUBLICZNOŚCI: Tak .getJSON jest Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH Blumberg: OK. 1648 01:18:02,620 --> 01:18:05,700 Jest to więc rodzaj skomplikowanej części. 1649 01:18:05,700 --> 01:18:12,390 Jest to funkcja, która pozwala jQuery można zrobić połączeń asynchronicznych. 1650 01:18:12,390 --> 01:18:16,080 A te asynchroniczne wywołania, to co my na myśli, jak Ajax. 1651 01:18:16,080 --> 01:18:16,850 Tak. 1652 01:18:16,850 --> 01:18:20,185 To zajęło mi bardzo dużo czasu rozerwać, kiedy byłem studentem. 1653 01:18:20,185 --> 01:18:21,560 PUBLICZNOŚCI: Czy możesz powiedzieć, że jeszcze raz? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Tak. 1655 01:18:22,476 --> 01:18:23,630 Mogę powiedzieć, że jeszcze raz? 1656 01:18:23,630 --> 01:18:29,010 Ta funkcja .getJSON, jest to funkcja jQuery. 1657 01:18:29,010 --> 01:18:31,970 I to się dzieje, aby asynchroniczne wywołanie. 1658 01:18:31,970 --> 01:18:35,700 I te asynchroniczne wywołania, mamy odnosił się do tych, jak Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Jakieś inne pytania? 1661 01:18:41,872 --> 01:18:43,330 Mamy tylko kilka pozostawionych minut. 1662 01:18:43,330 --> 01:18:45,080 I Maria ma zamiar wrap z bezpieczeństwem 1663 01:18:45,080 --> 01:18:47,464 a następnie jedziemy do prawie zrobione. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Awesome, OK. 1665 01:18:48,630 --> 01:18:54,030 Więc to jest-- prostu potrwać kilka sekund patrzeć na to. 1666 01:18:54,030 --> 01:18:56,750 I nie jest to coś naprawdę super. 1667 01:18:56,750 --> 01:18:59,430 A może ktoś mi powiedzieć dlaczego? 1668 01:18:59,430 --> 01:19:05,650 Co dzieje się w foo i może mogłem potencjalnie spowodować coś złego, 1669 01:19:05,650 --> 01:19:06,770 i co to się nazywa? 1670 01:19:06,770 --> 01:19:07,270 Tak. 1671 01:19:07,270 --> 01:19:10,391 PUBLICZNOŚCI: Jeśli argument, że to uchwalona w więcej niż 12 znaków, 1672 01:19:10,391 --> 01:19:11,454 może przepełnić. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Racja. 1674 01:19:12,370 --> 01:19:14,180 Doskonały. 1675 01:19:14,180 --> 01:19:15,384 Jak to jest nazywane? 1676 01:19:15,384 --> 01:19:16,300 Po prostu o tym wspomniałem. 1677 01:19:16,300 --> 01:19:16,840 >> PUBLICZNOŚCI: Przepełnienie bufora. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Tak, buffer overflow. 1679 01:19:18,381 --> 01:19:21,230 Więc to jest coś, czego patrz jak przepełnienia bufora. 1680 01:19:21,230 --> 01:19:25,500 I widzimy, że wnętrze foo, mamy zdefiniowane naszego bufora, C, 1681 01:19:25,500 --> 01:19:27,240 o wielkości 12. 1682 01:19:27,240 --> 01:19:32,680 Jednak w głównym, nie robimy sprawdź w jakikolwiek sposób w ogóle 1683 01:19:32,680 --> 01:19:36,480 czy argv1-- tak, że był drugi argument. 1684 01:19:36,480 --> 01:19:39,630 Nie sprawdzamy, czy Rozmiar tego jest właściwe. 1685 01:19:39,630 --> 01:19:43,380 >> Więc jeśli mieliśmy szczególnie szkodliwy użytkownik 1686 01:19:43,380 --> 01:19:47,170 którzy umieścić w jakimś argumentem, który był dłużej niż 12, a następnie potencjalnie 1687 01:19:47,170 --> 01:19:50,850 poza granice, które Argument, miał jakiś kod wykonywalny 1688 01:19:50,850 --> 01:19:55,570 że próbuje zrobić coś złego z tym; to ten, co by się stało, 1689 01:19:55,570 --> 01:19:59,310 unieważnia powrót adres funkcji foo, 1690 01:19:59,310 --> 01:20:04,370 powodując funkcji, kiedy powrót do wykonania tego kodu. 1691 01:20:04,370 --> 01:20:07,540 A potem złych rzeczy może się zdarzyć. 1692 01:20:07,540 --> 01:20:09,850 Czy to ma sens dla każdego? 1693 01:20:09,850 --> 01:20:12,424 >> I jak możemy chronić się przed tym? 1694 01:20:12,424 --> 01:20:13,090 Jakieś sugestie? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Zasadniczo, wewnątrz potencjalnie bla, jak 1697 01:20:21,890 --> 01:20:28,294 możemy sprawdzić, czy że to nie może się zdarzyć? 1698 01:20:28,294 --> 01:20:33,879 >> PUBLICZNOŚCI: Jeśli rozmiar 12 jest przekroczony, będzie można przydzielić więcej pamięci? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Sugestia jest przydzielenie Dodatkowa pamięć o rozmiarze przekroczona. 1700 01:20:37,170 --> 01:20:39,800 Faktycznie, możemy zrobić coś dużo prostsze niż to, jak również. 1701 01:20:39,800 --> 01:20:44,870 Możemy po prostu długość ciągu argumentu, że jest wpisany, 1702 01:20:44,870 --> 01:20:48,590 sprawdzić, czy to jest mniej lub równa 12-- 1703 01:20:48,590 --> 01:20:50,790 co jest, co chcemy, być, bo nie chcemy 1704 01:20:50,790 --> 01:20:52,373 to przekracza granice naszego bufora. 1705 01:20:52,373 --> 01:20:55,690 A jeśli nie, to może pracować z argumentem. 1706 01:20:55,690 --> 01:21:00,296 A jeśli tak, to rzeczywiście chcą do Yello potencjalnie użytkownika. 1707 01:21:00,296 --> 01:21:01,670 Ale jest to w jaki sposób to zrobić. 1708 01:21:01,670 --> 01:21:02,443 Tak. 1709 01:21:02,443 --> 01:21:04,360 >> PUBLICZNOŚCI: Mógłbyś wyjaśnić memcpy bardzo szybko? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, przepraszam. 1711 01:21:05,443 --> 01:21:06,040 Tak. 1712 01:21:06,040 --> 01:21:11,290 Memcpy trwa co jest-- przykro, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy bierze to, co jest w barze, co jest przekazywane 1714 01:21:15,850 --> 01:21:18,050 na foo jako argumentu wiersza poleceń. 1715 01:21:18,050 --> 01:21:19,440 Więc to zajmie argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 nazywa bar tutaj. 1717 01:21:21,420 --> 01:21:24,453 Więc to zajmie bar i to będzie skopiować go do c. 1718 01:21:24,453 --> 01:21:25,402 >> PUBLICZNOŚCI: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: I to będzie copy-- trzeci argument po prostu odnosi się 1720 01:21:28,360 --> 01:21:30,601 na ile to będzie skopiować do c. 1721 01:21:30,601 --> 01:21:31,142 PUBLICZNOŚCI: Ach. 1722 01:21:31,142 --> 01:21:33,030 Więc Ten jest kopiowanie wszystko to potem. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Tak, to kopiując wszystko. 1724 01:21:34,310 --> 01:21:34,810 Tak. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 Po pierwsze, upewnij się, że bar nie jest równa null, ponieważ jest to wskaźnik. 1727 01:21:41,910 --> 01:21:44,680 Następnie otrzymujemy ciąg długości paska. 1728 01:21:44,680 --> 01:21:47,530 Dbamy o to, że jest to mniejsze niż lub równe do 12. 1729 01:21:47,530 --> 01:21:50,070 A potem, ponieważ mamy upewnić się, możemy w rzeczywistości 1730 01:21:50,070 --> 01:21:53,122 memcpy i mieć pewność, że to jest OK. 1731 01:21:53,122 --> 01:21:53,705 Jakiekolwiek pytania? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Świetny. 1734 01:21:58,690 --> 01:22:00,400 Mam dwóch prawdziwych lub fałszywych pytania. 1735 01:22:00,400 --> 01:22:05,470 Może ktoś mi powiedzieć od razu czy są one prawdziwe czy fałszywe? 1736 01:22:05,470 --> 01:22:07,460 Tak, to jest fałszywe. 1737 01:22:07,460 --> 01:22:07,960 Dokładnie. 1738 01:22:07,960 --> 01:22:09,330 Obie z nich są fałszywe. 1739 01:22:09,330 --> 01:22:12,682 Tak więc za pomocą pojedynczego hasła nigdy nie jest naprawdę dobry pomysł 1740 01:22:12,682 --> 01:22:14,890 bo jeśli ktoś wie Twoje hasło, mogą po prostu 1741 01:22:14,890 --> 01:22:16,260 dostęp do wszystkich innych kont. 1742 01:22:16,260 --> 01:22:19,260 A następnie ikony zrobić nic w celu zapewnienia bezpieczeństwa. 1743 01:22:19,260 --> 01:22:24,900 Zazwyczaj powinniśmy szukać HTTPS Zamiast HTTP a URL. 1744 01:22:24,900 --> 01:22:28,560 >> I niektóre inne rodzaje Ataki, które już wspomnieliśmy, 1745 01:22:28,560 --> 01:22:31,390 Dawid wspomniał w wykład, ataki SQL injection. 1746 01:22:31,390 --> 01:22:37,310 Widzieliśmy już, że jeśli don't-- Funkcja zapytania CS50 zapewnia, że ​​SQL 1747 01:22:37,310 --> 01:22:39,530 ataki wtrysku nie może wystąpić. 1748 01:22:39,530 --> 01:22:42,640 Ale jeśli nie używali CS50, cytat, koniec cytatu "w kwerendzie" 1749 01:22:42,640 --> 01:22:46,830 trzeba by upewnić się, że Wejście użytkownik nie jest w rzeczywistości niektóre SQL 1750 01:22:46,830 --> 01:22:49,670 zapytań, które będą powodować wszystkie nasze stoły są porzucane 1751 01:22:49,670 --> 01:22:54,070 lub coś złego stanie z naszej bazy danych. 1752 01:22:54,070 --> 01:22:56,790 >> Sesja porwanie jest inny rodzaj ataku 1753 01:22:56,790 --> 01:23:05,940 że dzieje się, gdy złe osoba korzysta z sesji jakiegoś ofiary 1754 01:23:05,940 --> 01:23:08,740 ID, aby uzyskać dostęp do informacji logowania. 1755 01:23:08,740 --> 01:23:13,620 Tak bardzo trywialne przykładem jest jak, jeśli mamy z publicznego komputera, 1756 01:23:13,620 --> 01:23:21,120 to złe osoba loguje się, a następnie mają cookie, które są zapisane. 1757 01:23:21,120 --> 01:23:23,380 I ciasteczka nie zmieniają się na sesji. 1758 01:23:23,380 --> 01:23:27,620 >> Wtedy jesteśmy ofiarą iść a następnie zalogować się na stronie. 1759 01:23:27,620 --> 01:23:30,290 Ciasteczka nie zmieniają dla danej sesji. 1760 01:23:30,290 --> 01:23:33,060 A potem ofiara loguje się na stronie internetowej, a następnie odchodzi. 1761 01:23:33,060 --> 01:23:36,190 I wtedy osoba, która sięga może wówczas nadal korzystać z ich ID sesji 1762 01:23:36,190 --> 01:23:37,430 aby uzyskać dostęp do swoich danych. 1763 01:23:37,430 --> 01:23:40,050 Więc to jest jeden z przykładów Jak to się mogło stać. 1764 01:23:40,050 --> 01:23:45,570 >> I wtedy nie będę się zbytnio o określonym kodzie lub cokolwiek 1765 01:23:45,570 --> 01:23:49,270 tak, że może spowodować to, ale o jakiś pomysł, co 1766 01:23:49,270 --> 01:23:51,400 zmienne są zaangażowane w to. 1767 01:23:51,400 --> 01:23:53,897 A potem manipulowanie nagłówek Dane inny rodzaj ataku 1768 01:23:53,897 --> 01:23:55,230 że ma Dawid mówił o. 1769 01:23:55,230 --> 01:23:59,730 A to po prostu odnosi się do co może się zdarzyć, gdy 1770 01:23:59,730 --> 01:24:04,300 odpowiedź, HTTP Odpowiedź wewnątrz naszego nagłówka 1771 01:24:04,300 --> 01:24:05,720 nie jest odkażane prawidłowo. 1772 01:24:05,720 --> 01:24:14,340 >> I każdy z fields-- na przykład, Jeśli ktoś zastąpienie jednego nagłówka 1773 01:24:14,340 --> 01:24:18,860 Wartości zawierają nic poza co powinni contain-- i faktycznie 1774 01:24:18,860 --> 01:24:22,720 zawierać, na przykład, 200 OK, kod stanu, potem 1775 01:24:22,720 --> 01:24:26,890 potencjalnie może zrobić złośliwy rzeczy, gdy nie mają. 1776 01:24:26,890 --> 01:24:30,815 Ale nie przejmuj się wiele o określonym kodzie 1777 01:24:30,815 --> 01:24:34,110 które mogą powodować, właśnie rodzaj zrozumienia 1778 01:24:34,110 --> 01:24:37,290 wysokiego szczebla takie rzeczy. 1779 01:24:37,290 --> 01:24:39,570 >> Myślę, że to wszystko jest że mamy do pokrycia. 1780 01:24:39,570 --> 01:24:40,090 Niesamowity. 1781 01:24:40,090 --> 01:24:43,310 Ktoś ma jakieś pytania na temat dowolny z rzeczy, które pokryte? 1782 01:24:43,310 --> 01:24:44,213 Tak. 1783 01:24:44,213 --> 01:24:48,077 >> PUBLICZNOŚCI: Więc jeden rodzaj Więcej pytanie logistyczne. 1784 01:24:48,077 --> 01:24:53,400 Czy treść jest głównie koncentruje na rzeczy, po quizie 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: Tak Pytanie brzmi, jest zawartość 1786 01:24:55,730 --> 01:24:59,720 koncentruje się głównie na rzeczy po quizie 1? 1787 01:24:59,720 --> 01:25:06,070 Tak koncentruje się na po Test 1, z wyjątkiem 1788 01:25:06,070 --> 01:25:10,914 że musimy skupić się na rzeczy, w pset5 i wiele struktur danych 1789 01:25:10,914 --> 01:25:11,580 że objęte. 1790 01:25:11,580 --> 01:25:14,300 I nie możemy powiedzieć, że można pominąć niczego przed 1791 01:25:14,300 --> 01:25:17,120 że dlatego, że opiera się na nim również. 1792 01:25:17,120 --> 01:25:21,845 >> Tak więc skupić się na tym, a także materiały pset5 jak w tym związane listy, stosy, 1793 01:25:21,845 --> 01:25:23,720 kolejki i wszystko że Hannah podszedł. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: Racja. 1795 01:25:24,050 --> 01:25:27,450 Tak, poszliśmy nad całą C rzeczy na samym początku bardzo szybko. 1796 01:25:27,450 --> 01:25:29,090 Ale upewnij recenzję tego. 1797 01:25:29,090 --> 01:25:32,700 Wróć i oglądać recenzję Quiz 0. 1798 01:25:32,700 --> 01:25:36,110 >> Kilka notki więcej logistyczne, tylko, gdy mamy swoją uwagę. 1799 01:25:36,110 --> 01:25:39,100 Będziemy mieć dyżury zarówno w poniedziałek i wtorek w nocy. 1800 01:25:39,100 --> 01:25:41,540 Oni będzie w MD 119. 1801 01:25:41,540 --> 01:25:44,220 Wszystko to jest na stronie, tak jeśli nie słyszę, nie ma obaw. 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: Tak, 8:30 do 11:00. 1804 01:25:46,260 --> 01:25:46,910 Będziemy tam. 1805 01:25:46,910 --> 01:25:48,368 Będziemy tam, aby odpowiedzieć na pytania. 1806 01:25:48,368 --> 01:25:49,480 To całkiem zimny i zabawy. 1807 01:25:49,480 --> 01:25:53,240 Możecie zadać pytanie że masz na quizie 1. 1808 01:25:53,240 --> 01:25:55,740 A Quiz 1 jest Środa, więc powodzenia. 1809 01:25:55,740 --> 01:25:59,770 Jeśli masz jakieś pytania, może przyszedł porozmawiać z nas tu jeden-na-jeden. 1810 01:25:59,770 --> 01:26:00,880 Chłodny. 1811 01:26:00,880 --> 01:26:01,630 Dziękuję bardzo. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Wielkie dzięki, chłopaki. 1813 01:26:02,880 --> 01:26:03,480 >> PUBLICZNOŚCI: Strzelec. 1814 01:26:03,480 --> 01:26:05,930 >> [OKLASKI] 1815 01:26:05,930 --> 01:26:07,530