1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> DAVID MALAN: W porządku. 3 00:00:12,360 --> 00:00:15,970 Jest CS50, a to Koniec tygodnia dziewięciu. 4 00:00:15,970 --> 00:00:18,560 Minęło ponad wicher w ciągu ostatnich kilku dni. 5 00:00:18,560 --> 00:00:21,580 I problemu ustawić siedem, jeśli kolano głęboko w to, uświadomić sobie, że to dość 6 00:00:21,580 --> 00:00:23,340 nieco nowy, że tam jest. 7 00:00:23,340 --> 00:00:26,660 Ale zobaczmy, czy nie możemy poskładać wszystko razem tutaj w skrócie 8 00:00:26,660 --> 00:00:29,230 wcześniej skręcając się w jeszcze inny kierunek i widzenie 9 00:00:29,230 --> 00:00:30,510 gdzie indziej możemy iść. 10 00:00:30,510 --> 00:00:32,630 >> Tak jak dotąd, rozmawialiśmy o HTML. 11 00:00:32,630 --> 00:00:33,740 Rozmawialiśmy o CSS. 12 00:00:33,740 --> 00:00:34,705 Rozmawialiśmy o PHP. 13 00:00:34,705 --> 00:00:36,520 Już zaczęli doświadczać SQL. 14 00:00:36,520 --> 00:00:38,360 Dzisiaj porozmawiamy trochę o JavaScript. 15 00:00:38,360 --> 00:00:41,230 Ale w jaki sposób wszystkie te rozbieżne języki do siebie pasują? 16 00:00:41,230 --> 00:00:44,970 >> Więc rozmawialiśmy w zeszłym tygodniu o Pojęcie o serwer. 17 00:00:44,970 --> 00:00:48,470 Więc po prostu wyciągnąć ten prostokąt jako serwer WWW tutaj. 18 00:00:48,470 --> 00:00:52,200 I serwer WWW służy pewno pliki. 19 00:00:52,200 --> 00:00:54,640 A niektóre z tych plików mogą być pliki HTML. 20 00:00:54,640 --> 00:00:58,270 Tak więc jedną z rzeczy, które serwer WWW może wypluć może być plik, który 21 00:00:58,270 --> 00:01:01,290 my tak po prostu narysować zawierający niektóre HTML. 22 00:01:01,290 --> 00:01:04,786 Więc w laika, co nie HTML pozwalają robić? 23 00:01:04,786 --> 00:01:06,036 >> PUBLICZNOŚCI: Strona ładnie wyglądać. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> DAVID MALAN: OK, aby strona wygląda ładnie, choć myślę, że udowodnione 26 00:01:12,310 --> 00:01:13,370 że inaczej. 27 00:01:13,370 --> 00:01:18,250 Więc HTML nie pozwalają rozłożyć strony strukturalnie, i to pozwala na 28 00:01:18,250 --> 00:01:22,410 rodzaj estetycznie oznaczyć strony, oznaczyć zawartość statyczną, tak aby 29 00:01:22,410 --> 00:01:23,640 można następnie wyświetlić go w przeglądarce internetowej. 30 00:01:23,640 --> 00:01:24,690 >> Ale to jest klucz. 31 00:01:24,690 --> 00:01:26,130 To zawartość statyczna. 32 00:01:26,130 --> 00:01:28,590 Piszesz, masz go zapisać, a następnie wysłać go. 33 00:01:28,590 --> 00:01:31,130 I serwer WWW, a następnie zaprasza to do użytkowników. 34 00:01:31,130 --> 00:01:35,700 >> Ale stylizować za pomocą różne rzeczy języka w ogóle. 35 00:01:35,700 --> 00:01:40,150 Zaczęliśmy korzystać z atrybutu stylu na niektórych tagów. 36 00:01:40,150 --> 00:01:43,400 I atrybut stylu Ustawmy rzeczy takie jak rozmiar i kolor czcionki. 37 00:01:43,400 --> 00:01:46,460 I to prawdopodobnie zacząłem odkrywać, lub wkrótce do finału 38 00:01:46,460 --> 00:01:50,160 projekty, jeszcze innych potencjalnie właściwości, które można używać w CSS. 39 00:01:50,160 --> 00:01:54,710 I tak w laika, co Naprawdę to jest CSS zrobić? 40 00:01:54,710 --> 00:01:57,810 To są ich tylko przykłady. 41 00:01:57,810 --> 00:02:00,730 Jaki jest na to pozwolić HTML Nie wydaje się od tego, co 42 00:02:00,730 --> 00:02:02,606 widzieliśmy do tej pory? 43 00:02:02,606 --> 00:02:04,850 >> PUBLICZNOŚCI: Definiowanie stylów samodzielnie. 44 00:02:04,850 --> 00:02:06,700 >> DAVID MALAN: Definiowanie stylów samodzielnie. 45 00:02:06,700 --> 00:02:10,280 Więc określić takie rzeczy jak klasy, jak ty może nie spotkałem, lub wyjątkowo 46 00:02:10,280 --> 00:02:13,800 identyfikacji węzłów w dokumencie tak że można je stylizować. 47 00:02:13,800 --> 00:02:16,890 Ale konkretnie, to powiedziałbym, że CSS naprawdę pozwala robić rzeczy 48 00:02:16,890 --> 00:02:20,790 ostatniej mili i pozwala określić wiele dokładniej estetyka, 49 00:02:20,790 --> 00:02:24,340 natomiast HTML dla większości pozwala Ci uporządkować swoje strony. 50 00:02:24,340 --> 00:02:27,310 >> I mimo, że istnieją pewne wartości domyślne, jak widzieliśmy, dla tagu 51 00:02:27,310 --> 00:02:30,690 pozycji tag, który z grubsza rzecz biorąc wykonane rzeczy i śmiały. 52 00:02:30,690 --> 00:02:34,250 To dość ogólne określenie z tagiem - i śmiały. 53 00:02:34,250 --> 00:02:35,260 Jaki rozmiar czcionki jest to, że? 54 00:02:35,260 --> 00:02:36,080 Jakiego koloru jest to, że? 55 00:02:36,080 --> 00:02:36,890 Jak pogrubione to jest? 56 00:02:36,890 --> 00:02:39,830 I CSS pozwala Ci bardziej subtelnie dostroić takie rzeczy. 57 00:02:39,830 --> 00:02:42,150 Jak również układ, jak niektórzy z widzieliście. 58 00:02:42,150 --> 00:02:45,180 >> I szczerze mówiąc, CSS jest nieco języka bałagan. 59 00:02:45,180 --> 00:02:48,370 Jest to bardzo potężny, że można zrobić dosłownie każda strona internetowa, która masz 60 00:02:48,370 --> 00:02:51,880 widziałem w internecie dzisiaj z nim, ale jest to rodzaj bólu w szyi. 61 00:02:51,880 --> 00:02:54,440 I niektórzy z was uderzył głową na ścianach już tylko uwagi 62 00:02:54,440 --> 00:02:58,560 coś głupiego jak menu w centrum Problem ustawić siedem, jeśli dotarłeś do 63 00:02:58,560 --> 00:02:59,470 że punkt już. 64 00:02:59,470 --> 00:03:01,530 >> Ale sobie sprawę, te rzeczy się łatwiejsze z czasem. 65 00:03:01,530 --> 00:03:02,820 Zaczniesz dostrzegać wzory. 66 00:03:02,820 --> 00:03:06,020 I znowu, Google będzie twoim przyjacielem na różne sposoby, w którym można 67 00:03:06,020 --> 00:03:07,220 rozwiązywaniu tego rodzaju problemów. 68 00:03:07,220 --> 00:03:11,520 >> I śmiem twierdzić z CSS i HTML więcej ogólnie, można rozwiązywać problemy w 69 00:03:11,520 --> 00:03:15,910 wiele więcej sposobów, z których każdy może bardzo dobrze być poprawne, niż mógłbyś 70 00:03:15,910 --> 00:03:18,900 w coś jak C, nawet teraz PHP lub JavaScript. 71 00:03:18,900 --> 00:03:21,080 Są po prostu wiele różnych sposoby świeckich rzeczy. 72 00:03:21,080 --> 00:03:22,570 >> Ale to zaczęło się niechlujny, powiedzieliśmy. 73 00:03:22,570 --> 00:03:26,480 Tylko rodzaj przemieszania kod HTML i Twój CSS z atrybutem stylu było 74 00:03:26,480 --> 00:03:27,590 trochę zaniedbany. 75 00:03:27,590 --> 00:03:31,460 I tak zamiast powiedział, jakby abstrakcyjnie mówiąc, że powinien 76 00:03:31,460 --> 00:03:34,050 przynajmniej zacząć czynnika z Twojego CSS prawdopodobnie. 77 00:03:34,050 --> 00:03:37,430 Nie Twój styl atrybuty, ale przynajmniej użyć znacznika style wewnątrz, co 78 00:03:37,430 --> 00:03:38,840 część strony internetowej? 79 00:03:38,840 --> 00:03:39,560 >> PUBLICZNOŚCI: Kierownik. 80 00:03:39,560 --> 00:03:40,120 >> DAVID MALAN: W głowie. 81 00:03:40,120 --> 00:03:43,270 Do tej pory mieliśmy tylko tytuł się nie, ale można też dodać styl 82 00:03:43,270 --> 00:03:47,230 tag, można umieścić swój CSS z grubsza Mówiąc w kierunku górnej strony. 83 00:03:47,230 --> 00:03:52,550 Ale potem wzięliśmy rzeczy jeden krok dalej i uwzględnić, że się więcej 84 00:03:52,550 --> 00:03:54,130 w osobnym pliku. 85 00:03:54,130 --> 00:03:57,240 >> I tak te dwa pliki były jakoś teraz połączone. 86 00:03:57,240 --> 00:03:59,550 I rzeczywiście tak było tag, który to zrobił. 87 00:03:59,550 --> 00:04:02,920 I to, co było jednym z nadrzędnych motywacje do faktoringu naszą CSS 88 00:04:02,920 --> 00:04:04,057 Wszystkie więcej? 89 00:04:04,057 --> 00:04:05,280 >> PUBLICZNOŚCI: Ponowne. 90 00:04:05,280 --> 00:04:05,785 >> DAVID MALAN: Ponowne. 91 00:04:05,785 --> 00:04:06,150 Prawda? 92 00:04:06,150 --> 00:04:09,470 Można było zaobserwować w p-set siedem już że wiele stron, 93 00:04:09,470 --> 00:04:12,260 strona kupowanie, strona sprzedaży, strona portfolio, są prawdopodobnie 94 00:04:12,260 --> 00:04:13,550 skonstruowany nieco podobnie. 95 00:04:13,550 --> 00:04:17,579 Jest logo CS50 finansów na szczycie chyba, że ​​postanowiła to zmienić. 96 00:04:17,579 --> 00:04:19,839 Jest stopka na dole strony. 97 00:04:19,839 --> 00:04:24,315 I CSS pozwala następnie go na czynniki to w osobnym pliku, tak, że jeśli 98 00:04:24,315 --> 00:04:27,780 chcesz coś zmienić na świecie w poprzek całej witryny, można naprawdę 99 00:04:27,780 --> 00:04:29,390 po prostu zmienić go w jednym miejscu. 100 00:04:29,390 --> 00:04:32,750 >> Ale jest cena, jaką płacisz potencjalnie przez które zbitek 101 00:04:32,750 --> 00:04:38,380 CSS z mojego pliku HTML do oddzielnego złożyć odwołanie go z 102 00:04:38,380 --> 00:04:40,650 Znacznik, który widzieliśmy w poniedziałek. 103 00:04:40,650 --> 00:04:43,850 Co może minusem jest to? 104 00:04:43,850 --> 00:04:48,830 Wracając tydzień temu, gdy jesteśmy mówić o HTTP i TCP / IP i jak 105 00:04:48,830 --> 00:04:52,070 internet działa. 106 00:04:52,070 --> 00:04:53,530 Coś tutaj? 107 00:04:53,530 --> 00:04:54,730 >> PUBLICZNOŚCI: To zajmuje więcej czasu. 108 00:04:54,730 --> 00:04:55,470 >> DAVID MALAN: To zajmuje więcej czasu. 109 00:04:55,470 --> 00:04:56,750 Dlaczego? 110 00:04:56,750 --> 00:04:59,450 >> PUBLICZNOŚCI: [niesłyszalne]. 111 00:04:59,450 --> 00:04:59,750 >> DAVID MALAN: Tak. 112 00:04:59,750 --> 00:05:01,240 Więc to zapewne zajmuje trochę więcej czasu. 113 00:05:01,240 --> 00:05:04,290 Ponieważ jeden, CSS jest oczywiście nie w tym samym pliku. 114 00:05:04,290 --> 00:05:06,920 Więc teraz masz nie robić jeden, ale dwa wnioski. 115 00:05:06,920 --> 00:05:11,230 I każdy z tych wniosków, jak widzieliśmy w Chrome w tzw Inspektora, 116 00:05:11,230 --> 00:05:15,740 i patrzyliśmy na karcie sieciowej, każdy z tych plików wymaga jeden HTTP 117 00:05:15,740 --> 00:05:18,360 Wniosek, który widzieliśmy trwa pewną ilość czasu. 118 00:05:18,360 --> 00:05:19,290 Teraz, być może to nie jest dużo. 119 00:05:19,290 --> 00:05:20,670 Może to tylko 20 milisekund. 120 00:05:20,670 --> 00:05:22,260 Może to 200 milisekund. 121 00:05:22,260 --> 00:05:25,530 >> Ale myślę o stronie, takich jak Facebook, lub CNN, czy Google, które są znacznie 122 00:05:25,530 --> 00:05:28,060 większa niż przykładach ve wyglądał w pory. 123 00:05:28,060 --> 00:05:32,070 Strony te mogą mieć kilkadziesiąt plików, z których każdy może wymagać 124 00:05:32,070 --> 00:05:33,550 pobieranie pliku. 125 00:05:33,550 --> 00:05:35,800 Więc rzeczy mogą potencjalnie zaczynają zwalniać. 126 00:05:35,800 --> 00:05:39,280 >> A szczególnie w tych dniach, gdy wszyscy posiada telefony komórkowe w kieszeniach i 127 00:05:39,280 --> 00:05:43,010 wolnego połączenia internetowego, konieczności poczekać kilka milisekund, kilka 128 00:05:43,010 --> 00:05:46,110 więcej milisekund dla dodatkowego Pliki mogą być w rzeczywistości powoli. 129 00:05:46,110 --> 00:05:50,430 Opóźnienie jest słowo, które opisuje jakby czekając, że masz, że ci 130 00:05:50,430 --> 00:05:53,110 wystąpić podczas oczekiwania na niektóre informacja. 131 00:05:53,110 --> 00:05:54,430 >> Ale jest odwrotnie. 132 00:05:54,430 --> 00:05:56,600 Więc nie jest to wszelkiego rodzaju - 133 00:05:56,600 --> 00:05:58,170 faktycznie jest trochę huśtawce tutaj. 134 00:05:58,170 --> 00:06:02,970 Minusem teraz, ale co może zrobić przeglądarek jeśli jesteś mądry, aby uniknąć 135 00:06:02,970 --> 00:06:08,870 konieczności ubiegania się o ten sam styles.css plik może być ponownie do czego? 136 00:06:08,870 --> 00:06:09,390 >> Buforować go. 137 00:06:09,390 --> 00:06:10,370 Więc buforowanie - 138 00:06:10,370 --> 00:06:11,690 C-C-H-E - 139 00:06:11,690 --> 00:06:15,810 ogólnie oznacza tutaj po prostu zapisać plik, którego szukasz po raz pierwszy, i 140 00:06:15,810 --> 00:06:17,440 następnie sprawdzić pamięć podręczną dla niego. 141 00:06:17,440 --> 00:06:20,400 Sprawdź jesteś rodzaju pojemniku, a jeśli masz już 142 00:06:20,400 --> 00:06:24,520 Kopia styles.css, nawet jeśli niektóre inne strona w p-set, lub stronie internetowej, 143 00:06:24,520 --> 00:06:28,560 prosi go ponownie, tylko dać Użytkownik, który sam w pamięci podręcznej kopii. 144 00:06:28,560 --> 00:06:30,140 Nie przejmuj się o nią. 145 00:06:30,140 --> 00:06:32,560 >> Minusem jest jednak, jak niektórzy z was nie potknąć się w p-set. 146 00:06:32,560 --> 00:06:35,870 Jeśli dokonasz zmian na serwerze i wrócić do przeglądarki i 147 00:06:35,870 --> 00:06:39,250 przeładować, czasami robi przeglądarki Ci przysługę i nie przeszkadza 148 00:06:39,250 --> 00:06:43,660 ponownie pobierając plik styles.css ponieważ, dalej, jakie są szanse 149 00:06:43,660 --> 00:06:47,620 że te style, które używa Facebook zamierzasz zmienić godzinę na godzinę lub 150 00:06:47,620 --> 00:06:48,140 z dnia na dzień? 151 00:06:48,140 --> 00:06:48,800 Jest to dość niski. 152 00:06:48,800 --> 00:06:52,260 Mogą zmieniać się w czasie, ale nie przez minutę lub przez godzinę. 153 00:06:52,260 --> 00:06:55,810 >> Tak więc podstęp, po prostu FYI, gdy robi internetowej rozwój, jest często przytrzymaj 154 00:06:55,810 --> 00:06:59,500 przesunięciem na przykład, a następnie kliknij przeładować w przeglądarce, i że będzie 155 00:06:59,500 --> 00:07:03,280 zazwyczaj powiedzieć reload przeglądarki wszystko, nawet jeśli masz już 156 00:07:03,280 --> 00:07:04,180 że w pamięci podręcznej. 157 00:07:04,180 --> 00:07:06,630 Więc znowu, Plusy i minusy, jednak wszystkie 158 00:07:06,630 --> 00:07:08,260 ostatecznie projekt decyzji. 159 00:07:08,260 --> 00:07:11,520 >> Więc teraz, że nie tylko zakończyć historię tutaj. 160 00:07:11,520 --> 00:07:15,790 Gdybym teraz wrócić i do tyłu i do tyłu i wstecz, zaczęliśmy wprowadzać nie tylko 161 00:07:15,790 --> 00:07:18,060 HTML, ale PHP. 162 00:07:18,060 --> 00:07:20,786 Więc w laika, co nie PHP zróbmy? 163 00:07:20,786 --> 00:07:22,770 >> PUBLICZNOŚCI: [niesłyszalne]. 164 00:07:22,770 --> 00:07:24,258 >> DAVID MALAN: Co to jest? 165 00:07:24,258 --> 00:07:25,250 >> PUBLICZNOŚCI: Wprowadzenie logiki w kodzie. 166 00:07:25,250 --> 00:07:26,620 >> DAVID MALAN: Tak, wprowadzenie logiki w kodzie. 167 00:07:26,620 --> 00:07:29,570 Więc to prawda, język programowania z pętli i zmiennych oraz 168 00:07:29,570 --> 00:07:32,620 Funkcje i warunki, i wszystkie rzeczy używaliśmy powrotem 169 00:07:32,620 --> 00:07:33,780 kiedy od podstaw. 170 00:07:33,780 --> 00:07:36,780 I PHP, widzieliśmy, można stosować albo w linii poleceń - to 171 00:07:36,780 --> 00:07:39,190 nie musi mieć nic wspólnego z sieci, nawet jeśli to jest 172 00:07:39,190 --> 00:07:43,150 naprawdę jej początki i co to ma tendencję być dobry i sprzyja - 173 00:07:43,150 --> 00:07:47,130 ale można korzystać jedynie przez naturę PHP z tym, że ma nadruk () 174 00:07:47,130 --> 00:07:49,660 Funkcja i printf () funkcja, Funkcja lub echo (). 175 00:07:49,660 --> 00:07:52,440 Jest bukiety sposobów można może drukować tekst z PHP. 176 00:07:52,440 --> 00:07:56,540 >> W związku z tym, można użyć tego programowania język do wyjścia dokładnie 177 00:07:56,540 --> 00:07:58,460 co mówiliśmy wcześniej. 178 00:07:58,460 --> 00:08:01,360 Można dynamicznie generować Twój HTML. 179 00:08:01,360 --> 00:08:02,300 Może nie wszystko. 180 00:08:02,300 --> 00:08:06,460 Może twarde rzeczy, jak kod Nagłówek i stopka, a logo, 181 00:08:06,460 --> 00:08:07,950 i arkusze stylów, i to wszystko. 182 00:08:07,950 --> 00:08:11,190 Ale czegoś takiego jak p-set siedmiu, dokąd się wybierasz, zapasów i manipulowania 183 00:08:11,190 --> 00:08:14,690 pokazano portfel użytkownika, który jest będzie dynamicznie zmieniać, można 184 00:08:14,690 --> 00:08:18,960 na pewno korzystać z PHP i logikę to daje Państwo jako język programowania dla 185 00:08:18,960 --> 00:08:22,320 Wyjście dynamicznie podgrupach strony. 186 00:08:22,320 --> 00:08:25,900 >> Więc kiedy mówisz o dynamicznych stron internetowych, lub programowania WWW, to 187 00:08:25,900 --> 00:08:27,200 co tak naprawdę chodzi. 188 00:08:27,200 --> 00:08:31,450 Jak za pomocą języka PHP lub rzeczy nazywa Python lub Ruby lub Java, lub 189 00:08:31,450 --> 00:08:35,900 jeszcze inne języki, do kwerendy bazy danych Często lub innego serwera i 190 00:08:35,900 --> 00:08:38,580 następnie dynamicznie wypluć HTML. 191 00:08:38,580 --> 00:08:42,470 >> Teraz efekt końcowy, jak na bok, jest że większości stron internetowych w formacie HTML, 192 00:08:42,470 --> 00:08:45,970 w tym swoje p-set siedem, to prawdopodobnie będzie ogromny bałagan, jeśli 193 00:08:45,970 --> 00:08:48,060 spojrzeć na źródła Kod w przeglądarce. 194 00:08:48,060 --> 00:08:49,010 To nie jest wielka sprawa. 195 00:08:49,010 --> 00:08:51,550 W tym momencie, gdy zależy nam na styl, dbamy o 196 00:08:51,550 --> 00:08:52,740 rzeczy, które piszesz. 197 00:08:52,740 --> 00:08:56,240 Nie będziemy dbać o rzeczy że co się wyjść kod. 198 00:08:56,240 --> 00:08:59,520 Więc nie martw się o wcięcia tutaj, czy jest to PHP 199 00:08:59,520 --> 00:09:01,190 faktycznie wyprowadzania rzeczy. 200 00:09:01,190 --> 00:09:04,430 Po tym wszystkim, przeglądarka nie będzie obchodziło, i człowiek nie będzie szukał 201 00:09:04,430 --> 00:09:05,400 u źródła i tak. 202 00:09:05,400 --> 00:09:09,000 Mamy zespół, na przykład, by być patrząc na PHP. 203 00:09:09,000 --> 00:09:13,440 >> Więc pozwól mi dać szybkie przykład teraz dlaczego jeszcze to może być przydatne. 204 00:09:13,440 --> 00:09:18,620 Tak szczerze mówiąc, nie pamiętam, ostatni razem użyłem C do rozwiązania problemu w 205 00:09:18,620 --> 00:09:19,620 prawdziwy świat. 206 00:09:19,620 --> 00:09:22,330 To było chyba na studiach, kiedy Musiałem użyć języka, który 207 00:09:22,330 --> 00:09:26,710 był dość niski poziom i dał mi okazja do zrobienia czegoś bardzo wysoki 208 00:09:26,710 --> 00:09:30,720 wykonywania naprawdę zaoszczędzić jak najwięcej CPU cykli, jak mogłem, w dużej części 209 00:09:30,720 --> 00:09:33,990 bo przy użyciu ogromnych zbiorów danych, i każdy cykl CPU liczy. 210 00:09:33,990 --> 00:09:37,750 I szczerze mówiąc, nawet w takie rzeczy jak telefony te dni i inne urządzenia 211 00:09:37,750 --> 00:09:39,910 gdzie nie dość mają tyle pamięci i nie bardzo mają jak 212 00:09:39,910 --> 00:09:44,160 wiele procesorów, używając szybszych językach nadal jest atrakcyjne. 213 00:09:44,160 --> 00:09:47,290 >> Ale w prawdziwym świecie, jeśli tylko chcą rzucić jakiś program wraz z 214 00:09:47,290 --> 00:09:50,340 analizy niektórych danych, lub zebraniu cała masa rejestracji dla 215 00:09:50,340 --> 00:09:53,330 niektóre grupy studentów i chcesz bardzo szybko zautomatyzować wysyłanie e-maili 216 00:09:53,330 --> 00:09:56,240 jeden po drugim, aby każdy z tych rejestrujący, masz zamiar dotrzeć do 217 00:09:56,240 --> 00:09:59,240 wyższy poziom języka niż C tak powiem. 218 00:09:59,240 --> 00:10:04,060 Coś jak PHP lub Python lub Ruby, lub a które istnieją pół tuzina innych 219 00:10:04,060 --> 00:10:04,550 te dni. 220 00:10:04,550 --> 00:10:07,200 Ale te trzy są prawdopodobnie Najbardziej modne teraz. 221 00:10:07,200 --> 00:10:10,840 >> I co to oznacza, że ​​można otworzyć się edytorem tekstu takim jak gedit lub 222 00:10:10,840 --> 00:10:14,030 najbardziej cokolwiek innego i po prostu zacząć pisania kodu, nie martwiąc 223 00:10:14,030 --> 00:10:17,800 o kompilacji, bez konieczności naprawdę martwić o zarządzanie pamięcią, 224 00:10:17,800 --> 00:10:20,820 pamiętając jednak, że mało niechlujstwo w końcu wrócić 225 00:10:20,820 --> 00:10:24,790 ugryźć, czy zestaw danych staje się większy lub problemem dostaje duże. 226 00:10:24,790 --> 00:10:27,230 Ale co to oznacza dla us jest następujące. 227 00:10:27,230 --> 00:10:29,860 >> Pozwólcie mi iść do przodu i uruchamiania Speller z problemem ustawić sześć. 228 00:10:29,860 --> 00:10:33,480 Więc to jest moja realizacja opartego Trie że stosowane na duże 229 00:10:33,480 --> 00:10:35,500 zarządu, w którym nie przeprowadza się tak dobrze. 230 00:10:35,500 --> 00:10:38,720 Wrócimy w ciągu tygodnia i ponownie tych, którzy nie kończą się na szczycie 231 00:10:38,720 --> 00:10:40,430 wielka płyta w naszym ostatnim wykładzie. 232 00:10:40,430 --> 00:10:44,520 Ale teraz, pozwól mi iść do przodu i po prostu uruchomić moje rozwiązanie w tekście, i zrobimy 233 00:10:44,520 --> 00:10:48,460 Biblia Króla Jakuba, i jedziemy. 234 00:10:48,460 --> 00:10:51,080 >> To są podobno wszystkie błędnie napisane słowa z 235 00:10:51,080 --> 00:10:52,240 Biblia Króla Jakuba. 236 00:10:52,240 --> 00:10:55,560 Wdrożenie trwało i mój pół sekundy w sumie. 237 00:10:55,560 --> 00:10:58,270 Więc nie jest tak źle na tym szczególności komputera. 238 00:10:58,270 --> 00:11:01,540 Ale pomyśl, jak bardzo Kod miałem napisać. 239 00:11:01,540 --> 00:11:02,880 Pomyśl, jak wiele kodu trzeba było napisać. 240 00:11:02,880 --> 00:11:06,170 Pomyśl, ile godzin spędził w D-hol lub akademika lub gdziekolwiek 241 00:11:06,170 --> 00:11:07,890 faktycznie kodowania się to rozwiązanie. 242 00:11:07,890 --> 00:11:11,850 >> Cóż, jeśli rzeczywiście mają wyższy poziom język jak PHP, zapoznać się z 243 00:11:11,850 --> 00:11:13,350 co można zrobić tutaj. 244 00:11:13,350 --> 00:11:16,410 Najpierw załóżmy, że jest raczej Twój kod dystrybucji. 245 00:11:16,410 --> 00:11:17,790 Jest to plik o nazwie ortografii. 246 00:11:17,790 --> 00:11:20,220 Jest on dostępny jako część dzisiejszego Kod dystrybucji. 247 00:11:20,220 --> 00:11:22,670 I mam zamiar pomachać ręką w najbardziej o szczegółach, ale to jest rzeczywiście 248 00:11:22,670 --> 00:11:25,500 Ciekawym przykładem na to, jak to polubisz portu język 249 00:11:25,500 --> 00:11:28,870 jak C nad PHP. 250 00:11:28,870 --> 00:11:33,420 I dosłownie otwarte dwa okna tekstowe, jeden z moich wersji C speller.c, 251 00:11:33,420 --> 00:11:36,960 i po prostu zacząłem tłumaczyć to w moim udać się do PHP i wpisując go przy użyciu 252 00:11:36,960 --> 00:11:38,840 najbliższe równoważne funkcje. 253 00:11:38,840 --> 00:11:40,100 >> Więc niektóre z tych rzeczy są różne. 254 00:11:40,100 --> 00:11:43,730 Widzieliśmy ostatni raz, że nie korzysta z PHP uwzględnić w bardzo podobny sposób. 255 00:11:43,730 --> 00:11:47,050 Wykorzystuje wymaga zazwyczaj, choć obejmują nie istnieje. 256 00:11:47,050 --> 00:11:50,330 Define jest trochę inny od # Define w C, ale to 257 00:11:50,330 --> 00:11:51,890 jak zrobić stałą. 258 00:11:51,890 --> 00:11:55,860 $ Argc się okazuje istnieje w PHP, więc widzieliśmy, że przed. 259 00:11:55,860 --> 00:11:58,650 Są to tylko zmienne, wszystkie które zaczynają się dolara. 260 00:11:58,650 --> 00:12:00,590 Przypomnijmy, to tylko kilka pływających punktów. 261 00:12:00,590 --> 00:12:03,970 >> Więc krótko mówiąc, to serdecznie zapraszamy do przerzucać tego, czy ciekawy, to jest 262 00:12:03,970 --> 00:12:10,010 prawie line-dla-line konwersji C wersja speller.c do PHP. 263 00:12:10,010 --> 00:12:12,630 I można to zrobić ponownie na pół tuzina innych języków. 264 00:12:12,630 --> 00:12:14,910 >> Ale co ciekawe, jest to. 265 00:12:14,910 --> 00:12:16,910 Lub co szczerze przygnębiające to jest. 266 00:12:16,910 --> 00:12:20,790 Pozwól mi iść dalej i wpisz temat dictionary.php, i twierdzą, że jestem 267 00:12:20,790 --> 00:12:23,670 zamiar iść do przodu i ponownie wdrożyć Problem ustawić sześć tutaj. 268 00:12:23,670 --> 00:12:27,530 >> Więc proponuję najpierw, że w tym Plik, który będzie realizowany w 269 00:12:27,530 --> 00:12:30,550 PHP, więc pozwól mi otworzyć moje tagi, jak to. 270 00:12:30,550 --> 00:12:34,780 Pozwól mi dać sobie globalny zmienna $ rozmiar dostaje zero. 271 00:12:34,780 --> 00:12:36,710 I mam zamiar dać ja tabeli mieszania. 272 00:12:36,710 --> 00:12:38,110 Będę korzystać z tabeli mieszania dla tej rzeczy. 273 00:12:38,110 --> 00:12:42,070 Jak mogę zadeklarować tabeli mieszania w PHP? 274 00:12:42,070 --> 00:12:42,990 Gotowe. 275 00:12:42,990 --> 00:12:43,980 OK. 276 00:12:43,980 --> 00:12:48,870 >> Tak otwarty uchwyt Uchwyt stanowi blisko co w PHP, jak widzieliśmy? 277 00:12:48,870 --> 00:12:51,850 Tablicy, ale tablica może być tablicą asocjacyjną. 278 00:12:51,850 --> 00:12:54,320 Tablica asocjacyjna jest Struktura danych 279 00:12:54,320 --> 00:12:55,860 kojarzy klucze z wartościami. 280 00:12:55,860 --> 00:12:59,430 >> Teraz w najprostszy indeksowane numerycznie tablicy, te klucze są co? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 Zero, jeden, dwa, trzy, prawda? 283 00:13:03,960 --> 00:13:08,780 Stara szkoła rzeczy z powrotem z C, ale może być jak Foo, łańcuchy i barze, 284 00:13:08,780 --> 00:13:12,210 lub Maxwell, czy każdy taki ciąg. 285 00:13:12,210 --> 00:13:14,240 Tak, że mogę wykorzystać za chwilę. 286 00:13:14,240 --> 00:13:17,550 >> Pozwólcie mi iść do przodu i deklarują Funkcja jak - 287 00:13:17,550 --> 00:13:19,020 zróbmy load () w pierwszej kolejności. 288 00:13:19,020 --> 00:13:20,690 Więc obciążenie function (). 289 00:13:20,690 --> 00:13:23,440 I PHP jest trochę inaczej w tym dosłownie wpisać funkcję, ale 290 00:13:23,440 --> 00:13:24,930 nie wpisz typ zwracany. 291 00:13:24,930 --> 00:13:28,760 Mam zamiar iść dalej i powiedzieć, że funkcji load () powinna podjąć w 292 00:13:28,760 --> 00:13:31,000 Argument $ słowniku, po prostu jak wersja C nie. 293 00:13:31,000 --> 00:13:32,510 Robię, że z pamięci. 294 00:13:32,510 --> 00:13:34,910 >> I proponuję, że jestem zamierza to zrobić. 295 00:13:34,910 --> 00:13:37,080 Jestem po prostu zrobić foreach. 296 00:13:37,080 --> 00:13:40,710 Mam zamiar wywołać funkcję o nazwie file (), przekazując w imieniu, które 297 00:13:40,710 --> 00:13:44,990 Plik, który jest zmienny $ $ Słowa jako słownik. 298 00:13:44,990 --> 00:13:49,410 A następnie wewnątrz mój pętli tu jestem zamiar iść do przodu i przechowywać w moim 299 00:13:49,410 --> 00:13:57,440 $ Tabela $ word dostaje prawdziwe. 300 00:13:57,440 --> 00:13:57,918 Gotowe. 301 00:13:57,918 --> 00:14:01,264 Oh, wait. 302 00:14:01,264 --> 00:14:02,422 Gotowe. 303 00:14:02,422 --> 00:14:02,760 OK. 304 00:14:02,760 --> 00:14:04,970 >> To jest funkcja () obciążenie powiedzieć w PHP. 305 00:14:04,970 --> 00:14:05,865 Teraz, dlaczego to działa? 306 00:14:05,865 --> 00:14:07,010 A ja tu trochę oszukuje. 307 00:14:07,010 --> 00:14:09,980 >> Tak, jeden, foreach widzieliśmy krótko ostatnio. 308 00:14:09,980 --> 00:14:13,680 To po prostu oznacza, że ​​można iteracyjnego Tablica z I nie przeszkadza 309 00:14:13,680 --> 00:14:16,150 i n i Plus Plus, i to wszystko. 310 00:14:16,150 --> 00:14:21,350 Słownik jest oczywiście nazwa pliku, coś jak duże lub małe, dwa 311 00:14:21,350 --> 00:14:22,830 słowniki użyliśmy po raz ostatni. 312 00:14:22,830 --> 00:14:26,715 Plik jest funkcja, która otwiera tekst plik, odczytuje go linia po linii, a 313 00:14:26,715 --> 00:14:29,840 ręce Tobą ogromny wachlarz, której każdy z elementów jest 314 00:14:29,840 --> 00:14:31,340 linia z tego pliku. 315 00:14:31,340 --> 00:14:36,040 Więc to połączenie fopen i fread i pętla, oraz fclose, 316 00:14:36,040 --> 00:14:37,080 i to wszystko. 317 00:14:37,080 --> 00:14:40,150 Wreszcie, jako słowo oznacza po prostu, że jest Zmienna będę mieć dostęp do 318 00:14:40,150 --> 00:14:41,890 na każdej iteracji w tej pętli. 319 00:14:41,890 --> 00:14:46,910 >> Tak w skrócie, to oznacza tutaj jeden liniowej otworzyć plik, którego nazwa jest w 320 00:14:46,910 --> 00:14:50,750 Słownik, zmienna, iteracyjnego to linia po linii, i za każdym razem można dostać 321 00:14:50,750 --> 00:14:54,290 Linia, przechowywać w zmiennej o nazwie słowa, a następnie zrobić coś z wyrazu. 322 00:14:54,290 --> 00:14:55,280 Co chcę zrobić? 323 00:14:55,280 --> 00:14:58,110 Chcę umieścić słowo do mojego tabeli mieszania. 324 00:14:58,110 --> 00:15:00,860 >> Cóż, mogę umieścić coś w moim hash tabeli tak jak w C 325 00:15:00,860 --> 00:15:02,140 w nawiasach kwadratowych. 326 00:15:02,140 --> 00:15:03,660 Jest to nazwa dla mojego tabeli mieszania. 327 00:15:03,660 --> 00:15:07,180 Idę do tego indeksu hash Tabela w tym miejscu. 328 00:15:07,180 --> 00:15:08,920 Więc nie wspornik do zera, nie nawias jeden. 329 00:15:08,920 --> 00:15:11,990 Uchwyt cytat coś cytatu, cokolwiek to słowo. 330 00:15:11,990 --> 00:15:15,200 I jak możesz mieć w telefonie trie hash tabeli pracy, po prostu sklep 331 00:15:15,200 --> 00:15:17,650 skutecznie logiczna, w sposób dorozumiany lub jawnie. 332 00:15:17,650 --> 00:15:18,260 Gotowe. 333 00:15:18,260 --> 00:15:20,000 Jestem przechowywania wartość prawda. 334 00:15:20,000 --> 00:15:23,150 >> Teraz jest kilka rzeczy, Jestem na skróty tutaj. 335 00:15:23,150 --> 00:15:27,720 Technicznie, nie będzie przykry nowej linii, / n, w końcu 336 00:15:27,720 --> 00:15:28,820 każde z tych słów. 337 00:15:28,820 --> 00:15:31,770 Więc powinienem chyba wywołać funkcję PHP nazywa kotlet (), która będzie 338 00:15:31,770 --> 00:15:33,460 dosłownie posiekać, że off. 339 00:15:33,460 --> 00:15:35,020 I rzeczywiście trzeba zrobić jedną rzecz. 340 00:15:35,020 --> 00:15:38,380 Powinienem chyba na każdym zwiększyć rozmiar iteracji, więc jestem śledzenie 341 00:15:38,380 --> 00:15:39,560 na całym świecie z tego, co to jest. 342 00:15:39,560 --> 00:15:43,180 I szczerze mówiąc, i to jest jeden z głupsze aspekty PHP, jeśli jesteś 343 00:15:43,180 --> 00:15:46,950 za pomocą zmiennej globalnej, trzeba wyraźnie powiedzieć, że jesteś. 344 00:15:46,950 --> 00:15:51,670 Więc mam zamiar faktycznie wpisz w globalnym $ Rozmiar, $ table globalny, a teraz 345 00:15:51,670 --> 00:15:52,690 moja funkcja jest zakończona. 346 00:15:52,690 --> 00:15:57,475 >> Więc nie jest tak proste, jak wcześniej, ale prawdopodobnie trwało krócej niż C 347 00:15:57,475 --> 00:15:58,220 wersji, może być? 348 00:15:58,220 --> 00:15:58,730 OK. 349 00:15:58,730 --> 00:16:00,390 >> Więc teraz zróbmy kontrolę działania (). 350 00:16:00,390 --> 00:16:04,300 Zobaczmy, czy to trwało co najmniej godzin na koniec, że zabrał nas w C tak, 351 00:16:04,300 --> 00:16:06,500 pozwól mi iść do przodu i deklarują sprawdź w funkcji. 352 00:16:06,500 --> 00:16:09,070 Odbywa się w słowa argumentu, który jest będzie pochodzić z speller. 353 00:16:09,070 --> 00:16:13,410 I mam zamiar sprawdzić, czy następujące zmienne isset, tabela 354 00:16:13,410 --> 00:16:18,400 Uchwyt strtolower słowa - 355 00:16:18,400 --> 00:16:20,590 niech zrównoważyć wszystkie moje nawiasach - 356 00:16:20,590 --> 00:16:24,275 następnie powrócić prawda. 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 Inny - 359 00:16:28,460 --> 00:16:30,330 że było naprawdę ciężko częścią tego programu. 360 00:16:30,330 --> 00:16:31,940 Indziej, return false. 361 00:16:31,940 --> 00:16:32,630 Gotowe. 362 00:16:32,630 --> 00:16:33,460 To wyboru (). 363 00:16:33,460 --> 00:16:34,520 >> Teraz, dlaczego to działa? 364 00:16:34,520 --> 00:16:37,040 Cóż, jeden zdałem w słowie, który jest ciągiem. 365 00:16:37,040 --> 00:16:41,400 Dwa, mam kontroli wewnątrz hash Stół, który się nazywa $ tabela. 366 00:16:41,400 --> 00:16:45,470 Jestem zmuszając go na małe, dzwoniąc Funkcja bardzo podobna tolower () w 367 00:16:45,470 --> 00:16:48,580 C, ale to nie całe słowo, nie pojedynczy znak. 368 00:16:48,580 --> 00:16:52,680 A jeśli jest ustawiony, to znaczy tam jest ustawiona wartość, innymi słowy 369 00:16:52,680 --> 00:16:54,880 jeśli to prawda, to tak, jest to słowo. 370 00:16:54,880 --> 00:16:56,530 Bo ja je tam z obciążeniem (). 371 00:16:56,530 --> 00:16:59,100 A jeśli nie, mam zamiar wrócić fałszywe. 372 00:16:59,100 --> 00:17:00,090 >> Teraz gdy inne są proste. 373 00:17:00,090 --> 00:17:03,570 Rozmiar function (), jak mogę to zrobić? 374 00:17:03,570 --> 00:17:05,230 I w zasadzie nie zwróci $ rozmiar. 375 00:17:05,230 --> 00:17:07,770 Ale technicznie trzeba zrobić to irytujące rzeczy. 376 00:17:07,770 --> 00:17:10,640 I faktycznie się usłyszeć, byłem cięcia jeden róg zbyt wiele. 377 00:17:10,640 --> 00:17:12,920 I naprawdę trzeba global $ tabela. 378 00:17:12,920 --> 00:17:16,260 >> Ale powiedział, że jest rozładować). 379 00:17:16,260 --> 00:17:17,380 Rozładować () jest niesamowite. 380 00:17:17,380 --> 00:17:20,500 Wyładować function (). 381 00:17:20,500 --> 00:17:23,990 Jak chcę wdrożyć unload ()? 382 00:17:23,990 --> 00:17:25,079 Gotowe. 383 00:17:25,079 --> 00:17:25,450 OK. 384 00:17:25,450 --> 00:17:28,900 >> Tak rozładować (), zarządzanie pamięcią jest całkowicie pod opieką dla Ciebie w 385 00:17:28,900 --> 00:17:31,800 coś jak PHP i wiele języków wyższego poziomu. 386 00:17:31,800 --> 00:17:32,600 Tak, to jest niesamowite. 387 00:17:32,600 --> 00:17:36,080 Jak, dlaczego, do cholery, spędziliśmy przeszłość osiem dodatkowo tygodni na piśmie C 388 00:17:36,080 --> 00:17:41,030 najwyraźniej bardzo wolno, naprawdę czas spożywających problemy z kilkudziesięciu godzin 389 00:17:41,030 --> 00:17:42,530 z pracy w ramach naszych pasów? 390 00:17:42,530 --> 00:17:46,110 >> Cóż, z jednej strony, to może działać grzywny dla małych programów. 391 00:17:46,110 --> 00:17:47,840 To na pewno przyspieszyło mój czas rozwoju. 392 00:17:47,840 --> 00:17:49,790 Ale zobaczymy, co się stanie, w świecie rzeczywistym. 393 00:17:49,790 --> 00:17:52,370 >> Pozwól mi wejść do tego katalogu w oknie terminala. 394 00:17:52,370 --> 00:17:53,370 Jest ortografii. 395 00:17:53,370 --> 00:17:56,570 I zauważyć, jak na bok, a może spotkałem tego problemu ustawić w 396 00:17:56,570 --> 00:17:58,190 Problem zestaw sześciu lub siedmiu. 397 00:17:58,190 --> 00:18:01,610 Nie muszą ściśle końca pliki PHP z. php. 398 00:18:01,610 --> 00:18:05,250 Jeśli umieścisz linię jak ten pierwszy w bardzo góry, to specjalna linia 399 00:18:05,250 --> 00:18:10,980 składni, które zasadniczo oznacza znaleźć Program nazywa się PHP i użyć go do 400 00:18:10,980 --> 00:18:12,270 interpretować ten plik. 401 00:18:12,270 --> 00:18:15,410 Teraz nikt nie wie, że Używam programu PHP. 402 00:18:15,410 --> 00:18:19,860 I można go uruchomić po prostu tak, jakby zostały opracowane w C coś 403 00:18:19,860 --> 00:18:20,650 >> Ale chodzi o to. 404 00:18:20,650 --> 00:18:21,600 Właściwie, zróbmy to jeszcze raz. 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /. 406 00:18:23,530 --> 00:18:25,390 Jest ortografii. 407 00:18:25,390 --> 00:18:26,720 OK, 0,44 sekundy. 408 00:18:26,720 --> 00:18:28,080 Zrobiło się szybciej ten czas. 409 00:18:28,080 --> 00:18:29,745 >> Teraz idziemy do wersji PHP. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 Miły akcent. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 Ale pomyśl, ile czasu I zapisane w godzinach urzędowania. 414 00:18:53,285 --> 00:18:56,990 415 00:18:56,990 --> 00:18:57,790 OK. 416 00:18:57,790 --> 00:19:01,020 >> Więc 3,59 sekundy, które w rzeczywistości nie brzmi dokładne albo. 417 00:19:01,020 --> 00:19:03,710 Ale to dlatego, że długie opowiadanie, kiedy drukując ogromną ilość 418 00:19:03,710 --> 00:19:06,840 rzeczy do ekranu, to Sam spowalnia rzeczy w dół. 419 00:19:06,840 --> 00:19:11,260 Co tak naprawdę wziął w CPU Urządzenie było 3,59 sekundy, w 420 00:19:11,260 --> 00:19:15,260 przeciwieństwie do C, który odbył 0,44 sekund ostatnio. 421 00:19:15,260 --> 00:19:17,620 To naprawdę kolejność skala inna. 422 00:19:17,620 --> 00:19:20,280 >> Więc gdzie jest ta cena dochodzi? 423 00:19:20,280 --> 00:19:21,790 Dlaczego jest tak dużo wolniej? 424 00:19:21,790 --> 00:19:24,220 Dlaczego PHP wykonać tak słabo? 425 00:19:24,220 --> 00:19:25,242 Danielle? 426 00:19:25,242 --> 00:19:26,550 >> PUBLICZNOŚCI: Ty naprawdę nie użyć tabeli mieszania. 427 00:19:26,550 --> 00:19:27,710 >> DAVID MALAN: tak naprawdę nie użyć tabeli mieszania. 428 00:19:27,710 --> 00:19:28,760 Więc niby nie. 429 00:19:28,760 --> 00:19:29,870 Więc to jest tablica asocjacyjna. 430 00:19:29,870 --> 00:19:33,650 Najprawdopodobniej, jeśli ludzie w PHP są bardzo inteligentny, kiedyś pod 431 00:19:33,650 --> 00:19:39,520 kaptur rzeczywiste tabeli mieszania realizowany w coś jak C lub C + +. 432 00:19:39,520 --> 00:19:41,290 Ale. 433 00:19:41,290 --> 00:19:42,760 Tak. 434 00:19:42,760 --> 00:19:44,010 >> PUBLICZNOŚCI: [niesłyszalne]. 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> DAVID MALAN: Tak. 437 00:19:47,080 --> 00:19:50,780 Tak więc każdy z funkcji napisałem teraz - Właściwie można powiedzieć, że po raz kolejny 438 00:19:50,780 --> 00:19:51,480 trochę głośniej? 439 00:19:51,480 --> 00:19:54,509 >> PUBLICZNOŚCI: Każda z tych funkcji, które Czy uwzględniono ma dużo więcej do pełna 440 00:19:54,509 --> 00:19:56,610 pojemność niż - 441 00:19:56,610 --> 00:19:57,550 >> DAVID MALAN: Więc to jest bardzo prawdziwe. 442 00:19:57,550 --> 00:20:01,490 Tam jest dużo więcej, że jesteśmy nad głową naprawdę nie widząc, koncentrując się tylko na 443 00:20:01,490 --> 00:20:03,730 dictionary.php, który właśnie napisał. 444 00:20:03,730 --> 00:20:08,020 Natomiast jest cała tłumacz dzieje się w tle. 445 00:20:08,020 --> 00:20:12,040 Rzeczywiście, kiedy prowadził ten program, to nie został uruchomiony skompilowane zer i jedynek 446 00:20:12,040 --> 00:20:14,290 zaprojektowany dla mojego procesora Intel. 447 00:20:14,290 --> 00:20:19,270 Raczej, że został uruchomiony wiersz po wierszu Kod PHP, który wygląda dokładnie 448 00:20:19,270 --> 00:20:20,350 jak mamy wpisane. 449 00:20:20,350 --> 00:20:22,475 I tak przy każdym użyciu interpretowany język, ty 450 00:20:22,475 --> 00:20:23,850 faktycznie zapłacić tę cenę. 451 00:20:23,850 --> 00:20:27,010 To zajmie trochę czasu, aby przeczytać plik od góry do dołu, od lewej do 452 00:20:27,010 --> 00:20:30,740 w prawo, a następnie wykonać każdy linia znowu i znowu. 453 00:20:30,740 --> 00:20:34,250 >> Teraz w rzeczywistości, szczególnie w internecie, rzeczywiście można przyspieszyć ten proces 454 00:20:34,250 --> 00:20:38,660 poprzez buforowanie wyników Kod PHP jest interpretowany. 455 00:20:38,660 --> 00:20:41,640 I to ma sens w Internecie, ponieważ jeśli nie ma jednego użytkownika, jak 456 00:20:41,640 --> 00:20:46,300 mnie tutaj, ale 1000 lub 10000 użytkowników, a następnie być może po raz pierwszy plik jest 457 00:20:46,300 --> 00:20:49,050 dostępne jest powolne, ale potem to o wiele szybciej. 458 00:20:49,050 --> 00:20:51,000 >> Ale to też, ponownie, jest kompromis. 459 00:20:51,000 --> 00:20:53,870 I na coś w danych badawczych ustaw, a nawet jak coś duża 460 00:20:53,870 --> 00:20:58,330 tego, użytkownicy będą ostatecznie zaczynasz czuć, że spowolnienie. 461 00:20:58,330 --> 00:21:02,670 >> Tak w skrócie, są interpretowane języki bardzo w modzie, bardzo popularne, a 462 00:21:02,670 --> 00:21:06,710 szczerze mówiąc to prawdopodobnie wy języki należy sięgnąć po rozwiązania problemów 463 00:21:06,710 --> 00:21:08,200 Po CS50. 464 00:21:08,200 --> 00:21:12,720 Ale sobie sprawę, jak wiele jesteś naprawdę biorąc za pewnik, pod maską 465 00:21:12,720 --> 00:21:15,910 naprawdę te kilka ostatnich tygodni w hash stoły, i drzewa, i próbuje, 466 00:21:15,910 --> 00:21:20,770 które są stosowane w końcu faktycznie wdrożyć takie rzeczy otwartym uchwytem, 467 00:21:20,770 --> 00:21:24,200 nawias kwadratowy, co możemy teraz wdzięcznością przyjąć za pewnik. 468 00:21:24,200 --> 00:21:26,360 >> Warto więc przyjrzeć się teraz W tym kontekście internetowej. 469 00:21:26,360 --> 00:21:29,890 I ostatni raz wspominałem, że jest Pęczek superglobals w PHP, że 470 00:21:29,890 --> 00:21:32,490 tak naprawdę nie są istotne w wierszu poleceń. 471 00:21:32,490 --> 00:21:36,210 Są bardziej istotne w kontekście z wykorzystaniem PHP w kontekście internetowej. 472 00:21:36,210 --> 00:21:41,220 Więc PHP działa na serwerze WWW w celu do generowania rzeczy jak HTML. 473 00:21:41,220 --> 00:21:44,540 >> A my spojrzał na $ _GET i $ _POST i to tam automatycznie użytkownicy " 474 00:21:44,540 --> 00:21:49,100 Wejście kończy się po prostu, jeśli przedłoży tworzyć w pliku z rozszerzeniem. php na internecie 475 00:21:49,100 --> 00:21:50,460 Serwer jak urządzenia. 476 00:21:50,460 --> 00:21:53,310 Ale załóżmy na chwilę spojrzeć na $ _COOKIE I tablicy $ _SESSION. 477 00:21:53,310 --> 00:21:56,670 >> W laika, co to jest plik cookie, jak można zrozumieć w kontekście 478 00:21:56,670 --> 00:21:58,220 korzystając z internetu? 479 00:21:58,220 --> 00:21:59,450 >> PUBLICZNOŚCI: Plik na komputerze. 480 00:21:59,450 --> 00:21:59,920 >> DAVID MALAN: Tak. 481 00:21:59,920 --> 00:22:03,500 Jest to plik na komputerze użytkownika obsadzony przez co strona 482 00:22:03,500 --> 00:22:04,410 zdarzy ci się odwiedzić. 483 00:22:04,410 --> 00:22:07,334 Tak więc, gdy idziesz do Facebook, kiedy go do bankofamerica.com, gdy idziesz 484 00:22:07,334 --> 00:22:10,330 do google.com, gdy idziesz do niemal każdego Strona www na świecie w tych dniach, 485 00:22:10,330 --> 00:22:14,850 tym cs50.net, plik cookie jest obsadzone na komputerze, który jest 486 00:22:14,850 --> 00:22:19,800 albo wartość przechowywana w pamięci RAM w telefonie Komputer w pamięci przeglądarki, lub 487 00:22:19,800 --> 00:22:22,800 czasami rzeczywiście przechowywany plik na dysku twardym. 488 00:22:22,800 --> 00:22:26,960 >> I co się zazwyczaj przechowywane w tym pliku nie jest nazwą użytkownika, a nie swoje 489 00:22:26,960 --> 00:22:31,060 hasło, zazwyczaj nie jest to coś wrażliwe chyba strona nie jest tak 490 00:22:31,060 --> 00:22:35,040 dobre z ich bezpieczeństwa, ale jest to unikalny identyfikator między duży 491 00:22:35,040 --> 00:22:35,680 innych rzeczy. 492 00:22:35,680 --> 00:22:38,920 To duża liczba losowych zasadzone na swoje komputer, ale można myśleć, jak 493 00:22:38,920 --> 00:22:42,740 jakby pieczęć ręka jak z wirtualnego Klub lub park rozrywki, że niektóre 494 00:22:42,740 --> 00:22:47,160 pozwala pracownicy, właściciele, że usługi, aby pamiętać, kim jesteś. 495 00:22:47,160 --> 00:22:51,030 Więc jeśli duża liczba losowa jest jak 12345678, choć to oczywiście 496 00:22:51,030 --> 00:22:54,180 nie zbyt losowe, pomyśl o tym, jak pieczęć ręka podczas wizyty 497 00:22:54,180 --> 00:22:57,930 facebook.com po raz pierwszy, że pieczęć ten numer na ręku. 498 00:22:57,930 --> 00:23:01,510 A potem, ponieważ po HTTP, można jest przeglądarka, a ponieważ Facebook 499 00:23:01,510 --> 00:23:06,440 Oczywiście mówi sama jak sieci serwera, mówi, że protokół HTTP 500 00:23:06,440 --> 00:23:09,930 kiedy tylko następnie odwiedzić facebook.com, czy to drugie 501 00:23:09,930 --> 00:23:13,560 później godzinę później, nawet na następny dzień, tak długo, jak nie mają wyraźnie 502 00:23:13,560 --> 00:23:17,050 zalogować się, które skutecznie jest jak mycie rąk. 503 00:23:17,050 --> 00:23:20,280 HTTP mówi, należy przedstawić swoje Znaczek za każdym razem ręcznie 504 00:23:20,280 --> 00:23:22,020 powrócić do tej strony. 505 00:23:22,020 --> 00:23:24,390 >> Co Facebook to nie jest to, że spójrz na tego ręki i pieczęć 506 00:23:24,390 --> 00:23:26,850 mówią, oh, 123456789. 507 00:23:26,850 --> 00:23:30,260 Nie wiem, na pierwszy rzut oka, że ​​to jest David Malan w Cambridge, 508 00:23:30,260 --> 00:23:34,690 Massachusetts, ale mogą sprawdzić ich Baza danych i powiedzieć, oh, osoba 509 00:23:34,690 --> 00:23:39,930 , na którego komputerze posadziliśmy 123456789 jest David Malan z Cambridge, 510 00:23:39,930 --> 00:23:40,440 Massachusetts. 511 00:23:40,440 --> 00:23:46,000 Pokażmy, że to jego profil użytkownika Strona lub jego News Feed. 512 00:23:46,000 --> 00:23:49,660 >> Ale jest pewien problem, jeśli to jest to, jak web rzeczywiście działa. 513 00:23:49,660 --> 00:23:51,390 Rzućmy okiem na szybki przykład. 514 00:23:51,390 --> 00:23:55,190 Niech rzeczywiście iść powiedzieć facebook.com. 515 00:23:55,190 --> 00:23:58,130 Ale zanim będziemy mogli pójść tam, pozwól mnie śmiało i otwarcie Chrome 516 00:23:58,130 --> 00:23:59,790 Inspektor tutaj. 517 00:23:59,790 --> 00:24:01,140 Pozwól mi spojrzeć na karcie sieciowej. 518 00:24:01,140 --> 00:24:06,020 A teraz idź i wpisz w https://facebook.com. 519 00:24:06,020 --> 00:24:09,410 I robię to tak, że nie widzimy tych wszystkich przekierowań i odpadów 520 00:24:09,410 --> 00:24:10,660 czas patrząc przez te. 521 00:24:10,660 --> 00:24:12,690 Pozwól mi wciśnij enter. 522 00:24:12,690 --> 00:24:13,130 >> Dobrze. 523 00:24:13,130 --> 00:24:14,580 Widzimy całą masę wniosków. 524 00:24:14,580 --> 00:24:15,640 Przychodzi Facebook. 525 00:24:15,640 --> 00:24:16,930 Jest cała masa plików. 526 00:24:16,930 --> 00:24:19,290 I tutaj, na moje wspomnienie z latency ostatni raz, to 527 00:24:19,290 --> 00:24:21,240 Wiele żądań HTTP. 528 00:24:21,240 --> 00:24:23,700 Jednak pierwsza jest prawdopodobnie najbardziej interesujące. 529 00:24:23,700 --> 00:24:26,420 >> Więc przewiń tutaj, a Będę powiększyć w sekundy. 530 00:24:26,420 --> 00:24:29,090 To będzie rodzaj bałagan, ale zobaczymy. 531 00:24:29,090 --> 00:24:31,660 Facebook jest wysłanie do nas cała masa rzeczy. 532 00:24:31,660 --> 00:24:33,490 >> Ale zaraz, ciekawe. 533 00:24:33,490 --> 00:24:37,880 Oni sadzenia nie jedną, ale cztery znaczki ręki na rękę tutaj. 534 00:24:37,880 --> 00:24:40,400 Set-Cookie, Set-Cookie, set-cookie, set-cookie. 535 00:24:40,400 --> 00:24:44,030 I istnieje kilka funkcji tutaj. 536 00:24:44,030 --> 00:24:46,170 Wszystkie z nich wspomnieć o niektórych rodzaj wydechu. 537 00:24:46,170 --> 00:24:50,090 I wygląda na to Facebook ma nadzieję pamiętali o mnie, aż do 2015 roku. 538 00:24:50,090 --> 00:24:53,670 Więc to zapewne czas, w którym Muszę się wylogować albo będziesz po prostu 539 00:24:53,670 --> 00:24:55,710 automatycznie zakładać, że jestem nie wraca. 540 00:24:55,710 --> 00:24:57,840 Więc to jest naprawdę przyzwoity czas. 541 00:24:57,840 --> 00:24:59,170 >> A są jakieś inne co się tutaj dzieje. 542 00:24:59,170 --> 00:25:03,036 Plik ten wydaje się być siłą usunięta, mówiąc, że wygasł w 1970 roku 543 00:25:03,036 --> 00:25:04,460 przed ciasteczka istniał. 544 00:25:04,460 --> 00:25:06,510 Tak więc przeglądarka jest po prostu będzie założyć, OK, to jak 545 00:25:06,510 --> 00:25:07,910 mycie pieczęć ręce. 546 00:25:07,910 --> 00:25:11,240 >> Ale teraz, gdy moja przeglądarka robi kolejny wniosek - 547 00:25:11,240 --> 00:25:14,340 pozwól mi iść dalej i zrobić ponownie i ponownie. 548 00:25:14,340 --> 00:25:18,170 Teraz pozwól mi przejść z powrotem do top wniosek i zejść 549 00:25:18,170 --> 00:25:20,760 tutaj, nagłówki żądania. 550 00:25:20,760 --> 00:25:21,390 To zauważyć. 551 00:25:21,390 --> 00:25:25,280 Więc teraz nie jestem pod nagłówki odpowiedzi, nie zauważyć, że mówi nagłówki żądania. 552 00:25:25,280 --> 00:25:29,220 I zauważył, że moja przeglądarka w ramach jego wniosek po uderzeniu reload ma 553 00:25:29,220 --> 00:25:32,780 wysyłane co najmniej następujące informacje. 554 00:25:32,780 --> 00:25:34,670 Nie set-cookie, ale ciasteczko. 555 00:25:34,670 --> 00:25:38,750 Więc to jest linia, nagłówek HTTP tak mówić, gdzie moja przeglądarka jest swego 556 00:25:38,750 --> 00:25:43,340 z bez mojej wiedzy to przedstawienie moja ręka do wglądu Facebooka. 557 00:25:43,340 --> 00:25:46,020 >> Więc te ciasteczka mogą być wykorzystywane następnie do czego? 558 00:25:46,020 --> 00:25:49,420 Aby pamiętać, kim jesteś, czy pamiętam, jak wiele razy byłem tam, lub 559 00:25:49,420 --> 00:25:50,280 naprawdę nic. 560 00:25:50,280 --> 00:25:52,742 >> Więc tutaj jest counter.php. 561 00:25:52,742 --> 00:25:53,780 I pozwól mi powiększyć czcionki. 562 00:25:53,780 --> 00:25:58,380 I za każdym razem przeładować stronę, zawiadomienia to pamiętać, ile razy 563 00:25:58,380 --> 00:25:59,250 Byłem tam. 564 00:25:59,250 --> 00:26:00,570 Dobrze, że nie wszystko jest tak imponujące. 565 00:26:00,570 --> 00:26:03,140 Po prostu zamknąć tę kartę, a teraz wróćmy do 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php. 567 00:26:07,860 --> 00:26:08,970 >> O, to ciekawe. 568 00:26:08,970 --> 00:26:10,960 Wciąż pamiętał, nawet choć zamknąłem kartę. 569 00:26:10,960 --> 00:26:14,010 I szczerze mówiąc, jeśli zamknąć przeglądarkę, jeśli realizowane w odpowiedni sposób, I 570 00:26:14,010 --> 00:26:18,950 mogą jeszcze pamiętać, że ta osoba jest , kim był pierwszy raz, a 571 00:26:18,950 --> 00:26:22,840 tylko raz idę do menu Chrome, które tutaj jest tutaj, i przejść do 572 00:26:22,840 --> 00:26:25,990 Historia, a następnie kliknij przycisk Wyczyść dane przeglądarki, jak niektórzy z was mogą mieć w 573 00:26:25,990 --> 00:26:33,050 przeszłości, tylko wtedy będzie pliki cookie faktycznie zostać usunięte podczas internecie 574 00:26:33,050 --> 00:26:33,970 rozwój. 575 00:26:33,970 --> 00:26:35,340 >> Tak więc, jeśli mamy go - 576 00:26:35,340 --> 00:26:37,080 niech bliska gedit tutaj. 577 00:26:37,080 --> 00:26:38,910 A jeśli już iść do tego pliku. 578 00:26:38,910 --> 00:26:44,210 Pozwólcie mi odejść do naszego vhosts / localhost / public i pozwól mi zrobić 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 Zauważ, że jest to dość prosty program. 581 00:26:48,350 --> 00:26:50,250 Jest to dość prosta strona. 582 00:26:50,250 --> 00:26:51,770 >> Tak więc w górnej części pliku Zaledwie komentarzy. 583 00:26:51,770 --> 00:26:54,930 Ale tutaj jest nowa linia, którą może widziałem już w p-set siedem, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 To jest linia kodu PHP, który zasadniczo opowiada serwer WWW, należy 586 00:27:00,380 --> 00:27:03,400 Upewnij się, że pieczęć ręce i zrobić sprawdź znaczki rąk. 587 00:27:03,400 --> 00:27:06,810 To wszystko, że linia ma, i to to wszystko z tego procesu dla nas. 588 00:27:06,810 --> 00:27:09,510 Następnie zauważył Mam tylko dwa oddziały tutaj. 589 00:27:09,510 --> 00:27:14,150 Jeśli licznik wewnątrz tego klucza Zmienna globalna zwany specjalny 590 00:27:14,150 --> 00:27:18,010 $ _SESSION Jest - innymi słowy, czy jest jakaś wartość nie - 591 00:27:18,010 --> 00:27:22,440 zabierzmy go i przechowywać go w lokalnym zmienna o nazwie $ licznik. 592 00:27:22,440 --> 00:27:27,000 Else, niech przypisać $ licznik Domyślna wartość 0. 593 00:27:27,000 --> 00:27:30,320 >> Teraz tutaj jest jeden aspekt PHP to zarówno błogosławieństwem, jak i przekleństwem. 594 00:27:30,320 --> 00:27:32,080 PHP jest trochę zaniedbany. 595 00:27:32,080 --> 00:27:35,160 Tak więc podczas gdy w C, co Zakres licznika zostały 596 00:27:35,160 --> 00:27:36,725 tutaj albo tutaj? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> To były ograniczone z tymi klamrami. 599 00:27:41,690 --> 00:27:42,090 Wiesz co? 600 00:27:42,090 --> 00:27:46,920 W PHP istnieje nawet poza te nawiasy klamrowe, tutaj i tutaj, 601 00:27:46,920 --> 00:27:49,120 i tu, i tu, i nawet na dole. 602 00:27:49,120 --> 00:27:52,400 Więc mówię, to jest szczęście w tym sensie, że nie trzeba myśleć, jak 603 00:27:52,400 --> 00:27:54,070 ciężko jak my tydzień temu. 604 00:27:54,070 --> 00:27:56,880 Ale jest to również trochę przekleństwo w które nie ważne gdzie użyć zmiennej w 605 00:27:56,880 --> 00:28:00,020 PHP, co najmniej takiego programu, to ogólnie dostępne dla 606 00:28:00,020 --> 00:28:01,170 lepsze lub na gorsze. 607 00:28:01,170 --> 00:28:06,130 Więc trzeba pamiętać, że teraz zmienne mogą być niezdefiniowane. 608 00:28:06,130 --> 00:28:07,640 Mogłeś określono je gdzie indziej. 609 00:28:07,640 --> 00:28:09,460 >> Ale co ja mam zrobić, w końcu? 610 00:28:09,460 --> 00:28:13,160 Idę do przechowywania wewnątrz, że globalne zmienna jako wartość 611 00:28:13,160 --> 00:28:17,060 Counter wynik robi licznik plus 1. 612 00:28:17,060 --> 00:28:18,910 Więc to jest tylko arytmetyka że nie 613 00:28:18,910 --> 00:28:20,590 inkrementacji tego licznika. 614 00:28:20,590 --> 00:28:24,850 A fakt, że jestem przechowywania że wartość z powrotem tutaj, jest środkiem do 615 00:28:24,850 --> 00:28:29,970 zasadniczo aktualizacji bazy danych do pamiętać, że użytkownik 123456789 było 616 00:28:29,970 --> 00:28:31,010 tutaj dwa razy. 617 00:28:31,010 --> 00:28:33,780 A kiedy to ponownie następnym razem Odśwież stronę, to będzie sprawdzić 618 00:28:33,780 --> 00:28:36,710 moja ręka pieczęć i powiedzieć, oh, Użytkownik 123456789 ma teraz 619 00:28:36,710 --> 00:28:38,410 tu trzy razy. 620 00:28:38,410 --> 00:28:43,390 >> I co z tego i podobnych języków PHP robią dla nas jest to, że są pojęciami 621 00:28:43,390 --> 00:28:47,720 się, jak i gdzie i na jak długo do przechowywania wartości w tym specjalne 622 00:28:47,720 --> 00:28:48,830 superglobalna. 623 00:28:48,830 --> 00:28:52,750 I to superglobalna następnym razem odwiedzić stronę jest jakby magicznie 624 00:28:52,750 --> 00:28:57,440 wstępnie wypełnione, wypełnione wartościami, które byliśmy tam ostatni raz odwiedził, 625 00:28:57,440 --> 00:29:02,310 czy to było drugie temu, tydzień temu, czy w 2013 roku i jesteśmy obecnie rozmowy 626 00:29:02,310 --> 00:29:03,790 około 2015. 627 00:29:03,790 --> 00:29:07,600 PHP i serwera WWW zadba wszystkich, że dla Ciebie. 628 00:29:07,600 --> 00:29:08,850 >> PUBLICZNOŚCI: [niesłyszalne]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> DAVID MALAN: Zmienne w PHP są w zasadzie zawsze, chyba że globalna 631 00:29:15,760 --> 00:29:18,400 Oświadczam je wewnątrz funkcji, a następnie są lokalne do 632 00:29:18,400 --> 00:29:19,420 tylko funkcję. 633 00:29:19,420 --> 00:29:22,300 Ale dlatego, że nie napisałem każdy funkcje, są teraz skutecznie 634 00:29:22,300 --> 00:29:25,090 globalna w całym moim pliku tutaj. 635 00:29:25,090 --> 00:29:26,040 >> PUBLICZNOŚCI: Czy istnieje sposób do ich lokalnych? 636 00:29:26,040 --> 00:29:28,470 >> DAVID MALAN: Czy istnieje sposób, aby ich lokalny? 637 00:29:28,470 --> 00:29:30,680 Tylko przez owinięcie ich w funkcji. 638 00:29:30,680 --> 00:29:32,790 Który w najnowszej wersji PHP, możesz to zrobić za pomocą 639 00:29:32,790 --> 00:29:34,130 anonim funkcja. 640 00:29:34,130 --> 00:29:35,930 Ale o tym w kontekst JavaScript. 641 00:29:35,930 --> 00:29:37,260 Ale Krótka odpowiedź brzmi: nie. 642 00:29:37,260 --> 00:29:40,888 Dłuższa odpowiedź jest twierdząca. 643 00:29:40,888 --> 00:29:42,380 Ładne. 644 00:29:42,380 --> 00:29:43,380 Dobry quizu pytanie. 645 00:29:43,380 --> 00:29:43,930 Dobrze. 646 00:29:43,930 --> 00:29:47,760 >> Tak więc na koniec, sama strona rzeczywiście bardzo proste. 647 00:29:47,760 --> 00:29:51,470 Zauważ, że po I wyjść z trybu PHP, wycofanie że wszystkie te rzeczy w dół 648 00:29:51,470 --> 00:29:53,700 poniżej jest po prostu będzie się pluć z surowego do przeglądarki. 649 00:29:53,700 --> 00:29:57,050 Co jest w porządku, ponieważ chcę, aby wysłać Użytkownik niektóre HTML, ale chcę 650 00:29:57,050 --> 00:29:59,140 dynamicznie aktualizować że HTML. 651 00:29:59,140 --> 00:30:03,930 A jednym ze sposobów można to zrobić jest do sortowania bardzo szybko wracać do PHP 652 00:30:03,930 --> 00:30:07,730 tryb, korzystanie otwarty nawias znak zapytania znak równości, a następnie wyjście wartość 653 00:30:07,730 --> 00:30:08,650 licznika. 654 00:30:08,650 --> 00:30:12,360 >> Lub jeśli to wygląda trochę tajemnicze, to Znak równości jest w rzeczywistości tylko niektóre 655 00:30:12,360 --> 00:30:16,190 za to cukier syntaktyczny printf ($ licznik). 656 00:30:16,190 --> 00:30:19,160 Ale szczerze mówiąc, to trochę brzydki i trochę irytujące, aby wpisać. 657 00:30:19,160 --> 00:30:23,660 Więc PHP bardzo ładnie oferuje tę funkcję gdzie można po prostu powiedzieć, że więcej 658 00:30:23,660 --> 00:30:25,450 zwięźle w taki sam sposób. 659 00:30:25,450 --> 00:30:26,940 >> Więc co się dzieje pod spodem kaptur? 660 00:30:26,940 --> 00:30:31,210 Niech szybko zajrzeć na sieci Zakładka tu na counter.php. 661 00:30:31,210 --> 00:30:35,090 I pozwól mi iść do przodu i pierwszy niech wyczyścić pliki cookie. 662 00:30:35,090 --> 00:30:38,670 Wyjaśnijmy od przeglądania danych Początek czasu. 663 00:30:38,670 --> 00:30:39,680 Teraz wróćmy tutaj. 664 00:30:39,680 --> 00:30:41,340 Teraz przeładuj stronę. 665 00:30:41,340 --> 00:30:42,170 I jestem z powrotem na zero. 666 00:30:42,170 --> 00:30:44,810 Bo moja ręka została pieczęć myte, Mam teraz nowy plik cookie. 667 00:30:44,810 --> 00:30:48,780 >> Rzeczywiście, jeśli spojrzeć na karcie sieciowej i spojrzeć na nagłówki odpowiedzi, ogloszenia 668 00:30:48,780 --> 00:30:51,960 że urządzenie wysyła mnie ciasteczko, którego nazwa jest nieco 669 00:30:51,960 --> 00:30:55,820 arbitralnie, ale rodzaj rozsądnie, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 I to mi naprawdę to wysyłanie duża liczba losowa. 671 00:30:58,440 --> 00:30:59,440 To nie jest całkiem sporo. 672 00:30:59,440 --> 00:31:00,390 To nie jest całkiem szesnastkowym. 673 00:31:00,390 --> 00:31:03,600 Jest to pewnego rodzaju ciąg alfanumeryczny, ale prawdopodobnie jest to przypadkowe. 674 00:31:03,600 --> 00:31:06,830 I to jest tak, aby ręka stempel mówią, że mam na myśli. 675 00:31:06,830 --> 00:31:11,960 >> Tymczasem jeśli reload, a następnie kliknij spojrzeć na ten drugi dla mojej drugiej linii 676 00:31:11,960 --> 00:31:17,600 wniosek, zawiadomienie, że mój wniosek teraz Nagłówki zawierają PHPSESSID równa to, 677 00:31:17,600 --> 00:31:19,390 nie set-cookie, ale tylko ciasteczka. 678 00:31:19,390 --> 00:31:22,950 I to prezentacja mojej przeglądarki mojego znaczka stronie. 679 00:31:22,950 --> 00:31:28,820 >> Więc teraz jak teaser, a porozmawiamy więcej o tym w tygodniu lub tak, ale 680 00:31:28,820 --> 00:31:31,590 W jaki sposób to zrobić ci wrażliwe, konto Facebook 681 00:31:31,590 --> 00:31:34,137 podatne i inne takie Rachunki narażone? 682 00:31:34,137 --> 00:31:35,510 >> PUBLICZNOŚCI: Jeśli ktoś ma plik cookie. 683 00:31:35,510 --> 00:31:36,750 >> DAVID MALAN: Tak, jeśli ktoś ma swoje ciasteczko. 684 00:31:36,750 --> 00:31:39,920 Mam na myśli naprawdę, podobnie jak niektórzy z was może próbowali w jak klub lub 685 00:31:39,920 --> 00:31:44,030 park rozrywki, jeśli spróbujesz czegoś tak, aby skopiować znaczek, choć 686 00:31:44,030 --> 00:31:47,560 do tyłu na ręce innej osoby, a następnie on lub ona prezentuje to jako 687 00:31:47,560 --> 00:31:53,250 własne, czy to rzeczywiście nie wygląda identyczne, 123456789, a internetowej 688 00:31:53,250 --> 00:31:57,980 Serwer jest najwyraźniej po prostu się do zaufanie, że użytkownik jest tobą. 689 00:31:57,980 --> 00:32:01,450 >> I to jest rzeczywiście podstawowym zagrożenie w dowolnym momencie korzystania z plików cookie 690 00:32:01,450 --> 00:32:05,420 bo jeśli ktoś tak po prostu fałszuje mówić swoje ciasteczko, domyśla się, co to 691 00:32:05,420 --> 00:32:08,660 jest, albo naprawdę kopiowanie patrząc na komputerze 692 00:32:08,660 --> 00:32:09,890 i jest jak, OK. 693 00:32:09,890 --> 00:32:14,520 Ciasteczko Dawida jest JJ3JIK i tak dalej, a następnie są one wystarczająco inteligentny, aby wiedzieć, 694 00:32:14,520 --> 00:32:18,080 Jak sortować ręcznie wysłać, że plik cookie z przeglądarki lub z 695 00:32:18,080 --> 00:32:22,350 Program piszą, mogą całkowicie zalogować się na stronie internetowej, jak ty. 696 00:32:22,350 --> 00:32:28,560 To nie jest trudne, aby udawać, że ktoś inny, chyba że ponownie p-set 697 00:32:28,560 --> 00:32:30,790 dwa, które wprowadzono, co? 698 00:32:30,790 --> 00:32:32,065 >> PUBLICZNOŚCI: Kryptografia. 699 00:32:32,065 --> 00:32:33,860 >> DAVID MALAN: trochę trochę kryptografii. 700 00:32:33,860 --> 00:32:36,550 Proste kryptografii przynajmniej Standard Edition, ale krypto 701 00:32:36,550 --> 00:32:36,870 jednak. 702 00:32:36,870 --> 00:32:37,410 mniej. 703 00:32:37,410 --> 00:32:41,440 Okazuje się, czy szyfrować wszystkie te nagłówki za pomocą czegoś, co 704 00:32:41,440 --> 00:32:48,770 mogą teraz wiedzieć więcej swojsko jak SSL, Secure Socket Layer, lub https:// adresy URL, 705 00:32:48,770 --> 00:32:51,890 wtedy wszystkie te rzeczy, które już zerkając na faktycznie szyfrowane, 706 00:32:51,890 --> 00:32:54,800 co oznacza, że ​​jest to jak ty nie może odczytać znaczek ręki. 707 00:32:54,800 --> 00:32:59,350 Tylko facebook.com może lub google.com, lub w tym przypadku, urządzenie może 708 00:32:59,350 --> 00:33:00,550 Przeczytaj tę pieczęć ręki. 709 00:33:00,550 --> 00:33:04,020 >> Tragicznie, choć i znowu, to jest zbyt właściwe z rzeczy NSA 710 00:33:04,020 --> 00:33:06,410 późno, nawet SSL jest łamliwe. 711 00:33:06,410 --> 00:33:09,850 I nie jest to w rzeczywistości, że trudno nawet złamać to szyfrowanie. 712 00:33:09,850 --> 00:33:12,040 Nie tyle złamanie szyfrowania, ale przez oszukiwanie 713 00:33:12,040 --> 00:33:15,720 przeglądarka do odszyfrowania Dane przedwcześnie. 714 00:33:15,720 --> 00:33:17,880 Ale znowu, będziemy cię drażnić się, że przed długi. 715 00:33:17,880 --> 00:33:21,242 Na razie tylko się bać. 716 00:33:21,242 --> 00:33:23,070 To tragicznie rodzaj prawda. 717 00:33:23,070 --> 00:33:23,760 >> Dobrze. 718 00:33:23,760 --> 00:33:27,910 Więc skąd to się nas opuścić? 719 00:33:27,910 --> 00:33:29,010 Dobrze, zróbmy to. 720 00:33:29,010 --> 00:33:31,790 Idziemy do przodu i podjąć szybkie Teaser przed przerwę. 721 00:33:31,790 --> 00:33:33,790 I myślę, że trochę dłużej pozostawać dzisiaj, ale jedziemy do nurkowania w 722 00:33:33,790 --> 00:33:37,850 coś zupełnie nowy i sexy, które będą zaostrzy apetyt na jeszcze więcej. 723 00:33:37,850 --> 00:33:38,950 Więc to jest zapowiedź. 724 00:33:38,950 --> 00:33:41,520 >> Więc SQL, zaczęliśmy rozmawiać o zawsze tak krótko ostatni raz. 725 00:33:41,520 --> 00:33:44,670 Będziesz naprawdę ubrudzić sobie ręce niektóre z nich w p-set siedmiu. 726 00:33:44,670 --> 00:33:46,480 I laika, co robi SQL - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 dla Ciebie zrobić? 729 00:33:49,850 --> 00:33:50,310 Co to jest? 730 00:33:50,310 --> 00:33:51,546 Tak. 731 00:33:51,546 --> 00:33:53,240 >> PUBLICZNOŚCI: niech Ci dane dostępu. 732 00:33:53,240 --> 00:33:53,360 >> DAVID MALAN: Tak. 733 00:33:53,360 --> 00:33:55,120 To pozwala ci uzyskać dostęp do danych w bazie danych. 734 00:33:55,120 --> 00:33:56,710 Structured Query Language. 735 00:33:56,710 --> 00:33:59,890 I to jest w zasadzie język programowania. 736 00:33:59,890 --> 00:34:03,400 Są to cechy, które nie będzie nawet w klasie. 737 00:34:03,400 --> 00:34:04,710 Ale skutecznie mogą zdefiniować funkcje. 738 00:34:04,710 --> 00:34:06,870 Nazywa się je przechowywać procedur w języku SQL. 739 00:34:06,870 --> 00:34:09,860 Ale będziemy trzymać go w stosunkowo prosty i po prostu używać go do kilku podstawowych operacji 740 00:34:09,860 --> 00:34:14,320 jak wybranie danych, wprowadzanie danych, aktualizowanie danych i usuwania danych. 741 00:34:14,320 --> 00:34:17,400 >> I naprawdę można myśleć o bazy danych, jak bazy danych SQL, jak tylko 742 00:34:17,400 --> 00:34:18,800 jest program Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 Ponieważ SQL odnosi się do relacyjnej baza danych, w której 744 00:34:21,989 --> 00:34:23,480 relacja po prostu oznacza, tabele. 745 00:34:23,480 --> 00:34:24,739 Wierszy i kolumn. 746 00:34:24,739 --> 00:34:27,929 Więc wszystko można umieścić w arkuszu kalkulacyjnym tak czy Dokumenty Google, 747 00:34:27,929 --> 00:34:32,460 można umieścić w bazie danych SQL oświadczając tabeli. 748 00:34:32,460 --> 00:34:34,800 >> Teraz, w jaki sposób jest ona dostępna że informacje? 749 00:34:34,800 --> 00:34:38,239 Cóż, z polecenia lub pytania, takie jak to. 750 00:34:38,239 --> 00:34:40,199 SELECT, INSERT, UPDATE i DELETE. 751 00:34:40,199 --> 00:34:44,489 I w przeważającej części, to są cztery tylko składniki trzeba 752 00:34:44,489 --> 00:34:47,370 zrobić coś całkiem mocno w błąd ustawić siedem. 753 00:34:47,370 --> 00:34:49,940 >> Teraz z powrotem w dzień, to faktycznie interakcji z bazą danych w 754 00:34:49,940 --> 00:34:52,730 czarno-biały w okno terminalu migający znak zachęty tak. 755 00:34:52,730 --> 00:34:56,370 I bazy danych mamy uruchomiony na Urządzenie to zwane MySQL, który jest 756 00:34:56,370 --> 00:34:58,560 Aparat bazy danych wolne i otwarte. 757 00:34:58,560 --> 00:35:02,240 Jeśli Google i przeczytać w Wikipedii artykuł, będziesz wiedzieć, że nazwa jest 758 00:35:02,240 --> 00:35:05,060 nieco przejścia dla niektórych wersje Linuksa. 759 00:35:05,060 --> 00:35:10,460 Baza danych jest w rzeczywistości Maria widelec więc mówić o MySQL. 760 00:35:10,460 --> 00:35:12,740 >> Krótko mówiąc, Oracle kupił MySQL. 761 00:35:12,740 --> 00:35:13,870 Oracle jest duża firma. 762 00:35:13,870 --> 00:35:17,010 Ludzie są martwi, że byłoby nie pozostają zupełnie jak open source, 763 00:35:17,010 --> 00:35:20,930 tak, to jest po prostu kopia MySQL to jeszcze wolne, wciąż open source, oraz 764 00:35:20,930 --> 00:35:23,550 zainstalowany w Fedora Linux domyślnie. 765 00:35:23,550 --> 00:35:26,130 >> Ale to jest rodzaj bólu szyi do zapoznania się z 766 00:35:26,130 --> 00:35:27,310 bazy danych w ten sposób. 767 00:35:27,310 --> 00:35:30,560 Więc m.in. w urządzenia CS50 darmowe narzędzie open source o nazwie 768 00:35:30,560 --> 00:35:31,700 phpMyAdmin. 769 00:35:31,700 --> 00:35:33,940 Tylko zbieg okoliczności, że jest napisane w PHP. 770 00:35:33,940 --> 00:35:36,450 Nie ma fundamentalne znaczenie Potrzebujemy dla PHP tutaj. 771 00:35:36,450 --> 00:35:40,090 Ale to tylko narzędzie internetowe, które możemy pobrać za darmo, zainstalowane w 772 00:35:40,090 --> 00:35:43,850 Urządzenie, które pozwala nam na graficzny interfejs użytkownika, z którym 773 00:35:43,850 --> 00:35:48,610 zbadać siedem p-set z bazy danych które do tworzenia nowych baz danych, 774 00:35:48,610 --> 00:35:51,980 powiedzieć do własnego ostatecznego projektu gdybyś jak i ostatecznie stworzyć 775 00:35:51,980 --> 00:35:55,900 dynamiczne strony internetowe, takie jak CS50 Finansów które pozwalają na wyszukiwanie danych i 776 00:35:55,900 --> 00:35:58,140 aktualizuje dynamicznie dane. 777 00:35:58,140 --> 00:36:01,420 >> Nie zamierzamy użyć tylko prosty plik tekstowy lub CSV. 778 00:36:01,420 --> 00:36:05,950 Rzeczywiście można korzystać z bazy danych inteligentnych Program, dzięki czemu można wykonać więcej 779 00:36:05,950 --> 00:36:10,240 wyrafinowanych zapytań niż tylko czytanie przez wszystko liniowo. 780 00:36:10,240 --> 00:36:14,150 >> Tak na przykład, to jest to, co daje Ci z pudełka dla p-set siedmiu. 781 00:36:14,150 --> 00:36:18,280 To jest stół z pozoru przynajmniej Trzy kolumny, z których jeden jest 782 00:36:18,280 --> 00:36:21,450 użytkownika, z których jeden jest ziemniaczane i którego drugi ID. 783 00:36:21,450 --> 00:36:26,200 >> Ale ciekawa rzecz, i tylko wydobyć jedną myśl tutaj, nazwa użytkownika 784 00:36:26,200 --> 00:36:29,270 jest przypuszczalnie już wyjątkowy, prawda? 785 00:36:29,270 --> 00:36:31,190 To znaczy, większość każdej strony, jeśli masz nazwy użytkownika, nie 786 00:36:31,190 --> 00:36:32,370 Nie może być dwóch Caesars. 787 00:36:32,370 --> 00:36:33,440 Nie może być dwóch Malans. 788 00:36:33,440 --> 00:36:34,950 Nie może być dwóch jharvards. 789 00:36:34,950 --> 00:36:35,600 Jego unikalna. 790 00:36:35,600 --> 00:36:38,610 W przeciwnym razie, nie wiedzą, które jharvard jest w rzeczywistości. 791 00:36:38,610 --> 00:36:42,710 Więc co może być motywacją również ma trzecią kolumnę, po lewej 792 00:36:42,710 --> 00:36:46,970 tam nazwie ID, który wygląda Numer, który jest podobnie wyjątkowa? 793 00:36:46,970 --> 00:36:51,300 Czuje się trochę zbędny do mnie na pierwszy rzut oka. 794 00:36:51,300 --> 00:36:54,910 Dlaczego to może być atrakcyjne, aby mieć nie tylko unikalne nazwy użytkowników, 795 00:36:54,910 --> 00:36:56,837 ale również unikalne numery? 796 00:36:56,837 --> 00:36:59,460 >> PUBLICZNOŚCI: Mogli samo hasło. 797 00:36:59,460 --> 00:37:01,720 >> DAVID MALAN: Ludzie mogą mieć samo hasło, na pewno. 798 00:37:01,720 --> 00:37:03,900 Które mogą absolutnie zdarzyć. 799 00:37:03,900 --> 00:37:08,270 Ale jeśli ma to unikalny login, ja twierdzą, że tak naprawdę nie ma 800 00:37:08,270 --> 00:37:11,630 sprawa, bo jeśli wpisać swoje nazwa użytkownika, tylko trzeba sprawdzić ich 801 00:37:11,630 --> 00:37:15,060 hasło, tym ich mieszania. 802 00:37:15,060 --> 00:37:15,970 Dlaczego jeszcze? 803 00:37:15,970 --> 00:37:17,950 >> PUBLICZNOŚCI: Szybsze wyszukiwanie. 804 00:37:17,950 --> 00:37:18,680 >> DAVID MALAN: Szybsze wyszukiwanie. 805 00:37:18,680 --> 00:37:19,548 Dlaczego? 806 00:37:19,548 --> 00:37:21,460 >> PUBLICZNOŚCI: ID jest tylko jeden. 807 00:37:21,460 --> 00:37:24,040 >> DAVID MALAN: ID jest tylko jeden znak, lub dokładniej, jest to liczba, 808 00:37:24,040 --> 00:37:26,910 tak to chyba 32 bity lub coś w tym stylu. 809 00:37:26,910 --> 00:37:30,270 Natomiast nazwa użytkownika, najwyraźniej Jason Się Hirschhorn tam jest coś w rodzaju 810 00:37:30,270 --> 00:37:33,900 absurdalnie długi, a to będzie zajmie mi dużo więcej czasu na ciąg 811 00:37:33,900 --> 00:37:40,910 porównaj H-I-R-S-C-H-H-O-R-N i może / 0 lub coś w tym stylu, w celu 812 00:37:40,910 --> 00:37:45,100 zajrzeć do Jasona, a nie tylko mówiąc mi dać numer użytkownika dwa. 813 00:37:45,100 --> 00:37:46,510 To jest 32 bitów. 814 00:37:46,510 --> 00:37:48,550 To, że jeden INT trzeba porównać. 815 00:37:48,550 --> 00:37:52,150 I rzeczywiście, to jest dokładnie, dlaczego baz danych mają tendencję do przypisywania niepowtarzalnych identyfikatorów 816 00:37:52,150 --> 00:37:53,710 Wiersze w nich. 817 00:37:53,710 --> 00:37:56,280 >> Teraz to, co inne typy danych są tam oprócz INT i najwyraźniej 818 00:37:56,280 --> 00:37:57,160 ciągi takie jak ten? 819 00:37:57,160 --> 00:37:59,700 Cóż, być bardziej właściwe, Baz danych SQL, takie jak 820 00:37:59,700 --> 00:38:02,060 MySQL, mają pola char. 821 00:38:02,060 --> 00:38:05,320 A CHAR trochę myląco nie jest wolny CHAR. 822 00:38:05,320 --> 00:38:10,290 CHAR pole w bazie danych MySQL jest jeden lub więcej znaków, ale to 823 00:38:10,290 --> 00:38:11,780 stałą liczbę znaków. 824 00:38:11,780 --> 00:38:15,710 >> Tak na przykład, jeśli pójdę na celu phpMyAdmin, jak może masz już, lub 825 00:38:15,710 --> 00:38:21,340 wkrótce będzie problemu ustawić siedem, a ja go do mojej bazy danych i tylko dla zabawy, 826 00:38:21,340 --> 00:38:25,700 stwórzmy nową tabelę o nazwie test z zaledwie dwóch kolumn. 827 00:38:25,700 --> 00:38:27,160 Będę następnie kliknij przycisk Przejdź. 828 00:38:27,160 --> 00:38:30,070 I to staje się dość znajomo, zwłaszcza jak majstrować 829 00:38:30,070 --> 00:38:31,130 okolice na własną rękę. 830 00:38:31,130 --> 00:38:34,140 Tutaj mogę wpisać ID, aby utworzyć Nowa tabela typu INT. 831 00:38:34,140 --> 00:38:37,770 Ale tutaj mogę wpisać nazwę użytkownika, aby odtworzyć tę wcześniejszą tabelę. 832 00:38:37,770 --> 00:38:40,700 I zauważyć, mam całą masę rodzajów do wyboru. 833 00:38:40,700 --> 00:38:43,610 >> I to też jest dlaczego phpMyAdmin jest miłe. 834 00:38:43,610 --> 00:38:46,770 Jest to rodzaj samo-nauczania w które może po prostu rodzaj punktu i kliknij przycisk, a 835 00:38:46,770 --> 00:38:50,730 spojrzeć na menu rozwijanych i wnioskować z że to, co uprawnienia SQL daje. 836 00:38:50,730 --> 00:38:54,090 >> I rzeczywiście, jeśli wybiorę CHAR, I następnie muszą określić długość, lub jak 837 00:38:54,090 --> 00:38:55,940 wiele wartości, jak wiele znaków. 838 00:38:55,940 --> 00:39:00,090 Tak bardzo wspólne wartości są takie rzeczy jak 255, ale to trochę długo. 839 00:39:00,090 --> 00:39:02,250 Powszechnie jest osiem o nazwę użytkownika. 840 00:39:02,250 --> 00:39:03,590 Ale to trochę małe te dni. 841 00:39:03,590 --> 00:39:05,430 Więc to jest decyzja projektowa. 842 00:39:05,430 --> 00:39:08,630 Czy jest to 8 max znaków, 32, 255, 1000? 843 00:39:08,630 --> 00:39:09,830 To naprawdę zależy od ciebie. 844 00:39:09,830 --> 00:39:12,350 Ale CHAR pole jest stała liczba. 845 00:39:12,350 --> 00:39:16,420 Wybierz więc zbyt mało i jesteś rodzaju skręcane, jeśli chcesz dłuższą nazwę użytkownika. 846 00:39:16,420 --> 00:39:19,132 Wybierz zbyt wiele, a co minusem? 847 00:39:19,132 --> 00:39:20,820 >> PUBLICZNOŚCI: [niesłyszalne]. 848 00:39:20,820 --> 00:39:21,620 >> DAVID MALAN: To marnotrawstwo. 849 00:39:21,620 --> 00:39:24,835 Podobnie jak w C, jeśli masz większe fragment pamięci niż trzeba, jesteś 850 00:39:24,835 --> 00:39:27,190 tylko marnowanie czasu i marnowanie miejsca. 851 00:39:27,190 --> 00:39:31,430 Tak więc, jako alternatywa, istnieje VARCHAR, które rozwiązuje ten problem 852 00:39:31,430 --> 00:39:36,390 Długość leczenia nie w stałej długości, ale jako maksymalnej długości i przy użyciu 853 00:39:36,390 --> 00:39:40,990 zmienna liczba znaków, które następnie ma tendencję do korzystania tylko tyle znaków, jak ty 854 00:39:40,990 --> 00:39:42,710 rzeczywiście trzeba. 855 00:39:42,710 --> 00:39:43,670 Brzmi idealnie. 856 00:39:43,670 --> 00:39:45,640 >> Dlaczego nie możemy się pozbyć Char data wpisz wtedy? 857 00:39:45,640 --> 00:39:48,500 Co może być minusem używając varchars, który brzmi 858 00:39:48,500 --> 00:39:51,644 jak to jest ładne zwycięstwo? 859 00:39:51,644 --> 00:39:52,596 Tak? 860 00:39:52,596 --> 00:39:53,846 >> PUBLICZNOŚCI: [niesłyszalne]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> DAVID MALAN: OK, dobrze. 863 00:39:57,790 --> 00:40:01,101 Tak więc, jeśli wszystkie dane są takie same długości, co jest problemem? 864 00:40:01,101 --> 00:40:05,250 >> PUBLICZNOŚCI: Bo marnujesz dane, mówiąc im wszystko. 865 00:40:05,250 --> 00:40:09,060 >> DAVID MALAN: Więc jeśli wszystkie dane są samą długość, jednak jestem zdania, 866 00:40:09,060 --> 00:40:12,300 określenie, że maksymalna rozpiętość na VARCHAR nie różni się od 867 00:40:12,300 --> 00:40:16,070 określając stałą długość na Char, jeśli wiesz, że numer w góry. 868 00:40:16,070 --> 00:40:19,500 Ale jest rzeczywiście, a ja coś w rodzaju wyciąg z tej odpowiedzi rzeczywistości 869 00:40:19,500 --> 00:40:22,610 że jest jeszcze max, które mogłyby być irytujące, zwłaszcza jeśli 870 00:40:22,610 --> 00:40:25,920 napotkać nazwisko osoby, która jest niezwykle długi, że nie zrobił 871 00:40:25,920 --> 00:40:26,860 przewidywania. 872 00:40:26,860 --> 00:40:31,420 I to jest też trochę mniej wydajny faktycznie wyszukiwać varchars jako 873 00:40:31,420 --> 00:40:35,620 przeciwieństwie do poszukujących znaki, zwłaszcza na długich stołach, które mają dużą i 874 00:40:35,620 --> 00:40:36,510 wiele danych. 875 00:40:36,510 --> 00:40:40,060 Tak więc również tutaj ponownie tematyczna no oczywistym wyborem. 876 00:40:40,060 --> 00:40:42,870 >> Tak po prostu, aby dać poczucie inne typy danych, które mogą być interesujące 877 00:40:42,870 --> 00:40:45,400 albo dla p-set siedmiu lub przyszłość, jest INT. 878 00:40:45,400 --> 00:40:47,270 Jest BIGINT, które to jak długo, długo. 879 00:40:47,270 --> 00:40:48,880 To wydaje się być 64 bity. 880 00:40:48,880 --> 00:40:51,640 Jest dziesiętny, który można zobaczyć w Zestaw problemem, który jest znacznie 881 00:40:51,640 --> 00:40:55,300 Odpowiedź cleaner do problemów, które spotkałem się z pływaka i pływające 882 00:40:55,300 --> 00:40:55,980 nieścisłości punkt. 883 00:40:55,980 --> 00:40:57,390 A wtedy nie DATETIME. 884 00:40:57,390 --> 00:41:01,530 Jest dosłownie typ danych, który ma wyglądać jak rok, miesiąc, dzień, 885 00:41:01,530 --> 00:41:03,730 i godziny, minuty i sekundy. 886 00:41:03,730 --> 00:41:07,470 >> Ale mają również baz danych SQL rzeczy, nazwijmy indeksów. 887 00:41:07,470 --> 00:41:11,630 A index jest coś, co określić podczas tworzenia tabeli do 888 00:41:11,630 --> 00:41:15,720 dokonać wyszukiwania i inne operacje bardziej wydajne. 889 00:41:15,720 --> 00:41:18,550 W szczególności, jest coś, co nazywa indeks podstawowy, że można 890 00:41:18,550 --> 00:41:19,440 oświadczam co następuje. 891 00:41:19,440 --> 00:41:22,330 >> Zrobiliśmy to dla ciebie z tabela użytkowników dajemy ci. 892 00:41:22,330 --> 00:41:26,160 Zauważmy jednak, gdybym ręcznie odtwarzając Stół użytkownicy tutaj dając 893 00:41:26,160 --> 00:41:27,110 to nazwa użytkownika. 894 00:41:27,110 --> 00:41:28,125 I już określone ID. 895 00:41:28,125 --> 00:41:29,330 I podano INT. 896 00:41:29,330 --> 00:41:32,000 I podano nazwy użytkownika z maksymalnie 32 znaków. 897 00:41:32,000 --> 00:41:36,140 Ale jeśli będziemy się przesuwać w ten dość szerokie okno, zauważysz 898 00:41:36,140 --> 00:41:38,260 Kilka innych rzeczy mogę określić. 899 00:41:38,260 --> 00:41:40,950 >> One, można określić atrybuty jak, wiesz co, to 900 00:41:40,950 --> 00:41:42,190 INT powinien być podpisany. 901 00:41:42,190 --> 00:41:45,510 Nie chcę liczb ujemnych, więc zróbmy to UNSIGNED. 902 00:41:45,510 --> 00:41:48,660 Null, nie ma znaczenia tutaj, bo Chcę każdego użytkownika 903 00:41:48,660 --> 00:41:49,640 ma niepowtarzalny numer. 904 00:41:49,640 --> 00:41:50,830 I nie ma to być null. 905 00:41:50,830 --> 00:41:52,330 >> Ale to jest ciekawe. 906 00:41:52,330 --> 00:41:57,780 Można określić, że ID jest albo Klucz podstawowy z tej bazy danych, czy to 907 00:41:57,780 --> 00:42:00,620 wyjątkowy, lub to indeksowane, albo pełny tekst. 908 00:42:00,620 --> 00:42:05,630 Tak więc dla dzisiejszych potrzeb, długa historia krótkie, pierwotna oznacza, że ​​musi to 909 00:42:05,630 --> 00:42:10,570 być zarówno koncepcyjnie i technicznie Pole, które możemy użyć, aby jednoznacznie 910 00:42:10,570 --> 00:42:12,140 identyfikacji użytkowników. 911 00:42:12,140 --> 00:42:16,140 >> Więc kiedy patrzymy się użytkowników, to sort z obietnicą, aby znaleźć je w większości przez 912 00:42:16,140 --> 00:42:17,370 to unikalny identyfikator. 913 00:42:17,370 --> 00:42:21,930 A baza danych zapewnia, że ​​jeśli posiada numer użytkownika 3, nie można 914 00:42:21,930 --> 00:42:25,400 fizycznie wstawić innego użytkownika z tym samym 3 nr. 915 00:42:25,400 --> 00:42:28,380 Baza danych będzie po prostu odmówić , aby zapisać zmiany. 916 00:42:28,380 --> 00:42:32,310 Która jest dobra rzecz, ponieważ można chronić się przed siebie. ja 917 00:42:32,310 --> 00:42:34,270 >> Alternatywnie, dla nazwy użytkownika. 918 00:42:34,270 --> 00:42:37,670 Więc drugi rząd, przypomnijmy, jest pole nazwa użytkownika. 919 00:42:37,670 --> 00:42:41,860 Więc tu jest drugi rząd nazwę użytkownika, jak my się po lewej stronie tam. 920 00:42:41,860 --> 00:42:43,940 >> Więc co jeszcze może chcę podać? 921 00:42:43,940 --> 00:42:47,840 Nie wolno mi, zgodnie z SQL, określić dwa klucze podstawowe. 922 00:42:47,840 --> 00:42:50,750 można określić wspólny klucz, w którym spojrzeć na obu polach, ale nie mogą 923 00:42:50,750 --> 00:42:52,260 indywidualnie za klucze podstawowe. 924 00:42:52,260 --> 00:42:54,750 Więc to nie wchodzi w rachubę. 925 00:42:54,750 --> 00:42:56,040 Więc co może chcę wybrać? 926 00:42:56,040 --> 00:42:59,710 >> Cóż, jest wyjątkowe w duchu podobnym do klucz podstawowy, w którym określenie to 927 00:42:59,710 --> 00:43:03,570 Pole musi być unikalny, ale nie będzie jeden 928 00:43:03,570 --> 00:43:04,410 Używam cały czas. 929 00:43:04,410 --> 00:43:08,450 I nie będziemy korzystać z tego jednego wszystko Czas jakiego powodu jeszcze raz? 930 00:43:08,450 --> 00:43:10,490 To potencjalnie jeśli wolniej to długa nazwa użytkownika. 931 00:43:10,490 --> 00:43:11,740 To tylko strata czasu. 932 00:43:11,740 --> 00:43:16,140 >> INDEKS, w międzyczasie, określa, że ​​jest to nie będzie wyjątkowy, ale chcę 933 00:43:16,140 --> 00:43:19,470 pracę pod swoją magię kaptur zrobić to szybciej dla mnie 934 00:43:19,470 --> 00:43:21,420 szukaj w tej dziedzinie. 935 00:43:21,420 --> 00:43:23,320 Więc to chyba nie jest tutaj istotne. 936 00:43:23,320 --> 00:43:26,500 Dla użytkownika, chciałbym twierdzić, że UNIQUE jest dobra odpowiedź. 937 00:43:26,500 --> 00:43:31,200 Ale załóżmy, że zrobiliśmy więcej użytkowników interesujące niż tylko nazwy użytkowników, 938 00:43:31,200 --> 00:43:32,430 skróty i numery identyfikacyjne. 939 00:43:32,430 --> 00:43:33,860 Co zrobić, jeśli daliśmy ludziom pełne nazwy? 940 00:43:33,860 --> 00:43:37,700 Co zrobić, jeśli daliśmy im adresy i inne dane o nich? 941 00:43:37,700 --> 00:43:43,360 >> Cóż, jeśli można określić, że kolumna w Baza danych jest indeksowana, co oznacza, że 942 00:43:43,360 --> 00:43:47,730 MySQL lub Oracle, lub cokolwiek w bazie używasz, powinien pracować jej magii 943 00:43:47,730 --> 00:43:51,300 i użyć jakiegoś ozdobnego danych Struktura jak drzewo, albo, albo trie 944 00:43:51,300 --> 00:43:55,940 hash tabeli, lub coś w celu zagwarantowania że podczas wyszukiwania danych za pomocą 945 00:43:55,940 --> 00:43:58,150 wybierz na tej konkretnej dziedzinie - 946 00:43:58,150 --> 00:44:01,310 jak mi pokazać wszystkim, że mieszka na Oxford Street. 947 00:44:01,310 --> 00:44:02,540 Zapytanie tak. 948 00:44:02,540 --> 00:44:06,250 Jeśli z góry określone, że chcesz indeks na tym polu, 949 00:44:06,250 --> 00:44:09,050 wyszukiwania będzie o wiele szybciej. 950 00:44:09,050 --> 00:44:12,090 >> Jeśli nie określisz indeksu, najlepiej można zrobić, to wyszukiwanie liniowe, jeśli 951 00:44:12,090 --> 00:44:13,030 to nie jest klasyfikowane. 952 00:44:13,030 --> 00:44:16,220 Ale jeśli podasz INDEX, inteligentny ludzie, którzy się do bazy danych - 953 00:44:16,220 --> 00:44:19,340 ludzie tacy jak ty, którzy teraz wiedzą drzewa i stara i tabele z cebulą - 954 00:44:19,340 --> 00:44:23,220 automatycznie zbudować taki dane Struktura w pamięci RAM, aby upewnić się, że 955 00:44:23,220 --> 00:44:26,050 te pytania są o wiele szybsze. 956 00:44:26,050 --> 00:44:29,660 >> PEŁNOTEKSTOWE tymczasem jest podobny w duchu, ale pozwala zrobić wieloznacznego 957 00:44:29,660 --> 00:44:35,480 pytania, jak mi pokazać wszystkim, że mieszka na ulicach, które zaczynają się 958 00:44:35,480 --> 00:44:36,960 litera O z jakiegokolwiek powodu. 959 00:44:36,960 --> 00:44:38,850 Możesz zrobić wyszukiwań wieloznacznych tak. 960 00:44:38,850 --> 00:44:45,880 Lub, bardziej istotne rzeczy, jak pokazują mnie każdy, kto posiada słowo - 961 00:44:45,880 --> 00:44:49,400 pokaż mi wszystkich, których nazwa zaczyna się od w szczególności list. 962 00:44:49,400 --> 00:44:51,880 Możesz wyszukać słów kluczowych w ten sposób. 963 00:44:51,880 --> 00:44:52,630 Dobrze. 964 00:44:52,630 --> 00:44:55,760 >> Tak więc, możliwości projektowe istnieje potencjalnie. 965 00:44:55,760 --> 00:44:57,740 Są inni, że będę fala w swoje ręce. 966 00:44:57,740 --> 00:45:00,530 Okazuje się, że można mieć różne silniki do przechowywania. 967 00:45:00,530 --> 00:45:04,390 I to jest więcej niż potrzebujemy Arcane na pewno do problemu ustawić siedem. 968 00:45:04,390 --> 00:45:06,920 Domyślnie wy korzystania coś, co nazywa InnoDB. 969 00:45:06,920 --> 00:45:10,910 Zobaczysz wzmiankę o tym gdzieś w interfejs phpMyAdmin najbardziej prawdopodobne. 970 00:45:10,910 --> 00:45:14,130 Ale wiem, że są inne projekty Decyzje, które mają potencjał 971 00:45:14,130 --> 00:45:18,030 odsetek projektów końcowych, jeśli się coś zrobić na stronie internetowej. 972 00:45:18,030 --> 00:45:19,330 >> Ale zróbmy to. 973 00:45:19,330 --> 00:45:23,130 Idziemy do przodu i umieścić to na Ekran jak teaser do historii 974 00:45:23,130 --> 00:45:26,330 udziałem cię, współlokator, i szklankę mleka. 975 00:45:26,330 --> 00:45:28,240 Weźmy dwie minuty lub tak złamać tutaj. 976 00:45:28,240 --> 00:45:31,060 I czy można trzymać się, niech się wstecz, spojrzeć nieco bardziej na SQL i 977 00:45:31,060 --> 00:45:35,160 następnie nieco JavaScriptu z p-set osiem w umyśle. 978 00:45:35,160 --> 00:45:36,120 >> Dobrze. 979 00:45:36,120 --> 00:45:40,420 Więc przejdźmy planujesz Sprawa, która może rogu pojawiają się bardzo łatwo 980 00:45:40,420 --> 00:45:44,240 W związku z zastosowaniem bazy danych, czy szczerze mówiąc, nawet przy użyciu prawdziwego świata rzeczy 981 00:45:44,240 --> 00:45:46,280 jak bankomaty, aby zdobyć pieniądze. 982 00:45:46,280 --> 00:45:47,640 Tak tu jest lodówka. 983 00:45:47,640 --> 00:45:50,040 Załóżmy, że masz też w jednym Twój akademiku lub domu. 984 00:45:50,040 --> 00:45:54,990 I masz jedną współlokatorkę, a obie naprawdę lubisz mleka, na przykład. 985 00:45:54,990 --> 00:45:57,210 >> Więc wróciłem do domu z klasy jeden dzień. 986 00:45:57,210 --> 00:45:58,490 On lub ona nie jest jeszcze powrotem. 987 00:45:58,490 --> 00:45:59,180 Otwierasz lodówkę. 988 00:45:59,180 --> 00:46:00,870 Naprawdę chcesz dużą szklankę mleka. 989 00:46:00,870 --> 00:46:01,820 Nie ma mleka. 990 00:46:01,820 --> 00:46:02,920 Więc co zrobić? 991 00:46:02,920 --> 00:46:03,840 Zamykasz lodówkę. 992 00:46:03,840 --> 00:46:04,670 Chwycić kluczy. 993 00:46:04,670 --> 00:46:05,930 Udać się na plac. 994 00:46:05,930 --> 00:46:09,240 I można dostać w kolejce w CVS w tych rzeczy na własny Checkout, które zawsze 995 00:46:09,240 --> 00:46:11,180 trwać dłużej niż w rzeczywistości mając kasjerów. 996 00:46:11,180 --> 00:46:11,820 Tak czy inaczej. 997 00:46:11,820 --> 00:46:15,490 >> Tak więc, w międzyczasie, dot dot dot, twój współlokator wróci do domu, a on lub ona 998 00:46:15,490 --> 00:46:17,440 podobnie ma tęsknota jakiegoś mleka. 999 00:46:17,440 --> 00:46:20,380 Więc on otwiera lodówkę, wygląda w środku, i oh, cholera. 1000 00:46:20,380 --> 00:46:21,160 Bez mleka. 1001 00:46:21,160 --> 00:46:24,750 Więc on kieruje się, dzieje się udać drugiej CVS, który był jedynym 1002 00:46:24,750 --> 00:46:27,900 blokują wyjazd z jakiegoś powodu, a on lub ona się w kolejce, aby kupić trochę mleka. 1003 00:46:27,900 --> 00:46:30,480 >> Tymczasem, można dojść do domu, lub ona wraca do domu, i co zrobić 1004 00:46:30,480 --> 00:46:31,980 ostatecznie mają? 1005 00:46:31,980 --> 00:46:33,080 Dwa razy tyle mleka. 1006 00:46:33,080 --> 00:46:34,620 Ale tak naprawdę nie lubię mleka tyle. 1007 00:46:34,620 --> 00:46:37,300 Więc teraz masz tyle mleka, że ​​teraz jeden z nich jest po prostu pójdzie kwaśny 1008 00:46:37,300 --> 00:46:37,820 ostatecznie. 1009 00:46:37,820 --> 00:46:39,370 Więc to jest bardzo złe problem. 1010 00:46:39,370 --> 00:46:39,900 Prawda? 1011 00:46:39,900 --> 00:46:41,990 >> Więc co się stało? 1012 00:46:41,990 --> 00:46:44,810 Więc zasadniczo, jest to rodzaj od śmiesznej przykład. 1013 00:46:44,810 --> 00:46:48,580 Ale pod maską, co mieliśmy stało tu jest oboje sprawdzone 1014 00:46:48,580 --> 00:46:52,390 stan niektórych części pamięci, lodówka. 1015 00:46:52,390 --> 00:46:54,420 Oboje sprawdzili stan pewnej zmiennej. 1016 00:46:54,420 --> 00:46:57,360 Oboje wyciągnął wniosek, że wtedy działał dalej. 1017 00:46:57,360 --> 00:47:01,420 Ale niestety, podczas gdy twój współlokator był w sklepie, że stan 1018 00:47:01,420 --> 00:47:05,670 Zmienna zmienił, on wrócił i teraz chce zmienić stan, ale 1019 00:47:05,670 --> 00:47:07,480 to już zmienił na niego. 1020 00:47:07,480 --> 00:47:11,120 I oczywiście, on lub ona nie miałaby poszedł do sklepu, gdyby wiedzieli, 1021 00:47:11,120 --> 00:47:13,010 które były już w drodze. 1022 00:47:13,010 --> 00:47:16,430 >> Tak w świecie rzeczywistym, jak mogłeś uniknąć tego problemu, zakładając, że masz 1023 00:47:16,430 --> 00:47:18,940 lodówka, masz współlokatora, i rzeczywiście lubią mleko? 1024 00:47:18,940 --> 00:47:19,760 >> PUBLICZNOŚCI: Komunikacja. 1025 00:47:19,760 --> 00:47:20,580 >> DAVID MALAN: Komunikacja. 1026 00:47:20,580 --> 00:47:21,160 OK. 1027 00:47:21,160 --> 00:47:22,500 Ale jak można komunikować? 1028 00:47:22,500 --> 00:47:23,990 >> PUBLICZNOŚCI: Zostaw notatkę. 1029 00:47:23,990 --> 00:47:25,480 >> DAVID MALAN: Zostaw uwagę, prawda? 1030 00:47:25,480 --> 00:47:28,025 Zawsze zostawić notatkę, na fanów serialu. 1031 00:47:28,025 --> 00:47:31,580 W porządku, więc zawsze zostawić notatkę, lub umieścić naprawdę jak na kłódkę lub coś 1032 00:47:31,580 --> 00:47:35,440 w lodówce, który utrzymuje współlokator z kontroli stanu 1033 00:47:35,440 --> 00:47:36,540 że zmienna. 1034 00:47:36,540 --> 00:47:40,800 >> Teraz, dlaczego to może być germane do Problem ustawić siedem lub do bankomatów. 1035 00:47:40,800 --> 00:47:46,780 Cóż, wyobraź sobie świat, w którym w bankomacie może być w stanie pójść do bankomatu 1036 00:47:46,780 --> 00:47:48,920 Maszyna tutaj, a inny ATM tutaj. 1037 00:47:48,920 --> 00:47:50,680 A to zdarza się dość często. 1038 00:47:50,680 --> 00:47:54,150 I załóżmy, że miał dwie karty bankomatowe, jaki jest możliwy do uzyskania. 1039 00:47:54,150 --> 00:47:57,420 I zalogować się do obu maszyn skutecznie jednocześnie, miejmy nadzieję, 1040 00:47:57,420 --> 00:47:58,660 , podczas gdy nikt nie patrzy. 1041 00:47:58,660 --> 00:48:01,260 A następnie wpisać kod PIN mniej więcej jednocześnie. 1042 00:48:01,260 --> 00:48:06,280 A następnie zrobić kwerendę balansu aby zobaczyć ile pieniędzy masz. 1043 00:48:06,280 --> 00:48:08,920 I powiedzmy, że masz 100 dolarów pozostawił na koncie. 1044 00:48:08,920 --> 00:48:13,310 Więc w zasadzie jednocześnie, można powiedzieć, jeden, zero, zero, wprowadź. 1045 00:48:13,310 --> 00:48:16,000 I mam nadzieję, że wrócę trochę pieniędzy. 1046 00:48:16,000 --> 00:48:18,440 >> Ale ile pieniędzy można dostać z powrotem? 1047 00:48:18,440 --> 00:48:21,710 Obecnie komputery na koniec dnia zwłaszcza jeśli rozmawiasz 1048 00:48:21,710 --> 00:48:27,360 serwery, nie muszą robić rzeczy w kolejności oczekuje. 1049 00:48:27,360 --> 00:48:30,860 >> Tak więc przypuszczać, co dzieje się z powodu niezależnie od prędkości sieci tam problemy 1050 00:48:30,860 --> 00:48:34,530 to, czy są problemy z procesorem, lub coś nie tak, przypuszczam, że 1051 00:48:34,530 --> 00:48:38,530 Pierwszy bankomat sprawdza równowagę i widzi, och, ta osoba ma 100 dolarów. 1052 00:48:38,530 --> 00:48:41,840 Ale wtedy zostanie rozproszony, ponieważ może backup się dzieje i dlatego 1053 00:48:41,840 --> 00:48:42,500 spowolnienie. 1054 00:48:42,500 --> 00:48:45,080 A może podczas sprawdzania, sieci gra się trochę wolniej, bo 1055 00:48:45,080 --> 00:48:45,910 to się po prostu dzieje. 1056 00:48:45,910 --> 00:48:47,100 Są urządzenia fizyczne. 1057 00:48:47,100 --> 00:48:49,330 Tak więc w międzyczasie, drugi ATM zadaje to samo pytanie. 1058 00:48:49,330 --> 00:48:53,030 Ile pieniędzy David ma? 100 dolarów jest odpowiedź. 1059 00:48:53,030 --> 00:48:58,930 Ale dlatego, że pierwszy jeszcze nie bankomat wysłana wiadomość odejmij $ 100, zarówno 1060 00:48:58,930 --> 00:49:03,000 Bankomaty są kontrolowane skarbca banku, widząc tam 100 dolarów tam, i teraz 1061 00:49:03,000 --> 00:49:07,160 obie maszyny są potencjalnie będzie wypluwać odpowiedź. 1062 00:49:07,160 --> 00:49:12,240 >> Teraz, to jest dobre dla ciebie w pewnym sensie czy to, co bank robi ostatecznie 1063 00:49:12,240 --> 00:49:17,200 jest zmienić ilość do minus 100 przez ustawienie zmiennej równa Twój 1064 00:49:17,200 --> 00:49:21,570 rachunek bankowy równa 0, w przeciwieństwie do robienia minus 100. 1065 00:49:21,570 --> 00:49:24,410 Teraz w najgorszym przypadku dla banku - 1066 00:49:24,410 --> 00:49:27,470 lub w najlepszym dla banku, w międzyczasie, dają ci 200 dolarów, a 1067 00:49:27,470 --> 00:49:31,690 konta bankowego pokazuje teraz ujemna 100 dolarów, które tak naprawdę nie 1068 00:49:31,690 --> 00:49:32,950 korzystać ci w ogóle. 1069 00:49:32,950 --> 00:49:36,500 Ale chodzi o to, że ten wyścig Stan dwóch współlokatorów coraz 1070 00:49:36,500 --> 00:49:40,660 mleko, lub dla dwóch bankomatów próbujących zdobyć gotówkę i zmienić stan skarbca 1071 00:49:40,660 --> 00:49:44,510 w tym samym czasie istnieje jakiekolwiek czas masz bazę danych. 1072 00:49:44,510 --> 00:49:48,290 >> Teraz w błąd ustawić siedem, ten problem pojawia się w tym sensie, że jeśli kupisz 1073 00:49:48,290 --> 00:49:52,110 Udział Facebooka magazynie, a następnie na Instancja kupić drugą część 1074 00:49:52,110 --> 00:49:55,160 Facebook photography, musisz dokonać decyzja programisty. 1075 00:49:55,160 --> 00:49:58,710 W celu podjęcia decyzji, jak zaktualizować bazy danych, kursy będziesz 1076 00:49:58,710 --> 00:50:02,250 mają jeden wiersz dla tego stada, a to jest jeden sposób, aby go wdrożyć. 1077 00:50:02,250 --> 00:50:06,640 I masz zamiar mieć jeden udział FB, która jest symbolem ich giełdowy 1078 00:50:06,640 --> 00:50:10,120 dla tej nazwy użytkownika lub użytkownika ID, unikalny identyfikator. 1079 00:50:10,120 --> 00:50:12,340 >> Ale sama historia może się zdarzyć tutaj. 1080 00:50:12,340 --> 00:50:15,800 Jeśli do SELECT w SQL, jak zobaczysz w błąd ustawić siedem, gdy widzisz, 1081 00:50:15,800 --> 00:50:18,460 Och, David ma jedna akcja z Facebooka magazynie. 1082 00:50:18,460 --> 00:50:23,240 Chciałbym teraz zmienić na dwa akcji, w bo chce kupić 1083 00:50:23,240 --> 00:50:24,120 Drugi akcji. 1084 00:50:24,120 --> 00:50:27,860 Ale załóżmy, że rzeczywiście miał dwa David otwarte okna przeglądarki, a przypuszczam, że 1085 00:50:27,860 --> 00:50:32,150 to wspólne konto z małżonków, i jak z nich starają się wykonać 1086 00:50:32,150 --> 00:50:36,770 sama operacja, tam też potencjał istnieje dla decyzji, które mają być 1087 00:50:36,770 --> 00:50:39,670 wykonane w oparciu o poprzednie stan świata - 1088 00:50:39,670 --> 00:50:41,290 konto ma jedną akcję - 1089 00:50:41,290 --> 00:50:45,630 i obie osoby, lub oba serwery, teraz spróbuj powiedzieć zwiększyć go do dwóch akcji. 1090 00:50:45,630 --> 00:50:49,020 Ale w tym przypadku, może być pobierana mi pieniądze zarówno dla akcji, ale 1091 00:50:49,020 --> 00:50:50,830 zwiększany tylko ten jeden raz. 1092 00:50:50,830 --> 00:50:54,730 >> Tak w skrócie, podstawowy problem tutaj, jak z dowcipu o opuszczeniu 1093 00:50:54,730 --> 00:50:58,750 pamiętać, wprowadzanie kłódkę na nim, jest jeśli dwie osoby lub dwa wątki - 1094 00:50:58,750 --> 00:50:59,930 że powrót do podstaw - 1095 00:50:59,930 --> 00:51:03,220 Można sprawdzić stan jakiejś zmiennej , a następnie spróbować zmienić tę zmienną, 1096 00:51:03,220 --> 00:51:07,950 ale te dwie rzeczy nie zdarzają się w w tym samym czasie, ale może się przerwać 1097 00:51:07,950 --> 00:51:11,500 przez innych, co dzieje się, dane mogą dostać się do stanu bardzo dziwne. 1098 00:51:11,500 --> 00:51:15,450 I można korzystać lub możesz cierpieć w sensie przykładu pieniędzy. 1099 00:51:15,450 --> 00:51:18,110 >> Więc w błąd ustawić siedem, dajemy ta jedna linia kodu, który długo 1100 00:51:18,110 --> 00:51:21,000 opowiadanie, rozwiązuje ten Problem w MySQL. 1101 00:51:21,000 --> 00:51:24,950 To bardzo długa instrukcja, która nie nawet zmieścić się na jednej linii na 1102 00:51:24,950 --> 00:51:30,370 Ekran zapewnia, że ​​tu praca jest to, co się nazywa atomowej. 1103 00:51:30,370 --> 00:51:33,720 To wszystko dzieje się na raz, lub to nie zdarza się w ogóle. 1104 00:51:33,720 --> 00:51:37,530 To bardzo długa fraza nie może się przerwał częściowo. 1105 00:51:37,530 --> 00:51:39,840 >> I co robi to dosłownie to co mówi. 1106 00:51:39,840 --> 00:51:44,200 Wstawić do jakiejś tabeli następujące trzy pola te szczególne wartości, 1107 00:51:44,200 --> 00:51:47,280 ale na duplikatu klucza, nie rób wkładkę. 1108 00:51:47,280 --> 00:51:48,280 Wykonać aktualizację. 1109 00:51:48,280 --> 00:51:52,450 Tak to jest jak robi SELECT i INSERT niejako w tym samym czasie. 1110 00:51:52,450 --> 00:51:55,150 I to, co jest kluczem, który prawdopodobnie są określone tutaj? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> Okazuje się, i zobaczysz to w Problem ustawić siedem w specyfikacji, ponieważ 1113 00:52:01,380 --> 00:52:06,040 mamy zadeklarowane tam być unikalny klucz na tym właśnie stole tak, że 1114 00:52:06,040 --> 00:52:08,480 nie można mieć wiele wierszy dla tego samego użytkownika z 1115 00:52:08,480 --> 00:52:10,150 sam symbol stock penny - 1116 00:52:10,150 --> 00:52:13,780 w tym przykładzie tutaj, DVN.V jest głupie, że czas grosza 1117 00:52:13,780 --> 00:52:14,980 znajdują się w specyfikacji. 1118 00:52:14,980 --> 00:52:17,860 Ponieważ mamy oświadczył, że jest wyjątkowy, oznacza to, że jeśli 1119 00:52:17,860 --> 00:52:23,580 próby wstawienia duplikat wiersz, jesteś zamiast iść do aktualizacji bez 1120 00:52:23,580 --> 00:52:27,020 ktoś jeszcze ma szansę na zmianę stan świata albo. 1121 00:52:27,020 --> 00:52:29,400 Tak więc, w skrócie, co zapewnia rzeczy są atomowej. 1122 00:52:29,400 --> 00:52:32,530 >> Bardziej ogólnie chociaż, bazy danych jak MySQL - 1123 00:52:32,530 --> 00:52:35,460 i nie trzeba tę funkcję p-set siedem, ale zachować je w pamięci na 1124 00:52:35,460 --> 00:52:36,200 przyszłość - 1125 00:52:36,200 --> 00:52:38,870 obsługuje tak zwane transakcje, , gdzie można powiedzieć, 1126 00:52:38,870 --> 00:52:40,990 Rozpoczęcie transakcji dosłownie. 1127 00:52:40,990 --> 00:52:43,270 Następnie można wykonać dwa SQL. 1128 00:52:43,270 --> 00:52:45,710 A SQL, jak zobaczysz w p-zestaw siedmiu, wygląda trochę 1129 00:52:45,710 --> 00:52:46,750 coś takiego. 1130 00:52:46,750 --> 00:52:48,820 Aktualizacja tabeli o nazwie konta. 1131 00:52:48,820 --> 00:52:52,550 Ustaw kolumnę równowagi równą co Obecnie kolumna Saldo 1132 00:52:52,550 --> 00:52:57,280 jest minus 1000, gdy liczba, tym Numer konta, jak identyfikator użytkownika, 1133 00:52:57,280 --> 00:53:00,830 wynosi 2, a następnie zaktualizować konto dot dot dot. 1134 00:53:00,830 --> 00:53:04,350 >> Więc w laika, co te dwa pytania wydają się robić w 1135 00:53:04,350 --> 00:53:05,840 prawdziwy sens świata bankowości? 1136 00:53:05,840 --> 00:53:07,440 >> PUBLICZNOŚCI: Transfer do oszczędności. 1137 00:53:07,440 --> 00:53:08,020 >> DAVID MALAN: Dokładnie. 1138 00:53:08,020 --> 00:53:10,470 Przeniesienie środków z jednego konto do innego. 1139 00:53:10,470 --> 00:53:14,400 I to jest kolejny przykład, w którym naprawdę chcesz te dwie rzeczy się zdarzyć 1140 00:53:14,400 --> 00:53:15,570 czy nie stało. 1141 00:53:15,570 --> 00:53:18,880 Nie chcesz coś dostać w środkowy z nich i potencjalnie zepsuć 1142 00:53:18,880 --> 00:53:22,220 matematyka lub bałagan, ile masz pieniędzy, ani ile 1143 00:53:22,220 --> 00:53:23,170 pieniędzy bank ma. 1144 00:53:23,170 --> 00:53:26,890 Więc co jest naprawdę ładny o transakcjach w MySQL jest to, że i 1145 00:53:26,890 --> 00:53:30,160 Bazy ogólnie, jest to, że i inteligentnych ludzi, którzy już wdrożone 1146 00:53:30,160 --> 00:53:33,670 cechy te dowiedzieć się jak zrobić upewnić się, że obie te rzeczy się 1147 00:53:33,670 --> 00:53:35,120 lub wcale. 1148 00:53:35,120 --> 00:53:38,580 >> A jeśli jesteś naprawdę aspiruje do Strona, która jest używana przez ludzi na 1149 00:53:38,580 --> 00:53:41,490 campus, ludzie w rzeczywistym świecie, robi coś na starcie sensie 1150 00:53:41,490 --> 00:53:43,300 Wśród nich jest rodzaj decyzje projektowe, które 1151 00:53:43,300 --> 00:53:45,020 się jeszcze tak ważna. 1152 00:53:45,020 --> 00:53:48,240 W przeciwnym razie, zaczniesz tracić dane, tracą użytkowników, lub w najgorszym przypadku, jak 1153 00:53:48,240 --> 00:53:51,800 widzieliśmy tutaj, potencjalnie stracić pieniądze. 1154 00:53:51,800 --> 00:53:56,180 Więc znowu, więcej o tym w problemu ustawić siedem, a także być może w niektórych 1155 00:53:56,180 --> 00:53:57,530 Ci w ostatnich projektów. 1156 00:53:57,530 --> 00:54:01,870 >> Warto więc zmienić ten obraz mieliśmy chwilę temu tylko w jeden sposób. 1157 00:54:01,870 --> 00:54:04,070 Więc pozwól mi faktycznie zobaczyć, czy mogę - 1158 00:54:04,070 --> 00:54:06,030 Nie, że nie ma. 1159 00:54:06,030 --> 00:54:06,690 Jest. 1160 00:54:06,690 --> 00:54:09,020 >> Tak to jest, gdy wyszliśmy ostatni. 1161 00:54:09,020 --> 00:54:12,390 I okazuje się, mamy zamiar wrzucić jeszcze jedno w mix tutaj - 1162 00:54:12,390 --> 00:54:14,510 Język nazywa JavaScript. 1163 00:54:14,510 --> 00:54:18,060 Więc JavaScript rzeczywiście pasuje w tym kawałku - 1164 00:54:18,060 --> 00:54:22,086 a ja nie bardzo pozostawić wystarczającą ilość miejsca, więc to nie jest teraz w skali. 1165 00:54:22,086 --> 00:54:23,900 OK, to jest naprawdę żałosne. 1166 00:54:23,900 --> 00:54:27,075 OK, więc to jest JavaScript. 1167 00:54:27,075 --> 00:54:27,340 Dobrze. 1168 00:54:27,340 --> 00:54:28,760 Jestem naprawdę robi to krzywdę. 1169 00:54:28,760 --> 00:54:29,390 Dobrze. 1170 00:54:29,390 --> 00:54:34,790 >> Więc JavaScript jest inny programowania język, a ostatni, jeśli pomaga 1171 00:54:34,790 --> 00:54:37,770 zapewnić, że nie ma wiele więcej z hydrantów przeciwpożarowych tutaj. 1172 00:54:37,770 --> 00:54:41,100 Więc JavaScript jest interpretowany język, co oznacza, że ​​nie 1173 00:54:41,100 --> 00:54:42,670 skompilować go do zer i jedynek. 1174 00:54:42,670 --> 00:54:43,690 Wystarczy go uruchomić. 1175 00:54:43,690 --> 00:54:47,680 Ale co zasadniczo różni się JavaScript zwykle jest to, że 1176 00:54:47,680 --> 00:54:49,815 nie uruchomić go na serwerze WWW. 1177 00:54:49,815 --> 00:54:52,570 Nie ma się uruchomić w Urządzenie takie. 1178 00:54:52,570 --> 00:54:57,490 Raczej robi pobrany przez użytkownika poprzez HTTP do przeglądarki - 1179 00:54:57,490 --> 00:55:00,260 Chrome, Safari, Internet Explorer, Firefox, co - 1180 00:55:00,260 --> 00:55:03,860 i to jest przeglądarka, która wykonuje to szczególności język programowania. 1181 00:55:03,860 --> 00:55:08,000 >> Tak więc stało się jasne, PHP dotąd nie było wykonywane zarówno w linii poleceń w 1182 00:55:08,000 --> 00:55:11,290 nasze czarno-białe okna, na serwerze jak urządzenia, komputer 1183 00:55:11,290 --> 00:55:14,490 jak urządzenia, albo to było wykonywane przez serwer WWW 1184 00:55:14,490 --> 00:55:15,860 uruchomiony na komputerze. 1185 00:55:15,860 --> 00:55:20,490 Ale tematem jest to, że do tej pory PHP została wykonana po stronie serwera, tak 1186 00:55:20,490 --> 00:55:24,820 użytkownika i przeglądarka użytkownika nigdy linii kodu PHP widzi. 1187 00:55:24,820 --> 00:55:28,530 >> W rzeczywistości, jeśli kiedykolwiek otworzyć przeglądarkę Twoja strona lub inny i ty 1188 00:55:28,530 --> 00:55:32,400 rzeczywiście zobaczyć kod PHP w oknie, ktoś spieprzył. 1189 00:55:32,400 --> 00:55:34,950 Bo to nie miał być wysłana do przeglądarki bezpośrednio. 1190 00:55:34,950 --> 00:55:38,150 To ma być wykonany i zwrócił w coś HTML. 1191 00:55:38,150 --> 00:55:40,120 >> Ale JavaScript jest zasadniczo przeciwnie. 1192 00:55:40,120 --> 00:55:44,350 To ma być uruchamiane typowo wewnątrz od użytkownika okna przeglądarki. 1193 00:55:44,350 --> 00:55:46,840 A jakie rodzaje witryn używać JavaScript to te dni? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> Podobnie jak dosłownie każdą popularną stronę internetową. 1196 00:55:52,180 --> 00:55:55,430 Każda strona, że ​​chłopaki prawdopodobnie używać codziennie używać JavaScript dla 1197 00:55:55,430 --> 00:55:57,330 Najprostszym, a nawet najseksowniejszych funkcje. 1198 00:55:57,330 --> 00:55:59,800 >> Więc coś w Facebook Czat jeśli użyć. 1199 00:55:59,800 --> 00:56:01,040 Jak to właściwie działa? 1200 00:56:01,040 --> 00:56:05,090 Cóż do tej pory, wszystkie rzeczy mamy wykonane z HTML i PHP zakłada, że 1201 00:56:05,090 --> 00:56:08,750 można wyciągnąć adres URL, i naciśnij klawisz Enter, i widzisz jakieś treści HTML. 1202 00:56:08,750 --> 00:56:11,970 I kliknij na link, który zmienia URL, zmienia stronę i ładuje 1203 00:56:11,970 --> 00:56:12,740 niektóre nowe treści. 1204 00:56:12,740 --> 00:56:16,340 Kliknij inny adres URL lub złożyć formularz, się wymknąć do innej strony i 1205 00:56:16,340 --> 00:56:17,420 widzisz jakieś nowe treści. 1206 00:56:17,420 --> 00:56:22,710 >> Ale za pomocą coś jak Facebook Chat, lub Gchat lub Google Maps, rzadko 1207 00:56:22,710 --> 00:56:27,350 nie cała strona odświeżyć takie, że widzisz biały ekran na chwilę i 1208 00:56:27,350 --> 00:56:28,470 to nowa treść. 1209 00:56:28,470 --> 00:56:32,610 Raczej, strony internetowe są dziś dynamicznie zaczyna aktualizacja ponownie i 1210 00:56:32,610 --> 00:56:35,570 znowu i znowu wszystko sort z za kulisami. 1211 00:56:35,570 --> 00:56:38,560 I okazuje się, że gdy pójdziesz do coś jak Facebook lub Gchat, 1212 00:56:38,560 --> 00:56:43,050 lub Gmail, oraz aktualizacje strony automatycznie bez przeładowywania 1213 00:56:43,050 --> 00:56:47,630 cały ekran, co się stało jest to, że Twoja przeglądarka uczynił rodzaj tajemnicy 1214 00:56:47,630 --> 00:56:49,410 - dodatkowe żądania HTTP 1215 00:56:49,410 --> 00:56:52,740 nie dla całych stron internetowych, ale tylko dla małe porcje danych, takie jak 1216 00:56:52,740 --> 00:56:55,740 wiadomości błyskawicznej, że twój przyjaciel tylko cię przysłał, lub aktualizację statusu, 1217 00:56:55,740 --> 00:56:58,210 ktoś po prostu cię przysłał, lub ćwierkanie , że ktoś po prostu wysłana. 1218 00:56:58,210 --> 00:57:02,120 To właśnie czyni mało wniosków o danych, a następnie przy użyciu JavaScript, twoja 1219 00:57:02,120 --> 00:57:06,370 język programowania, aby zmienić to, co strona wygląda bez 1220 00:57:06,370 --> 00:57:09,860 Serwer pomoc, bez serwera generowania tego kodu HTML. 1221 00:57:09,860 --> 00:57:13,820 >> Tak w skrócie, JavaScript może być stosowany wtedy nie tylko pobrać nowe dane z 1222 00:57:13,820 --> 00:57:16,750 serwer bez przeładowywania całej strona lub przesłanie formularza. 1223 00:57:16,750 --> 00:57:20,060 Może być również użyty do zmiany tzw DOM - 1224 00:57:20,060 --> 00:57:21,520 Document Object Model - 1225 00:57:21,520 --> 00:57:24,620 który jest tylko fantazyjny sposób na mówiąc drzewo HTML 1226 00:57:24,620 --> 00:57:26,220 , które widzieliśmy ostatnio. 1227 00:57:26,220 --> 00:57:31,640 >> Tak więc, aby zapewnić, JavaScript jest składniowo tak podobny do C, jak również. 1228 00:57:31,640 --> 00:57:32,820 Nie ma główną funkcją. 1229 00:57:32,820 --> 00:57:35,430 Po prostu zacząć pisać kod i zostanie on wykonany, lub 1230 00:57:35,430 --> 00:57:36,900 interpretowane bardziej prawidłowo. 1231 00:57:36,900 --> 00:57:38,660 Warunki będą wyglądać tak. 1232 00:57:38,660 --> 00:57:41,230 Nie różni się od C lub PHP dla tej sprawy. 1233 00:57:41,230 --> 00:57:43,890 Wyrażenia logiczne lub-ed razem będzie wyglądać tak. 1234 00:57:43,890 --> 00:57:45,590 AND razem wyglądać. 1235 00:57:45,590 --> 00:57:47,750 >> Przełączniki będzie wyglądać tak. 1236 00:57:47,750 --> 00:57:49,440 Na pętli będzie wyglądać tak. 1237 00:57:49,440 --> 00:57:51,060 Podczas okrążenia będzie wyglądać tak. 1238 00:57:51,060 --> 00:57:53,316 Czy podczas pętli będzie wyglądać tak. 1239 00:57:53,316 --> 00:57:54,780 >> Jest to nowa. 1240 00:57:54,780 --> 00:57:58,753 Więc JavaScript nie foreach skonstruowania per se, ale to skonstruowania 1241 00:57:58,753 --> 00:58:03,870 dla i zmiennej w tablicy, a ja w tym Sprawa staje się wartość indeksu. 1242 00:58:03,870 --> 00:58:06,880 Więc to jest trochę inna od foreach, choć nowe wersje 1243 00:58:06,880 --> 00:58:10,280 JavaScript wychodzą cały czas, więc nawet te język dysponuje 1244 00:58:10,280 --> 00:58:10,880 ewoluują. 1245 00:58:10,880 --> 00:58:16,920 >> A na marginesie, JavaScript tych dni Można również stosować na serwerze, tak jak 1246 00:58:16,920 --> 00:58:19,920 PHP za pomocą ramy nazwie Node.js. 1247 00:58:19,920 --> 00:58:24,670 Jednym z TF CS50 jest, Kevin, doprowadziło Seminarium na Node.js, które są dostępne w 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars. 1249 00:58:26,440 --> 00:58:28,830 Więc jeśli jesteś ciekaw, wiem, że jesteś mogą korzystać z tego po stronie serwera, jak 1250 00:58:28,830 --> 00:58:33,870 dobrze, ale to jest dość niedawno tendencja, ale potężny na tym. 1251 00:58:33,870 --> 00:58:35,270 >> To jest trochę inaczej. 1252 00:58:35,270 --> 00:58:37,910 To jest tablica w języku JavaScript. 1253 00:58:37,910 --> 00:58:40,115 I co uderza cię w inny w porównaniu z C lub PHP? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 Istnieje kilka szybkich historie możemy powiedzieć tutaj. 1256 00:58:47,420 --> 00:58:49,367 Czego brakuje w porównaniu z PHP? 1257 00:58:49,367 --> 00:58:51,652 >> PUBLICZNOŚCI: [niesłyszalne]. 1258 00:58:51,652 --> 00:58:52,110 >> DAVID MALAN: Tak? 1259 00:58:52,110 --> 00:58:53,322 Niestety, powtarzam jeszcze raz? 1260 00:58:53,322 --> 00:58:54,740 >> PUBLICZNOŚCI: Nie deklarując typ zmiennej. 1261 00:58:54,740 --> 00:58:56,390 >> DAVID MALAN: My nie deklarując typ zmiennej. 1262 00:58:56,390 --> 00:58:59,630 Więc całkiem jak PHP, nie jesteśmy określenia rodzajów tej zmiennej. 1263 00:58:59,630 --> 00:59:02,670 Raczej jesteśmy bardziej ogólnie mówiąc var dla zmiennej. 1264 00:59:02,670 --> 00:59:06,690 Nie mamy uciążliwości z PHP znak dolara, który podczas żmudnego 1265 00:59:06,690 --> 00:59:09,160 typ, czyni bardziej jasne, że coś jest zmienna. 1266 00:59:09,160 --> 00:59:11,830 Podczas gdy tutaj, jesteśmy jakby z powrotem do C podejście po prostu dzwoniąc 1267 00:59:11,830 --> 00:59:14,500 zmienna o nazwie chcemy dać to, jak liczby. 1268 00:59:14,500 --> 00:59:17,170 A także, jak PHP, mamy nawiasy kwadratowe dla 1269 00:59:17,170 --> 00:59:19,170 wartości wewnątrz tablicy. 1270 00:59:19,170 --> 00:59:22,490 >> Tak więc zmienne w JavaScript również może wyglądać tak. 1271 00:59:22,490 --> 00:59:26,900 Zauważcie, że jest to ciąg nazywa s, ale podobnie nie możemy określić 1272 00:59:26,900 --> 00:59:28,750 że jest to ciąg. 1273 00:59:28,750 --> 00:59:33,160 Tu jednak jest to funkcja, która nie istnieją w taki sam sposób, w PHP, 1274 00:59:33,160 --> 00:59:34,460 ale trochę podobnie. 1275 00:59:34,460 --> 00:59:36,530 Jest to obiekt w JavaScript. 1276 00:59:36,530 --> 00:59:42,110 I obiekty są rodzajem Armii Szwajcarskiej Nóż struktury danych, w które 1277 00:59:42,110 --> 00:59:43,900 Można ich używać do dowolnej liczby rzeczy. 1278 00:59:43,900 --> 00:59:46,860 >> Tutaj, na przykład, mamy deklarowania zmienną ofertę. 1279 00:59:46,860 --> 00:59:49,110 Typ zmiennej jest obiekt. 1280 00:59:49,110 --> 00:59:53,550 Można myśleć o tym, jak struct C , który ma klucze i wartości. 1281 00:59:53,550 --> 00:59:55,250 Symbol jest kluczem. 1282 00:59:55,250 --> 00:59:57,350 FB jest wartość, widocznie symbol stock. 1283 00:59:57,350 --> 00:59:57,930 Przecinek. 1284 00:59:57,930 --> 01:00:02,180 Cena jest kolejnym kluczowym, a jego wartość jest najwyraźniej zmiennoprzecinkowe, lub 1285 01:00:02,180 --> 01:00:06,510 liczba ogólnie w JavaScript, z 49,26 dolarów. 1286 01:00:06,510 --> 01:00:09,030 >> Więc PHP nie ma - 1287 01:00:09,030 --> 01:00:12,980 nie widzieliśmy w obiektach PHP dość tak, ale widzieliśmy analogowej, 1288 01:00:12,980 --> 01:00:14,093 co było, co? 1289 01:00:14,093 --> 01:00:14,980 >> PUBLICZNOŚCI: [niesłyszalne]. 1290 01:00:14,980 --> 01:00:16,110 >> DAVID MALAN: Tablice asocjacyjne. 1291 01:00:16,110 --> 01:00:19,990 Tak więc podczas gdy PHP ma tablic asocjacyjnych , którego składnia jest zawsze nieco tak 1292 01:00:19,990 --> 01:00:20,370 inny - 1293 01:00:20,370 --> 01:00:21,780 widzieliśmy nawiasów kwadratowych. 1294 01:00:21,780 --> 01:00:23,860 Widzieliśmy dziwne strzałki symbole. 1295 01:00:23,860 --> 01:00:27,330 JavaScript ma obiektów, ale jest to głównie różnica semantyczna i 1296 01:00:27,330 --> 01:00:29,260 inna synonimem teraz. 1297 01:00:29,260 --> 01:00:35,060 Jednak, jak na bok, PHP ma również obiektów w sposób, który Java i inne 1298 01:00:35,060 --> 01:00:37,810 języki mają obiekty w programowanie obiektowe. 1299 01:00:37,810 --> 01:00:40,440 Ale będziemy z nich korzystać tylko dla typów danych do teraz. 1300 01:00:40,440 --> 01:00:42,170 Obiekty i tablice asocjacyjne. 1301 01:00:42,170 --> 01:00:44,140 >> Ta jedna może zrobić to trochę bardziej jasne. 1302 01:00:44,140 --> 01:00:45,890 Oto dlaczego obiekt jest przydatny. 1303 01:00:45,890 --> 01:00:48,760 Jeśli chcesz zadeklarować ucznia, jak Zamyla, możemy rzeczywiście 1304 01:00:48,760 --> 01:00:52,630 symbolizować niejako wewnątrz że Obiekt przy użyciu nawiasów wsporniki jak 1305 01:00:52,630 --> 01:00:55,060 zanim cały pęk kluczy i wartości w tutaj. 1306 01:00:55,060 --> 01:00:59,150 Mamy ID, dom, i nazwę Zamyla, a po nim średnik jako 1307 01:00:59,150 --> 01:01:00,690 Zazwyczaj pod koniec. 1308 01:01:00,690 --> 01:01:04,840 >> Tu też jest nieznacznie inna, ale również bardzo silny 1309 01:01:04,840 --> 01:01:05,690 te dni. 1310 01:01:05,690 --> 01:01:08,780 Oto tablica, i wiem, że z powodu tam jest plac się uchwyt 1311 01:01:08,780 --> 01:01:11,090 top i nawias kwadratowy u dołu. 1312 01:01:11,090 --> 01:01:16,050 I to jest tablica, jakie dane wpisz najwyraźniej w JavaScript? 1313 01:01:16,050 --> 01:01:21,260 To jest tablica wygląda jak trzech obiektów. 1314 01:01:21,260 --> 01:01:24,580 I wiem, że to tylko obiekt ze względu na klamrach. 1315 01:01:24,580 --> 01:01:28,760 I zauważysz otwarta klamra kręcone, niektóre rzeczy, blisko klamra kręcone, przecinek, 1316 01:01:28,760 --> 01:01:31,180 następnie kilka, przecinek, i jeszcze trochę więcej. 1317 01:01:31,180 --> 01:01:33,800 Więc to trzy argumenty oddzielone dwoma przecinkami. 1318 01:01:33,800 --> 01:01:36,810 >> Więc to jest tablica z trzech obiektów. 1319 01:01:36,810 --> 01:01:39,940 I każdy z tych obiektów wydaje się być członek student lub pracownicy niektórych 1320 01:01:39,940 --> 01:01:42,370 sort, każdy z identyfikatorem, dom i nazwa. 1321 01:01:42,370 --> 01:01:45,060 Ale ja nazywa to coś nazywa JSON - 1322 01:01:45,060 --> 01:01:47,450 JavaScript Object Notation. 1323 01:01:47,450 --> 01:01:52,060 I jest to format danych, które w rzeczywistości Jest więc bardzo popularne w 1324 01:01:52,060 --> 01:01:55,100 vogue te dni, że jeśli piszesz Aplikacja korzystająca z Facebooka 1325 01:01:55,100 --> 01:01:59,150 API, Twitter API, naprawdę prawie każdy API tam tych dni, 1326 01:01:59,150 --> 01:02:02,820 w tym niektóre z własnego CS50 jest, Dane wrócisz nie jest w 1327 01:02:02,820 --> 01:02:04,720 old school w formacie CSV. 1328 01:02:04,720 --> 01:02:06,780 >> Ponieważ przypomnieć, że CSV jest bardzo prosta. 1329 01:02:06,780 --> 01:02:10,230 To jest zaledwie kolumny oddzielone przecinkami. 1330 01:02:10,230 --> 01:02:13,190 JSON danych daje więcej metadanych. 1331 01:02:13,190 --> 01:02:17,800 Skupia Klucz z każdej wartości, tak nie trzeba zakładać, że 1332 01:02:17,800 --> 01:02:22,460 Kolumna zerowe jest jedna wartość, kolumna z nich jest inna, kolumna dwa jest inny. 1333 01:02:22,460 --> 01:02:26,790 Wszystko w obiekcie JSON tutaj jest swego z samo-opisujący, ponieważ każdy 1334 01:02:26,790 --> 01:02:30,940 jedno z nazwisk w tym pliku ma dosłownie Nazwa przed nim jako 1335 01:02:30,940 --> 01:02:32,510 cudzysłowiu. 1336 01:02:32,510 --> 01:02:34,950 >> Warto więc przyjrzeć się Kilka przykładów tutaj. 1337 01:02:34,950 --> 01:02:36,800 Pozwól mi wejść do urządzenia. 1338 01:02:36,800 --> 01:02:41,000 I pozwól mi odejść do naszego vhost do katalogu publicznego. 1339 01:02:41,000 --> 01:02:45,590 I pozwól mi iść do Katalog JavaScript. 1340 01:02:45,590 --> 01:02:49,610 I idziemy dalej i otworzyć dom-0.html, gdzie DOM tylko oznacza 1341 01:02:49,610 --> 01:02:51,010 Document Object Model. 1342 01:02:51,010 --> 01:02:53,490 Jest to drzewo, do którego stuff I, o którym mowa wcześniej. 1343 01:02:53,490 --> 01:02:54,950 >> I pozwól mi zaproponować następujące. 1344 01:02:54,950 --> 01:02:57,720 Oto strona internetowa, której Ciało jest dość prosta. 1345 01:02:57,720 --> 01:03:00,170 Więc tu, na dole, zawiadomienia Mam formularz. 1346 01:03:00,170 --> 01:03:01,500 Widzieliśmy te przed. 1347 01:03:01,500 --> 01:03:07,600 Posiada dwa wejścia, z których jeden ma Numer nazwy, z których jeden ma typ 1348 01:03:07,600 --> 01:03:09,830 przedstawienia, a pierwszy czyjaś typ jest tekst. 1349 01:03:09,830 --> 01:03:11,900 Więc to rzeczywiście brzmi dość prosta. 1350 01:03:11,900 --> 01:03:13,090 >> Chodźmy tutaj. 1351 01:03:13,090 --> 01:03:15,390 Wróćmy do tej strony tutaj. 1352 01:03:15,390 --> 01:03:21,030 Chodźmy na localhost, i przejść do nasz katalog JavaScript, i przejść do 1353 01:03:21,030 --> 01:03:24,640 dom-0, a tu mamy ten formularz. 1354 01:03:24,640 --> 01:03:26,550 Więc to jest najwyraźniej wszystko to strona robi. 1355 01:03:26,550 --> 01:03:28,740 Ma pole nazwy z przycisk Prześlij. 1356 01:03:28,740 --> 01:03:30,340 Ale ja nie zamierzam używać PHP tutaj. 1357 01:03:30,340 --> 01:03:34,310 Zamierzam zrobić wszystko po stronie klienta że tak powiem w JavaScript w następujący sposób. 1358 01:03:34,310 --> 01:03:39,100 >> Zauważ, że ja rzeczywiście otrzymał nazwę Pole tego wejścia unikalnej 1359 01:03:39,100 --> 01:03:42,350 identyfikator, który będzie rzeczywiście zapisać mi trochę czasu w jednej chwili. 1360 01:03:42,350 --> 01:03:45,480 I zauważyć, że wprowadziliśmy inny znacznik w głowie mojej stronie internetowej, 1361 01:03:45,480 --> 01:03:46,565  tag. 1362 01:03:46,565 --> 01:03:50,120 >> Więc jest to w tym sensie, że JavaScript jest client-side język programowania. 1363 01:03:50,120 --> 01:03:55,020 W tym przypadku, podobnie jak CSS, wrzuciłem to proste wewnątrz mojego HTML. 1364 01:03:55,020 --> 01:03:58,810 Zauważmy jednak, mam zadeklarowanych funkcji , który wygląda trochę jak PHP 1365 01:03:58,810 --> 01:04:01,530 składniowo, ale w rzeczywistości jest to JavaScript, bo znowu, to jest 1366 01:04:01,530 --> 01:04:03,920 po stronie klienta w przeglądarce. 1367 01:04:03,920 --> 01:04:07,590 I weź wiecie co to będzie zrobić, nawet jeśli niektóre z składni 1368 01:04:07,590 --> 01:04:09,338 tutaj jest nowy. 1369 01:04:09,338 --> 01:04:11,760 >> PUBLICZNOŚCI: Przywitaj się z kimkolwiek. 1370 01:04:11,760 --> 01:04:14,020 >> DAVID MALAN: To się przywitać aby każdy, kto odwiedza tę stronę. 1371 01:04:14,020 --> 01:04:15,120 Więc jak? 1372 01:04:15,120 --> 01:04:18,070 >> Więc uprzedzenia, okazuje się w JavaScript jest funkcja alert (). 1373 01:04:18,070 --> 01:04:22,840 To jest bardzo rodzaj smutnego funkcji, tak naprawdę ma tendencję do drażnić użytkowników. 1374 01:04:22,840 --> 01:04:25,440 To nie jest jeden naprawdę powinieneś użyć zazwyczaj, ale szybkie i brudne 1375 01:04:25,440 --> 01:04:27,710 sposób coś w rodzaju drukowania do graficznego użytkownika 1376 01:04:27,710 --> 01:04:29,180 Interfejs, podobnie jak przeglądarki. 1377 01:04:29,180 --> 01:04:31,400 Zauważcie, że mam Łańcuch w pojedynczych cudzysłowach. 1378 01:04:31,400 --> 01:04:36,010 Okazuje się, że w przeciwieństwie do C, JavaScript może faktycznie nie używasz single 1379 01:04:36,010 --> 01:04:38,730 cytaty, i szczerze mówiąc to tylko rodzaj w konwencji stylistycznej między 1380 01:04:38,730 --> 01:04:41,180 Programiści JavaScript używać apostrofów. 1381 01:04:41,180 --> 01:04:43,750 PHP, rzeczywiście mają lekko inne znaczenie. 1382 01:04:43,750 --> 01:04:45,810 Ale teraz, po prostu wiem, że to jest jedyny powód. 1383 01:04:45,810 --> 01:04:49,270 Konwencja w JavaScript jest często używać apostrofów, ale możemy użyć 1384 01:04:49,270 --> 01:04:50,950 cudzysłów w obu miejscach. 1385 01:04:50,950 --> 01:04:52,610 >> Więc to jest interesujące. 1386 01:04:52,610 --> 01:04:56,430 Przypomnijmy, ostatni raz, że mieliśmy, że obraz na ekranie, dzięki którym drzewo 1387 01:04:56,430 --> 01:04:59,720 gdzie miał węzeł HTML oraz węzeł głowy i węzeł ciała, 1388 01:04:59,720 --> 01:05:00,800 a potem jakiś tekst. 1389 01:05:00,800 --> 01:05:04,700 Ale był jeden węzeł w specjalnej górze, że zadzwoniłem do dokumentu. 1390 01:05:04,700 --> 01:05:08,260 Cóż, okazuje się, w JavaScript, każdy Czas napisać program w JavaScript 1391 01:05:08,260 --> 01:05:11,040 w przeglądarce, użytkownik ma dostęp do specjalny zmienna globalna. 1392 01:05:11,040 --> 01:05:14,130 W duchu podobnym do superglobals PHP, ten nazywa się 1393 01:05:14,130 --> 01:05:16,050 wszystkie małe dokument. 1394 01:05:16,050 --> 01:05:21,480 >> To jak struktury, ale to struct posiada również funkcje wewnątrz niego. 1395 01:05:21,480 --> 01:05:23,790 Więc struct C ma tylko dane zazwyczaj. 1396 01:05:23,790 --> 01:05:29,060 Ale jak ten obiekt JavaScript technicznie jest również wyposażony w funkcje, 1397 01:05:29,060 --> 01:05:31,830 zwie metod, w jej wnętrzu. 1398 01:05:31,830 --> 01:05:35,750 I można wywołać funkcję wewnątrz ten obiekt dosłownie robi swoje 1399 01:05:35,750 --> 01:05:39,610 nazwa, kropka, a następnie nazwę funkcja lub kolejny sposób. 1400 01:05:39,610 --> 01:05:41,160 To jest po prostu synonimem, naprawdę. 1401 01:05:41,160 --> 01:05:42,450 >> I co ta funkcja zrobić? 1402 01:05:42,450 --> 01:05:43,840 Można trochę domyślić z nazwy. 1403 01:05:43,840 --> 01:05:45,590 Pobierz elementu przez ID. 1404 01:05:45,590 --> 01:05:50,040 Więc to będzie sprawdzić na stronie internetowej, sprawdzić to drzewo, szuka 1405 01:05:50,040 --> 01:05:55,210 bez względu na węzeł, AKA elementem, ma unikatowy identyfikator z nazwą Koniec cytatu. 1406 01:05:55,210 --> 01:05:56,560 I co ja mam teraz zrobić? 1407 01:05:56,560 --> 01:06:00,350 Zamierzam uzyskać wartość wewnątrz że węzeł w drzewie, i mam zamiar 1408 01:06:00,350 --> 01:06:02,580 jakoś przywitać się tą nazwą. 1409 01:06:02,580 --> 01:06:05,360 >> Więc zgadywać, chociaż nie mam widziałem tego jeszcze, co zrobić oraz 1410 01:06:05,360 --> 01:06:07,396 symbole oznaczają tutaj i tutaj chyba? 1411 01:06:07,396 --> 01:06:08,230 >> PUBLICZNOŚCI: Łączy. 1412 01:06:08,230 --> 01:06:09,220 >> DAVID MALAN: Łączy. 1413 01:06:09,220 --> 01:06:11,290 Prawo, i to tylko rodzaj projektowania decyzje 1414 01:06:11,290 --> 01:06:12,280 ludzie się lata temu. 1415 01:06:12,280 --> 01:06:15,190 W PHP można łączyć rzeczy z kropkami. 1416 01:06:15,190 --> 01:06:18,800 W C, skakać przez kilka obręcze i funkcje, takie jak strCopyDatabaseOK () lub zadzwoń 1417 01:06:18,800 --> 01:06:20,600 strcat () lub inne takie funkcje. 1418 01:06:20,600 --> 01:06:22,060 Ale w JavaScript, używasz plusy. 1419 01:06:22,060 --> 01:06:24,770 Więc to jest po prostu łącząc trzy ciągi - 1420 01:06:24,770 --> 01:06:27,850 witam, nazwisko, a następnie wykrzyknik. 1421 01:06:27,850 --> 01:06:30,390 >> Tak więc, kiedy i dlaczego jest to funkcja nazywa chociaż? 1422 01:06:30,390 --> 01:06:33,150 No, zgadnij z HTML na dole. 1423 01:06:33,150 --> 01:06:35,810 Dlaczego pozdrawiam () nazywa się, lub kiedy? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> Podobno, jak najlepiej mogę powiedzieć, na złożyć, gdy formularz jest złożony, 1426 01:06:44,030 --> 01:06:47,200 Zamierzam zrobić wszystko, co jest wewnątrz tych cytatów. 1427 01:06:47,200 --> 01:06:50,900 A konkretnie, zamierzam zadzwonić pozdrawiam (), a następnie zwraca wartość false. 1428 01:06:50,900 --> 01:06:53,090 >> Cóż, zobaczymy, co netto Efekt tego jest pierwszy. 1429 01:06:53,090 --> 01:06:58,290 Więc pozwól mi iść do przodu, a następnie wpisz w, powiedzmy, Loren, Zatwierdź. 1430 01:06:58,290 --> 01:06:59,440 Witaj Loren. 1431 01:06:59,440 --> 01:07:02,990 Zobaczmy, czy może to była tylko szczęście wdrożenie. 1432 01:07:02,990 --> 01:07:03,200 Nie. 1433 01:07:03,200 --> 01:07:05,990 Więc to, co wpisywać się nazwa faktycznie umieścić tam. 1434 01:07:05,990 --> 01:07:07,970 >> Jednak zauważyć, co nie zmienia. 1435 01:07:07,970 --> 01:07:10,360 Adres URL jest jeszcze dom-0.html. 1436 01:07:10,360 --> 01:07:11,820 Nie ma register.php. 1437 01:07:11,820 --> 01:07:13,110 Nie ma drugiego pliku. 1438 01:07:13,110 --> 01:07:14,930 Nie ma atrybut działania. 1439 01:07:14,930 --> 01:07:19,720 Więc co to jest return false przypuszczalnie robi? 1440 01:07:19,720 --> 01:07:23,660 Dlaczego dzwoni pozdrawiam (), a następnie powrót fałszywe prawdopodobnie? 1441 01:07:23,660 --> 01:07:26,420 Co zwykle dzieje się po kliknięciu Złożyć na formularzu, że nawet mamy 1442 01:07:26,420 --> 01:07:27,854 widziałem w zeszłym tygodniu? 1443 01:07:27,854 --> 01:07:29,900 >> PUBLICZNOŚCI: [niesłyszalne]. 1444 01:07:29,900 --> 01:07:30,860 >> DAVID MALAN: To idzie gdzieś, prawda? 1445 01:07:30,860 --> 01:07:32,720 To idzie do pewnego docelowego adresu URL. 1446 01:07:32,720 --> 01:07:34,120 Ale nie chcę, żeby to się stało tutaj. 1447 01:07:34,120 --> 01:07:37,620 Chcę, aby moja strona internetowa jest całkowicie dynamiczny jak Gmail, gdzie, kiedy jesteś 1448 01:07:37,620 --> 01:07:38,650 tam, tam. 1449 01:07:38,650 --> 01:07:42,900 Adres URL nie zmienia się w sposób, który wskazuje, cała strona jest przeładunek. 1450 01:07:42,900 --> 01:07:46,680 Raczej, po prostu chcę coś zmienić coś jak drukowanie 1451 01:07:46,680 --> 01:07:48,320 tutaj na ekranie. 1452 01:07:48,320 --> 01:07:49,630 >> No to niech mi sprzątać się trochę. 1453 01:07:49,630 --> 01:07:55,370 Pozwól mi otworzyć się nie dom-0, ale pozwól mi otworzyć Dom-2. 1454 01:07:55,370 --> 01:07:57,350 Po prostu tak, że widziałem jakieś składni tutaj. 1455 01:07:57,350 --> 01:08:02,080 >> Okazuje się, że to, co my właśnie nie korzysta z surowego JavaScript. 1456 01:08:02,080 --> 01:08:04,420 Więc jest to naprawdę język JavaScript. 1457 01:08:04,420 --> 01:08:07,340 Niektórzy z was mogą znać z Biblioteka nazywa jQuery. 1458 01:08:07,340 --> 01:08:09,980 >> Tak więc jQuery jest sam coś jak JavaScript. 1459 01:08:09,980 --> 01:08:14,110 To jest po prostu biblioteka naprawdę mądry facet napisał i spopularyzował takie 1460 01:08:14,110 --> 01:08:18,100 że prawie każdy na świecie teraz wykorzystuje jQuery, gdy za pomocą JavaScript. 1461 01:08:18,100 --> 01:08:20,890 I na pierwszy rzut oka, szczerze mówiąc, to wygląda trochę bardziej tajemnicze. 1462 01:08:20,890 --> 01:08:24,990 Ale przekonasz się, szczególnie jeśli go nie dla końcowego projektu z sieci 1463 01:08:24,990 --> 01:08:29,029 rozwój, przekonasz się, że to czyści rzeczy i zaoszczędzić dość 1464 01:08:29,029 --> 01:08:30,229 kilka linii kodu. 1465 01:08:30,229 --> 01:08:33,189 >> Więc jak tylko okiem na ta forma działa. 1466 01:08:33,189 --> 01:08:35,664 Zauważ, co ja usunąć pozornie z mojego HTML? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 Nie ma on złożyć obsługi że tak powiem. 1469 01:08:40,630 --> 01:08:41,470 Nie ma atrybut. 1470 01:08:41,470 --> 01:08:43,359 Bo wiesz, co I tak naprawdę nie podoba? 1471 01:08:43,359 --> 01:08:45,640 Czułem się jak my spadały do starych nawyków nie. 1472 01:08:45,640 --> 01:08:49,340 Podobnie jak to było zaczynam czuć niechlujstwa do przenikają zarówno CSS z 1473 01:08:49,340 --> 01:08:52,149 HTML, ponieważ jesteś trochę rzucanie różnych językach na całym 1474 01:08:52,149 --> 01:08:56,180 miejsce, podobnie to się zaczęło odczuwać jak zły drogi zejść gdzie 1475 01:08:56,180 --> 01:09:01,069 Kładę kodu JavaScript wewnątrz mojego HTML niż faktoring to. 1476 01:09:01,069 --> 01:09:02,279 >> Więc to jest lekcja. 1477 01:09:02,279 --> 01:09:05,080 W DOM-2.html, jestem faktoring to. 1478 01:09:05,080 --> 01:09:07,399 I robię rzeczy lekko inaczej. 1479 01:09:07,399 --> 01:09:09,630 Na razie mam zamiar pomachać ręce na to, co to naprawdę 1480 01:09:09,630 --> 01:09:10,590 pod wyciągiem. 1481 01:09:10,590 --> 01:09:14,210 Ale tylko na razie zakładamy, że pierwsza linii kodu w tej bibliotece 1482 01:09:14,210 --> 01:09:18,170 nazywa jQuery po prostu oznacza, gdy Dokument jest gotowy, wykonaj następujące czynności. 1483 01:09:18,170 --> 01:09:20,080 >> Ponieważ stron internetowych mogą trochę czasu do załadowania. 1484 01:09:20,080 --> 01:09:23,029 Możesz być na wolnym internecie zasilania, a to może być przędzenia 1485 01:09:23,029 --> 01:09:25,290 i spinning, a na końcu jest załadowana. 1486 01:09:25,290 --> 01:09:29,060 Że linia kodu po prostu mówi, poczekaj, aż cała strona jest gotowa, dokument 1487 01:09:29,060 --> 01:09:31,189 jest gotowy, przed wykonaniem tego kodu. 1488 01:09:31,189 --> 01:09:34,390 >> A teraz zauważyć, że jest to prawdopodobnie Najbardziej użyteczne pierwszy 1489 01:09:34,390 --> 01:09:36,189 zabrać z jQuery. 1490 01:09:36,189 --> 01:09:42,140 Linia ta tutaj jest bardzo podobny w duchu do tego znacznie dłuższy linii tutaj. 1491 01:09:42,140 --> 01:09:46,920 Natomiast w surowego kodu JavaScript, tam istnieje globalny obiekt dokumentu, który 1492 01:09:46,920 --> 01:09:50,460 ma funkcję o nazwie getElementById (), ludzie, którzy pisali 1493 01:09:50,460 --> 01:09:55,720 jQuery uproszczone, aby po prostu powiedzieć, że znak dolara, a następnie wewnątrz 1494 01:09:55,720 --> 01:10:00,250 nawiasy umieścić dwa cytaty, a następnie umieścić symbol hash następnie 1495 01:10:00,250 --> 01:10:02,250 unikatowy identyfikator, chcesz złapać. 1496 01:10:02,250 --> 01:10:06,170 Tak więc jest równoważna document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> Tymczasem. Złożyć tylko oznacza na Złożenie jakiejkolwiek formie jesteś 1498 01:10:11,090 --> 01:10:14,240 powołując się na lewej stronie, przejdź dalej i wykonać to. 1499 01:10:14,240 --> 01:10:16,600 Ale teraz jest to ciekawość też. 1500 01:10:16,600 --> 01:10:19,560 Co dziwne, o tym, co Mam podkreślił tutaj? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 Nie tylko jest to rodzaj składniowo nowy, nie ma też czegoś brakuje. 1503 01:10:28,594 --> 01:10:29,558 >> PUBLICZNOŚCI: To właśnie nazywa się funkcja? 1504 01:10:29,558 --> 01:10:31,970 To nie nazywa się powiadomienie? 1505 01:10:31,970 --> 01:10:32,440 >> DAVID MALAN: Tak. 1506 01:10:32,440 --> 01:10:35,450 Cóż, tak alert () jest w dół tutaj, aby być uczciwym. 1507 01:10:35,450 --> 01:10:39,520 Ale nie ma wzmianki o Nazwa, jak wiesz, bla lub 1508 01:10:39,520 --> 01:10:40,980 coś się tutaj. 1509 01:10:40,980 --> 01:10:43,830 I rzeczywiście, jest to jedna z cech języka JavaScript, który jest dość 1510 01:10:43,830 --> 01:10:45,370 potężnym, ale także całkiem nowy. 1511 01:10:45,370 --> 01:10:47,460 I PHP faktycznie ma to jak dobrze. 1512 01:10:47,460 --> 01:10:49,500 >> Pozwólcie mi iść do przodu i robić coś bardzo szybko. 1513 01:10:49,500 --> 01:10:52,030 Pozwólcie mi iść do przodu i umieścić to tutaj. 1514 01:10:52,030 --> 01:10:52,600 Pozwól mi to zrobić. 1515 01:10:52,600 --> 01:10:53,690 Funkcja. 1516 01:10:53,690 --> 01:10:56,455 Nazwijmy ten moduł obsługi (). 1517 01:10:56,455 --> 01:10:58,290 Funkcja obsługi tak powiem. 1518 01:10:58,290 --> 01:11:00,110 Coś, co zajmuje jakieś działanie. 1519 01:11:00,110 --> 01:11:02,700 Pozwól mi posprzątać mój wcięcia. 1520 01:11:02,700 --> 01:11:04,380 I umieścić to tutaj. 1521 01:11:04,380 --> 01:11:06,090 I umieścić to tutaj. 1522 01:11:06,090 --> 01:11:06,470 Tak. 1523 01:11:06,470 --> 01:11:07,060 OK. 1524 01:11:07,060 --> 01:11:10,300 >> Więc teraz mam funkcji o nazwie Ładowarka (), że tak naprawdę nie wiemy 1525 01:11:10,300 --> 01:11:10,890 co robi jeszcze. 1526 01:11:10,890 --> 01:11:12,710 To po prostu ciągle ma te rzeczy. 1527 01:11:12,710 --> 01:11:13,900 Ups. 1528 01:11:13,900 --> 01:11:15,820 Wziął za dużo. 1529 01:11:15,820 --> 01:11:18,490 Zróbmy to. 1530 01:11:18,490 --> 01:11:18,990 Dobrze. 1531 01:11:18,990 --> 01:11:20,240 Przepraszam. 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 Dobrze. 1534 01:11:23,690 --> 01:11:24,720 Pozwól mi to zrobić. 1535 01:11:24,720 --> 01:11:25,020 OK. 1536 01:11:25,020 --> 01:11:27,040 Że wygląda ładnie i prosto przekazania teraz. 1537 01:11:27,040 --> 01:11:29,090 Pozwól mi to zrobić. 1538 01:11:29,090 --> 01:11:29,860 To zrobić. 1539 01:11:29,860 --> 01:11:30,950 I OK. 1540 01:11:30,950 --> 01:11:33,080 Więc teraz, zróbmy to tutaj. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 Nie więcej programowania w locie. 1543 01:11:37,270 --> 01:11:37,900 OK. 1544 01:11:37,900 --> 01:11:40,000 >> Więc teraz, wróćmy do gdzie historia zaczęła. 1545 01:11:40,000 --> 01:11:43,530 Wcześniej powiedziałem, że ta linia tutaj Oznacza, gdy dokument jest gotowy, przejdź 1546 01:11:43,530 --> 01:11:44,380 naprzód i to zrobić. 1547 01:11:44,380 --> 01:11:45,660 Co chcę zrobić? 1548 01:11:45,660 --> 01:11:49,070 No dokładnie, chcę iść do przodu i wykonaj następujące czynności. 1549 01:11:49,070 --> 01:11:53,700 Wykonanie tej linii kodu, a następnie co masz zrobić, to nazywamy to 1550 01:11:53,700 --> 01:11:56,370 działa, gdy formularz jest składany. 1551 01:11:56,370 --> 01:11:57,730 >> Teraz to, co jest interesujące. 1552 01:11:57,730 --> 01:11:59,170 To samo nie jest funkcją. 1553 01:11:59,170 --> 01:12:02,540 Zauważ, nie jestem wprowadzenie nawiasów tutaj w zwykły sposób. 1554 01:12:02,540 --> 01:12:06,800 Jestem dosłownie przejściu funkcję o nazwie Ładowarka () do innej funkcji 1555 01:12:06,800 --> 01:12:10,800 nazywa przedstawienia () jako argument, jak choć to jak zmienna. 1556 01:12:10,800 --> 01:12:14,290 A jest jedną z cech JavaScript, to sami Funkcje 1557 01:12:14,290 --> 01:12:15,710 są tak naprawdę obiekty. 1558 01:12:15,710 --> 01:12:18,350 W rzeczywistości, oni są naprawdę Zmienne pewnego rodzaju. 1559 01:12:18,350 --> 01:12:21,340 A jeśli nazwa funkcji jest Ładowarka (), nie ma powodu, nie mogę 1560 01:12:21,340 --> 01:12:23,390 przekazać ją jako argument tutaj. 1561 01:12:23,390 --> 01:12:27,530 A to oznacza, gdy formularz z ID jest demo 1562 01:12:27,530 --> 01:12:29,320 złożone, wywołać tę funkcję. 1563 01:12:29,320 --> 01:12:32,770 >> Ale teraz, jeśli mogę cofnąć wszystko, dlaczego to ja może zrobić 1564 01:12:32,770 --> 01:12:34,850 to przed chwilą? 1565 01:12:34,850 --> 01:12:36,840 Cóż, to jest anonimowa funkcja. 1566 01:12:36,840 --> 01:12:41,080 Bo szczerze mówiąc, zdałem sobie sprawę, dlaczego jestem przeszkadza, by tracić czas deklarowania 1567 01:12:41,080 --> 01:12:45,540 Funkcja o nazwie obsługi () tylko zadzwonić to w jednym i tylko w jednym miejscu? 1568 01:12:45,540 --> 01:12:48,640 Jeśli nie potrzebujesz nazwy, a ja nie trzeba nazwać to więcej niż jedno miejsce, 1569 01:12:48,640 --> 01:12:51,200 niech tylko realizacji funkcji dokładnie tam, gdzie go potrzebuję. 1570 01:12:51,200 --> 01:12:55,190 I tak, JavaScript i PHP obsługuje co nazywane są anonimowi, że funkcje 1571 01:12:55,190 --> 01:12:57,900 pozwoli mi zrobić dokładnie to tutaj. 1572 01:12:57,900 --> 01:12:59,570 >> Ale jesteśmy tylko zarysowania powierzchni. 1573 01:12:59,570 --> 01:13:02,430 Miejmy dokuczać z tylko kilka Ostateczne przykłady tutaj. 1574 01:13:02,430 --> 01:13:04,600 >> Jeśli pójdę do quote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 Zauważ, że jest to rzeczywiście PHP funkcja, program PHP, że napisałem 1577 01:13:11,870 --> 01:13:15,270 że oczekuje parametr HTTP o nazwie Symbol i mogę przekazać w 1578 01:13:15,270 --> 01:13:16,730 wartość jak FB. 1579 01:13:16,730 --> 01:13:20,010 A jeśli rzeczywiście spojrzymy na źródła Kod ten jest odpytywanie darmową stronę 1580 01:13:20,010 --> 01:13:23,680 zwany Yahoo Finance, podobnie jak zestaw p siedem, i to wraca do mnie 1581 01:13:23,680 --> 01:13:26,580 Najwyraźniej coś w znany jest w formacie JSON - 1582 01:13:26,580 --> 01:13:28,010 JavaScript Object Notation. 1583 01:13:28,010 --> 01:13:28,810 To tylko przedmiot. 1584 01:13:28,810 --> 01:13:32,500 Zwróć uwagę na nawiasy klamrowe, cytaty, dwukropek i przecinki. 1585 01:13:32,500 --> 01:13:34,720 >> Teraz zaś, to jest całkiem fajne. 1586 01:13:34,720 --> 01:13:38,520 Prawdopodobnie dlatego, że mogą korzystać z programowania języka do generowania adresów URL 1587 01:13:38,520 --> 01:13:40,370 że wyglądać tak dynamicznie, prawda? 1588 01:13:40,370 --> 01:13:43,340 Mogę zmienić na Google i wrócić Google'a 1589 01:13:43,340 --> 01:13:47,930 cena akcji w wysokości $ 1,017.55. 1590 01:13:47,930 --> 01:13:49,640 Zobaczmy więc, jeśli nie możemy użyć tego teraz. 1591 01:13:49,640 --> 01:13:56,590 >> Pozwólcie mi odejść do ajax-0 o, które wygląda następująco. 1592 01:13:56,590 --> 01:13:59,750 To tylko strona, która ma formularz z przyciskiem. 1593 01:13:59,750 --> 01:14:05,860 Pozwól mi tutaj śmiało wpisać Yhoo dla Yahoo symbolem stanie, kliknij przycisk Pobierz 1594 01:14:05,860 --> 01:14:10,530 Cytat, a teraz zauważyć, stałam powiadomienie o 32.86. 1595 01:14:10,530 --> 01:14:14,050 >> Pozwól, że faktycznie go do wersji hodowcy z ta strona, wersja dwa, a 1596 01:14:14,050 --> 01:14:17,530 wpisz powiedzmy Microsoft, MSFT. 1597 01:14:17,530 --> 01:14:18,410 Get Quote. 1598 01:14:18,410 --> 01:14:19,850 A teraz zauważyć, nie ma wpisu. 1599 01:14:19,850 --> 01:14:22,770 Zauważ, gdzie jest napisane cena należy określić? 1600 01:14:22,770 --> 01:14:27,060 Jest to najprostsze przykładach wskazuje na jakim Gchat i Facebook 1601 01:14:27,060 --> 01:14:30,070 Czat i Gmail i inne takie strony internetowe robią przez właściwie 1602 01:14:30,070 --> 01:14:31,290 zmiana strony internetowej. 1603 01:14:31,290 --> 01:14:31,800 >> To zauważyć. 1604 01:14:31,800 --> 01:14:33,120 Pozwól mi odświeżyć stronę. 1605 01:14:33,120 --> 01:14:35,080 Pozwól mi otworzyć Chrome inspektorze. 1606 01:14:35,080 --> 01:14:36,890 Pozwólcie mi odejść do elementów Zakładka tutaj. 1607 01:14:36,890 --> 01:14:42,310 Teraz zauważył, gdybym powiększyć tu i otworzyć to się zauważyć, że jest to mój 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - Document Object Model moje. 1609 01:14:44,500 --> 01:14:45,920 To jest mój HTML. 1610 01:14:45,920 --> 01:14:48,750 Ale teraz zauważyć, chociaż to będzie być trochę trudne, aby zobaczyć go w obu 1611 01:14:48,750 --> 01:14:52,080 miejscach na raz, jeśli wpisać FB tutaj, obserwować dno 1612 01:14:52,080 --> 01:14:54,110 ekranu tylko. 1613 01:14:54,110 --> 01:14:57,720 >> To rzeczywiście się zmienia moja HTML w locie. 1614 01:14:57,720 --> 01:15:01,670 I robi to po prostu robiąc coś takiego. 1615 01:15:01,670 --> 01:15:06,800 Jeśli otworzyć ajax-2, informacja realizacji coś tak sexy jak 1616 01:15:06,800 --> 01:15:09,560 , że choć jest to dość brzydki, ale jako wyrafinowane, jak 1617 01:15:09,560 --> 01:15:11,910 funkcjonalnie, posiada pewne HTML na dole. 1618 01:15:11,910 --> 01:15:13,810 Ale zauważ Kiedyś oznaczyć. 1619 01:15:13,810 --> 01:15:16,640 Nie używałem tego wcześniej, ale jest to jak, ale nie na siłę 1620 01:15:16,640 --> 01:15:17,840 wszystko na nowej linii. 1621 01:15:17,840 --> 01:15:20,830 To właśnie sprawia, że ​​obszar prostokątny w jednej linii zasadniczo. 1622 01:15:20,830 --> 01:15:22,870 >> Zauważ, że dałem mu identyfikator cenie. 1623 01:15:22,870 --> 01:15:26,800 Okazuje się przy użyciu tego samego JavaScript biblioteki, mam funkcji 1624 01:15:26,800 --> 01:15:30,440 nazywa cytat (), która jest wywoływana, gdy tylko formularza. 1625 01:15:30,440 --> 01:15:31,800 I co ja robię to. 1626 01:15:31,800 --> 01:15:35,730 Jestem deklarowanie zmiennej w JavaScript nazywa url, wartość oszczędności 1627 01:15:35,730 --> 01:15:38,650 quote.php? symbol =. 1628 01:15:38,650 --> 01:15:44,220 Innymi słowy, ja zaczynam przygotowanie żądania HTTP, a następnie 1629 01:15:44,220 --> 01:15:49,250 Jestem złączenie na które z plusem co element o ID 1630 01:15:49,250 --> 01:15:54,190 z symbolem jest, która to informacja, że pole tekstowe aż tutaj. 1631 01:15:54,190 --> 01:15:56,630 Więc tak jak mieliśmy formy w przeszłości. 1632 01:15:56,630 --> 01:16:01,450 >> A potem okazuje się, w jQuery, jeśli zadzwonić. val (), która wywołuje z val 1633 01:16:01,450 --> 01:16:05,900 funkcja, funkcja wartości, które pobiera co użytkownik wpisał w. 1634 01:16:05,900 --> 01:16:08,920 A potem ruchu sieciowego że dzieje się to. 1635 01:16:08,920 --> 01:16:11,230 $. GetJSON. 1636 01:16:11,230 --> 01:16:13,720 >> I jak na bok, znak dolara jest tylko skrótowym zapisem. 1637 01:16:13,720 --> 01:16:16,860 To naprawdę jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 Zabierz mnie do JSON z tego adresu URL, a gdy Wniosek wraca, nazywamy to 1639 01:16:21,520 --> 01:16:26,550 Funkcja i przekazać jako argument w co wrócił z serwera. 1640 01:16:26,550 --> 01:16:31,205 >> Więc innymi słowy, jeśli wrócę do przeglądarki, a ja wrócę do quote.php, 1641 01:16:31,205 --> 01:16:35,590 co moja przeglądarka robi to coraz ten fragment danych. 1642 01:16:35,590 --> 01:16:38,930 A kiedy idę do tej strony tutaj, zauważyć, gdybyśmy zamiast iść do sieci 1643 01:16:38,930 --> 01:16:43,820 Zakładka i wyczyścić go, a następnie wpisz coś GOOG dla Google i dostać 1644 01:16:43,820 --> 01:16:46,340 Cytat, zawiadomienia strona nie zmieniła. 1645 01:16:46,340 --> 01:16:50,990 Ale żądania HTTP powstał, a co wrócił tutaj, jeśli spojrzymy na 1646 01:16:50,990 --> 01:16:56,130 Odpowiedź jest cała masa JSON że dostęp wreszcie 1647 01:16:56,130 --> 01:16:58,070 ta prosta linia tutaj. 1648 01:16:58,070 --> 01:17:00,150 >> Danych jest to, co dostał z serwera. 1649 01:17:00,150 --> 01:17:02,120 Cena jest nazwa dbam o klucz. 1650 01:17:02,120 --> 01:17:05,230 Więc data.price daje mi to. 1651 01:17:05,230 --> 01:17:07,540 >> Teraz zaś, co jest ostatnim przykładem. 1652 01:17:07,540 --> 01:17:09,280 Można zrobić jeszcze więcej ze strony. 1653 01:17:09,280 --> 01:17:12,440 Jeden faktycznie, dobrze dwa. 1654 01:17:12,440 --> 01:17:14,780 Możemy przywrócić tag, jeśli pamiętam. 1655 01:17:14,780 --> 01:17:15,850 To JavaScript. 1656 01:17:15,850 --> 01:17:17,110 Możemy to zrobić. 1657 01:17:17,110 --> 01:17:17,690 Bardzo ekscytujące. 1658 01:17:17,690 --> 01:17:18,800 Zostawimy to jako cliffhanger. 1659 01:17:18,800 --> 01:17:21,590 >> Ale bardziej emocjonująco, można robić takie rzeczy. 1660 01:17:21,590 --> 01:17:25,940 Jeśli pójdę do geolokalizacji-1, okazuje się, że Chrome wie, że jesteśmy w 1661 01:17:25,940 --> 01:17:30,672 Szerokość Długość 42.37. -71,10. 1662 01:17:30,672 --> 01:17:32,940 Więc jest jeszcze nie do Państwa dyspozycji. 1663 01:17:32,940 --> 01:17:34,290 Ale o tym w przyszłym tygodniu. 1664 01:17:34,290 --> 01:17:35,540 Do zobaczenia w poniedziałek. 1665 01:17:35,540 --> 01:17:37,558