1 00:00:00,000 --> 00:00:01,940 >> [MUZYKA GRY] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID MALAN: Jest CS 50, a to jest początek tygodnia dziewięć. 4 00:00:14,620 --> 00:00:18,240 A co myśleliśmy, że będziemy robić dziś nie jest tylko zamknąć rozdział o zeszłotygodniowej 5 00:00:18,240 --> 00:00:22,670 Materiał, gdzie skupiliśmy się na serwerze strona internetowa z programowania PHP i SQL, 6 00:00:22,670 --> 00:00:23,549 niektóre rzeczy w bazie. 7 00:00:23,549 --> 00:00:25,590 Porozmawiamy o odrobinie Bezpieczeństwo i dziś 8 00:00:25,590 --> 00:00:29,590 przejście do programowania po stronie klienta język znany jako JavaScript. 9 00:00:29,590 --> 00:00:31,330 Ale po pierwsze, niektóre wykupu. 10 00:00:31,330 --> 00:00:35,030 >> Można przypomnieć, że na Środa, wyruszyłem 11 00:00:35,030 --> 00:00:37,550 napisać stronę internetową, która wziął na wejściu użytkownika 12 00:00:37,550 --> 00:00:41,120 za pomocą formularza HTML, który następnie przechowywany że nazwy wejściowe użytkownika, telefon 13 00:00:41,120 --> 00:00:43,124 numery, a telefon Nośnikami w bazie danych. 14 00:00:43,124 --> 00:00:45,540 A potem miałem trochę polecenia skrypt napisany w PHP linii 15 00:00:45,540 --> 00:00:47,956 który miał do iteracji w ciągu wierszy danych 16 00:00:47,956 --> 00:00:49,400 i wysyłania wiadomości tekstowych. 17 00:00:49,400 --> 00:00:53,870 Mimo kilku, kilku próbach, my nie dostać tej pracy do końca. 18 00:00:53,870 --> 00:00:57,820 >> Więc ja spędziłem cały ten tydzień pracy tego kodu, aby nas poza punkt 19 00:00:57,820 --> 00:01:01,220 którym skończyliśmy, przy czym wszystkie Mam do końca środa 20 00:01:01,220 --> 00:01:05,500 była to wiadomość tekstowa z Margo, jak walczyłem, 21 00:01:05,500 --> 00:01:09,940 następnie wiadomości tekstowej z innego kolega, Masz to David. 22 00:01:09,940 --> 00:01:14,030 Obserwowani przez ten jeden, cudownie zachęcające. 23 00:01:14,030 --> 00:01:15,840 Przechowywane na dzieje, bardzo pokrzepiające. 24 00:01:15,840 --> 00:01:20,960 I prawie dostał aż then-- i to pamiętać, że zakończył się w środę. 25 00:01:20,960 --> 00:01:25,850 I wtedy rzeczywiście może mój ulubiony, Chwilę później, to przyszedł. 26 00:01:25,850 --> 00:01:27,000 Cholera Live Stream. 27 00:01:27,000 --> 00:01:31,080 >> Więc dzisiaj, naprawimy to z szybko spojrzeć na to, co zrobiłem, ponieważ. 28 00:01:31,080 --> 00:01:35,440 Więc cały ten kod jest dostępny online w ubiegłym tygodniu, tygodniu, osiem, 29 00:01:35,440 --> 00:01:36,300 Kod źródłowy. 30 00:01:36,300 --> 00:01:39,425 I zobaczysz, że przeszedłem, i rzeczywiście oczyścić rzeczy nieco. 31 00:01:39,425 --> 00:01:42,080 Przedstawiłem kilka innych cechy bazy danych SQL. 32 00:01:42,080 --> 00:01:45,300 Na przykład, zamiast po prostu zrobić nośnikiem var char 33 00:01:45,300 --> 00:01:47,310 jak myślę, że zrobiłem w locie w zeszłym tygodniu. 34 00:01:47,310 --> 00:01:49,820 I zamiast zdefiniowana jako co nazywa enum. 35 00:01:49,820 --> 00:01:53,310 >> A niektórzy z was widzieli ten może jak byliśmy C. Enum jest rzeczywiście 36 00:01:53,310 --> 00:01:56,820 cechą C, gdzie można wyliczyć całą masę stałych 37 00:01:56,820 --> 00:01:59,640 i przypisać im wartości automatyczne, jak jeden, dwa, trzy, cztery 38 00:01:59,640 --> 00:02:01,330 bez twardych numerów kodów. 39 00:02:01,330 --> 00:02:04,780 Tak SQL wspiera same, przy czym jeśli masz pole bazy danych, że tylko ty 40 00:02:04,780 --> 00:02:09,389 chcą wziąć na jednym z skończonych Wartości można określić ją dosłownie 41 00:02:09,389 --> 00:02:13,120 jak zrobiłem tam dla czterech popularnych amerykańskich przewoźników telefon. 42 00:02:13,120 --> 00:02:13,819 >> Więc zrobiłem to. 43 00:02:13,819 --> 00:02:16,610 I zrobiłem kilka zmian, jak oraz, z których najważniejsze 44 00:02:16,610 --> 00:02:20,090 e-mail został dostać pracy, bo przypomnieć, że ten program, na którym oparła się 45 00:02:20,090 --> 00:02:23,470 ogólnie nazywane e-mail, aby Bramka SMS, który jest po prostu 46 00:02:23,470 --> 00:02:27,670 fantazyjny sposób na powiedzenie, że Verizon, i AT & T, i innych ludzi obsługuje serwer, 47 00:02:27,670 --> 00:02:30,740 przy czym jeśli otrzyma e-mail, to zamienia go na SMS 48 00:02:30,740 --> 00:02:33,290 i wysyła tekst wiadomość do innego telefonu. 49 00:02:33,290 --> 00:02:37,010 Więc jeśli zrobiłem to poprawnie, tutaj jest nowe i ulepszone forma 50 00:02:37,010 --> 00:02:39,259 że ma zamiar porozmawiać z nowy i ulepszony kod, który 51 00:02:39,259 --> 00:02:40,300 można grać on-line. 52 00:02:40,300 --> 00:02:44,140 I mam nadzieję, że będzie to zrobić mój Sygnał telefonu za chwilę. 53 00:02:44,140 --> 00:02:47,240 >> Więc po pierwsze, mam zamiar wpisać w moim imieniu. 54 00:02:47,240 --> 00:02:51,400 Po drugie, nie będę to tym razem zrobić. 55 00:02:51,400 --> 00:02:53,920 Mam zamiar nie Skontroluj element. 56 00:02:53,920 --> 00:02:56,710 I to jest właśnie mała rzecz, więc nie 57 00:02:56,710 --> 00:02:59,250 stworzyć godzin postprodukcji działa tak jak ja ostatnio. 58 00:02:59,250 --> 00:03:02,300 Tam teraz jest mój numer telefonu. 59 00:03:02,300 --> 00:03:03,560 >> Będę wybrać Verizon. 60 00:03:03,560 --> 00:03:10,260 I tu, wróćmy na tym mikrofonie tutaj, i mają to w moim telefonie tutaj. 61 00:03:10,260 --> 00:03:13,130 Zamierzam kliknij Register, które mam nadzieję, że powinien 62 00:03:13,130 --> 00:03:14,530 umieścić go w bazie danych. 63 00:03:14,530 --> 00:03:16,780 Teraz mam zamiar udać się do Program wiersza poleceń, które 64 00:03:16,780 --> 00:03:20,825 odwołanie nazwano kropka ukośnik Tekst i trzymaj kciuki. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 No to jedziemy. 67 00:03:26,527 --> 00:03:27,501 >> [DINGS telefon] 68 00:03:27,501 --> 00:03:28,962 >> [APPLAUSE] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID MALAN: Tak więcej zabawy niż this-- to zabawa, oczywiście, jeśli się do niego. 71 00:03:34,940 --> 00:03:38,004 Ale to jest więcej zabawy, pomyślałam, jeśli stworzył jeden z tych momentów filmowych 72 00:03:38,004 --> 00:03:40,420 gdzie jak coś naprawdę złego działo się w świecie, 73 00:03:40,420 --> 00:03:42,860 i jak wszyscy ludzie NSA telefony komórkowe zaczynają piszczeć 74 00:03:42,860 --> 00:03:44,860 z wiadomości tekstowych ostrzegając ich o tym fakcie. 75 00:03:44,860 --> 00:03:47,026 Więc pomyślałem, że spróbujemy odtworzyć samo tutaj, 76 00:03:47,026 --> 00:03:49,610 w którym nie używa bazy danych, I zamiast z góry 77 00:03:49,610 --> 00:03:51,490 Napisałem program, który wygląda tak. 78 00:03:51,490 --> 00:03:53,660 >> Jest index.php-- i umieścić ten kod w Internecie 79 00:03:53,660 --> 00:03:56,710 jak well-- że najwyraźniej tylko świadczy form.php, 80 00:03:56,710 --> 00:04:00,990 za pomocą stylu, że paradygmat MVC mówić o bardziej szczegółowo w zestawie problemów 81 00:04:00,990 --> 00:04:01,650 siedem. 82 00:04:01,650 --> 00:04:02,910 Ta forma jest dość prosta. 83 00:04:02,910 --> 00:04:06,634 To będzie przedkładać plik o nazwie here.php pocztą. 84 00:04:06,634 --> 00:04:09,300 I to najwyraźniej zamiar zapytać o nazwę i numer telefonu, 85 00:04:09,300 --> 00:04:11,400 a następnie za pomocą tak zwanych Wybierz menu, to 86 00:04:11,400 --> 00:04:14,250 zamiar dać co najmniej cztery popularnych amerykańskich przewoźników telefon komórkowy, 87 00:04:14,250 --> 00:04:17,470 i pozwalają skutecznie wziąć udział, klikając tutaj. 88 00:04:17,470 --> 00:04:20,471 >> A tutaj, w międzyczasie, będzie pożyczyć kodu z ostatniej chwili. 89 00:04:20,471 --> 00:04:22,553 A jeśli po prostu przejrzeć to, zobaczysz, że nie ma 90 00:04:22,553 --> 00:04:23,900 cała masa kontroli błędów. 91 00:04:23,900 --> 00:04:26,640 Ale w końcu piękno jest to, że nie piszesz do bazy danych dzisiaj. 92 00:04:26,640 --> 00:04:29,130 Trzymamy go proste i miejmy nadzieję, że tylko wysyłanie 93 00:04:29,130 --> 00:04:32,190 za pośrednictwem wiadomości tekstowych funkcji I napisał w ciągu ostatnich kilku dni rozmowy 94 00:04:32,190 --> 00:04:36,270 Tekst, który jest w funkcje. php, który jest ponownie dostępny w Internecie. 95 00:04:36,270 --> 00:04:38,210 >> Więc jeśli chcesz wziąć udział w tym. 96 00:04:38,210 --> 00:04:40,190 Nie jedziemy do przechowywania czegokolwiek. 97 00:04:40,190 --> 00:04:43,809 Idź do URL tutaj w czasie rzeczywistym. 98 00:04:43,809 --> 00:04:46,850 Nie przedstawia go jeszcze, ale niech zobaczyć, czy możemy mieć jeden z tych filmu 99 00:04:46,850 --> 00:04:49,830 każdego z nas momenty, w których telefon komórkowy zaczyna piszczeć, miejmy nadzieję, że tylko 100 00:04:49,830 --> 00:04:53,580 po tym roku w przeciwieństwie do w 2011 roku gdzie to poszło strasznie krzywo. 101 00:04:53,580 --> 00:04:58,910 A kiedy idziesz do tego adresu, powinieneś zobaczyć bardzo prosty formularz 102 00:04:58,910 --> 00:05:03,884 że jeśli masz nazwisko, telefon komórkowy numer i telefon, że przewoźnik 103 00:05:03,884 --> 00:05:06,175 pasuje tam listy, przejdź naprzód i wypełnić formularz. 104 00:05:06,175 --> 00:05:07,880 Ale nie bij złożyć jeszcze. 105 00:05:07,880 --> 00:05:10,850 >> Formularz będzie wyglądać tak. 106 00:05:10,850 --> 00:05:13,660 Śmiało i wpisz imię i nazwisko, numer telefonu. 107 00:05:13,660 --> 00:05:17,670 Oop, ktoś idzie przed krzywej. 108 00:05:17,670 --> 00:05:18,170 Jest OK. 109 00:05:18,170 --> 00:05:19,340 OK, wszyscy wypełniony formularz. 110 00:05:19,340 --> 00:05:21,400 To powinno działać na telefon, zbyt, jeśli chcesz. 111 00:05:21,400 --> 00:05:23,695 W porządku, na miejsca, gotowi, start. 112 00:05:23,695 --> 00:05:24,195 Hit Tutaj. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 Co? 115 00:05:27,775 --> 00:05:31,140 116 00:05:31,140 --> 00:05:31,640 Nie. 117 00:05:31,640 --> 00:05:34,410 118 00:05:34,410 --> 00:05:40,250 Przysięgam na Boga, że ​​testowane to kilka razy dzisiaj. 119 00:05:40,250 --> 00:05:41,720 Masz ją? 120 00:05:41,720 --> 00:05:43,145 >> [Wstawienie GŁOSY] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID MALAN: OK, błąd użytkownika może. 123 00:05:49,560 --> 00:05:50,550 To dwa. 124 00:05:50,550 --> 00:05:53,300 Pracował dla dwóch z kilkaset, trzy, cztery. 125 00:05:53,300 --> 00:05:55,940 OK, to dobrze. 126 00:05:55,940 --> 00:05:58,520 Czterech na pięciu dla odpowiedzialności ani jak o. 127 00:05:58,520 --> 00:05:59,810 >> Więc co się stało? 128 00:05:59,810 --> 00:06:02,727 Więc zapewne nie widząc twój ekrany, dlaczego to może być błędne? 129 00:06:02,727 --> 00:06:05,518 To chyba, że ​​byliśmy po prostu próbuje zrobić zbyt wiele połączeń 130 00:06:05,518 --> 00:06:08,110 do serwera pocztowego na wszystkich Uniwersytetu Harvarda raz z tego samego adresu IP. 131 00:06:08,110 --> 00:06:10,740 Ja tylko zgadywać, ponieważ ja nie mają luksusu testowania 132 00:06:10,740 --> 00:06:13,220 ten kod z niektórymi Z góry 300 osób 133 00:06:13,220 --> 00:06:16,040 ale teraz sobie sprawę, że że co najmniej powinna 134 00:06:16,040 --> 00:06:18,250 dostał zadanie tym razem. 135 00:06:18,250 --> 00:06:22,880 >> W porządku, więc dlaczego to wszystko więcej z tematem, co się dzieje? 136 00:06:22,880 --> 00:06:24,900 Otóż ​​po pierwsze, szybkie Kilka ogłoszeń. 137 00:06:24,900 --> 00:06:29,350 Tak jeden, jeśli chcesz dołączyć do Chang, i Nick i inni na obiad w piątek, 138 00:06:29,350 --> 00:06:32,400 zrobić RSVP w zwykłym adresie URL tam. 139 00:06:32,400 --> 00:06:35,650 Jeśli myślisz o koncentrując lub robi wtórne w CS, 140 00:06:35,650 --> 00:06:38,941 czy jesteś studentem drugiego roku, lub studiów, lub nawet młodszy lub starszy w tym momencie 141 00:06:38,941 --> 00:06:42,490 i może jeszcze wycisnąć w kursach, sobie sprawę, że szkoły inżynierskiej 142 00:06:42,490 --> 00:06:45,620 zbiera za darmo Ben i Lody i porady Jerry'ego 143 00:06:45,620 --> 00:06:48,910 w środę tuż po klasie na 16:00 w budynku CS 144 00:06:48,910 --> 00:06:49,771 w Maxwell Dworkin. 145 00:06:49,771 --> 00:06:51,520 Jeśli jest to zbyt szybko na ekranie, po prostu idź 146 00:06:51,520 --> 00:06:55,260 do cs50.harvard.edu dla Link do wydarzenia na Facebook 147 00:06:55,260 --> 00:06:57,140 gdzie można zobaczyć więcej szczegółów. 148 00:06:57,140 --> 00:07:01,390 >> Tymczasem, myślałem, że mam rację jedna rzecz ja goofed w środę. 149 00:07:01,390 --> 00:07:04,400 Okazuje się, że ID Marka na Facebooku nie było trzech. 150 00:07:04,400 --> 00:07:05,230 To było cztery. 151 00:07:05,230 --> 00:07:08,330 Okazało się, że miał więcej testów Konta nie wspominam. 152 00:07:08,330 --> 00:07:12,400 Ale co to było jak możliwość zrobić, to wyciągnąć URL takiego. 153 00:07:12,400 --> 00:07:16,680 >> Tak więc okazuje się, że Facebook ma API, Application Programming Interface, 154 00:07:16,680 --> 00:07:20,070 co jest mechanizm, dzięki któremu ci może zażądać danych programowo 155 00:07:20,070 --> 00:07:24,480 na Facebooku i wrócić maszynę czytelne informacje, a nie strony internetowe 156 00:07:24,480 --> 00:07:28,690 ale tekst tylko surowe, coś nazywa JavaScript Object Notation. 157 00:07:28,690 --> 00:07:32,150 I rzeczywiście, jeśli mogę odwiedzić to Adres URL, i powiększyć domyślnie 158 00:07:32,150 --> 00:07:34,960 Marka ta jest publicznie dostępne informacje. 159 00:07:34,960 --> 00:07:37,430 >> I ciekawostka tutaj jest po prostu, że jego ID 160 00:07:37,430 --> 00:07:40,670 rzeczywiście, numer cztery, które realizowane tak szybko, jak to zrobił. 161 00:07:40,670 --> 00:07:44,260 Można to zrobić samemu, jeśli wiesz, Twoja nazwa użytkownika na Facebooku, jeśli masz. 162 00:07:44,260 --> 00:07:45,440 Wystarczy wpisać go do góry nie. 163 00:07:45,440 --> 00:07:46,640 I nic z tego nie jest prywatny. 164 00:07:46,640 --> 00:07:48,670 Jestem po prostu to robi, nawet W trybie incognito. 165 00:07:48,670 --> 00:07:49,900 Więc nie jestem nawet zalogowany. 166 00:07:49,900 --> 00:07:54,440 I widzisz, że ja najwyraźniej był numer użytkownika sześciu tysiące czterysta pięćdziesiąt cztery 167 00:07:54,440 --> 00:07:56,480 na Facebooku, co nie jest szkoda tych dni. 168 00:07:56,480 --> 00:07:59,900 Tak czy inaczej, można również zobaczyć dodatkowe informacje nie. 169 00:07:59,900 --> 00:08:02,150 >> I użyteczny aspekt o to, że ty 170 00:08:02,150 --> 00:08:06,890 może napisać własne oprogramowanie jakoś integruje dane, takie jak ten 171 00:08:06,890 --> 00:08:08,170 do własnej aplikacji. 172 00:08:08,170 --> 00:08:10,650 Możesz upoważniają użytkowników do zalogować się na stronie internetowej, 173 00:08:10,650 --> 00:08:14,190 nie przy użyciu własnej nazwy użytkownika i niestandardowe hasło, ale może ich Facebook login 174 00:08:14,190 --> 00:08:16,170 i uzyskać informacje, nawet o swoich przyjaciół, 175 00:08:16,170 --> 00:08:18,740 jeśli zatwierdzi takie, lub podobne. 176 00:08:18,740 --> 00:08:21,430 Tak więc zauważyć, że CS50 też ma jedne z własnych interfejsów API, 177 00:08:21,430 --> 00:08:24,620 jeden dla danych katalogowych Oczywiście, niektórzy dla menu w restauracji hugs 178 00:08:24,620 --> 00:08:26,730 hale, wszystkie budynki i lokalizacje 179 00:08:26,730 --> 00:08:30,930 na terenie kampusu mamy także API dla które można wyszukać i uzyskać podobny 180 00:08:30,930 --> 00:08:35,520 z powrotem dane tekstowe, które można zintegrować w PHP lub JavaScript, a nawet, 181 00:08:35,520 --> 00:08:38,320 choć rzadziej, C opiera się ostateczny projekt. 182 00:08:38,320 --> 00:08:41,190 >> Rzeczywiście naprzód do finału Projekt kilka kamieni milowych. 183 00:08:41,190 --> 00:08:42,980 Dostałeś e-mail od nas na drugi dzień. 184 00:08:42,980 --> 00:08:45,761 Sobie sprawę, że wniosek wynika nadchodzący poniedziałek. 185 00:08:45,761 --> 00:08:49,010 To nie zawsze wiążące, ale muszą otrzymywać towarzyszy nauczania 186 00:08:49,010 --> 00:08:51,260 zatwierdzenie przed podjęciem wszelkie następnie zmiany. 187 00:08:51,260 --> 00:08:54,280 A następnie do przodu są Wiele innych kamieni milowych. 188 00:08:54,280 --> 00:08:56,542 >> Tak cię drażnić, zbyt, z niektórych możliwości, 189 00:08:56,542 --> 00:08:58,250 mamy kilka Żarówki te barwy światła. 190 00:08:58,250 --> 00:09:01,190 A niektórzy z was mają teraz niektóre z nich w swoim pokoju w akademiku, jak również. 191 00:09:01,190 --> 00:09:02,920 A oni też mają API. 192 00:09:02,920 --> 00:09:07,300 Więc pamiętam te żarówki tygodnie binarnych temu, że Dan Bradley i Ansel 193 00:09:07,300 --> 00:09:08,780 Duff stworzony dla nas. 194 00:09:08,780 --> 00:09:12,560 Użyli do interfejsu oprogramowania to żarówka, która w tej chwili 195 00:09:12,560 --> 00:09:15,232 jest podłączony do prądu a następnie poprzez sieć bezprzewodową 196 00:09:15,232 --> 00:09:17,690 jest połączony z małą rzecz zwane tu Bridge, 197 00:09:17,690 --> 00:09:21,280 jak mały routera zastrzeżonych do tego konkretnego urządzenia. 198 00:09:21,280 --> 00:09:26,540 >> Ale okazuje się, czy wiem, jak wysyłać wiadomości HTTP, jak wszyscy teraz zrobić, 199 00:09:26,540 --> 00:09:31,670 Mogę wysłać wiadomość tak, aby to żarówka, aby ją włączyć lub wyłączyć 200 00:09:31,670 --> 00:09:34,000 lub zrobić dowolną liczbę inne operacje na nim. 201 00:09:34,000 --> 00:09:36,110 Zauważ, że to nie dostać, to nie pisać. 202 00:09:36,110 --> 00:09:37,760 Jest jeszcze jeden o nazwie put. 203 00:09:37,760 --> 00:09:39,630 Jest rzeczywiście kilka innych tego typu czasowniki. 204 00:09:39,630 --> 00:09:42,920 Zauważmy jednak, że tam jest droga, slash API, slash nowy developer, 205 00:09:42,920 --> 00:09:44,990 slash światło, slash jeden, slash stan. 206 00:09:44,990 --> 00:09:49,060 >> To tylko pozornie ścieżka, że ​​firma Philips, 207 00:09:49,060 --> 00:09:51,640 zdecydował musisz trafić z żądania HTTP 208 00:09:51,640 --> 00:09:55,010 jeśli chcesz zmienić stan żarówki za pomocą protokołu HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 Następnie zauważył pustą linię. 210 00:09:56,380 --> 00:10:00,170 I wtedy wreszcie, co wygląda jak rodzaj tablicy jakiegoś, 211 00:10:00,170 --> 00:10:04,730 to znowu będzie się nazywać JavaScript Object Notation, czy Jason. 212 00:10:04,730 --> 00:10:08,000 A to, co widzisz tutaj jest to, że istnieją trzy pary wartości kluczowe. 213 00:10:08,000 --> 00:10:09,115 >> Jednym z najważniejszych jest wezwał. 214 00:10:09,115 --> 00:10:10,990 A jego wartość najwyraźniej będzie prawdą. 215 00:10:10,990 --> 00:10:13,612 Jasność wynosi 128, co jest pewnego rodzaju int. 216 00:10:13,612 --> 00:10:15,820 A potem jest czas przejścia zero, co jest najwyraźniej 217 00:10:15,820 --> 00:10:17,970 jak długo to będzie podjąć, aby włączyć tę rzecz na. 218 00:10:17,970 --> 00:10:19,890 >> Więc teraz to żarówka jest wyłączona. 219 00:10:19,890 --> 00:10:22,880 Ale jeśli to zrobię dokładnie this-- niech mi iść do małego ściągawki 220 00:10:22,880 --> 00:10:25,200 że Dan ustawić w advance-- i idę 221 00:10:25,200 --> 00:10:27,920 iść do przodu i skopiować następujące polecenie. 222 00:10:27,920 --> 00:10:30,200 Curl, jak niektórzy z was mógł wywnioskować na CS50 223 00:10:30,200 --> 00:10:35,080 Omów to narzędzie takie jak Telnet że można symulować żądania HTTP, 224 00:10:35,080 --> 00:10:36,360 specjalnie stawia. 225 00:10:36,360 --> 00:10:39,710 Mogę wysłać te dane, specjalnie co właśnie 226 00:10:39,710 --> 00:10:43,430 widziałem przed chwilą specjalnie do tego adresu URL na tutaj. 227 00:10:43,430 --> 00:10:46,310 A potem Curl będzie obsługiwać wszystkich wymaganych nagłówków 228 00:10:46,310 --> 00:10:47,600 i analizowania tam od. 229 00:10:47,600 --> 00:10:54,700 >> Więc wszystko co musisz zrobić, to skopiować to do okno terminala, a następnie naciśnij Enter. 230 00:10:54,700 --> 00:10:56,000 A żarówka jest długa. 231 00:10:56,000 --> 00:10:59,060 I to wszystko przeżywa mój komputer bezprzewodowo 232 00:10:59,060 --> 00:11:01,960 jakoś się do mostu, który Następnie rozmowy z tym żarówki. 233 00:11:01,960 --> 00:11:02,960 Mogę zrobić coś innego. 234 00:11:02,960 --> 00:11:07,050 Mogę zrobić to coś przejść czerwony na przykład. 235 00:11:07,050 --> 00:11:11,040 Mogę na przykład zrobić ta sprawa go na zielono. 236 00:11:11,040 --> 00:11:12,220 Mogę zrobić to iść na niebiesko. 237 00:11:12,220 --> 00:11:14,760 >> I zauważyć, w każdej z nich przypadki, wszystko zmienia się, że jestem 238 00:11:14,760 --> 00:11:18,540 Jest tak zwaną wartość Hue rzeczywiście dać mu trochę kolorów. 239 00:11:18,540 --> 00:11:20,320 Więc pozwól mi wklej ten jeden w również. 240 00:11:20,320 --> 00:11:21,000 Teraz jest niebieski. 241 00:11:21,000 --> 00:11:24,672 >> I można to zrobić nawet hodowcy rzeczy where-- chodźmy na zielony. 242 00:11:24,672 --> 00:11:26,630 I mogę to z robić Oczywiście z mojego kodu. 243 00:11:26,630 --> 00:11:30,670 Ale nawet sam API wspiera działalność funkowe 244 00:11:30,670 --> 00:11:35,510 jak ten, który będzie teraz przeszkadza nas przez następne 30 sekund. 245 00:11:35,510 --> 00:11:39,170 >> Więc to jest jedna próbka tego, co może po zrobić z API, w tym jeden z udziałem 246 00:11:39,170 --> 00:11:40,010 żarówki. 247 00:11:40,010 --> 00:11:42,510 Należy pamiętać, że CS50 ma kilka pary Google Glass gdybyś 248 00:11:42,510 --> 00:11:45,380 chciałbym zająć coś razem te linie, Arduino Unos, które 249 00:11:45,380 --> 00:11:48,670 są malutkie komputery, zasadniczo, na pokładzie trochę obwodu 250 00:11:48,670 --> 00:11:50,470 które można podłączyć przewody i inne rzeczy 251 00:11:50,470 --> 00:11:52,732 do i faktycznie kontrola środowisko świat realny. 252 00:11:52,732 --> 00:11:54,940 I jeszcze kilka o nowe zabawki, które posiadamy. 253 00:11:54,940 --> 00:11:59,294 Ten dosłownie przybył drugi dzień pocztą, Myo opaska. 254 00:11:59,294 --> 00:12:01,710 A ja myślałem, że to droga do Ci podekscytowany o projektach 255 00:12:01,710 --> 00:12:03,720 które można używać z ten sprzęt będzie 256 00:12:03,720 --> 00:12:08,900 będzie grać ten krótki klip że używają drażnić ludzi 257 00:12:08,900 --> 00:12:10,500 że mamy teraz żyć w przyszłości. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [MUZYKA GRY] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID MALAN: Tak, w ciągu kilku tygodni, to że może być zbyt chłodno na targach CS50. 262 00:13:37,109 --> 00:13:39,150 Inne urządzenie, które mają kilka, że ​​jesteśmy 263 00:13:39,150 --> 00:13:42,090 chętnie pożyczki na projekty nazywany jest regulator ruchu. 264 00:13:42,090 --> 00:13:45,030 Jest to małe urządzenie USB podłączeniu do komputera 265 00:13:45,030 --> 00:13:47,520 pozwala na interakcję z laptop, Mac lub PC, 266 00:13:47,520 --> 00:13:51,570 jakbyś miał jak Xbox Kinect i rzeczywiście zrobić wiele ruchów fizycznych 267 00:13:51,570 --> 00:13:54,509 jak widzimy, w tym wizja przyszłości. 268 00:13:54,509 --> 00:13:56,505 >> [MUZYKA GRY] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID MALAN: Więc nawet jeśli masz nie wiem, jak coś takiego 271 00:15:06,260 --> 00:15:10,050 mogłoby być wymyślone lub pracy na poziomie sprzętowym, nie ma sprawy. 272 00:15:10,050 --> 00:15:13,520 Nawet po kilku miesiącach CS50, i zrozumienie programowania 273 00:15:13,520 --> 00:15:19,460 bardziej ogólnie, a bardziej programowania WWW niedawno, a następnie także API, i HTTP, 274 00:15:19,460 --> 00:15:21,830 będziesz miał dostęp poprzez API oprogramowania Jeśli 275 00:15:21,830 --> 00:15:24,680 chce pożyczyć jedną z nich Urządzenia do rzeczywiście mówić do niego 276 00:15:24,680 --> 00:15:27,180 i nie trzeba się martwić o realizacja bazowego 277 00:15:27,180 --> 00:15:30,220 Dane, które jest całkowicie Zgodnie z tym pojęciem z warstw 278 00:15:30,220 --> 00:15:33,610 abstrakcja, że ​​mamy widoczne przez cały semestr. 279 00:15:33,610 --> 00:15:37,990 >> Więc także w weekend, widziałem kilka sztuk wiadomości. 280 00:15:37,990 --> 00:15:40,640 Idź pierwszy, przejdź do seminariów czy Ciebie chciałbyś dowiedzieć się czegoś 281 00:15:40,640 --> 00:15:42,160 Więcej na dowolną liczbę tematów. 282 00:15:42,160 --> 00:15:43,340 Zobacz tam URL. 283 00:15:43,340 --> 00:15:45,890 A ten został wysłany do mi przez Changa, który wiesz, 284 00:15:45,890 --> 00:15:47,850 kto drukuje naszą armię słoni. 285 00:15:47,850 --> 00:15:49,910 I to był nagłówek następujący. 286 00:15:49,910 --> 00:15:51,280 Jestem przerażony mojego nowego telewizora. 287 00:15:51,280 --> 00:15:54,301 Dlaczego boję się włączyć ten rzecz na i was byłoby zbyt. 288 00:15:54,301 --> 00:15:56,050 Więc jesteśmy teraz w wskazać w semestrze, 289 00:15:56,050 --> 00:15:58,860 zbyt, gdzie nawet jeśli masz najmniejszego zrozumienia 290 00:15:58,860 --> 00:16:02,620 o tym, jak działa internetowa i HTTP, i bezpieczeństwa, takie rzeczy 291 00:16:02,620 --> 00:16:03,980 powinna zacząć przyciągają wzrok. 292 00:16:03,980 --> 00:16:07,450 Ale także, zrozumiesz czy te rzeczy są, czy nie są 293 00:16:07,450 --> 00:16:08,430 rzeczywiste zagrożenia. 294 00:16:08,430 --> 00:16:10,940 >> Wziąłem więc kilka fragmentów z tego artykułu tutaj. 295 00:16:10,940 --> 00:16:12,540 A historia jest następująca. 296 00:16:12,540 --> 00:16:14,300 Jestem teraz właściciel Nowy Smart TV, który 297 00:16:14,300 --> 00:16:18,470 obiecuje dostarczyć strumieniowe treści multimedialnych, gier, aplikacji, 298 00:16:18,470 --> 00:16:21,450 social media, i internet przeglądania, oh i TV też. 299 00:16:21,450 --> 00:16:24,410 Jedynym problemem jest to, że jestem teraz boi się go użyć, mówi autor. 300 00:16:24,410 --> 00:16:29,592 Użytkownik będzie też, jeśli przeczytać 46 strona polityka prywatności na ekranie telewizora. 301 00:16:29,592 --> 00:16:31,800 Ilość danych tego gromadzi rzeczą jest oszałamiająca. 302 00:16:31,800 --> 00:16:35,710 Rejestruje, gdzie, kiedy, jak i jak długo można korzystać z telewizora. 303 00:16:35,710 --> 00:16:38,190 Określa ona śledzenie plików cookie, jak już wspomniano, 304 00:16:38,190 --> 00:16:40,560 i radiolatarnie przeznaczone do wykrycia, gdy masz 305 00:16:40,560 --> 00:16:43,185 oglądany szczególności treści lub szczególności wiadomość e-mail 306 00:16:43,185 --> 00:16:45,230 jeśli chcesz sprawdzić e-mail na ekranie telewizora. 307 00:16:45,230 --> 00:16:48,430 Rejestruje aplikacje można używać, odwiedzane strony internetowe, 308 00:16:48,430 --> 00:16:52,280 i jak na interakcję z zawartością, robi wszystko to za pośrednictwem Smart TV. 309 00:16:52,280 --> 00:16:55,470 To również, straszniej yet-- to moja addition-- 310 00:16:55,470 --> 00:16:58,140 posiada wbudowany aparat fotograficzny z rozpoznawaniem twarzy. 311 00:16:58,140 --> 00:17:01,010 >> Celem jest zapewnienie Sterowanie gestem do telewizora 312 00:17:01,010 --> 00:17:05,490 i pozwalają, aby zalogować się do indywidualne konto za pomocą twarzy. 313 00:17:05,490 --> 00:17:08,940 Na plus, obrazy są zapisane na telewizorze zamiast dodane 314 00:17:08,940 --> 00:17:09,940 do serwera korporacyjnego. 315 00:17:09,940 --> 00:17:12,520 Na domiar złego, Internet połączenie sprawia, że ​​cały telewizor 316 00:17:12,520 --> 00:17:14,811 narażone na ataki hakerów, którzy wykazują zdolność 317 00:17:14,811 --> 00:17:16,700 aby przejąć całkowitą kontrolę nad maszyną. 318 00:17:16,700 --> 00:17:20,880 >> Bardziej niepokojące, jakby to nie było wystarczająco inteligentny, to mikrofon. 319 00:17:20,880 --> 00:17:23,599 TV posiada głos Funkcja rozpoznawania 320 00:17:23,599 --> 00:17:26,859 że pozwala widzom kontrolować Ekran z poleceń głosowych. 321 00:17:26,859 --> 00:17:30,290 Ale obsługa jest wyposażony raczej złowieszcze ostrzeżenie. 322 00:17:30,290 --> 00:17:33,030 Należy pamiętać, że jeśli Twoje wypowiedziane słowa to 323 00:17:33,030 --> 00:17:36,210 osobiste lub inne wrażliwe informacji, że informacje 324 00:17:36,210 --> 00:17:40,310 będzie jednym z przechwyconych danych i przekazywane osobom trzecim. 325 00:17:40,310 --> 00:17:40,870 Zrozumiano? 326 00:17:40,870 --> 00:17:45,860 Nie mów, osobiste lub ważne rzeczy przed telewizorem. 327 00:17:45,860 --> 00:17:47,280 >> Więc to jest naprawdę na serio. 328 00:17:47,280 --> 00:17:50,530 I trudno nie dostrzec, jeśli Ciebie idź do Best Buy lub jak w przypadku telewizorów 329 00:17:50,530 --> 00:17:51,030 te dni. 330 00:17:51,030 --> 00:17:52,540 Wszystkie są w jakiś sposób inteligentny. 331 00:17:52,540 --> 00:17:54,740 I są one coraz mądrzejszy i straszniej. 332 00:17:54,740 --> 00:17:57,490 A oni po prostu zbieranie danych w taki sposób, że rozmawialiśmy o 333 00:17:57,490 --> 00:18:01,840 a następnie przesłać go za pośrednictwem protokołu HTTP lub jakiś inny protokół do jakiegoś serwera. 334 00:18:01,840 --> 00:18:05,720 >> Więc to było z artykułem zabawy na tej stronie internetowej 335 00:18:05,720 --> 00:18:08,940 tu, który mówił o szczególności błąd lub kod błędzie 336 00:18:08,940 --> 00:18:11,340 że możemy rzeczywiście związać do zeszłotygodniowej dyskusji. 337 00:18:11,340 --> 00:18:15,730 Więc to było jak nagłówek Wynika, historia toczy się tutaj, 338 00:18:15,730 --> 00:18:18,720 Josh Breckman pracował Firma, która dostała kontrakt 339 00:18:18,720 --> 00:18:22,390 rozwinąć zarządzanie treścią System lub CMS, jak są one nazywane, 340 00:18:22,390 --> 00:18:24,380 na dość dużą stronie rządowej. 341 00:18:24,380 --> 00:18:27,300 Znaczna część projektu związanego opracowanie systemu zarządzania treścią 342 00:18:27,300 --> 00:18:29,840 tak, że pracownicy będą w stanie zbudować i utrzymać 343 00:18:29,840 --> 00:18:31,877 ciągle zmieniających się Zawartość na ich stronie. 344 00:18:31,877 --> 00:18:34,210 Poszło całkiem dobrze kilka dni po przejściu na żywo. 345 00:18:34,210 --> 00:18:37,020 Ale na dzień sześć, rzeczy nie poszło tak dobrze. 346 00:18:37,020 --> 00:18:39,500 Wszystkie treści na strona już całkowicie zniknął. 347 00:18:39,500 --> 00:18:42,950 I wszystkie strony doprowadziły do ​​Domyślnie wpisz treść strony. 348 00:18:42,950 --> 00:18:43,810 Ups. 349 00:18:43,810 --> 00:18:46,080 Josh został powołany w celu zbadania i zauważyłem 350 00:18:46,080 --> 00:18:49,390 Szczególnie kłopotliwe, że jeden zewnętrzny adres IP miał 351 00:18:49,390 --> 00:18:53,380 poszedł i usunięte wszystkie Zawartość w systemie. 352 00:18:53,380 --> 00:18:56,290 >> Adres IP nie należał zagranicznych hakerów pewnym zacięciem 353 00:18:56,290 --> 00:18:58,340 zniszczyć pomocne informacje rząd. 354 00:18:58,340 --> 00:19:05,190 To zdecydowane googlebot.com, Własny internetowej pająk indeksowania Google. 355 00:19:05,190 --> 00:19:06,010 Ups. 356 00:19:06,010 --> 00:19:09,150 Po trochę badań i kodowania wokół znaleźć noncorrupt kopii zapasowej, 357 00:19:09,150 --> 00:19:10,180 Josh znaleźć problem. 358 00:19:10,180 --> 00:19:12,700 >> Użytkownik nie kopiowane i wklejony pewne treści z jednego 359 00:19:12,700 --> 00:19:15,670 Strona do drugiego, w tym Edycja hiperłącza 360 00:19:15,670 --> 00:19:17,577 edytować treści na stronie. 361 00:19:17,577 --> 00:19:20,160 Zazwyczaj nie będzie problem, ponieważ użytkownik zewnętrznej 362 00:19:20,160 --> 00:19:24,320 należy wprowadzić nazwę użytkownika i hasło, ale system uwierzytelniania CMS, 363 00:19:24,320 --> 00:19:27,520 system logowania, nie bierze pod uwagę 364 00:19:27,520 --> 00:19:30,980 wyrafinowane hacking Techniki Google Pająk. 365 00:19:30,980 --> 00:19:31,700 Ups. 366 00:19:31,700 --> 00:19:33,610 >> Jak się okazuje, Google Spider nie używa 367 00:19:33,610 --> 00:19:36,950 cookies, co oznacza, że ​​może łatwo ominąć czek na 368 00:19:36,950 --> 00:19:39,840 jest zalogowany zestawu cookies się fałszywe. 369 00:19:39,840 --> 00:19:42,620 To również nie zwrócić uwagę na JavaScript, które normalnie 370 00:19:42,620 --> 00:19:45,170 monitować i przekierowywać użytkowników kto nie jest zalogowany. 371 00:19:45,170 --> 00:19:48,610 Uważa jednak śledzić każdy hiperłącze na każdej stronie, stwierdzi, 372 00:19:48,610 --> 00:19:51,700 w tym z Usuń stronę w tytule. 373 00:19:51,700 --> 00:19:52,650 Ups. 374 00:19:52,650 --> 00:19:56,070 >> Więc co to oznacza w więcej warunki techniczne, ale dość dostępne? 375 00:19:56,070 --> 00:19:58,340 To po prostu oznacza, że w całej swojej stronie internetowej, 376 00:19:58,340 --> 00:20:02,287 URL nie mieli tego jednego, że w przeciwieństwie do może pojawić się problem, ustawić siedem. 377 00:20:02,287 --> 00:20:04,620 Przypomnijmy w problemu ustawić siedem lub wiedzieć problemu ustawić siedem 378 00:20:04,620 --> 00:20:06,411 że jesteś kwestionowane, między innymi 379 00:20:06,411 --> 00:20:08,570 do sprzedaży akcji w imieniu użytkowników. 380 00:20:08,570 --> 00:20:14,010 Ale wdrożenie tej funkcji w drodze z się poprzez hiperłącza w swojej użytkownika 381 00:20:14,010 --> 00:20:16,880 Interfejs, prawdopodobnie nie najmądrzejszy pomysł 382 00:20:16,880 --> 00:20:20,300 ponieważ jeśli witryna jest w jakiś sposób dostępne, albo przez człowieka 383 00:20:20,300 --> 00:20:23,577 kto klikając wokół lub kupić bot jak Google czy Spider 384 00:20:23,577 --> 00:20:26,160 jak nazywa się to tylko indeksowania internetu próbuje indeksu 385 00:20:26,160 --> 00:20:29,060 WWW w wyszukiwarce, mogli bardzo łatwo 386 00:20:29,060 --> 00:20:31,340 uderzyć poprzez uzyskać tego rodzaju URL. 387 00:20:31,340 --> 00:20:33,770 I to jest funkcjonalnie odpowiednik, w tym przypadku, 388 00:20:33,770 --> 00:20:37,000 sprzedaży wszystkich akcji Google. 389 00:20:37,000 --> 00:20:40,030 >> Teraz szczerze mówiąc, jest to całkowicie głupi, że CMS 390 00:20:40,030 --> 00:20:43,240 Używane JavaScript i pliki cookie wdrożyć swój system logowania 391 00:20:43,240 --> 00:20:47,100 i nie robi tego po stronie serwera, jak robicie i będzie w Pset 7-- 392 00:20:47,100 --> 00:20:49,940 tam login.php file-- zawsze, zawsze, 393 00:20:49,940 --> 00:20:52,789 Bezpieczeństwo powinno być zawsze wykonane na stronie serwera 394 00:20:52,789 --> 00:20:56,080 Nie po stronie klienta, ponieważ, jak to Artykuł sugeruje, a może się 395 00:20:56,080 --> 00:20:59,600 zobaczyć, w pewnym momencie, to jest trywialne dla użytkownika, dobre lub złe, 396 00:20:59,600 --> 00:21:02,860 po prostu wyłączyć JavaScript nie wspominając o cookie. 397 00:21:02,860 --> 00:21:06,020 Więc to jest dzienny WTF. 398 00:21:06,020 --> 00:21:07,970 >> Jest jeszcze jedna, która jest tylko trochę przerażające, 399 00:21:07,970 --> 00:21:11,360 więc będę wspominać, gdyby tylko jako lekcja życia. 400 00:21:11,360 --> 00:21:14,850 Każdym użyciu aplikacji nazywa jak Snapchat lub podobne 401 00:21:14,850 --> 00:21:19,380 które mówi, że te zdjęcia tylko przez pięć sekund, dziesięć sekund, lub cokolwiek. 402 00:21:19,380 --> 00:21:21,680 Są ulotne To absolutnie nie w tym przypadku. 403 00:21:21,680 --> 00:21:25,670 Podobnie jak nie ma sposobu, cyfrowo, wdrożyć jakąś formę wideo, 404 00:21:25,670 --> 00:21:30,150 lub obrazu, lub udostępnianie takich tekstowe że odbiorca na drugim końcu 405 00:21:30,150 --> 00:21:31,660 nie można jakoś zapisać dane. 406 00:21:31,660 --> 00:21:34,300 >> W najbardziej naiwny sposób, ktoś może wziąć swój telefon. 407 00:21:34,300 --> 00:21:36,850 I mają drugie okno 10 patrząc na jakiś zatrzask 408 00:21:36,850 --> 00:21:39,410 po prostu wziąć jakiś inny telefon i sfotografować go, oczywiście. 409 00:21:39,410 --> 00:21:41,660 Tak więc można zachować coś cyfrowo w taki sposób. 410 00:21:41,660 --> 00:21:44,620 Niektórzy z was wiedzą, jak zrobić zrzuty ekranu w telefonie. 411 00:21:44,620 --> 00:21:49,290 W rzeczywistości, jeśli nie wiedzą o tym, sobie sprawę, że co najmniej Snapchat, 412 00:21:49,290 --> 00:21:51,040 i myślę, że inne Aplikacje te dni, 413 00:21:51,040 --> 00:21:53,720 przynajmniej powiedzieć, czy odbiorca ma rzeczywiście 414 00:21:53,720 --> 00:21:55,310 podjąć zrzut obrazu. 415 00:21:55,310 --> 00:22:00,870 >> Ale co gorsza, był to snappening, jak ktoś użył go niedawno, 416 00:22:00,870 --> 00:22:04,680 gdzie 100,000 zatrzaskami został zwolniony 417 00:22:04,680 --> 00:22:09,310 w tym, co nazywa się plik torrent na różnych stronach internetowych ostatecznie. 418 00:22:09,310 --> 00:22:12,000 A te zawierały całą masę prywatnych wiadomości i postów. 419 00:22:12,000 --> 00:22:15,210 Okazuje się, że większość z nich łagodne, tak, nie to, co można się spodziewać. 420 00:22:15,210 --> 00:22:17,580 Ale ponieważ ludzie mieli używane na stronie internetowej strony trzeciej, 421 00:22:17,580 --> 00:22:20,270 zalogowaniu z ich Snapchat nazwa użytkownika i hasło, a następnie 422 00:22:20,270 --> 00:22:23,470 zapisywanie wszystkich swoich zatrzaskami na tej stronie przez osoby trzecie. 423 00:22:23,470 --> 00:22:26,130 I to było to, że osoba trzecia stronie internetowej, że włamał, 424 00:22:26,130 --> 00:22:30,710 które po prostu oznaczało, zorientowali się, jak ktoś uzyskać wszystkie 100.000 plusa tych obrazów 425 00:22:30,710 --> 00:22:33,822 na własnym dysku twardym do późniejszej wymiany. 426 00:22:33,822 --> 00:22:36,030 Szczerze mówiąc, tu też jest to rodzaj z asinine że Snapchat 427 00:22:36,030 --> 00:22:39,360 jest realizowany w taki sposób, że strona trzecia może rozwiązać z osią 428 00:22:39,360 --> 00:22:43,310 dane i że nie jest przywiązany do swojej Aplikacja działa na własnym telefonie. 429 00:22:43,310 --> 00:22:46,947 Ale tu też sobie sprawę, że te rzeczy nie powinno się złapać z zaskoczenia, 430 00:22:46,947 --> 00:22:49,030 lub przynajmniej nie powinny być lekcją życia tutaj. 431 00:22:49,030 --> 00:22:52,220 Jeśli chcesz techniczne szczegółowe informacje, przejdź do tego adresu URL nie 432 00:22:52,220 --> 00:22:53,570 to w dzisiejszych slajdów. 433 00:22:53,570 --> 00:23:00,960 Wszystko w porządku, wszelkie pytania dotyczące dzisiejsze lekcje życia w CS? 434 00:23:00,960 --> 00:23:02,710 Wyłącz to. 435 00:23:02,710 --> 00:23:04,970 Coś w ogóle? 436 00:23:04,970 --> 00:23:06,301 Coś w ogóle? 437 00:23:06,301 --> 00:23:09,050 Mam dużo ludzi sprawdzanie ich Snapchat czy coś teraz. 438 00:23:09,050 --> 00:23:11,690 >> W porządku, więc SQL, Structured Query Language. 439 00:23:11,690 --> 00:23:12,509 Miejmy owinąć to. 440 00:23:12,509 --> 00:23:14,300 A także, choć jesteśmy tylko zarysowania 441 00:23:14,300 --> 00:23:16,310 Powierzchnia tego język, podamy 442 00:23:16,310 --> 00:23:18,930 dość języku w postaci PSET 7 443 00:23:18,930 --> 00:23:22,140 tak, że można rozwiązać niektóre dość powszechne funkcjonalność. 444 00:23:22,140 --> 00:23:24,912 Ale sobie sprawę, istnieje kilka rzeczy, które nie wymagają od Ciebie, 445 00:23:24,912 --> 00:23:27,120 ale masz zamiar być ważne przyjść projekty końcowe 446 00:23:27,120 --> 00:23:30,760 a na pewno przyjdzie co rzeczywiste stron internetowych z rzeczywistych użytkowników 447 00:23:30,760 --> 00:23:32,040 jest to decyzja projektu. 448 00:23:32,040 --> 00:23:34,460 >> Okazuje się, że w bazy danych MySQL, można 449 00:23:34,460 --> 00:23:37,460 mają wyboru, jak bukiety typy danych w kolumnach 450 00:23:37,460 --> 00:23:41,670 i inne rzeczy, ale również Wybór tak zwanego składowania 451 00:23:41,670 --> 00:23:44,570 Silnik do wszystkich danych, rodzaj systemu plików, 452 00:23:44,570 --> 00:23:46,700 jeśli znasz, dla wszystkich danych. 453 00:23:46,700 --> 00:23:48,830 W jakim formacie jest zapisany w końcu? 454 00:23:48,830 --> 00:23:53,300 I najczęściej, być może, jest MyISAM i InnoDB, warunki techniczne 455 00:23:53,300 --> 00:23:56,060 że będziemy dbać o tylko w takim stopniu, że trzeba 456 00:23:56,060 --> 00:23:58,500 i nie ma Poniższa funkcja. 457 00:23:58,500 --> 00:24:00,390 >> Załóżmy, że masz mały akademik lodówka. 458 00:24:00,390 --> 00:24:03,030 I przypuszczam, że ty i twój współlokator, którzy dzielą tę lodówkę, 459 00:24:03,030 --> 00:24:04,682 są naprawdę lubi mleka powiedzieć. 460 00:24:04,682 --> 00:24:07,140 I to, w rzeczywistości, w jaki historia powiedziano mi w drodze powrotnej 461 00:24:07,140 --> 00:24:10,890 w dniu, kiedy się na kurs nazwie CS 161 Systemy operacyjne, które 462 00:24:10,890 --> 00:24:12,580 podobnie bada ten wątek. 463 00:24:12,580 --> 00:24:13,760 Więc masz to lodówka. 464 00:24:13,760 --> 00:24:14,630 Jesteś z mlekiem. 465 00:24:14,630 --> 00:24:17,000 I wrócić do domu, twój współlokator na jeszcze w klasie lub cokolwiek, 466 00:24:17,000 --> 00:24:19,208 i zdecydować, zamierzam wyjść i trochę mleka. 467 00:24:19,208 --> 00:24:22,630 Więc zamknąć lodówkę, zablokowanie pokój w akademiku, przejść przez ulicę 468 00:24:22,630 --> 00:24:25,330 CVS lub gdziekolwiek i uzyskać w kolejce, aby kupić mleko. 469 00:24:25,330 --> 00:24:28,960 >> Tymczasem twój współlokator wróci do domu z klasy, dostaje się do pokoju w akademiku, 470 00:24:28,960 --> 00:24:31,802 otwiera lodówkę, również zdaje sobie sprawę, ooph, jesteśmy z mlekiem. 471 00:24:31,802 --> 00:24:33,760 Więc on zamyka lodówka i wtedy się dzieje 472 00:24:33,760 --> 00:24:35,610 aby przejść do innego CVS, co zdarza się 473 00:24:35,610 --> 00:24:38,470 jedną przecznicę od innych CVS na placu, i dostaje w linii 474 00:24:38,470 --> 00:24:40,230 tam po mleko. 475 00:24:40,230 --> 00:24:42,524 Teraz, oczywiście, kilka minut później, jak wrócę, 476 00:24:42,524 --> 00:24:44,690 i najgorsze możliwe Wyniki stało. 477 00:24:44,690 --> 00:24:45,792 Oboje mają mleko. 478 00:24:45,792 --> 00:24:47,500 I tak naprawdę nie jak mleko, że dużo. 479 00:24:47,500 --> 00:24:49,625 Tak więc jednym z nich jest po prostu dzieje się psuć w pewnym momencie. 480 00:24:49,625 --> 00:24:55,941 Więc teraz mają nadmiernie mleka w lodówce wszystko dlatego, dlaczego? 481 00:24:55,941 --> 00:24:57,072 >> [Niesłyszalne] 482 00:24:57,072 --> 00:24:59,780 DAVID MALAN: Tak, nie jakiś ze sobą komunikować 483 00:24:59,780 --> 00:25:00,904 że były coraz mleko. 484 00:25:00,904 --> 00:25:04,320 Zatem w najprostszym sposoby, w świecie ludzi, 485 00:25:04,320 --> 00:25:08,390 jak można tego uniknąć głupie taki scenariusz dzieje 486 00:25:08,390 --> 00:25:09,750 że tylko skończy się jeden. 487 00:25:09,750 --> 00:25:10,840 Tekst je tak dobrze. 488 00:25:10,840 --> 00:25:12,877 Ale jak inaczej? 489 00:25:12,877 --> 00:25:13,460 Post-it. 490 00:25:13,460 --> 00:25:14,626 DAVID MALAN: Post-it notatki. 491 00:25:14,626 --> 00:25:17,150 Każda forma komunikacji że opowiada swoją współlokatorkę 492 00:25:17,150 --> 00:25:18,670 nie idź do lodówki do mleka. 493 00:25:18,670 --> 00:25:20,440 Mam zamiar iść uzupełniania zapasów na własną rękę. 494 00:25:20,440 --> 00:25:22,770 Więc jakoś trzeba aby zablokować tę część witryny. 495 00:25:22,770 --> 00:25:27,180 Więc możemy this-- możemy rodzaju zrujnować historię i przekształcić się w historii CS 496 00:25:27,180 --> 00:25:30,360 przy czym myśleć o tym, jak po prostu jak zmienny, który przechowuje pewną wartość. 497 00:25:30,360 --> 00:25:32,570 I właśnie teraz, Wartość mleka jest zero, 498 00:25:32,570 --> 00:25:35,410 które nie chcą się współlokatorka do kontroli tej zmiennej 499 00:25:35,410 --> 00:25:38,730 a następnie podjąć decyzję, czy się go na podstawie stanu zmiennej 500 00:25:38,730 --> 00:25:42,430 jeśli jesteś w trakcie zmiana stanu tej zmiennej. 501 00:25:42,430 --> 00:25:46,140 >> Tak więc jednym z wierszy, że SQL dać w Pset 7 specyfikacji 502 00:25:46,140 --> 00:25:47,310 Jest to jeden tutaj. 503 00:25:47,310 --> 00:25:49,740 A my nie wydawać ogromne czas o tym mówić. 504 00:25:49,740 --> 00:25:55,100 Ale okazuje się, jeśli próbujesz kupić trochę akcji w CS50 finansów 505 00:25:55,100 --> 00:25:58,000 że masz już niektóre akcje, ciebie 506 00:25:58,000 --> 00:26:01,750 chcesz być w stanie zrobić wiele rzeczy tam razem. 507 00:26:01,750 --> 00:26:04,360 Chcesz być w stanie faktycznie na wysokim poziomie 508 00:26:04,360 --> 00:26:06,700 sprawdzić wszelkie prawa, jeśli chcę kupić więcej akcji bezpłatnych, 509 00:26:06,700 --> 00:26:08,780 mamy grosza rozmawiać w specyfikacji, 510 00:26:08,780 --> 00:26:10,660 Chcę pierwszej kontroli ile akcji mam. 511 00:26:10,660 --> 00:26:11,810 I przypuszczam, że to pięć. 512 00:26:11,810 --> 00:26:14,600 I przypuśćmy, że chcę kupić 10 więcej, ostatecznie 513 00:26:14,600 --> 00:26:17,069 chce mieć 15 akcji zapasów. 514 00:26:17,069 --> 00:26:18,360 Więc muszę zadać dwa pytania. 515 00:26:18,360 --> 00:26:20,230 Co Stan zmiennej? 516 00:26:20,230 --> 00:26:21,470 Co znajduje się w wierszu stanu? 517 00:26:21,470 --> 00:26:22,970 Ile akcji mogę obecnie? 518 00:26:22,970 --> 00:26:24,636 Następnie chcesz iść do przodu i go zaktualizować. 519 00:26:24,636 --> 00:26:27,720 Więc to analogowo mleko w sprawdzenie wiersz, 520 00:26:27,720 --> 00:26:30,730 i chcesz go uaktualnić bo jeśli chcesz kupić 10 akcji 521 00:26:30,730 --> 00:26:32,521 nie chcesz, aby zmienić wiersz 10, można 522 00:26:32,521 --> 00:26:35,300 chce go zmienić na 5 plus 10 lub, oczywiście, 15. 523 00:26:35,300 --> 00:26:40,030 >> Ta linia kodu zapewnia, że te dwa pomysły koncepcyjne 524 00:26:40,030 --> 00:26:42,810 stało razem albo wcale. 525 00:26:42,810 --> 00:26:46,920 Nikt, łącznie z innym użytkownikiem kto jest zalogowany na tej samej stronie internetowej, 526 00:26:46,920 --> 00:26:49,900 można jakoś przerwać sprawdzanie rzędu 527 00:26:49,900 --> 00:26:52,960 i aktualizowanie rzędu wybrać i aktualizacji, jeśli będzie. 528 00:26:52,960 --> 00:26:57,360 I składnia nie jest super oczywiste, ale ten wiersz, to jest długa, 529 00:26:57,360 --> 00:27:01,150 zapewnia, że ​​te dwie operacje sprawdzić zmienną lub sprawdzić wiersz 530 00:27:01,150 --> 00:27:04,660 i zaktualizować wiersz zdarzyć atomowo. 531 00:27:04,660 --> 00:27:06,849 >> Och, znowu to samo. 532 00:27:06,849 --> 00:27:07,890 Wiadomość SMS na mój telefon. 533 00:27:07,890 --> 00:27:09,954 Warto więc zrobić to trochę bardziej konkretne. 534 00:27:09,954 --> 00:27:12,120 Załóżmy, że nie jesteś realizacji lodówkę, 535 00:27:12,120 --> 00:27:16,400 i nie masz realizacji Pset 7 ale rzeczywisty bank, 536 00:27:16,400 --> 00:27:20,000 lub ATM Automated Teller Maszyna, której cię jakoś 537 00:27:20,000 --> 00:27:22,960 chcesz być w stanie wzmocnić użytkowników, aby przelać pieniądze 538 00:27:22,960 --> 00:27:24,500 z jednego rachunku na inny. 539 00:27:24,500 --> 00:27:25,100 OK, poczekaj. 540 00:27:25,100 --> 00:27:26,683 Mam zamiar wyciszyć to teraz, dziękuję. 541 00:27:26,683 --> 00:27:30,450 Dlatego chcemy, aby przenieść pieniądze z jednym numerem rachunku 542 00:27:30,450 --> 00:27:33,600 do innego konta liczba, szczególnie 100 dolarów. 543 00:27:33,600 --> 00:27:37,690 Jest to więc rodzaj arbitralne Przykładem, w którym jesteś, bankomat, 544 00:27:37,690 --> 00:27:41,060 Może chcesz wykonać dwa SQL Zapytania, odejmowanie z jednego konta, 545 00:27:41,060 --> 00:27:42,430 i dodać do innego konta. 546 00:27:42,430 --> 00:27:46,766 Ale chcesz mieć pewność, że te dwie linie zarówno zdarzyć lub wcale. 547 00:27:46,766 --> 00:27:48,640 Nie chcesz coś coraz przerwany. 548 00:27:48,640 --> 00:27:51,440 Nie masz jakiś sprytny zły jakoś stoi w Bank of America 549 00:27:51,440 --> 00:27:53,270 z dwóch bankomatów w przód o nim i jakoś 550 00:27:53,270 --> 00:27:55,270 rodzaj wpisując Polecenia w tym samym czasie, 551 00:27:55,270 --> 00:28:01,230 mam nadzieję, że próbuje do odliczenia 200 dolarów zamiast od $ 100 i tylko o 100 dolarów przelane. 552 00:28:01,230 --> 00:28:04,450 W skrócie, chcesz tego, aby zachowywać się dokładnie tak, jak można się spodziewać. 553 00:28:04,450 --> 00:28:06,540 >> I sposób zrobić Ta baza danych jest w SQL 554 00:28:06,540 --> 00:28:09,350 zawinąć go w co nazywa transakcji. 555 00:28:09,350 --> 00:28:14,290 Dosłownie w SQL, możesz zadzwonić CS50 na Funkcja zapytania z cytatu początku 556 00:28:14,290 --> 00:28:15,370 transakcji. 557 00:28:15,370 --> 00:28:18,640 Następnie można wykonać dowolną liczbę kolejnych zapytań SQL, 558 00:28:18,640 --> 00:28:20,870 ale żaden z nich wziąć Wpływ na bazie danych 559 00:28:20,870 --> 00:28:25,880 do czasu wywołania zapytania cytatu popełnić, jeśli ponownie PHP. 560 00:28:25,880 --> 00:28:29,810 I w ten sposób można zapewnić, że nawet jeśli masz tysiące użytkowników wszystkich 561 00:28:29,810 --> 00:28:32,080 uderzanie bazy danych w tym samym czasie, SQL 562 00:28:32,080 --> 00:28:34,540 Obiecuję, że to będzie Zapytania będą dwa 563 00:28:34,540 --> 00:28:36,740 realizowane jeden po drugim. 564 00:28:36,740 --> 00:28:40,330 Więc nie kończy się z nadmiarem mleko lub źle kwota ostatecznie 565 00:28:40,330 --> 00:28:40,830 pieniędzy. 566 00:28:40,830 --> 00:28:43,110 >> Dlatego należy mieć to na uwadze, nie tyle dla Pset 7 567 00:28:43,110 --> 00:28:45,250 ale dla projektów końcowych jeśli jesteś naprawdę 568 00:28:45,250 --> 00:28:49,690 próbuje przenieść dane ok w całej tabeli, jak to polubisz tutaj. 569 00:28:49,690 --> 00:28:53,980 Ale może jeszcze prostsze i bardziej oczywiste, aby zrozumieć na przykładzie 570 00:28:53,980 --> 00:28:54,860 Jest to jeden tutaj. 571 00:28:54,860 --> 00:28:57,760 I ktoś nam o maila to po prostu na drugi dzień 572 00:28:57,760 --> 00:28:59,600 kiedy zobaczył coś podobnego w Internecie. 573 00:28:59,600 --> 00:29:03,480 >> Tak więc do mojej wiedzy, system pin nie jest podatny na ten atak. 574 00:29:03,480 --> 00:29:06,637 I nie mam pojęcia, czy to jeszcze zastosowania Baza danych SQL pod wyciągiem. 575 00:29:06,637 --> 00:29:08,470 Ale użyjmy go do sake dyskusji. 576 00:29:08,470 --> 00:29:10,178 Oto ekran Ludzie mają tendencję Harvard 577 00:29:10,178 --> 00:29:13,620 zobaczyć podczas logowania z ich Numer ID i ich Harvard pin. 578 00:29:13,620 --> 00:29:19,020 I przypuszczam, że system pin były wdrażane w PHP i MySQL z 579 00:29:19,020 --> 00:29:22,000 baza danych, kod, który ktoś mogło pisemne lat temu 580 00:29:22,000 --> 00:29:23,270 może wyglądać tak. 581 00:29:23,270 --> 00:29:25,230 Najpierw zadeklarować zmienna o nazwie nazwa. 582 00:29:25,230 --> 00:29:27,560 I po prostu, że od superglobalną POST. 583 00:29:27,560 --> 00:29:30,140 Zapraszamy zatem do innej zmiennej nazywa hasło i zrobić to samo. 584 00:29:30,140 --> 00:29:33,080 A potem po prostu wykonać zapytanie tutaj tak długo, 585 00:29:33,080 --> 00:29:36,690 wybierz z użytkowników gdzie gwiazda nazwa użytkownika odpowiada taki a taki 586 00:29:36,690 --> 00:29:38,510 i hasło równa taki a taki. 587 00:29:38,510 --> 00:29:40,660 >> Zauważ, że kręcone szelki Użyłem tutaj 588 00:29:40,660 --> 00:29:42,880 oznacza jedynie do PHP, przejdź dalej i zastąpić 589 00:29:42,880 --> 00:29:45,400 Wartość tych dwóch zmienne tam. 590 00:29:45,400 --> 00:29:50,090 Oni nie są bezwzględnie konieczne, ale mają tendencję, aby uniknąć subtelnych błędów składni. 591 00:29:50,090 --> 00:29:53,650 Tak to wygląda w całości Na pierwszy rzut oka poprawne. 592 00:29:53,650 --> 00:29:54,240 I to jest. 593 00:29:54,240 --> 00:29:56,680 Można wdrożyć Układ pinów w ten sposób. 594 00:29:56,680 --> 00:30:00,460 >> Ale załóżmy, że super inteligentny i złośliwy uczeń 595 00:30:00,460 --> 00:30:03,020 Wejście to jako jego pin. 596 00:30:03,020 --> 00:30:05,550 Więc usunęliśmy kulę Znaki tutaj w makiety, 597 00:30:05,550 --> 00:30:08,760 a ja rzeczywiście objawił co może być on pisania. 598 00:30:08,760 --> 00:30:10,350 I to jest trochę dziwne. 599 00:30:10,350 --> 00:30:13,850 Ale to, co wyskakuje na ciebie na potencjalnie niepokojące o wejściu użytkownika, 600 00:30:13,850 --> 00:30:16,450 nawet jeśli nie masz pojęcia, co Atak SQL injection oznacza. 601 00:30:16,450 --> 00:30:20,300 Dlaczego to wygląda trochę podejrzane? 602 00:30:20,300 --> 00:30:21,050 Co to jest? 603 00:30:21,050 --> 00:30:21,550 [Niesłyszalne] 604 00:30:21,550 --> 00:30:24,260 DAVID MALAN: czy jest trochę podejrzane. 605 00:30:24,260 --> 00:30:26,310 W rzeczywistości, to jest kluczowe z SQL. 606 00:30:26,310 --> 00:30:28,105 Tak, że nie wróży dobrze. 607 00:30:28,105 --> 00:30:29,980 Fakt, że nie ma wszystkie te pojedyncze cudzysłowy 608 00:30:29,980 --> 00:30:32,646 there-- w rzeczywistości, jeden z najłatwiej sposoby złamać kilka baz danych 609 00:30:32,646 --> 00:30:35,880 to wpisując w nazwie typu O'Reilly że ma w nim apostrof 610 00:30:35,880 --> 00:30:38,600 bo jeśli człowiek, który napisał Kod za kulisami 611 00:30:38,600 --> 00:30:41,570 nie bierze pod uwagę, że nie mogą być pojedyncze cudzysłowy w użytkownika 612 00:30:41,570 --> 00:30:45,060 wejście, a on lub ona jest za pomocą pojedyncze cudzysłowy w ich kodu, 613 00:30:45,060 --> 00:30:46,040 złe rzeczy mogą się zdarzyć. 614 00:30:46,040 --> 00:30:47,870 >> W rzeczywistości, co gorsza, za to. 615 00:30:47,870 --> 00:30:50,600 Jeśli to był kolejny kod że ktoś w latach Harvard 616 00:30:50,600 --> 00:30:53,100 temu napisał na kołku System, zauważyć co 617 00:30:53,100 --> 00:30:56,220 o, aby podstawione dla nazwy użytkownika i hasła 618 00:30:56,220 --> 00:30:59,780 jeśli użytkownik wpisze ponownie skroob jak nazwy użytkownika 619 00:30:59,780 --> 00:31:03,960 i jeden, dwa, trzy, cztery, pięć, cytat lub cytatu jeden równa 620 00:31:03,960 --> 00:31:04,660 Cytując jednego. 621 00:31:04,660 --> 00:31:07,220 I zauważyć, co jest kluczem tutaj jest użytkownik nie 622 00:31:07,220 --> 00:31:09,900 zaczął ich hasło lub ich pin z cytatem. 623 00:31:09,900 --> 00:31:12,610 A oni go nie zakończył z cytatu, ponieważ on lub ona 624 00:31:12,610 --> 00:31:16,315 przy założeniu, że w przypadku programista nie był tak ostry, 625 00:31:16,315 --> 00:31:18,690 oni będą mieć ci, pojedyncze cudzysłowy w ich kodzie. 626 00:31:18,690 --> 00:31:19,860 >> Więc oto kod. 627 00:31:19,860 --> 00:31:23,820 I podstawienia Może teraz to się stało. 628 00:31:23,820 --> 00:31:26,350 I podkreślił, co mam Filmaster wpisane. 629 00:31:26,350 --> 00:31:28,480 Tak przed, po. 630 00:31:28,480 --> 00:31:33,330 I zauważyć, co jest lekko niepokojące teraz o prawej połowie tego kodu SQL? 631 00:31:33,330 --> 00:31:36,300 To trochę bardziej skomplikowane, co prawda, niż zapytań widzieliśmy. 632 00:31:36,300 --> 00:31:38,550 Ale to nie może być może być dobre, jeśli jesteś 633 00:31:38,550 --> 00:31:42,240 mówiąc: wybierz gwiazdę, która jest wybrać wszystko z tabeli użytkownika 634 00:31:42,240 --> 00:31:46,630 gdzie nazwa_użytkownika odpowiada skroob i hasło jest równy jeden, dwa, trzy, cztery, 635 00:31:46,630 --> 00:31:49,610 pięć lub jeden równa się jeden. 636 00:31:49,610 --> 00:31:53,860 Co logiczne implikacje tej ostatniej klauzuli przypuszczalnie? 637 00:31:53,860 --> 00:31:55,650 To jest po prostu zawsze prawdziwe. 638 00:31:55,650 --> 00:31:59,930 >> I dlatego, że jakby odgadł lub zorientowali się, metodą prób i błędów 639 00:31:59,930 --> 00:32:02,760 że programista, który napisał ten kod nie 640 00:32:02,760 --> 00:32:07,250 Przewidujemy osobę ludzką lub złe wpisując w pojedynczych cudzysłowach, jak również, 641 00:32:07,250 --> 00:32:10,350 możemy składniowo wykonać zapytanie SQL 642 00:32:10,350 --> 00:32:12,260 z czymś bezsensownym ale coś, co 643 00:32:12,260 --> 00:32:15,930 jest niepoprawne składniowo że zawsze wartość true. 644 00:32:15,930 --> 00:32:19,130 Więc jeśli ten kod jest używany, aby odpowiedzieć Pytanie powinno prawda lub fałsz 645 00:32:19,130 --> 00:32:22,930 użytkownik może przechodzić, Odpowiedź jest zawsze najwyraźniej dzieje 646 00:32:22,930 --> 00:32:26,930 aby mogło być prawdziwe, bo to zawsze będzie aby wybrać coś z bazy danych 647 00:32:26,930 --> 00:32:29,280 ponieważ jeden oczywiście zawsze równa się jeden. 648 00:32:29,280 --> 00:32:30,360 >> Więc co to jest rozwiązanie? 649 00:32:30,360 --> 00:32:33,290 Cóż w Pset 7, faktycznie uniknąć tego wszystkiego razem. 650 00:32:33,290 --> 00:32:37,360 Dajemy Ci funkcję zapytania, a my zachęcamy do korzystania z znaki zapytania 651 00:32:37,360 --> 00:32:40,430 jako zastępcze, podobne w duchu do printf w% s, 652 00:32:40,430 --> 00:32:43,710 ale co jest kluczem o znaki zapytania tutaj jest, jeśli rzeczywiście przeczytać 653 00:32:43,710 --> 00:32:46,950 functions.php, gdzie nasze Funkcja zapytanie jest realizowane, 654 00:32:46,950 --> 00:32:52,780 te znaki zapytania są uciekł, w którym coś potencjalnie niebezpieczne 655 00:32:52,780 --> 00:32:58,210 jak apostrof jest włączony do zbiegłego jednego cytatu. 656 00:32:58,210 --> 00:33:00,590 >> Więc to, co jest naprawdę się dzieje, jeśli Ciebie 657 00:33:00,590 --> 00:33:04,850 użyć funkcji zapytań CS50 lub każdą liczbę od osób trzecich wolnych bibliotek 658 00:33:04,850 --> 00:33:06,000 zrobić to samo. 659 00:33:06,000 --> 00:33:09,850 Nie ma znaczenia w tym przypadku, w kolorze zielonym, jeśli użytkownik wpisane w jednym cytatem 660 00:33:09,850 --> 00:33:12,070 ponieważ zapytania funkcja pisaliśmy jest 661 00:33:12,070 --> 00:33:15,120 zamiar dodać backslashy przed takie niebezpieczne cytat. 662 00:33:15,120 --> 00:33:17,360 Więc to nie jest w Fakt, będzie legit. 663 00:33:17,360 --> 00:33:20,910 To jest jak pisanie w szalony szuka Hasło to jest, oczywiście, nie będzie 664 00:33:20,910 --> 00:33:23,490 być rzeczywisty hasło skroob jest. 665 00:33:23,490 --> 00:33:28,260 >> Więc na wynos dla CS50 jest jeden, Zawsze używać coś absolutnie 666 00:33:28,260 --> 00:33:30,860 jak w funkcji zapytania CS50 lub podstawowa biblioteka, 667 00:33:30,860 --> 00:33:32,560 co zdarza się nazywać PDO. 668 00:33:32,560 --> 00:33:35,880 Ale nigdy, nigdy, nigdy tak nie kod 669 00:33:35,880 --> 00:33:39,472 bez ucieczki lub szorowanie jak mówią wasze wejścia. 670 00:33:39,472 --> 00:33:42,430 I w pewnym momencie będzie prawdopodobnie natknąć się strony jak ta. 671 00:33:42,430 --> 00:33:46,060 W rzeczywistości wydaje się, że przypadek jak na lotniskach i hotelach w miejscach 672 00:33:46,060 --> 00:33:48,880 gdzie mają bezpłatny bezprzewodowy dostęp do Internetu dostępu, który musiał się zalogować, aby, 673 00:33:48,880 --> 00:33:51,010 strony te są zawsze strasznie realizowane. 674 00:33:51,010 --> 00:33:55,680 I tak rodzaj zabawy w domu ćwiczenia, nie do szkodliwych celów lub więcej 675 00:33:55,680 --> 00:33:59,170 z zabawy na drodze ćwiczenia, to po prostu wpisz 676 00:33:59,170 --> 00:34:02,850 apostrof, apostrof, w formularzu na jakimś stronie 677 00:34:02,850 --> 00:34:03,810 i zobaczyć co się dzieje. 678 00:34:03,810 --> 00:34:06,660 A jeśli serwer wywala lub daje masz jakiś komunikat o błędzie, 679 00:34:06,660 --> 00:34:09,690 może być bardzo dobrze, że ktoś nie przewidział tego. 680 00:34:09,690 --> 00:34:15,239 I wtedy należy powiadomić właściwe Władze i przejdź dalej. 681 00:34:15,239 --> 00:34:20,843 >> Więc teraz mam nadzieję, że chłopaki powinni zrozumieć trochę więcej maniakiem humoru tutaj. 682 00:34:20,843 --> 00:34:24,120 >> [Śmiech] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID MALAN: Wiesz, że jesteś maniakiem. 685 00:34:29,070 --> 00:34:30,944 Przez kilka następnych lat, będziesz pamiętać 686 00:34:30,944 --> 00:34:33,520 który jest mało Bobby Stoły z powodu tej kreskówki tutaj. 687 00:34:33,520 --> 00:34:36,760 Miejcie to na uwadze, jak my przełączanie kontekstu raz ostatni 688 00:34:36,760 --> 00:34:38,770 dzisiaj do JavaScript. 689 00:34:38,770 --> 00:34:41,600 Spędziliśmy stosunkowo niewiele Czas na składni PHP 690 00:34:41,600 --> 00:34:43,440 bo to rzeczywiście bardzo podobny do C 691 00:34:43,440 --> 00:34:47,300 I na tyle dobrze, JavaScript zbyt jest bardzo podobna do składni C w 692 00:34:47,300 --> 00:34:49,639 jak zobaczymy w tylko chwila i jak my będziemy 693 00:34:49,639 --> 00:34:51,205 zobaczyć jeszcze w tym tygodniu w szczególności. 694 00:34:51,205 --> 00:34:54,080 Co można zrobić z tym językiem, choć jest bardziej wydajne, 695 00:34:54,080 --> 00:34:55,790 zwłaszcza z API. 696 00:34:55,790 --> 00:34:56,960 >> Ale najpierw szybkie zwiedzanie. 697 00:34:56,960 --> 00:35:00,450 Tak jeden, w JavaScript, jest nie główną funkcją, która jest miła. 698 00:35:00,450 --> 00:35:02,650 Jak w PHP, możesz po prostu napisać kod. 699 00:35:02,650 --> 00:35:04,310 Warunki wyglądać. 700 00:35:04,310 --> 00:35:07,100 I wyrażenia logiczne moc wyglądać tak lub tak. 701 00:35:07,100 --> 00:35:09,530 Istnieją przełączniki, a oni może wyglądać tak. 702 00:35:09,530 --> 00:35:10,970 Cztery pętle wyglądać. 703 00:35:10,970 --> 00:35:12,390 Podczas gdy pętle wyglądać. 704 00:35:12,390 --> 00:35:14,160 Czy chwilami wyglądać. 705 00:35:14,160 --> 00:35:16,850 I wtedy wyglądać tablice ten, bardzo podobny do PHP. 706 00:35:16,850 --> 00:35:20,740 Ale zauważmy, że w JavaScript Ciebie zadeklarować zmienną nie z dolara 707 00:35:20,740 --> 00:35:25,190 podpisać, a nie z typem danych, ale dosłownie mówiąc var dla zmiennej przed nim. 708 00:35:25,190 --> 00:35:27,900 To zbyt luźno wpisane tym, że zawiera typy, 709 00:35:27,900 --> 00:35:29,729 ale nie jawnie zadeklarować je. 710 00:35:29,729 --> 00:35:31,520 A potem łańcuch, na przykład, może wyglądać 711 00:35:31,520 --> 00:35:34,350 jak to, że ciąg nazywany jest w tej sprawie. 712 00:35:34,350 --> 00:35:35,410 A następnie obiekt. 713 00:35:35,410 --> 00:35:37,010 I będziemy je widzimy więcej wkrótce. 714 00:35:37,010 --> 00:35:41,470 I obiekt jest chyba jednym z najczęściej postrzegane struktury danych 715 00:35:41,470 --> 00:35:44,050 w oparciu o JavaScript Program ponieważ umożliwia 716 00:35:44,050 --> 00:35:46,680 skojarzenie arbitralne Kluczowe tylko pary wartości 717 00:35:46,680 --> 00:35:51,240 jak tablice asocjacyjne PHP i tak jak własnego tabeli mieszania 718 00:35:51,240 --> 00:35:54,042 lub spróbuj jak wdrożyliśmy kilka tygodni temu. 719 00:35:54,042 --> 00:35:56,250 Warto więc zobaczyć, co rzeczywiście możemy zrobić z JavaScript. 720 00:35:56,250 --> 00:35:59,410 W szczególności, to jest Lista funkcji prania 721 00:35:59,410 --> 00:36:02,300 że przeglądarki mają, że pozwalają nam podłączyć JavaScript 722 00:36:02,300 --> 00:36:05,470 na stronie internetowej w następujący sposób. 723 00:36:05,470 --> 00:36:09,340 JavaScript jest często używany jako po stronie klienta językiem skryptowym. 724 00:36:09,340 --> 00:36:10,130 To nie jest skompilowany. 725 00:36:10,130 --> 00:36:11,370 To też jest interpretowane. 726 00:36:11,370 --> 00:36:15,740 Ale w przeciwieństwie do PHP, który został uruchomiony na serwerze, na serwerze WWW 727 00:36:15,740 --> 00:36:18,220 lub głęboko wewnątrz Klienci, JavaScript 728 00:36:18,220 --> 00:36:22,190 różni się pod tym względem, że zwykle działa w przeglądarce. 729 00:36:22,190 --> 00:36:26,060 >> Więc każdy kod JavaScript zacząć pisać dla Pset 8 lub ostatecznego projektu, 730 00:36:26,060 --> 00:36:29,890 lub w realnym świecie jest zwykle dzieje być zapisywane na serwerze, absolutnie 731 00:36:29,890 --> 00:36:33,110 kropka w kropkę HTML lub JS do pliku JavaScript. 732 00:36:33,110 --> 00:36:35,770 Ale przeglądarka będzie ściągnąć że JavaScript 733 00:36:35,770 --> 00:36:39,530 Kod do własnej instancji Chrome lub IE lub Firefox, lub cokolwiek. 734 00:36:39,530 --> 00:36:43,870 I kod faktycznie się dostać wykonywane wewnątrz własnej przeglądarce. 735 00:36:43,870 --> 00:36:46,560 Wystarczy, aby to bardziej realne, Zobaczmy to w formie betonowej. 736 00:36:46,560 --> 00:36:50,120 >> Nie mamy pojęcia, co ten kod robi bez naprawdę czytanie przez niego. 737 00:36:50,120 --> 00:36:52,670 Ale pozwól mi iść do Facebook.com bez logowania. 738 00:36:52,670 --> 00:37:00,440 Pozwólcie mi iść do kontroli i przejdź do elementu, powiedzmy, sieci i przeładuj stronę. 739 00:37:00,440 --> 00:37:04,150 A my see-- pozwól mi przesunąć przeładować Strona aby wszystkie żądania do nowego. 740 00:37:04,150 --> 00:37:08,850 I pierwszy Widzę to plik CSS, CSS. 741 00:37:08,850 --> 00:37:10,880 Oto pierwszy JavaScript plik i mam 742 00:37:10,880 --> 00:37:14,600 nie wiem co to robi, ale tutaj jest część kodu JavaScript 743 00:37:14,600 --> 00:37:16,180 która napędza Facebooka. 744 00:37:16,180 --> 00:37:18,400 To nie jest nawet bardzo, że ujawniając, aby powiększyć. 745 00:37:18,400 --> 00:37:20,260 To wciąż tak samo bezsensowne. 746 00:37:20,260 --> 00:37:24,341 >> Ale zobaczysz, nawet na dole, tam jeszcze z tych plików JavaScript. 747 00:37:24,341 --> 00:37:24,840 Ups. 748 00:37:24,840 --> 00:37:25,440 To ping. 749 00:37:25,440 --> 00:37:28,550 Chodźmy trochę Ponadto, dalej dalej. 750 00:37:28,550 --> 00:37:29,894 Jest jeden. 751 00:37:29,894 --> 00:37:31,238 Jest jeden. 752 00:37:31,238 --> 00:37:31,880 Jest jeden. 753 00:37:31,880 --> 00:37:35,820 >> Więc nawet jeśli Facebooku, za Sceny, w części jest napisane w PHP 754 00:37:35,820 --> 00:37:39,100 i jego własnej Facebooka wersja istnieje ogromna ilość JavaScript. 755 00:37:39,100 --> 00:37:41,330 W rzeczywistości, każdy z czacie robisz na Facebooku, 756 00:37:41,330 --> 00:37:45,520 którykolwiek z aktualizacji inline osi czasu zdarzyć, że w czasie rzeczywistym, to wszystko 757 00:37:45,520 --> 00:37:47,944 jest napędzany przez JavaScript. 758 00:37:47,944 --> 00:37:48,444 Tak? 759 00:37:48,444 --> 00:37:50,235 >> Publiczność: Nie jestem pewien, czy to jest Facebook, 760 00:37:50,235 --> 00:37:53,624 ale myślałem, że Facebook opracowany ich własny język w domu kod? 761 00:37:53,624 --> 00:37:54,540 DAVID MALAN: Robili. 762 00:37:54,540 --> 00:37:58,110 Więc dlatego mówię o wariancji PHP o nazwie Hip Hop, że faktycznie 763 00:37:58,110 --> 00:38:03,440 dodatkowe funkcje takie, że gdy do Zaznacz pierwszy realizowany Facebooka, 764 00:38:03,440 --> 00:38:04,710 został napisany w PHP. 765 00:38:04,710 --> 00:38:07,370 I tego rodzaju pozostaje rodzaj języka końcowego przodu 766 00:38:07,370 --> 00:38:09,030 że używają o wiele ich kodowania, ale to 767 00:38:09,030 --> 00:38:11,870 nie był to język Wagi szczególnie dobrze do miliardów 768 00:38:11,870 --> 00:38:12,630 ludzi. 769 00:38:12,630 --> 00:38:15,300 I tak mają dodaje własne ulepszenia za kulisami. 770 00:38:15,300 --> 00:38:17,049 I korzystać z dowolnej liczby w innych językach 771 00:38:17,049 --> 00:38:19,170 z różnych kawałków ich infrastruktury. 772 00:38:19,170 --> 00:38:24,080 Więc tak, to wariancja co teraz wiemy, jak PHP. 773 00:38:24,080 --> 00:38:26,610 >> Warto więc spojrzeć na kilka przykładów 774 00:38:26,610 --> 00:38:28,890 w jaki sposób możemy wykorzystać tu JavaScript. 775 00:38:28,890 --> 00:38:32,530 W dzisiejszym kodu źródłowego, mamy kilka plików, z których pierwszy, 776 00:38:32,530 --> 00:38:34,090 niech nazywa DOM zero. 777 00:38:34,090 --> 00:38:36,770 Więc DOM zera wygląda następująco. 778 00:38:36,770 --> 00:38:40,730 Pozwól mi wejść do tego katalogu i otworzyć domzero.html, 779 00:38:40,730 --> 00:38:44,970 góry, które ma typ doc oświadczenie, mówiąc, tutaj jest HTML 5. 780 00:38:44,970 --> 00:38:46,440 I teraz oto znacznik HTML. 781 00:38:46,440 --> 00:38:47,540 Oto tag głowy. 782 00:38:47,540 --> 00:38:49,210 A oto co nowego dzisiaj. 783 00:38:49,210 --> 00:38:52,620 >> Mamy teraz znacznika script wewnątrz głowicy strony. 784 00:38:52,620 --> 00:38:55,290 I to najwyraźniej nie bardzo mało, ale informacja 785 00:38:55,290 --> 00:38:58,410 że mam określony skrypt JavaScript. 786 00:38:58,410 --> 00:39:01,050 I jak na bok, ponieważ jest błędne, 787 00:39:01,050 --> 00:39:05,220 JavaScript ma absolutnie nic do czynienia z języka Java, 788 00:39:05,220 --> 00:39:08,010 że niektórzy z was mogą dowiedzieliśmy się w APC. 789 00:39:08,010 --> 00:39:10,480 To było bardziej marketingu rzeczą, niż cokolwiek, 790 00:39:10,480 --> 00:39:12,980 jazda coattails lat Java temu. 791 00:39:12,980 --> 00:39:17,300 Ale obsługa JavaScript, nic wspólnego z Java, tak podobnie i irytująco, 792 00:39:17,300 --> 00:39:18,480 łudząco nazwie. 793 00:39:18,480 --> 00:39:21,890 >> Więc o to, w jaki sposób zadeklarować funkcję w JavaScript, dosłownie znaczy funkcji, 794 00:39:21,890 --> 00:39:24,556 Następnie nazwa funkcji Argumenty to każdy może podjąć, 795 00:39:24,556 --> 00:39:25,530 tak jak w PHP. 796 00:39:25,530 --> 00:39:28,990 Okazuje się, że w JavaScript, jednego z najbardziej irytujące funkcje, które istnieją jest Alert. 797 00:39:28,990 --> 00:39:31,392 To jest małe okienko, które pojawi się i ostrzegają 798 00:39:31,392 --> 00:39:32,600 do pewnego fragmentu informacji. 799 00:39:32,600 --> 00:39:33,766 To zwykle mile widziana. 800 00:39:33,766 --> 00:39:35,980 Ale będziemy używać go jako naszego Pierwsze ćwiczenie tutaj. 801 00:39:35,980 --> 00:39:37,900 >> Zauważyć kilka cech JavaScript. 802 00:39:37,900 --> 00:39:41,524 Pojedyncze i podwójne cytaty cytaty faktycznie nie ma już znaczenia. 803 00:39:41,524 --> 00:39:43,690 Pojedyncze i podwójne cudzysłowy cytaty mogą być wymieniane, 804 00:39:43,690 --> 00:39:46,220 natomiast w C, należy użyć cudzysłowy dla ciągów, 805 00:39:46,220 --> 00:39:48,150 i masz dwa pojedyncze cytuje dla znaków. 806 00:39:48,150 --> 00:39:51,150 W świecie, JavaScript, wielu ludzi, większość ludzi 807 00:39:51,150 --> 00:39:54,970 używać apostrofów wokół strun tylko dlatego, że stylistyczne rzecz. 808 00:39:54,970 --> 00:39:58,330 Ale co to za operator oraz tutaj których nie widzieliśmy wcześniej? 809 00:39:58,330 --> 00:39:59,836 >> Publiczność: Łączenie. 810 00:39:59,836 --> 00:40:00,960 DAVID MALAN: Łączenie. 811 00:40:00,960 --> 00:40:02,450 Tak więc C nie ma nawet tego. 812 00:40:02,450 --> 00:40:04,820 PHP ma operatora kropki, który to robi. 813 00:40:04,820 --> 00:40:09,710 JavaScript ma operatora plusa, które łudząco jest jak Java. 814 00:40:09,710 --> 00:40:11,440 Teraz to, co się tutaj dzieje? 815 00:40:11,440 --> 00:40:14,260 >> Tak tu jest, gdzie podstawowym Zrozumienie tego obrazu 816 00:40:14,260 --> 00:40:17,010 rzuciliśmy się kilka dni temu wchodzi w grę. 817 00:40:17,010 --> 00:40:19,620 Pamiętaj, kiedy mieliśmy proste wersja HTML page-- 818 00:40:19,620 --> 00:40:20,830 po prostu powiedział, hello world. 819 00:40:20,830 --> 00:40:22,770 A potem zwrócił drzewo z prawej strony, który 820 00:40:22,770 --> 00:40:27,320 miał kilka prostokątów i linii łącząc je jak drzewa genealogicznego. 821 00:40:27,320 --> 00:40:30,820 Więc to jest tak zwany DOM lub Document Object model. 822 00:40:30,820 --> 00:40:36,759 I okazuje się, że można uzyskać dostęp do prostokąty w tym drzewie składni 823 00:40:36,759 --> 00:40:37,550 jak poniżej. 824 00:40:37,550 --> 00:40:41,370 Dosłownie znaczy dokument, który jest Specjalna zmienna globalna w JavaScript 825 00:40:41,370 --> 00:40:45,890 Program, który ma funkcję z nim związane, które można uzyskać dostęp do 826 00:40:45,890 --> 00:40:50,280 podobne do struct, ale po prostu powiedzieć, kropki, a następnie nazwa funkcji, 827 00:40:50,280 --> 00:40:52,390 uzyskać elementu przez ID. 828 00:40:52,390 --> 00:40:55,460 >> Element chcę dostać to najwyraźniej cytatu nazwę. 829 00:40:55,460 --> 00:40:57,150 A potem chcę się jej wartość. 830 00:40:57,150 --> 00:40:58,330 Teraz jesteśmy coraz dalej od siebie. 831 00:40:58,330 --> 00:41:00,038 Nie jestem nawet pewien, co w tym wszystkim chodzi. 832 00:41:00,038 --> 00:41:03,000 Miejmy przodu do HTML na strona, która jest bardzo prosta. 833 00:41:03,000 --> 00:41:05,370 >> Uwaga, mam określony tworzą tutaj. 834 00:41:05,370 --> 00:41:07,940 Zauważ Dałem mu wyjątkowy ID, mimo że nie zostały wykorzystane 835 00:41:07,940 --> 00:41:08,870 atrybut ten przed. 836 00:41:08,870 --> 00:41:11,300 Ale istnieje w HTML. 837 00:41:11,300 --> 00:41:15,570 Można jednoznacznie zidentyfikować którąś HTML z identyfikatorem takiego. 838 00:41:15,570 --> 00:41:19,880 >> Zawiadomienie teraz this-- okazuje HTML wspiera, na tej liście do prania 839 00:41:19,880 --> 00:41:22,490 Chwilę temu, cały banda obsługi zdarzeń. 840 00:41:22,490 --> 00:41:25,060 I to mówi na obsługa zdarzeń złożyć. 841 00:41:25,060 --> 00:41:28,730 W sprawie przekazywania tego użytkownika Formularz należy wywołać następujący kod. 842 00:41:28,730 --> 00:41:31,360 I kod, który będzie nazywać lub wykonany 843 00:41:31,360 --> 00:41:35,260 jest dokładnie to, grecki Funkcja następnie return false. 844 00:41:35,260 --> 00:41:37,360 Wszystko inne powinno być dość znajomo. 845 00:41:37,360 --> 00:41:42,050 >> Tutaj jest wejście typu tekstu, którego ID, w tym przypadku, będzie nazwa. 846 00:41:42,050 --> 00:41:45,430 Nie mamy rzeczywisty atrybut name to time-- i przycisk submit. 847 00:41:45,430 --> 00:41:48,330 Tak powstała strona wygląda tak. 848 00:41:48,330 --> 00:41:52,890 I otrzymany zachowanie zobaczysz, wygląda tak. 849 00:41:52,890 --> 00:41:56,940 Strona go lokalne gospodarze mówi cześć David, mało estetyczne 850 00:41:56,940 --> 00:41:58,340 sposób pozdrowić użytkownika. 851 00:41:58,340 --> 00:41:59,950 Ale co się właściwie dzieje? 852 00:41:59,950 --> 00:42:01,360 >> Cóż, za to, co to jest. 853 00:42:01,360 --> 00:42:02,310 Jest to pole tekstowe. 854 00:42:02,310 --> 00:42:04,635 I zgodnie z Kopiuj tutaj, dałem go 855 00:42:04,635 --> 00:42:07,350 unikalny identyfikator nazywa cytatu nazwa. 856 00:42:07,350 --> 00:42:09,770 Tymczasem, gdy mówiłem użytkownik przesyła ten formularz 857 00:42:09,770 --> 00:42:13,820 naciskając Enter lub klikając Zatwierdź przycisk, wywołać funkcję o nazwie Pozdrówcie 858 00:42:13,820 --> 00:42:15,410 a następnie return false. 859 00:42:15,410 --> 00:42:16,870 Rozważmy te, w odwrotnej kolejności. 860 00:42:16,870 --> 00:42:20,590 Zauważ, kiedy kliknij przycisk Prześlij, Adres URL tej strony nie zmienia. 861 00:42:20,590 --> 00:42:22,420 Ikona przeglądarki nie zaczną obracać. 862 00:42:22,420 --> 00:42:27,050 Nie idź nigdzie, i to dosłownie, bo powiedział return false. 863 00:42:27,050 --> 00:42:31,534 Return false zwarć lub zatrzymuje domyślne zachowanie formularza. 864 00:42:31,534 --> 00:42:33,700 Tak, że to pozostawia nas z to jedno ostatnie pytanie. 865 00:42:33,700 --> 00:42:34,764 Co Pozdrówcie zrobić? 866 00:42:34,764 --> 00:42:36,680 Cóż, najwyraźniej Greet wywołuje funkcję o nazwie 867 00:42:36,680 --> 00:42:39,250 Alert, przechodzi w jednym Argument, że to długo 868 00:42:39,250 --> 00:42:43,950 Wynik złączenie razem kilka podciągów, witaj miejsce przecinka, 869 00:42:43,950 --> 00:42:45,810 to co to zwraca. 870 00:42:45,810 --> 00:42:51,490 Tak więc dokument jest jak globalne zmienna do tego korzenia tego drzewa, 871 00:42:51,490 --> 00:42:55,560 wywołanie specjalnej funkcji, inaczej obecnie znane jako metody. 872 00:42:55,560 --> 00:42:57,650 Funkcja jest Wnętrze jest zmienna 873 00:42:57,650 --> 00:42:59,640 zwana metoda zamiast funkcję. 874 00:42:59,640 --> 00:43:01,570 >> Więc elementu przez ID. 875 00:43:01,570 --> 00:43:03,940 Co elementem prawda chcą, aby przez jego ID? 876 00:43:03,940 --> 00:43:06,970 Koniec cytatu nazwę i to specjalnie cenią. 877 00:43:06,970 --> 00:43:12,000 Tak więc, innymi słowy, że kod po prostu znajduje się pole tekstowe, którego ID to nazwa 878 00:43:12,000 --> 00:43:13,380 a następnie dostaje jej wartość. 879 00:43:13,380 --> 00:43:16,460 Więc gdybym miał to zmienić i powiedzieć, Davina zamiast Dawida, 880 00:43:16,460 --> 00:43:20,670 i kliknij przycisk Prześlij, teraz masz pozdrowienia dla Davina. 881 00:43:20,670 --> 00:43:22,890 >> W porządku, więc wszystko jest w porządku i dobre. 882 00:43:22,890 --> 00:43:25,480 Ale zobaczymy, czy możemy to trochę czystsze, ponieważ tylko 883 00:43:25,480 --> 00:43:28,190 pisania kodu, jak to jest ogół będzie mile widziana. 884 00:43:28,190 --> 00:43:30,060 To będzie wyglądać bardziej przerażające. 885 00:43:30,060 --> 00:43:32,330 Ale co jest pierwszą różnicą, że można zauważyć tutaj 886 00:43:32,330 --> 00:43:35,970 W tej wersji oprócz wymienić zmianę jednego DOM? 887 00:43:35,970 --> 00:43:41,110 Co strukturalnie wygląda inaczej o tym kontra inne? 888 00:43:41,110 --> 00:43:41,932 Tak? 889 00:43:41,932 --> 00:43:43,890 PUBLICZNOŚCI: Czy forma na top skryptu teraz? 890 00:43:43,890 --> 00:43:46,570 DAVID MALAN: Tak, formularz znajduje się na górze skryptu dla niektórych ciekawy powód. 891 00:43:46,570 --> 00:43:48,736 Więc to jest pierwsza rzecz, że wyskakuje na mnie też. 892 00:43:48,736 --> 00:43:50,990 I na szczęście przynajmniej, ta część jest identyczna. 893 00:43:50,990 --> 00:43:53,470 Tak więc jedyną rzeczą, która wydaje być różny jest następująca. 894 00:43:53,470 --> 00:43:55,296 >> Więc tutaj jest to, co jest miłe o JavaScripcie 2. 895 00:43:55,296 --> 00:43:57,420 I to sprawia, że ​​trudno zrozumieć, na pierwszy rzut oka, 896 00:43:57,420 --> 00:44:00,670 szczególnie dla końcowych projektów jeżeli patrzysz na przykładowy kod online 897 00:44:00,670 --> 00:44:04,200 ale to sprowadza się do kilku podstawowe funkcje składniowe. 898 00:44:04,200 --> 00:44:06,230 Jest tu ponownie to, że zmienna globalna dokument. 899 00:44:06,230 --> 00:44:09,540 Tu znowu jest to, że metoda lub funkcja że mówi się elementu przez ID. 900 00:44:09,540 --> 00:44:11,570 Tym razem chcę uzyskać identyfikator o nazwie demo. 901 00:44:11,570 --> 00:44:12,490 Gdzie to jest? 902 00:44:12,490 --> 00:44:15,400 To najwyraźniej rację tutaj sama forma. 903 00:44:15,400 --> 00:44:20,010 >> A teraz zauważyć, że najwyraźniej jeśli wrócić, że węzeł z drzewa, 904 00:44:20,010 --> 00:44:22,940 stanowi formę Sam, nie pole tekstowe, 905 00:44:22,940 --> 00:44:26,970 Okazuje się, że postać, która węzeł lub prostokąt z drzewa, 906 00:44:26,970 --> 00:44:30,450 ma to, co my nazywamy nieruchomości, bardzo, bardzo, bardzo podobne 907 00:44:30,450 --> 00:44:35,390 w duchu do struct w C To tylko członek danych wewnątrz tego prostokąta. 908 00:44:35,390 --> 00:44:38,300 >> Więc mam formularz tutaj, a ja mocowania, 909 00:44:38,300 --> 00:44:44,650 czy jestem przypisanie do jego Na Zatwierdź obsługi lub raczej na Zatwierdź własności 910 00:44:44,650 --> 00:44:45,740 Poniższa funkcja. 911 00:44:45,740 --> 00:44:49,000 I to jest, jak dotąd, najbardziej szalona co do tej pory składniowo. 912 00:44:49,000 --> 00:44:53,610 Okazuje się w JavaScript i PHP, i szczerze mówiąc o to chodzi w C, 913 00:44:53,610 --> 00:44:58,990 nawet jeśli nie to zrobić, możesz dodać bezimienny, anonimowy lub AKA lambda 914 00:44:58,990 --> 00:45:03,000 Funkcje, które nie mają nazwy ale mimo to można nazwać. 915 00:45:03,000 --> 00:45:07,050 >> Więc co ja robię tu ja przypisanie to On Prześlij nieruchomości, które 916 00:45:07,050 --> 00:45:14,330 jest wewnątrz tego węzła mojego drzewa DOM, funkcja, funkcja wskaźnika, jeśli będzie. 917 00:45:14,330 --> 00:45:16,310 Funkcja ta nie ma wymienić, ale to nie robi 918 00:45:16,310 --> 00:45:19,110 znaczenia, ponieważ zobaczymy w jednej chwili, jak to nazwać. 919 00:45:19,110 --> 00:45:21,780 Gdy ta funkcja jest wywoływana, ten kod zostanie wykonany, a następnie 920 00:45:21,780 --> 00:45:24,210 zwraca false, tak jak wcześniej. 921 00:45:24,210 --> 00:45:25,800 >> Zauważmy jednak, co zrobiłem. 922 00:45:25,800 --> 00:45:27,830 W tym momencie w historia, Mam formularz. 923 00:45:27,830 --> 00:45:30,190 Ma unikatowy identyfikator o nazwie demo. 924 00:45:30,190 --> 00:45:33,740 Tu mam znacznika script które wykonuje następujący kod. 925 00:45:33,740 --> 00:45:37,720 Przywiązuje do tego węzła drzewa na to na Zatwierdź 926 00:45:37,720 --> 00:45:40,260 Nieruchomość ta funkcja tutaj. 927 00:45:40,260 --> 00:45:44,310 I tylko przez naturę, jak działają przeglądarki, kiedy teraz kliknij Wyślij lub naciśnij klawisz Enter, 928 00:45:44,310 --> 00:45:45,889 że funkcja będzie się nazywa. 929 00:45:45,889 --> 00:45:48,680 To nie potrzebuje nazwy bo kto do cholery obchodzi, jak się nazywa. 930 00:45:48,680 --> 00:45:52,540 Tylko raz to zawsze dostanie nazywane jest to, kiedy wysłać formularz. 931 00:45:52,540 --> 00:45:55,130 Nie ma potrzeby, dla mnie, deweloper człowieka, 932 00:45:55,130 --> 00:45:57,330 faktycznie nazywają to nigdzie indziej. 933 00:45:57,330 --> 00:46:00,720 >> Teraz, tak jak teaser, jakby to gięcia nie przeszkadza na tyle, 934 00:46:00,720 --> 00:46:03,330 możemy nawet zrobić to wyglądają bardziej tajemnicze korzystania 935 00:46:03,330 --> 00:46:05,850 bardzo popularna biblioteka o nazwie jQuery. 936 00:46:05,850 --> 00:46:08,760 W rzeczywistości jQuery i JavaScript często łączyła. 937 00:46:08,760 --> 00:46:12,790 A co zrobimy w środę jest początek za pomocą tego języka i tych bibliotek 938 00:46:12,790 --> 00:46:16,030 budować coraz asynchroniczny i dynamiczne aplikacje 939 00:46:16,030 --> 00:46:18,950 jak mapa się aplikacje, aplikacje 940 00:46:18,950 --> 00:46:22,360 że aktualizować stronę w rzeczywistym Czas, podobnie jak Facebook lub Gchat 941 00:46:22,360 --> 00:46:27,130 zrobić, a nie ograniczać się do trafienie Zatwierdź przez GET lub tylko pocztą 942 00:46:27,130 --> 00:46:27,630 sam. 943 00:46:27,630 --> 00:46:29,055 Więc widzę cię w środę. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [MUZYKA GRY] 946 00:46:35,550 --> 00:48:09,728