1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [MUZYKA GRY] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Cześć wszystkim. 5 00:00:12,700 --> 00:00:15,866 Dziękujemy wam bardzo za przybycie na w obrzydliwej pogody dla quizu jednym 6 00:00:15,866 --> 00:00:16,910 przeglądu sesji. 7 00:00:16,910 --> 00:00:20,020 Jak znacie, quizu jeden jest w środę. 8 00:00:20,020 --> 00:00:22,209 Tak więc mamy zamiar iść przez kilka tematów. 9 00:00:22,209 --> 00:00:24,000 DAVIN: Hej, mogę powiedzieć, coś bardzo szybko? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Tak, Davin dzieje powiedzieć coś naprawdę szybki. 11 00:00:25,215 --> 00:00:25,780 DAVIN: Przykro nam. 12 00:00:25,780 --> 00:00:29,490 Tylko bardzo szybko, jeśli masz pytania o quizie, możesz przejść do trybu online. 13 00:00:29,490 --> 00:00:32,420 Idź do 2.014 jednego sprawdzianu, o quizie. 14 00:00:32,420 --> 00:00:34,680 Jest tam logistykę o gdzie iść, kiedy iść. 15 00:00:34,680 --> 00:00:38,100 Jeśli jednocześnie zapisał, że jesteśmy będzie mieć quiz makijaż o 5:30. 16 00:00:38,100 --> 00:00:40,350 Albo jeśli wysłał mi problem, masz jakiś inny problem. 17 00:00:40,350 --> 00:00:42,640 Ale 5:30 jest makijaż Czas w środę. 18 00:00:42,640 --> 00:00:44,540 Ale jeśli masz pytania, ogólne pytania, 19 00:00:44,540 --> 00:00:45,748 online ma wszelkie logistyki. 20 00:00:45,748 --> 00:00:47,690 Więc sprawdzić tam pierwszy. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Niesamowite. 22 00:00:49,070 --> 00:00:53,030 Więc tutaj jest duża lista tematów które mamy zamiar iść do dzisiaj. 23 00:00:53,030 --> 00:00:57,390 Idę na pokrycie wszystkich C rzeczy, które jest, że pierwsza kolumna. 24 00:00:57,390 --> 00:01:00,710 Więc rzeczy, że C pokryte po quizie zera. 25 00:01:00,710 --> 00:01:05,459 Wychodząc z połączonej listy które zawiera wskazówki. 26 00:01:05,459 --> 00:01:07,668 >> W porządku, więc widzieliśmy to na ostatniej sesji przeglądarki, 27 00:01:07,668 --> 00:01:10,000 więc mam zamiar przejść przez jest to trochę szybciej. 28 00:01:10,000 --> 00:01:13,500 Wystarczy podnieść rękę, jeśli chcesz mnie spowolnić lub adres coś dalej. 29 00:01:13,500 --> 00:01:17,150 Ale używamy związane list, ponieważ rozpoczęliśmy w C z tablicami. 30 00:01:17,150 --> 00:01:20,920 A tablice są świetne, ale Problemem jest to, że posiada stałą wielkość. 31 00:01:20,920 --> 00:01:24,925 Połączone listy pozwalają nam na stworzenie dynamicznie wielkości struktur danych. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> A my mamy swoje podstawowe operacje, dodawania, usuwania i wyszukiwania. 34 00:01:32,320 --> 00:01:36,780 I możemy zrobić wkładkę Najgorszy przypadek stała czasowa 35 00:01:36,780 --> 00:01:39,140 jeśli po prostu umieścić ją na samym początku. 36 00:01:39,140 --> 00:01:45,220 Usuwania i wyszukiwania, najgorsze Sprawa duże oh czasu n. 37 00:01:45,220 --> 00:01:47,140 Więc jeszcze raz, po prostu odwrócić za pośrednictwem tych zdjęć, 38 00:01:47,140 --> 00:01:50,860 Wiem, widzieliśmy te ostatni raz, ale Aby śledzić naszej listy 39 00:01:50,860 --> 00:01:53,440 przez śledzenie Szef naszej listy. 40 00:01:53,440 --> 00:01:55,580 Ponieważ wiemy, że Każda z tych węzłów 41 00:01:55,580 --> 00:01:58,610 jest po prostu będzie wskazywać na następny węzeł w naszej listy. 42 00:01:58,610 --> 00:02:00,460 >> Tak to w jaki sposób śledzić. 43 00:02:00,460 --> 00:02:02,910 Mimo że nie są one ciągłe elementy pamięci, 44 00:02:02,910 --> 00:02:07,410 możemy znaleźć je tylko po różnych strzałki. 45 00:02:07,410 --> 00:02:09,800 Oto nasza struktura dla połączonego węzła listy. 46 00:02:09,800 --> 00:02:11,440 Widzieliśmy ten ostatni raz. 47 00:02:11,440 --> 00:02:13,080 Mamy węzeł struct. 48 00:02:13,080 --> 00:02:14,340 I to ma dwie właściwości. 49 00:02:14,340 --> 00:02:17,020 Numer jeden, rzeczywista Wartość chcemy zapisać. 50 00:02:17,020 --> 00:02:18,290 W tym przypadku jest to liczba całkowita. 51 00:02:18,290 --> 00:02:21,100 To może być łańcuch, to mógł być char, co chcesz. 52 00:02:21,100 --> 00:02:24,710 A potem, musimy śledzić następny węzeł w naszej listy. 53 00:02:24,710 --> 00:02:29,797 Tak, że będzie Wskaźnik do następnego węzła. 54 00:02:29,797 --> 00:02:31,880 Jeśli to było tylko Wyszukiwarka, jak powiedziałem wcześniej, 55 00:02:31,880 --> 00:02:34,900 trzeba by śledzić swoje strzałki w dół. 56 00:02:34,900 --> 00:02:40,720 Wstawiania, by śledzić gdzie reszta listy jest. 57 00:02:40,720 --> 00:02:44,150 I chcesz przekierować głowicę zwrócić się do naszego nowego elementu, który 58 00:02:44,150 --> 00:02:46,640 w tym przypadku jest on, a następnie będzie wskazać 59 00:02:46,640 --> 00:02:49,480 z pozostałą częścią połączonego listy. 60 00:02:49,480 --> 00:02:52,996 Więc znowu, wiem, że to jest trochę trochę powtórzyć od quizu zera. 61 00:02:52,996 --> 00:02:55,370 Tak więc musimy być bardzo ostrożni, o kolejności, w której 62 00:02:55,370 --> 00:03:00,390 robić te pointings więc nie stracić z tyłu listy. 63 00:03:00,390 --> 00:03:04,122 OK, wszelkie pytania z tylko pojedynczo związane listy? 64 00:03:04,122 --> 00:03:06,060 Niesamowite, OK, fajnie. 65 00:03:06,060 --> 00:03:09,410 >> Więc teraz mamy zamiar iść na coś tylko nieco bardziej skomplikowany 66 00:03:09,410 --> 00:03:10,920 podwójnie związany list. 67 00:03:10,920 --> 00:03:13,680 Tak więc oprócz utrzymania utwór z kolejnego węzła, 68 00:03:13,680 --> 00:03:16,220 Chcemy również, aby śledzić poprzedniego węzła. 69 00:03:16,220 --> 00:03:19,580 A to pozwala nam, czy jesteśmy w pewnym punkcie w naszej listy, 70 00:03:19,580 --> 00:03:23,110 nie tylko iść do przodu, ale również iteracji wstecznej. 71 00:03:23,110 --> 00:03:25,220 Bo jak widzieliśmy w pojedynczo związane listy, 72 00:03:25,220 --> 00:03:27,980 gdybyśmy byli w pewnym węźle, a nagle, zdecydowaliśmy, 73 00:03:27,980 --> 00:03:30,160 w rzeczywistości, chcę, aby przejść do prawy węzeł przede mną, 74 00:03:30,160 --> 00:03:32,034 trzeba by pójść na całość z powrotem do głowy 75 00:03:32,034 --> 00:03:35,710 i iteracji, aż znaleziono węzeł, czego szukasz. 76 00:03:35,710 --> 00:03:37,680 >> Więc to sprawia, że ​​rzeczy nieco łatwiejsze, ponieważ jesteśmy 77 00:03:37,680 --> 00:03:39,670 próbuje iteracji za pośrednictwem naszej listy. 78 00:03:39,670 --> 00:03:47,870 Ale to wymaga od nas, aby śledzić jednego więcej wskaźnik, więc jeszcze jeden węzeł gwiazdą. 79 00:03:47,870 --> 00:03:50,830 W porządku, więc tu pojawia się zabawa. 80 00:03:50,830 --> 00:03:55,600 Jedziemy do praktyki wdrażania usunąć za podwójnie związane list. 81 00:03:55,600 --> 00:03:58,660 Więc to jest coś, co jest całkowicie uczciwa gra quizu. 82 00:03:58,660 --> 00:04:00,750 To pojawił się na ostatnie konkursy. 83 00:04:00,750 --> 00:04:04,220 Więc na pewno być przygotowany kodować trochę w C 84 00:04:04,220 --> 00:04:07,900 Nie należy zapominać, że ze wszystkim to PHP i JavaScript, zabawy, 85 00:04:07,900 --> 00:04:10,560 wciąż mamy do zapamiętania zrobić C. Tak więc odświeżyć, że 86 00:04:10,560 --> 00:04:12,146 jeśli czujesz zardzewiałe. 87 00:04:12,146 --> 00:04:14,580 >> Dobrze, zobaczymy, czy możemy to zrobić. 88 00:04:14,580 --> 00:04:16,312 OK, fajnie. 89 00:04:16,312 --> 00:04:18,600 Tak więc mamy zamiar spróbować edytować prawo tutaj, 90 00:04:18,600 --> 00:04:20,707 i miejmy nadzieję, to idzie zgodnie z planem. 91 00:04:20,707 --> 00:04:23,915 Dobra, czy ktoś chce dać mi Sugestia, jak mam zacząć? 92 00:04:23,915 --> 00:04:27,030 Założenie, że jestem tylko Podejmowanie jest, że już 93 00:04:27,030 --> 00:04:30,180 nie struktury zdefiniowane, jeden pokazałem na ostatniej stronie, 94 00:04:30,180 --> 00:04:31,420 na ostatnim slajdzie. 95 00:04:31,420 --> 00:04:39,250 A ja przechowywania głowę mojego związane lista w jakiś wskaźnik zwany listę. 96 00:04:39,250 --> 00:04:42,190 Czy ktoś chce zaczynaj mi? 97 00:04:42,190 --> 00:04:45,410 >> PUBLICZNOŚCI: Czy można utworzyć nowy Węzeł zadzwonić listę? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Niesamowite, tak mamy zamiar stworzyć 99 00:04:46,410 --> 00:04:47,951 Nowy węzeł przedzierać się przez liście. 100 00:04:47,951 --> 00:04:48,570 To mi się podoba. 101 00:04:48,570 --> 00:04:50,799 Ja po prostu nazwać to wskaźnik, czy to jest OK. 102 00:04:50,799 --> 00:04:52,340 A gdzie powinien początkowo zacząć? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> PUBLICZNOŚCI: Prawdopodobnie w Szef listy. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Piękna. 106 00:05:00,590 --> 00:05:03,670 Chcemy, aby rozpocząć na czele, który Powiedziałem będzie przechowywane w liście. 107 00:05:03,670 --> 00:05:04,170 Niesamowite. 108 00:05:04,170 --> 00:05:05,220 Tak daleko, tak dobrze. 109 00:05:05,220 --> 00:05:08,260 A teraz, naszym celem jest iterację listy 110 00:05:08,260 --> 00:05:12,870 aż znajdziemy węzeł z wartość n, które chcemy usunąć. 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> Więc teraz jest część, gdzie chcemy iteracji. 113 00:05:15,910 --> 00:05:19,488 Czy ktoś może sugerować, sposób iteracji? 114 00:05:19,488 --> 00:05:20,979 >> PUBLICZNOŚCI: pętla. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: pętla. 116 00:05:21,840 --> 00:05:22,620 Kocham go. 117 00:05:22,620 --> 00:05:25,550 W szczególności, możemy spróbować pętli while. 118 00:05:25,550 --> 00:05:30,919 OK, a wiemy, że osiągnęliśmy koniec naszej listy, kiedy co? 119 00:05:30,919 --> 00:05:32,210 PUBLICZNOŚCI: Gdy wskazówka jest null. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Gdy wskazówka jest null. 121 00:05:33,418 --> 00:05:34,320 Piękne, kocham go. 122 00:05:34,320 --> 00:05:35,110 OK, fajnie. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Więc przepraszam, jeśli mój ograniczający klamra jest rodzaj spadającym ekranie. 125 00:05:43,190 --> 00:05:44,090 Przywieźliśmy ją z powrotem. 126 00:05:44,090 --> 00:05:46,610 OK, fajnie. 127 00:05:46,610 --> 00:05:48,690 Co dalej? 128 00:05:48,690 --> 00:05:51,950 >> Więc wiemy, że chcemy usunąć węzeł, który ma wartość n. 129 00:05:51,950 --> 00:05:56,340 Przeanalizujmy więc w przypadku, gdy faktycznie znaleźć nasz węzeł. 130 00:05:56,340 --> 00:05:57,840 Więc w jaki sposób mogę sprawdzić, że? 131 00:05:57,840 --> 00:06:02,210 Chcę tylko powiedzieć, że jeśli wskaźnik, a następnie, jeśli Aby uzyskać wartość na wskaźniku, 132 00:06:02,210 --> 00:06:08,940 Właśnie do arrow n, równa n, parametr 133 00:06:08,940 --> 00:06:14,490 że daliśmy do tej funkcji, węzeł, który chcemy rzeczywiście usunąć. 134 00:06:14,490 --> 00:06:17,090 Wszelkie pytania, aż tutaj? 135 00:06:17,090 --> 00:06:18,360 Dobrze. 136 00:06:18,360 --> 00:06:24,140 OK, więc teraz niech narysować szybki obraz na pokładzie w celu wizualizacji tego. 137 00:06:24,140 --> 00:06:30,710 >> Więc powiedzmy, że nasz piękny węzeł. 138 00:06:30,710 --> 00:06:34,480 I to ma wartość, powiem tylko cztery. 139 00:06:34,480 --> 00:06:40,340 I wskazuje na następne węzeł w naszej listy. 140 00:06:40,340 --> 00:06:42,220 I nie ma nic przed nim. 141 00:06:42,220 --> 00:06:45,800 Mamy więc nasz poprzedni wskazując na nic. 142 00:06:45,800 --> 00:06:48,110 W tym przypadku, to zwracamy tyłu. 143 00:06:48,110 --> 00:06:50,960 OK, po prostu skonfigurowaniu powiązane listę tutaj. 144 00:06:50,960 --> 00:06:53,630 A mamy listę, która wskazuje Dzięki takiej konstrukcji, aby rozpocząć. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Będę wyciągnąć jeden dla Tytułem uzupełnienia. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 OK. 149 00:07:06,117 --> 00:07:07,480 Będę wskazać tą sprawą. 150 00:07:07,480 --> 00:07:09,550 A ja wskazują, że jeden z powrotem. 151 00:07:09,550 --> 00:07:10,360 Ups, przepraszam. 152 00:07:10,360 --> 00:07:12,710 Tak, ma to do tyłu. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Zrób to jeszcze raz. 155 00:07:16,967 --> 00:07:18,330 OK, nie idziemy. 156 00:07:18,330 --> 00:07:19,910 W porządku, rozumiem. 157 00:07:19,910 --> 00:07:21,780 OK, oto nasz obraz. 158 00:07:21,780 --> 00:07:24,860 >> OK, więc warto rozważyć dwa przypadki. 159 00:07:24,860 --> 00:07:27,330 W pierwszym przypadku jest to, czy Węzeł chcemy usunąć 160 00:07:27,330 --> 00:07:29,420 znajduje się na samym początku listy. 161 00:07:29,420 --> 00:07:34,070 A potem, drugi przypadek, że chcemy do rozważenia jest, czy to gdziekolwiek indziej. 162 00:07:34,070 --> 00:07:37,660 Rozumiem, że to zupełnie niechlujny rysunek z całego kasowania, 163 00:07:37,660 --> 00:07:40,400 ale mam nadzieję, że będziemy się starać to jasno z kodem. 164 00:07:40,400 --> 00:07:45,450 >> OK, więc niech obejmuje przypadku gdzie znaleźliśmy nasz węzeł, 165 00:07:45,450 --> 00:07:48,900 i to w bardzo początek naszej listy. 166 00:07:48,900 --> 00:07:50,810 Ktoś mi Propozycja co do tego, co tutaj 167 00:07:50,810 --> 00:07:54,684 Należy zrobić, aby rzeczywiście usunąć nasz węzeł? 168 00:07:54,684 --> 00:07:55,970 To trochę skomplikowane. 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> PUBLICZNOŚCI: Musisz wziąć Węzeł, który jest przed nim 171 00:07:59,628 --> 00:08:01,794 i sprawiają, że wskazują na który będzie po nim 172 00:08:01,794 --> 00:08:03,004 i wziąć węzeł byłoby po nim i zrobić 173 00:08:03,004 --> 00:08:04,554 wskazywać na węźle przed nim. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Dokładnie. 175 00:08:05,220 --> 00:08:10,640 OK, więc jest to przypadek where-- mamy dwa przypadki. 176 00:08:10,640 --> 00:08:14,100 Mamy sytuację, w której się węzeł, który szukamy 177 00:08:14,100 --> 00:08:18,270 Jest przód listy. 178 00:08:18,270 --> 00:08:23,110 OK, a następnie tak, że ci opisane jest inaczej, prawda? 179 00:08:23,110 --> 00:08:24,500 To gdzieś w liście. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Więc powiedziałem, musimy spojrzeć na węźle poprzedniego, 182 00:08:32,840 --> 00:08:36,500 i sprawiają, że poprzedni węzeł zwrócić do następnego węzła. 183 00:08:36,500 --> 00:08:40,510 Więc powiedzmy, że jesteśmy próbuje wykupić pięć 184 00:08:40,510 --> 00:08:43,059 w moim bardzo niechlujny rysunek ponad tutaj. 185 00:08:43,059 --> 00:08:47,530 Chcemy, aby upewnić się, że cztery wskazuje teraz na sześciu. 186 00:08:47,530 --> 00:08:49,590 Cztery na kolejne punkty do sześciu. 187 00:08:49,590 --> 00:08:52,150 I sześć za poprzednie punkty do czterech. 188 00:08:52,150 --> 00:08:53,960 To jest naszym celem, prawda? 189 00:08:53,960 --> 00:08:56,150 To jest to, co myślę, że cię tylko, że tam. 190 00:08:56,150 --> 00:08:58,450 >> OK, więc zróbmy to pierwszy kawałek. 191 00:08:58,450 --> 00:09:02,300 Zróbmy mają poprzednia wskazówka poprzednie. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Więc czterech dalej powinien wskazywać na co? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Dokładnie, w tym przypadku, sześciu. 196 00:09:14,900 --> 00:09:18,470 Więc powinniśmy powiedzieć wskaźnik obok. 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 Dobrze. 199 00:09:21,150 --> 00:09:24,870 Warto więc pozbyć się tego brzydki obraz i staramy się wyciągnąć nieco ładniejszy jeden. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Mamy tu naszą listę głową. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 A wskazuje na pierwszym węźle naszej listy, które powiedział, jest cztery. 204 00:09:42,740 --> 00:09:45,620 Oto nasz drugi węzeł, pięć. 205 00:09:45,620 --> 00:09:47,307 A nasz trzeci węzeł, sześć. 206 00:09:47,307 --> 00:09:50,265 Po prostu staramy się wyciągnąć dokładnie to samo obraz, po prostu trochę bardziej czysto. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, więc na następne cztery początkowo wskazuje na pięć. 209 00:09:56,280 --> 00:09:58,620 Five kolejne punkty do sześciu. 210 00:09:58,620 --> 00:10:00,170 Sześć za poprzednie punkty do pięciu. 211 00:10:00,170 --> 00:10:02,470 A five poprzednie punkty do czterech. 212 00:10:02,470 --> 00:10:03,360 Tak wiele ładniejszy! 213 00:10:03,360 --> 00:10:04,530 OK, fajnie. 214 00:10:04,530 --> 00:10:07,770 >> Więc teraz, co zrobiliśmy po prostu tutaj, ta linia kodu, 215 00:10:07,770 --> 00:10:12,680 które mówi, wskaźnik poprzednie obok, więc co to oznacza? 216 00:10:12,680 --> 00:10:17,540 Oznacza to, że jeśli patrzymy na pięć, przejść do poprzedniego węzła, 217 00:10:17,540 --> 00:10:21,970 i to jest następna powinna teraz Punkt do pięciu na następne. 218 00:10:21,970 --> 00:10:27,840 Więc zasadniczo, co to robi jest to, że jest usuwanie tę strzałkę 219 00:10:27,840 --> 00:10:29,640 a co pominąć tuż ponad pięciu. 220 00:10:29,640 --> 00:10:31,360 Czy to jasne? 221 00:10:31,360 --> 00:10:33,200 Wiem, że może być trochę pobieżnie. 222 00:10:33,200 --> 00:10:34,480 Widzę pewne kiwa głową. 223 00:10:34,480 --> 00:10:35,390 To dobrze. 224 00:10:35,390 --> 00:10:36,670 OK, fajnie. 225 00:10:36,670 --> 00:10:39,590 Teraz, co jest następny krok? 226 00:10:39,590 --> 00:10:42,060 >> Mam zresetować następne. 227 00:10:42,060 --> 00:10:45,297 Teraz, co inne strzałka muszę zmienić? 228 00:10:45,297 --> 00:10:46,130 Ten tutaj. 229 00:10:46,130 --> 00:10:47,560 Sześć na poprzednie. 230 00:10:47,560 --> 00:10:50,620 Nie chcemy, sześć na poprzednie zwrócić się do pięciu już. 231 00:10:50,620 --> 00:10:54,580 Chcemy, aby wskazać na cztery. 232 00:10:54,580 --> 00:10:56,190 Czy to obraz ma sens? 233 00:10:56,190 --> 00:10:58,370 Więc teraz możemy rzeczywiście podjąć pięć out. 234 00:10:58,370 --> 00:10:59,370 Więc przejdźmy ten kawałek. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Co należy zrobić przed I zresetować sześciu na poprzednie cztery? 237 00:11:11,180 --> 00:11:14,360 Wszelkie jakieś pomysły? 238 00:11:14,360 --> 00:11:17,369 >> PUBLICZNOŚCI: Uwolnij węzeł między je przez ustawienie go na null? 239 00:11:17,369 --> 00:11:17,910 HANNAH: Spoko. 240 00:11:17,910 --> 00:11:21,100 Zdecydowanie, celem jest nasz koniec Będzie uwolnić węzła. 241 00:11:21,100 --> 00:11:22,490 Więc możemy to zrobić tutaj. 242 00:11:22,490 --> 00:11:23,540 Bezpłatne wskaźnik. 243 00:11:23,540 --> 00:11:24,810 Absolutnie. 244 00:11:24,810 --> 00:11:29,160 Ale jeszcze wcześniej, niech just-- Naszym celem prawo 245 00:11:29,160 --> 00:11:38,730 o to, aby ustawić wskaźnik obok poprzednia równa wyżeł poprzednie. 246 00:11:38,730 --> 00:11:40,760 Wiem, że to jest coraz zasłonięte. 247 00:11:40,760 --> 00:11:45,440 OK, niech take-- fajne. 248 00:11:45,440 --> 00:11:46,990 Czy każdy może zobaczyć to zyski? 249 00:11:46,990 --> 00:11:47,840 Czy jest to bardzo małe? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Więc zanim wykonamy ta linia tutaj, chcemy 252 00:11:54,300 --> 00:11:58,375 aby upewnić się, że Wskaźnik obok nie jest null. 253 00:11:58,375 --> 00:12:00,500 Bo jeśli wskaźnik obok jest null, jaki rodzaj błędu 254 00:12:00,500 --> 00:12:02,727 będę się przy próbie odwoływać się do pustego wskaźnika? 255 00:12:02,727 --> 00:12:03,560 PUBLICZNOŚCI: wina Seg. 256 00:12:03,560 --> 00:12:05,660 HANNAH: usterka seg, piękne. 257 00:12:05,660 --> 00:12:09,690 OK, więc jeśli nie jest to null, to możemy zresetować. 258 00:12:09,690 --> 00:12:14,420 I mamy sześć punkt ponownie do czterech. 259 00:12:14,420 --> 00:12:17,440 Pytania aż do tego punktu? 260 00:12:17,440 --> 00:12:17,940 Tak? 261 00:12:17,940 --> 00:12:19,814 >> PUBLICZNOŚCI: W Twoja pierwsza if, prawda 262 00:12:19,814 --> 00:12:23,817 znaczy mieć strzałkę obok, lub [niesłyszalne]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: Miałem na myśli wskaźnik strzałki n. 264 00:12:25,150 --> 00:12:30,270 Więc w zasadzie, co próbuję zrobić jest powiedzieć, bieżący węzeł, że jestem 265 00:12:30,270 --> 00:12:34,100 iteracji po obecny węzeł Patrzę, jestem przechowywania wskaźnika. 266 00:12:34,100 --> 00:12:37,630 A ja chcę wiedzieć, wskaźnik na wartość, która w tym przypadku wynosi n. 267 00:12:37,630 --> 00:12:39,500 I chcę, aby zobaczyć, jest Węzeł szukam 268 00:12:39,500 --> 00:12:42,790 dla węzła Jestem zmierzające do usunięcia? 269 00:12:42,790 --> 00:12:47,657 To dlatego mamy tutaj wskazówka n. 270 00:12:47,657 --> 00:12:49,857 >> PUBLICZNOŚCI: Więc strzałka będzie do n, ustawić wartość 271 00:12:49,857 --> 00:12:52,058 i przechowywać go w węźle o nazwie n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: Więc jak to jest, czy jestem przeżywa tego połączonej listy 274 00:12:58,820 --> 00:13:00,310 i wskazując na pięć. 275 00:13:00,310 --> 00:13:03,600 Jeśli chcę, aby ta wartość, jeśli Chcę, aby ta liczba, 5, 276 00:13:03,600 --> 00:13:06,400 Muszę zrobić wskaźnik strzałki n. 277 00:13:06,400 --> 00:13:06,900 Fajne? 278 00:13:06,900 --> 00:13:07,900 Tak. 279 00:13:07,900 --> 00:13:11,200 >> PUBLICZNOŚCI: Czy n nazwę zmiennej? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Tak. 281 00:13:11,700 --> 00:13:14,870 Jeśli więc przerzucić z powrotem jednego Poślizg, n jest nazwą 282 00:13:14,870 --> 00:13:18,660 wartości wewnątrz of węzeł w naszej listy. 283 00:13:18,660 --> 00:13:21,510 I wiem, że to może być trochę nieco mylące, ponieważ my również 284 00:13:21,510 --> 00:13:24,680 dzwonisz rzeczy że chcemy usunąć n. 285 00:13:24,680 --> 00:13:26,717 Więc to jest w przypadku, gdy jedna linia pochodzi. 286 00:13:26,717 --> 00:13:27,671 Tak? 287 00:13:27,671 --> 00:13:31,010 >> PUBLICZNOŚCI: Co masz [Niesłyszalne], jak one działają? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Wskaźnik [niesłyszalne]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Jasne. 291 00:13:37,520 --> 00:13:40,027 Mówisz about-- która linia? 292 00:13:40,027 --> 00:13:41,526 PUBLICZNOŚCI: Ostatnia linia [niesłyszalne]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: Pewnie, OK. 295 00:13:45,250 --> 00:13:48,540 Warto więc spojrzeć na obraz w Aby spróbować wyjaśnić. 296 00:13:48,540 --> 00:13:51,030 Przepraszam, za Aparat, pytanie było 297 00:13:51,030 --> 00:13:54,580 możemy wyjaśnić wskaźnik strzałkę obok wskaźnika poprzednie. 298 00:13:54,580 --> 00:14:01,510 OK, więc powiedzmy, że jesteśmy na pięciu a naszym celem jest, aby usunąć pięć. 299 00:14:01,510 --> 00:14:07,240 Więc wyżeł następne, które z nich trzy węzły nam to daje? 300 00:14:07,240 --> 00:14:10,840 To prowadzi nas do szóstego węzła, prawda? 301 00:14:10,840 --> 00:14:16,490 >> OK, więc teraz pytamy dla sześciu na poprzednie. 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 A my resetowania tego powinna być równa cztery, 304 00:14:20,210 --> 00:14:23,214 które stało się pięć na poprzednie. 305 00:14:23,214 --> 00:14:25,180 Wiem, że to bardzo trudno śledzić. 306 00:14:25,180 --> 00:14:29,286 Naprawdę polecam rysować jeśli masz pytanie, jak ten. 307 00:14:29,286 --> 00:14:30,242 Tak? 308 00:14:30,242 --> 00:14:32,617 >> PUBLICZNOŚCI: Czy dlatego, że nie mamy [niesłyszalne]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Dokładnie. 311 00:14:38,570 --> 00:14:44,800 Więc pytanie, dlaczego Nie musimy sprawdzić tutaj? 312 00:14:44,800 --> 00:14:48,160 Dlaczego nie musimy sprawdzić, Wskaźnik poprzednia nie jest równa null? 313 00:14:48,160 --> 00:14:50,070 A to dlatego, że mamy już oddzielony 314 00:14:50,070 --> 00:14:52,490 w przypadku, gdy wskaźnik na na samym początku. 315 00:14:52,490 --> 00:14:54,060 Bardzo dobre pytanie. 316 00:14:54,060 --> 00:14:56,880 Wszystko inne na ten temat? 317 00:14:56,880 --> 00:14:57,380 OK, fajnie. 318 00:14:57,380 --> 00:14:58,360 Więc skończmy to. 319 00:14:58,360 --> 00:14:59,890 Jesteśmy prawie na miejscu. 320 00:14:59,890 --> 00:15:01,310 >> Co z tego, że jest na czele? 321 00:15:01,310 --> 00:15:03,360 Co zrobić, jeśli zamiast Próbujesz usunąć pięć, 322 00:15:03,360 --> 00:15:06,240 rzeczywiście chciał usunąć cztery? 323 00:15:06,240 --> 00:15:07,270 Co mam zrobić? 324 00:15:07,270 --> 00:15:09,610 Cóż, chcę, aby zresetować głowę do czego? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Krzycz to? 327 00:15:15,585 --> 00:15:16,710 PUBLICZNOŚCI: jeden po nim. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Piękna. 329 00:15:17,460 --> 00:15:26,430 OK, więc chcemy wymienić należy wskazując do tego, co nasz wskaźnik następny węzeł. 330 00:15:26,430 --> 00:15:29,040 Dobra. 331 00:15:29,040 --> 00:15:30,810 I właśnie dla kompletności tych sake, że będzie 332 00:15:30,810 --> 00:15:35,590 Aby sprawdzić, jak długo nasze listy to nie jest pusta, tak długo, jak nasza lista nie jest 333 00:15:35,590 --> 00:15:42,730 pusty, to chcemy, aby ustawić nasza poprzednia równa null. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Pytanie do tej pory? 336 00:15:50,230 --> 00:15:53,205 Jeden krok from--? 337 00:15:53,205 --> 00:15:55,530 >> PUBLICZNOŚCI: czy będzie, jeśli Lista ta nie jest równa null? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Tak, masz całkowitą rację. 339 00:15:56,950 --> 00:15:58,130 Tak mi przykro. 340 00:15:58,130 --> 00:16:00,040 Czy lista nie jest równa null. 341 00:16:00,040 --> 00:16:01,915 Niesamowite. 342 00:16:01,915 --> 00:16:04,245 Starając się doprowadzić to wszystko na ekranie. 343 00:16:04,245 --> 00:16:06,870 To rodzaj upadkiem. 344 00:16:06,870 --> 00:16:07,730 Niestety, chłopaki. 345 00:16:07,730 --> 00:16:11,874 I ostatnie, ale nie najmniej, wszystkie musimy zrobić to w obie strony. 346 00:16:11,874 --> 00:16:12,840 OK. 347 00:16:12,840 --> 00:16:15,400 To było dużo zapchane w bardzo szybko. 348 00:16:15,400 --> 00:16:16,800 Poświęć chwilę, aby to rozpatrzyć. 349 00:16:16,800 --> 00:16:18,216 Powiadom mnie, jeśli masz jakiekolwiek pytania. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Tak? 352 00:16:20,732 --> 00:16:26,940 >> PUBLICZNOŚCI: Jeżeli lista jest głowa, then-- czekać, nieważne. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, dobra. 354 00:16:27,700 --> 00:16:30,987 Tak to jest, gdy lista jest na czele, usuwamy go do tego, co możemy dodaje. 355 00:16:30,987 --> 00:16:31,486 Tak? 356 00:16:31,486 --> 00:16:33,777 >> PUBLICZNOŚCI: Czy możesz wyjaśnić Pierwsza instrukcja if ponownie? 357 00:16:33,777 --> 00:16:36,149 Jeśli wskaźnik n wynosi n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Jasne. 359 00:16:36,690 --> 00:16:42,780 Tak więc naszym celem całej tej funkcji jest usunąć węzeł, który ma wartość n. 360 00:16:42,780 --> 00:16:47,460 Więc jeśli znajdziemy, ponieważ jesteśmy iteracja naszej liście, 361 00:16:47,460 --> 00:16:51,770 węzeł o wartości n, to jeden chcemy usunąć. 362 00:16:51,770 --> 00:16:57,286 Więc wszystko dzieje się z usunięciem wewnątrz tego duża if. 363 00:16:57,286 --> 00:16:58,593 Czy to ma sens? 364 00:16:58,593 --> 00:16:59,480 Cool. 365 00:16:59,480 --> 00:16:59,990 Tak? 366 00:16:59,990 --> 00:17:02,864 >> PUBLICZNOŚCI: Może po prostu nie widać to, ale nie trzeba również linię 367 00:17:02,864 --> 00:17:06,024 do przewijania listy? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Niesamowite. 369 00:17:06,690 --> 00:17:10,896 Niech przyniesie to się trochę, a dorzucimy tego prawa w dole. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Może rada będzie ve był nieco lepszy pomysł. 372 00:17:15,490 --> 00:17:17,829 Więc jak by przenieść wskaźnik do przodu? 373 00:17:17,829 --> 00:17:20,184 >> PUBLICZNOŚCI: Pointer wynosi wskaźnik plus jeden. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Piękna. 375 00:17:21,599 --> 00:17:25,050 Tak, że pozwala nam nadal iteracja. 376 00:17:25,050 --> 00:17:26,251 OK. 377 00:17:26,251 --> 00:17:27,750 PUBLICZNOŚCI: nie Czy istnieje jeszcze? 378 00:17:27,750 --> 00:17:29,028 HANNAH: Jeszcze raz? 379 00:17:29,028 --> 00:17:32,444 PUBLICZNOŚCI: nie Czy istnieje jeszcze po wielki stary, jeśli 380 00:17:32,444 --> 00:17:35,519 Oświadczenie [niesłyszalne]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: Która część? 382 00:17:36,310 --> 00:17:38,350 Przykro mi. 383 00:17:38,350 --> 00:17:41,800 >> PUBLICZNOŚCI: przejścia, Nie powinno tam być innego? 384 00:17:41,800 --> 00:17:43,550 HANNAH: Absolutnie może mieć innego. 385 00:17:43,550 --> 00:17:46,930 Bo mam prawo powrotu nie, nie potrzebujemy innego. 386 00:17:46,930 --> 00:17:48,760 Ale tak, dobre pytanie. 387 00:17:48,760 --> 00:17:50,170 OK, tak? 388 00:17:50,170 --> 00:17:52,878 PUBLICZNOŚCI: Czy możemy myśleć o wskaźnik które przemieszcza się po liście 389 00:17:52,878 --> 00:17:56,610 przyjmując jako wartości każdego węzła w liście? 390 00:17:56,610 --> 00:18:00,650 A może powinniśmy pomyśleć o tym, jak rodzaj zewnętrznego do listy? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: Jeden jest w porządku, myślę. 392 00:18:02,350 --> 00:18:05,880 Sposób, w jaki to sobie wyobrazić jest Mówię, OK, jestem wskaźnik. 393 00:18:05,880 --> 00:18:06,520 A to ja. 394 00:18:06,520 --> 00:18:07,150 To jest moja ręka. 395 00:18:07,150 --> 00:18:09,960 Mam zamiar wskazywać na różne rzeczy, które chcę iterację. 396 00:18:09,960 --> 00:18:12,270 Po pierwsze, mam zamiar zwrócić na czele listy. 397 00:18:12,270 --> 00:18:14,144 I to mówi mi, że jestem będzie wskazywać na czterech. 398 00:18:14,144 --> 00:18:18,060 I tak ja jest zewnętrzny w stosunku do listy Można wskazać na każdym z tych elementów. 399 00:18:18,060 --> 00:18:19,520 Więc myślę o sobie jako wskaźnika. 400 00:18:19,520 --> 00:18:21,645 PUBLICZNOŚCI: Więc kiedy usunięcia jeden z tych elementów, 401 00:18:21,645 --> 00:18:23,404 można samemu usuwać, że tak powiem. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Dokładnie. 403 00:18:24,070 --> 00:18:25,920 Więc usunąć rzeczy jesteś wskazując. 404 00:18:25,920 --> 00:18:28,340 Tak więc w tym przykładzie, że widzieliśmy, gdzie jesteśmy 405 00:18:28,340 --> 00:18:31,670 Próbujesz usunąć pięć, kiedy jestem wskazując na pięć, 406 00:18:31,670 --> 00:18:34,200 Chcę usunąć co mam wskazując. 407 00:18:34,200 --> 00:18:35,870 Dokładnie tak. 408 00:18:35,870 --> 00:18:36,577 Tak? 409 00:18:36,577 --> 00:18:39,410 PUBLICZNOŚCI: Czy my się pod opieką przypadek, w którym n jest na liście? 410 00:18:39,410 --> 00:18:40,460 HANNAH: Gdy n nie ma na liście? 411 00:18:40,460 --> 00:18:43,501 Wszystko, co się stanie, to jesteś będzie iterację i iteracji 412 00:18:43,501 --> 00:18:47,616 przez, a następnie, będziesz dostać się do wskaźnika rygorem, 413 00:18:47,616 --> 00:18:48,990 i masz zamiar to zrobić. 414 00:18:48,990 --> 00:18:50,812 >> PUBLICZNOŚCI: Więc mamy aby powrócić coś? 415 00:18:50,812 --> 00:18:51,520 HANNAH: Moglibyśmy. 416 00:18:51,520 --> 00:18:54,500 Sposób, że jeżeli określona w tym Funkcja, powiem tylko, że zwraca 417 00:18:54,500 --> 00:18:55,770 unieważnić niezależnie. 418 00:18:55,770 --> 00:18:58,360 Ale może masz coś jak powrót liczbę całkowitą, 419 00:18:58,360 --> 00:19:00,920 i nie wróci ujemna 1, jeśli nie. 420 00:19:00,920 --> 00:19:03,070 Coś w tym stylu. 421 00:19:03,070 --> 00:19:04,494 Pytania with-- tak? 422 00:19:04,494 --> 00:19:05,410 PUBLICZNOŚCI: [niesłyszalne]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Przepraszam? 424 00:19:05,993 --> 00:19:07,419 PUBLICZNOŚCI: [niesłyszalne]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Jasne. 426 00:19:07,960 --> 00:19:11,730 Więc to actual-- raz mamy zrobić to wszystko praca w ruchu 427 00:19:11,730 --> 00:19:16,530 wszystkie te strzały wokół, cała nasza Celem było pozbycie węzła 428 00:19:16,530 --> 00:19:18,230 że szukamy. 429 00:19:18,230 --> 00:19:21,610 W tym wypadku, uwalniając wskaźnik, czy jestem wskazując na pięć, 430 00:19:21,610 --> 00:19:24,670 to jak usuwanie ten środkowy węzeł. 431 00:19:24,670 --> 00:19:27,250 To wolna część wskaźnika. 432 00:19:27,250 --> 00:19:29,090 To ma sens? 433 00:19:29,090 --> 00:19:31,390 >> PUBLICZNOŚCI: Więc nawet, że zrobiłeś nie [niesłyszalne]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: Więc założyliśmy na początku mieliśmy jakieś listy, które było already-- 435 00:19:36,060 --> 00:19:37,220 oni umieścić to razem. 436 00:19:37,220 --> 00:19:39,761 Tak więc w celu skonstruowania tego lista, Musieli [niesłyszalne]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Cool. 439 00:19:42,750 --> 00:19:44,490 Czy coś jeszcze z tym? 440 00:19:44,490 --> 00:19:46,386 Tak? 441 00:19:46,386 --> 00:19:49,204 >> PUBLICZNOŚCI: Co zrobić, jeśli lista nie równa linię zerową? 442 00:19:49,204 --> 00:19:49,704 [Niesłyszalne]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH: Tutaj? 445 00:19:53,080 --> 00:19:53,840 Publiczność: Tak. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, wszystko robię jest Ja tylko upewniając 447 00:19:57,370 --> 00:20:03,250 że przed próbuję listy wyłuskiwania, przed próbie uzyskania dostępu do poprzedniej, 448 00:20:03,250 --> 00:20:07,210 Chcę się upewnić, że to nie jest null, więc nie dostać winy seg. 449 00:20:07,210 --> 00:20:08,400 Cool. 450 00:20:08,400 --> 00:20:10,820 >> OK, wiem, że to było dość Wiele się dotrzeć. 451 00:20:10,820 --> 00:20:14,950 Więc to będzie slajdów udostępnione do Ciebie. 452 00:20:14,950 --> 00:20:17,341 Więc można przejść przez to bardziej szczegółowo. 453 00:20:17,341 --> 00:20:17,841 Tak? 454 00:20:17,841 --> 00:20:19,749 >> PUBLICZNOŚCI: Dlaczego lista [niesłyszalne]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Jasne. 457 00:20:24,670 --> 00:20:27,390 Tak naprawdę wskazuje na listy ten element właśnie tutaj, 458 00:20:27,390 --> 00:20:29,200 Pierwszy element listy. 459 00:20:29,200 --> 00:20:30,748 Więc to nie może mieć poprzednie. 460 00:20:30,748 --> 00:20:31,736 Tak? 461 00:20:31,736 --> 00:20:35,194 >> PUBLICZNOŚCI: Czy punkt wskaźnika do tego samego adresu w pamięci? 462 00:20:35,194 --> 00:20:38,404 Czy to wskazywać na to samo adres w pamięci jako węzeł 463 00:20:38,404 --> 00:20:40,640 że to wskazuje? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Tak, to wskazuje do tego węzła w pamięci. 465 00:20:43,865 --> 00:20:47,190 >> PUBLICZNOŚCI: Prawo, więc kiedy [niesłyszalne]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: W pewnym sensie tak. 467 00:20:50,580 --> 00:20:51,280 OK. 468 00:20:51,280 --> 00:20:52,997 Dobrze, przejdźmy razem z tym. 469 00:20:52,997 --> 00:20:55,330 A jeśli masz więcej pytań, trzymać się na końcu, 470 00:20:55,330 --> 00:20:57,130 i możemy przejść przez to jeszcze raz. 471 00:20:57,130 --> 00:20:58,120 OK, fajnie. 472 00:20:58,120 --> 00:21:00,490 Teraz mamy przejść hash tabele, prób, 473 00:21:00,490 --> 00:21:04,940 i drzewa, które masz bardzo znać w p-set pięć, speller. 474 00:21:04,940 --> 00:21:11,020 >> Więc hash tabeli jest tylko Tablica z pojedynczo związane listy 475 00:21:11,020 --> 00:21:14,050 lub podwójnie związany list pochodzących wyłączyć. 476 00:21:14,050 --> 00:21:16,380 Tak więc mamy jakieś tablicy asocjacyjnej. 477 00:21:16,380 --> 00:21:21,280 A jak wiemy, które z nich tablice wiadra się dostać, 478 00:21:21,280 --> 00:21:24,137 używamy funkcji skrótu. 479 00:21:24,137 --> 00:21:26,470 Więc w tym przypadku, może ktoś Zgadnij, co do funkcji skrótu 480 00:21:26,470 --> 00:21:28,636 będzie tylko w oparciu o niektóre wejścia i wyjścia? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> PUBLICZNOŚCI: numer litery alfabetu. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Dokładnie. 484 00:21:33,860 --> 00:21:36,160 To po prostu umieszcza je w kolejności alfabetycznej. 485 00:21:36,160 --> 00:21:39,280 Wszystko co zaczyna się Umieszczany jest w pierwszym segmencie. 486 00:21:39,280 --> 00:21:43,340 Wszystko z B wkłada się Drugi wiadra tak dalej, i tak dalej. 487 00:21:43,340 --> 00:21:45,620 Niesamowite, OK. 488 00:21:45,620 --> 00:21:48,980 A funkcja skrótu jest każda funkcja, która trwa w słowie 489 00:21:48,980 --> 00:21:51,910 i powie, co wiadro należy się. 490 00:21:51,910 --> 00:21:55,150 Więc, który wpis w naszym Tablica należy się. 491 00:21:55,150 --> 00:21:58,080 >> Dlatego za każdym razem daję hash funkcjonować słowo, 492 00:21:58,080 --> 00:22:00,660 powinien powiedzieć mi to samo to za każdym razem. 493 00:22:00,660 --> 00:22:03,270 Więc jeśli używamy funkcji skrótu z poprzedniego slajdu 494 00:22:03,270 --> 00:22:05,950 dokąd sortując Pierwsza litera alfabetu, 495 00:22:05,950 --> 00:22:08,230 za każdym razem daję funkcja skrótu "jabłko" 496 00:22:08,230 --> 00:22:10,180 powinien on zawsze daje mi 0. 497 00:22:10,180 --> 00:22:12,890 Więc jeśli mam jabłko aby umieścić w tabeli mieszania, 498 00:22:12,890 --> 00:22:17,700 jeśli dam "jabłko" do mojej funkcji skrótu, należy powiedzieć, udać umieścić go w wiadrze 0. 499 00:22:17,700 --> 00:22:19,980 Jeśli szukam Apple w mojej tabeli mieszania 500 00:22:19,980 --> 00:22:24,340 i mogę powiedzieć, gdzie może jabłko na żywo, można zwrócić się do funkcji skrótu. 501 00:22:24,340 --> 00:22:26,900 I to mówi, idź do schowka 0. 502 00:22:26,900 --> 00:22:29,150 Wszystko w porządku? 503 00:22:29,150 --> 00:22:32,660 Pytania z funkcji skrótu? 504 00:22:32,660 --> 00:22:34,570 Niesamowite. 505 00:22:34,570 --> 00:22:37,320 >> Oto nieco bardziej Szczegółowe wyjaśnienie 506 00:22:37,320 --> 00:22:39,570 z tego, co funkcja skrótu może wyglądać. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Dobrze. 509 00:22:42,960 --> 00:22:45,960 Teraz problem z hash funkcje jest w idealnym świecie, 510 00:22:45,960 --> 00:22:48,870 będziemy mieć tylko jedną rzecz w każdym segmencie. 511 00:22:48,870 --> 00:22:50,900 Ale w rzeczywistości, nie ma nie tylko jedno słowo 512 00:22:50,900 --> 00:22:54,280 która zaczyna się na literę A. Nie ma tylko jedno słowo, które zaczyna się od B. So 513 00:22:54,280 --> 00:22:56,960 w tym przypadku, jeśli my nagle się "jagody" 514 00:22:56,960 --> 00:22:58,710 i chcemy go umieścić do naszej tabeli mieszania, 515 00:22:58,710 --> 00:23:03,640 i widzimy, o nie, banan jest już nie, co zrobimy? 516 00:23:03,640 --> 00:23:05,900 >> Cóż, mamy dwie opcje. 517 00:23:05,900 --> 00:23:07,990 Pierwsza opcja jest liniowa sondowania, które 518 00:23:07,990 --> 00:23:11,100 oznacza po prostu idź znaleźć następne puste wiadro. 519 00:23:11,100 --> 00:23:14,100 Idź znaleźć następny pusty wpis tablicy. 520 00:23:14,100 --> 00:23:15,750 I po prostu umieścić "jagoda" istnieje. 521 00:23:15,750 --> 00:23:18,880 Tak wiem, że to ma przejść z bananem w wiadrze jednym. 522 00:23:18,880 --> 00:23:22,155 Ale wystarczy umieścić go w wiadrze trzech, bo wiadro trzech jest pusty. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Inną możliwością jest pewnie co wdrożenia 525 00:23:26,680 --> 00:23:29,220 w p-set, gdzie cię miał oddzielny łańcuchowym. 526 00:23:29,220 --> 00:23:33,990 Więc każdego z wiadra, każdego z elementów tablicy, 527 00:23:33,990 --> 00:23:38,410 nie tylko posiada jedno słowa, ale w rzeczywistości posiada wskaźnik do listy słów. 528 00:23:38,410 --> 00:23:41,880 Tak, że jeśli miał Banan w tabeli mieszania 529 00:23:41,880 --> 00:23:44,740 i nagle chciał dodać jagody, nie ma problemu. 530 00:23:44,740 --> 00:23:51,110 Wystarczy dodać jagody na końcu, lub początek twojej połączonej listy. 531 00:23:51,110 --> 00:23:54,040 OK, super. 532 00:23:54,040 --> 00:23:58,490 Pytania z hash tabele, zanim udamy się? 533 00:23:58,490 --> 00:23:59,850 >> Dobrze. 534 00:23:59,850 --> 00:24:01,070 Drzewa i stara. 535 00:24:01,070 --> 00:24:07,980 OK, więc to było innej opcji za wdrażanie słownika. 536 00:24:07,980 --> 00:24:09,100 Mogłeś się spróbować. 537 00:24:09,100 --> 00:24:13,420 Więc jest to szczególny rodzaj drzewa, które zachowuje się jak tabeli mieszania wielopoziomowego. 538 00:24:13,420 --> 00:24:16,862 Więc zobaczysz obraz gdzie masz tablicę 539 00:24:16,862 --> 00:24:19,320 Wskazuje to na kilka tablic że punkt do kilka tablic 540 00:24:19,320 --> 00:24:20,390 że punkt do kilka tablic. 541 00:24:20,390 --> 00:24:23,140 I zobaczymy, co to dokładnie będzie wyglądać w przyszłości slajdu. 542 00:24:23,140 --> 00:24:26,070 I bardziej ogólnie, drzewo tylko jakaś struktura danych 543 00:24:26,070 --> 00:24:29,710 w którym dane zorganizowane w jakimś hierarchii. 544 00:24:29,710 --> 00:24:32,610 Więc gdzie widzieliśmy mamy jakiś zrozumienia 545 00:24:32,610 --> 00:24:36,130 z najwyższym poziomie, następny poziom, Następny poziom, następny poziom. 546 00:24:36,130 --> 00:24:39,690 Więc to jest chyba najbardziej jasne przy pewnych szczególnych przykładów. 547 00:24:39,690 --> 00:24:40,880 Więc tutaj jest nasz drzewa. 548 00:24:40,880 --> 00:24:42,970 Widać, że to ma szczególne poziomy 549 00:24:42,970 --> 00:24:45,480 że zaczynamy z tego korzenia, jeden. 550 00:24:45,480 --> 00:24:47,640 I możemy iść za pośrednictwem naszego drzewa. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Binarne drzewo Szczególny rodzaj drzewa. 553 00:24:53,910 --> 00:24:56,770 I tylko specyfikacja do binarnego drzewa 554 00:24:56,770 --> 00:25:01,130 że każdy węzeł ma co najwyżej dwóch liści. 555 00:25:01,130 --> 00:25:03,960 Więc nie będziemy widzieć wszelkie od węzły te mają trzy lub cztery 556 00:25:03,960 --> 00:25:06,880 lub innej liczby liści. 557 00:25:06,880 --> 00:25:11,310 A potem jeszcze bardziej specyficzne jest drzewo binarne wyszukiwania 558 00:25:11,310 --> 00:25:18,010 gdzie każdy węzeł z lewej węzeł będzie miał wartość mniejsza. 559 00:25:18,010 --> 00:25:21,180 A co do wartości Prawo będzie większy. 560 00:25:21,180 --> 00:25:26,900 Więc jeśli widzisz 44 znajduje się w naszym katalogu głównym, w lewo, 11, 22 i 33 561 00:25:26,900 --> 00:25:28,940 są mniejsze niż nasz root. 562 00:25:28,940 --> 00:25:33,890 A po prawej stronie są numery bigger-- 66, 55 i 77. 563 00:25:33,890 --> 00:25:37,380 I to jest prawdziwe nieruchomości na każdym poziomie drzewa. 564 00:25:37,380 --> 00:25:42,690 >> Więc kiedy idziemy w dół do 22, 11 i 33, w dalszym ciągu 11 565 00:25:42,690 --> 00:25:46,950 jest mniejszy niż 22, a 33 jest większy niż 22. 566 00:25:46,950 --> 00:25:50,160 I to sprawia, że ​​są łatwiejsze do przeszukiwania bo jeśli szukamy liczby, 567 00:25:50,160 --> 00:25:53,877 możemy dokładnie wiedzieć, które Oddział podążać w dół. 568 00:25:53,877 --> 00:25:56,210 Tak to powinno ci się przypomni Trochę wyszukiwania binarnego. 569 00:25:56,210 --> 00:25:56,967 Tak? 570 00:25:56,967 --> 00:25:58,835 >> Publiczność: Tak, gdy jesteś Opisując binarny, 571 00:25:58,835 --> 00:26:00,587 powiedziałeś, że ma co najwyżej dwóch liści? 572 00:26:00,587 --> 00:26:01,170 HANNAH: Mm-hm. 573 00:26:01,170 --> 00:26:02,580 PUBLICZNOŚCI: Czy to może mieć mniej? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Tak. 575 00:26:03,121 --> 00:26:06,720 Powiedzmy, na przykład, nie mają jeszcze wiele rzeczy 576 00:26:06,720 --> 00:26:11,791 i nie można wypełnić wszystkie swoje liście, to w porządku, jeśli ma się jedną. 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 Niesamowite. 579 00:26:12,789 --> 00:26:15,930 Wszelkie inne pytania na drzewach? 580 00:26:15,930 --> 00:26:16,670 OK. 581 00:26:16,670 --> 00:26:20,110 >> Powrót do naszych prób, jak rozmawiałem o nieco wcześniej, 582 00:26:20,110 --> 00:26:23,900 jak mamy te tablice wielopoziomowych. 583 00:26:23,900 --> 00:26:26,280 Tak więc w tym przypadku zaczyna się od góry. 584 00:26:26,280 --> 00:26:29,030 I możemy wykonać dowolną słowo dół. 585 00:26:29,030 --> 00:26:30,780 Więc powiedzmy, że chcemy szukać Turinga. 586 00:26:30,780 --> 00:26:34,380 Zaczynamy w T, po nim w dół do macierzy zawierającej U, 587 00:26:34,380 --> 00:26:37,350 a następnie ją w dół, aż my osiągnąć ten mały trójkąt, który 588 00:26:37,350 --> 00:26:39,060 mówi nam, tak, możesz znaleźć słowa. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Jasne, na próbach? 591 00:26:44,120 --> 00:26:48,138 Cokolwiek by tam iść? 592 00:26:48,138 --> 00:26:48,908 Tak? 593 00:26:48,908 --> 00:26:51,866 PUBLICZNOŚCI: Czy symbol delty muszą zajmować przestrzeni w próbie? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Tak, tak, to nie robi niekoniecznie musi być nawet trójkąt. 595 00:26:54,532 --> 00:26:57,760 Ale musimy w jakiś sposób do Poleć nasz computer-- przykro, 596 00:26:57,760 --> 00:27:01,130 tak, że wiemy, że TUR nie ma słowa. 597 00:27:01,130 --> 00:27:04,180 Bo powiedzmy, że nie mieliśmy ta koncepcja delta, ta koncepcja 598 00:27:04,180 --> 00:27:09,850 gratulacyjny, można znaleźć słowa, to przejść i iteracji T-U-R, 599 00:27:09,850 --> 00:27:11,300 a potem mówią, niesamowite, znalazłem! 600 00:27:11,300 --> 00:27:12,670 To musi być słowo. 601 00:27:12,670 --> 00:27:13,720 Ale to naprawdę nie jest. 602 00:27:13,720 --> 00:27:15,310 Chcemy cały Turinga za słowo. 603 00:27:15,310 --> 00:27:17,760 Więc musimy mieć coś na Koniec, który mówi, gratulacje, 604 00:27:17,760 --> 00:27:19,051 znalazłeś uzasadniony słowo. 605 00:27:19,051 --> 00:27:21,680 PUBLICZNOŚCI: Więc jeśli miał jak 26 liter w alfabecie, 606 00:27:21,680 --> 00:27:24,560 to faktycznie mają 27 klucze w próbie? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Niesamowite, tak. 608 00:27:26,010 --> 00:27:28,210 Tak naprawdę, myślę, że będzie na następnym slajdzie. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Gdzie, jeśli masz Węzeł w próbie, jesteś 611 00:27:32,880 --> 00:27:35,800 będzie miał 27 dzieci, zamiast 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Wszelkie pytania z tym? 614 00:27:40,050 --> 00:27:40,550 Tak? 615 00:27:40,550 --> 00:27:44,569 PUBLICZNOŚCI: Dlaczego próbuje podjąć tak dużo miejsca [niesłyszalne], jak przejść? 616 00:27:44,569 --> 00:27:47,629 Dlaczego jest to uważane za [niesłyszalne]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Jasne. 618 00:27:48,170 --> 00:27:48,790 Wróćmy. 619 00:27:48,790 --> 00:27:52,350 Pytanie brzmi, dlaczego to stara dużo większe 620 00:27:52,350 --> 00:27:54,620 niż coś jak tabeli mieszania. 621 00:27:54,620 --> 00:27:57,790 Tak więc dla każdej z tych poziomów nawet jeśli nie są one rysowane tutaj 622 00:27:57,790 --> 00:28:01,250 trzeba mieć wszystkie 26 znaków. 623 00:28:01,250 --> 00:28:04,420 A powodem, że nie można powiedzieć, oh, ale jak dla Turinga, ja 624 00:28:04,420 --> 00:28:07,570 nie trzeba mieć żadnej z tych same rzeczy na poziomie U. Well, 625 00:28:07,570 --> 00:28:11,390 jeśli nagle chcesz dodać coś, co było jak T-H, 626 00:28:11,390 --> 00:28:14,800 że musisz mieć Możliwość dodawania tego słowa. 627 00:28:14,800 --> 00:28:17,330 Tak więc dla każdej litery, będziesz mieć 628 00:28:17,330 --> 00:28:19,730 mieć kilka tablice spadając z niego. 629 00:28:19,730 --> 00:28:24,060 Więc widać, jak by to się bardzo duży, bardzo szybko. 630 00:28:24,060 --> 00:28:26,560 Jeszcze jakieś pytania? 631 00:28:26,560 --> 00:28:28,980 Dobrze. 632 00:28:28,980 --> 00:28:29,832 Tak? 633 00:28:29,832 --> 00:28:33,210 >> PUBLICZNOŚCI: Gdy się stara szybciej niż tabel hash? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Gdy się stara szybciej niż tabel hash? 635 00:28:36,280 --> 00:28:39,120 Więc jeśli masz naprawdę złe funkcja skrótu. 636 00:28:39,120 --> 00:28:41,840 Więc powiedzmy, że ja na to: tu jest twoja funkcja skrótu. 637 00:28:41,840 --> 00:28:43,660 Bez względu na to, co słowo możesz mi dać, zawsze jestem 638 00:28:43,660 --> 00:28:47,740 zamiar umieścić go w pozycji tablicy 0. 639 00:28:47,740 --> 00:28:52,000 I tak skończy się tylko wprowadzenie wszystko w jednym wielkim liście długo związane. 640 00:28:52,000 --> 00:28:58,740 I tak, wyszukiwanie czasu zajęłoby co najgorsze n czy to na samym końcu naszej listy. 641 00:28:58,740 --> 00:29:03,150 Przy próbie, po prostu musimy iteracji przez litery w wyrazie. 642 00:29:03,150 --> 00:29:07,080 Więc nawet jeśli dodaliśmy kilka więcej słów do naszej próbie, 643 00:29:07,080 --> 00:29:09,620 nie zajmie nam dłużej aby znaleźć konkretny wyraz. 644 00:29:09,620 --> 00:29:11,750 >> Wszystko, co musimy zrobić, to, na Przykład, w tym przypadku, 645 00:29:11,750 --> 00:29:17,170 powiedzmy, że szukamy zoom, to po prostu musimy przejść przez wszystkie 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, cztery litery. 647 00:29:19,840 --> 00:29:22,250 Więc to tylko Długość zoom słowo. 648 00:29:22,250 --> 00:29:25,400 Nie ma znaczenia, ile więcej słów stawiamy w tej próbie. 649 00:29:25,400 --> 00:29:30,225 Zawsze możemy dostać w tych czterech etapach. 650 00:29:30,225 --> 00:29:31,215 Niesamowite. 651 00:29:31,215 --> 00:29:32,205 Tak? 652 00:29:32,205 --> 00:29:34,185 >> Publiczność: Tak [niesłyszalne] jest tablica, prawda? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 PUBLICZNOŚCI: Jeśli jesteś Szukam [niesłyszalne], 655 00:29:37,155 --> 00:29:40,929 trzeba by przejść przez Twoja tablica znaleźć [niesłyszalne]? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Jasne. 657 00:29:41,470 --> 00:29:44,000 PUBLICZNOŚCI: Czy to nie trochę więcej czasu? 658 00:29:44,000 --> 00:29:46,370 HANNAH: Jeśli będę powiedzieć, że moja tablica jest zawsze 659 00:29:46,370 --> 00:29:49,250 będzie A, B, C, D, E, F, G, bla bla bla, 660 00:29:49,250 --> 00:29:51,630 więc jeśli zawsze wiem, że to w tym samym dokładnie takiej kolejności, 661 00:29:51,630 --> 00:29:53,880 jeśli zawsze wiem, że to w porządku alfabetycznym, 662 00:29:53,880 --> 00:29:57,860 Mogę tylko powiedzieć, O jest liczba tak i tak w alfabecie. 663 00:29:57,860 --> 00:29:59,620 Wystarczy przejść do tego miejsca. 664 00:29:59,620 --> 00:30:01,860 Bo pamiętam, z tablice, mamy dostęp 665 00:30:01,860 --> 00:30:06,590 każdy element tej tablicy w stałym czas, gdy wiemy, gdzie szukamy. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Tak? 668 00:30:09,580 --> 00:30:12,005 >> PUBLICZNOŚCI: W ostatnich przesuń [niesłyszalne] 27, 669 00:30:12,005 --> 00:30:14,430 a 26 dla pierwszego. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Przepraszam? 671 00:30:15,400 --> 00:30:18,800 >> PUBLICZNOŚCI: Czy to nie jest pierwsza jedno 0, więc nie byłoby 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: Jasne, więc gdy mówimy, 27, to da amerykańskie indeksy 0 do 26. 673 00:30:24,900 --> 00:30:28,220 Ale jeśli rzeczywiście liczyć ci się, że to będzie 27. 674 00:30:28,220 --> 00:30:30,007 Dobre pytanie. 675 00:30:30,007 --> 00:30:30,590 Coś jeszcze? 676 00:30:30,590 --> 00:30:31,200 Tak? 677 00:30:31,200 --> 00:30:34,420 >> PUBLICZNOŚCI: Więc to stara wolniej niż tabel hash? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: Próby będą w teoria, szybciej niż tabele z cebulą 679 00:30:37,920 --> 00:30:39,760 ale zajmują więcej pamięci. 680 00:30:39,760 --> 00:30:40,534 Tak? 681 00:30:40,534 --> 00:30:41,450 PUBLICZNOŚCI: [niesłyszalne]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Przykro mi, że nie słyszy. 684 00:30:47,484 --> 00:30:48,400 PUBLICZNOŚCI: [niesłyszalne]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0 do 25 daje 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: 0 do 25 będzie daje 26, tuż. 688 00:30:56,958 --> 00:30:58,457 >> PUBLICZNOŚCI: A potem [niesłyszalne]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Prawo. 690 00:30:59,040 --> 00:31:04,760 Tak więc liczba jesteśmy określając jest ilość rzeczy w naszej tablicy. 691 00:31:04,760 --> 00:31:07,260 Więc jeśli mamy 27, to da nam 0 692 00:31:07,260 --> 00:31:10,620 do 26, co daje nam pokój, w tym przypadku, 693 00:31:10,620 --> 00:31:12,770 Nie jestem w tym apostrof. 694 00:31:12,770 --> 00:31:17,040 Więc jesteśmy już od 0 do 25 są pierwsze 26 liter alfabetu, 695 00:31:17,040 --> 00:31:18,990 lub wszystkie 26 liter alfabetu. 696 00:31:18,990 --> 00:31:21,190 A następnie, że w ubiegłym rzeczą, na wejściu 26, jest 697 00:31:21,190 --> 00:31:24,598 będzie kontrola Znak lub trójkąt. 698 00:31:24,598 --> 00:31:26,960 Coś jeszcze? 699 00:31:26,960 --> 00:31:29,130 Niesamowite. 700 00:31:29,130 --> 00:31:30,020 Straciłem miejsce. 701 00:31:30,020 --> 00:31:31,020 OK, fajnie. 702 00:31:31,020 --> 00:31:33,240 >> Więc poruszył już tego. 703 00:31:33,240 --> 00:31:37,430 Ale wielki kompromis pomiędzy próbami i tabel hash 704 00:31:37,430 --> 00:31:39,720 jest to, że próbuje przewidywać, w Teoria, stała patrzeć 705 00:31:39,720 --> 00:31:42,890 razy, ale używać dużo pamięci. 706 00:31:42,890 --> 00:31:46,495 Dobra, teraz mamy trochę mniej skomplikowane struktury, 707 00:31:46,495 --> 00:31:49,640 a my zrobić z C, i będziemy poruszać się w prawo wzdłuż. 708 00:31:49,640 --> 00:31:51,930 >> Więc stosy, widzieliśmy to w wykładzie, w którym 709 00:31:51,930 --> 00:31:55,020 mieć coś takiego Stos tac gdzie 710 00:31:55,020 --> 00:31:57,330 Ostatnią rzeczą, którą umieścić na stos będzie 711 00:31:57,330 --> 00:31:59,500 być pierwszą rzeczą, którą zdjąć. 712 00:31:59,500 --> 00:32:02,880 Więc to, co naprawdę definiuje stos jest to, że ostatnią rzeczą, można umieścić na 713 00:32:02,880 --> 00:32:06,080 będzie pierwszym rzeczą, którą zdjąć. 714 00:32:06,080 --> 00:32:09,279 I że używamy terminologii jeśli mamy zamiar umieścić coś, 715 00:32:09,279 --> 00:32:12,070 jeśli chcemy, aby dodać coś do nasz komin, nazywamy to pchanie. 716 00:32:12,070 --> 00:32:14,970 A jeśli wziąć coś off, nazywamy go trzaski. 717 00:32:14,970 --> 00:32:17,080 A jeśli będziemy zaimplementować stos, my 718 00:32:17,080 --> 00:32:20,660 muszą mieć pewność, aby śledzić zarówno wielkość i pojemność. 719 00:32:20,660 --> 00:32:24,940 Tak więc liczba elementów możemy przytrzymaj i aktualna liczba elementów 720 00:32:24,940 --> 00:32:27,880 że trzymają. 721 00:32:27,880 --> 00:32:29,885 >> I bardzo podobnie, mamy kolejki. 722 00:32:29,885 --> 00:32:34,510 A jedyna różnica to zamiast w stosy, 723 00:32:34,510 --> 00:32:37,630 powiedzieliśmy, ostatnią rzeczą, stawiamy na jest pierwszą rzeczą, którą zdjąć. 724 00:32:37,630 --> 00:32:40,940 Więc z kolejki, Pierwszą rzeczą, jaką wkładamy w 725 00:32:40,940 --> 00:32:43,129 będzie Pierwszą rzeczą, jaką możemy wziąć. 726 00:32:43,129 --> 00:32:45,420 Tak to jest jak, jeśli jesteś rzeczywiście w kolejce w sklepie 727 00:32:45,420 --> 00:32:48,140 a ty jest wspomagany, to pierwsza osoba w kolejce 728 00:32:48,140 --> 00:32:50,880 powinien być pierwszą osobą, zniesiony. 729 00:32:50,880 --> 00:32:52,220 Tak, że będzie kolejka. 730 00:32:52,220 --> 00:32:55,880 >> Więc musimy śledzić wielkość, pojemność, a ponieważ jesteśmy głowy 731 00:32:55,880 --> 00:33:01,130 zamiar wziąć wszyscy się z przodu listy zamiast z tyłu. 732 00:33:01,130 --> 00:33:03,480 Pytania na które? 733 00:33:03,480 --> 00:33:06,330 Wszelkie pytania C, które są ci przeszkadza? 734 00:33:06,330 --> 00:33:09,590 Struktury danych, żadnej z tych zabawnych rzeczy? 735 00:33:09,590 --> 00:33:10,530 Wszystko w porządku, super. 736 00:33:10,530 --> 00:33:14,120 Będę więc oddać go do Alison, aby wskoczyć do jakiegoś bardziej programowania. 737 00:33:14,120 --> 00:33:15,965 >> Alison: Och, zobaczymy. 738 00:33:15,965 --> 00:33:17,370 Zobaczymy, jak dobrze zrobić tutaj. 739 00:33:17,370 --> 00:33:21,410 OK, mam zamiar spróbować i latać przez tych rzeczy, chłopaki. 740 00:33:21,410 --> 00:33:24,540 Hannah poszło bardzo w głębokość na wszystkich jej rzeczy. 741 00:33:24,540 --> 00:33:26,900 Mam zamiar spróbować dać Ci szybki przegląd wielkopiecowy 742 00:33:26,900 --> 00:33:31,290 tak, że możemy dostać się do Davina ze wszystkim zabawy JavaScript i bezpieczeństwa rzeczy 743 00:33:31,290 --> 00:33:33,380 że być może rzeczywiście Aby dowiedzieć się więcej na temat. 744 00:33:33,380 --> 00:33:36,600 >> OK, jak Hannah powiedział, jeśli masz jakieś pytania, 745 00:33:36,600 --> 00:33:39,170 Jadę za szybko, proszę, daj mi znać. 746 00:33:39,170 --> 00:33:42,114 Odpowiem na pytania, jak to konieczne. 747 00:33:42,114 --> 00:33:45,280 Więc na początek, zamierzamy zacząć prawdopodobnie jeden z pierwszych rzeczy 748 00:33:45,280 --> 00:33:48,730 nauczyłeś się z sieci programowanie, uprawnienia. 749 00:33:48,730 --> 00:33:52,720 Więc chmod, chłopaki powinni byli mistrzami w tym z całej sieci 750 00:33:52,720 --> 00:33:54,870 Programowanie, że masz robi ostatnio. 751 00:33:54,870 --> 00:33:57,320 To w zasadzie tylko polecenie że zmienia prawa 752 00:33:57,320 --> 00:34:00,779 lub uprawnienia dostępu naszych obiektów systemu plików. 753 00:34:00,779 --> 00:34:02,570 Oczywiście, aby właściwie zobacz nich, jeśli jesteś 754 00:34:02,570 --> 00:34:04,910 mając żadnych problemów z nich podczas swoich zbiorów problemowych, 755 00:34:04,910 --> 00:34:11,460 może użyłeś ls -l, które jest długa, aby uzyskać rodzaju widok jak ten, 756 00:34:11,460 --> 00:34:14,209 gdzie można rzeczywiście zobaczyć wszystkie uprawnienia do pliku. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> A tak naprawdę, jesteśmy po prostu pójdzie przez dość szybko po prostu dość 759 00:34:20,732 --> 00:34:21,940 dużo, co każdy z nich oznacza. 760 00:34:21,940 --> 00:34:24,481 Więc mamy d tutaj, które tylko stoi w katalogu. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Oczywiście tutaj widzimy rwx, które jest czytelny, do zapisu i wykonywalny. 763 00:34:31,739 --> 00:34:37,090 Mogą to być również reprezentowane w bitach której zajmiemy się na następnej stronie. 764 00:34:37,090 --> 00:34:40,699 Tak więc każdy triada, że ​​widzieliśmy tutaj, więc trzy triady. 765 00:34:40,699 --> 00:34:48,120 Mamy RWX, R x i R nic nic x dla tego pierwszego pliku. 766 00:34:48,120 --> 00:34:49,690 Jest to ogólna struktura. 767 00:34:49,690 --> 00:34:50,940 >> Tak więc mamy trochę katalogu. 768 00:34:50,940 --> 00:34:53,999 Mamy pewne grupy użytkowników z tych uprawnień. 769 00:34:53,999 --> 00:34:57,040 Niektóre grupy, która ma te uprawnienia, i świat, który ma pozwolenie. 770 00:34:57,040 --> 00:34:59,420 Można myśleć o nich jako triady. 771 00:34:59,420 --> 00:35:01,130 Można myśleć o nich jak o trzech bitów. 772 00:35:01,130 --> 00:35:04,060 Więc mogą posiadać wartości w czasie od 0 do góry 773 00:35:04,060 --> 00:35:07,350 7, dlatego też czasem mieliśmy zrobić chmod 774 00:35:07,350 --> 00:35:17,510 600 zamiast chmod rw cokolwiek. 775 00:35:17,510 --> 00:35:19,170 Zajmiemy się przykład tam. 776 00:35:19,170 --> 00:35:24,260 Ale w zasadzie, można myśleć z nich, jak albo po prostu rwx, 777 00:35:24,260 --> 00:35:28,520 czy można myśleć o nich jak niektóre Numer, gdzie ta pierwsza tutaj 778 00:35:28,520 --> 00:35:31,480 oznacza liczbę między 0 do 7, ten drugi 779 00:35:31,480 --> 00:35:33,970 oznacza liczbę między 0 do 7, a trzeci 780 00:35:33,970 --> 00:35:38,245 oznacza liczbę między 0 i 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r ma wartość 4. wag ma wartość 2, a X 782 00:35:42,700 --> 00:35:49,230 ma wartość 1, co jest, dlaczego tak Pozwolenie tutaj będzie chmod 700. 783 00:35:49,230 --> 00:35:53,520 Ponieważ w tym przypadku tutaj, to mówi, że że pierwszy bit nie jest włączył. 784 00:35:53,520 --> 00:35:55,380 Mamy więc 4 do odczytu. 785 00:35:55,380 --> 00:35:58,730 Drugi bit jest włączył do w, którym jest 2, więc teraz mamy 6. 786 00:35:58,730 --> 00:36:02,070 I trzeci bit jest przerzucony na dla x, który jest jeden, więc mamy siedem. 787 00:36:02,070 --> 00:36:04,820 I oczywiście, nasza grupa i nasz świat są każdego 0. 788 00:36:04,820 --> 00:36:07,770 Jest to więc również odpowiednik chmod 700. 789 00:36:07,770 --> 00:36:12,081 I na pewno będę próbować zrozumieć mapowanie pomiędzy tymi. 790 00:36:12,081 --> 00:36:14,080 Nie jestem pewien, czy to ma pojawią się na quizie przed, 791 00:36:14,080 --> 00:36:18,590 ale byłoby Pytanie, że mogę zapytać. 792 00:36:18,590 --> 00:36:22,110 >> Tylko trochę będzie nawet dalej w chmod tutaj, tutaj 793 00:36:22,110 --> 00:36:27,730 jest bardzo ogólne Struktura rozmowy chmod. 794 00:36:27,730 --> 00:36:29,500 Tak, oczywiście, mamy chmod tutaj. 795 00:36:29,500 --> 00:36:34,410 Referencje, co odnosi się to tego Kim jesteśmy dając te uprawnienia 796 00:36:34,410 --> 00:36:36,570 lub którzy są nam przy nich Uprawnienia z dala od. 797 00:36:36,570 --> 00:36:44,330 Mamy więc tutaj w uprawnieniach, jak daliśmy Ci chmod a Plus X, 798 00:36:44,330 --> 00:36:45,440 jak zobaczymy niebawem. 799 00:36:45,440 --> 00:36:48,460 oznacza po prostu dać to specyficzna uprawnienia dla każdego. 800 00:36:48,460 --> 00:36:49,600 Daj im wszystko. 801 00:36:49,600 --> 00:36:55,370 Można więc dobrze mieć u Plus X lub g oraz x lub o Plus X lub wielokrotne 802 00:36:55,370 --> 00:36:55,870 z nich. 803 00:36:55,870 --> 00:36:59,280 Tak, że pierwsza część jest zawsze będzie odniesienia. 804 00:36:59,280 --> 00:37:03,220 Kim jesteśmy dając te uprawnienia, lub który zabieramy je z dala od? 805 00:37:03,220 --> 00:37:04,850 >> Drugi jest operator. 806 00:37:04,850 --> 00:37:07,350 Więc chłopaki mają najczęściej do czynienia z plusem. 807 00:37:07,350 --> 00:37:12,140 To daje uprawnienia do kto dajesz im, 808 00:37:12,140 --> 00:37:14,840 natomiast minus, logicznie, usuwa je. 809 00:37:14,840 --> 00:37:16,880 Więc nic zbyt straszne tam. 810 00:37:16,880 --> 00:37:23,060 A następnie Tryby jest o czym rozmawialiśmy z czytania, pisania, lub wykonania. 811 00:37:23,060 --> 00:37:29,070 Więc plus x oznacza dać wykonywalny uprawnienia dla każdego. 812 00:37:29,070 --> 00:37:33,430 A potem, oczywiście, na których Specjalny plik lub katalog. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Każdy dobry z chmod? 815 00:37:36,010 --> 00:37:37,850 Nie jest tak źle? 816 00:37:37,850 --> 00:37:42,417 >> OK, więc HTML, każdy z was tyle stary to-- MySpace wiek? 817 00:37:42,417 --> 00:37:44,750 Wysłałem to do mojej sekcji, i dosłownie połowa ludzi 818 00:37:44,750 --> 00:37:45,790 spojrzał na mnie, jakbym był szalony. 819 00:37:45,790 --> 00:37:47,498 A ja na to, chłopaki, Nie jesteśmy, że stare. 820 00:37:47,498 --> 00:37:48,910 Chodź. 821 00:37:48,910 --> 00:37:53,360 Więc HyperText Markup Language, to szczerze, po prostu sposób dla Ciebie 822 00:37:53,360 --> 00:37:57,990 do wyświetlania pewnych rzeczy w internecie. 823 00:37:57,990 --> 00:37:59,210 Więc jest to język znaczników. 824 00:37:59,210 --> 00:38:00,640 To nie jest język skryptowy. 825 00:38:00,640 --> 00:38:02,160 Nie ma logiki w tym. 826 00:38:02,160 --> 00:38:05,710 Jest to po prostu zmieniać wyświetlany jest sposobem coś. 827 00:38:05,710 --> 00:38:07,670 OK, więc to ważne rozróżnienie zrobić. 828 00:38:07,670 --> 00:38:12,030 Jest uważany za język znaczników, Nie językiem skryptowym. 829 00:38:12,030 --> 00:38:15,100 >> Mamy tu więc nasze znaczniki HTML. 830 00:38:15,100 --> 00:38:20,390 Na tym slajdzie są prawdopodobnie większość Te, które powinieneś znać 831 00:38:20,390 --> 00:38:22,390 i być naprawdę komfortowo. 832 00:38:22,390 --> 00:38:25,700 Tak oczywiście, mamy nasz tag HTML, który 833 00:38:25,700 --> 00:38:29,930 oznacza, że ​​wszystko w między tymi dwoma będzie HTML. 834 00:38:29,930 --> 00:38:33,070 Mamy jakiś związek, który oczywiście daje 835 00:38:33,070 --> 00:38:34,990 link do zewnętrznej strony internetowej. 836 00:38:34,990 --> 00:38:37,520 Niektóre tytuł, w naszej głowie tutaj. 837 00:38:37,520 --> 00:38:40,020 I mamy ciało h1, która jest nagłówek, 838 00:38:40,020 --> 00:38:42,260 więc to sprawiają, że miło i śmiałe i większe. 839 00:38:42,260 --> 00:38:46,040 A potem, mamy jedne p, który jest akapit. 840 00:38:46,040 --> 00:38:49,000 Powinieneś wiedzieć, i znać rzeczy 841 00:38:49,000 --> 00:38:54,030 jak, jak można wstawić obraz, są jakieś inne zajęcia nagłówka? 842 00:38:54,030 --> 00:38:57,240 I na pewno będzie wygodne z div. 843 00:38:57,240 --> 00:39:00,840 Więc te mają większość tagów które należy znać. 844 00:39:00,840 --> 00:39:04,370 Ale oczywiście, jak wszystko w CS 50, lista nie jest wyczerpująca. 845 00:39:04,370 --> 00:39:08,200 Więc upewnij się odświeżyć, że. 846 00:39:08,200 --> 00:39:13,260 >> CSS, więc CSS, jeśli ktoś z was oglądać Seminarium z mojego dwa tygodnie temu, 847 00:39:13,260 --> 00:39:16,250 jest tak naprawdę sposób projektować swoją stronę internetową? 848 00:39:16,250 --> 00:39:18,950 OK, więc mamy trochę język znaczników. 849 00:39:18,950 --> 00:39:23,220 HTML, które zajmuje tylko tekstu i w których może znajdować się na stronie. 850 00:39:23,220 --> 00:39:25,760 Ale CSS jest naprawdę co sprawia, że ​​jest ładna. 851 00:39:25,760 --> 00:39:30,690 Można mieć to w HTML pliki, ale jak mówimy o później, 852 00:39:30,690 --> 00:39:32,660 Jestem pewien, że to może być następny slajd, to 853 00:39:32,660 --> 00:39:35,620 Powszechną praktyką jest, a właściwie praktyki, które naprawdę zachęca, 854 00:39:35,620 --> 00:39:40,670 , aby zachować je oddzielić, gdy mówić o MVC i tego całego paradygmatu. 855 00:39:40,670 --> 00:39:42,490 To naprawdę co to zasila. 856 00:39:42,490 --> 00:39:46,110 >> Więc CSS jest po prostu sposobem na dokonać rzeczy wyglądają całkiem. 857 00:39:46,110 --> 00:39:50,500 Te rzeczy tutaj, jak Ciało i #title i .info, 858 00:39:50,500 --> 00:39:54,340 nazywane są one selektorów i co oni robią jest ich wybrać konkretne rzeczy 859 00:39:54,340 --> 00:39:59,260 w swoim pliku HTML i mają zastosowanie niezależnie od stylu, 860 00:39:59,260 --> 00:40:04,090 bez względu na rodzaj rzeczy, które chcesz, do tego konkretnego elementu swojej sieci 861 00:40:04,090 --> 00:40:04,590 strona. 862 00:40:04,590 --> 00:40:08,820 Więc tutaj mamy kolor tła i kolor 863 00:40:08,820 --> 00:40:12,450 i rodziny czcionek, który jest jest stosowane do tego, co znajduje się w organizmie. 864 00:40:12,450 --> 00:40:15,530 Jeśli więc spojrzał tutaj, to nie stosuje się w tytule. 865 00:40:15,530 --> 00:40:22,340 To stosuje się tylko do tego, co jest w tych selektorów ciała, OK? 866 00:40:22,340 --> 00:40:25,250 >> Z tytułu tutaj, to jest Będzie to samo, 867 00:40:25,250 --> 00:40:28,410 kolor tekstu jest niebieski tylko jedzie 868 00:40:28,410 --> 00:40:33,870 wpływać na to, co jest w zasięgu selektory tytuł. 869 00:40:33,870 --> 00:40:36,580 Jak również informacji tutaj tekst będzie różowy, 870 00:40:36,580 --> 00:40:38,600 bez względu na informacji, która jest tutaj. 871 00:40:38,600 --> 00:40:40,860 Jedyne więc, że będzie różowy na tej stronie 872 00:40:40,860 --> 00:40:44,100 jest data, od poniedziałku, 17 listopada 2014. 873 00:40:44,100 --> 00:40:48,770 OK, więc CSS jest po prostu sposobem na większą kontrolę over-- tak? 874 00:40:48,770 --> 00:40:51,850 >> PUBLICZNOŚCI: Dlaczego masz używać skrótu z tytułem? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: Następny slajd, obiecuję! 876 00:40:55,170 --> 00:40:56,810 Będziemy tam dostać. 877 00:40:56,810 --> 00:40:59,830 Tak to jest, dlaczego mamy używać skrótu. 878 00:40:59,830 --> 00:41:03,429 Więc selektorów wziąć na trzech głównych Formularze, że mówimy do was o. 879 00:41:03,429 --> 00:41:05,595 Fyou Chcę dowiedzieć się więcej, jest mnóstwo tam. 880 00:41:05,595 --> 00:41:07,540 Jest świetna dokumentacja CSS. 881 00:41:07,540 --> 00:41:12,680 Jest nazwa znacznika, który ma do czynienia z zaledwie normalnych znaczników w HTML. 882 00:41:12,680 --> 00:41:17,210 Więc h1, p, div, h2, te różne rzeczy. 883 00:41:17,210 --> 00:41:20,320 A może po prostu wymienić te, jak to jest. 884 00:41:20,320 --> 00:41:22,650 Tak więc, jak widzimy tutaj z Ciało, to jest normalne znacznik. 885 00:41:22,650 --> 00:41:26,660 Tak więc możemy po prostu umieścić ciało, kiedy mówimy w naszym pliku CSS. 886 00:41:26,660 --> 00:41:29,730 >> Z tytułu, cały powodu mają tego mieszania jest co mamy 887 00:41:29,730 --> 00:41:31,010 uważane ID. 888 00:41:31,010 --> 00:41:35,400 Tak Identyfikator powinien być zawsze unikatowa w obrębie strony HTML 889 00:41:35,400 --> 00:41:37,930 tak, że gdy jesteś odnosi się do tego, można 890 00:41:37,930 --> 00:41:41,990 wiem, że jesteś tylko odnosząc jednego konkretnego rzeczy. 891 00:41:41,990 --> 00:41:46,270 Więc w tym przypadku tutaj, w naszym h1 tutaj, CS 50 Przegląd sesji, 892 00:41:46,270 --> 00:41:47,810 mamy identyfikator tytułu. 893 00:41:47,810 --> 00:41:54,280 Aby więc po prostu zwrócić się do Kawałek naszej HTML, robimy tytuł skrótu. 894 00:41:54,280 --> 00:41:58,080 Wystarczy umownie, identyfikatory są oznaczone z mieszania przed nimi. 895 00:41:58,080 --> 00:42:01,650 W ten sam sposób, widzimy Informacje o to klasa. 896 00:42:01,650 --> 00:42:06,070 I tak jest klasa z CSS wyznaczony jako dot klasy 897 00:42:06,070 --> 00:42:08,895 lub dot cokolwiek to klasa. 898 00:42:08,895 --> 00:42:10,850 Więc w tym przypadku tutaj, to jest informacji. 899 00:42:10,850 --> 00:42:13,090 >> Więc biorę go z powrotem. 900 00:42:13,090 --> 00:42:16,200 Obie te byłyby różowy dla naszego CSS tutaj 901 00:42:16,200 --> 00:42:18,430 ponieważ oba mają klasę informacji. 902 00:42:18,430 --> 00:42:23,070 A w naszym pliku CSS, mamy wyznaczony że cokolwiek z grupy informacji 903 00:42:23,070 --> 00:42:24,120 jest różowy. 904 00:42:24,120 --> 00:42:25,968 Czy to ma sens? 905 00:42:25,968 --> 00:42:27,435 Tak? 906 00:42:27,435 --> 00:42:30,731 >> PUBLICZNOŚCI: Jeśli było zrobić wszystko w biały korpus, 907 00:42:30,731 --> 00:42:32,814 a następnie starać się coś w nim niebieski, 908 00:42:32,814 --> 00:42:34,770 to, że przyczyną problemów? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: Tak CSS kaskadowych arkuszy stylów. 910 00:42:37,310 --> 00:42:40,730 Więc to, co jest w kierunku Dno ma pierwszeństwo. 911 00:42:40,730 --> 00:42:44,080 Więc jeśli coś zrobić z ciałem, i zrobić wszystko, co białe, 912 00:42:44,080 --> 00:42:49,300 a następnie później zmienić tytuł lub zmienić tekst w ciele, 913 00:42:49,300 --> 00:42:50,560 nadpisuje to. 914 00:42:50,560 --> 00:42:55,360 Więc wszystko w kierunku Dno ma pierwszeństwo. 915 00:42:55,360 --> 00:42:56,730 Tak? 916 00:42:56,730 --> 00:42:59,627 >> WIDOWNI: i identyfikatory są unikalne, ale zajęcia mogą być bardziej? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Prawo. 918 00:43:00,210 --> 00:43:06,320 Więc identyfikatory powinny być unikalne, a zajęcia mogą odnoszą się do tak wielu rzeczy, jak chcesz. 919 00:43:06,320 --> 00:43:07,580 Jeszcze jakieś pytania? 920 00:43:07,580 --> 00:43:09,800 Tak. 921 00:43:09,800 --> 00:43:11,210 >> PUBLICZNOŚCI: [niesłyszalne]. 922 00:43:11,210 --> 00:43:13,509 Zastanawiam się, czy który robi różnicę. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Przykro mi, jakie było pytanie? 924 00:43:15,217 --> 00:43:18,960 PUBLICZNOŚCI: Jest mała "F" i kapitału "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: Więc różnica pomiędzy małym "f" i duże "F" 926 00:43:21,440 --> 00:43:22,606 nie powinno zmienić. 927 00:43:22,606 --> 00:43:26,330 Tak więc "f" będzie 15 albo sposób. 928 00:43:26,330 --> 00:43:28,130 Fajne, coś jeszcze? 929 00:43:28,130 --> 00:43:29,930 Każdy dobry, CSS? 930 00:43:29,930 --> 00:43:30,850 Tak? 931 00:43:30,850 --> 00:43:31,790 >> PUBLICZNOŚCI: Przykro nam. 932 00:43:31,790 --> 00:43:35,550 Czy masz klasę i identyfikator? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Tak, można. 934 00:43:38,030 --> 00:43:40,420 Rzeczy mogą mieć zarówno klasy i identyfikator. 935 00:43:40,420 --> 00:43:44,670 A ja bardzo polecam testując je na własną rękę. 936 00:43:44,670 --> 00:43:50,480 CSS dowiesz się najlepiej właśnie poprzez coś bardzo prosta strona internetowa, 937 00:43:50,480 --> 00:43:53,440 sporządzanie niektóre CSS, a tylko widząc, jak ich interakcji. 938 00:43:53,440 --> 00:43:56,970 A zyskasz bardzo dobry, intuicyjne wyczucie, jak to działa. 939 00:43:56,970 --> 00:43:58,810 >> OK, wszyscy dobrze z CSS? 940 00:43:58,810 --> 00:44:01,280 Jesteś wszystkim zamiar zrobić piękne strony internetowe z CSS teraz. 941 00:44:01,280 --> 00:44:05,460 OK, po prostu najlepsze praktyki, rzeczy, o których warto pamiętać, rzeczy 942 00:44:05,460 --> 00:44:09,810 that-- to dlaczego zadokować Ci projektanta i etażerka. 943 00:44:09,810 --> 00:44:11,820 Więc zamknij wszystkie znaczniki HTML. 944 00:44:11,820 --> 00:44:14,840 Więc jeśli masz otwarte nadwozie, nie powinno być blisko ciała. 945 00:44:14,840 --> 00:44:18,180 Jeśli masz otwartą pkt, nie powinno być blisko ust. 946 00:44:18,180 --> 00:44:19,555 Sprawdź swoją stronę sprawdza. 947 00:44:19,555 --> 00:44:23,330 Powinniście być bardzo znane z tego z p-set siedem 948 00:44:23,330 --> 00:44:26,350 z CS 50 finansów z walidator W3. 949 00:44:26,350 --> 00:44:28,340 I tak jak powiedziałem wcześniej, jeden z naszych wielkich paradygmatów 950 00:44:28,340 --> 00:44:33,780 oddziela swój styl z CSS od znaczników, które jest w języku HTML. 951 00:44:33,780 --> 00:44:36,900 A potem, oczywiście, mamy ten wielki XKCD tutaj. 952 00:44:36,900 --> 00:44:38,280 Yay, komiczny! 953 00:44:38,280 --> 00:44:41,340 >> OK, protokół TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Między nimi a HTTP, w zasadzie są oba protokoły. 955 00:44:44,650 --> 00:44:46,810 Więc może po prostu myśleć ich jako zbiór reguł 956 00:44:46,810 --> 00:44:50,110 które regulują jak rzeczy poruszać się po internecie. 957 00:44:50,110 --> 00:44:53,410 Więc kontroli transmisji Protokół lub protokół internetowy, 958 00:44:53,410 --> 00:44:57,280 jest tylko sposobem, aby upewnić że dane dociera tam, gdzie to będzie 959 00:44:57,280 --> 00:45:00,030 i że wiemy, czy jesteśmy coraz brakujących danych. 960 00:45:00,030 --> 00:45:03,520 Więc jeśli myślicie powrotem do wykładu kilka tygodni temu z Dawidem 961 00:45:03,520 --> 00:45:06,980 gdzie mieliśmy cztery koperty, że były ponumerowane jak jeden z czterech, 962 00:45:06,980 --> 00:45:11,300 dwa z czterech, trzech z czterech, czterech cztery, to jest po prostu zbiór zasad. 963 00:45:11,300 --> 00:45:13,830 Powiedzieliśmy, OK, gdy jesteśmy wysyłanie więcej niż jeden pakiet, 964 00:45:13,830 --> 00:45:16,610 będziemy liczyć to z tego, co to jest numer 965 00:45:16,610 --> 00:45:19,040 i ile łączna że Użytkownik powinien dostać. 966 00:45:19,040 --> 00:45:22,540 >> A to jest po prostu mówienie kto odbiera dane, czy 967 00:45:22,540 --> 00:45:26,120 zdobyć wszystko, lub jeśli coś zgubił po drodze. 968 00:45:26,120 --> 00:45:28,840 I muszą prosić o nią ponownie. 969 00:45:28,840 --> 00:45:31,140 To jest naprawdę tylko zbiór przepisów. 970 00:45:31,140 --> 00:45:33,650 To jak można myśleć o tym, OK? 971 00:45:33,650 --> 00:45:37,700 A także, że określa port, który Chłopaki can-- Wiem podczas wykładu, 972 00:45:37,700 --> 00:45:39,170 mieli całą listę portów. 973 00:45:39,170 --> 00:45:41,630 Ale nie mamy ich tu teraz. 974 00:45:41,630 --> 00:45:45,290 >> Tak Protokół HTTP jest, ponownie, jest to kolejny protokół. 975 00:45:45,290 --> 00:45:48,630 Więc jest to kolejny zbiór zasad które regulują, w tym przypadku, 976 00:45:48,630 --> 00:45:51,130 jak hipertekst jest przenoszony. 977 00:45:51,130 --> 00:45:54,340 Więc po prostu pozwala przeglądarek porozmawiać z serwerów internetowych. 978 00:45:54,340 --> 00:45:56,910 I jak tu powiedziane, że to jak ludzki uzgadniania. 979 00:45:56,910 --> 00:46:00,480 To jest po prostu sposobem rządzenia jak serwer WWW jest 980 00:46:00,480 --> 00:46:02,690 będzie współpracować z Twojej przeglądarce. 981 00:46:02,690 --> 00:46:05,660 A my mamy tylko kilka przykładów. 982 00:46:05,660 --> 00:46:09,100 Mamy kilka wniosków o gdzie GET jest metoda. 983 00:46:09,100 --> 00:46:13,760 Mamy protokołu HTTP 1.1, który jest wersja protokołu dla nas. 984 00:46:13,760 --> 00:46:17,230 A potem, gospodarz, który jest co my rzeczywiście próbuje uzyskać dostęp. 985 00:46:17,230 --> 00:46:21,800 A potem, jak widać tutaj, że uzyskać odpowiedź w tym 200 986 00:46:21,800 --> 00:46:25,032 OK, jak nasz kod odpowiedzi HTTP. 987 00:46:25,032 --> 00:46:27,240 Mamy duży listę Idę ciągnąć się w ciągu jednej sekundy 988 00:46:27,240 --> 00:46:29,430 że chłopaki powinni znać. 989 00:46:29,430 --> 00:46:35,750 I mamy tego typu treści text / html, który po prostu mówi, jaki rodzaj danych 990 00:46:35,750 --> 00:46:39,990 jesteśmy otrzymaniu od serwera, OK? 991 00:46:39,990 --> 00:46:44,230 Ten gospodarz i tego typu treści są częścią nagłówków HTTP. 992 00:46:44,230 --> 00:46:49,610 Możesz mieć tak mało lub tak mało jak konieczne dla kontekstu, co 993 00:46:49,610 --> 00:46:50,580 masz do czynienia. 994 00:46:50,580 --> 00:46:53,371 Czasami można mieć dużo Informacje pochodzące z serwera. 995 00:46:53,371 --> 00:46:56,040 Być może są one prośbą dużo informacji od użytkownika. 996 00:46:56,040 --> 00:46:57,600 Zmienia się ona w zależności od kontekstu. 997 00:46:57,600 --> 00:47:01,144 Jeśli spojrzeć na CS 50 Study, jest dużo więcej na ten temat. 998 00:47:01,144 --> 00:47:03,060 Ale mamy dużo, aby uzyskać dzięki, więc będę 999 00:47:03,060 --> 00:47:05,760 na razie śmiało to jest OK z wami? 1000 00:47:05,760 --> 00:47:07,960 Cool. 1001 00:47:07,960 --> 00:47:08,460 Trzymaj się. 1002 00:47:08,460 --> 00:47:11,182 I na pewno mają, że Cała lista of-- huh! 1003 00:47:11,182 --> 00:47:13,140 Nie wiem, dlaczego tak jest całą drogę tutaj. 1004 00:47:13,140 --> 00:47:15,660 Myślałem, że jestem dosłownie przeniósł go, gdy byłem sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> DAVIN: Czy chcesz go nauczyć? 1006 00:47:16,540 --> 00:47:17,420 A może chcesz, żebym go nauczyć? 1007 00:47:17,420 --> 00:47:20,010 >> PUBLICZNOŚCI: Myślałem, że mogliśmy po prostu pokazać je na początek. 1008 00:47:20,010 --> 00:47:22,210 To znaczy, można przejść do im dalej, ale 1009 00:47:22,210 --> 00:47:26,030 myślał, że bardziej sensowne od I Po prostu mówisz statusu HTTP. 1010 00:47:26,030 --> 00:47:28,200 Więc oto cała lista. 1011 00:47:28,200 --> 00:47:31,730 Myślę, że to, co się wydarzy jest Davin pójdzie do nich później. 1012 00:47:31,730 --> 00:47:35,330 Ale to nie cała lista, Podgląd smaku przyjść. 1013 00:47:35,330 --> 00:47:41,640 OK, mamy zamiar blow-- to będzie być oczywiście PHP katastrofy, jak żaden inny. 1014 00:47:41,640 --> 00:47:44,874 >> Więc PHP Hypertext Preprocessor, to rekurencyjny backronym, 1015 00:47:44,874 --> 00:47:46,540 co oznacza, że ​​został nazwany coś innego. 1016 00:47:46,540 --> 00:47:49,050 A potem były one podobne, to naprawdę nie ma sensu. 1017 00:47:49,050 --> 00:47:52,210 Więc po prostu nazwany it-- i to był skrót, 1018 00:47:52,210 --> 00:47:54,840 więc po prostu sprawiło, że PHP hipertekst preprocesora, które 1019 00:47:54,840 --> 00:47:55,980 po prostu nie ma sensu. 1020 00:47:55,980 --> 00:47:57,714 Zabawa historia. 1021 00:47:57,714 --> 00:47:58,880 Jest to język programowania. 1022 00:47:58,880 --> 00:48:02,360 Tak jak podkreślam, że HTML nie jest językiem programowania, 1023 00:48:02,360 --> 00:48:05,350 jest to język znaczników, PHP jest językiem programowania. 1024 00:48:05,350 --> 00:48:07,422 Jak wiesz, to jest bo nie jest logiczne. 1025 00:48:07,422 --> 00:48:08,380 Istnieje warunkowe. 1026 00:48:08,380 --> 00:48:12,750 Mamy zmienne, podczas gdy my mają żadnej z tych rzeczy w HTML. 1027 00:48:12,750 --> 00:48:16,960 >> W porządku, to mamy ten mały trochę tu, że jest jak smak PHP. 1028 00:48:16,960 --> 00:48:20,510 Tak więc podstawy, nazwy zmiennych zaczynają się od znaku dolara. 1029 00:48:20,510 --> 00:48:21,500 Wiele osób lubi to. 1030 00:48:21,500 --> 00:48:22,371 Przypomina nam pieniądze. 1031 00:48:22,371 --> 00:48:22,995 To wszystko jest świetnie. 1032 00:48:22,995 --> 00:48:25,280 Wszyscy chcemy PHP. 1033 00:48:25,280 --> 00:48:28,020 Więc nie określają Typ zmiennej już. 1034 00:48:28,020 --> 00:48:29,995 Jest ona określana w czasie wykonywania. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 Tłumacz będzie jak, oh, my po prostu uruchomić poprzez, 1037 00:48:35,890 --> 00:48:39,565 i w zależności od kontekstu, Zobaczymy, co rodzaje typów 1038 00:48:39,565 --> 00:48:41,560 zmienne te muszą mieć. 1039 00:48:41,560 --> 00:48:42,815 Nie ma główną funkcją. 1040 00:48:42,815 --> 00:48:43,690 Rzeczy po prostu uruchomić. 1041 00:48:43,690 --> 00:48:47,851 Chłopaki ze swoim importu w swoim Ostatnia p-set, zauważysz to. 1042 00:48:47,851 --> 00:48:49,350 Nie było naprawdę główną funkcją. 1043 00:48:49,350 --> 00:48:52,070 Po prostu napisał, co chcesz się zdarzyć. 1044 00:48:52,070 --> 00:48:53,280 I to właśnie niby się stało. 1045 00:48:53,280 --> 00:48:56,760 Więc to jest PHP dla Ciebie. 1046 00:48:56,760 --> 00:48:59,180 >> Tablice są bardzo podobne. 1047 00:48:59,180 --> 00:49:01,270 Mamy jeszcze ten wspornik. 1048 00:49:01,270 --> 00:49:05,940 Tutaj mamy kilka zmienną nazywa arr, i to równa 1049 00:49:05,940 --> 00:49:08,540 to-- mamy nasze normalne notacja nawiasów. 1050 00:49:08,540 --> 00:49:10,630 A my mamy jakąś wartość klucza. 1051 00:49:10,630 --> 00:49:14,630 I duża różnica między C i PHP tablice 1052 00:49:14,630 --> 00:49:19,330 jest to, że możemy mieć ten associate-- możemy powiązać wartości do kluczy. 1053 00:49:19,330 --> 00:49:22,440 Więc zamiast tylko o tablica jest indeksowana 1054 00:49:22,440 --> 00:49:26,630 od liczby lub pozycji tego elementu w tablicy, 1055 00:49:26,630 --> 00:49:29,060 faktycznie możemy powiązać go z kluczem. 1056 00:49:29,060 --> 00:49:36,700 Gdzie można powiedzieć, OK, chcę cokolwiek Wartość ta jest związana z owoców. 1057 00:49:36,700 --> 00:49:39,280 A może mamy owoce udał się do bananów. 1058 00:49:39,280 --> 00:49:41,760 Tak że to powrót banana do nas. 1059 00:49:41,760 --> 00:49:44,100 >> Ale w zasadzie, najbardziej potężne rzeczą jest 1060 00:49:44,100 --> 00:49:47,960 jest to, że jeśli faceci pamiętam demo z wykładu, gdzie w zasadzie 1061 00:49:47,960 --> 00:49:53,050 przepisał ortografii w PHP, i to was-- wyszukiwanie było naprawdę po prostu lubię, 1062 00:49:53,050 --> 00:49:55,007 istnieje ten klucz? 1063 00:49:55,007 --> 00:49:56,590 To naprawdę rodzaj władzy to. 1064 00:49:56,590 --> 00:49:58,560 Nie trzeba do iteracji za pośrednictwem swojej tablicy. 1065 00:49:58,560 --> 00:50:00,311 Nie musisz wiedzieć to, co jest w przestrzeni. 1066 00:50:00,311 --> 00:50:01,976 To może być na końcu lub na początku. 1067 00:50:01,976 --> 00:50:04,790 Tak długo, jak wiesz, klucz który jest związany z wartością, 1068 00:50:04,790 --> 00:50:09,740 PHP może tylko pluć, że wartość prawo wycofać się na ciebie, OK? 1069 00:50:09,740 --> 00:50:12,960 >> A następnie, również po prostu tylko dlatego, że mają 1070 00:50:12,960 --> 00:50:16,750 może mieć kluczowe par wartości nie oznacza, że ​​musisz. 1071 00:50:16,750 --> 00:50:19,180 Możesz też po prostu stworzyć normalnie tablica jak tutaj, 1072 00:50:19,180 --> 00:50:21,540 na dole, gdzie jest to tylko jeden, dwa, trzy, cztery. 1073 00:50:21,540 --> 00:50:22,510 To są nasze wartości. 1074 00:50:22,510 --> 00:50:25,320 A w rzeczywistości, ich klucze są indeksy. 1075 00:50:25,320 --> 00:50:26,830 Dlatego kluczem dla jednego wynosi zero. 1076 00:50:26,830 --> 00:50:28,610 Kluczowym dla dwóch będzie jeden. 1077 00:50:28,610 --> 00:50:31,910 Tak dalej, i tak dalej, o ile jawnie przypisać klawisz, 1078 00:50:31,910 --> 00:50:34,630 można założyć, że wartość jest tylko ich indeksu. 1079 00:50:34,630 --> 00:50:37,290 Czy to ma sens dla każdego? 1080 00:50:37,290 --> 00:50:38,070 Żadnych pytań? 1081 00:50:38,070 --> 00:50:38,930 Niesamowite. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach jest sposobem iterację swoich tablic. 1083 00:50:44,420 --> 00:50:47,490 Tak więc mamy tu coś, tylko ogólna struktura. 1084 00:50:47,490 --> 00:50:51,020 Więc foreach, nazwa naszej tablicy, a co 1085 00:50:51,020 --> 00:50:53,930 chcesz dzwonić do siebie element macierzy, 1086 00:50:53,930 --> 00:50:57,270 i możemy zrobić coś z ten element lub wartości. 1087 00:50:57,270 --> 00:50:58,680 Tak więc mamy tu przykład. 1088 00:50:58,680 --> 00:51:05,770 Mamy asocjacyjne Tablica z tych dwóch pozycji 1089 00:51:05,770 --> 00:51:10,080 zaopatrzonym jest związany z foo a QUX są związane z baz. 1090 00:51:10,080 --> 00:51:12,180 Tak Klawisze są bla i baz. 1091 00:51:12,180 --> 00:51:13,650 Wartości są bar i qux. 1092 00:51:13,650 --> 00:51:18,560 Więc foreach, mamy tablicę Tutaj jako pary wartości klucza. 1093 00:51:18,560 --> 00:51:21,560 To pozwala nam na dostęp zarówno klucz i wartość. 1094 00:51:21,560 --> 00:51:23,680 Być może po prostu chcesz wartości, w tym przypadku 1095 00:51:23,680 --> 00:51:27,640 można po prostu zrobić jak arr jako wartość $, a następnie 1096 00:51:27,640 --> 00:51:30,640 są po prostu dostęp do wartości jak iterację. 1097 00:51:30,640 --> 00:51:32,600 Ale być może, dla niektórych Powodem, chcesz klucz, 1098 00:51:32,600 --> 00:51:35,460 dlatego też wybrałam W tym przykładzie, zamiast. 1099 00:51:35,460 --> 00:51:40,240 Więc rzeczywiście można manipulować klucz i wartość, w tym przypadku. 1100 00:51:40,240 --> 00:51:41,070 OK? 1101 00:51:41,070 --> 00:51:41,905 Pytanie? 1102 00:51:41,905 --> 00:51:44,279 >> PUBLICZNOŚCI: Jeśli chciałeś po prostu manipulować klucz, by 1103 00:51:44,279 --> 00:51:45,910 co musisz zrobić foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> Alison: Dokładnie. 1105 00:51:47,360 --> 00:51:50,560 Więc jeśli chcesz manipulować tylko klucz, 1106 00:51:50,560 --> 00:51:53,680 będzie trzeba jeszcze tego składni, ponieważ jeśli tylko 1107 00:51:53,680 --> 00:51:56,930 mają arr jako coś, jako pierwsze, jest to 1108 00:51:56,930 --> 00:52:00,070 zakładam chcesz wartości, a nie klucz. 1109 00:52:00,070 --> 00:52:06,780 Więc jeśli kiedykolwiek po prostu tak jak arr, jak, może to jest jak $ elementu, 1110 00:52:06,780 --> 00:52:11,670 to się założyć, że pytasz na tylko wartość w każdym punkcie. 1111 00:52:11,670 --> 00:52:13,879 Jeśli wyraźnie chcą zrobić coś z kluczem, 1112 00:52:13,879 --> 00:52:16,170 nawet jeśli nie zamierzasz zrobić coś z wartości, 1113 00:52:16,170 --> 00:52:18,430 trzeba tę strukturę że mamy tutaj 1114 00:52:18,430 --> 00:52:22,330 dokąd się wybierasz, wyraźnie prosząc na klucz i wartości. 1115 00:52:22,330 --> 00:52:24,170 Świetne pytanie. 1116 00:52:24,170 --> 00:52:25,940 Coś jeszcze? 1117 00:52:25,940 --> 00:52:27,490 Cool. 1118 00:52:27,490 --> 00:52:29,911 >> Dobrze, PHP i HTML. 1119 00:52:29,911 --> 00:52:31,410 Och, wracamy do p-set siedem ponownie. 1120 00:52:31,410 --> 00:52:35,380 Tak to powinno wyglądać trochę znajomo. 1121 00:52:35,380 --> 00:52:41,760 Więc to jest jakiś prosty formularz HTML że ma jakąś nazwę wejściową cześć. 1122 00:52:41,760 --> 00:52:43,820 I widzimy, mamy metody GET. 1123 00:52:43,820 --> 00:52:47,430 A jeśli pamiętamy z naszego p-set, gdy formularz jest składany, 1124 00:52:47,430 --> 00:52:58,130 wysyła tablicę o nazwie $ _GET, który ma wszystkie z tych wejść lub zmiennych z 1125 00:52:58,130 --> 00:53:00,490 forma, która powinna być manipulowane w naszej PHP. 1126 00:53:00,490 --> 00:53:03,320 Więc w tym przypadku, użytkownik stawiałaby w ich imieniu. 1127 00:53:03,320 --> 00:53:04,370 Podnoszą oni go. 1128 00:53:04,370 --> 00:53:07,810 I widzimy, że mamy trochę tablicę tutaj. 1129 00:53:07,810 --> 00:53:09,080 Mamy tablicę GET. 1130 00:53:09,080 --> 00:53:11,510 A my dostępu nazwę. 1131 00:53:11,510 --> 00:53:15,070 >> Tak, że mówi, OK, daj mi Wartość, która jest związana z nazwą, 1132 00:53:15,070 --> 00:53:16,550 nazwa jest kluczem tutaj. 1133 00:53:16,550 --> 00:53:21,400 I że mapy bezpośrednio do tego, co powiedzieliśmy nasze nazwisko wejście jest. 1134 00:53:21,400 --> 00:53:28,960 Więc to było co daje klucz do tego, co będzie w macierzy tutaj. 1135 00:53:28,960 --> 00:53:31,220 Czy to ma sens dla każdego? 1136 00:53:31,220 --> 00:53:32,070 Tak? 1137 00:53:32,070 --> 00:53:36,240 >> PUBLICZNOŚCI: Czy nazwisko w GET odnoszą do purpurowej linii w [niesłyszalne]? 1138 00:53:36,240 --> 00:53:37,740 >> Alison: Odnosi się do tego tutaj. 1139 00:53:37,740 --> 00:53:43,840 Więc to pole tutaj, odnosi się do tej nazwy tutaj. 1140 00:53:43,840 --> 00:53:47,800 Więc to może być nazwany jak numer telefonu, czy cokolwiek innego. 1141 00:53:47,800 --> 00:53:51,790 Nazwa ta rzeczywiście mówi, co dzwonisz to pole? 1142 00:53:51,790 --> 00:53:53,600 Jak zamierzacie odnoszą się do tej roli? 1143 00:53:53,600 --> 00:53:57,670 I ta nazwa jest faktycznie jak jesteśmy mówiąc to pole nazywa nazwę. 1144 00:53:57,670 --> 00:53:59,224 To jak jedziemy do niego dostęp. 1145 00:53:59,224 --> 00:54:02,070 >> Publiczność: Tak to jest jak, Nazwa wejścia równa Bob, and-- 1146 00:54:02,070 --> 00:54:04,380 >> Alison: Racja, to Bob by się tam. 1147 00:54:04,380 --> 00:54:06,090 Dokładnie. 1148 00:54:06,090 --> 00:54:07,800 Każdy fajne? 1149 00:54:07,800 --> 00:54:10,990 W porządku, więc GET kontra POST to są dwa główne sposoby 1150 00:54:10,990 --> 00:54:14,880 że przekazywanie danych w żądaniu HTTP. 1151 00:54:14,880 --> 00:54:17,370 Powinniście widziałem zarówno tych z nadzieją. 1152 00:54:17,370 --> 00:54:20,940 Więc z GET, informacje przechodzi przez URL. 1153 00:54:20,940 --> 00:54:23,490 Więc jeśli kiedykolwiek zrobić Google wyszukiwania, YouTube, będziesz 1154 00:54:23,490 --> 00:54:25,130 Prawdopodobnie zauważysz jakiś znak zapytania. 1155 00:54:25,130 --> 00:54:28,230 A potem, wszystkie słowa że po prostu umieścić tam. 1156 00:54:28,230 --> 00:54:31,410 I POST przekazuje dane w treści wiadomości HTTP. 1157 00:54:31,410 --> 00:54:36,922 Tak więc w przeciwieństwie GET, to rodzaj rozważyć że dane są ukryte przed użytkownikiem. 1158 00:54:36,922 --> 00:54:38,630 Ale to, co naprawdę ważne, aby zrozumieć 1159 00:54:38,630 --> 00:54:44,040 jest to, że wciąż tak samo niebezpieczny jak GET. 1160 00:54:44,040 --> 00:54:48,780 Analogia Lubię używać, jeśli jest masz swój numer konta bankowego 1161 00:54:48,780 --> 00:54:52,795 i zapisz go na zewnątrz koperty, to dość niebezpieczne. 1162 00:54:52,795 --> 00:54:55,920 Jeśli było napisać na kartce papier i umieścić go wewnątrz koperty, 1163 00:54:55,920 --> 00:54:58,850 nadal jest bardzo niebezpieczne, ponieważ wszystko co musisz zrobić, to otworzyć, że się 1164 00:54:58,850 --> 00:55:03,480 i spojrzeć na rzeczywistej zawartości wiadomości, aby zobaczyć, że. 1165 00:55:03,480 --> 00:55:08,310 Więc to jest "ukryty", a ludzie lubią myślę, że to bezpieczne, ale to naprawdę nie jest. 1166 00:55:08,310 --> 00:55:11,000 I jestem pewien, Davin będzie dostać się, że więcej, być może. 1167 00:55:11,000 --> 00:55:12,850 Ale to jest ważne rozróżnienie zrobić 1168 00:55:12,850 --> 00:55:15,820 i coś naprawdę dobrze zrozumieć. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Wszystkie rzeczy, które widzieliśmy tak niedawno! 1171 00:55:22,220 --> 00:55:25,400 Więc nie jest to w zasadzie tylko zaprojektowane, oczywiście, do zarządzania danymi. 1172 00:55:25,400 --> 00:55:30,560 Chłopaki mieli dużo doświadczenia z to w tabelach z PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 A istnieją cztery wspólne zapytania że chcemy wy wiedzieć. 1174 00:55:34,100 --> 00:55:37,304 Więc nie ma aktualizacji, wkładka, wybrać i usunąć. 1175 00:55:37,304 --> 00:55:38,970 Więc upewnij się, że wiesz, że ci naprawdę dobrze. 1176 00:55:38,970 --> 00:55:40,960 Mamy zamiar iść przez nich bardzo szybko. 1177 00:55:40,960 --> 00:55:44,340 >> Więc aktualizacji, naprawdę, jak to, co Może myślisz, że to robi, 1178 00:55:44,340 --> 00:55:46,740 to po prostu aktualizuje dane w bazie danych. 1179 00:55:46,740 --> 00:55:48,750 Tak więc mamy tu jakiś przykład. 1180 00:55:48,750 --> 00:55:53,310 Jest to ogólnie Struktura kwerendy aktualizacji. 1181 00:55:53,310 --> 00:55:56,150 Więc zaktualizować tabelę że mówimy. 1182 00:55:56,150 --> 00:56:00,520 I chcemy, aby ustawić pewne wartości, niektóre kolumny 1183 00:56:00,520 --> 00:56:02,600 równa określonych wartości. 1184 00:56:02,600 --> 00:56:07,500 Więc to po prostu aktualizuje tabelę, zmieniając Wartości w wszystkich wierszy w tym przypadku. 1185 00:56:07,500 --> 00:56:13,690 Więc w tym jednym tu, rzeczywista Przykład mamy insert-- przykro. 1186 00:56:13,690 --> 00:56:17,630 Zaawansowane, że zjeżdżalnia beze mnie wiedząc. 1187 00:56:17,630 --> 00:56:22,230 >> Więc ta tabela aktualizacje ustawić kol1 równa do VAL1 gdzie dom równa się "Kurier". 1188 00:56:22,230 --> 00:56:25,300 Co to się robi, jest tylko zmienia, tylko 1189 00:56:25,300 --> 00:56:28,130 aktualizuje te wartości w konkretnych miejscach. 1190 00:56:28,130 --> 00:56:32,300 A więc w tym pierwszym, zmienia ich Wartości dla wszystkiego w tabeli, 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 Zapowiada się to zmienić kolumny dla każdego wpisu, 1193 00:56:35,820 --> 00:56:37,020 dla każdego rzędu. 1194 00:56:37,020 --> 00:56:40,840 Ale to, gdzie mógłbyś myśleć o nim jako kwalifikator. 1195 00:56:40,840 --> 00:56:44,020 Więc to będzie tylko zmienić to w bardzo specyficznych miejscach. 1196 00:56:44,020 --> 00:56:47,840 Tak więc w p-set siedem, kiedy Może aktualizacja kwoty środków pieniężnych 1197 00:56:47,840 --> 00:56:53,050 że użytkownik miał, to pewnie miał gdzieś ID równa identyfikator sesji, prawda? 1198 00:56:53,050 --> 00:56:55,280 >> Ponieważ nie chciał zmienić ilość gotówki 1199 00:56:55,280 --> 00:56:57,630 dla każdego, kto wykorzystywał swoją stronę. 1200 00:56:57,630 --> 00:57:00,480 Chciałeś zmienić go na jeden konkretnej osoby, osoba ta jest 1201 00:57:00,480 --> 00:57:02,410 kto używał go w tym czasie. 1202 00:57:02,410 --> 00:57:04,320 Prawda? 1203 00:57:04,320 --> 00:57:07,510 OK, więc włożyć, wkładki pewne wartości do tabel. 1204 00:57:07,510 --> 00:57:11,650 To jak, kiedy jesteś stworzenie zupełnie nowego użytkownika. 1205 00:57:11,650 --> 00:57:14,240 Ogólna struktura tutaj bez względu na to wstawić do tabeli 1206 00:57:14,240 --> 00:57:15,680 mówimy. 1207 00:57:15,680 --> 00:57:18,910 Wartości, za wartości, które właściwie chcemy wstawić. 1208 00:57:18,910 --> 00:57:23,060 OK, więc jak widzimy tutaj, że nie wstawić do tabeli. 1209 00:57:23,060 --> 00:57:27,790 To konkretne kolumny z ich odzwierciedlał wartości. 1210 00:57:27,790 --> 00:57:29,940 Więc to mówi, wkładka nowy wiersz zawierający 1211 00:57:29,940 --> 00:57:33,660 Wartości wart1 i wart2 pod te konkretne kolumny. 1212 00:57:33,660 --> 00:57:39,240 >> Więc może chcesz tylko wypełnić z połowy rzeczy w tym samym wierszu. 1213 00:57:39,240 --> 00:57:41,150 To właśnie ta część tutaj pozwala zrobić. 1214 00:57:41,150 --> 00:57:43,280 Pozwala on w rzeczywistości określić, która część. 1215 00:57:43,280 --> 00:57:44,244 Tak? 1216 00:57:44,244 --> 00:57:52,150 >> PUBLICZNOŚCI: można tylko [niesłyszalne] komórki w wierszu [niesłyszalne]? 1217 00:57:52,150 --> 00:57:55,000 >> Alison: Jeśli tylko wypełnić niektóre części swojej rzędu, 1218 00:57:55,000 --> 00:57:57,480 Reszta z tych komórek są po prostu puste. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Tak długo, jak pozwala im na być pusta, to nie jest problem. 1221 00:58:05,660 --> 00:58:09,570 Jeśli próbujesz uzyskać do nich dostęp, to zamiar wrócić trochę pusty element. 1222 00:58:09,570 --> 00:58:13,850 Jednak ważne jest, aby wiedzieć że w niektórych tabelach 1223 00:58:13,850 --> 00:58:16,690 oni, aby móc być null. 1224 00:58:16,690 --> 00:58:18,890 Możesz biegać w Problem podczas p-set 1225 00:58:18,890 --> 00:58:21,320 bo nie dopuszczać z Twoich wartości null. 1226 00:58:21,320 --> 00:58:26,110 Ale można określić Opcjonalna wartość w tabeli. 1227 00:58:26,110 --> 00:58:29,640 >> OK, wybierz, więc jest to po prostu sposobem na uzyskanie 1228 00:58:29,640 --> 00:58:33,790 szczegółowe dane w tabeli niektóre identyfikator, który chcesz. 1229 00:58:33,790 --> 00:58:37,990 Więc wybierz gwiazda z tabeli gdzie kol równa coś po prostu oznacza, 1230 00:58:37,990 --> 00:58:43,820 daj mi wszystkie dane związane gdzie ten konkretny kolumna jest prawdą. 1231 00:58:43,820 --> 00:58:49,020 Więc w tym przypadku gwiazdy będzie zwrócić cały wiersz do ciebie, dobrze? 1232 00:58:49,020 --> 00:58:54,880 >> I wtedy, w tym przypadku, wybierz gwiazdę Tabela po prostu daje całą tabelę. 1233 00:58:54,880 --> 00:58:58,940 A następnie usuń oczywiście, po prostu usuwa wiersz z tabeli. 1234 00:58:58,940 --> 00:59:01,320 Więc usunąć z tabeli, co tabeli jesteśmy 1235 00:59:01,320 --> 00:59:06,830 odwołującego, gdzie posiadanie identyfikator lub jakiś warunek jest prawdziwy. 1236 00:59:06,830 --> 00:59:07,720 Tak? 1237 00:59:07,720 --> 00:59:08,700 >> PUBLICZNOŚCI: Pytanie. 1238 00:59:08,700 --> 00:59:10,699 Dlaczego używasz podwójna cytaty i czy Ciebie 1239 00:59:10,699 --> 00:59:13,600 zrobić cudzysłowia lub pojedyncze cytaty, czy to robi różnicę? 1240 00:59:13,600 --> 00:59:18,235 >> Alison: Podwójne cudzysłowy lub apostrofy nie dokonać zmian w SQL. 1241 00:59:18,235 --> 00:59:19,610 Myślałem, że widziałem jedno pytanie. 1242 00:59:19,610 --> 00:59:20,814 Tak? 1243 00:59:20,814 --> 00:59:25,070 >> PUBLICZNOŚCI: Czy to nie wpływa co dostaje uciekł z kwerendy? 1244 00:59:25,070 --> 00:59:27,945 >> Alison: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Co masz na myśli uciekł z kwerendy? 1246 00:59:31,410 --> 00:59:36,870 >> PUBLICZNOŚCI: Jeśli ktoś ma jedno zapytanie w formie of-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Gdyby ktoś umieścić pojedynczy cudzysłów w, 1248 00:59:39,862 --> 00:59:43,560 to tak długo, jak jesteś odkażania Twój wkład, to nie ma znaczenia. 1249 00:59:43,560 --> 00:59:46,205 Ale jeśli używasz pojedyncza cytat i są nieprawidłowo 1250 00:59:46,205 --> 00:59:47,914 ucieczki wprowadzanych danych, to tak, że trzeba 1251 00:59:47,914 --> 00:59:51,079 umieścić pojedynczy cudzysłów w celu przerwania Twój kod. jeśli używasz cudzysłowy, 1252 00:59:51,079 --> 00:59:53,580 muszą umieścić podwójne Cytując złamać kod. 1253 00:59:53,580 --> 00:59:56,163 Ale tak długo, jak można uciec rzeczy prawidłowo, to nie ma znaczenia. 1254 00:59:56,163 --> 00:59:59,220 To po prostu się do tłumaczenia do odpowiedniego symbolu w każdym razie. 1255 00:59:59,220 --> 01:00:02,332 >> PUBLICZNOŚCI: Co ucieczka oznacza? 1256 01:00:02,332 --> 01:00:04,040 Alison: Cóż, jak dezynfekcja i ucieczki. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 Egzamin, który mamy, wielkie XKCD komiks, że pull up, gdzie trzeba, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: To ostatni slajd. 1261 01:00:16,670 --> 01:00:18,500 Alison: To ostatni slajd, naprawdę? 1262 01:00:18,500 --> 01:00:20,200 O mój Boże. 1263 01:00:20,200 --> 01:00:21,780 Nie idziemy, doskonały. 1264 01:00:21,780 --> 01:00:27,900 OK, więc w zasadzie można wstrzyknąć coś w tym zapytaniu SQL 1265 01:00:27,900 --> 01:00:30,560 gdzie łamie ci Kod lub jako David pokazał 1266 01:00:30,560 --> 01:00:38,460 w klasie, jeśli mamy jakiś singiel cytat 1 wynosi 1 i jeśli w naszym kodzie, 1267 01:00:38,460 --> 01:00:41,230 po prostu bezpośrednio kopiować, że i mamy kończący pojedynczy cudzysłów, 1268 01:00:41,230 --> 01:00:44,740 co się dzieje, to mamy niektóre wyrażenia, 1269 01:00:44,740 --> 01:00:48,680 wartość true, które będą niech ktoś wejść do bazy danych 1270 01:00:48,680 --> 01:00:51,720 a otrzymasz dane, które nie chce im się. 1271 01:00:51,720 --> 01:00:54,240 Więc odkażania wejść po prostu oznacza, upewniając się, 1272 01:00:54,240 --> 01:00:57,680 że uciekają one znaków i ich wyznaczania 1273 01:00:57,680 --> 01:01:01,720 jako znaki, a nie rzeczy które powinny mieć 1274 01:01:01,720 --> 01:01:04,990 należy rozumieć dosłownie w naszej instrukcji SQL. 1275 01:01:04,990 --> 01:01:09,980 >> Tak wielka rzecz, że powiedział że chłopaki powinien używać 1276 01:01:09,980 --> 01:01:13,650 były HTML znaki specjalne, która jest czymś 1277 01:01:13,650 --> 01:01:15,730 że warto przyjrzeć. 1278 01:01:15,730 --> 01:01:17,240 OK, usunąć. 1279 01:01:17,240 --> 01:01:19,450 Typy danych, to wszystko będzie w Internecie. 1280 01:01:19,450 --> 01:01:23,510 Ponieważ mamy 15 minut w lewo, jestem tylko zamiar iść w prawo przez to. 1281 01:01:23,510 --> 01:01:28,500 PHP i SQL, w zasadzie to jest po prostu mieliśmy funkcję kwerend 1282 01:01:28,500 --> 01:01:31,520 pomógł chronić przed te złośliwe ataki. 1283 01:01:31,520 --> 01:01:33,970 Jeśli więc używać zapytania, byliśmy upewniając 1284 01:01:33,970 --> 01:01:36,560 że rzeczy zostały odkażone i etażerka. 1285 01:01:36,560 --> 01:01:41,070 >> MVC jest właśnie paradygmat projektowania, więc model, widok, kontroler. 1286 01:01:41,070 --> 01:01:44,200 To jest po prostu sposobem na utrzymanie rzeczy miły i rozdzielić w ten sam sposób, 1287 01:01:44,200 --> 01:01:47,100 że mamy tendencję do czynnika Kod do funkcji się. 1288 01:01:47,100 --> 01:01:53,390 To jest po prostu ramy web design że pozwala na to samo. 1289 01:01:53,390 --> 01:01:54,760 Zamierzam pominąć. 1290 01:01:54,760 --> 01:01:58,530 >> To jest coś, co byłoby super wygodne z. 1291 01:01:58,530 --> 01:02:01,132 To świetny stolik tam. 1292 01:02:01,132 --> 01:02:03,090 To daje funkcję Przykład modelu. 1293 01:02:03,090 --> 01:02:05,473 Mam zamiar po prostu przez to, bo I naprawdę chcesz Davin, aby móc rozmawiać. 1294 01:02:05,473 --> 01:02:07,140 Jeśli masz jakiekolwiek pytania, uprzejmie prosimy. 1295 01:02:07,140 --> 01:02:07,931 Będę tu po. 1296 01:02:07,931 --> 01:02:10,360 Wystarczy przyjść ze mną rozmawiać. 1297 01:02:10,360 --> 01:02:13,380 Z tym, mamy stany HTTP. 1298 01:02:13,380 --> 01:02:16,270 I Davin dzieje cios przez to w ciągu 15 minut. 1299 01:02:16,270 --> 01:02:17,560 To będzie wielki. 1300 01:02:17,560 --> 01:02:18,893 >> DAVIN: OK. 1301 01:02:18,893 --> 01:02:20,312 Uh, twój mikrofon? 1302 01:02:20,312 --> 01:02:22,210 Tak. 1303 01:02:22,210 --> 01:02:23,336 Przepraszam. 1304 01:02:23,336 --> 01:02:24,460 Alison: Droga do przygotowania. 1305 01:02:24,460 --> 01:02:25,335 DAVIN: Nie, jestem gotowy. 1306 01:02:25,335 --> 01:02:25,860 Jestem gotowy. 1307 01:02:25,860 --> 01:02:28,790 Zróbmy to. 1308 01:02:28,790 --> 01:02:29,290 Jest to gotowy. 1309 01:02:29,290 --> 01:02:30,041 OK. 1310 01:02:30,041 --> 01:02:30,540 Przepraszam. 1311 01:02:30,540 --> 01:02:31,664 Wylałem kawę na siebie. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Nie wiem, czy jestem bardziej zdenerwowany, że wyglądam głupio, 1314 01:02:38,210 --> 01:02:40,600 lub, że nie mam już kawy. 1315 01:02:40,600 --> 01:02:44,480 W każdym razie, po prostu szybkie ogłoszenie o arkusz macie. 1316 01:02:44,480 --> 01:02:47,994 Więc ta karta faceci nie mają Oficjalna co jest na quiz. 1317 01:02:47,994 --> 01:02:49,660 To jest oficjalna, co jest w quizie. 1318 01:02:49,660 --> 01:02:52,520 Ponadto, na stronie internetowej, możemy powiedzieć Ci, OK, to będzie na quiz. 1319 01:02:52,520 --> 01:02:55,020 Więc w małej ściągawki masz, a nie oficjalne. 1320 01:02:55,020 --> 01:02:56,690 I są błędy na jej temat. 1321 01:02:56,690 --> 01:03:01,490 Więc najlepiej nie tylko ślepo go używać. 1322 01:03:01,490 --> 01:03:04,390 Więc tak, to jest to. 1323 01:03:04,390 --> 01:03:05,980 Więc przejdźmy do tego bardzo szybko. 1324 01:03:05,980 --> 01:03:07,420 >> Więc statusy HTTP. 1325 01:03:07,420 --> 01:03:10,430 Więc co się dzieje, gdy strona, wszystko jest w porządku. 1326 01:03:10,430 --> 01:03:11,144 Wszystko jest OK. 1327 01:03:11,144 --> 01:03:13,310 Wszystko sprowadza się do Ci tak, jak chcemy. 1328 01:03:13,310 --> 01:03:15,370 Dostajesz 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, gdzie widzieliśmy, że 301 wcześniej? 1330 01:03:19,250 --> 01:03:20,890 Czekaj, co się dzieje? 1331 01:03:20,890 --> 01:03:23,250 Przepraszam. 1332 01:03:23,250 --> 01:03:24,980 Widzieliśmy wykładam cyny podczas bezpieczeństwa. 1333 01:03:24,980 --> 01:03:30,690 Tak więc podczas bezpieczeństwa, więc jeśli David wpisane http, a następnie próbował przejść do cs50.net, 1334 01:03:30,690 --> 01:03:31,940 masz zamiar zobaczyć 301 przeniósł. 1335 01:03:31,940 --> 01:03:32,440 Dlaczego? 1336 01:03:32,440 --> 01:03:35,570 Bo to będzie przekierować automatycznie do naszego HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> Więc 301 przeniesiony, po prostu to w zasadzie przekierowania. 1338 01:03:38,649 --> 01:03:40,190 A może myślisz o tym w ten sposób. 1339 01:03:40,190 --> 01:03:43,790 Każdy ze stanów, które rozpoczynają się 2-tych, te są podobne, OK, wszystko jest w porządku. 1340 01:03:43,790 --> 01:03:46,530 Każdy ze stanów, które zaczynają z 3, to są przekierowania. 1341 01:03:46,530 --> 01:03:49,571 Stany rozpoczynające się 4, co oznacza, istnieje jakiś rodzaj błędu klienta. 1342 01:03:49,571 --> 01:03:52,440 Stany rozpoczynające się 5, że to jakiś błąd serwera. 1343 01:03:52,440 --> 01:03:54,680 Więc niby zerwać statusy tak. 1344 01:03:54,680 --> 01:03:59,120 Tak więc 304 nie nie modyfikowane, więc w swoim server.c P-set, więc powiedzmy, że cię 1345 01:03:59,120 --> 01:04:00,600 załadowany cat.html. 1346 01:04:00,600 --> 01:04:03,360 Wszystko wraca, masz 200s, OK, świetnie. 1347 01:04:03,360 --> 01:04:04,540 >> Powiedzmy, że go odświeżyć. 1348 01:04:04,540 --> 01:04:07,310 Cóż, w środku, że cat.html, masz JPEG. 1349 01:04:07,310 --> 01:04:09,520 Dobrze, że nie jest w formacie JPEG dostanie przeładowane. 1350 01:04:09,520 --> 01:04:12,140 Nie będziemy pisać innym Żądanie GET do serwera, 1351 01:04:12,140 --> 01:04:13,980 a następnie uzyskać wszystkie te informacje z powrotem. 1352 01:04:13,980 --> 01:04:17,560 To się po prostu być: że obraz jest będą buforowane na komputerze. 1353 01:04:17,560 --> 01:04:19,540 I tak, że obraz będzie 304. 1354 01:04:19,540 --> 01:04:20,720 Więc to nie był modyfikowany. 1355 01:04:20,720 --> 01:04:24,600 Jeśli następnie zamknąć, jasne pliki cookie, a następnie odśwież 1356 01:04:24,600 --> 01:04:27,490 i spróbować załadować tę stronę znowu, masz zamiar zobaczyć 200S. 1357 01:04:27,490 --> 01:04:28,910 Nie będziesz widzieć, że 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, złe wniosek, realne szybkie, jakby Ciebie 1359 01:04:32,340 --> 01:04:34,880 zamierzali wysłać JSON obiektu do serwera 1360 01:04:34,880 --> 01:04:38,090 a obiekt JSON było nieprawidłowe, zobaczysz coś takiego. 1361 01:04:38,090 --> 01:04:39,000 403, zabronione. 1362 01:04:39,000 --> 01:04:40,330 Kiedy widzisz zabronione? 1363 01:04:40,330 --> 01:04:41,394 Prawdopodobnie Prawdopodobnie? 1364 01:04:41,394 --> 01:04:42,060 PUBLICZNOŚCI: chmod. 1365 01:04:42,060 --> 01:04:42,950 DAVIN: chmod, tak. 1366 01:04:42,950 --> 01:04:44,730 Więc nie ustawiono Uprawnienia poprawnie. 1367 01:04:44,730 --> 01:04:45,577 404 nie znaleziono. 1368 01:04:45,577 --> 01:04:46,410 To jest po prostu nie istnieje. 1369 01:04:46,410 --> 01:04:48,670 Więc jeśli wpiszesz w niewłaściwym adresem. 1370 01:04:48,670 --> 01:04:53,500 500, wewnętrzny błąd serwera, serwer Prawdopodobnie nie został prawidłowo skonfigurowany. 1371 01:04:53,500 --> 01:04:56,260 Coś nie na końcu, ale coś po stronie serwera. 1372 01:04:56,260 --> 01:04:57,240 503? 1373 01:04:57,240 --> 01:04:59,502 Wiele osób zobaczył 503s w ostatniej p-set. 1374 01:04:59,502 --> 01:05:00,460 Kiedy to się stało? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Słyszałem szepty. 1377 01:05:05,660 --> 01:05:07,767 >> PUBLICZNOŚCI: Kiedy Google decyduje jesteś robotem. 1378 01:05:07,767 --> 01:05:10,350 DAVIN: Tak, gdy Google zdecyduje jesteś robotem, masz 503s. 1379 01:05:10,350 --> 01:05:11,560 Więc to przeciążenie. 1380 01:05:11,560 --> 01:05:14,620 Jeśli żądanie z serwera zbyt wiele, to zwykle przemijające. 1381 01:05:14,620 --> 01:05:15,560 I większość z was go nie zauważył. 1382 01:05:15,560 --> 01:05:16,185 Więc obejrzałeś 503. 1383 01:05:16,185 --> 01:05:19,282 Możesz wziąć trochę Przerwa, to 503s odszedł, 1384 01:05:19,282 --> 01:05:20,490 i wszystko było w porządku. 1385 01:05:20,490 --> 01:05:26,640 >> GABE: bardzo szybko, przy czy faceci się 500 w tym ostatnim problemem prawdopodobnie ustawiony? 1386 01:05:26,640 --> 01:05:27,954 Tak? 1387 01:05:27,954 --> 01:05:30,906 >> PUBLICZNOŚCI: Zazwyczaj, jeśli Serwer posiada plik niesłuszna 1388 01:05:30,906 --> 01:05:34,650 lub [niesłyszalne] ich Maszyna [niesłyszalne]. 1389 01:05:34,650 --> 01:05:38,870 >> GABE: Więc może to być konfiguracja Problem w PHP na serwerze. 1390 01:05:38,870 --> 01:05:42,250 Ale to może być tylko coś jak średnikiem, że zapomniał. 1391 01:05:42,250 --> 01:05:44,130 Jeśli piszesz PHP, niektóre błędna składnia 1392 01:05:44,130 --> 01:05:46,000 może Ci coś takiego. 1393 01:05:46,000 --> 01:05:46,960 OK? 1394 01:05:46,960 --> 01:05:48,610 >> DAVIN: Spoko. 1395 01:05:48,610 --> 01:05:51,180 Czy chcesz mi zrobić tylko w górę, aż AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> GABE: [niesłyszalne]. 1397 01:05:52,950 --> 01:05:53,450 DAVIN: OK. 1398 01:05:53,450 --> 01:05:54,230 Więc co jest DOM? 1399 01:05:54,230 --> 01:05:55,290 Co DOM oznacza? 1400 01:05:55,290 --> 01:05:56,990 >> PUBLICZNOŚCI: Document Object Model. 1401 01:05:56,990 --> 01:05:57,490 DAVIN: Nicea. 1402 01:05:57,490 --> 01:06:00,775 I dlaczego nam się to podoba? 1403 01:06:00,775 --> 01:06:02,670 Niesamowite. 1404 01:06:02,670 --> 01:06:06,651 Dobra, więc to właśnie pozwala nam na dostęp HTML, wchodząc na naszą stronę bardzo szybko. 1405 01:06:06,651 --> 01:06:07,150 Dlaczego? 1406 01:06:07,150 --> 01:06:09,980 Ponieważ traktujemy nasze Strona, traktując nasze tagów HTML, 1407 01:06:09,980 --> 01:06:11,730 traktując wszystko a jeśli są obiekty. 1408 01:06:11,730 --> 01:06:13,710 Jeśli traktujemy ich jak oni obiektów, to co możemy zrobić? 1409 01:06:13,710 --> 01:06:15,210 Cóż, możemy wywołać funkcje na nich. 1410 01:06:15,210 --> 01:06:16,460 I to jest ważne, dlaczego? 1411 01:06:16,460 --> 01:06:19,200 Cóż, ponieważ mamy zamiar użyć Obsługa JavaScript, żeby aktualizować naszą HTML, 1412 01:06:19,200 --> 01:06:20,500 aktualizacji tych obiektów. 1413 01:06:20,500 --> 01:06:23,869 Więc jeśli traktujemy je jak przedmioty, możemy wywołać funkcje na nich. 1414 01:06:23,869 --> 01:06:26,660 Mam zamiar dostać się do tego trochę więcej, gdy idę do JavaScriptu, 1415 01:06:26,660 --> 01:06:30,510 ale już wszystko widziałem, jak document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Tak więc dokument jest taka sama Element, uzyskać elementu przez ID, 1417 01:06:32,870 --> 01:06:35,087 więc masz zamiar szukać dla jakiegoś ID w tagu HTML. 1418 01:06:35,087 --> 01:06:36,920 A potem można zrobić coś jeszcze do tego. 1419 01:06:36,920 --> 01:06:40,089 Na przykład, jak document.body, Następnie możesz dodać dziecko. 1420 01:06:40,089 --> 01:06:41,630 Więc masz zamiar znaleźć dokumentu. 1421 01:06:41,630 --> 01:06:42,340 Masz dokument. 1422 01:06:42,340 --> 01:06:43,629 Będziesz znaleźć ciało. 1423 01:06:43,629 --> 01:06:44,420 Znalazłeś ciało. 1424 01:06:44,420 --> 01:06:46,545 A potem, będziesz wywołać jakąś funkcję na nim. 1425 01:06:46,545 --> 01:06:50,312 Więc dołącz dziecko, możesz dodać niektóre HTML na końcu wewnątrz ciała. 1426 01:06:50,312 --> 01:06:52,520 Więc w zasadzie, jesteś po prostu traktując go jak przedmiot. 1427 01:06:52,520 --> 01:06:54,515 Jesteś leczenia HTML tagi, takie jak przedmiot. 1428 01:06:54,515 --> 01:06:57,071 I to sprawia, że ​​bardzo łatwo i szybko przejść przez nich. 1429 01:06:57,071 --> 01:06:59,070 Ale także pozwala zadzwonić na nich funkcje 1430 01:06:59,070 --> 01:07:04,410 więc można manipulować i zmieniać elementy. 1431 01:07:04,410 --> 01:07:10,162 >> GABE: Biorąc pod uwagę to, dlaczego jest takie JavaScript ładny język do interakcji z HTML? 1432 01:07:10,162 --> 01:07:12,870 Kursy są, kiedy ludzie wybierali język przeglądarki, 1433 01:07:12,870 --> 01:07:14,990 na stronie klienta, JavaScript jest naprawdę ładne, 1434 01:07:14,990 --> 01:07:16,765 to naprawdę dobry w pracy z obiektami. 1435 01:07:16,765 --> 01:07:20,620 I obiekty są trochę jak obiekty, które pojawiają się w HTML, 1436 01:07:20,620 --> 01:07:23,940 więc jest to bardzo łatwe do JavaScript robić tego rodzaju postępowania. 1437 01:07:23,940 --> 01:07:24,440 DAVIN: Nicea. 1438 01:07:24,440 --> 01:07:25,670 Więc tutaj jest tylko przykładem. 1439 01:07:25,670 --> 01:07:29,020 Więc myślę, że na zeszłorocznym quizu, lub może dwa lata temu 1440 01:07:29,020 --> 01:07:30,840 poprosił Cię, aby utworzyć drzewo. 1441 01:07:30,840 --> 01:07:32,660 Więc to jest dokładnie to, co chcesz zrobić. 1442 01:07:32,660 --> 01:07:34,255 Więc zaczynasz z dokumentu. 1443 01:07:34,255 --> 01:07:36,130 I wtedy w zasadzie wystarczy spojrzeć na znaczniki. 1444 01:07:36,130 --> 01:07:38,100 Więc jeśli spojrzeć, mamy rozpocznie z tagu HTML. 1445 01:07:38,100 --> 01:07:41,660 A potem, otrzymasz wskazówki o tym, jak to na podstawie wcięcia robić. 1446 01:07:41,660 --> 01:07:43,870 Więc głowa rodzaj oddziałów off. 1447 01:07:43,870 --> 01:07:46,242 W głowie, mamy kolejny tag tytułu. 1448 01:07:46,242 --> 01:07:47,450 Tak więc, mamy tagu tytułu. 1449 01:07:47,450 --> 01:07:49,760 A w środku, że mamy jakiś ciąg. 1450 01:07:49,760 --> 01:07:52,210 I tak stanowią ciąg w kręgu. 1451 01:07:52,210 --> 01:07:54,010 I wszystkie tagi są w kwadraty. 1452 01:07:54,010 --> 01:07:56,270 >> A jeśli spojrzeć, jeśli będziemy myśleć o tym, jak drzewo, 1453 01:07:56,270 --> 01:07:58,730 i powiedzmy, że HTML jest rodzic, a potem głowa i ciało 1454 01:07:58,730 --> 01:07:59,772 będą rodzeństwem. 1455 01:07:59,772 --> 01:08:01,813 Oboje będzie dzieci tego rodzica. 1456 01:08:01,813 --> 01:08:03,620 Tak, bo są oba rodzeństwa, są 1457 01:08:03,620 --> 01:08:06,590 będzie trochę obok siebie w naszym modelu drzewa. 1458 01:08:06,590 --> 01:08:08,590 A potem, w zasadzie zrobić dokładnie to samo. 1459 01:08:08,590 --> 01:08:13,512 Więc nie jest trudne, ale poprosiliśmy pytania, jak to wcześniej w quizie. 1460 01:08:13,512 --> 01:08:15,220 GABE: Czy ktoś Dotychczas pytania? 1461 01:08:15,220 --> 01:08:16,357 Czy to dobrze? 1462 01:08:16,357 --> 01:08:16,856 DAVIN: Spoko. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript, OK, dobre rzeczy. 1465 01:08:21,600 --> 01:08:24,069 Więc JavaScript, co to jest JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Cóż, JavaScript is-- to skomplikowany, ale są 1467 01:08:28,370 --> 01:08:30,727 to tylko niektóre z atrakcji że należy pamiętać. 1468 01:08:30,727 --> 01:08:31,810 Po pierwsze, jest luźno wpisane. 1469 01:08:31,810 --> 01:08:33,529 Co to oznacza? 1470 01:08:33,529 --> 01:08:35,596 Więc PHP was-- tak, co się dzieje? 1471 01:08:35,596 --> 01:08:39,854 >> PUBLICZNOŚCI: Nie musisz jawnie Stan jaki typ zmiennej jest. 1472 01:08:39,854 --> 01:08:40,479 DAVIN: Idealny. 1473 01:08:40,479 --> 01:08:43,270 Powiedział więc nie musisz się wyraźne określenie typu zmiennej. 1474 01:08:43,270 --> 01:08:44,160 Dokładnie tak. 1475 01:08:44,160 --> 01:08:49,700 Więc w C, gdybym miał int i wynosi 50, następnie w PHP, to jest po prostu tak, $ i, 1476 01:08:49,700 --> 01:08:50,550 jest równa 50. 1477 01:08:50,550 --> 01:08:54,319 Następnie w JavaScript, co rozmowa będzie? 1478 01:08:54,319 --> 01:08:55,260 Var, prawda? 1479 01:08:55,260 --> 01:08:56,566 To byłoby jak var i wynosi 50. 1480 01:08:56,566 --> 01:08:58,649 Ale nie trzeba być jak, OK, to int. 1481 01:08:58,649 --> 01:09:00,350 OK, to jest ciąg. 1482 01:09:00,350 --> 01:09:01,731 Nie ma potrzeby, aby to zrobić. 1483 01:09:01,731 --> 01:09:02,939 Jest to język interpretowany. 1484 01:09:02,939 --> 01:09:04,904 Więc co to oznacza? 1485 01:09:04,904 --> 01:09:06,340 >> PUBLICZNOŚCI: Nie skompilowany. 1486 01:09:06,340 --> 01:09:10,470 >> DAVIN: Co nie jest kompilowany na myśli? 1487 01:09:10,470 --> 01:09:11,392 Tak? 1488 01:09:11,392 --> 01:09:15,336 >> PUBLICZNOŚCI: Nie ma restrukturyzacji kod 1489 01:09:15,336 --> 01:09:18,294 aby był on gotowy do komputera, aby go uruchomić. 1490 01:09:18,294 --> 01:09:23,144 To właśnie podjęte w czasie wykonanie i komputer [niesłyszalne]. 1491 01:09:23,144 --> 01:09:25,560 DAVIN: Tak, tak, to będzie przekazać za pośrednictwem tłumacza. 1492 01:09:25,560 --> 01:09:26,750 Ale ty jesteś dokładnie prawo. 1493 01:09:26,750 --> 01:09:28,319 Tak więc nigdy nie będziemy go skompilować, prawda? 1494 01:09:28,319 --> 01:09:30,399 Kiedy robisz swoje PHP i kod JavaScript, 1495 01:09:30,399 --> 01:09:31,365 nigdy nie nazywa kompilacji. 1496 01:09:31,365 --> 01:09:33,779 Nigdy nie nazywa coś Marka lub coś podobnego. 1497 01:09:33,779 --> 01:09:34,800 To dlatego, że nie jest to interpretować. 1498 01:09:34,800 --> 01:09:37,319 Dlatego za każdym razem przechodzi przez przeglądarkę, idzie za pośrednictwem tłumacza. 1499 01:09:37,319 --> 01:09:40,370 I to się dzieje na jej interpretacji tylko w czasie rzeczywistym zaraz dla Ciebie. 1500 01:09:40,370 --> 01:09:43,770 Więc jakie są pozytywy i negatywy do posiadania interpretowany język 1501 01:09:43,770 --> 01:09:45,258 i ma skompilowany języka? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Więc compiling-- tak, co się dzieje? 1504 01:09:50,540 --> 01:09:52,444 >> PUBLICZNOŚCI: Zinterpretowany jest wolniejszy. 1505 01:09:52,444 --> 01:09:53,319 DAVIN: W jakim sensie? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> PUBLICZNOŚCI: Po Ciebie kompilacji, nie trzeba 1508 01:09:59,091 --> 01:10:04,400 wykonywać żadnych dodatkowych czynności do wykonania to, że po tym [niesłyszalne]. 1509 01:10:04,400 --> 01:10:05,570 >> DAVIN: Prawo, doskonały. 1510 01:10:05,570 --> 01:10:08,386 Więc to, co powiedział, jest w zasadzie, że kompilacja, 1511 01:10:08,386 --> 01:10:10,760 podczas kompilacji, masz Wiele koszty początkowe, prawda? 1512 01:10:10,760 --> 01:10:11,760 Będziesz go skompilować. 1513 01:10:11,760 --> 01:10:13,750 Ale po skompilować, Kompilator będzie ich optymalizacji. 1514 01:10:13,750 --> 01:10:14,840 To będzie szybka. 1515 01:10:14,840 --> 01:10:16,170 To będzie w zasadzie tak szybko, jak to tylko możliwe. 1516 01:10:16,170 --> 01:10:18,830 Z interpretacji, nigdy nie mają, że początkowe nakłady kosztów. 1517 01:10:18,830 --> 01:10:22,260 Przeciwnie, będzie nieco wolniejszy za każdym razem, gdy je interpretować. 1518 01:10:22,260 --> 01:10:24,940 I będziesz musiał interpretują to za każdym razem. 1519 01:10:24,940 --> 01:10:27,114 Więc zamiast tego jeden koszt czasu, teraz jesteś 1520 01:10:27,114 --> 01:10:29,530 będzie musiał je interpretować za każdym razem strona świadczy. 1521 01:10:29,530 --> 01:10:31,890 >> Więc tłumacze są dobre, ponieważ nie trzeba go skompilować, 1522 01:10:31,890 --> 01:10:33,980 ale są one złe, że każdy limit czasu wczytywania strony, to 1523 01:10:33,980 --> 01:10:35,771 będzie musiał interpretują JavaScript. 1524 01:10:35,771 --> 01:10:40,520 I to będzie działać nieco wolniej niż gdybyś go skompilować. 1525 01:10:40,520 --> 01:10:43,044 Pozwala communicate-- oh, czekaj. 1526 01:10:43,044 --> 01:10:44,960 Używane do manipulowania Zawartość i wygląd. 1527 01:10:44,960 --> 01:10:46,043 Właśnie o tym rozmawialiśmy. 1528 01:10:46,043 --> 01:10:47,250 Wykorzystuje DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, zajmiemy się AJAX w trochę. 1530 01:10:49,930 --> 01:10:51,520 A potem, to po stronie klienta. 1531 01:10:51,520 --> 01:10:53,110 Więc PHP jest po stronie serwera. 1532 01:10:53,110 --> 01:10:54,360 JavaScript jest po stronie klienta. 1533 01:10:54,360 --> 01:10:57,780 Jakie są pozytywne na to? 1534 01:10:57,780 --> 01:10:58,280 To mówi. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Jest szybszy, prawda? 1537 01:11:02,780 --> 01:11:05,282 Ponieważ nie masz to-- to szybciej. 1538 01:11:05,282 --> 01:11:07,490 Nie musisz się komunikować z innym urządzeniem. 1539 01:11:07,490 --> 01:11:08,790 Jeśli jesteś tylko na własną klienta, nigdy nie jesteś 1540 01:11:08,790 --> 01:11:11,280 będzie musiał iść i zobaczyć, co jest na serwerze 1541 01:11:11,280 --> 01:11:13,150 a następnie zgłoś się czy coś takiego. 1542 01:11:13,150 --> 01:11:15,410 Tak więc po stronie klienta ma tendencję do być trochę szybciej. 1543 01:11:15,410 --> 01:11:17,910 >> GABE: Tak, ale to nie oznacza, PHP 1544 01:11:17,910 --> 01:11:20,440 szybciej niż JavaScript czy coś w tym stylu. 1545 01:11:20,440 --> 01:11:23,270 Biegną rodzaju w tym samym prędkość, bo są zarówno 1546 01:11:23,270 --> 01:11:24,490 interpretowanych języków. 1547 01:11:24,490 --> 01:11:26,680 Rzecz, która jest wolna o to wniosek. 1548 01:11:26,680 --> 01:11:28,870 Więc rzeczywiście będzie wszystkie sposób do Brazylii 1549 01:11:28,870 --> 01:11:31,460 aby uzyskać informacje że tam mieszka. 1550 01:11:31,460 --> 01:11:34,590 Ale PHP i JavaScript, ich rodzaj prowadzony w tym samym tempie. 1551 01:11:34,590 --> 01:11:37,930 Nie jest to, że jest szybciej niż inne. 1552 01:11:37,930 --> 01:11:40,600 To również, sztuczka pytanie tutaj. 1553 01:11:40,600 --> 01:11:47,338 Więc nigdy nie staje JavaScript kod maszynowy, prawda czy fałsz? 1554 01:11:47,338 --> 01:11:48,590 >> PUBLICZNOŚCI: Fałsz. 1555 01:11:48,590 --> 01:11:49,090 GABE: Fałsz. 1556 01:11:49,090 --> 01:11:51,298 Ma stać się maszyny Kod ponieważ kod maszynowy jest 1557 01:11:51,298 --> 01:11:53,210 Jedyną rzeczą, maszyna rozumie. 1558 01:11:53,210 --> 01:11:55,800 Nawet jeśli to nie jest kompilowany, nadal będzie kod maszynowy 1559 01:11:55,800 --> 01:11:59,120 bo jest tylko tłumacza Program, który przechodzi linia po linii 1560 01:11:59,120 --> 01:12:02,170 i przekształca tę linię do coś komputer rozumie. 1561 01:12:02,170 --> 01:12:02,825 OK? 1562 01:12:02,825 --> 01:12:03,325 Cool. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> DAVIN: Tu jest tylko bardzo podstawowe Hello World programu JavaScript. 1565 01:12:12,890 --> 01:12:15,590 Więc nie wiem if-- widziałem tego. 1566 01:12:15,590 --> 01:12:17,630 Ale po prostu trzeba tu HTML. 1567 01:12:17,630 --> 01:12:21,020 I zamiast faktycznie zrealizują JavaScript w znaczniki skryptów, 1568 01:12:21,020 --> 01:12:22,810 tak, że zazwyczaj umieścić go w głowę. 1569 01:12:22,810 --> 01:12:24,030 Musisz tagów skryptu. 1570 01:12:24,030 --> 01:12:24,870 Upuść go tam. 1571 01:12:24,870 --> 01:12:28,350 Wszystko robiliśmy tu mamy związane in-- więc mamy związane w pliku JavaScript 1572 01:12:28,350 --> 01:12:29,137 tak. 1573 01:12:29,137 --> 01:12:30,470 A ty wszystko zrobić, prawda? 1574 01:12:30,470 --> 01:12:34,740 Więc jeśli były przy użyciu jQuery i Underscore.js w ostatniej p-set, 1575 01:12:34,740 --> 01:12:38,700 nie masz mnóstwo kodu w górę w tagi skryptów, w twojej głowie. 1576 01:12:38,700 --> 01:12:41,415 Można to zrobić, ale zamiast jesteś po prostu łącząc go w. 1577 01:12:41,415 --> 01:12:43,540 A ty łącząc go w tak jak robisz to z CSS. 1578 01:12:43,540 --> 01:12:50,186 Tak to właśnie sprawia, że ​​łatwiej przeczytać tak Twój kod nie jest tak długo, 1000 linii 1579 01:12:50,186 --> 01:12:52,310 z mnóstwem funkcji, które nie może być używany. 1580 01:12:52,310 --> 01:12:53,518 >> Zamiast tego, po prostu połączyć je. 1581 01:12:53,518 --> 01:12:55,050 To compartmentalizes go. 1582 01:12:55,050 --> 01:13:00,110 To jak pisanie jakiś plik nagłówka i to w tym, że plik nagłówka w C 1583 01:13:00,110 --> 01:13:01,620 Pomyśl o tym, jak ta. 1584 01:13:01,620 --> 01:13:02,680 Więc co to robić? 1585 01:13:02,680 --> 01:13:04,560 Cóż, to będzie działać. 1586 01:13:04,560 --> 01:13:05,410 To będzie ostrzegać. 1587 01:13:05,410 --> 01:13:08,020 Więc masz zamiar trochę pop-up o nazwie Hello World. 1588 01:13:08,020 --> 01:13:11,420 Szybkie pytanie, po prostu kontrola poprawności, więc można zobaczyć tutaj, w ciele, 1589 01:13:11,420 --> 01:13:13,160 powiedzieć, ciała, HTML tutaj. 1590 01:13:13,160 --> 01:13:14,080 Co jest na pierwszym miejscu? 1591 01:13:14,080 --> 01:13:16,864 Widzę tu ciała, HTML, czy mogę zobaczyć ostrzeżenie pierwszy? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> PUBLICZNOŚCI: Alert. 1594 01:13:20,820 --> 01:13:21,470 >> DAVIN: Prawo. 1595 01:13:21,470 --> 01:13:22,110 Mówi, że czujny. 1596 01:13:22,110 --> 01:13:22,610 Dlaczego? 1597 01:13:22,610 --> 01:13:24,470 >> PUBLICZNOŚCI: Bo Ciebie go od góry do dołu. 1598 01:13:24,470 --> 01:13:25,600 >> DAVIN: Tak. 1599 01:13:25,600 --> 01:13:26,100 Doskonałe. 1600 01:13:26,100 --> 01:13:29,207 Więc mówi, idziesz od góry do dolny, który jest absolutnie poprawne. 1601 01:13:29,207 --> 01:13:30,790 Będziesz go od góry do dołu. 1602 01:13:30,790 --> 01:13:34,790 I w JavaScript, jQuery, masz funkcja, która jest jak onload lub gotowe, 1603 01:13:34,790 --> 01:13:38,030 i mówi: OK, poczekaj wszystko to HTML załadował. 1604 01:13:38,030 --> 01:13:39,580 A potem wywołać JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Ponieważ nie mamy, że tutaj, Pierwszą rzeczą, która się wydarzy 1606 01:13:42,190 --> 01:13:43,920 jest to zamiar iść od góry do dołu. 1607 01:13:43,920 --> 01:13:46,310 To będzie hit, że JS zadzwoń, to będzie ostrzegać. 1608 01:13:46,310 --> 01:13:49,510 Po tym kliknij przycisk OK, że alert odchodzi. 1609 01:13:49,510 --> 01:13:53,600 Potem to się pokazać Ci HTML ciała tutaj. 1610 01:13:53,600 --> 01:13:54,590 Ładny. 1611 01:13:54,590 --> 01:14:00,880 >> OK, więc po prostu bardzo szybko, pisanie w JavaScript jest super szybkie. 1612 01:14:00,880 --> 01:14:02,710 W celu stwierdzenia, zmienna, nazwa zmiennej. 1613 01:14:02,710 --> 01:14:07,070 Więc w C, masz int i masz zadeklarować, jakie typu jest. 1614 01:14:07,070 --> 01:14:08,040 PHP $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript, var. 1616 01:14:08,755 --> 01:14:09,630 Rozmawialiśmy o tym. 1617 01:14:09,630 --> 01:14:11,020 Dobra, chodźmy. 1618 01:14:11,020 --> 01:14:12,510 >> Pętle, to samo. 1619 01:14:12,510 --> 01:14:14,230 Samo. 1620 01:14:14,230 --> 01:14:18,165 Deklaracje funkcji, więc tak jak widziałem w C. 1621 01:14:18,165 --> 01:14:21,290 Jedyne, co różni się tak, gdy można dostać się do innych języków programowania, 1622 01:14:21,290 --> 01:14:24,780 jak jeśli wziąć 51 następny semestr i robisz z SML, 1623 01:14:24,780 --> 01:14:26,690 można sobie z funkcji anonimowych. 1624 01:14:26,690 --> 01:14:28,240 Więc to jest dokładnie to, co masz tutaj. 1625 01:14:28,240 --> 01:14:31,560 Więc chcesz umieścić w sumie, jakaś wartość sumy. 1626 01:14:31,560 --> 01:14:33,870 Ale może być robi to tylko raz. 1627 01:14:33,870 --> 01:14:37,310 Więc nie chcesz, aby nazwać to funkcja Suma, nadać mu deklarację funkcji. 1628 01:14:37,310 --> 01:14:39,830 Zamiast tego, po prostu go używać jako anonimowej funkcji. 1629 01:14:39,830 --> 01:14:42,469 A widziałeś to dużo. 1630 01:14:42,469 --> 01:14:44,510 Zobaczysz przykład to na kilka slajdów. 1631 01:14:44,510 --> 01:14:45,597 Tak, zobaczymy. 1632 01:14:45,597 --> 01:14:46,430 GABE: Dobre pytanie. 1633 01:14:46,430 --> 01:14:50,660 Kiedy warto skorzystać anonimowa funkcja tutaj? 1634 01:14:50,660 --> 01:14:54,111 Zasadniczo, jeśli chcesz coś, jak wydarzenia, się stało. 1635 01:14:54,111 --> 01:14:55,860 Więc kiedy mysz jest kliknięciu na przykład 1636 01:14:55,860 --> 01:14:57,790 chcesz trochę funkcja do wywołania. 1637 01:14:57,790 --> 01:15:00,570 Tak więc można przejść do zdarzenia obsługi, można przejść do zdarzenia, 1638 01:15:00,570 --> 01:15:02,870 rodzaj, funkcja chcesz być nazywany. 1639 01:15:02,870 --> 01:15:04,710 A co jesteś przejazdem jest jak na koniec 1640 01:15:04,710 --> 01:15:08,757 dnia, tylko wskaźnik do że instrukcje, do funkcji. 1641 01:15:08,757 --> 01:15:11,090 Więc to nie jest tak, jesteś przejazdem Cały kod, tak jak 1642 01:15:11,090 --> 01:15:12,173 wskaźnik do funkcji. 1643 01:15:12,173 --> 01:15:17,871 I wtedy, gdy ktoś kliknie myszy, a następnie, że funkcja jest wywoływana. 1644 01:15:17,871 --> 01:15:22,340 >> Davina: Tablice, więc Ciebie posiadają deklarację tablicy. 1645 01:15:22,340 --> 01:15:23,990 Następnie, tablica, aby to w. 1646 01:15:23,990 --> 01:15:25,769 Bardzo szybko, co będzie to wydrukować? 1647 01:15:25,769 --> 01:15:27,060 Co trzeci element jest? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> PUBLICZNOŚCI: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> DAVIN: Tak, to będzie "JS". 1651 01:15:33,940 --> 01:15:35,760 Poczekaj, wróć. 1652 01:15:35,760 --> 01:15:37,100 Jaka jest długość? 1653 01:15:37,100 --> 01:15:38,117 >> PUBLICZNOŚCI: Trzy. 1654 01:15:38,117 --> 01:15:38,950 DAVIN: Trzy, prawda? 1655 01:15:38,950 --> 01:15:40,210 Dokładnie to, co myślisz. 1656 01:15:40,210 --> 01:15:42,072 OK, teraz iść. 1657 01:15:42,072 --> 01:15:43,530 Tablice można dodać rzeczy do nich. 1658 01:15:43,530 --> 01:15:45,395 Więc można wyjść poza ich początkowe granice. 1659 01:15:45,395 --> 01:15:46,740 Po prostu coś, aby pamiętać. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, są mało nieco bardziej wyrozumiały w kategoriach rzeczy 1661 01:15:49,760 --> 01:15:50,570 tak. 1662 01:15:50,570 --> 01:15:54,260 Przedmioty, bardzo podobne elemencie w C, bardzo 1663 01:15:54,260 --> 01:15:56,590 jak asocjacyjnych w PHP. 1664 01:15:56,590 --> 01:15:58,720 Ci wszyscy mieliśmy doświadczenia z tym. 1665 01:15:58,720 --> 01:16:01,880 Więc JSON, kiedy przechodzącą JSON tam iz powrotem w p-set osiem, 1666 01:16:01,880 --> 01:16:03,260 to Twój obiekt. 1667 01:16:03,260 --> 01:16:06,290 >> Więc tak, przykład, bardzo szybko przykładem. 1668 01:16:06,290 --> 01:16:07,880 Oto obiektu. 1669 01:16:07,880 --> 01:16:12,700 Ten sposób można odwołać Obiekt, więc po prostu bardzo szybko, 1670 01:16:12,700 --> 01:16:18,630 powiedzmy, że chciałem znaleźć się, OK, co jest oczywiście? 1671 01:16:18,630 --> 01:16:20,681 I tak tu jest nazwa obiektu CS50. 1672 01:16:20,681 --> 01:16:23,180 I wtedy, gdy miałem asocjacyjne Tablica, w jaki sposób to zrobić? 1673 01:16:23,180 --> 01:16:24,580 Będę za pomocą klucza, prawda? 1674 01:16:24,580 --> 01:16:26,030 Mam więc nazwę tablicy. 1675 01:16:26,030 --> 01:16:30,160 Mam wspornik, cytaty, klucz, cytaty końcowe, wspornik końcowy, 1676 01:16:30,160 --> 01:16:33,610 i że będzie odwoływać się, że elementem w mojej tablicy asocjacyjnej. 1677 01:16:33,610 --> 01:16:37,646 Jak mogę odwoływać Oczywiście w moim obiektu? 1678 01:16:37,646 --> 01:16:39,170 Ktoś wie? 1679 01:16:39,170 --> 01:16:40,622 >> PUBLICZNOŚCI: [niesłyszalne]. 1680 01:16:40,622 --> 01:16:41,784 >> DAVIN: Co się dzieje? 1681 01:16:41,784 --> 01:16:42,700 PUBLICZNOŚCI: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 DAVIN: Tak, tak. 1683 01:16:43,510 --> 01:16:45,320 Więc CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Więc sposób odwoływać rzeczy wewnątrz obiektu JSON jest kropką. 1685 01:16:48,770 --> 01:16:53,114 >> PUBLICZNOŚCI: Możesz również użyć składni tablic. 1686 01:16:53,114 --> 01:16:54,050 >> DAVIN: OK, w porządku. 1687 01:16:54,050 --> 01:16:57,544 >> GABE: Możesz również użyć wspornika CS50, ciąg, jak cudzysłów. 1688 01:16:57,544 --> 01:16:59,210 PUBLICZNOŚCI: Myślę, że jest identyczny z PHP. 1689 01:16:59,210 --> 01:17:00,293 GABE: To samo. 1690 01:17:00,293 --> 01:17:02,487 DAVIN: Świetnie! 1691 01:17:02,487 --> 01:17:03,945 Ale widać to inne miejsca. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Tak, tak, nie poddawać się. 1694 01:17:10,480 --> 01:17:13,330 To jest to, co właśnie powiedział. 1695 01:17:13,330 --> 01:17:17,840 Tak na przykład JavaScript jQuery. 1696 01:17:17,840 --> 01:17:19,440 Więc to jest mój DOM, prawda? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Bardzo szybko, więc mam głowa, hello world, ciało. 1699 01:17:25,410 --> 01:17:26,160 Mam przycisk. 1700 01:17:26,160 --> 01:17:27,870 To mówi "poganiaj mnie", więc chcę go naciskać. 1701 01:17:27,870 --> 01:17:29,745 I chcę coś zrobić kiedy jest kliknięty. 1702 01:17:29,745 --> 01:17:31,220 Tuż obok. 1703 01:17:31,220 --> 01:17:34,630 >> Dobra, więc to jest mój JavaScript. 1704 01:17:34,630 --> 01:17:37,790 Więc jQuery jest po prostu łatwiejsze sposób pisać JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Więc to, i to, co mam zamiar pokazać następnym, będzie jQuery, 1706 01:17:40,920 --> 01:17:41,930 są identyczne. 1707 01:17:41,930 --> 01:17:43,990 Tak będą robić te same rzeczy. 1708 01:17:43,990 --> 01:17:45,974 Wystarczy jQuery wydaje się być trochę łatwiej. 1709 01:17:45,974 --> 01:17:47,140 Ludzie mają tendencję do bardziej. 1710 01:17:47,140 --> 01:17:48,390 Ma wiele funkcji. 1711 01:17:48,390 --> 01:17:49,830 Więc ludzie mają tendencję do używania jQuery. 1712 01:17:49,830 --> 01:17:53,270 Wszyscy wykorzystywane jQuery w ostatnim p-set. 1713 01:17:53,270 --> 01:17:54,270 Więc co to robić? 1714 01:17:54,270 --> 01:17:56,580 Co będzie to JavaScript-- tak to jest po prostu JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Co stanie to zrobić? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Co będzie robić? 1718 01:18:03,450 --> 01:18:04,890 >> Więc po pierwsze, widać okna onload. 1719 01:18:04,890 --> 01:18:05,390 Prawda? 1720 01:18:05,390 --> 01:18:06,640 Więc nie widzieliśmy wcześniej. 1721 01:18:06,640 --> 01:18:09,380 Więc to będzie czekać aż całe okno obciążeń. 1722 01:18:09,380 --> 01:18:12,770 Więc to będzie czekać, aż Obciążenie HTML, wszystkie obrazy 1723 01:18:12,770 --> 01:18:13,770 zanim nic nie robi. 1724 01:18:13,770 --> 01:18:16,050 Powiedzmy więc, że nasz DOM został załadowany. 1725 01:18:16,050 --> 01:18:17,270 Wszystko tam jest. 1726 01:18:17,270 --> 01:18:19,080 Następnie, co się wydarzy? 1727 01:18:19,080 --> 01:18:19,922 Tak? 1728 01:18:19,922 --> 01:18:22,880 >> PUBLICZNOŚCI: pojawia się przycisk. 1729 01:18:22,880 --> 01:18:25,201 >> DAVIN: Przycisk już tam jest. 1730 01:18:25,201 --> 01:18:26,700 Tak, tak, już tam Buttona. 1731 01:18:26,700 --> 01:18:31,190 Ale to będzie powiedzieć, OK, jeśli kliknij przycisk, 1732 01:18:31,190 --> 01:18:33,650 tak już jest przycisk nie, jak tego tagu HTML. 1733 01:18:33,650 --> 01:18:35,980 Poczekaj, wrócić bardzo szybko. 1734 01:18:35,980 --> 01:18:39,470 Ten znacznik jest prawo tutaj będzie już przycisk. 1735 01:18:39,470 --> 01:18:40,810 Istnieje już przycisk. 1736 01:18:40,810 --> 01:18:44,120 Ale potem, JavaScript tag, tutaj, 1737 01:18:44,120 --> 01:18:46,160 mówi, OK, chcę, aby uzyskać elementu przez ID, 1738 01:18:46,160 --> 01:18:50,300 Przycisk wyszukiwania po prostu tak mówi, OK, chcę, mapować tej zmiennej do tego przycisku. 1739 01:18:50,300 --> 01:18:53,120 Tak, że zmienna jest po prostu łatwiejszy sposób, aby uzyskać dostęp do przycisku. 1740 01:18:53,120 --> 01:18:57,300 A ja mówię, OK, jeśli kliknę, że Przycisk, więc jeśli kliknij ten element, 1741 01:18:57,300 --> 01:18:59,560 i element ten dotyczy przycisk, kliknij go, gdybym, 1742 01:18:59,560 --> 01:19:00,875 Następnie chcę wywołać funkcję. 1743 01:19:00,875 --> 01:19:03,500 Oto jeden z tych anonimowy Funkcje my mówimy. 1744 01:19:03,500 --> 01:19:04,840 >> Wystarczy zadzwonić niektórych funkcji. 1745 01:19:04,840 --> 01:19:08,840 Wewnątrz tej funkcji, w zasadzie coś, co widzieliśmy los, alarm. 1746 01:19:08,840 --> 01:19:10,477 Możesz kliknąć przycisk wyszukiwania. 1747 01:19:10,477 --> 01:19:12,060 To będzie w zasadzie mają przycisk. 1748 01:19:12,060 --> 01:19:13,040 Kliknięcie go. 1749 01:19:13,040 --> 01:19:14,040 Masz ten wpis. 1750 01:19:14,040 --> 01:19:14,850 X out. 1751 01:19:14,850 --> 01:19:15,754 To wszystko. 1752 01:19:15,754 --> 01:19:16,254 Tak? 1753 01:19:16,254 --> 01:19:21,980 >> PUBLICZNOŚCI: Więc jeśli umieścisz skrypt [Niesłyszalne], tag skrypt w HTML? 1754 01:19:21,980 --> 01:19:24,300 >> DAVIN: Możesz umieścić skrypt tag prosto w głowę 1755 01:19:24,300 --> 01:19:30,667 bo masz to onload. 1756 01:19:30,667 --> 01:19:32,000 Jest to również, że masz kliknięcie. 1757 01:19:32,000 --> 01:19:34,166 Więc to będzie czekać, aż Kliknięcie na coś. 1758 01:19:34,166 --> 01:19:37,470 Ale onload jest dla pewności, aby pewien, że ładuje wszystko do kodu HTML 1759 01:19:37,470 --> 01:19:38,170 wcześniej. 1760 01:19:38,170 --> 01:19:39,247 Tak? 1761 01:19:39,247 --> 01:19:40,330 Chcesz coś powiedzieć? 1762 01:19:40,330 --> 01:19:41,080 >> GABE: [niesłyszalne]. 1763 01:19:41,080 --> 01:19:42,485 DAVIN: Tak. 1764 01:19:42,485 --> 01:19:45,426 >> Publiczność: Tak onload unika określenie zmiennej przycisk wyszukiwania 1765 01:19:45,426 --> 01:19:49,930 po prostu mówiąc document.getElementById Wyszukiwarka przycisk dot [niesłyszalne]. 1766 01:19:49,930 --> 01:19:52,320 >> DAVIN: Na pewno, ale potem ciąg po prostu staje się ogromne. 1767 01:19:52,320 --> 01:19:55,553 Dokładnie tak, to jest po prostu ułatwienia dla ciebie, tak. 1768 01:19:55,553 --> 01:19:56,053 Tak? 1769 01:19:56,053 --> 01:19:57,886 >> PUBLICZNOŚCI: Skąd my tworzenie window.onload? 1770 01:19:57,886 --> 01:19:58,951 Albo document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> DAVIN: Tak, jest. 1772 01:20:00,590 --> 01:20:02,094 Tak, jest, sprawdziłem. 1773 01:20:02,094 --> 01:20:03,710 >> GABE: Nie dla nich zależy. 1774 01:20:03,710 --> 01:20:06,970 >> DAVIN: OK, więc mam zamiar powiedzieć, w każdym razie. 1775 01:20:06,970 --> 01:20:11,005 Więc w zasadzie, tak w ogóle, więc window.onload czeka aż do DOM, wszystkie 1776 01:20:11,005 --> 01:20:12,180 Twój HTML, ładunki. 1777 01:20:12,180 --> 01:20:13,513 Czeka aż do obciążenia zdjęć. 1778 01:20:13,513 --> 01:20:14,930 Czeka, aż wszystko się ładunku. 1779 01:20:14,930 --> 01:20:18,410 document.ready, to po prostu czeka, aż Twoje obciążeń DOM. 1780 01:20:18,410 --> 01:20:22,190 Po HTML jest wszystko, raz Twój DOM jest tam, zaczyna biec. 1781 01:20:22,190 --> 01:20:23,400 To jedyna różnica. 1782 01:20:23,400 --> 01:20:24,700 >> GABE: Szybkie rozsądek sprawdzić tutaj. 1783 01:20:24,700 --> 01:20:29,060 Więc to może być postrzegane rodzaj jak linii kodu, prawda? 1784 01:20:29,060 --> 01:20:33,600 Bo to window.onload równa się kilka rzeczy. 1785 01:20:33,600 --> 01:20:39,030 Gdy obsługa JavaScript, czyta to, prawda, czy false, funkcja zostanie wykonana. 1786 01:20:39,030 --> 01:20:40,020 Fałsz. 1787 01:20:40,020 --> 01:20:40,920 OK? 1788 01:20:40,920 --> 01:20:44,470 Co dzieje się tutaj, jesteś tylko przejazdem funkcja ta jako anonimowy funkcji 1789 01:20:44,470 --> 01:20:45,300 do window.onload. 1790 01:20:45,300 --> 01:20:48,480 I wtedy, kiedy to będzie faktycznie zostanie wykonany? 1791 01:20:48,480 --> 01:20:49,600 Po załadowaniu okna. 1792 01:20:49,600 --> 01:20:50,420 To zdarzenie. 1793 01:20:50,420 --> 01:20:52,460 Więc to jus t rzeczą jesteśmy mówić o wcześniej, prawda? 1794 01:20:52,460 --> 01:20:54,580 Tak więc, gdy zdarzenie, Funkcja dzieje. 1795 01:20:54,580 --> 01:20:55,746 To samo z onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> DAVIN: OK, więc ktoś wziął dala document.ready. 1798 01:21:03,130 --> 01:21:04,698 Ale będzie to dokładna same-- 1799 01:21:04,698 --> 01:21:06,864 PUBLICZNOŚCI: znak dolara, że jest document.ready. 1800 01:21:06,864 --> 01:21:07,710 To skrót. 1801 01:21:07,710 --> 01:21:08,501 >> DAVIN: Och, to jest? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, więc to oznacza, document.ready, skrót. 1804 01:21:15,500 --> 01:21:19,660 Ale jest taka sama jak window.onload oprócz tej małej różnicy 1805 01:21:19,660 --> 01:21:20,680 Mówiłem o. 1806 01:21:20,680 --> 01:21:21,870 I to jest jQuery. 1807 01:21:21,870 --> 01:21:25,190 Więc to jest dokładnie to samo thing-- jest obsługa JavaScript. 1808 01:21:25,190 --> 01:21:29,500 To jest just-- niektórzy ludzie myśleć w masie więcej światła, elegancki wersja 1809 01:21:29,500 --> 01:21:32,370 które ma wiele funkcji że prawdopodobnie będziesz używać. 1810 01:21:32,370 --> 01:21:34,500 Więc to robi dokładnie to samo. 1811 01:21:34,500 --> 01:21:37,110 >> Więc rzeczy rodzaj podkreślić. 1812 01:21:37,110 --> 01:21:40,364 Dlatego w tym drugim przykładzie miał document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 więc musieliśmy tak długo Ciąg, który dostanie 1814 01:21:42,280 --> 01:21:44,290 Identyfikator elementu przez co ma. 1815 01:21:44,290 --> 01:21:46,470 To się zastąpić niniejszym zaproszeniu tutaj. 1816 01:21:46,470 --> 01:21:50,860 Więc widzisz znak dolara, wtedy zobaczysz ofertę, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag jest zawsze wyboru. 1818 01:21:52,370 --> 01:21:54,730 To mówi, OK, to ma do czynienia z identyfikatorem. 1819 01:21:54,730 --> 01:21:56,120 Co znajduje się selektor klasy? 1820 01:21:56,120 --> 01:21:57,190 >> PUBLICZNOŚCI: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> DAVIN: Dot, prawo. 1822 01:21:57,960 --> 01:22:01,950 Jeśli tylko będzie wybierz znacznik, co to jest? 1823 01:22:01,950 --> 01:22:03,310 To tylko znak, dokładnie. 1824 01:22:03,310 --> 01:22:05,560 I można użyć, że tutaj, jak również. 1825 01:22:05,560 --> 01:22:08,560 >> GABE: I po tagu, mamy na myśli, jak div, na przykład, lub głowy. 1826 01:22:08,560 --> 01:22:11,500 >> DAVIN: Albo organ lub p lub coś w tym stylu, tak. 1827 01:22:11,500 --> 01:22:14,390 Więc tutaj, OK, zamiast mówić document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 jest to po prostu dokładnie to samo. 1829 01:22:16,500 --> 01:22:17,990 Tylko w jQuery, to krócej. 1830 01:22:17,990 --> 01:22:19,860 Więc jest to prostsze. 1831 01:22:19,860 --> 01:22:23,420 Tak więc, nie więcej onclick, wystarczy kliknąć. 1832 01:22:23,420 --> 01:22:26,320 Funkcja jQuery, wywołać tę funkcję. 1833 01:22:26,320 --> 01:22:27,580 Alert jest dokładnie taki sam. 1834 01:22:27,580 --> 01:22:29,452 Więc to jest trochę mniejsze lub nieco 1835 01:22:29,452 --> 01:22:32,410 krótszy, trochę bit-- ludzie myślą to jest trochę łatwiej pisać, 1836 01:22:32,410 --> 01:22:34,600 trochę łatwiejsze do zrozumienia. 1837 01:22:34,600 --> 01:22:35,640 Ale to jest jQuery. 1838 01:22:35,640 --> 01:22:37,887 Wielu ludzi się trochę nieco zdezorientowany i martwi 1839 01:22:37,887 --> 01:22:40,220 i myślą, OK, jQuery jest inny niż JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Muszę pamiętać, to dwie różne rzeczy. 1841 01:22:42,136 --> 01:22:42,740 To nie jest. 1842 01:22:42,740 --> 01:22:45,315 Mam na myśli, że to inna składnia. 1843 01:22:45,315 --> 01:22:46,970 Ale jQuery jest obsługa JavaScript. 1844 01:22:46,970 --> 01:22:50,050 To tylko z pozoru lepsza wersja 1845 01:22:50,050 --> 01:22:51,967 Może być łatwiej Rozumiemy, że ludzie używają. 1846 01:22:51,967 --> 01:22:53,716 GABE: Tak, być Szczerze mówiąc, to znak dolara 1847 01:22:53,716 --> 01:22:57,240 które można zobaczyć w jQuery, to tylko nazwa funkcji, która jQuery definiuje. 1848 01:22:57,240 --> 01:22:58,614 To nie ma nic szczególnego. 1849 01:22:58,614 --> 01:23:03,140 Czy to tylko nazwa funkcji, tak jak można zdefiniować znak dolara. 1850 01:23:03,140 --> 01:23:05,670 >> DAVIN: Tak, tak, o tym rozmawialiśmy. 1851 01:23:05,670 --> 01:23:06,680 Kilka przydatnych rzeczy. 1852 01:23:06,680 --> 01:23:10,414 Ja patrząc na starych quizów. 1853 01:23:10,414 --> 01:23:13,080 W ciągu ostatnich kilku quizów, oni musieli używać takich rzeczy. 1854 01:23:13,080 --> 01:23:15,230 Więc document.ready, więc upewnij się, że wszystko jest 1855 01:23:15,230 --> 01:23:17,410 załadowany przed tobą zacząć robić rzeczy. 1856 01:23:17,410 --> 01:23:20,120 Wybierz identyfikator, lub wybierz klasa, to bym po prostu 1857 01:23:20,120 --> 01:23:24,020 być cytat dot trochę klasy, koniec cytatu. 1858 01:23:24,020 --> 01:23:26,580 Prześlij, więc jeśli jesteś Składając formularz i połączenia 1859 01:23:26,580 --> 01:23:28,830 funkcja ta po formie twierdzi. 1860 01:23:28,830 --> 01:23:34,210 Warto, więc powiedzmy, że miałem formę uległość, jak nazwa użytkownika, adres e-mail, 1861 01:23:34,210 --> 01:23:34,950 cokolwiek. 1862 01:23:34,950 --> 01:23:36,010 Miałem pole tekstowe. 1863 01:23:36,010 --> 01:23:37,670 Więc piszę w tym polu tekstowym. 1864 01:23:37,670 --> 01:23:42,170 Cóż, jeśli chcesz uzyskać wartość z tego pola tekstowego, należy użyć kropki val. 1865 01:23:42,170 --> 01:23:44,050 A potem, na dół, dot HTML jest sam 1866 01:23:44,050 --> 01:23:47,710 jest jak dokument kropką getElementById dot innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Tak, że zamierza wrócić Ci HTML z tego ID. 1868 01:23:50,890 --> 01:23:55,080 Tutaj, po prostu korzystać z niektórych ID lub cokolwiek dot HTML. 1869 01:23:55,080 --> 01:23:56,930 To będzie uzyskać HTML z tego elementu. 1870 01:23:56,930 --> 01:24:00,130 Jeśli chcesz to zmienić HTML, można przekazać mu coś. 1871 01:24:00,130 --> 01:24:05,600 Więc chcesz być jak dot HTML, a następnie wewnątrz, cytaty, nowa HTML lub coś. 1872 01:24:05,600 --> 01:24:07,490 >> GABE: OK, więc AJAX. 1873 01:24:07,490 --> 01:24:10,347 Bardzo podoba mi się zrozumieć AJAX naprawdę dobrze. 1874 01:24:10,347 --> 01:24:12,430 Więc chcę, żebyście rozumiem AJAX naprawdę dobrze. 1875 01:24:12,430 --> 01:24:14,221 Bo jeśli nie, masz dość dużo się dzieje 1876 01:24:14,221 --> 01:24:16,810 aby zrozumieć wszystko, ma do czynienia z HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 Obsługa JavaScript, ponieważ to wszystko przychodzi razem w technologii AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX nie jest język. 1879 01:24:25,130 --> 01:24:27,000 AJAX to technika. 1880 01:24:27,000 --> 01:24:31,690 I wykorzystuje wiele różnych narzędzi. 1881 01:24:31,690 --> 01:24:35,090 AJAX oznacza asynchroniczne XML JavaScript. 1882 01:24:35,090 --> 01:24:36,730 Tak więc metoda, język, dane. 1883 01:24:36,730 --> 01:24:40,610 >> Tak więc głównym języku, którego używamy AJAX wywołać wszystko 1884 01:24:40,610 --> 01:24:42,830 i obsługiwać wszystko JavaScript jest później. 1885 01:24:42,830 --> 01:24:45,160 To dlatego, że dotyczy bardzo blisko do JavaScript. 1886 01:24:45,160 --> 01:24:49,810 A potem jest asynchroniczne dlatego, że nie robi 1887 01:24:49,810 --> 01:24:51,980 wszystkie na raz, gdy jesteśmy ładowania strony. 1888 01:24:51,980 --> 01:24:57,190 To jest rzecz, że możemy robić rzeczy rodzaj równolegle. 1889 01:24:57,190 --> 01:24:59,725 Ideą AJAX to, że chcesz 1890 01:24:59,725 --> 01:25:02,170 to trochę konkretnych informacji. 1891 01:25:02,170 --> 01:25:06,450 Na przykład, kiedy piszesz nowy nazwa użytkownika podczas rejestracji nazwy użytkownika, 1892 01:25:06,450 --> 01:25:08,520 moja nazwa użytkownika jest abc123. 1893 01:25:08,520 --> 01:25:11,671 A następnie, na koniec forma, trzeba kliknąć Wyślij. 1894 01:25:11,671 --> 01:25:14,420 I miał udać się do serwera, a następnie sprawdzić, czy w bazie danych, 1895 01:25:14,420 --> 01:25:15,594 abc123 już tam jest. 1896 01:25:15,594 --> 01:25:18,510 A jeśli on już tam jest, to mówi, Nazwa już w bazie danych użytkownika. 1897 01:25:18,510 --> 01:25:21,010 I, trzeba wypełnić z całej postaci ponownie. 1898 01:25:21,010 --> 01:25:23,110 I to było naprawdę, naprawdę zły. 1899 01:25:23,110 --> 01:25:25,440 >> A potem ludzie mówią, OK, to dlaczego nie możemy po prostu 1900 01:25:25,440 --> 01:25:29,560 zrobić małe żądania HTTP tylko sprawdzić aby sprawdzić, czy ta osoba jest w bazie danych 1901 01:25:29,560 --> 01:25:32,080 Zanim użytkownik musiał przedstawić całą formę? 1902 01:25:32,080 --> 01:25:36,350 Tak na przykład, gdy użytkownik zakończy wpisując abc123, 1903 01:25:36,350 --> 01:25:39,660 chodźmy do serwera mało nieco i po prostu prawdziwe czy fałszywe 1904 01:25:39,660 --> 01:25:43,080 z serwera, aby zobaczyć, czy to ważna nazwa użytkownika lub nie. 1905 01:25:43,080 --> 01:25:49,250 OK, więc to jeden z głównym wykorzystuje AJAX dziś jeszcze. 1906 01:25:49,250 --> 01:25:52,130 >> DAVIN: Więc bardzo szybko, w AJAX w jQuery, 1907 01:25:52,130 --> 01:25:54,770 można oznaczać, że Ciebie ma to być synchroniczne. 1908 01:25:54,770 --> 01:25:56,330 Nie powinno się tego robić. 1909 01:25:56,330 --> 01:25:57,640 Ale można to zrobić. 1910 01:25:57,640 --> 01:25:59,277 A jeśli to zrobił, co by się stało? 1911 01:25:59,277 --> 01:26:01,610 Cóż, na przykład, gdy jesteś coraz wiadomości lub cokolwiek, 1912 01:26:01,610 --> 01:26:05,464 Twoja przeglądarka jest po prostu będzie czekać do momentu, że całe połączenie jest kompletne 1913 01:26:05,464 --> 01:26:08,130 zamiast pozwolić zrobić inne rzeczy po kliknięciu go. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> GABE: To nie przechodząc już. 1916 01:26:17,115 --> 01:26:19,681 O mój Boże. 1917 01:26:19,681 --> 01:26:20,180 Przykro mi! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Tak. 1920 01:26:23,601 --> 01:26:25,350 "W przeszłości potrzebne życzenie klienta 1921 01:26:25,350 --> 01:26:26,840 Cała zawartość strony internetowej. " 1922 01:26:26,840 --> 01:26:28,210 To, co powiedziałem. 1923 01:26:28,210 --> 01:26:30,070 To pozwala nam na wysyłanie Dodatkowym GET lub POST 1924 01:26:30,070 --> 01:26:32,140 wnioski bez konieczności aby odświeżyć naszą przeglądarkę. 1925 01:26:32,140 --> 01:26:34,806 Tak więc na koniec dnia, jesteśmy faktycznie Dokonywanie żądań HTTP 1926 01:26:34,806 --> 01:26:35,740 tutaj za pomocą JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Ponieważ wcześniej, tylko używane JavaScript aby zmienić kod HTML, który już przyszedł. 1928 01:26:39,700 --> 01:26:43,110 A teraz, możemy użyć go do interfejsu z serwerów internetowych, jak również. 1929 01:26:43,110 --> 01:26:46,140 Sposób to się dzieje to mamy klienta. 1930 01:26:46,140 --> 01:26:47,340 Davin jest klient. 1931 01:26:47,340 --> 01:26:50,797 A on ma wszystkie JavaScript wyświetlane, ponieważ HTML jest niemy. 1932 01:26:50,797 --> 01:26:51,630 JavaScript jest inteligentny. 1933 01:26:51,630 --> 01:26:54,690 Więc Davin Davin ma jego inteligentne części i jego głupi częścią. 1934 01:26:54,690 --> 01:26:57,590 Zamierza wykorzystać swoją inteligentną część teraz. 1935 01:26:57,590 --> 01:27:00,860 Zamierza wykorzystać JavaScript na żądanie, na przykład 1936 01:27:00,860 --> 01:27:04,340 czy abc123 jest Baza danych, czy też nie. 1937 01:27:04,340 --> 01:27:08,450 >> Więc Davin, proszę, po prostu wyślij mi żądania HTTP. 1938 01:27:08,450 --> 01:27:09,197 Dziękuję. 1939 01:27:09,197 --> 01:27:10,530 Więc on właśnie wysłał żądanie HTTP. 1940 01:27:10,530 --> 01:27:11,270 Widzisz to? 1941 01:27:11,270 --> 01:27:14,700 I to właśnie w ten sam sposób że wszelkie żądania HTTP jest wysyłana. 1942 01:27:14,700 --> 01:27:16,830 Przeglądarka Google Chrome lub coś, to 1943 01:27:16,830 --> 01:27:19,570 zobaczymy, że Davin na próby wysłania żądania HTTP, 1944 01:27:19,570 --> 01:27:20,930 pomoże hm trochę. 1945 01:27:20,930 --> 01:27:23,950 I że pójdzie na drodze do serwera. 1946 01:27:23,950 --> 01:27:27,370 Teraz, serwer będzie miał PHP tutaj, lub jakikolwiek inny język. 1947 01:27:27,370 --> 01:27:29,990 Podobnie jak w normalnym żądania HTTP. 1948 01:27:29,990 --> 01:27:31,950 To dość dużo normalne żądania HTTP. 1949 01:27:31,950 --> 01:27:33,658 >> A następnie serwer powie, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin chce mnie sprawdzić, czy Ten abc123 w bazie danych. 1951 01:27:37,270 --> 01:27:38,310 Idź porozmawiać z modelu. 1952 01:27:38,310 --> 01:27:41,310 Model mówi, że nie jest. abc123 jest dobra nazwa użytkownika. 1953 01:27:41,310 --> 01:27:47,940 A potem, serwer WWW będzie używać PHP aby uczynić jakąś formę pliku. 1954 01:27:47,940 --> 01:27:52,280 To może być dosłownie pliku że zawiera "tak" w nim, lub "nie, 1955 01:27:52,280 --> 01:27:53,315 czy coś takiego. 1956 01:27:53,315 --> 01:27:54,190 Może to być dowolny plik. 1957 01:27:54,190 --> 01:27:57,080 >> To może być jak będę wyślij DAVIN zdjęcie kaczki 1958 01:27:57,080 --> 01:28:01,200 czy to w bazie danych i wyślij zdjęcie chomika 1959 01:28:01,200 --> 01:28:02,420 jeśli nie jest w bazie danych. 1960 01:28:02,420 --> 01:28:04,294 To byłby rodzaj głupie, ale to będzie działać. 1961 01:28:04,294 --> 01:28:07,030 OK, więc mogę wysłać kaczkę do Davina. 1962 01:28:07,030 --> 01:28:08,150 Davin swoją kaczkę. 1963 01:28:08,150 --> 01:28:13,330 A teraz, kto będzie do obsługi kaczkę? 1964 01:28:13,330 --> 01:28:16,390 Inteligentna część DAVIN znowu, więc obsługa JavaScript, prawda? 1965 01:28:16,390 --> 01:28:18,620 JavaScript wysłany wniosek i JavaScript 1966 01:28:18,620 --> 01:28:22,300 ma otrzymać wniosek i interpretować go w jakiejś formie. 1967 01:28:22,300 --> 01:28:26,630 >> I w tym sensie, to będzie powiedzieć, OK, jeśli kaczka to jestem dobry. 1968 01:28:26,630 --> 01:28:30,770 Jeśli chomik, to będę powiedzieć, nie, już nazwa użytkownika 1969 01:28:30,770 --> 01:28:31,970 istnieje w bazie danych. 1970 01:28:31,970 --> 01:28:33,845 Ale zwykle, nie jesteś zamiar wysłać kaczkę. 1971 01:28:33,845 --> 01:28:36,740 Masz zamiar wysłać coś nieco mądrzejszy. 1972 01:28:36,740 --> 01:28:40,320 A co używamy jest XML. 1973 01:28:40,320 --> 01:28:42,690 A ostatnio, używamy JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON jest po prostu JavaScript Oznaczenia obiekt, który 1975 01:28:45,629 --> 01:28:47,670 jest w zasadzie masz Cały obiekt JavaScript. 1976 01:28:47,670 --> 01:28:50,820 I umieścić go w pliku, tak jak że obiekt CS50, że chłopaki widziałem. 1977 01:28:50,820 --> 01:28:53,090 Możesz umieścić go w pliku, a wysłać go do Davina. 1978 01:28:53,090 --> 01:28:55,850 >> Więc w tym przypadku, chciałbym aby obiekt JavaScript 1979 01:28:55,850 --> 01:28:59,570 i po prostu powiedzieć, istnieje łatwy, tak. 1980 01:28:59,570 --> 01:29:01,630 Czy użytkownik istnieje, nie. 1981 01:29:01,630 --> 01:29:02,810 I wysłać go z powrotem do niego. 1982 01:29:02,810 --> 01:29:03,830 I dlaczego JSON? 1983 01:29:03,830 --> 01:29:07,330 Ponieważ osoba kto odbiera to 1984 01:29:07,330 --> 01:29:10,030 zamiar użyć skryptu obsłużyć reakcji. 1985 01:29:10,030 --> 01:29:14,970 I JavaScript działa tak dobrze, ponieważ to się nazywa JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Prawda? 1987 01:29:15,470 --> 01:29:19,660 Więc może po prostu wywołać funkcję i uzyskać ten miły obiekt od odpowiedzi. 1988 01:29:19,660 --> 01:29:22,890 A potem, on będzie wiedział, czy że użytkownik znajduje się w bazie danych, czy nie. 1989 01:29:22,890 --> 01:29:25,230 >> Więc widzisz, wszystko to przychodzi wraz z serwerem WWW, 1990 01:29:25,230 --> 01:29:28,450 A jeszcze jedno żądanie HTTP i jeden odpowiedzi HTTP i wszystko. 1991 01:29:28,450 --> 01:29:30,600 Więc upewnij się, że chłopaki zrozumieć to wywołanie AJAX 1992 01:29:30,600 --> 01:29:37,260 ponieważ pomaga zrozumieć wszystko pojęć mówimy. 1993 01:29:37,260 --> 01:29:40,260 >> Tak oto przykład AJAX z jQuery. 1994 01:29:40,260 --> 01:29:42,130 I tu, robimy z get JSON. 1995 01:29:42,130 --> 01:29:45,660 Więc my nie staramy się Obraz kota tutaj, lub kaczki. 1996 01:29:45,660 --> 01:29:48,110 Staramy się uzyskać plik JSON. 1997 01:29:48,110 --> 01:29:51,184 A potem będziemy czekać, aż to się robi, kropka zrobić. 1998 01:29:51,184 --> 01:29:52,850 Oznacza to, że czekam na odpowiedź. 1999 01:29:52,850 --> 01:29:54,180 To może trochę potrwać. 2000 01:29:54,180 --> 01:29:56,360 Następnie można zobaczyć trochę załadunek. 2001 01:29:56,360 --> 01:29:59,340 Jeśli chcesz to zrobić w witrynie. 2002 01:29:59,340 --> 01:30:01,440 Więc dot zrobić, a następnie co się dzieje, gdy to się robi? 2003 01:30:01,440 --> 01:30:04,040 Przechodzą w anonimowy funkcji, tak jak widzieliśmy wcześniej. 2004 01:30:04,040 --> 01:30:07,800 Ponieważ odbywa się to wydarzenie, po prostu jak kliknięcie myszą lub cokolwiek, 2005 01:30:07,800 --> 01:30:08,710 dla jQuery. 2006 01:30:08,710 --> 01:30:13,710 Więc przekazać w tej funkcji z danych, tekstu, status i jqXHR. 2007 01:30:13,710 --> 01:30:15,790 A w zasadzie, to tylko niektóre zmienne 2008 01:30:15,790 --> 01:30:22,160 że można użyć później mieć Stan żądania HTTP 2009 01:30:22,160 --> 01:30:24,470 Dane, które to będzie wysłać z powrotem do Ciebie. 2010 01:30:24,470 --> 01:30:28,740 Tak więc można później interpretować i zrobić coś pożytecznego z nim. 2011 01:30:28,740 --> 01:30:30,240 A jeśli nie, kiedy może nie? 2012 01:30:30,240 --> 01:30:33,780 Cóż, kiedy żądania HTTP daje masz 500 czy coś takiego. 2013 01:30:33,780 --> 01:30:37,420 Następnie, to będzie wam stan, jaki rodzaj uszkodzenia, które było, 2014 01:30:37,420 --> 01:30:38,420 i wszelkiego rodzaju rzeczy. 2015 01:30:38,420 --> 01:30:40,630 Musisz upewnić się, obsługiwać obydwa przypadki, 2016 01:30:40,630 --> 01:30:42,770 w przeciwnym razie program wariuje. 2017 01:30:42,770 --> 01:30:45,820 >> DAVIN: Więc tak, to jest dokładnie to, co widziałeś na ostatniej p-set. 2018 01:30:45,820 --> 01:30:49,720 Rzeczywista zapytanie AJAX jest w JSON get. 2019 01:30:49,720 --> 01:30:50,587 To jest zaproszenie. 2020 01:30:50,587 --> 01:30:52,920 A potem, wykonywane jest jak kropka sprawdza, czy jest to sukces. 2021 01:30:52,920 --> 01:30:55,620 Jeśli to się powiedzie, chcesz coś zrobić z danymi. 2022 01:30:55,620 --> 01:30:59,290 Wrócisz z tego Dane żądania JSON. 2023 01:30:59,290 --> 01:31:00,600 To jest to, czego wrócić. 2024 01:31:00,600 --> 01:31:04,470 Więc jeśli pamiętasz z p-set, Wielu z was było jak wspornika danych i 2025 01:31:04,470 --> 01:31:06,302 lub cokolwiek, kropka lub tytuł łącza. 2026 01:31:06,302 --> 01:31:08,260 Cokolwiek wróci z tego, co JSON 2027 01:31:08,260 --> 01:31:11,020 pola są w tym obiekcie JSON, że to, co dostajesz z powrotem. 2028 01:31:11,020 --> 01:31:12,394 Dane jest to, co dostajesz z powrotem. 2029 01:31:12,394 --> 01:31:15,510 Stan Tekst, tylko coś, co pozwala wiedzieć, co się stało. 2030 01:31:15,510 --> 01:31:20,570 A potem, jqXHR, to tylko Żądanie XML HTTP jQuery. 2031 01:31:20,570 --> 01:31:21,990 To jest po prostu jak przedmiot. 2032 01:31:21,990 --> 01:31:23,932 A potem nie, tak jak Gabe powiedział. 2033 01:31:23,932 --> 01:31:27,140 GABE: W naszym małym przykładzie abc123 tylko, aby sprawdzić, czy to w bazie danych 2034 01:31:27,140 --> 01:31:32,260 lub nie, dane będzie coś ci zrobi, jeśli nazwa użytkownika dot dane istnieją, 2035 01:31:32,260 --> 01:31:37,720 co jest, co się generowany przez PHP Ci, jeśli nazwa użytkownika kropka danych istnieje, 2036 01:31:37,720 --> 01:31:40,880 Mam zamiar poinformować, użytkownik nazwa już istnieje. 2037 01:31:40,880 --> 01:31:44,300 Innego, jestem po prostu pozwolić Użytkownik przejść wypełnienie formularza. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, bezpieczeństwo, fajne. 2040 01:31:50,820 --> 01:31:52,060 >> DAVIN: Chcesz mi? 2041 01:31:52,060 --> 01:31:54,500 >> GABE: mi się podoba. 2042 01:31:54,500 --> 01:31:57,680 Więc coś, co wygląda znajomo. 2043 01:31:57,680 --> 01:31:59,750 Już prawie gotowe. 2044 01:31:59,750 --> 01:32:02,670 Więc to jest tylko przykładem chłopaki widzieli w klasie. 2045 01:32:02,670 --> 01:32:04,860 Uzywasz argv1 tutaj. 2046 01:32:04,860 --> 01:32:06,460 To tak, jakby argument wiersza poleceń. 2047 01:32:06,460 --> 01:32:09,270 A my mem kopiowanie, że w buforze o wielkości 12. 2048 01:32:09,270 --> 01:32:12,560 Co tu problem? 2049 01:32:12,560 --> 01:32:13,660 Przepełnienie bufora! 2050 01:32:13,660 --> 01:32:15,400 Ponieważ mamy bufor o wielkości 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 może mieć wielkość dwóch miliardów. 2052 01:32:18,400 --> 01:32:19,960 Nie robimy żadnej kontroli granicznej. 2053 01:32:19,960 --> 01:32:24,970 Więc możemy skopiować dużo pamięci. 2054 01:32:24,970 --> 01:32:28,630 I będziemy szczególnie tym źle. 2055 01:32:28,630 --> 01:32:32,600 Co mogliśmy zrobić, to bardzo, bardzo na myśli w tym przypadku? 2056 01:32:32,600 --> 01:32:33,278 Tak? 2057 01:32:33,278 --> 01:32:36,528 PUBLICZNOŚCI: Część dwóch miliardów rzeczy zawiera kod wykonywalny, który zwraca 2058 01:32:36,528 --> 01:32:38,127 [Niesłyszalne]. 2059 01:32:38,127 --> 01:32:38,710 GABE: Dokładnie. 2060 01:32:38,710 --> 01:32:41,110 Więc to jest rodzaj rzeczą, że ludzie używają 2061 01:32:41,110 --> 01:32:43,344 jailbreak iPhone, na przykład. 2062 01:32:43,344 --> 01:32:44,260 Tak więc tego rodzaju rzeczy. 2063 01:32:44,260 --> 01:32:48,610 Bo można po prostu zrobić urządzenie wykonania dowolnego kodu, które lubisz. 2064 01:32:48,610 --> 01:32:50,247 Poprawka, więc poprawka jest łatwe. 2065 01:32:50,247 --> 01:32:51,330 Wystarczy sprawdzić na granicach. 2066 01:32:51,330 --> 01:32:53,455 Możesz sprawdzić wartość null, ponieważ zawsze sprawdzić wartość null 2067 01:32:53,455 --> 01:32:54,940 gdy mamy do czynienia z tekstem. 2068 01:32:54,940 --> 01:32:57,840 A potem, można podjąć długość ciągu przed. 2069 01:32:57,840 --> 01:33:00,150 A jeśli ciąg Długość jest prawidłowy ciąg 2070 01:33:00,150 --> 01:33:03,700 długość, która jest w odległości 0 i 12, to jesteśmy dobrzy. 2071 01:33:03,700 --> 01:33:07,144 >> DAVIN: Jeśli nie sprawdzić null, bardzo szybko, co się stanie? 2072 01:33:07,144 --> 01:33:07,810 To będzie seg winy. 2073 01:33:07,810 --> 01:33:10,850 Dlaczego SEG to winić? 2074 01:33:10,850 --> 01:33:12,510 Bo dzwonisz strlen na null. 2075 01:33:12,510 --> 01:33:13,010 GABE: Tak. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Prawda czy fałsz, za pomocą jednego Hasło jest dobry pomysł. 2078 01:33:19,630 --> 01:33:20,430 >> PUBLICZNOŚCI: Fałsz. 2079 01:33:20,430 --> 01:33:21,150 >> GABE: Fałsz. 2080 01:33:21,150 --> 01:33:23,870 Korzystać z wielu haseł i duże, długie nich. 2081 01:33:23,870 --> 01:33:26,050 Ikony kłódki zapewnienia bezpieczeństwa. 2082 01:33:26,050 --> 01:33:27,080 >> PUBLICZNOŚCI: Fałsz. 2083 01:33:27,080 --> 01:33:27,749 >> GABE: Fałsz. 2084 01:33:27,749 --> 01:33:28,790 To nic nie znaczy. 2085 01:33:28,790 --> 01:33:30,480 To tylko ikony. 2086 01:33:30,480 --> 01:33:32,824 SSL chroni przed człowiek w środku ataku. 2087 01:33:32,824 --> 01:33:33,490 PUBLICZNOŚCI: Fałsz. 2088 01:33:33,490 --> 01:33:34,110 GABE: Fałsz. 2089 01:33:34,110 --> 01:33:35,355 OK, więc tych wszystkich, są fałszywe. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Ładny. 2092 01:33:39,490 --> 01:33:40,220 [Niesłyszalne] 2093 01:33:40,220 --> 01:33:42,500 Chcesz o tym porozmawiać? 2094 01:33:42,500 --> 01:33:43,259 Twoja kolej. 2095 01:33:43,259 --> 01:33:45,050 Davina: Rodzaje ataków, człowiek w środku. 2096 01:33:45,050 --> 01:33:47,134 Co znajduje się człowiek w środku ataku? 2097 01:33:47,134 --> 01:33:48,050 PUBLICZNOŚCI: [niesłyszalne]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 DAVIN: Jeśli wysyłasz HTTP wniosek, mogą to zrobić, prawda? 2100 01:33:54,020 --> 01:33:57,890 Ale jeśli wysyłasz HTTPS, że prawdopodobnie nie będzie w stanie to zrobić. 2101 01:33:57,890 --> 01:33:59,952 Jest wiele punktów wraz połączenia. 2102 01:33:59,952 --> 01:34:00,660 Musisz routerów. 2103 01:34:00,660 --> 01:34:01,746 Musisz serwerów DNS. 2104 01:34:01,746 --> 01:34:04,120 Jeśli ktoś jest w stanie fizycznie zobaczyć, co wysyłasz, 2105 01:34:04,120 --> 01:34:06,140 więc ktoś jest w stanie rzeczywiście się między wami, 2106 01:34:06,140 --> 01:34:08,840 klient, jak i serwer, i jest w stanie zobaczyć, co wysyłasz, 2107 01:34:08,840 --> 01:34:10,298 jest to mężczyzna w średnim ataku. 2108 01:34:10,298 --> 01:34:14,287 Tak więc, aby zobaczyć, co starasz się uzyskać od serwera lub jest w stanie see-- gorsze 2109 01:34:14,287 --> 01:34:16,620 może być w stanie zobaczyć ciasteczka lub coś w tym stylu. 2110 01:34:16,620 --> 01:34:19,290 >> Tak na przykład, jeśli że nie używa protokołu SSL, to 2111 01:34:19,290 --> 01:34:21,900 może być w stanie zobaczyć Twoja sesja ciasteczka ID. 2112 01:34:21,900 --> 01:34:25,460 I to się nazywa porwanie sesji bo widzi cookies ID, 2113 01:34:25,460 --> 01:34:28,317 a następnie, że jest w stanie iść do Strona internetowa i udawać, że cię. 2114 01:34:28,317 --> 01:34:31,150 Bo tak jak w PHP, pamiętaj, gdy zalogowany, co mamy robić? 2115 01:34:31,150 --> 01:34:33,340 Stawiamy identyfikator sesji równe ID. 2116 01:34:33,340 --> 01:34:34,810 Tak, że identyfikuje cię. 2117 01:34:34,810 --> 01:34:38,300 Dlatego można zobaczyć swoje portfolio i nie wszyscy portfolio. 2118 01:34:38,300 --> 01:34:42,320 >> Cóż, jeśli jestem w stanie uzyskać to ciasteczko, wtedy mogę zalogować się na tej stronie. 2119 01:34:42,320 --> 01:34:45,380 A potem, może po prostu zobaczyć swoje rzeczy i rozpocząć kupna i sprzedaży rzeczy. 2120 01:34:45,380 --> 01:34:46,800 Więc to sesja porwanie. 2121 01:34:46,800 --> 01:34:50,810 Ale nie powinien być w stanie to-- tak Ciebie Można użyć człowieka w środku ataku 2122 01:34:50,810 --> 01:34:52,290 nawet jeśli są one przy użyciu protokołu SSL. 2123 01:34:52,290 --> 01:34:53,520 Ale nie powinien być w stanie. 2124 01:34:53,520 --> 01:34:56,580 Jeśli są za pomocą protokołu SSL, nie możesz sesji hijack. 2125 01:34:56,580 --> 01:34:58,927 Dlaczego? 2126 01:34:58,927 --> 01:35:01,135 Bo to wszystko jest szyfrowane, prawda? jeśli jest szyfrowana, 2127 01:35:01,135 --> 01:35:03,509 i nadal jestem człowiekiem w średnim, nadal uzyskać dane. 2128 01:35:03,509 --> 01:35:04,279 To dobrze. 2129 01:35:04,279 --> 01:35:05,070 Ale jest szyfrowane. 2130 01:35:05,070 --> 01:35:07,750 Tak naprawdę nie mogę go używać. 2131 01:35:07,750 --> 01:35:09,840 Więc to jest dwa. 2132 01:35:09,840 --> 01:35:11,544 >> Bardzo szybko, krzyż witryna wniosek fałszerstwo. 2133 01:35:11,544 --> 01:35:13,960 To tylko jeśli istnieje związek i że związek coś robi 2134 01:35:13,960 --> 01:35:14,890 , że uważasz, że nie powinien. 2135 01:35:14,890 --> 01:35:18,150 Tak na przykład, jeśli związek ten zamierza kupić akcje lub sprzedawać akcje, 2136 01:35:18,150 --> 01:35:19,360 i nie wiedziałem o tym. 2137 01:35:19,360 --> 01:35:22,040 Kliknąłeś na link, skierowała wniosek, kupił 2138 01:35:22,040 --> 01:35:24,240 lub sprzedaży czegoś, nie chciałem robić. 2139 01:35:24,240 --> 01:35:25,120 To, że. 2140 01:35:25,120 --> 01:35:30,720 >> Cross site scripting, więc tutaj, jesteś przechodząc poprzez zmienną q, 2141 01:35:30,720 --> 01:35:33,510 zamiast przekazywać w jakiejś wartości, może q jest jak imię. 2142 01:35:33,510 --> 01:35:36,560 Więc zamiast przekazywać sobie równych q Davin czy coś takiego, 2143 01:35:36,560 --> 01:35:38,740 jeśli nie używać HTML znaki specjalne, jeśli Ciebie 2144 01:35:38,740 --> 01:35:43,100 nie uciec, aby się upewnić, że to OK, to może mogę przekazać w zamian, 2145 01:35:43,100 --> 01:35:46,910 powiedzmy, że tutaj mówię druku lub coś w tym stylu, 2146 01:35:46,910 --> 01:35:51,070 wtedy będę mógł przekazać tutaj wywołanie skryptu. 2147 01:35:51,070 --> 01:35:53,140 >> Tak więc, zamiast dopiero się zmienną, 2148 01:35:53,140 --> 01:35:54,960 Chciałbym uruchomić to połączenie skryptu. 2149 01:35:54,960 --> 01:35:57,065 Tak więc w środku tego skryptu nazwać, co to robi? 2150 01:35:57,065 --> 01:36:00,190 Lokalizacja kropka dokument, który zamierza Zmiana położenia dokumencie. 2151 01:36:00,190 --> 01:36:02,290 Więc idę do przekierowania gdzieś indziej. 2152 01:36:02,290 --> 01:36:08,170 To się nazywa zły facet w ten przykład, bardzo dobre. 2153 01:36:08,170 --> 01:36:10,536 Nie można myśleć o słowa. 2154 01:36:10,536 --> 01:36:12,410 A potem, co jeszcze gorsze jest to, że mam zamiar 2155 01:36:12,410 --> 01:36:16,832 by następnie ustawić plik cookie, który jest pewne Zmienna mam na tej stronie. 2156 01:36:16,832 --> 01:36:19,040 Mam zamiar ustawić go równa do cookie dokument dot. 2157 01:36:19,040 --> 01:36:20,660 Dlatego mam zamiar wykraść cookies. 2158 01:36:20,660 --> 01:36:22,951 I mam zamiar przekierowania niektóre informacje na stronie internetowej 2159 01:36:22,951 --> 01:36:25,120 że nie powinno być dostępu. 2160 01:36:25,120 --> 01:36:29,250 A wszystko to dzieje się dlatego, że jesteś nie ucieka, co widziałeś. 2161 01:36:29,250 --> 01:36:29,910 Tak? 2162 01:36:29,910 --> 01:36:32,160 >> Publiczność: Tak po prostu to było jasne, że to 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com, że jest podatny na to. 2164 01:36:37,550 --> 01:36:39,300 Więc może pojawić się, że związek na każdej stronie. 2165 01:36:39,300 --> 01:36:42,200 Ktoś kliknie na niego, idzie do vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Masz ciasteczko do vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Powiedzmy, że Facebook jest wrażliwe, więc facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Masz swoje ciasteczko Facebook. 2169 01:36:48,310 --> 01:36:50,925 Co to robi, że jesteś będzie facebook.com, 2170 01:36:50,925 --> 01:36:53,990 to od razu przekierowuje Ci badguy.com, 2171 01:36:53,990 --> 01:36:57,182 ale w tym informacji o cookies. 2172 01:36:57,182 --> 01:36:59,310 Więc to szybkie przekierowanie, ale twój ciasteczko Facebook 2173 01:36:59,310 --> 01:37:02,572 jest dołączony do tego przekierowania, i to w jaki sposób [niesłyszalne]. 2174 01:37:02,572 --> 01:37:04,280 GABE: Tak, istnieje kilka bardzo wredne rzeczy 2175 01:37:04,280 --> 01:37:06,070 że ludzie mogą zrobić, jeśli nie ma tego. 2176 01:37:06,070 --> 01:37:09,190 Na przykład, jeśli Facebook pozostawiono Wszyscy zmienić swoją nazwę użytkownika, 2177 01:37:09,190 --> 01:37:11,680 i nie wykonywać żadnej testów poprawności, więc Ciebie 2178 01:37:11,680 --> 01:37:16,810 może wstawić coś JavaScript, który zmienia swój wizerunek na chomika. 2179 01:37:16,810 --> 01:37:22,590 I że wstawia sam JavaScript w każdego, kto postrzega swoją stronę. 2180 01:37:22,590 --> 01:37:26,400 Więc każdy, kto postrzega swoją stronę ma to samo w imieniu użytkownika. 2181 01:37:26,400 --> 01:37:30,104 A ponieważ jest to wirus, rozprzestrzenia się w postępie geometrycznym. 2182 01:37:30,104 --> 01:37:32,270 DAVIN: Będziemy pominąć ostatni jeden, a potem gotowe. 2183 01:37:32,270 --> 01:37:34,120 Więc jest to tylko kolejny przykład. 2184 01:37:34,120 --> 01:37:36,120 Więc to nie są one ucieczki ich tabeli SQL. 2185 01:37:36,120 --> 01:37:37,090 Więc można go upuścić. 2186 01:37:37,090 --> 01:37:38,805 Więc chcesz uciec rzeczy. 2187 01:37:38,805 --> 01:37:44,010 To był poprzednim przykładzie z cross site scripting. 2188 01:37:44,010 --> 01:37:45,430 Niestety zabrakło nam trochę późno. 2189 01:37:45,430 --> 01:37:46,870 Jutro, przepraszam! 2190 01:37:46,870 --> 01:37:48,560 Jutro mamy dyżury. 2191 01:37:48,560 --> 01:37:50,870 Więc godziny pracy w Cabbot 08:00 do 11:00. 2192 01:37:50,870 --> 01:37:55,240 Godziny urzędowania odpowiedzi na pytania konkursowe ściśle. 2193 01:37:55,240 --> 01:37:56,587