1 00:00:00,000 --> 00:00:03,920 >> [MUZYKA GRY] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> David J. MALAN: Wszystko w porządku. 4 00:00:13,800 --> 00:00:15,640 To CS50. 5 00:00:15,640 --> 00:00:17,620 To jest początek tygodnia osiem. 6 00:00:17,620 --> 00:00:22,440 A może pamiętacie, że skończyliśmy Ostatnim razem, patrząc na nowy język 7 00:00:22,440 --> 00:00:23,240 w ogóle. 8 00:00:23,240 --> 00:00:25,905 W rzeczywistości, jeden to dość lekkie i to nie jest nawet 9 00:00:25,905 --> 00:00:26,940 język programowania. 10 00:00:26,940 --> 00:00:31,100 Jest to język znaczników, który pozwala nam rzeczywiście struktury i stron internetowych. 11 00:00:31,100 --> 00:00:33,350 A kiedy ci coś jeszcze w połączeniu z this-- 12 00:00:33,350 --> 00:00:35,670 lub wkrótce będzie, jeśli ty nie masz. 13 00:00:35,670 --> 00:00:38,530 Zamierzamy wykorzystać kaskadowe Arkusze stylów lub CSS, który 14 00:00:38,530 --> 00:00:40,971 jest inny rodzaj języka z właściwościami i wartościami 15 00:00:40,971 --> 00:00:43,220 że zamierza zróbmy rzeczy, jak zmienić kolor 16 00:00:43,220 --> 00:00:46,010 i zmienić pozycję i tego rodzaju usprawnień. 17 00:00:46,010 --> 00:00:49,940 Ale dziś i dalej, zaczynamy skupić się na bardziej wydajnych językach, 18 00:00:49,940 --> 00:00:52,810 Rzeczywiste języki programowania takie jak PHP. 19 00:00:52,810 --> 00:00:54,880 >> Więc PHP jest już od jakiegoś czasu. 20 00:00:54,880 --> 00:00:56,810 A jak zobaczysz, to został zaprojektowany przede wszystkim 21 00:00:56,810 --> 00:01:00,280 wcześnie na rzeczywiste wykorzystać w rozwoju internetowych 22 00:01:00,280 --> 00:01:02,360 i faktycznie generowania stron internetowych. 23 00:01:02,360 --> 00:01:04,849 I co z tego rodzaju funkcje nie język 24 00:01:04,849 --> 00:01:10,040 konieczne w celu internecie strony dynamicznie z nim? 25 00:01:10,040 --> 00:01:14,760 >> Innymi słowy, jeśli chcesz, aby wygenerować Zawartość dynamically-- jak Facebooka 26 00:01:14,760 --> 00:01:19,480 Kanał informacyjny, który ciągle się zmienia, lub wiadomości błyskawicznych, które pojawiają się od czasu 27 00:01:19,480 --> 00:01:21,872 do time-- jak co kluczowym elementem funkcjonalności 28 00:01:21,872 --> 00:01:24,580 musisz w języku programowania które pozwoli Ci dynamicznie 29 00:01:24,580 --> 00:01:28,070 wydrukować nowe informacje na ekranie? 30 00:01:28,070 --> 00:01:28,685 >> STUDENT: Kod. 31 00:01:28,685 --> 00:01:29,560 David J. MALAN: Kod. 32 00:01:29,560 --> 00:01:30,440 OK. 33 00:01:30,440 --> 00:01:31,995 Weźmiemy to. 34 00:01:31,995 --> 00:01:35,310 Trochę bardziej precyzyjny. 35 00:01:35,310 --> 00:01:37,639 Chodzi mi o to, co mogliśmy zrobić to z C, szczerze mówiąc. 36 00:01:37,639 --> 00:01:38,930 Byłoby ból w szyi. 37 00:01:38,930 --> 00:01:41,045 Ale- jest to zobowiązanie? 38 00:01:41,045 --> 00:01:41,895 >> UCZEŃ: Tak. 39 00:01:41,895 --> 00:01:42,677 Zmienne, może być? 40 00:01:42,677 --> 00:01:43,760 David J. MALAN: Zmienne. 41 00:01:43,760 --> 00:01:44,160 OK, na pewno. 42 00:01:44,160 --> 00:01:45,740 Zmienne z pewnością może nam pomóc. 43 00:01:45,740 --> 00:01:47,020 A nawet coś prostsze. 44 00:01:47,020 --> 00:01:50,640 Użyliśmy go w pierwszym Program pierwszego dnia 45 00:01:50,640 --> 00:01:55,686 kiedy tak naprawdę powiedział "hello world". 46 00:01:55,686 --> 00:01:56,570 >> STUDENT: Drukuj. 47 00:01:56,570 --> 00:01:57,778 >> David J. MALAN: Drukuj, prawda? 48 00:01:57,778 --> 00:02:01,050 Drukuj lub w printf Świat C. Więc cały ten czas, 49 00:02:01,050 --> 00:02:03,362 mieliśmy w naszym zbycie language-- C, 50 00:02:03,362 --> 00:02:05,570 w szczególności do: a nawet Scratch o to chodzi, że 51 00:02:05,570 --> 00:02:07,400 może generować ciągi tekstowe. 52 00:02:07,400 --> 00:02:11,090 >> Cóż, jeśli HTML, jak widzieliśmy w zeszłym tygodniu, jest po prostu cała masa ciągów tekstu 53 00:02:11,090 --> 00:02:14,692 choć z zamkniętymi i otwartymi nawiasami wsporniki i jakiś wierszyk 54 00:02:14,692 --> 00:02:16,650 a powodem tego, no więc mogliśmy naprawdę 55 00:02:16,650 --> 00:02:20,440 rozpoczęcie generowania stron internetowych albo ręcznie, wpisując je w gedit 56 00:02:20,440 --> 00:02:23,870 lub w programie Microsoft Word, za które matter-- musimy tylko edytora tekstu. 57 00:02:23,870 --> 00:02:26,830 >> Albo możemy napisać kod, na sugestię 58 00:02:26,830 --> 00:02:30,435 wcześniej, że będzie nam na to dynamicznego generowania kodu HTML, 59 00:02:30,435 --> 00:02:32,560 i to, co mamy zamiar zacząć robić z PHP 60 00:02:32,560 --> 00:02:34,900 i ostatecznie nawet z Język nazywa obsługa JavaScript, 61 00:02:34,900 --> 00:02:37,910 jest korzystanie z jednego języka do generowania drugiego. 62 00:02:37,910 --> 00:02:40,720 I rzeczywiście, to właśnie Facebook i wiele, wiele innych miejsc 63 00:02:40,720 --> 00:02:44,530 zrobić, aby rzeczywiście dynamicznie wyświetlić nowe informacje do Ciebie. 64 00:02:44,530 --> 00:02:47,117 >> Więc zacznijmy this-- a Linia tajemnicze spojrzenie, ale jeden 65 00:02:47,117 --> 00:02:48,450 to jest rzeczywiście bardzo silny. 66 00:02:48,450 --> 00:02:51,210 Do tej pory używaliśmy C, który jest skompilowany języka. 67 00:02:51,210 --> 00:02:55,050 I właśnie szybkie recap-- skompilowany język ma co charakterystyczne? 68 00:02:55,050 --> 00:02:59,050 Najwyraźniej trzeba kompilować to, ale co to znaczy? 69 00:02:59,050 --> 00:03:00,505 Tak? 70 00:03:00,505 --> 00:03:02,940 >> Student: To musi być zamontowane na kod maszynowy. 71 00:03:02,940 --> 00:03:03,060 >> David J. MALAN: OK. 72 00:03:03,060 --> 00:03:04,530 Musi być zmontowane na kod maszynowy. 73 00:03:04,530 --> 00:03:07,340 Więc wziąć swój kod źródłowy, który jest rodzajem angielsko-podobne. 74 00:03:07,340 --> 00:03:09,270 Można przekonwertować do coś niższego poziomu, 75 00:03:09,270 --> 00:03:11,590 które nazywane jest ostatecznie Obiekt code-- 0 i 1 roku. 76 00:03:11,590 --> 00:03:14,830 I to te 0 i 1, że CPU, jak te wykonane przez firmę Intel, 77 00:03:14,830 --> 00:03:16,110 właściwie zrozumieć. 78 00:03:16,110 --> 00:03:19,690 >> Teraz, PHP i Python i Ruby i JavaScript i kiście inne 79 00:03:19,690 --> 00:03:23,190 języki nie są kompilowane języków, ale interpretowane języki, 80 00:03:23,190 --> 00:03:26,630 co oznacza, że ​​po prostu wpisz je, a następnie nie włączyć je do 0 i 1 roku. 81 00:03:26,630 --> 00:03:30,790 Zamiast tego po prostu zapewnić następnie jako Wejście do programu kogoś innego, 82 00:03:30,790 --> 00:03:32,080 nazywa tłumacza. 83 00:03:32,080 --> 00:03:34,460 I że osoby Program został zaprojektowany 84 00:03:34,460 --> 00:03:38,280 zrozumieć, co każdy i każdy symbol w Pythonie i PHP 85 00:03:38,280 --> 00:03:42,650 lub Ruby lub dowolną liczbę innych języków oznacza. 86 00:03:42,650 --> 00:03:44,760 >> I tak musimy to wszystko coś takiego. 87 00:03:44,760 --> 00:03:46,350 Tak więc w rzeczywistości, mam zamiar przejść do urządzenia 88 00:03:46,350 --> 00:03:48,100 tutaj, tylko do jednej Stare okna, a my jesteśmy 89 00:03:48,100 --> 00:03:52,580 zamiar iść do przodu i otwarte plik o nazwie, powiedzmy, witam. 90 00:03:52,580 --> 00:03:55,780 Teraz wcześniej, mogę uratować to nawet z rozszerzeniem, 91 00:03:55,780 --> 00:03:57,910 ale mam zamiar zrobić tu coś jeszcze prostsze. 92 00:03:57,910 --> 00:04:02,450 Mam zamiar iść do przodu i zacząć ten plik z tym tajemniczym składni. 93 00:04:02,450 --> 00:04:06,310 Tak "użytkownik, bin, env, dla środowiska, php. " 94 00:04:06,310 --> 00:04:10,670 >> To jest po prostu jedna linia kodu, która jest powie systemu operacyjnego, 95 00:04:10,670 --> 00:04:13,730 znajdź w lokalnym środowisko, co to jest, 96 00:04:13,730 --> 00:04:18,149 gdziekolwiek na interpreter-- PHP is-- i śmiało użyć tego tłumacza 97 00:04:18,149 --> 00:04:20,589 interpretować następujący kod. 98 00:04:20,589 --> 00:04:22,760 Teraz jest to rodzaj brzydka cecha PHP. 99 00:04:22,760 --> 00:04:24,980 Ale w ten język dowolny czas pisania kodu PHP, 100 00:04:24,980 --> 00:04:29,200 trzeba mieć jedną z nich brzydkie Tagi PHP wyznaczającymi początek 101 00:04:29,200 --> 00:04:32,220 Twojego code-- 00:04:37,430 >> Ale poniżej tutaj, mogę teraz zrobić coś dość proste, jak printf komentarzy przecinek 103 00:04:37,430 --> 00:04:40,922 Świat backslash n pobliżu cytat, blisko nawias. 104 00:04:40,922 --> 00:04:42,630 A potem po prostu na dobre miara, zamierzam 105 00:04:42,630 --> 00:04:45,380 iść do przodu i blisko my tu tag PHP 106 00:04:45,380 --> 00:04:47,390 tak, że wszystko wygląda ładnie całkiem wydrukowany. 107 00:04:47,390 --> 00:04:50,780 >> I jak tylko kliknij przycisk Zapisz, gedit jest rzeczywiście na tyle sprytny 108 00:04:50,780 --> 00:04:54,620 spojrzeć na tej pierwszej linii i sobie sprawę, och, piszesz kod PHP. 109 00:04:54,620 --> 00:04:56,710 Niech mi podświetlanie składni to z kolorami 110 00:04:56,710 --> 00:04:58,690 tutaj tak, że stoi się trochę więcej. 111 00:04:58,690 --> 00:05:01,300 Ale teraz mam zamiar iść w dół do mojego okna terminala. 112 00:05:01,300 --> 00:05:02,340 Będę powiększyć. 113 00:05:02,340 --> 00:05:06,860 >> Program ten nazywa się "cześć" tak mam zamiar zrobić dot ukośnik witam, 114 00:05:06,860 --> 00:05:07,990 ale odmówiono zgody. 115 00:05:07,990 --> 00:05:08,490 A bash. 116 00:05:08,490 --> 00:05:10,610 My rzeczywiście słyszał, że co kilka tygodni temu 117 00:05:10,610 --> 00:05:13,140 w kontekście Shellshock, jeden z tych błędów. 118 00:05:13,140 --> 00:05:16,240 >> Ale Permission denied widzieliśmy przed, być może w innym kontekście. 119 00:05:16,240 --> 00:05:19,060 Czy ktoś przypomnieć, jak coś można naprawić 120 00:05:19,060 --> 00:05:22,100 gdzie odmówiono zezwolenia, jak to? 121 00:05:22,100 --> 00:05:23,490 Co znajduje się komenda, co najmniej? 122 00:05:23,490 --> 00:05:24,159 >> STUDENT: chmod. 123 00:05:24,159 --> 00:05:26,700 David J. MALAN: Tak, chmod, zmiany trybu pliku. 124 00:05:26,700 --> 00:05:30,171 I dostaniesz bardziej używane do to w przyszłym tygodniu z kolejnym problemem 125 00:05:30,171 --> 00:05:30,670 ustawiona. 126 00:05:30,670 --> 00:05:33,211 Ale teraz, mam zamiar zmienić Tryb nie być czytelne, 127 00:05:33,211 --> 00:05:36,650 ale dać każdemu executeability przywileje, umiejętność 128 00:05:36,650 --> 00:05:37,710 do uruchomienia tego pliku. 129 00:05:37,710 --> 00:05:40,360 I mam zamiar przypisać że do pliku komentarzy. 130 00:05:40,360 --> 00:05:45,150 >> Jeśli teraz nie dot ukośnik komentarzy wejść, ty zobaczyć, w rzeczywistości, mój program, hello world. 131 00:05:45,150 --> 00:05:48,760 A co ja zrobiłem krok wyraźnie pominąć całkowicie? 132 00:05:48,760 --> 00:05:49,520 Kompilacja. 133 00:05:49,520 --> 00:05:51,680 Więc po prostu prowadził ten program po prostu. 134 00:05:51,680 --> 00:05:55,690 >> I okazuje się, można to zrobić z Wiele składni przypomina C 135 00:05:55,690 --> 00:06:03,400 Pozwólcie mi iść do dzisiejszego kodu, które mogę umieścić w moim katalogu vhost 136 00:06:03,400 --> 00:06:05,250 tutaj, na rzeczywistych przyczyn wrócimy do. 137 00:06:05,250 --> 00:06:09,350 I mam zamiar iść do, powiedzmy, warunki 1. 138 00:06:09,350 --> 00:06:12,450 >> A zobaczysz tutaj, pierwszy i najważniejsze, cała masa komentarzy. 139 00:06:12,450 --> 00:06:15,240 Ale to jest w rzeczywistości odtworzenie w PHP 140 00:06:15,240 --> 00:06:18,960 programu zrobiliśmy w tym tygodniu jedno zwane warunki 1.c. 141 00:06:18,960 --> 00:06:20,690 gdzie celem w życie tego programu 142 00:06:20,690 --> 00:06:22,950 jest najwyraźniej zapytać użytkownika do liczby całkowitej 143 00:06:22,950 --> 00:06:25,270 a następnie zrobić kilka puszyste Analiza na nim, zgodnie z którą 144 00:06:25,270 --> 00:06:29,510 można powiedzieć, czy to pozytywne czy ujemna lub równa zero. 145 00:06:29,510 --> 00:06:34,220 I Wspominam o tym, tylko dlatego, z wyjątkiem być może jeden mały szczegół, 146 00:06:34,220 --> 00:06:37,150 to jest nie do odróżnienia tej pory z C. 147 00:06:37,150 --> 00:06:39,930 >> Co znajduje się jedna cecha tutaj, że może wyskakuje 148 00:06:39,930 --> 00:06:41,410 na ciebie jak trochę inaczej? 149 00:06:41,410 --> 00:06:42,160 Może dwie rzeczy. 150 00:06:42,160 --> 00:06:42,660 Tak? 151 00:06:42,660 --> 00:06:44,070 >> STUDENT: Znak dolara n? 152 00:06:44,070 --> 00:06:44,944 >> David J. MALAN: Tak. 153 00:06:44,944 --> 00:06:46,210 Więc znak dolara n jest obecny. 154 00:06:46,210 --> 00:06:48,120 I znaki dolara, jak zobaczymy, będziemy 155 00:06:48,120 --> 00:06:51,460 być fix do początku każdej zmiennej w PHP. 156 00:06:51,460 --> 00:06:54,250 Jest to dobra i bad-- dobry w że jest to coś w rodzaju, co jest oczywiste, 157 00:06:54,250 --> 00:06:56,797 zmienna, złe, że jest to kolejna rzecz do pisania. 158 00:06:56,797 --> 00:06:58,630 I jest jeszcze jedna co nam się nie mieć dość 159 00:06:58,630 --> 00:07:00,876 widać, przynajmniej przez ten pisowni. tak? 160 00:07:00,876 --> 00:07:01,630 >> STUDENT: Readline. 161 00:07:01,630 --> 00:07:02,671 >> David J. MALAN: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline nie widzieliśmy, sam w sobie, w C, mimo że istnieje coś 163 00:07:06,550 --> 00:07:09,530 podobne, ale używaliśmy getString, i to jest jego odpowiednikiem. 164 00:07:09,530 --> 00:07:12,950 Więc jeśli pójdę do tego Katalog, który dzieje się, 165 00:07:12,950 --> 00:07:18,030 jak wytłumaczę się trochę w moim vhost Katalog i moje źródło katalogu, 166 00:07:18,030 --> 00:07:22,730 i zrób dot ukośnik conditions-- whoops-- kropka ukośnik 167 00:07:22,730 --> 00:07:26,710 Warunki 1, zobaczysz, znowu, zaprzeczył sam issue-- zgody. 168 00:07:26,710 --> 00:07:33,610 >> Więc pozwól mi przybliżyć i zrobić chmod plus x na warunkach, dot warunkach slash. 169 00:07:33,610 --> 00:07:35,222 Chciałbym liczbę całkowitą, proszę, 50. 170 00:07:35,222 --> 00:07:36,930 I mogliśmy grać tego Gra cały dzień. 171 00:07:36,930 --> 00:07:39,140 To będzie dokładnie zachowywać jak to miało miejsce w ciągu jednego tygodnia. 172 00:07:39,140 --> 00:07:42,860 >> OK, więc nie wszystko, co różni, z wyjątkiem nie tylko, że niewielki kawałek składni, 173 00:07:42,860 --> 00:07:45,490 lecz w górnej części, znowu ten wiersz, który miał 174 00:07:45,490 --> 00:07:49,760 pozwoliło mi stworzyć coś, co wygląda jak C programu o nazwie hello, 175 00:07:49,760 --> 00:07:51,150 zwane warunki 1. 176 00:07:51,150 --> 00:07:54,520 Ale to nie jest 0 ', a te, Jestem wykonywania bezpośrednio. 177 00:07:54,520 --> 00:07:57,620 To, a nie działa to tłumacza, którego nazwa 178 00:07:57,620 --> 00:07:59,440 okazuje się być identyczny z językiem. 179 00:07:59,440 --> 00:08:04,970 Program nazywa się PHP, a mój kod poniżej jednej linii jest przekazywana do niego. 180 00:08:04,970 --> 00:08:07,740 >> Możemy zrobić kolejny dość prosty Przykładem przypomina coś 181 00:08:07,740 --> 00:08:09,240 zrobiliśmy tygodnie temu. 182 00:08:09,240 --> 00:08:12,020 Ponownie, jest to coś w rodzaju dowolna fragment kodu 183 00:08:12,020 --> 00:08:14,000 że najwyraźniej nie co gdy go uruchomić? 184 00:08:14,000 --> 00:08:15,625 Co to będzie drukować, prawdopodobnie? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> Więc początkowo na linii 16, to powie x jest teraz 2, prawdopodobnie. 187 00:08:28,250 --> 00:08:30,920 % D jest taki sam jak $ i do printf. 188 00:08:30,920 --> 00:08:33,460 Więc to organizowania kostek, kropka, kropka, kropka, w linii 17. 189 00:08:33,460 --> 00:08:36,299 A następnie pojawi się linia 18 wywołać funkcję Cubed. 190 00:08:36,299 --> 00:08:37,600 A gdzie jest Cubed zdefiniowane? 191 00:08:37,600 --> 00:08:40,319 >> Cóż, wygląda na to, w linii 25, tak, że nie wszystko, co różni. 192 00:08:40,319 --> 00:08:42,610 Mam kilka uwag powyżej to, ale dla większości 193 00:08:42,610 --> 00:08:45,370 jest to dość proste Przenoszenie lub konwersji 194 00:08:45,370 --> 00:08:48,470 z programu C do wersji PHP. 195 00:08:48,470 --> 00:08:52,670 Ale są teraz kilka różnice, które być może należy przeskoczyć. 196 00:08:52,670 --> 00:08:56,100 Co jeszcze jest inny temat, w jaki sposób może napisać ten sam program w C? 197 00:08:56,100 --> 00:08:57,900 >> STUDENT: [niesłyszalne]. 198 00:08:57,900 --> 00:09:00,070 >> David J. MALAN: Jest Prototyp do góry nie. 199 00:09:00,070 --> 00:09:03,210 Więc PHP-- i szczerze mówiąc, Wiele nowoczesnych languages-- 200 00:09:03,210 --> 00:09:06,920 są o wiele mądrzejszy i bardziej pomocny niż C kompilatory w które was 201 00:09:06,920 --> 00:09:09,740 można umieścić funkcję tutaj, można umieścić funkcję tutaj, 202 00:09:09,740 --> 00:09:12,740 i tłumacz będzie zrobić ci przysługę czytania 203 00:09:12,740 --> 00:09:16,010 cały plik zanim zdecyduje że niektóre funkcje nie istnieje. 204 00:09:16,010 --> 00:09:17,970 Tak miło ulepszenia lat później. 205 00:09:17,970 --> 00:09:22,126 Ale jest też coś jeszcze inny albo nieobecny tutaj. 206 00:09:22,126 --> 00:09:22,626 Tak? 207 00:09:22,626 --> 00:09:25,084 >> STUDENT: [niesłyszalne]. 208 00:09:25,084 --> 00:09:27,750 David J. MALAN: Nie mamy do Oświadczam, typy zmiennych, 209 00:09:27,750 --> 00:09:31,780 Widzimy więc, że wkrótce istnieją różne typy w PHP, 210 00:09:31,780 --> 00:09:34,970 ale nie trzeba ich określić, co również jest zarówno dobre i złe. 211 00:09:34,970 --> 00:09:36,623 I jest jeszcze jedna rzeczą, której brakuje. 212 00:09:36,623 --> 00:09:37,430 >> Student: Nie ma biblioteki. 213 00:09:37,430 --> 00:09:38,630 >> David J. MALAN: Nie ma biblioteki. 214 00:09:38,630 --> 00:09:39,350 OK, więc to miłe. 215 00:09:39,350 --> 00:09:40,540 Dostajemy dużo więcej po wyjęciu z pudełka. 216 00:09:40,540 --> 00:09:43,373 Więc jest rzeczywiście dużo więcej rzeczy niż myślałem były różne. 217 00:09:43,373 --> 00:09:44,350 Jak o sposób w plecy? 218 00:09:44,350 --> 00:09:46,032 Co to jest? 219 00:09:46,032 --> 00:09:46,740 Powiedz to jeszcze raz? 220 00:09:46,740 --> 00:09:47,960 >> STUDENT: Pointer. 221 00:09:47,960 --> 00:09:49,270 >> David J. MALAN: Brak wskazówek. 222 00:09:49,270 --> 00:09:51,280 OK, przynajmniej w tym przykładzie, no. 223 00:09:51,280 --> 00:09:52,070 To jest uczciwe. 224 00:09:52,070 --> 00:09:55,090 Więc nie są wskaźnikami w PHP właściwie w ogóle. 225 00:09:55,090 --> 00:09:58,730 Istnieje coś takiego jak referencje, ale nie spędzać zbyt dużo czasu. 226 00:09:58,730 --> 00:09:59,520 I co jeszcze? 227 00:09:59,520 --> 00:10:00,185 >> STUDENT: Główny. 228 00:10:00,185 --> 00:10:01,060 David J. MALAN: Główny. 229 00:10:01,060 --> 00:10:02,768 Więc to był Biggie Myślałem o. 230 00:10:02,768 --> 00:10:04,660 Zauważ, że nie ma główny punkt wejścia. 231 00:10:04,660 --> 00:10:06,525 Po prostu zacząć pisać kod. 232 00:10:06,525 --> 00:10:08,400 I to jest rzeczywiście Będzie korzystne 233 00:10:08,400 --> 00:10:10,560 gdy przejście na chwilę do rzeczywistości za pomocą 234 00:10:10,560 --> 00:10:13,980 ten sam język dla sieci opartych programowania, dla których 235 00:10:13,980 --> 00:10:16,580 nie chcę mieć tylko jeden punkt wejścia. 236 00:10:16,580 --> 00:10:19,980 Może chcemy mieć kilka Adresy URL, kilka różnych plików 237 00:10:19,980 --> 00:10:22,930 wszystko biorąc w danych wejściowych użytkownika i wytwarza kopie. 238 00:10:22,930 --> 00:10:27,130 >> Ale tutaj jest bardzo przygnębiające Przykładem, że obiecałem ostatnio, 239 00:10:27,130 --> 00:10:30,130 a mianowicie w tym folderze tutaj, błędy ortograficzne. 240 00:10:30,130 --> 00:10:33,680 Tak więc w tym pliku speller, które nie spędzają zbyt wiele czasu na nie jest 241 00:10:33,680 --> 00:10:37,870 zasadniczo porting-- P-O-R-T. To tylko słowo, biorąc pod uwagę, gdy, powiedzmy, 242 00:10:37,870 --> 00:10:40,800 konwersji z jednego języka Zwykle na drugi ręcznie. 243 00:10:40,800 --> 00:10:45,680 >> To Przenoszenie komputera wersja speller z Pset 5. 244 00:10:45,680 --> 00:10:48,856 A ja w zasadzie próbował konwertować linia po linii to tak dokładnie, jak tylko mogę. 245 00:10:48,856 --> 00:10:51,730 Więc jeśli lubisz tego rodzaju rzeczy, to faktycznie jest warte w pewnym momencie 246 00:10:51,730 --> 00:10:54,229 ciągnąc je do siebie przez oba bok i widząc co się samo 247 00:10:54,229 --> 00:10:55,230 a co innego. 248 00:10:55,230 --> 00:10:57,510 Ale są cholernie podobne. 249 00:10:57,510 --> 00:11:00,110 Jeśli pamiętasz, co ortografii nawet wyglądało, 250 00:11:00,110 --> 00:11:02,110 nawet jeśli nie zmienić ten plik, 251 00:11:02,110 --> 00:11:04,860 to jest bardzo podobne strukturalnie z zaledwie kilku 252 00:11:04,860 --> 00:11:06,200 zmian tu i tam. 253 00:11:06,200 --> 00:11:10,140 >> Więc jest to tylko powiedzieć, że jest to dość proste do konwersji Speller 254 00:11:10,140 --> 00:11:12,000 od C do PHP. 255 00:11:12,000 --> 00:11:15,390 Ale w słowniku, nie coś jeszcze bardziej atrakcyjne. 256 00:11:15,390 --> 00:11:19,270 Pozwólcie mi iść do przodu i tworzyć mój własny plik dictionary.php. 257 00:11:19,270 --> 00:11:24,010 Tak, że nieco inaczej w nazwijmy go .php zamiast .c. 258 00:11:24,010 --> 00:11:26,980 Ponieważ jest to plik PHP, I do-- mają nieco annoyingly-- 259 00:11:26,980 --> 00:11:30,132 aby uruchomić plik tag php tak. 260 00:11:30,132 --> 00:11:32,340 I mam zamiar iść do przodu i zdefiniować kilka funkcji. 261 00:11:32,340 --> 00:11:35,770 Funkcja zwana kontrola, która jest zajmie słowem jak dawniej. 262 00:11:35,770 --> 00:11:37,520 Ale ten argument na będzie miał dolara 263 00:11:37,520 --> 00:11:39,840 podpisać, bo jesteśmy znów za pomocą PHP. 264 00:11:39,840 --> 00:11:42,350 Inną funkcją z dictionary.c było obciążenie 265 00:11:42,350 --> 00:11:47,120 i zajęło w imię słowniku, więc będę miał tej funkcji gotowy do pracy. 266 00:11:47,120 --> 00:11:50,920 >> Kolejny w dictionary.c było co? 267 00:11:50,920 --> 00:11:54,580 Rozmiar był jeden z najfajniejszych, w Przynajmniej jeśli trzymane jakieś zmiennej wokół. 268 00:11:54,580 --> 00:11:57,830 więc rozmiar po prostu musi wrócić zmienną. 269 00:11:57,830 --> 00:11:59,090 A potem nie było rozładować. 270 00:11:59,090 --> 00:12:02,830 >> Więc nie było tych czterech funkcje problemu zestaw 5 271 00:12:02,830 --> 00:12:06,770 że potrzebne do realizacji z niektóre struktury danych lub struktury. 272 00:12:06,770 --> 00:12:10,170 Więc obiecałem, że w PHP, możemy zadeklarować 273 00:12:10,170 --> 00:12:14,490 tabeli mieszania, na przykład, wszystko to łatwiej. 274 00:12:14,490 --> 00:12:17,377 W rzeczywistości, jeśli chcę tabeli mieszania, Jestem po prostu pójdzie tak 275 00:12:17,377 --> 00:12:18,460 i tam jest mój tabeli mieszania. 276 00:12:18,460 --> 00:12:21,555 I to jest uwaga, przygnębiające, że skończyliśmy na ostatnim czasie. 277 00:12:21,555 --> 00:12:23,930 I wiesz co, gdybym chciał zmienna do wielkości, dobrze, 278 00:12:23,930 --> 00:12:25,867 to nie jest wszystko jedno który różni się od C 279 00:12:25,867 --> 00:12:27,450 ale mam zamiar iść do przodu i zrobić. 280 00:12:27,450 --> 00:12:28,630 I nie zauważyć, typ danych. 281 00:12:28,630 --> 00:12:31,180 I wrócę później i rzeczywiście tu dodać kilka uwag. 282 00:12:31,180 --> 00:12:32,480 Ale co z ładunkiem? 283 00:12:32,480 --> 00:12:35,780 >> Jeśli znak dolara Słownik to nazwa mojego pliku 284 00:12:35,780 --> 00:12:39,600 a ja naprawdę chcę, aby załadować słowa w tej tabeli teraz, 285 00:12:39,600 --> 00:12:42,360 Mogę właściwie zrobić coś dość proste. 286 00:12:42,360 --> 00:12:44,880 Jedno- i jest minorly annoying-- w PHP, 287 00:12:44,880 --> 00:12:47,710 należy określić w środku z funkcji, jeśli 288 00:12:47,710 --> 00:12:51,060 Aby uzyskać dostęp do niektórych światowy Zmienna, która jest określona na zewnątrz. 289 00:12:51,060 --> 00:12:53,530 >> Ale to nie jest szczególnie ciekawe teraz. 290 00:12:53,530 --> 00:12:57,920 Co bardziej interesujące jest to dla każdego budowy, które wspomniałem poprzednio. 291 00:12:57,920 --> 00:13:01,880 I okazuje się, że PHP ma funkcję nazwie pliku, którego celem w życiu 292 00:13:01,880 --> 00:13:05,550 jest, aby otworzyć plik i przeczytać z jego liniami na tablicę 293 00:13:05,550 --> 00:13:06,840 i przekazuje je z powrotem do. 294 00:13:06,840 --> 00:13:12,170 >> To znaczy mogę zrobić słownika tak że teraz skutecznie gdy zgłoszę pliku, 295 00:13:12,170 --> 00:13:15,472 to będzie mnie z powrotem do rąk tablica słów z pliku. 296 00:13:15,472 --> 00:13:16,430 To nie wszystko, co dobre. 297 00:13:16,430 --> 00:13:20,130 To wciąż będzie linia słów, coś liniowych. 298 00:13:20,130 --> 00:13:23,880 Ale mogę śmiało iteracji nad każdym z tych słów za pomocą 299 00:13:23,880 --> 00:13:25,710 że składnia widzieliśmy krótko ostatni. 300 00:13:25,710 --> 00:13:27,940 I zobaczysz go więcej w nadchodzącym Pset. 301 00:13:27,940 --> 00:13:32,070 >> Ale teraz mam iteracji pętli w ciągu każdego słowa w słowniku. 302 00:13:32,070 --> 00:13:36,100 I na każdej iteracji, przypominam, że jestem wywołanie bieżące słowo "słowo". 303 00:13:36,100 --> 00:13:39,790 A wszystko to będzie podjąć, aby umieścić słowo do słownika 304 00:13:39,790 --> 00:13:43,530 będzie odgadnąć słowo "prawda". 305 00:13:43,530 --> 00:13:44,740 To moja funkcja insert. 306 00:13:44,740 --> 00:13:46,661 To moja funkcja obciążenia dla mojego słownika. 307 00:13:46,661 --> 00:13:49,410 Teraz to trochę oszustwo, ponieważ, wiesz co, nie ma właściwie 308 00:13:49,410 --> 00:13:52,920 backslash n na koniec słów że powinienem chyba pozbyć, 309 00:13:52,920 --> 00:13:56,380 ale to nie jest problem, ponieważ PHP Funkcja o nazwie kotlet który dosłownie 310 00:13:56,380 --> 00:13:58,480 kotlety off jeden znak na samym końcu. 311 00:13:58,480 --> 00:13:59,400 Więc nie ma problemu. 312 00:13:59,400 --> 00:14:02,199 Przeszliśmy dalej i rzeczywiście skrócona, że ​​tylko to. 313 00:14:02,199 --> 00:14:05,240 A teraz mam chyba śledzić od wielkości, więc niech przynajmniej zrobić this-- 314 00:14:05,240 --> 00:14:05,835 Wielkość ++. 315 00:14:05,835 --> 00:14:07,339 Mogę to zrobić, jak wcześniej. 316 00:14:07,339 --> 00:14:10,380 I wtedy to prawdopodobnie będzie działa dobrze, więc to zwróci true. 317 00:14:10,380 --> 00:14:10,930 Gotowe. 318 00:14:10,930 --> 00:14:11,797 PSET 5. 319 00:14:11,797 --> 00:14:13,545 >> [Śmiech] 320 00:14:13,545 --> 00:14:14,420 >> David J. MALAN: OK. 321 00:14:14,420 --> 00:14:16,628 Mamy zamiar zrobić to jeszcze raz z następnym Pset też. 322 00:14:16,628 --> 00:14:18,730 A co z rozmiarem? 323 00:14:18,730 --> 00:14:22,080 Cóż, mam nadzieję, że jest to o jeden jak można się spodziewać po raz ostatni, 324 00:14:22,080 --> 00:14:24,460 chociaż muszę zrobić ten głupi globalna sprawa. 325 00:14:24,460 --> 00:14:26,610 To tylko artefakt od konstrukcja języka jest. 326 00:14:26,610 --> 00:14:28,450 >> Ale kontrola jest trochę bardziej interesująca. 327 00:14:28,450 --> 00:14:31,420 Więc gdybym przeszedł w dolara podpisać słowo, po raz pierwszy 328 00:14:31,420 --> 00:14:34,060 Aby mieć dostęp do że zmienna globalna tabela. 329 00:14:34,060 --> 00:14:36,700 A teraz, jeśli chcę sprawdzić, czy słowo jest tam, 330 00:14:36,700 --> 00:14:44,350 Mogę tylko powiedzieć, że jeśli prawdą jest, że Poniżej znajduje się w tabeli, 331 00:14:44,350 --> 00:14:49,957 następnie iść do przodu i powrót true; innego, return false. 332 00:14:49,957 --> 00:14:51,180 Gotowe. 333 00:14:51,180 --> 00:14:52,440 Drugą połowę PSET 5. 334 00:14:52,440 --> 00:14:54,540 >> W porządku, więc ponownie, jestem cięcia kilka zakrętów. 335 00:14:54,540 --> 00:14:56,831 W uczciwości, powinienem chyba spędzić kilka sekund 336 00:14:56,831 --> 00:14:58,300 w tej realizacji. 337 00:14:58,300 --> 00:15:01,860 I prawdopodobnie nie powinien kpić wszystko godziny można umieścić na Pset tyle. 338 00:15:01,860 --> 00:15:04,045 Więc strtolower jest funkcją. 339 00:15:04,045 --> 00:15:06,670 Coś podobnego egzystencjalizm w ° C, co najmniej znaków 340 00:15:06,670 --> 00:15:08,560 ale PHP dostał całą wersję napisów. 341 00:15:08,560 --> 00:15:11,226 >> To będzie wszystko na siłę na małe litery, które niektórzy z was 342 00:15:11,226 --> 00:15:14,944 może zrobić, co do canonicalize pan umieszczenie w słowniku. 343 00:15:14,944 --> 00:15:16,360 I teraz można to zrobić w C, zbyt. 344 00:15:16,360 --> 00:15:17,780 To nie ma nic wspólnego z PHP. 345 00:15:17,780 --> 00:15:20,260 >> Ale za każdym razem trzeba Boolean warunkiem, 346 00:15:20,260 --> 00:15:22,680 jak coś na linii 10 tam, który jest tylko 347 00:15:22,680 --> 00:15:27,145 będzie ocenić na true lub fałszywe, a jeśli jeszcze jasno swoje 348 00:15:27,145 --> 00:15:33,620 zwraca prawdę lub fałsz, mogłem po prostu naprawdę to bardziej sexy 349 00:15:33,620 --> 00:15:38,360 i po prostu zrobić coś takiego. 350 00:15:38,360 --> 00:15:40,500 Tak, że nie jest moją funkcją wyboru. 351 00:15:40,500 --> 00:15:42,560 Prawo, jeśli Boolean zwraca true lub false 352 00:15:42,560 --> 00:15:44,630 niech po prostu odesłać go od razu. 353 00:15:44,630 --> 00:15:47,340 >> I jest kilka innych poprawek Mogłem tu i tam. 354 00:15:47,340 --> 00:15:51,380 Load-- wyładowania, przy okazji, że się robi. 355 00:15:51,380 --> 00:15:52,850 Nic nie robić. 356 00:15:52,850 --> 00:15:55,840 Ponieważ wszystkie pamięci w PHP i wielu innych języków 357 00:15:55,840 --> 00:15:57,570 jest rzeczywiście udało dla Ciebie. 358 00:15:57,570 --> 00:16:00,330 Tak więc, podczas gdy w C, jak nauczyłem się boleśnie, 359 00:16:00,330 --> 00:16:04,700 cokolwiek malloc lub calloc lub realloc, trzeba uwolnić się. 360 00:16:04,700 --> 00:16:08,770 Cokolwiek fopen, musisz fclose, tak, że zasoby są ostatecznie uwolniony 361 00:16:08,770 --> 00:16:11,690 i narzędzia, takie jak Valgrind nie zauważyć i nie narzekam, 362 00:16:11,690 --> 00:16:13,570 co jest dobrą rzeczą, aby uruchomić na nich. 363 00:16:13,570 --> 00:16:16,190 >> Ale na pewno nie musi być jakiś haczyk, prawda? 364 00:16:16,190 --> 00:16:19,400 W przeciwnym razie, możemy rodzaju marne cała masa tygodni. 365 00:16:19,400 --> 00:16:23,270 Więc jest jakaś liczba powodów Dlatego jakby przy tej trajektorii, 366 00:16:23,270 --> 00:16:24,440 ale jest to kompromis. 367 00:16:24,440 --> 00:16:25,820 Racja, to było tematyczny. 368 00:16:25,820 --> 00:16:29,690 >> Więc co może kompromis tutaj, w ruchu, z C do PHP? 369 00:16:29,690 --> 00:16:33,250 Czuje się jak do tej pory wszystko wygrać inne niż nieco brzydoty tu czy tam. 370 00:16:33,250 --> 00:16:34,040 Tak. 371 00:16:34,040 --> 00:16:34,700 Co to jest? 372 00:16:34,700 --> 00:16:36,064 >> STUDENT: [niesłyszalne] pamięci. 373 00:16:36,064 --> 00:16:36,980 David J. MALAN: Prędkość. 374 00:16:36,980 --> 00:16:37,479 OK. 375 00:16:37,479 --> 00:16:40,720 Cóż, moja prędkość była dość szybka. 376 00:16:40,720 --> 00:16:42,020 Prawda? 377 00:16:42,020 --> 00:16:44,320 Ale szybkość realizacji programu? 378 00:16:44,320 --> 00:16:45,580 OK, więc to słuszna uwaga. 379 00:16:45,580 --> 00:16:50,930 >> Więc jak to się stało, ja z góry cued się zarówno moje rozwiązanie try, jeden 380 00:16:50,930 --> 00:16:53,510 Miałem na wielkim pokładzie była próba rozwiązania oparte 381 00:16:53,510 --> 00:16:55,510 i muszę, że w tym katalogu tutaj. 382 00:16:55,510 --> 00:16:58,510 Tak więc w chwili, mogę śmiało uruchomić to w Biblii Króla Jakuba, 383 00:16:58,510 --> 00:16:59,657 nacisnąć Enter. 384 00:16:59,657 --> 00:17:01,990 I mam nadzieję, że to jest poprawne Realizacja na końcu, 385 00:17:01,990 --> 00:17:05,109 daje mi w sumie czas 0,38 sekund, które 386 00:17:05,109 --> 00:17:07,270 jeden nieco arbitralne przykład. 387 00:17:07,270 --> 00:17:09,270 >> I jeśli teraz przejść do tego drugie okno terminala 388 00:17:09,270 --> 00:17:14,569 tutaj, gdzie po raz pierwszy otworzył gedit, niech mi iść do dzisiejszej code--, które ponownie, 389 00:17:14,569 --> 00:17:19,650 jest w tym katalogu here-- i pozwól mi iść do przodu i uruchamiania Speller. 390 00:17:19,650 --> 00:17:23,470 Tak po prostu, aby być jasne, to jest wersja PHP. 391 00:17:23,470 --> 00:17:25,170 Jestem po prostu pokazując szczyt tutaj. 392 00:17:25,170 --> 00:17:32,020 >> Więc jeśli ja Speller z tyldy CS50 Pset 5 tekstów, King James, wprowadź. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 To jeszcze szybciej niż pisanie w C, a całkowity czas 395 00:17:43,050 --> 00:17:47,650 jest informacja, 0,93, podczas gdy mój Realizacja C oparte wynosiła 0,38. 396 00:17:47,650 --> 00:17:49,110 Więc jest to nietrywialne różnica. 397 00:17:49,110 --> 00:17:51,100 >> A to tylko na jednym pliku. 398 00:17:51,100 --> 00:17:53,480 Jeśli było uruchomienie dwóch programy porównaniu wielkim pokładzie 399 00:17:53,480 --> 00:17:56,510 i mają całą masę wejść przetestowane, to z pewnością dodać. 400 00:17:56,510 --> 00:18:00,310 I gdybyśmy mieli jeszcze większych zbiorów danych, to też będzie dodać jeszcze bardziej. 401 00:18:00,310 --> 00:18:04,820 Więc tak, płacąc pewną cenę prędkości jest w istocie. 402 00:18:04,820 --> 00:18:05,470 Co jeszcze? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Tak? 405 00:18:08,860 --> 00:18:10,340 >> STUDENT: Kwota wykorzystania pamięci RAM. 406 00:18:10,340 --> 00:18:11,756 >> David J. MALAN: Kwota wykorzystania pamięci RAM. 407 00:18:11,756 --> 00:18:15,380 Więc nie dać jedna sekunda że podczas pisania tego PHP 408 00:18:15,380 --> 00:18:17,300 wersja jak dużo Pamięć byłem korzystania. 409 00:18:17,300 --> 00:18:22,080 Jestem kompletnie odroczenie że do PHP Sam i kto napisał ten program. 410 00:18:22,080 --> 00:18:24,500 I to może być OK, Ale jeśli rzeczywiście bardzo 411 00:18:24,500 --> 00:18:28,420 dbają o wyciskanie tyle wydajność z mojego programu lub na mojej stronie internetowej 412 00:18:28,420 --> 00:18:31,150 lub z jakiegokolwiek narzędzia Jestem budynku, może 413 00:18:31,150 --> 00:18:33,310 PHP, rzeczywiście, nie jest właściwym językiem. 414 00:18:33,310 --> 00:18:36,330 >> A w rzeczywistości, dlatego, dla przykład wiele internetowej servers-- 415 00:18:36,330 --> 00:18:38,980 rzeczywiste programy służyć internetowej content-- 416 00:18:38,980 --> 00:18:41,810 nie są napisane w PHP lub w Pythonie lub Ruby. 417 00:18:41,810 --> 00:18:44,630 Są one napisane, jak będziesz teraz robić z Pset 6, 418 00:18:44,630 --> 00:18:48,120 w C tak, że można wycisnąć każdy kawałek z niej wydajności 419 00:18:48,120 --> 00:18:50,780 i naprawdę sprawuje drobnoziarnista kontrola nad tym, co jest 420 00:18:50,780 --> 00:18:52,980 dzieje się pod spodem kaptur, a nie tylko brać je 421 00:18:52,980 --> 00:18:54,890 za pewnik niektóre wyższe Struktura danych poziom. 422 00:18:54,890 --> 00:18:58,071 >> Zastanów się, mimo wszystko, kto w PHP realizowane 423 00:18:58,071 --> 00:19:00,070 że pojęcie hash table-- to rzeczywiście więcej 424 00:19:00,070 --> 00:19:04,260 poprawnie nazywa asocjacyjną array-- Czy on lub ona ma jakiś pomysł, jaki rodzaj 425 00:19:04,260 --> 00:19:07,090 wejść masz zamiar być wprowadzenie do struktury? 426 00:19:07,090 --> 00:19:08,260 Tak oczywiście nie jest, prawda? 427 00:19:08,260 --> 00:19:10,340 To narzędzie ogólny w zestaw narzędzi, który jest 428 00:19:10,340 --> 00:19:13,430 pod warunkiem, dla każdego, kto chce z niego korzystać, a więc na pewno nie 429 00:19:13,430 --> 00:19:17,680 nie mogą być optymalizowane ostatecznie o dokładnie to, co chcesz zrobić. 430 00:19:17,680 --> 00:19:21,180 >> Więc czas rozwoju handlu offs-- moc różnić, wydajność może się różnić, 431 00:19:21,180 --> 00:19:23,120 złożoność lub wykorzystanie pamięci może się różnić. 432 00:19:23,120 --> 00:19:24,820 A więc to, co znajdziesz w coraz większym stopniu jest to, że nie ma 433 00:19:24,820 --> 00:19:26,570 będzie inna narzędzia dla handlu. 434 00:19:26,570 --> 00:19:31,160 I rzeczywiście, w większości super Ostateczne projekty ludzi w tej klasie, 435 00:19:31,160 --> 00:19:34,360 wierzcie lub nie, C nie będzie być prawo używać języka. 436 00:19:34,360 --> 00:19:37,880 >> I rzeczywiście, jedną z wynos ostatecznie dla każdej klasy jak ten 437 00:19:37,880 --> 00:19:40,510 jest, aby myślisz, dobrze, co należy zdjąć 438 00:19:40,510 --> 00:19:42,710 półka, gdy chcesz rozwiązać jakiś problem. 439 00:19:42,710 --> 00:19:46,720 I rzeczywiście, to przekroczymy ten most nawet więcej, jak patrzymy na kilku językach 440 00:19:46,720 --> 00:19:47,920 nawet po dzień dzisiejszy. 441 00:19:47,920 --> 00:19:50,530 >> Więc teraz do przejścia być może bardziej zaznajomieni kontekst 442 00:19:50,530 --> 00:19:52,480 za pomocą języka, takich jak PHP. 443 00:19:52,480 --> 00:19:56,720 To dość powszechne w użyciu na wiersz poleceń, pisania skryptów 444 00:19:56,720 --> 00:19:59,050 tak jak ja, ale to wiele, wiele więcej wspólnego. 445 00:19:59,050 --> 00:20:02,350 I miał być stosowany w postaci plików, które zazwyczaj kończą 446 00:20:02,350 --> 00:20:05,060 w .php-- ale to nie prerequisite-- 447 00:20:05,060 --> 00:20:07,990 że sami generują treści internetowych. 448 00:20:07,990 --> 00:20:11,310 >> Więc pozwól mi iść do przodu i otworzyć kilka Przykłady I przygotowana. 449 00:20:11,310 --> 00:20:15,100 I są to właściwie rodzaj prawda historie w tym jedna z pierwszych rzeczy, 450 00:20:15,100 --> 00:20:18,200 I kiedykolwiek się po zakończeniu CS50, a może, jak sądzę, 451 00:20:18,200 --> 00:20:21,350 Lat CS51 temu jest mój współlokator i ja pomoc 452 00:20:21,350 --> 00:20:24,320 do uruchomienia studiów stacjonarnych Program sportowa, która w tym czasie, 453 00:20:24,320 --> 00:20:28,610 był studentem pierwszego roku rejestracji dla różnych sport, wypełniając kartkę papieru, 454 00:20:28,610 --> 00:20:31,800 jak go nazywano, spacery przez podwórze do Wigglesworth, 455 00:20:31,800 --> 00:20:34,030 i upuszczenie go w niektórych Proctora drzwi spadek. 456 00:20:34,030 --> 00:20:37,210 A następnie on lub ona przejść przez je, a następnie ręcznie rzeczywiście napisz do nas 457 00:20:37,210 --> 00:20:39,140 które zostały zarejestrowane przez jakiś sport. 458 00:20:39,140 --> 00:20:41,166 >> Tak wyraźnie, okazja do poprawy. 459 00:20:41,166 --> 00:20:44,040 Te dni, można włączyć tylko Formy Google, ale już w dzień, 460 00:20:44,040 --> 00:20:46,914 musieliśmy to rzeczywiście osiągnąć for-- nawet nie tak dawno ago-- dotrzeć 461 00:20:46,914 --> 00:20:49,410 do programowania język, który nie został PHP. 462 00:20:49,410 --> 00:20:51,200 W tym czasie było coś, co nazywa Perl, 463 00:20:51,200 --> 00:20:52,890 który wyszedł z mody, ponieważ. 464 00:20:52,890 --> 00:20:54,160 Jednak chodzi o to, same. 465 00:20:54,160 --> 00:20:58,940 >> I zasadniczo usiadł spróbować do portu idzie wersje Perla na PHP 466 00:20:58,940 --> 00:21:03,710 ale w pełni zrzeczenie się, nie daje każdy myśli do estetyki jeszcze. 467 00:21:03,710 --> 00:21:04,960 Więc tutaj jest strona internetowa. 468 00:21:04,960 --> 00:21:05,670 Ten plik jest. 469 00:21:05,670 --> 00:21:09,470 Jeśli powiększać, jego pozornie nazywa froshim0.php 470 00:21:09,470 --> 00:21:12,060 tylko dlatego, że jest to nasz pierwszy Przykładem w tej serii. 471 00:21:12,060 --> 00:21:15,970 I zauważył, że ma to, co wydaje być bardzo brzydki formularza HTML, 472 00:21:15,970 --> 00:21:18,680 ale forma jest ciekawa ponieważ umożliwia 473 00:21:18,680 --> 00:21:21,910 mnie o dostarczenie danych użytkownika do przeglądarki. 474 00:21:21,910 --> 00:21:27,730 >> Teraz ostatni raz, kiedy mieliśmy formularz, aby którego nie możemy przedstawić naszą parametr zapytania, 475 00:21:27,730 --> 00:21:30,450 Parametr kolejki jak go nazywano? 476 00:21:30,450 --> 00:21:31,330 Więc do Google, prawda? 477 00:21:31,330 --> 00:21:34,090 Całkowicie punted na idei cokolwiek z tego wejścia. 478 00:21:34,090 --> 00:21:36,160 >> Ale dziś, że rozpocznie produkcję wyjście. 479 00:21:36,160 --> 00:21:39,420 I zachowanie Idę zobaczyć tutaj początkowo jest dość banalna. 480 00:21:39,420 --> 00:21:42,980 David, będę zaznaczać płeć tu powiedzieć Matthews tutaj. 481 00:21:42,980 --> 00:21:43,800 Nie będę kapitanem. 482 00:21:43,800 --> 00:21:45,410 Zamierzam kliknij Register. 483 00:21:45,410 --> 00:21:50,720 I zauważyć, że adres URL jest zmienił się zarejestrować-0.php, 484 00:21:50,720 --> 00:21:52,310 i to nie jest to brzydki tekst tutaj. 485 00:21:52,310 --> 00:21:54,460 I nie dał do myślenia Formatowanie tego. 486 00:21:54,460 --> 00:21:59,900 >> Ale co ciekawe, trzy wartości zostały najwyraźniej przeszedł w. 487 00:21:59,900 --> 00:22:02,960 To jest rodzaj z PHP równoważne printf-- 488 00:22:02,960 --> 00:22:06,330 zobaczymy co to naprawdę nazywa w bit-- że po prostu wypisuje 489 00:22:06,330 --> 00:22:08,300 co przeszedł do niego. 490 00:22:08,300 --> 00:22:11,414 Więc to sugeruje, że tej formie miał co najmniej trzy pola do tego, 491 00:22:11,414 --> 00:22:12,580 i zobaczył mnie wpisać je w. 492 00:22:12,580 --> 00:22:15,739 Jednym z nich było moje imię, był płci, był internat. 493 00:22:15,739 --> 00:22:18,780 I kapitan nawet nie wysyłane do serwer, bo nie to sprawdzić. 494 00:22:18,780 --> 00:22:22,150 >> Więc to znaczy, najwyraźniej, w momencie składania rzeczy w internecie, 495 00:22:22,150 --> 00:22:26,830 nie tylko czasami robi URL change-- czasem nie. 496 00:22:26,830 --> 00:22:30,330 W rzeczywistości, zmienioną nazwą ale to, co nie ma w adresie URL 497 00:22:30,330 --> 00:22:32,861 które widzieliśmy ostatnio z Google. 498 00:22:32,861 --> 00:22:33,360 Tak? 499 00:22:33,360 --> 00:22:34,380 >> Student: Nie łańcuch zapytania 500 00:22:34,380 --> 00:22:35,220 >> David J. MALAN: Nie ma znaków zapytania. 501 00:22:35,220 --> 00:22:37,270 Nie ma znaku zapytania coś. 502 00:22:37,270 --> 00:22:40,050 Nie ma znaku zapytania q równa się koty, jak ostatnim razem. 503 00:22:40,050 --> 00:22:42,170 I na pewno nie Nazwa znak zapytania jest równa 504 00:22:42,170 --> 00:22:46,310 David lub akademiku wynosi Matthews, więc gdzie jest, że wszystko zmierza? 505 00:22:46,310 --> 00:22:51,290 >> Cóż, pozwól mi wrócić do gedit tutaj i otworzyć pierwszą z tych plików 506 00:22:51,290 --> 00:22:57,020 w moim vhost, hosta lokalnego, publicznego Katalog tutaj i przejdź do froshim0. 507 00:22:57,020 --> 00:23:02,060 Okazuje się, że prawie wszystkie strony tylko HTML. 508 00:23:02,060 --> 00:23:05,410 A to może być dla ciebie obce, ale wkrótce będzie bardziej z Pset 6 509 00:23:05,410 --> 00:23:07,370 i PSET 7 i PSET 8. 510 00:23:07,370 --> 00:23:09,160 Ale to tylko strona HTML. 511 00:23:09,160 --> 00:23:12,400 >> I ciekawe rzeczy wydaje się być tutaj. 512 00:23:12,400 --> 00:23:16,290 Tag atrybut formularza, którego akcja ma wartość rejestru 0. 513 00:23:16,290 --> 00:23:18,890 Dlatego, kiedy złożyć to, to idzie się do tego pliku. 514 00:23:18,890 --> 00:23:20,620 Metoda różni today-- ale po. 515 00:23:20,620 --> 00:23:23,120 Tak więc okazuje się, że jest co najmniej dwie metody stosowane w sieci 516 00:23:23,120 --> 00:23:24,911 do przesyłania informacji z przeglądarki do serwera. 517 00:23:24,911 --> 00:23:25,980 Get stawia go w URL. 518 00:23:25,980 --> 00:23:27,950 Napisz stawia go w innym miejscu. 519 00:23:27,950 --> 00:23:30,570 A kiedy i dlaczego może Cię rzeczywiście chcesz na stronie internetowej 520 00:23:30,570 --> 00:23:34,110 używać stanowisko to zamiast z dostać, po prostu intuicyjnie? 521 00:23:34,110 --> 00:23:37,080 Każda strona internetowa. 522 00:23:37,080 --> 00:23:42,010 Jakie dane powinny być przekazywane tylko przez wnioskowanie teraz pocztą, w przeciwieństwie 523 00:23:42,010 --> 00:23:45,184 dostać, jeśli widzieliśmy dwie różnice? 524 00:23:45,184 --> 00:23:46,350 STUDENT: [niesłyszalne] zabezpieczyć. 525 00:23:46,350 --> 00:23:47,790 David J. MALAN: Jeśli chcesz coś się bezpieczne. 526 00:23:47,790 --> 00:23:50,360 Więc można wpisać hasło na stronie internetowej, karty kredytowej 527 00:23:50,360 --> 00:23:53,030 na stronie internetowej będzie rodzaj to optymalna 528 00:23:53,030 --> 00:23:56,220 jeśli przeglądarka umieścić że wartość wewnątrz adresu URL. 529 00:23:56,220 --> 00:23:57,680 Dlaczego? 530 00:23:57,680 --> 00:24:00,059 Widzisz to, co nie wydaje się być taka wielka sprawa, 531 00:24:00,059 --> 00:24:03,350 ale kursy są bardzo często chodzić ci z dala od komputera lub korzystania z komputera 532 00:24:03,350 --> 00:24:05,310 laboratoria, a więc ktoś, innego lub nawet współlokator 533 00:24:05,310 --> 00:24:08,220 można łatwo dojść i zobaczyć że prywatne informacje. 534 00:24:08,220 --> 00:24:10,220 Podczas wysyłania wiadomości e-mail za pośrednictwem Internetu, to prawdopodobnie 535 00:24:10,220 --> 00:24:12,350 nie chce, że zakończenie danych w adresie URL. 536 00:24:12,350 --> 00:24:15,266 I tak tam dowolną ilość powodów Dlatego może chcemy umieścić go tutaj. 537 00:24:15,266 --> 00:24:18,610 I photos-- rację, nie mogę nawet dość sobie wyobrazić, jak można wziąć grafikę, 538 00:24:18,610 --> 00:24:21,480 jak JPEG, i umieścić go w URL. 539 00:24:21,480 --> 00:24:22,330 Możesz to zrobić. 540 00:24:22,330 --> 00:24:25,840 Jest sposoby kodowania, ale to po prostu nie proste tak. 541 00:24:25,840 --> 00:24:29,030 >> Więc zarejestruj 0 jest rzeczywiście bardzo rozczarowująca. 542 00:24:29,030 --> 00:24:31,610 Wszystko mówi, dosłownie jest to. 543 00:24:31,610 --> 00:24:35,910 Drukuje się wewnątrz niektórych HTML tagi następujące. 544 00:24:35,910 --> 00:24:38,640 Mam tu znacznik PHP zagnieżdżone wewnątrz pre tag. 545 00:24:38,640 --> 00:24:42,300 "Pre" oznacza po prostu wstępnie sformatowany tekst, pojedynczo rozmieszczone, jak maszyna do pisania. 546 00:24:42,300 --> 00:24:44,836 >> Printr jest funkcja rekurencyjna druku. 547 00:24:44,836 --> 00:24:46,710 I jest jeszcze ten Ciekawostką tutaj. 548 00:24:46,710 --> 00:24:48,835 I wrócimy do tego bo nie ma innych, 549 00:24:48,835 --> 00:24:51,140 ale znak dolara podkreślenia Wydaje się, że po 550 00:24:51,140 --> 00:24:56,110 zmienne w PHP, w którym wszystko wysyłanych z przeglądarki do serwera 551 00:24:56,110 --> 00:24:58,040 zostanie zapisane dla Ciebie. 552 00:24:58,040 --> 00:25:00,930 I zobaczymy, jak się na że informacje wkrótce. 553 00:25:00,930 --> 00:25:04,000 >> Ale najpierw wróćmy do nieco inny przykład. 554 00:25:04,000 --> 00:25:09,050 Wchodząc register-- lub raczej froshims1.php, 555 00:25:09,050 --> 00:25:10,470 które wygląda trochę inaczej. 556 00:25:10,470 --> 00:25:12,670 Wziąłem trochę więcej wysiłek z formatowaniem, 557 00:25:12,670 --> 00:25:14,370 choć wciąż dość brzydki. 558 00:25:14,370 --> 00:25:16,990 Ale mam zamiar iść do przodu i wpisz "David" teraz. 559 00:25:16,990 --> 00:25:17,850 Mężczyzna. 560 00:25:17,850 --> 00:25:19,360 Sprawdzimy "kapitan" tym razem. 561 00:25:19,360 --> 00:25:20,660 Zrobimy Matthews. 562 00:25:20,660 --> 00:25:22,430 I zarejestrować się. 563 00:25:22,430 --> 00:25:24,110 >> I tym razem mówi, hm, nie bardzo. 564 00:25:24,110 --> 00:25:26,180 W porządku, więc co zarejestrować jeden? 565 00:25:26,180 --> 00:25:30,509 Pozwól mi wejść do otwartego rejestru 1 and-- hm. 566 00:25:30,509 --> 00:25:32,300 W porządku, więc jest to ciekawe, a to 567 00:25:32,300 --> 00:25:34,880 jest krokiem w kierunku teraz więcej ciekawych programów. 568 00:25:34,880 --> 00:25:38,970 >> Zauważ górze ten plik ma PHP tag jak również niektóre komentarze. 569 00:25:38,970 --> 00:25:42,590 I to są, na razie, rozproszenia więc niech po prostu pozbyć się tych uwag 570 00:25:42,590 --> 00:25:47,070 tak jak oni w C. I twierdzą, z tego kawałka kodu z komentarzem 571 00:25:47,070 --> 00:25:49,280 że ten kod jest walidacji złożenia. 572 00:25:49,280 --> 00:25:51,690 >> Cóż, okazuje się, że zmienne, takie jak znak dolara 573 00:25:51,690 --> 00:25:53,739 podkreślenia stanowiska są zwany Super globalnych. 574 00:25:53,739 --> 00:25:55,530 Są jak te specjalne zmienne globalne 575 00:25:55,530 --> 00:25:58,840 które są obecnie tylko wielokierunkowy dostępne w ramach programu. 576 00:25:58,840 --> 00:26:03,870 I można użyć notacji nawiasu kwadratowego do indeksu do nich nie przy użyciu numerów 577 00:26:03,870 --> 00:26:07,460 jak 0, 1, 2, 3, ale rzeczywiste słowa. 578 00:26:07,460 --> 00:26:12,100 >> Tak więc można myśleć o znak dolara podkreślenia stanowiska jako rodzaj tabeli mieszania 579 00:26:12,100 --> 00:26:15,920 że można przekazać klucz do odnośnika, a słowo-w nawiasach kwadratowych, 580 00:26:15,920 --> 00:26:19,370 i to będzie oddać wartość, że użytkownik faktycznie świadczona. 581 00:26:19,370 --> 00:26:21,210 PHP posiada funkcję że tak zwana pusta 582 00:26:21,210 --> 00:26:23,720 mówi tak lub nie, to zmienna jest pusta lub nie. 583 00:26:23,720 --> 00:26:27,250 Mamy te podwójne paski, co oznacza po prostu, lub jak w C. 584 00:26:27,250 --> 00:26:31,740 >> Więc w efekcie, to jest tylko linia 4 mówiąc, jeśli użytkownik nie podał nazwy 585 00:26:31,740 --> 00:26:36,540 lub nie dać lub nie płeć dać akademiku, iść do przodu i przekierować go 586 00:26:36,540 --> 00:26:38,184 lub jej pośrednictwem tej linii tutaj. 587 00:26:38,184 --> 00:26:40,600 Więc to jest trochę tajemnicze, ale to tylko oznacza dosłownie 588 00:26:40,600 --> 00:26:43,330 wrócić do tego miejsca, więc Punts użytkownika 589 00:26:43,330 --> 00:26:45,420 z powrotem tam, gdzie on pochodzi. 590 00:26:45,420 --> 00:26:47,880 Ale to trochę nieeleganckie się, że trudno kodowane go. 591 00:26:47,880 --> 00:26:52,150 >> Ale co, jeśli to, czy stan nie ocenia się prawdziwe? 592 00:26:52,150 --> 00:26:55,790 Co zrobić, jeśli użytkownik podał mi jego lub jej imię i akademik i płeć? 593 00:26:55,790 --> 00:26:58,540 Że jeśli warunek nie jest będzie ocenić wartość true, 594 00:26:58,540 --> 00:27:00,650 więc nie trafić do wyjścia w linii 7. 595 00:27:00,650 --> 00:27:01,680 Więc co się dzieje? 596 00:27:01,680 --> 00:27:03,880 I to jest to, co jest ciekawe o PHP. 597 00:27:03,880 --> 00:27:07,470 >> Możesz wpaść i się z trybu PHP, że tak powiem. 598 00:27:07,470 --> 00:27:10,985 Jeśli chcesz jakiś kod do wykonania, można otworzyć i zamknąć tag PHP 599 00:27:10,985 --> 00:27:13,010 i umieścić kod tam jak zrobiłem tutaj. 600 00:27:13,010 --> 00:27:16,810 Jak najszybciej zamknąć tag PHP, serwer 601 00:27:16,810 --> 00:27:19,407 jest po prostu będzie wypluwać cokolwiek umieścić tam. 602 00:27:19,407 --> 00:27:21,740 I rzeczywiście, była to część Oryginalny projekt PHP, 603 00:27:21,740 --> 00:27:25,280 na lepsze na gorsze, to było przemieszania kodu i znaczników 604 00:27:25,280 --> 00:27:25,920 język. 605 00:27:25,920 --> 00:27:28,670 I zobaczymy, że to bardzo szybko nakładanych na bałagan. 606 00:27:28,670 --> 00:27:31,280 I tak zrobimy lepiej niż to ostatecznie, ale tylko 607 00:27:31,280 --> 00:27:35,620 zauważyć, łatwość, z jaką jestem faktycznie w stanie wykonać jakąś logikę. 608 00:27:35,620 --> 00:27:37,440 >> Ale wciąż nieco rozczarowująca. 609 00:27:37,440 --> 00:27:41,210 Otwórzmy się wersja dwa Frosh IM, które 610 00:27:41,210 --> 00:27:44,270 najwyraźniej przedkłada register2.php. 611 00:27:44,270 --> 00:27:47,600 Więc ten plik rzeczywiście dzieje wyglądać prawie tak samo. 612 00:27:47,600 --> 00:27:50,780 Mam zamiar iść do Frosh IM 2. 613 00:27:50,780 --> 00:27:53,050 Ale w Frosh IM 2, Zobaczmy, co się dzieje. 614 00:27:53,050 --> 00:27:58,110 >> David, kliknij przycisk opcji, jak to się nazywa; Matthews, nie kapitan. 615 00:27:58,110 --> 00:27:59,230 Zarejestruj. 616 00:27:59,230 --> 00:28:00,130 Jesteś zarejestrowany. 617 00:28:00,130 --> 00:28:00,700 Nie bardzo. 618 00:28:00,700 --> 00:28:02,574 Oh wait, po prostu nie że przykład, nie możemy? 619 00:28:02,574 --> 00:28:04,520 Dobrze, stand by. 620 00:28:04,520 --> 00:28:06,602 My zrobimy trzy. 621 00:28:06,602 --> 00:28:08,560 Najwyraźniej coś jest o się stało z Gmail. 622 00:28:08,560 --> 00:28:09,600 Będziemy się tam dostać. 623 00:28:09,600 --> 00:28:11,900 >> Więc Frosh IM 3 wygląda tak. 624 00:28:11,900 --> 00:28:13,050 Nie inaczej. 625 00:28:13,050 --> 00:28:19,850 Ale kiedy robię David, mężczyzna, Matthews i Zarejestruj się, to trzeci i ostatni wersja 626 00:28:19,850 --> 00:28:22,230 roszczenia, po prostu ci, są zarejestrowanymi naprawdę. 627 00:28:22,230 --> 00:28:23,560 To jakby nieistotne. 628 00:28:23,560 --> 00:28:25,600 Ale twierdzą, ze to Trzecia i ostatnia wersja 629 00:28:25,600 --> 00:28:30,610 Mam teraz odtworzyć dokładnie to, co my współlokator i zbudowany dla Frosh IM 630 00:28:30,610 --> 00:28:31,731 lat temu. programu 631 00:28:31,731 --> 00:28:32,480 I to było proste. 632 00:28:32,480 --> 00:28:34,330 Nie ma bazy danych, nie arkusza kalkulacyjnego Excel. 633 00:28:34,330 --> 00:28:36,450 Ale co ważniejsze, nie było więcej pracy 634 00:28:36,450 --> 00:28:42,520 bo to, co zrobiliśmy z tym programem było rzeczywiście email Proctor, który 635 00:28:42,520 --> 00:28:44,530 poprzednio odbioru te rzeczy za pośrednictwem formularzy. 636 00:28:44,530 --> 00:28:48,890 >> I najwyraźniej mamy zaprogramowane w ten taki sposób, że gdy ktoś zarejestruje, 637 00:28:48,890 --> 00:28:52,470 Maile konto John Harvardu proctor-- lub sam w tym przypadku, 638 00:28:52,470 --> 00:28:55,960 John Harvard-- z następujących text-- "Ta osoba po prostu zarejestrowany." 639 00:28:55,960 --> 00:29:00,560 Nazywam się Dawid, kapitan jest puste; płci, mężczyzna; i akademik, Matthews. 640 00:29:00,560 --> 00:29:01,560 >> Więc co się stało? 641 00:29:01,560 --> 00:29:05,360 No cóż, w pytaniu o pliku jest najwyraźniej register3.php. 642 00:29:05,360 --> 00:29:09,080 A jeśli otworzę to zobaczysz zarówno moc jak ten kod 643 00:29:09,080 --> 00:29:12,380 a także, szczerze mówiąc, niepewność systemu, takich jak e-mail. 644 00:29:12,380 --> 00:29:16,290 Właśnie skutecznie udawał być John Harvard w następujący sposób. 645 00:29:16,290 --> 00:29:20,920 >> Mam otwarte tag php się góry, które tylko mówi tutaj jest trochę kodu PHP. 646 00:29:20,920 --> 00:29:23,155 Tu, okazuje się, że są biblioteki w PHP. 647 00:29:23,155 --> 00:29:26,410 Po prostu nie trzeba Dołącz nagłówek plików tyle. 648 00:29:26,410 --> 00:29:28,900 Dostajesz więcej z zlewozmywak, że tak powiem. 649 00:29:28,900 --> 00:29:31,820 >> Ale tym razem w wierszu 4, zrobić chcą specjalnej biblioteki nazwie 650 00:29:31,820 --> 00:29:36,087 PHP program pocztowy, który jest coś Cię można zainstalować za darmo w wielu systemach. 651 00:29:36,087 --> 00:29:37,920 Tu jestem walidacji Złożenie tylko 652 00:29:37,920 --> 00:29:40,540 poprzez sprawdzenie czy użytkownik dają mi nazwisko, płeć, i akademik. 653 00:29:40,540 --> 00:29:44,130 A jeśli tak, to śmiało instancji programu pocztowego. 654 00:29:44,130 --> 00:29:47,020 >> Możesz myśleć o tym jako linii kodu, które po prostu przydziela. 655 00:29:47,020 --> 00:29:48,950 To jak malloc, ale to trochę bardziej sexy 656 00:29:48,950 --> 00:29:51,790 się, że po prostu nie wspominając malloc, a niektóre liczba generycznych. 657 00:29:51,790 --> 00:29:55,030 Mówisz mi dać jedną z nich, dać mi nowy jednego z nich. 658 00:29:55,030 --> 00:29:57,950 >> A jeśli już zaprogramowany w Java lub C ++ lub innych językach, 659 00:29:57,950 --> 00:29:59,130 może widzieliście to. 660 00:29:59,130 --> 00:30:01,840 Jednak krótkie na to, czy nieznane, ta linia 661 00:30:01,840 --> 00:30:05,410 stawia pod znakiem dolara mailem Specjalna struktura zwana 662 00:30:05,410 --> 00:30:08,731 Obiekt, który ma wbudowany Funkcjonalność e-mail. 663 00:30:08,731 --> 00:30:10,355 I rzeczywiście, zauważyć i podobna składnia. 664 00:30:10,355 --> 00:30:11,900 >> Nie jest to wskaźnik, per se. 665 00:30:11,900 --> 00:30:13,990 PHP po prostu używa tej samej składni. 666 00:30:13,990 --> 00:30:17,660 Ta linia mówi korzystania SMTP-- Simple Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Protokół, który jest po prostu Protokół używany do wysyłania poczty. 668 00:30:20,900 --> 00:30:24,240 To określenie korzystania Serwer SMTP Harvardu, który 669 00:30:24,240 --> 00:30:25,830 jest gdzieś tutaj, na terenie kampusu. 670 00:30:25,830 --> 00:30:28,480 >> Ten mówi, co TCP numer portu, aby rozmawiać, 671 00:30:28,480 --> 00:30:31,650 a ja pomyślałem, że przez googlowania lub prosząc help desk. 672 00:30:31,650 --> 00:30:34,640 A potem, ponieważ wykorzystuje niektóre z Harvard bezpieczeństwo systemu poczty na server-- 673 00:30:34,640 --> 00:30:37,060 przynajmniej szyfrowania Ruch między tobą a nim, 674 00:30:37,060 --> 00:30:41,380 nawet jeśli ktoś może wysłać do it-- Mam zamiar włączyć protokół TLS 675 00:30:41,380 --> 00:30:42,710 za utrzymanie tego bezpieczeństwa. 676 00:30:42,710 --> 00:30:44,730 >> Ale to jest, gdy wszystko trochę przerażające. 677 00:30:44,730 --> 00:30:47,970 Mogę tylko arbitralnie powiedzieć, że jestem jharvard, 678 00:30:47,970 --> 00:30:51,930 i mogę tylko arbitralnie e-mail się tutaj. 679 00:30:51,930 --> 00:30:55,650 I wtedy można określić Temat z tej linii tutaj. 680 00:30:55,650 --> 00:30:58,460 >> A to po prostu wygląda brzydko, ale to tylko kilka konkatenacji. 681 00:30:58,460 --> 00:31:04,480 Okazuje się, że PHP ma bardzo użyteczną symbol, tak jak w niektórych językach, kropka, 682 00:31:04,480 --> 00:31:07,340 które po prostu dosłownie skleja ciąg po ciągu znaków po ciągu znaków, 683 00:31:07,340 --> 00:31:09,810 i nie masz do malloc lub rysunku na całej długości łańcucha. 684 00:31:09,810 --> 00:31:10,820 Po prostu zrób to. 685 00:31:10,820 --> 00:31:15,220 I rzeczywiście, bo jestem złączenie we wszystkich tych rzeczy z tych punktów, 686 00:31:15,220 --> 00:31:18,330 dlatego e-mail ja wysłana wyglądał tak jak. 687 00:31:18,330 --> 00:31:20,610 >> I wtedy wreszcie tutaj, jestem wysyłania poczty. 688 00:31:20,610 --> 00:31:22,580 Więc jeśli to jest fałszywe, Jestem po prostu umrzeć, 689 00:31:22,580 --> 00:31:25,680 która jest funkcją tylko odbitki na ekranie jakiś komunikat o błędzie. 690 00:31:25,680 --> 00:31:29,170 Jest to jednak w rzeczywistości wywołanie funkcji wysyłania. 691 00:31:29,170 --> 00:31:31,780 W przeciwnym razie, jeśli to wszystko zawiedzie, przekierowuje mnie z powrotem tutaj. 692 00:31:31,780 --> 00:31:34,050 >> I dlaczego widzę, że Jestem zarejestrowany naprawdę? 693 00:31:34,050 --> 00:31:36,110 Cóż, stało się właśnie tutaj. 694 00:31:36,110 --> 00:31:38,170 Więc przynieść to dla Kilka powodów. 695 00:31:38,170 --> 00:31:41,542 >> Jeden z nich, to jest dokładnie tak, jak w przypadku budowy niektóre strona ostatecznego projektu 696 00:31:41,542 --> 00:31:44,000 lub do realnego świata, jest to jak wysyłać przypomnienia e-mail 697 00:31:44,000 --> 00:31:45,924 do swoich klientów lub subskrybentów. 698 00:31:45,924 --> 00:31:47,590 W ten sposób można wysyłać przypomnienia hasła. 699 00:31:47,590 --> 00:31:50,760 W ten sposób można wysyłać wiadomości ludzi że mają nowego Facebooka 700 00:31:50,760 --> 00:31:52,990 Komunikat czasu lub coś w tym stylu. 701 00:31:52,990 --> 00:31:55,010 >> Ale mówi też Fakt, że może to 702 00:31:55,010 --> 00:31:58,160 zostały bardzo dobrze z Davin lub ktokolwiek inny. 703 00:31:58,160 --> 00:32:00,567 I mówię to rodzaj z uśmiechem, bo jestem 704 00:32:00,567 --> 00:32:03,400 pewien, co się dzieje przez kilka z waszych umysłach w tym momencie. 705 00:32:03,400 --> 00:32:11,910 Ale jest to jeden z tych, jak ja zrobić powiedzieć, nie tak jak ja rodzaju rzeczy, 706 00:32:11,910 --> 00:32:14,480 bo jest trywialny wykuć maile jak ten. 707 00:32:14,480 --> 00:32:16,480 Ale jak może widzieliście lub przeczytać w Crimson, 708 00:32:16,480 --> 00:32:18,271 późno to również dość trywialne dla ludzi 709 00:32:18,271 --> 00:32:20,050 prześledzenia wstecz do pewnego pochodzenia. 710 00:32:20,050 --> 00:32:23,790 I zadać mi trochę czasu, być może w CS50 lunchu, jak pierwszy raz 711 00:32:23,790 --> 00:32:27,080 zapoznał się bardzo ściśle prawie do płyty ed wielu lat 712 00:32:27,080 --> 00:32:30,890 temu, kiedy odkryłem, jak działa internet. 713 00:32:30,890 --> 00:32:36,940 Więc w żadnym case-- nieznacznie po pokładzie red zrobił. 714 00:32:36,940 --> 00:32:42,300 >> Tak więc w każdym przypadku jest cała masa super globalnych, 715 00:32:42,300 --> 00:32:45,960 jak nazywa się tutaj, z których jeden my saw-- znak dolara podkreślenia post. 716 00:32:45,960 --> 00:32:49,530 Jest odpowiednikiem nazywa get, czyli tam, gdzie rzeczy z adresu URL 717 00:32:49,530 --> 00:32:50,690 kończy się dzieje. 718 00:32:50,690 --> 00:32:54,051 I jest cała masa innych, too-- sesji i serwer i ciasteczko. 719 00:32:54,051 --> 00:32:55,800 Wrócimy do plik cookie innym razem, 720 00:32:55,800 --> 00:33:01,340 ale sesja jest rodzaj chłodnym ponieważ prawo now-- aż now-- 721 00:33:01,340 --> 00:33:06,350 wszystko, co mamy zrobić z przeglądarki internetowej jest rodzajem bezpaństwowcem, że tak powiem. 722 00:33:06,350 --> 00:33:10,060 Mogę kliknąć ok, dostęp plików na serwerze, coś 723 00:33:10,060 --> 00:33:13,500 dzieje się na ekranie, ale następnie połączenie zostanie zamknięte. 724 00:33:13,500 --> 00:33:17,450 Internet Explorer lub Ikona Firefox przestaje się obracać 725 00:33:17,450 --> 00:33:20,340 i po prostu zobaczyć, co że strona internetowa zawiera. 726 00:33:20,340 --> 00:33:23,530 >> Więc HTTP jest bezpaństwowcem w które raz to sprawia, że ​​połączenia, 727 00:33:23,530 --> 00:33:25,050 dostaje jakieś dane, to jest to. 728 00:33:25,050 --> 00:33:29,940 Koniec połączenia, w przeciwieństwie do Skype, w przeciwieństwie do FaceTime, w przeciwieństwie GChat, który 729 00:33:29,940 --> 00:33:32,180 utrzymuje stałą połączenie z serwerem. 730 00:33:32,180 --> 00:33:34,650 W internecie jest zasadniczo odłączone, choć będziemy 731 00:33:34,650 --> 00:33:36,630 patrz przed długo, jak możemy symulować rzeczy 732 00:33:36,630 --> 00:33:39,300 jak Facebook Chat i GChat, które utrzymują illusion-- 733 00:33:39,300 --> 00:33:41,680 lub faktycznie utrzymać stałe połączenia za pomocą 734 00:33:41,680 --> 00:33:43,270 bardziej nowoczesne technologie. 735 00:33:43,270 --> 00:33:49,000 >> Ale jeśli pójdę do, powiedzmy, counter.php, jest to kolejny prosty przykład, 736 00:33:49,000 --> 00:33:52,700 jak zobaczymy, że obecnie uważa Odwiedziłem stronę zerowy czas. 737 00:33:52,700 --> 00:33:56,790 Ale jeśli po prostu odświeżyć stronę, jakoś wie, że był tu wcześniej. 738 00:33:56,790 --> 00:33:58,840 Gdybym ponownie załadować, to wie, że był tu wcześniej. 739 00:33:58,840 --> 00:34:01,100 I znowu i znowu i znowu i znowu. 740 00:34:01,100 --> 00:34:03,610 >> Więc jest jakiś plus plussing dzieje, ale informacja 741 00:34:03,610 --> 00:34:07,090 maleństwo kręci zawsze tak krótkotrwała do góry, a następnie rozłącza się, 742 00:34:07,090 --> 00:34:11,179 więc to nie jest tak, że mają stałe Podłączenie do mojego urządzenia. 743 00:34:11,179 --> 00:34:16,929 Cóż, jeśli pójdę do counter.php, zauważyć, jak łatwo jest. 744 00:34:16,929 --> 00:34:19,080 I najpierw wywołać ten specjalny Funkcja, że ​​będziesz wkrótce 745 00:34:19,080 --> 00:34:21,513 rozpocząć przyjmowanie za pewnik zwany początek sesji. 746 00:34:21,513 --> 00:34:22,179 Rozpoczęcie sesji. 747 00:34:22,179 --> 00:34:25,095 >> I od tej pory jest tylko sesja będzie wiadro, jak zakupy 748 00:34:25,095 --> 00:34:28,120 koszyk, w którym można umieścić wartości i rodzaj zaufania jako programista 749 00:34:28,120 --> 00:34:31,590 że będziemy się tutaj, kiedy że użytkownik będzie back-- sekundę 750 00:34:31,590 --> 00:34:35,670 później godzinę później, nawet rok później, tak długo, jak on lub ona nie zniknie 751 00:34:35,670 --> 00:34:37,602 ich ciasteczka, jak my w końcu zobaczyć. 752 00:34:37,602 --> 00:34:39,310 A teraz mam tylko jeśli stan tutaj. 753 00:34:39,310 --> 00:34:44,679 Więc jeśli w następującym kluczu, zwany licznik, jest ustawiony w środku 754 00:34:44,679 --> 00:34:49,210 z tego super global-- ten hash stół, jeśli will-- nazwie sesji 755 00:34:49,210 --> 00:34:53,350 następnie przejść do przodu i złapał Wartość z session-- think 756 00:34:53,350 --> 00:34:55,250 Z tego jak zakupy cart-- i przechowywać 757 00:34:55,250 --> 00:34:57,680 w tymczasowej zmiennej o nazwie licznik. 758 00:34:57,680 --> 00:35:02,240 >> W przeciwnym razie, jeśli to była wartość licznika nie jest ustawiona w tak zwanym koszyka, 759 00:35:02,240 --> 00:35:04,430 tylko zainicjować 0. 760 00:35:04,430 --> 00:35:09,830 Wreszcie, na dół, przejść i umieścić z powrotem do koszyków lub sesji 761 00:35:09,830 --> 00:35:13,000 wartość licznika 1. 762 00:35:13,000 --> 00:35:16,730 Tak więc okazuje się, że to Pojemnik specjalny here-- 763 00:35:16,730 --> 00:35:20,355 który, ponownie, jest jednym z nich związana tablice, tablica, że ​​można indeksu 764 00:35:20,355 --> 00:35:25,010 słowami zamiast numbers-- utrzymuje się nawet, gdy użytkownik odchodzi. 765 00:35:25,010 --> 00:35:26,510 Znowu wrócę do strony teraz. 766 00:35:26,510 --> 00:35:28,400 Minęło minut lub tak. 767 00:35:28,400 --> 00:35:31,300 Ale pamięta, że ​​mam tu 19 razy. 768 00:35:31,300 --> 00:35:32,740 To jest mój 20th wizyta. 769 00:35:32,740 --> 00:35:36,560 >> I tak to będzie kluczem do realizacji każdej strony, że pamięta 770 00:35:36,560 --> 00:35:40,640 że nie jesteś zalogowany, które można umieścić coś dosłowne w koszyku 771 00:35:40,640 --> 00:35:43,902 kupić lub masz jakieś liczba wiadomości w toku. 772 00:35:43,902 --> 00:35:45,610 Kiedy tylko chcesz zapamiętać informacje, 773 00:35:45,610 --> 00:35:48,130 zobaczymy, że w PHP, jak kilka innych języków, 774 00:35:48,130 --> 00:35:53,640 dostarcza nam tej iluzji stanie chociaż, jak zobaczysz w Pset 6, 775 00:35:53,640 --> 00:35:57,642 jak robisz żądania HTTP od klienta do serwera, to wszystko. 776 00:35:57,642 --> 00:35:59,850 Gdy wrócisz, że odpowiedź, nie ma nic więcej 777 00:35:59,850 --> 00:36:01,790 wracając z serwera domyślnie. 778 00:36:01,790 --> 00:36:03,820 Ale zobaczymy, jak obejść to. 779 00:36:03,820 --> 00:36:07,430 >> No cóż, spróbujmy to posprzątać trochę. 780 00:36:07,430 --> 00:36:09,470 Widzieliśmy kilka różne przykłady. 781 00:36:09,470 --> 00:36:12,250 Aha, i tak na marginesie, dla tych znanych lub nieznanych, 782 00:36:12,250 --> 00:36:14,230 Dlatego, że Przykładem Frosh IM poszedł 783 00:36:14,230 --> 00:36:18,060 patrząc naprawdę brzydki dobrze slightly--, 784 00:36:18,060 --> 00:36:23,160 nadal ugly-- nieznacznie mniej brzydki choć nadal brzydka 785 00:36:23,160 --> 00:36:25,230 Jeśli bowiem spojrzymy co tu kodu źródłowego, 786 00:36:25,230 --> 00:36:28,240 okazuje się, że mam to na samym początku pliku. 787 00:36:28,240 --> 00:36:32,570 >> Okazuje się, że bootstrap jest jednym z wielu swobodnie dostępne biblioteki tam 788 00:36:32,570 --> 00:36:37,140 że nie istnieją dla języków programowania zawsze, ale dla CSS lub JavaScript 789 00:36:37,140 --> 00:36:39,190 lub HTML lub dowolną liczbę języków. 790 00:36:39,190 --> 00:36:42,160 >> I ci ludzie here-- pierwotnie wyszedł 791 00:36:42,160 --> 00:36:44,730 z Twitter-- prostu cała masa stylów. 792 00:36:44,730 --> 00:36:47,360 To ogromny plik tutaj, że ktoś napisał, 793 00:36:47,360 --> 00:36:51,020 czy ktoś napisał, że w czasie określa kolory i formatowanie 794 00:36:51,020 --> 00:36:53,740 i cokolwiek, tak, że mogę rodzaj pożyczyć ich składni 795 00:36:53,740 --> 00:36:56,157 i nie dowiedzieć się, jak leżał mój formularz. 796 00:36:56,157 --> 00:36:57,990 Jest to również minified tak, że komputer może 797 00:36:57,990 --> 00:37:00,560 to rozumiem, ale nie koniecznie człowiek. 798 00:37:00,560 --> 00:37:03,050 Więc to tylko dlatego stylizacja nie zmieniło. 799 00:37:03,050 --> 00:37:05,450 >> Ale niech już lepiej w zakresie projektowania, 800 00:37:05,450 --> 00:37:07,490 bo jeśli pobyt w dół to droga zbyt długa, 801 00:37:07,490 --> 00:37:11,290 nasz kod będzie do bałagan i bałaganu. 802 00:37:11,290 --> 00:37:13,040 Więc skupmy się na tych przykładach tutaj. 803 00:37:13,040 --> 00:37:15,090 Ostatni na dziś. 804 00:37:15,090 --> 00:37:18,720 >> Więc tutaj jest bardzo prosta wersja 1.0 stronie CS50 jest. 805 00:37:18,720 --> 00:37:21,250 Ma tylko linki do wykłady i program nauczania, 806 00:37:21,250 --> 00:37:25,490 i to przy użyciu tej listy nieuporządkowanej tag-- tag UL, że używany ostatnio. 807 00:37:25,490 --> 00:37:28,800 A jeśli w rzeczywistości, jeśli otworzyć Pokaż źródło strony, 808 00:37:28,800 --> 00:37:31,710 zobaczysz, że jest to bardzo, bardzo prosty HTML. 809 00:37:31,710 --> 00:37:35,460 I rzeczywiście, chociaż jest to plik PHP pod maską, 810 00:37:35,460 --> 00:37:38,620 to jeszcze tylko plucie się tylko HTML do teraz. 811 00:37:38,620 --> 00:37:41,312 >> Więc jeśli klikam na wykłady, widzimy to się stało. 812 00:37:41,312 --> 00:37:43,020 A jeśli klikam na tydzień zero, widzimy to. 813 00:37:43,020 --> 00:37:44,920 A jeśli kliknę Środa, widzimy to. 814 00:37:44,920 --> 00:37:47,900 I to najwyraźniej był PDF slajdy z tego dnia. 815 00:37:47,900 --> 00:37:52,020 Wszystko robiłem to związek z kotwica znacznik URL tutaj. 816 00:37:52,020 --> 00:37:55,400 >> Więc jest to tylko powiedzieć, że jest to dość prosta wersja strony CS50 jest. 817 00:37:55,400 --> 00:37:56,790 Zobaczmy, jak to realizowane. 818 00:37:56,790 --> 00:38:01,240 Jeśli pójdę do katalogu mvc0, zobaczymy kilka plików. 819 00:38:01,240 --> 00:38:03,250 Jednym z nich jest README, więc jeśli niektórych jest to zbyt szybko, 820 00:38:03,250 --> 00:38:05,166 można tylko grzebać bardziej spokojnie później. 821 00:38:05,166 --> 00:38:07,930 I tu uwaga plik index.php jest. 822 00:38:07,930 --> 00:38:09,960 Okazuje się, że w przypadku Ty sam, ludzkie, 823 00:38:09,960 --> 00:38:14,460 nie określają ostateczną nazwę w Adres URL, serwer WWW zazwyczaj 824 00:38:14,460 --> 00:38:17,010 wnioskuje pewną domyślną nazwę dla Ciebie. 825 00:38:17,010 --> 00:38:20,060 Wskaźnik kropka coś jest na ogół domyślne. 826 00:38:20,060 --> 00:38:23,010 >> Więc dlatego chwilą kiedy odwiedziłem ten adres tutaj, 827 00:38:23,010 --> 00:38:26,750 nie nazwa pliku, nie ma pliku rozszerzenie, żaden okres w adresie URL. 828 00:38:26,750 --> 00:38:29,710 Po prostu wiedziałem, jakoś magicznie szukać index.php. 829 00:38:29,710 --> 00:38:30,870 To tylko konwencja. 830 00:38:30,870 --> 00:38:32,360 Można nazwać niczego. 831 00:38:32,360 --> 00:38:35,110 >> Więc jeśli teraz przejść do index.php, zobaczysz 832 00:38:35,110 --> 00:38:37,100 że indeed-- niech pozbyć komentarzach 833 00:38:37,100 --> 00:38:39,500 tutaj, bo tam naprawdę nic ciekawego do it-- 834 00:38:39,500 --> 00:38:41,579 to jest po prostu ciężko kodowane HTML. 835 00:38:41,579 --> 00:38:43,370 Więc to jest spójne, jednak z mojego roszczenia 836 00:38:43,370 --> 00:38:45,230 że można mieszać HTML i PHP. 837 00:38:45,230 --> 00:38:48,060 Nie ma rzeczywisty programowanie logiki tutaj. 838 00:38:48,060 --> 00:38:51,030 >> I inne pliki są dość dużo tak nieciekawe. 839 00:38:51,030 --> 00:38:56,240 To jest po prostu zakodowane w tydzień tutaj na tydzień jeden mi tydzień jeden w, 840 00:38:56,240 --> 00:38:57,510 w poniedziałek i środę. 841 00:38:57,510 --> 00:39:01,890 A potem, jeśli otworzy tygodniu zero, zauważyć, że to prawie identyczne. 842 00:39:01,890 --> 00:39:03,320 >> I to rodzaj klucza wynos. 843 00:39:03,320 --> 00:39:06,180 Zauważ, jak zbędne jest. 844 00:39:06,180 --> 00:39:10,710 Pliki te ledwo zmienić, a jednak wyciągnął jeden z tych miejsc pracy kopiuj / wklej 845 00:39:10,710 --> 00:39:13,420 gdzie wziąłem jeden file-- przypuszczalnie w tym tygodniu zero-- go skopiować 846 00:39:13,420 --> 00:39:16,320 kiedy przyszedł około jednego tygodnia, i manipulowane kilka wartości. 847 00:39:16,320 --> 00:39:18,590 Prawdopodobnie powinniśmy być w stanie zrobić lepiej niż to. 848 00:39:18,590 --> 00:39:21,800 >> Więc wróćmy do mvc i przejść do wersji pierwszej. 849 00:39:21,800 --> 00:39:24,810 I zauważyć, mam Kilka plików, ponieważ to, co 850 00:39:24,810 --> 00:39:29,870 był wspólny dla wszystkich tych plików po prostu Chwilę ago-- jeśli wrócę do wersji 0, 851 00:39:29,870 --> 00:39:32,600 wróćmy do indeksu, i po prostu postulate-- 852 00:39:32,600 --> 00:39:36,090 raz pozbyć comments-- jaka część tej strony 853 00:39:36,090 --> 00:39:40,072 jest zapewne w każdym z moich plików? 854 00:39:40,072 --> 00:39:40,780 Wystarczy zadzwonić go. 855 00:39:40,780 --> 00:39:44,620 Które linie są duplikowane Prawdopodobnie we wszystkich tych stron? 856 00:39:44,620 --> 00:39:45,120 Tak? 857 00:39:45,120 --> 00:39:46,110 >> STUDENT: [niesłyszalne]. 858 00:39:46,110 --> 00:39:47,660 >> David J. MALAN: 1 do 9. 859 00:39:47,660 --> 00:39:48,720 Tak, absolutnie. 860 00:39:48,720 --> 00:39:52,080 1 do 9, z wyjątkiem być może 8 zmienia trochę ponieaz CS50 861 00:39:52,080 --> 00:39:54,650 staje się wykłady lub tydzień zero lub coś. 862 00:39:54,650 --> 00:39:55,970 Ale prawie identyczne. 863 00:39:55,970 --> 00:39:58,657 Tak więc wszystkie te rzeczy są po prostu rodzaj kopiować i wklejać. 864 00:39:58,657 --> 00:40:00,490 I jest kilka inne linie mogą myślę 865 00:40:00,490 --> 00:40:05,000 tego są prawdopodobnie identyczne we wszystkich plikach. 866 00:40:05,000 --> 00:40:06,315 >> STUDENT: 12 i 13. 867 00:40:06,315 --> 00:40:07,190 David J. MALAN: Tak. 868 00:40:07,190 --> 00:40:11,220 Jasne, 12, 13, i 14 prawdopodobnie, tylko dlatego, że w ciekawych rzeczy 869 00:40:11,220 --> 00:40:15,460 dzieje się na linii 11 i 10, tak to wygląda. 870 00:40:15,460 --> 00:40:18,350 Więc spójrzmy na wersji 1, która stara się poprawić w tej sprawie. 871 00:40:18,350 --> 00:40:24,020 W wersji 1 niniejszego mvc example-- my będziemy wyjaśnić, co mvc w moment-- środki 872 00:40:24,020 --> 00:40:27,420 jeśli pójdę do indeksu, to niby wygląda trochę mylące teraz. 873 00:40:27,420 --> 00:40:28,880 To nie jest takie proste, jak wcześniej. 874 00:40:28,880 --> 00:40:30,906 >> Ale gdy zaczniesz Przeczytaj ją dokładnie, to 875 00:40:30,906 --> 00:40:32,530 bardzo proste, co robi. 876 00:40:32,530 --> 00:40:34,397 Linia 1 i pozornie Linia 8 zastąpiły 877 00:40:34,397 --> 00:40:37,230 wszystkie rzeczy po prostu identified-- choć tak na dokładkę, 878 00:40:37,230 --> 00:40:41,900 Wyszedłem z ULS nie tylko w przypadku niektórych dni nie miał listę rzeczy. 879 00:40:41,900 --> 00:40:47,860 A więc wymaga to trochę jak funta to w kopii C. i past 880 00:40:47,860 --> 00:40:50,470 zawartość skutecznie tutaj do tego pliku. 881 00:40:50,470 --> 00:40:53,650 >> Więc w header.php, jak ty można wywnioskować z nazwy, 882 00:40:53,650 --> 00:40:55,330 ma być nagłówek strony. 883 00:40:55,330 --> 00:40:57,110 To rodzaj osierocone tutaj. 884 00:40:57,110 --> 00:41:01,820 Ma tylko szczyt do niego, ale nie ma więcej treści poniżej. 885 00:41:01,820 --> 00:41:05,070 >> A jeśli spojrzeć na stopce w międzyczasie, który był inny plik mentioned-- 886 00:41:05,070 --> 00:41:08,830 ten jest jeszcze mniej ciekawe, ale znowu, to jest wspólne dla wszystkich. 887 00:41:08,830 --> 00:41:10,250 Więc to jest stopka. 888 00:41:10,250 --> 00:41:11,300 To jest nagłówek. 889 00:41:11,300 --> 00:41:13,950 Jest to plik, który jest zmienia, więc dlaczego nie 890 00:41:13,950 --> 00:41:18,140 spróbuj czynnik poza wspólność z tych dwóch linii tutaj? 891 00:41:18,140 --> 00:41:20,090 >> Ale to można wyczyścić się nieco dalej. 892 00:41:20,090 --> 00:41:23,260 Mam zamiar iść do przodu i otworzyć wersję dwóch gdzie 893 00:41:23,260 --> 00:41:27,106 zobaczymy, że nie ma Nowy plik, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Zobaczymy, co to za chwilę. 895 00:41:28,610 --> 00:41:30,930 Chodźmy do indeksu, jak punkt wejścia, jak wcześniej. 896 00:41:30,930 --> 00:41:35,230 >> A teraz zauważyć jestem wymagający helpers.php nie nagłówek lub stopkę. 897 00:41:35,230 --> 00:41:41,720 Ale pomocnicy jest trochę jak helpers.c i helpers.h z Pset 2 898 00:41:41,720 --> 00:41:46,150 lub PSET 3 dawno temu, gdy w rzeczywistości nie szukać i znaleźć dla tego Pset, 899 00:41:46,150 --> 00:41:50,950 i trzeba było cały kod do sortowania i szukając w oddzielnym pliku. 900 00:41:50,950 --> 00:41:52,510 To, co się tutaj dzieje. 901 00:41:52,510 --> 00:41:54,390 >> A teraz linia 3 wygląda nieco inaczej. 902 00:41:54,390 --> 00:41:55,920 A to tylko jedna linia. 903 00:41:55,920 --> 00:41:57,950 Aby to jeszcze bardziej jasne, mogłem po prostu 904 00:41:57,950 --> 00:42:01,820 ma to być spójne stylistycznie ze wszystkim, co zrobiliśmy. 905 00:42:01,820 --> 00:42:04,130 Ale to naprawdę nie jest zmiana funkcjonalności. 906 00:42:04,130 --> 00:42:05,880 To tylko jedna linia z prawdziwego kodu. 907 00:42:05,880 --> 00:42:09,010 >> Najwyraźniej istnieje funkcja gdzieś nazywa uczynić nagłówek, 908 00:42:09,010 --> 00:42:11,420 i to, gdzie rzeczy uzyskać bardzo mocny. 909 00:42:11,420 --> 00:42:17,040 Zauważ, że wnętrze jego nawiasach jest to, co inny kawałek składni? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 To chyba trochę trudno powiedzieć, ale zauważyć there's-- włożę jakiś biały 912 00:42:23,350 --> 00:42:24,300 miejsca. 913 00:42:24,300 --> 00:42:25,530 Jest nawiasy kwadratowe. 914 00:42:25,530 --> 00:42:29,700 >> I nawiasy kwadratowe widzieliśmy nieco temu w związku z tablic asocjacyjnych, 915 00:42:29,700 --> 00:42:31,580 które są, ponownie, jak tabele hash. 916 00:42:31,580 --> 00:42:36,230 I jeśli myślisz, że teraz do C, Kolejność argumentów do funkcji 917 00:42:36,230 --> 00:42:37,570 musi być zawsze takie same. 918 00:42:37,570 --> 00:42:41,146 Trzeba pamiętać, co się zamówić is-- X, Y, Z lub Z, Y, x-- 919 00:42:41,146 --> 00:42:44,020 i trzeba zawsze zapewnić im w tej samej kolejności, lub szukać ich 920 00:42:44,020 --> 00:42:45,100 Jeśli zapomniałeś. 921 00:42:45,100 --> 00:42:51,140 >> Ale to wydaje się być sprytny sposób przekazywania dowolną wartość klucza 922 00:42:51,140 --> 00:42:55,840 pary której tytuł to nazwa argumentu w tym przypadku 923 00:42:55,840 --> 00:42:58,334 i CS50 jest jego wartość. 924 00:42:58,334 --> 00:43:00,250 A fakt, że mam te nawiasy kwadratowe 925 00:43:00,250 --> 00:43:02,560 oznacza tu, że mogłem również przejść w coś 926 00:43:02,560 --> 00:43:07,550 jak tydzień jest 0 lub 1 lub 2 lub 3. 927 00:43:07,550 --> 00:43:10,550 Więc my parametryzowane Funkcja ta w taki sposób, 928 00:43:10,550 --> 00:43:15,180 że może to potrwać wiele wejść, ale na razie to tylko jeden. 929 00:43:15,180 --> 00:43:20,060 >> Gdybym teraz przejść do helpers.php, zauważyć, co robi. 930 00:43:20,060 --> 00:43:22,030 To jest trochę nowych funkcjonalności, 931 00:43:22,030 --> 00:43:24,190 ale teraz po prostu wziąć na wierze, że jest to 932 00:43:24,190 --> 00:43:26,570 Składnia, z którym zdefiniować funkcję w PHP. 933 00:43:26,570 --> 00:43:27,840 Dosłownie znaczy funkcję. 934 00:43:27,840 --> 00:43:30,090 Nie podasz powrót typu, a to zgodne 935 00:43:30,090 --> 00:43:33,880 ze zmienną szczegół wcześniej gdzie tak naprawdę nie mocno wpisać. 936 00:43:33,880 --> 00:43:35,650 >> To właśnie określa że domyślnie to 937 00:43:35,650 --> 00:43:37,460 trwa asocjacyjną Tablica jako argument. 938 00:43:37,460 --> 00:43:38,210 I wiesz co? 939 00:43:38,210 --> 00:43:41,450 Jeśli użytkownik nie przechodzi jeden w, przyjąć wartość domyślną. 940 00:43:41,450 --> 00:43:44,680 >> Jest to funkcja, która nie ma C dla nas, co jest dobre, bo teraz 941 00:43:44,680 --> 00:43:46,430 danych, nawet jeśli nie dać niczego, 942 00:43:46,430 --> 00:43:49,300 będzie pusta tablica, ale jeden. 943 00:43:49,300 --> 00:43:51,860 A na marginesie, wyciąg po prostu robi coś Funky 944 00:43:51,860 --> 00:43:56,380 gdzie wykonuje wszystkie klawisze z tego asocjacyjna, wszystkie rzeczy, 945 00:43:56,380 --> 00:43:59,950 można umieścić w nawiasach kwadratowych, oraz tworzy się z nich zmienne 946 00:43:59,950 --> 00:44:06,270 tak, że możemy mieć dostęp ostatecznie do nich w footet.php i header.php. 947 00:44:06,270 --> 00:44:08,950 To trochę abstrakcyjny, więc pozwól mi zwrócić na to uwagę. 948 00:44:08,950 --> 00:44:12,990 >> W pliku index.php, zauważysz, że jestem przechodząc w parę wartości klucza tytułu 949 00:44:12,990 --> 00:44:14,850 o wartości CS50. 950 00:44:14,850 --> 00:44:18,660 Jeśli teraz spojrzeć na helpers.php, zauważyć, że RenderHeader 951 00:44:18,660 --> 00:44:23,870 jest wyodrębnianie tych danych, że jestem przechodzącej w, wówczas wymóg header.php. 952 00:44:23,870 --> 00:44:27,970 Co zrobiłem to rodzaj biedaka Realizacja teraz z poniższych. 953 00:44:27,970 --> 00:44:31,720 >> Gdybym otworzyć header.php, Ogłoszenie, że już nie mam ciężko 954 00:44:31,720 --> 00:44:34,890 zakodowane w CS50 słowo w tym pliku nagłówkowym. 955 00:44:34,890 --> 00:44:39,310 Wrzuciłem to prawda potwornie nazwie funkcji, HTML znaki specjalne, 956 00:44:39,310 --> 00:44:40,170 tam. 957 00:44:40,170 --> 00:44:41,640 Zauważmy jednak, co zrobiłem. 958 00:44:41,640 --> 00:44:44,240 Mam otwarty HTML. 959 00:44:44,240 --> 00:44:47,420 Potem mają otwartą głowę i otwarte tytuł. 960 00:44:47,420 --> 00:44:52,380 >> A następnie wewnątrz Open i tytuł close tagi, mam trochę kodu PHP. 961 00:44:52,380 --> 00:44:56,670 I to jest miłe, ale składni, co oznacza po prostu echo się. 962 00:44:56,670 --> 00:44:59,840 Dosłownie oznacza this-- echo following-- 963 00:44:59,840 --> 00:45:01,910 ale to jest bardziej sexy napisać. 964 00:45:01,910 --> 00:45:05,000 Echo na tytuł które zostało przekazane w. 965 00:45:05,000 --> 00:45:07,560 >> Ale co myślisz HTML Specjalny znak jest o, 966 00:45:07,560 --> 00:45:10,590 zwłaszcza jeśli masz niektóre wcześniejsze doświadczenie HTML? 967 00:45:10,590 --> 00:45:14,050 Jakie znaki mogą być niebezpieczne, aby przejść na stronę 968 00:45:14,050 --> 00:45:17,980 gdzie jesteś dynamicznie generując strona z kodem jak to? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Pozwólcie mi iść do tego pliku, wersja dwa, i zobacz, czy nie mogę wywołać tego. 971 00:45:24,650 --> 00:45:26,210 >> Jest to wersja dwa. 972 00:45:26,210 --> 00:45:28,510 I zauważyć wszystko jest w porządku, działa dobrze. 973 00:45:28,510 --> 00:45:35,280 Ale załóżmy, że idę do index.php i I określić, że tytuł mojej stronie 974 00:45:35,280 --> 00:45:36,630 nie jest CS50. 975 00:45:36,630 --> 00:45:44,930 Jest czujny skrypt otwarty nawias Witaj świecie, blisko apostrof, 976 00:45:44,930 --> 00:45:49,740 blisko nawias, średnik, otwarty nawias, scenariusz ukośnik. 977 00:45:49,740 --> 00:45:51,897 >> Skrypt, a my będziemy w końcu zobaczyć, jest znacznik 978 00:45:51,897 --> 00:45:54,480 że można użyć do korzystania z innego język programowania o nazwie 979 00:45:54,480 --> 00:45:56,330 JavaScript wewnątrz strony. 980 00:45:56,330 --> 00:45:57,960 A teraz dostrzec logikę tutaj. 981 00:45:57,960 --> 00:45:59,840 Oto klucz o nazwie tytuł. 982 00:45:59,840 --> 00:46:02,690 Tutaj jest to szalony długą wartość teraz. 983 00:46:02,690 --> 00:46:07,840 >> Ale jeśli pójdę do pomocników PAGE- lub raczej, nagłówek strony, 984 00:46:07,840 --> 00:46:11,310 Dzwonię z tej funkcji na pierwszej tego tytułu. 985 00:46:11,310 --> 00:46:15,250 Więc jeśli teraz załadować tę stronę, ja zobaczyć, co wygląda śmiesznie, 986 00:46:15,250 --> 00:46:16,110 ale jest to bezpieczne. 987 00:46:16,110 --> 00:46:17,310 To po prostu wygląda głupio. 988 00:46:17,310 --> 00:46:20,320 >> Ale załóżmy, że zamiast Zapomniałem tego. 989 00:46:20,320 --> 00:46:24,660 I zapamiętaj moje słowa, liczba niezerowe od zapomnisz to zrobić 990 00:46:24,660 --> 00:46:27,790 i dostaniesz jakiś pracowity student lub przyjaciel wymyślanie 991 00:46:27,790 --> 00:46:31,540 do ciebie na targach CS50 lub anonimowo w nocy wywiercenie na swojej stronie internetowej 992 00:46:31,540 --> 00:46:35,300 i zasadniczo wstrzykiwanie kodu wiemy o was na swojej stronie 993 00:46:35,300 --> 00:46:35,800 jakoś. 994 00:46:35,800 --> 00:46:39,000 >> Bo jeśli po prostu splunąć z tytułu tutaj i tytuł 995 00:46:39,000 --> 00:46:44,330 there-- dobrze, jeśli tytuł dosłownie wygląda i PHP 996 00:46:44,330 --> 00:46:47,660 jako język, który może pluć z innym tekstem językach, 997 00:46:47,660 --> 00:46:50,650 dzieje się to dosłownie zastąpić ten tag z, 998 00:46:50,650 --> 00:46:53,010 Oczywiście, to, co umieścić w innym miejscu. 999 00:46:53,010 --> 00:46:57,640 >> Więc jeśli teraz go tutaj i odświeżyć po odkręcenie tych mechanizmów bezpieczeństwa, 1000 00:46:57,640 --> 00:46:59,982 teraz mam cześć świata tutaj. 1001 00:46:59,982 --> 00:47:02,690 Teraz to nie wszystko, że duże z czynienia, ale można zrobić coś 1002 00:47:02,690 --> 00:47:05,119 trochę złośliwy tutaj, podobnie jak nie ma 1003 00:47:05,119 --> 00:47:08,410 inne tags-- jak zobaczymy raz spędzamy więcej czasu w JavaScript-- jak lokalizacji 1004 00:47:08,410 --> 00:47:14,910 kropka href dostaje, cytuję, koniec cytatu, HTTP business.com, ale przeciwny że 1005 00:47:14,910 --> 00:47:15,950 od drugiego dnia. 1006 00:47:15,950 --> 00:47:20,120 I teraz można wywołać internecie strona rzeczywiście iść natychmiast 1007 00:47:20,120 --> 00:47:21,190 na tej stronie tutaj. 1008 00:47:21,190 --> 00:47:23,000 >> I rzeczywiście, nie chcę nawet iść do business.com 1009 00:47:23,000 --> 00:47:24,749 bo nie chcę wiedzieć, co to jest. 1010 00:47:24,749 --> 00:47:28,710 Ale to też wywoła kod być wstrzykiwane do strony. 1011 00:47:28,710 --> 00:47:32,680 Więc jest to tylko powiedzieć, że chociaż wprowadzamy bardzo wcześnie na niektóre 1012 00:47:32,680 --> 00:47:36,800 z tych bardziej złożonych struktur to wszystko w kierunku końca upewniając 1013 00:47:36,800 --> 00:47:39,320 że kod nie jest wykorzystanie. 1014 00:47:39,320 --> 00:47:40,960 >> Więc teraz trzecia wersja tutaj. 1015 00:47:40,960 --> 00:47:42,470 Robi się trochę hodowcy. 1016 00:47:42,470 --> 00:47:44,875 I tak naprawdę nie like-- strona o mnie analny 1017 00:47:44,875 --> 00:47:47,750 był już trochę zirytowany Fakt, że funkcja nazywa się 1018 00:47:47,750 --> 00:47:51,940 RenderHeader i RenderFooter że były niemal identyczne. 1019 00:47:51,940 --> 00:47:55,400 Więc przyszło mi do głowy, to dlaczego nie zrobić I parametryzacji tych funkcji 1020 00:47:55,400 --> 00:47:59,180 do tylko jednej nazwie render, mają zająć drugi argument 1021 00:47:59,180 --> 00:48:04,420 jak nazwą matrycy, końcowy do render-- albo nagłówek lub stopkę? 1022 00:48:04,420 --> 00:48:07,160 A następnie ewentualnie, jeśli chcę przejść w niektórych kluczowych par wartości 1023 00:48:07,160 --> 00:48:10,580 jak ja o tytuł dla header ale nie dla stopki, 1024 00:48:10,580 --> 00:48:11,800 Mógłbym to zrobić. 1025 00:48:11,800 --> 00:48:16,510 >> A więc teraz, jeśli pójdę do helpers.php, jest to trochę bardziej skomplikowane. 1026 00:48:16,510 --> 00:48:19,670 I będę machać w swoje ręce szczegóły, ale to tylko jedna funkcja. 1027 00:48:19,670 --> 00:48:21,890 Więc to jest krok w kierunku lepszego designu. 1028 00:48:21,890 --> 00:48:23,360 >> Możemy o krok dalej. 1029 00:48:23,360 --> 00:48:28,890 Jeśli pójdę do mojej czwartej wersja to zauważyć teraz 1030 00:48:28,890 --> 00:48:31,320 że robię coś jeszcze trochę tajemnicze. 1031 00:48:31,320 --> 00:48:33,230 I wiem, że jest to Wiele wchłonąć na raz, 1032 00:48:33,230 --> 00:48:35,080 ale jesteśmy po prostu rodzaj czyszczenia rzeczy. 1033 00:48:35,080 --> 00:48:38,550 Teraz jestem umieszczenie moich pomocników plik w folderze o nazwie 1034 00:48:38,550 --> 00:48:41,190 includes-- tylko arbitralne wymienić, gdzie chcę umieścić rzeczy 1035 00:48:41,190 --> 00:48:44,300 że chcę obejmować: a następnie Reszta jest taka sama. 1036 00:48:44,300 --> 00:48:47,140 >> Ale teraz, gdy patrzę w gedit, Ogłoszenie, że stałam się pozbyć 1037 00:48:47,140 --> 00:48:51,940 z tych wszystkich innych plików i mam przeniesiono je na przykład do tutaj. 1038 00:48:51,940 --> 00:48:55,110 A następnie w szablonach, Mam to także tutaj. 1039 00:48:55,110 --> 00:48:59,292 I tak to wszystko jest teraz w kierunku kroku z użyciem o wiele lepszy wzorzec projektowy. 1040 00:48:59,292 --> 00:49:01,000 A my jesteśmy bardzo szybko zamierza odejść 1041 00:49:01,000 --> 00:49:03,870 z domyślnej funkcjonalności PHP, które zaczęliśmy tutaj z, 1042 00:49:03,870 --> 00:49:07,655 gdzie po prostu mieszać PHP, a HTML, a CSS 1043 00:49:07,655 --> 00:49:09,780 i po prostu wypluć i go o drogę. 1044 00:49:09,780 --> 00:49:11,404 To nie będzie bardzo utrzymaniu. 1045 00:49:11,404 --> 00:49:14,481 Podobnie jak w C, zaczęliśmy używać wiele plików i wiele funkcji 1046 00:49:14,481 --> 00:49:15,730 i rzeczy faktoringowych spełnienia. 1047 00:49:15,730 --> 00:49:16,688 Zrobimy tu sama. 1048 00:49:16,688 --> 00:49:19,970 I faktycznie, w piątym i ostatnim wersja tutaj, zrobiłem jedną rzecz. 1049 00:49:19,970 --> 00:49:23,710 Można nawet użyć kropki kropki, które, ponownie, jest tylko katalog nadrzędny. 1050 00:49:23,710 --> 00:49:28,260 Aby być jeszcze bardziej bezpieczeństwo świadomy, bo jeśli spojrzeć na słuchanie 1051 00:49:28,260 --> 00:49:32,450 tu na piątym i wersja ostateczna, uprzedzenia że mam jeden katalog o nazwie 1052 00:49:32,450 --> 00:49:35,180 publicznej, a następnie na sam poziom, że tak powiem, 1053 00:49:35,180 --> 00:49:38,490 Mam obejmuje i szablony a następnie, że plik tekstowy readme. 1054 00:49:38,490 --> 00:49:41,130 >> A powód mam zorganizowany to jak this-- i tak wiele sieci 1055 00:49:41,130 --> 00:49:44,330 Gospodarze, zwłaszcza tych 5 dolarów miesiąc te lub $ 10 miesięcy te, 1056 00:49:44,330 --> 00:49:47,170 jeśli kiedykolwiek miał jeden z nich services-- co tak wielu z nich zrobić 1057 00:49:47,170 --> 00:49:50,690 jest po prostu oczekiwać, aby zrzucić wszystko z plików do jednego katalogu, 1058 00:49:50,690 --> 00:49:53,640 jak my już z to pierwszy przykład. 1059 00:49:53,640 --> 00:49:56,740 >> Ale jak tylko zacząć budować więcej wyszukane miejsca, które po prostu przechowywać 1060 00:49:56,740 --> 00:50:00,480 Dane Ci zależy i plików obchodzi, faktycznie organizuje rzeczy 1061 00:50:00,480 --> 00:50:05,060 prawidłowo i więcej bezpieczeństwa świadomość w umyśle może 1062 00:50:05,060 --> 00:50:07,927 zaczynamy się bronić wobec wszystkich przyjaciół 1063 00:50:07,927 --> 00:50:10,135 że masz albo w lub na zewnątrz z tej klasy, który 1064 00:50:10,135 --> 00:50:12,510 jak najszybciej zacząć Programy siebie na internecie, 1065 00:50:12,510 --> 00:50:15,140 zamiar rozpocząć zbieranie na ciebie i na nich. 1066 00:50:15,140 --> 00:50:17,420 >> I tak będziemy wyglądać ostatecznie w tym projekcie. 1067 00:50:17,420 --> 00:50:20,010 To tylko obraz przedstawiający następujący. 1068 00:50:20,010 --> 00:50:22,897 Mamy zamiar umieścić wszystkie nasze programowanie logiki w jeden lub więcej plików, 1069 00:50:22,897 --> 00:50:25,230 i będziemy po prostu zacząć nazywając te kontrolery. 1070 00:50:25,230 --> 00:50:28,022 To gdzie mózgi nasze strony rzeczywistości. 1071 00:50:28,022 --> 00:50:29,730 Następnie jedziemy do mają widoki i widoki 1072 00:50:29,730 --> 00:50:32,480 są tak proste, jak tylko oddzielne files-- zwane szablony często. 1073 00:50:32,480 --> 00:50:34,410 Oni po prostu mają estetyka mojej stronie, 1074 00:50:34,410 --> 00:50:37,020 co chcę wyglądać strona like-- kolory i układ 1075 00:50:37,020 --> 00:50:38,870 i pozycje wszystkie zmienne. 1076 00:50:38,870 --> 00:50:41,120 >> A następnie bardziej interesujące że uda nam się w końcu dostać się do 1077 00:50:41,120 --> 00:50:45,420 jest model, który będzie po prostu Słowo to uderzenie na innych technologiach 1078 00:50:45,420 --> 00:50:47,771 które wprowadzają w obraz, jak rzeczywistych baz danych, 1079 00:50:47,771 --> 00:50:49,520 tak, że gdy chcesz aby zapisać informacje, 1080 00:50:49,520 --> 00:50:52,140 nie po prostu wysłać e-mail do Proctora lub do siebie, 1081 00:50:52,140 --> 00:50:57,350 rzeczywiście przechowywać go w bazie danych za pomocą innego języka znany jako SQL. 1082 00:50:57,350 --> 00:51:00,450 I tak my dzisiaj tutaj i zostawić podnieść się z tym w środę 1083 00:51:00,450 --> 00:51:02,990 i wprowadzenie bazy danych, a następnie. 1084 00:51:02,990 --> 00:51:06,940 >> [MUZYKA GRY] 1085 00:51:06,940 --> 00:54:24,555