1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [MUZYKI] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID MALAN: Jest CS50 i to jest początek tygodnia osiem. 5 00:00:13,350 --> 00:00:17,510 I jesteśmy bardzo podekscytowani, aby powitać tył, duża niespodzianka, CS50 własnej Ramon 6 00:00:17,510 --> 00:00:22,160 Galvan, wschodząca starszy, który był spędzeniu kilku miesięcy 7 00:00:22,160 --> 00:00:26,190 od lipca w Los Angeles, w Hollywood, dosłownie pracuje na nowym telewizorze 8 00:00:26,190 --> 00:00:31,930 pokaż nazywa Colony, twórca, który jest rzeczywiście ałunu sam Harvard. 9 00:00:31,930 --> 00:00:36,610 A więc jesteśmy bardzo podekscytowani, aby zobaczyć debiut w sieci USA tego stycznia. 10 00:00:36,610 --> 00:00:40,370 Więc stay tuned, że i dla więcej Ramon w nadchodzących tygodniach. 11 00:00:40,370 --> 00:00:42,550 >> Teraz wiem, że koniec jest bliski. 12 00:00:42,550 --> 00:00:47,400 A co to oznacza to, że nie jest wszystko, co pozostało wiele CS50, przykro mówić. 13 00:00:47,400 --> 00:00:49,400 Mamy tylko trzy problemu zestawy lewy-- istnieje 14 00:00:49,400 --> 00:00:52,510 Problem ustawione six-- który w Twoje ręce teraz lub wkrótce będą, 15 00:00:52,510 --> 00:00:56,080 z powodu jeszcze w tym week-- ma most nasze światy linii poleceń, gdzie 16 00:00:56,080 --> 00:00:59,450 spędziliśmy większość czasu przy użyciu C, a świat programowania WWW. 17 00:00:59,450 --> 00:01:02,350 Cóż, zobaczymy wiele pomysłów zapożyczone z pracy linii poleceń, 18 00:01:02,350 --> 00:01:04,560 ale także wiele nowych i ciekawe pomysły 19 00:01:04,560 --> 00:01:07,929 które również będzie germane dla dla aplikacji mobilnych i technologii, 20 00:01:07,929 --> 00:01:10,470 bardziej ogólnie, z którym faceci są wszystkie znane dziś 21 00:01:10,470 --> 00:01:12,090 na laptopy i telefony itp. 22 00:01:12,090 --> 00:01:15,220 >> Więc nie wdrożyć strona internetowa lub strona 23 00:01:15,220 --> 00:01:17,620 per se, ale rzeczywisty serwer WWW. 24 00:01:17,620 --> 00:01:21,590 Będziesz pisać resztę serwera WWW napisany w C, którego celem w życiu 25 00:01:21,590 --> 00:01:25,410 jest do odbioru żądania HTTP, te wirtualne koperty ciągle mówimy 26 00:01:25,410 --> 00:01:29,780 o, a właściwie reagować zarówno z niektóre statyczne content-- lubią dot HTML 27 00:01:29,780 --> 00:01:32,310 Plik lub kropka JPEG lub każda inna liczba plików 28 00:01:32,310 --> 00:01:37,070 lub nawet plik PHP w którym twój internetowej Serwer będzie interpretować, że PHP 29 00:01:37,070 --> 00:01:38,332 Kod i wypluć wyniki. 30 00:01:38,332 --> 00:01:40,540 Teraz, my ci z sporo ramach 31 00:01:40,540 --> 00:01:43,100 dla it-- rzeczywiście Kod dystrybucji problemu 32 00:01:43,100 --> 00:01:47,496 zestaw sześciu jest długa ponad 1000 linii, co oznacza Wiele z nich jest komentarzy, być fair-- 33 00:01:47,496 --> 00:01:49,370 ale to ma naprawdę być okazją 34 00:01:49,370 --> 00:01:52,570 dostać się w ręce brudne nurkowania w dość dużym projekcie 35 00:01:52,570 --> 00:01:55,570 że mamy bardzo szczegółowo wykute sztuk dla Ciebie, 36 00:01:55,570 --> 00:01:59,046 tak, że naprawdę po wyjściu CS50 i wprowadzić rzeczywisty świat programowania 37 00:01:59,046 --> 00:02:00,920 i chce babrać w dowolną liczbę projektów, 38 00:02:00,920 --> 00:02:03,253 będziesz miał znacznie większe komfort pobierania jakieś źródło 39 00:02:03,253 --> 00:02:05,020 Kod, niektóre open source projektu w internecie, 40 00:02:05,020 --> 00:02:08,174 i nurkowania i co Zmiany, które uważasz. 41 00:02:08,174 --> 00:02:11,340 Problem ustawić siedem będzie o tworzyć własne internetowej aplikacji 42 00:02:11,340 --> 00:02:14,140 że trwa wprowadzanie dynamiczne i produkuje wyjście dynamiczny w formie 43 00:02:14,140 --> 00:02:16,920 strony internetowej etrade.com-podobne. 44 00:02:16,920 --> 00:02:20,800 A problemem ustawić osiem skupi się na jeszcze inny język znany jako JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Zaś, ostateczna Projekt jest na horyzoncie. 46 00:02:24,170 --> 00:02:26,800 Tak zwane pre-proposal Wynika tygodnia od obecnie. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- wg specyfikacji, co jest na website-- CS50 jest 48 00:02:29,930 --> 00:02:33,260 Jest to dość przypadkowy szansa dla wysłanie maila dość zwięzły 49 00:02:33,260 --> 00:02:35,170 do kolegów nauczania żeby go informować 50 00:02:35,170 --> 00:02:38,250 lub jej tego, co myślisz, do używać go lub ją jako gremium. 51 00:02:38,250 --> 00:02:40,980 I mają zdrowy rozsądek check-- czy myślisz 52 00:02:40,980 --> 00:02:43,210 o gryzienie zbyt dużo, czy może za mało, 53 00:02:43,210 --> 00:02:46,480 a może masz w ogóle pojęcia, i chcesz zaangażować się w rozmowy. 54 00:02:46,480 --> 00:02:48,480 >> Następnie jest propozycja i raport o stanie, 55 00:02:48,480 --> 00:02:51,860 tzw CS50 hackathon tutaj Cambridge dla studentów Harvardu i Yale 56 00:02:51,860 --> 00:02:52,362 podobnie. 57 00:02:52,362 --> 00:02:54,320 Ostateczny projektu Wdrożenie jest to spowodowane. 58 00:02:54,320 --> 00:02:59,290 A potem sprawiedliwy CS50 tutaj, w Cambridge, a także innego w New Haven. 59 00:02:59,290 --> 00:03:02,500 Tak więc wniosek, spójrz na strona dla tych danych. 60 00:03:02,500 --> 00:03:06,530 >> Ale bardziej emocjonująco też jest możliwość ubrudzić sobie ręce, 61 00:03:06,530 --> 00:03:09,350 a twoje otwarte na całość umysły kilka tematów i narzędzi 62 00:03:09,350 --> 00:03:12,920 i technik, które są pomocnicze do podstawy programowe kursu, w 63 00:03:12,920 --> 00:03:14,810 niemniej jednak związane. 64 00:03:14,810 --> 00:03:18,400 A także kamienie wspaniałe krokowe do robi naprawdę fajne projekty końcowe, które 65 00:03:18,400 --> 00:03:22,020 wykraczają poza materiał omówiliśmy formalnie problemu ustawia lub wykładu. 66 00:03:22,020 --> 00:03:24,446 Więc idź do strony CS50 dla cała lista seminariów. 67 00:03:24,446 --> 00:03:26,070 Jeśli nie masz jeszcze zarejestrować się, że jest w porządku. 68 00:03:26,070 --> 00:03:29,860 Śmiało i zarejestrować się nadal i będziemy śledzić połączenia na żywo z transmisji strumieniowej, 69 00:03:29,860 --> 00:03:31,844 dzień i godzina jest na stronie internetowej. 70 00:03:31,844 --> 00:03:33,760 I wszystko będzie rejestrowane i umieścić w Internecie 71 00:03:33,760 --> 00:03:35,800 jeśli nie możesz zrobić poszczególne dni i godziny. 72 00:03:35,800 --> 00:03:39,380 >> Co do tego, co nas czeka thereafter-- dobrze, Oczywiście, nie ma hackathon CS50. 73 00:03:39,380 --> 00:03:43,560 To zdjęcie, przypomnijmy, z tygodnia zerowej podjęte około 4 AM jeden wieczór w latach poprzednich. 74 00:03:43,560 --> 00:03:46,900 Targi CS50, który ponownie odbędzie się w obu miastach. 75 00:03:46,900 --> 00:03:49,760 A potem, żeby posadzić nasion, choć nadal 76 00:03:49,760 --> 00:03:54,080 mają miesięcznie plus na lewo od semestru, jeśli chcesz dołączyć własne nauczanie CS50 jest 77 00:03:54,080 --> 00:03:56,770 personel, i chcesz rozpocząć myśli o zostaniu Kalifornia, 78 00:03:56,770 --> 00:03:59,550 lub nauczania facet, wie, że zaczniemy mówić o tym więcej 79 00:03:59,550 --> 00:04:00,630 jeszcze w tym semestrze. 80 00:04:00,630 --> 00:04:03,470 Ale na zdjęciu jest większość tegorocznych zespołu. 81 00:04:03,470 --> 00:04:06,950 >> I tak, PHP-- i byłem tak smutno w zeszłym tygodniu, że [? Allyse?] Uprzejmie 82 00:04:06,950 --> 00:04:09,370 udał się do starań o uzyskanie nam te wspaniałe rekwizyty 83 00:04:09,370 --> 00:04:11,720 że nie kończy się przy użyciu, więc naprawdę wyglądał głupie 84 00:04:11,720 --> 00:04:15,160 że mieliśmy łopatę siedzi tu cały dzień, w ubiegłą środę, a trochę łyżka. 85 00:04:15,160 --> 00:04:17,709 Ale to był mój metaforyczny sposób stara się malować 86 00:04:17,709 --> 00:04:21,600 obraz, dlaczego mamy do przejścia z C na języku, takich jak PHP. 87 00:04:21,600 --> 00:04:25,480 I to samo można powiedzieć o żadnej liczba languages-- Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 lub bukiety wiele innych, ale podczas gdy w C, na przykład, zapisanie programu w języku C 89 00:04:31,270 --> 00:04:34,050 może być zazwyczaj jak biorąc łyżkę tak 90 00:04:34,050 --> 00:04:36,770 i kopanie dziury w ziemi, w piasku lub błocie. 91 00:04:36,770 --> 00:04:39,770 PHP pozwala na wykonywanie o wiele większe ukąszenia z tego problemu, 92 00:04:39,770 --> 00:04:42,842 pisanie znacznie mniej kodu przy użyciu znacznie mniejszej narzędzie, 93 00:04:42,842 --> 00:04:45,050 bo jest tak dużo więcej Funkcjonalność sztukowanych w. 94 00:04:45,050 --> 00:04:47,633 >> Teraz, gdy byliśmy bardzo dramatyczne, że mamy coś do łopaty 95 00:04:47,633 --> 00:04:48,760 tutaj, ale tak będzie. 96 00:04:48,760 --> 00:04:51,370 W tym samym czasie, druga metafora wpadliśmy 97 00:04:51,370 --> 00:04:53,770 Jest, oczywiście, można używać coś takiego klucza 98 00:04:53,770 --> 00:04:56,610 wbijać się w coś na kształt paznokci. 99 00:04:56,610 --> 00:04:58,980 Ale oczywiście, prawo Narzędzie do użytku będzie 100 00:04:58,980 --> 00:05:01,360 być nie tyle Język nazywa C-- 101 00:05:01,360 --> 00:05:03,590 a teraz po prostu denerwują [? Sanders?] Chyba, 102 00:05:03,590 --> 00:05:07,890 będziemy naprawić later-- tak właściwym narzędziem do często korzystają 103 00:05:07,890 --> 00:05:09,640 nie będzie Narzędzie to najniższy poziom. 104 00:05:09,640 --> 00:05:13,720 I rzeczywiście, C nie jest językiem, który większość z was nigdy nie będzie w użyciu, 105 00:05:13,720 --> 00:05:15,590 Należy koniecznie stosować lub ponownie. 106 00:05:15,590 --> 00:05:18,350 >> I faktycznie, trochę secret-- tylko raz 107 00:05:18,350 --> 00:05:23,160 Sam używam C jest dość dużo między Września i grudnia każdego upadku 108 00:05:23,160 --> 00:05:23,870 semestr. 109 00:05:23,870 --> 00:05:25,790 A to dlatego, że używać go jako okazję 110 00:05:25,790 --> 00:05:27,852 nauczyć się podstaw programowania, 111 00:05:27,852 --> 00:05:29,810 a wraz z nim komputera Podstawy naukowe, dane 112 00:05:29,810 --> 00:05:32,435 Struktury, Algorytmy i like-- ale bardzo szybko będziesz 113 00:05:32,435 --> 00:05:35,010 zobacz teraz, składni i idee leżące u podstaw C 114 00:05:35,010 --> 00:05:37,530 są tak cudownie przenieść na bardziej nowoczesny 115 00:05:37,530 --> 00:05:41,130 Języki poziomie wyższym, jak PHP i Python i Perl i Java 116 00:05:41,130 --> 00:05:46,750 i Objective-C-- właściwie nie tyle Cel-C-- ale Swift, te nowsze 117 00:05:46,750 --> 00:05:50,010 Języki, że wielu z was będzie następnie babrać z Ciebie ostatecznego projektu. 118 00:05:50,010 --> 00:05:55,070 >> Więc bez zbędnych ceregieli, niech rzeczywiście korzystać z PHP, aby rozwiązać pewne problemy. 119 00:05:55,070 --> 00:06:00,230 Przypomnijmy, że na początku, ostatnia tygodniu, po prostu skorzystaliśmy CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 napisaliśmy przemiły mały program że po prostu powiedział: "Witaj, świecie". 121 00:06:02,990 --> 00:06:05,680 I wtedy zapisany w plik o nazwie hello.php. 122 00:06:05,680 --> 00:06:07,280 I wtedy wpadłem tego polecenia. 123 00:06:07,280 --> 00:06:08,080 >> I czemu? 124 00:06:08,080 --> 00:06:09,900 W języku angielskim, co tu się dzieje? 125 00:06:09,900 --> 00:06:12,760 Co robię, gdy Pobiegłem polecenia? 126 00:06:12,760 --> 00:06:13,405 >> Tak? 127 00:06:13,405 --> 00:06:16,572 >> PUBLICZNOŚCI: Jest jakaś funkcja PHP że czyta co in-- rozumie. 128 00:06:16,572 --> 00:06:19,696 DAVID MALAN: Dobra, nie ma niektórych funkcji PHP-- i pozwól mi być bardziej szczegółowe, 129 00:06:19,696 --> 00:06:21,810 jest program o nazwie PHP, a.k.a. 130 00:06:21,810 --> 00:06:25,872 Tłumacza, który rozumie zawartość hello.php, 131 00:06:25,872 --> 00:06:27,830 i interpretuje go od góry do na dole, od lewej do prawej, 132 00:06:27,830 --> 00:06:29,590 i robi to, co mówią te polecenia. 133 00:06:29,590 --> 00:06:33,320 Polecenia w hello.php, oczywiście, jest po prostu źródłem code-- funkcje 134 00:06:33,320 --> 00:06:35,750 i zmienne i pętle i podobne, że my sami 135 00:06:35,750 --> 00:06:37,460 zaczęli pisać w PHP. 136 00:06:37,460 --> 00:06:40,240 >> Ale w przeciwieństwie do C, który jest skompilowany języka, 137 00:06:40,240 --> 00:06:42,810 PHP po prostu napisać go i uruchom go. 138 00:06:42,810 --> 00:06:46,420 Możesz pominąć ten krok pośrednika o przekształcenie go do zer i jedynek, 139 00:06:46,420 --> 00:06:47,790 a następnie uruchomić go. 140 00:06:47,790 --> 00:06:50,510 A więc to, co jest do góry nogami z tego? 141 00:06:50,510 --> 00:06:52,690 Dlaczego jesteśmy omijając krok? 142 00:06:52,690 --> 00:06:55,238 Dlaczego bardziej nowoczesnych języków mają tendencję do pominąć ten krok? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 Jakie były korzyści? 145 00:07:01,220 --> 00:07:02,080 >> Albo po prostu intuicyjnie? 146 00:07:02,080 --> 00:07:04,200 Nawet jeśli nie mam pisałem dużo PHP, 147 00:07:04,200 --> 00:07:07,210 co jest korzystne, o nie kompilowania kodu sądzisz? 148 00:07:07,210 --> 00:07:08,520 Nie? 149 00:07:08,520 --> 00:07:09,610 Nie popełniając? 150 00:07:09,610 --> 00:07:11,350 Zarysowania głowę? 151 00:07:11,350 --> 00:07:12,614 Tak. 152 00:07:12,614 --> 00:07:13,600 >> PUBLICZNOŚCI: Bardziej dynamiczne. 153 00:07:13,600 --> 00:07:14,683 >> DAVID MALAN: Bardziej dynamiczne? 154 00:07:14,683 --> 00:07:16,032 Co masz na myśli? 155 00:07:16,032 --> 00:07:17,000 >> PUBLICZNOŚCI: [niesłyszalne] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID MALAN: OK, dobra, więc w zależności od wejścia, 158 00:07:22,390 --> 00:07:23,470 nie trzeba kompilować go za każdym razem. 159 00:07:23,470 --> 00:07:24,990 I to naprawdę jest tak proste jak that-- co 160 00:07:24,990 --> 00:07:26,990 jest sens kontynuowania skompilować kod? 161 00:07:26,990 --> 00:07:29,480 To tylko krok, który jest making-- to wymaga, 162 00:07:29,480 --> 00:07:31,900 W ciągu ostatnich kilku tygodni, dwa razy więcej kroków 163 00:07:31,900 --> 00:07:33,820 tak po prostu uruchomić program. 164 00:07:33,820 --> 00:07:36,940 To było przydatne, widząc, że Ciebie zobaczyć komunikaty o błędach i tak dalej, 165 00:07:36,940 --> 00:07:38,720 ale to wciąż tylko irytujące krokiem. 166 00:07:38,720 --> 00:07:41,810 >> I tak programiści sobie sprawę, w czasie, dlaczego nie 167 00:07:41,810 --> 00:07:45,327 zacząć pisać w językach, które nie trzeba ten krok dość mechaniczną, 168 00:07:45,327 --> 00:07:47,160 tak, że można po prostu napisać Twój kod i uruchomić go. 169 00:07:47,160 --> 00:07:48,920 Ale jaka była cena że widzieliśmy zapłaciliśmy 170 00:07:48,920 --> 00:07:50,910 w zeszłym tygodniu, w jednym konkretnym przykładzie? 171 00:07:50,910 --> 00:07:51,650 Tak? 172 00:07:51,650 --> 00:07:52,370 >> Prędkości. 173 00:07:52,370 --> 00:07:54,690 Więc [? co to?] tłumacze trochę wolniej, 174 00:07:54,690 --> 00:07:57,330 w tym zer i jedynek są miła i szybka do komputera 175 00:07:57,330 --> 00:08:00,070 aby zrozumieć, ponieważ Intel CPU, czy cokolwiek to jest, 176 00:08:00,070 --> 00:08:03,070 tylko rozumie, co się dzieje na tych wzorców bitów. 177 00:08:03,070 --> 00:08:05,370 Natomiast tłumacza to program, który naprawdę 178 00:08:05,370 --> 00:08:07,980 musi przeczytać źródło ASCII kod, który napisałeś, 179 00:08:07,980 --> 00:08:12,700 i przekonwertować go, że tak powiem, lub dowiedzieć się, jak to konwertuje ostatecznie 180 00:08:12,700 --> 00:08:13,525 do zer i jedynek. 181 00:08:13,525 --> 00:08:15,650 Więc po prostu zajmuje trochę trochę trafień wydajności. 182 00:08:15,650 --> 00:08:16,858 Więc to trochę kompromisu. 183 00:08:16,858 --> 00:08:21,570 Teraz, jeśli robimy to tu, pozwól mi zrób przykład w następujący sposób. 184 00:08:21,570 --> 00:08:26,610 Jeśli wrócę tu, nowy plik, zamierzam aby zapisać to znowu hello.php. 185 00:08:26,610 --> 00:08:31,450 A teraz mam zamiar iść do przodu i powiedzieć: "print hello world" - 186 00:08:31,450 --> 00:08:35,130 i przypominam sobie, że mogę korzystać z drukiem, nie wiem użyć druku-F. A teraz tutaj, 187 00:08:35,130 --> 00:08:42,039 jeśli to zrobię PHP hello.php, huh-- I nie wydaje się interpretować go. 188 00:08:42,039 --> 00:08:43,412 Co zrobiłem źle? 189 00:08:43,412 --> 00:08:44,710 >> PUBLICZNOŚCI: Kątowe bransoletki. 190 00:08:44,710 --> 00:08:47,015 >> DAVID MALAN: Tak, trzeba kąt ten uchwyt do góry. 191 00:08:47,015 --> 00:08:49,390 Więc jest to trochę denerwujące, ale przyzwyczaisz się do niego szybko. 192 00:08:49,390 --> 00:08:53,500 Jeśli mam napisać kod PHP, I generalnie trzeba powiedzieć program, 193 00:08:53,500 --> 00:08:56,950 lub poinformować tłumacza, hej PHP, tutaj jest trochę kodu PHP. 194 00:08:56,950 --> 00:09:00,440 A potem na dokładkę, chciałbym zamknięcie nie w tym, ale raczej 195 00:09:00,440 --> 00:09:03,740 ze znakiem zapytania po prostu kąt Uchwyt, tak, że teraz tu, 196 00:09:03,740 --> 00:09:06,840 jeśli uruchomię to jeszcze raz, teraz Uzyskać pożądany rezultat. 197 00:09:06,840 --> 00:09:09,820 >> Teraz zróbmy niewielki optymalizacji, po prostu tak, że widziałem go wcześniej. 198 00:09:09,820 --> 00:09:14,040 Jest to trochę denerwujące, że I trzeba uruchomić PHP przestrzeni hello.php, 199 00:09:14,040 --> 00:09:16,060 ponieważ w przeszłości może po prostu napisz dot ukośnik 200 00:09:16,060 --> 00:09:17,560 nazwa programu, co jest miłe. 201 00:09:17,560 --> 00:09:19,420 To trochę lepsze doświadczenie użytkownika. 202 00:09:19,420 --> 00:09:24,160 >> Tak więc okazuje się, można to zrobić w PHP z following-- I 203 00:09:24,160 --> 00:09:28,780 mogą korzystać z tego dość tajemniczy Zaklęcie na górze tutaj, 204 00:09:28,780 --> 00:09:31,740 który jest powszechnie nazywany shebang, przy czym jest to ostre symbolem, 205 00:09:31,740 --> 00:09:34,270 że tak powiem, jest to huk lub wykrzyknik. 206 00:09:34,270 --> 00:09:38,490 I to teraz jest ścieżką do programu na typowym systemie Linux, które 207 00:09:38,490 --> 00:09:41,500 nazywa środowisko lub env. 208 00:09:41,500 --> 00:09:43,920 I to line-- długą historię jedna linia short-- tylko 209 00:09:43,920 --> 00:09:48,710 mówi, hej komputer, znaleźć PHP interpreter dla mnie w środowisku, 210 00:09:48,710 --> 00:09:50,610 znaleźć je w pamięci, że tak powiem. 211 00:09:50,610 --> 00:09:54,130 >> A teraz, co jest ładne, jest że jeśli pójdę na dół, 212 00:09:54,130 --> 00:09:57,750 Mogę zrobić dot ukośnik komentarzy dot php, or-- hmm. 213 00:09:57,750 --> 00:09:59,000 Permission denied. 214 00:09:59,000 --> 00:10:02,350 Cóż, zobaczymy jeszcze tego z problemem ustawić siedem, jeśli Ciebie 215 00:10:02,350 --> 00:10:04,060 jeszcze nie, z uprawnieniami. 216 00:10:04,060 --> 00:10:06,510 Okazuje się, że muszę aby uruchomić to polecenie 217 00:10:06,510 --> 00:10:10,779 nazywa [? chamod?] na zmiany mode-- A plus x hello.php. 218 00:10:10,779 --> 00:10:13,820 Muszę [niesłyszalne] ten jeden dodatkowy krok, który mówi mój komputer, 219 00:10:13,820 --> 00:10:16,400 aby hello.php wykonywalny. 220 00:10:16,400 --> 00:10:21,310 A teraz uważaj, co happens-- kropkę slash hello.php, to po prostu działa. 221 00:10:21,310 --> 00:10:23,310 Nie musisz podawać interpreter więcej. 222 00:10:23,310 --> 00:10:26,680 I mogę to zrobić jeszcze ładniejsza, Nadal, jeśli zmienić nazwę tej rzeczy. 223 00:10:26,680 --> 00:10:30,570 Jeśli przeniosę hello.php tylko Hello-- tak zawiadomienia w lewym górnym rogu, 224 00:10:30,570 --> 00:10:32,860 nazwa programu jest Rzeczywiście teraz po prostu Witam. 225 00:10:32,860 --> 00:10:37,300 Teraz mogę zrobić to wyglądać programie C, mimo że jest napisane w PHP-- 226 00:10:37,300 --> 00:10:39,210 i szczerze dowolna liczba w innych językach. 227 00:10:39,210 --> 00:10:41,480 >> Tak marginalna poprawa, nie ma różnicy funkcjonalne. 228 00:10:41,480 --> 00:10:44,460 Ale to tylko mała ciekawostka teraz, tak, że można pisać programy 229 00:10:44,460 --> 00:10:48,989 w dowolnym języku, a użytkownik nie ma trzeba wiedzieć, czy obchodzi mnie, co to są. 230 00:10:48,989 --> 00:10:51,030 Cóż, spójrzmy na bardziej przekonujące przykład teraz 231 00:10:51,030 --> 00:10:52,850 że bita z góry. 232 00:10:52,850 --> 00:10:54,955 I to się nazywa quote.php. 233 00:10:54,955 --> 00:10:56,740 I to jest dostępne online. 234 00:10:56,740 --> 00:11:00,299 I zauważyć, że jest to dość short-- ale to jest programem wiersza poleceń, to 235 00:11:00,299 --> 00:11:02,840 będzie wyglądać się cen akcji dla mnie, co faktycznie się 236 00:11:02,840 --> 00:11:04,230 być germane do problemu ustawić siedem. 237 00:11:04,230 --> 00:11:05,396 >> Zobaczmy więc, co robię. 238 00:11:05,396 --> 00:11:08,640 Na samej górze Mam otwarty nawias znak zapytania PHP. 239 00:11:08,640 --> 00:11:13,372 Wtedy mam ten wiersz, w którym jestem wymagające plik o nazwie functions.php-- 240 00:11:13,372 --> 00:11:15,080 jedziemy zobaczyć więcej o tym za chwilę, 241 00:11:15,080 --> 00:11:17,340 ale to jest jak C pod wersja ostre obejmują, 242 00:11:17,340 --> 00:11:19,090 gdzie chcesz iść to inny plik. 243 00:11:19,090 --> 00:11:23,720 PHP zwraca wymagać, choć ma również obejmować funkcję. 244 00:11:23,720 --> 00:11:26,861 I okazuje się, że function.php jest tylko coś napisałem przed klasą. 245 00:11:26,861 --> 00:11:29,860 I umieścić go w tym samym katalogu, ponieważ Chciałem czynnik poza kodu 246 00:11:29,860 --> 00:11:31,800 które możemy użyć w innym miejscu. 247 00:11:31,800 --> 00:11:34,560 >> Tymczasem można chyba wywnioskować, co się tutaj dzieje. 248 00:11:34,560 --> 00:11:39,200 Ten jest trochę inny od C-- ale co mam na myśli zapewnienia właściwego wykorzystania? 249 00:11:39,200 --> 00:11:41,180 Przetłumacz tę bardziej technicznie. 250 00:11:41,180 --> 00:11:45,950 W jakich okolicznościach jestem wychodzenia z programu, lub wyjeździe? 251 00:11:45,950 --> 00:11:47,074 Tak? 252 00:11:47,074 --> 00:11:47,990 >> PUBLICZNOŚCI: Gdy nie masz dwa argumenty wiersza poleceń. 253 00:11:47,990 --> 00:11:49,480 >> DAVID MALAN: Kiedy nie mam dowodzić argumenty wiersza. 254 00:11:49,480 --> 00:11:52,396 I pamiętaj, że jeden z tych Argumenty jest sama nazwa programu. 255 00:11:52,396 --> 00:11:55,340 A drugi będzie inne słowo wpisuję po wierszu. 256 00:11:55,340 --> 00:11:57,460 Tak jak C, to to mój sposób na sprawdzenie, 257 00:11:57,460 --> 00:12:00,022 czy użytkownik współpracy i uruchomić program, jak zamierzałem? 258 00:12:00,022 --> 00:12:01,730 Teraz, coś trochę inaczej 259 00:12:01,730 --> 00:12:04,020 z C-- przede wszystkim mamy mają ten znak dolara, 260 00:12:04,020 --> 00:12:07,710 i co robi dolara znak oznaczający w PHP? 261 00:12:07,710 --> 00:12:08,440 Tylko zmienna. 262 00:12:08,440 --> 00:12:11,731 To all-- tylko zmienna, a następnie co chcesz właściwie nazwać. 263 00:12:11,731 --> 00:12:14,000 Zauważ, że jest coś brakuje w moim programie PHP, 264 00:12:14,000 --> 00:12:18,210 tak jak to było w zeszłym brakuje tygodniu, w porównaniu do C, co jest co? 265 00:12:18,210 --> 00:12:21,620 >> A typy, ale także coś innego. 266 00:12:21,620 --> 00:12:26,409 Nie jest czymś function-- funkcję głównego. 267 00:12:26,409 --> 00:12:27,450 Nie ma główną funkcją. 268 00:12:27,450 --> 00:12:29,680 Wystarczy zacząć pisać kod bez konieczności 269 00:12:29,680 --> 00:12:32,790 martwić się o to dość arbitralne Konwencja nazewnictwa jakieś domyślne 270 00:12:32,790 --> 00:12:33,880 główną funkcją. 271 00:12:33,880 --> 00:12:36,720 Więc arg C jest tak naprawdę zmienna globalna 272 00:12:36,720 --> 00:12:39,049 że interpreter sprawia, że ​​dla mnie dostępne. 273 00:12:39,049 --> 00:12:40,090 Teraz, to jest interesujące. 274 00:12:40,090 --> 00:12:41,140 Tak więc patrzeć na rzeczy. 275 00:12:41,140 --> 00:12:43,370 Znak dolara Zdjęcie jest na w lewo, to moja zmienna. 276 00:12:43,370 --> 00:12:45,120 Z prawej strony, jest podobno 277 00:12:45,120 --> 00:12:50,270 funkcja w PHP o nazwie odnośnika, że Olewam mój ostatni wiersz poleceń 278 00:12:50,270 --> 00:12:51,902 Argument to-- cokolwiek to słowo. 279 00:12:51,902 --> 00:12:53,610 I zobaczymy, jak to pracuje w jednej chwili. 280 00:12:53,610 --> 00:12:55,380 >> I wtedy wreszcie jestem raportowania cenę. 281 00:12:55,380 --> 00:12:58,650 Jestem wydrukowanie jednego Udział taki a taki. 282 00:12:58,650 --> 00:13:02,082 I pamiętaj, to jest sposób, w PHP-- sposób w PHP-- 283 00:13:02,082 --> 00:13:04,290 gdzie nie trzeba robić znak dolara S już. 284 00:13:04,290 --> 00:13:06,782 Możesz po prostu użyć nawiasów klamrowych i podłączyć w jakiejś zmiennej. 285 00:13:06,782 --> 00:13:09,240 Nie musisz się martwić, printf w taki sam sposób. 286 00:13:09,240 --> 00:13:13,530 >> I tak na marginesie, kiedy można umieścić zmienną wewnątrz cudzysłowów, takich jak ten, 287 00:13:13,530 --> 00:13:17,370 używasz fantazyjne techniki nazywa zmiennej interpolacji. 288 00:13:17,370 --> 00:13:20,380 To oznacza po prostu podłącz zmienną tutaj. 289 00:13:20,380 --> 00:13:23,760 I tak na marginesie, niektórzy z was, którzy przychodzą z innych środowisk programistycznych, 290 00:13:23,760 --> 00:13:26,960 nie może używać apostrofów wokół struny, aby to zrobić. 291 00:13:26,960 --> 00:13:30,290 Musisz użyć cudzysłowów dla Zmienna interpolacji do pracy. 292 00:13:30,290 --> 00:13:32,740 W przeciwnym razie będziesz dosłownie zobaczyć te nawiasy klamrowe. 293 00:13:32,740 --> 00:13:34,500 >> Więc wreszcie, idziemy dalej i uruchomić to. 294 00:13:34,500 --> 00:13:36,690 Pozwól, że mój terminalu trochę większe. 295 00:13:36,690 --> 00:13:41,940 Pozwólcie mi iść do przodu i uruchamiania wewnątrz mojego katalogu cytatem. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? cytat?] PHP cytat dot PHP, 297 00:13:46,950 --> 00:13:50,290 i będę szukać czegoś jak GOOG, który jest jej symbol giełdowy, 298 00:13:50,290 --> 00:13:55,510 i jeden udział nową nazwą, Alfabet Inc, kosztuje $ 717 od dzisiaj. 299 00:13:55,510 --> 00:13:58,680 Dobrze, jeśli chcemy uruchomić to znowu, ktoś 300 00:13:58,680 --> 00:14:02,600 mają inny giełdowy chcą patrzeć? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft Myślę, że jest ten jeden, MSFT-- 53 $. 302 00:14:06,770 --> 00:14:09,720 Myślę, że może to jest Yahoo. 303 00:14:09,720 --> 00:14:12,130 I jest to, że na Facebooku. 304 00:14:12,130 --> 00:14:13,740 >> Więc co to jest ten program robi? 305 00:14:13,740 --> 00:14:16,306 Magia wydaje się być osadzone w tym funkcje przeszukiwania. 306 00:14:16,306 --> 00:14:17,430 Więc rzućmy okiem. 307 00:14:17,430 --> 00:14:21,815 >> Okazuje się, że nie przyjdzie PHP, to w functions.php. 308 00:14:21,815 --> 00:14:23,690 I nie przejdzie to bardzo szczegółowo, 309 00:14:23,690 --> 00:14:28,040 ale zauważ operacyjny słowo tutaj że w wierszu szóstym functions.php-- 310 00:14:28,040 --> 00:14:29,440 Dosłownie znaczy funkcję. 311 00:14:29,440 --> 00:14:31,050 I podać nazwę mojej funkcji. 312 00:14:31,050 --> 00:14:34,330 I wtedy podać dowolny argumenty lub parametry, 313 00:14:34,330 --> 00:14:36,480 Chcę, aby funkcja take-- żadnych rodzajów. 314 00:14:36,480 --> 00:14:37,580 A następnie wdrożyć go. 315 00:14:37,580 --> 00:14:39,240 >> I będę machać ręką w realizacji, 316 00:14:39,240 --> 00:14:42,115 ponieważ jest to dość zaawansowane w prawo teraz, ale my go ponownie zobaczyć w rzeczywistości 317 00:14:42,115 --> 00:14:44,700 w tygodniu w problemu ustawić siedem. 318 00:14:44,700 --> 00:14:47,490 Ale mogę to posprzątać, też. 319 00:14:47,490 --> 00:14:49,590 I obejmował również w dzisiejsza Kod wersja 320 00:14:49,590 --> 00:14:52,340 cytatu, który nie ma pliku dot PHP. 321 00:14:52,340 --> 00:14:57,270 Bo to, co jest zapewne u Górna część programu o nazwie po prostu zacytować? 322 00:14:57,270 --> 00:15:00,140 Że tak zwane shebang-- dość tajemnicze zaklęcie 323 00:15:00,140 --> 00:15:04,590 który mówi znaleźć w PHP, a następnie uruchomić go na mojego kodu tutaj. 324 00:15:04,590 --> 00:15:07,360 >> W porządku, tak że przynosi nam na którym skończyliśmy 325 00:15:07,360 --> 00:15:09,560 ostatnia time-- choć z niektóre bardziej zaawansowane przykłady. 326 00:15:09,560 --> 00:15:13,980 Wszelkie pytania do tej pory o PHP i co robimy? 327 00:15:13,980 --> 00:15:15,570 No-- wszystko w porządku. 328 00:15:15,570 --> 00:15:16,180 Tak? 329 00:15:16,180 --> 00:15:19,610 >> PUBLICZNOŚCI: Wewnątrz Pliki HTML, zrobić you-- 330 00:15:19,610 --> 00:15:22,226 [? czy ty ?] [? tak nazwać?] w [niesłyszalne] plik PHP? 331 00:15:22,226 --> 00:15:23,350 DAVID MALAN: Dobre pytanie. 332 00:15:23,350 --> 00:15:26,070 W kontekście internetowej, której jesteśmy dosłownie na temat przejścia do, 333 00:15:26,070 --> 00:15:28,028 nie stosować tzw shebang na górze 334 00:15:28,028 --> 00:15:31,980 ponieważ server-- internetowej często Program o nazwie Apache lub Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server, lub dowolna ilość innego oprogramowania serwera WWW, 336 00:15:37,470 --> 00:15:40,636 wie, że gdy widzi Kropka plik PHP, które to 337 00:15:40,636 --> 00:15:42,010 tłumacza należy uruchomić na nim. 338 00:15:42,010 --> 00:15:43,468 To nie wygląda na tej pierwszej linii. 339 00:15:43,468 --> 00:15:45,580 Więc tej pierwszej linii sztuczki jest tylko, gdy jesteś 340 00:15:45,580 --> 00:15:48,330 pisanie wiersza poleceń programs-- które nie zrobimy bardzo często, 341 00:15:48,330 --> 00:15:52,510 ale to jest nasz sposób pomostowych nasze przykłady C do teraz nasze PHP. 342 00:15:52,510 --> 00:16:00,680 >> Więc rzeczywiście zlikwidować ten świat ze świata wiersza poleceń do sieci 343 00:16:00,680 --> 00:16:02,230 w następujący sposób. 344 00:16:02,230 --> 00:16:05,090 Pozwólcie mi iść do przodu i wyciągnąć tutaj na chwilę. 345 00:16:05,090 --> 00:16:09,940 Więc jeśli mamy serwer WWW, a raczej jeśli mamy tu mój laptop, 346 00:16:09,940 --> 00:16:11,280 które będę rysować tak. 347 00:16:11,280 --> 00:16:14,250 I tu mamy www w jakiejś formie. 348 00:16:14,250 --> 00:16:18,210 A potem tutaj, mamy serwer w building-- 349 00:16:18,210 --> 00:16:20,760 to jest jak internet works-- i tutaj 350 00:16:20,760 --> 00:16:23,120 Jest to serwer z kilkoma światłami może. 351 00:16:23,120 --> 00:16:27,530 Co się właściwie dzieje między tymi dwoma połączeniami? 352 00:16:27,530 --> 00:16:29,240 >> Więc w tym budynku jest serwer WWW. 353 00:16:29,240 --> 00:16:31,420 To tylko komputer który jest uruchomiony jakiś eksploatacji 354 00:16:31,420 --> 00:16:34,561 system-- być może wolne oprogramowanie nazywa Apache, który jest uruchomiony CS50 IDE. 355 00:16:34,561 --> 00:16:36,310 Więc można właściwie myśleć o tym budynku 356 00:16:36,310 --> 00:16:38,579 jako budynek w który jest przechowywany CSt0 IDE. 357 00:16:38,579 --> 00:16:40,870 To miejsce, gdzie wszyscy z was mają Rachunki, gdzie was wszystkich 358 00:16:40,870 --> 00:16:43,130 mieć swój własny serwer WWW działa, wszyscy 359 00:16:43,130 --> 00:16:45,730 mają swój własny, unikalny adres URL, jak zaczęliśmy dyskutować, 360 00:16:45,730 --> 00:16:47,280 a zobaczysz więcej w P. ustawić sześć. 361 00:16:47,280 --> 00:16:49,450 >> Oto mój laptop gdzieś indziej w Internecie. 362 00:16:49,450 --> 00:16:54,550 I tak, kiedy odwiedzam adres URL, który należy do mnie, że ruch internetowy będzie 363 00:16:54,550 --> 00:16:58,360 na serwer, serwera odbieranie HTTP request-- 364 00:16:58,360 --> 00:17:02,900 jak uzyskać index.html i to Odpowiadając na tej stronie internetowej. 365 00:17:02,900 --> 00:17:04,280 Więc to jest ogólny paradygmat. 366 00:17:04,280 --> 00:17:07,089 Podczas gdy wszystko się Do tej pory Dziś wszystko 367 00:17:07,089 --> 00:17:09,660 dzieje się tylko w ogranicza tego budynku. 368 00:17:09,660 --> 00:17:12,910 Używałem mojego laptopa, ale Byłem podłączony do CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 więc wszystkie z tych programów biegałam w środku tego serwera, sam. 370 00:17:17,369 --> 00:17:22,660 >> Ale teraz, zacznijmy ponownym użyciem PHP napisać jakieś rzeczywiste programy 371 00:17:22,660 --> 00:17:24,230 serwowane są przez serwer WWW. 372 00:17:24,230 --> 00:17:30,320 I to zrobić, mam zamiar iść w całą masę przykładów 373 00:17:30,320 --> 00:17:33,710 że wprowadzenie tego pojęcia tutaj. 374 00:17:33,710 --> 00:17:38,500 Jest to więc rodzaj fantazyjny sposób Opisując paradygmat programowania. 375 00:17:38,500 --> 00:17:41,540 >> I rzeczywiście, po wyjściu CS50 lub pracy nad projektami końcowych, 376 00:17:41,540 --> 00:17:43,520 lub podjąć niektóre przestrzegać od klasy, zaczniesz 377 00:17:43,520 --> 00:17:45,740 aby zobaczyć, że world-- szczególnie dorósłszy 378 00:17:45,740 --> 00:17:48,300 w językach takich jak C które są bardzo niskie level-- 379 00:17:48,300 --> 00:17:51,290 sobie sprawę, że nie jest lepiej sposoby pisania oprogramowania. 380 00:17:51,290 --> 00:17:53,290 Istnieją pewne wzory, które można wykonać, 381 00:17:53,290 --> 00:17:57,640 pewne sposoby organizowania plików oraz sposoby nazywania swoich funkcji, 382 00:17:57,640 --> 00:18:00,300 tak, że długie opowiadanie, świat ma pochodzić 383 00:18:00,300 --> 00:18:04,340 z całym gronem akronimów i nazwy sposobów programowania. 384 00:18:04,340 --> 00:18:06,260 To są tylko techniki można użyć. 385 00:18:06,260 --> 00:18:09,660 >> I jeden z nich nazywa MVC, dla modelu View Controller. 386 00:18:09,660 --> 00:18:12,270 I to jest właśnie dla teraz, nadmiernie skomplikowane 387 00:18:12,270 --> 00:18:18,960 sposób mówienia, jak należy ułożyć strona PHP opartych, w naszym przypadku. 388 00:18:18,960 --> 00:18:22,140 Jak organizować swoje pliki, w jaki sposób zorganizować swoją logikę, 389 00:18:22,140 --> 00:18:26,220 w taki sposób, że ułatwia Napisać bardziej skomplikowanych stron internetowych? 390 00:18:26,220 --> 00:18:28,550 I rzeczywiście, będziemy szybko dostać się tam z p-set siedem. 391 00:18:28,550 --> 00:18:32,020 >> Tak więc w świecie MVC, będziesz aby zobaczyć, że nasz kod może ogólnie 392 00:18:32,020 --> 00:18:38,290 scharakteryzować jako albo kodu modelu lub kod kontrolera, lub widoku Kod. 393 00:18:38,290 --> 00:18:40,200 I mam zamiar upraszcza go jako follows-- 394 00:18:40,200 --> 00:18:42,074 sterownik jest mózgi swoim programie, 395 00:18:42,074 --> 00:18:44,100 to, gdzie wszystkie z ciekawa logika się dzieje. 396 00:18:44,100 --> 00:18:46,110 Więc wszystko byliśmy pisanie tej pory w klasie, 397 00:18:46,110 --> 00:18:48,210 jest trochę jak kontroler code-- to sterowanie 398 00:18:48,210 --> 00:18:50,585 Twój program, swoje pętle, twój warunki, swoje funkcje 399 00:18:50,585 --> 00:18:52,100 i zmienne i to wszystko. 400 00:18:52,100 --> 00:18:56,160 >> Widoki, teraz będą się trochę bardziej oczywiste w świecie internetu. 401 00:18:56,160 --> 00:18:59,360 A widok jest estetyka swojej stronie internetowej. 402 00:18:59,360 --> 00:19:04,080 To, co użytkownik sees-- obrazów, tabele HTML, znaczniki HTML oraz wszystkie 403 00:19:04,080 --> 00:19:08,220 z tym, wszystkie z puszystej estetycznych rzeczy, które nie jest trudne do napisania, 404 00:19:08,220 --> 00:19:11,380 ale jest tylko to, co masz generowania, jest tzw widzenia estetyki. 405 00:19:11,380 --> 00:19:13,880 I model, a ostatecznie będzie być stuff-- bazy danych, które 406 00:19:13,880 --> 00:19:16,510 zaczniemy nurkowanie w ogóle tym bardziej w tą środę. 407 00:19:16,510 --> 00:19:19,740 Tak więc sterownik jest logika, Widok jest estetyczne rzeczy, 408 00:19:19,740 --> 00:19:23,500 i model będzie gdzie możemy przechowywać nasze dane rzeczywiste. 409 00:19:23,500 --> 00:19:26,410 >> Warto więc spojrzeć na to bardziej konkretnie w poniższym przykładzie. 410 00:19:26,410 --> 00:19:34,700 Mam zamiar iść do mojego katalogu tutaj dzisiejszej źródła code-- z których wszystkie 411 00:19:34,700 --> 00:19:35,770 jest dostępna w Internecie. 412 00:19:35,770 --> 00:19:37,800 I mam zamiar przejść do wersji zerowej. 413 00:19:37,800 --> 00:19:41,500 I tu jest-- nazwijmy to w Wersja zerowy stronie CS50 jest. 414 00:19:41,500 --> 00:19:43,010 Niewiele tu w ogóle. 415 00:19:43,010 --> 00:19:46,810 Jest to bardzo prosta strona internetowa, która jest Prawdopodobnie za pomocą czego HTML tags-- tylko 416 00:19:46,810 --> 00:19:48,970 Chyba z ostatnich przykładów? 417 00:19:48,970 --> 00:19:49,890 >> Co to? 418 00:19:49,890 --> 00:19:53,920 H1-- pewnie za to duże pogrubienie Tytuł, że logo się góry, CS50. 419 00:19:53,920 --> 00:19:55,080 A co jeszcze jest w grze? 420 00:19:55,080 --> 00:19:55,799 Tak? 421 00:19:55,799 --> 00:19:56,840 PUBLICZNOŚCI: nieuporządkowana lista. 422 00:19:56,840 --> 00:19:59,990 DAVID MALAN: nieuporządkowana list-- tak UL tag a może kilka znaczników LI. 423 00:19:59,990 --> 00:20:01,840 A jeśli nie pamiętam tych, to szczerze mówiąc nie ma znaczenia. 424 00:20:01,840 --> 00:20:04,170 Są puszyste rodzaju szczegóły implementacją HTML 425 00:20:04,170 --> 00:20:06,378 że szybko sprawdzić i jesteś z powrotem na swój sposób. 426 00:20:06,378 --> 00:20:10,040 Skupimy się bardziej na programowaniu pomysły, które są bardziej soczyste kawałki. 427 00:20:10,040 --> 00:20:12,890 >> Więc po prostu wziąć szybkie spojrzeć na HTML-- i rzeczywiście 428 00:20:12,890 --> 00:20:16,880 jeśli otworzyć źródło widok tutaj, yup, To jest dokładnie to, co się tutaj dzieje. 429 00:20:16,880 --> 00:20:18,440 Istnieje znacznik UL. 430 00:20:18,440 --> 00:20:20,630 Zagnieżdżone wewnątrz, że jest tagów LI się. 431 00:20:20,630 --> 00:20:24,470 A potem pożyczyłem URL rzeczywistego nauczania tutaj. 432 00:20:24,470 --> 00:20:27,570 >> A następnie w lectures.php jest najwyraźniej 433 00:20:27,570 --> 00:20:31,640 kolejny generowane dynamicznie strona że będzie miał, niech see-- ah, 434 00:20:31,640 --> 00:20:33,170 przez pierwsze dwa tygodnie wykładu. 435 00:20:33,170 --> 00:20:36,600 Więc tygodniu zero i jeden tydzień, niech spojrzeć na this-- gdybym zobaczyć źródło strony, 436 00:20:36,600 --> 00:20:38,120 również bardzo proste. 437 00:20:38,120 --> 00:20:42,430 Są to prowadzi do dwóch stron nazywa week0.php i week1.php. 438 00:20:42,430 --> 00:20:44,040 Tak uważają teraz, co się dzieje. 439 00:20:44,040 --> 00:20:50,630 >> Po kliknięciu na week0.php, mój laptop czyni wniosek o week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 Serwer WWW, a.k.a., CS50 IDE, odbiera ten wirtualny kopertę. 442 00:20:58,110 --> 00:21:01,040 To widząc wiadomość jak, się week0.php. 443 00:21:01,040 --> 00:21:05,060 Jest on następnie interpretacji plik, góry do dołu, w lewo na prawy-- plik 444 00:21:05,060 --> 00:21:07,720 nazywa week0.php-- i wypluwając wyniki. 445 00:21:07,720 --> 00:21:10,510 Więc wewnątrz tego pliku, week0.php musi być 446 00:21:10,510 --> 00:21:15,410 logika kontroler, który generuje to HTML, a my wkrótce zobaczyć. 447 00:21:15,410 --> 00:21:19,340 >> Ale teraz, pozwól mi kliknij tygodniu zerowym, a teraz mamy środę i piątek, 448 00:21:19,340 --> 00:21:25,260 a teraz mamy slajdy powoli z tygodnia zera. 449 00:21:25,260 --> 00:21:27,400 A może pamiętacie to z drodze powrotnej, kiedy. 450 00:21:27,400 --> 00:21:29,340 Więc to wszystko, ta strona robi. 451 00:21:29,340 --> 00:21:31,120 >> Warto więc zastanowić się, jak to robić. 452 00:21:31,120 --> 00:21:34,290 Mam zamiar iść z powrotem do Kod źródłowy tutaj, w CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 i mam zamiar otworzyć index.php. 454 00:21:36,660 --> 00:21:38,910 W górnej części tego pliku jest kilka uwag. 455 00:21:38,910 --> 00:21:43,000 A następnie w środku tego pliku, to Okazuje się, że to w ogóle nie ma kodu PHP. 456 00:21:43,000 --> 00:21:47,380 Bo jeśli nie masz żadnego z nawiasem tagi znak zapytania PHP, 457 00:21:47,380 --> 00:21:49,180 jesteś wolny, aby po prostu umieścić kod HTML. 458 00:21:49,180 --> 00:21:51,480 >> Bo to, co PHP tłumacz ma robić, 459 00:21:51,480 --> 00:21:53,938 jest, kiedy czyta ten file-- od góry do dołu, od lewej do prawy-- 460 00:21:53,938 --> 00:21:59,100 tylko interpretuje kod nie widzi między te nawiasy znak zapytania. 461 00:21:59,100 --> 00:22:02,380 I coś jeszcze, że tak nie jest uznać za PHP, po prostu wypluwa. 462 00:22:02,380 --> 00:22:05,080 I HTML jest jedną z rzeczy, będzie to tylko wypluć. 463 00:22:05,080 --> 00:22:09,090 >> Więc ten plik może mieć nazywany index.html, 464 00:22:09,090 --> 00:22:11,690 ale jestem nazywania wszystkiego Kropka PHP jako odskocznię. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- podobnie rozczarowująca, to tylko niektóre HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, podobnie tylko niektóre HTML. 467 00:22:19,840 --> 00:22:22,300 >> Ale teraz postawmy na przysłowiowym inżynierii kapelusz, 468 00:22:22,300 --> 00:22:24,400 i zastanowić się, jak możemy to poprawić. 469 00:22:24,400 --> 00:22:28,541 To nie jest trudne, aby to zrobić, ale rodzaj zdecentralizowanego do kopiowania i wklejania. 470 00:22:28,541 --> 00:22:31,540 I rzeczywiście, jeśli zrobię tygodniu dwa, ty wiem, co mam prawdopodobnie zamierzasz zrobić? 471 00:22:31,540 --> 00:22:34,940 Mam zamiar iść do week1.php, jestem zamiar zaznaczyć wszystko. 472 00:22:34,940 --> 00:22:39,110 Mam zamiar go skopiować, wkleić go do nowego pliku o nazwie week2.php, 473 00:22:39,110 --> 00:22:42,440 podać kilka adresów, a na mojej drodze. 474 00:22:42,440 --> 00:22:45,240 >> Tak więc na podstawie tego, co mamy Już widziałem w C, 475 00:22:45,240 --> 00:22:46,860 to nie czuję się dobrze, mam nadzieję. 476 00:22:46,860 --> 00:22:49,610 Kopiowanie, wklejanie rzadko właściwym rozwiązaniem. 477 00:22:49,610 --> 00:22:51,429 Co więc możemy zacząć zrobić, aby poprawić? 478 00:22:51,429 --> 00:22:53,345 Gdzie są szanse dla lepszego projektu? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Do czasu, mogę Tydzień osiem, to będzie 481 00:22:58,760 --> 00:23:00,910 być naprawdę denerwujące jeśli chcę zmienić 482 00:23:00,910 --> 00:23:03,930 czcionka z każdego z moje strony, lub jeśli chcę 483 00:23:03,930 --> 00:23:06,522 zmiana struktury układu. 484 00:23:06,522 --> 00:23:08,396 Więc gdzie jest szansa dla lepszego projektu? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Cóż, spójrzmy na to, co jest wspólna dla wszystkich tych plików. 487 00:23:15,160 --> 00:23:21,696 >> Oto jeden tydzień, oto tygodniu zero, oto lectures.php, 488 00:23:21,696 --> 00:23:25,790 oto index.php-- co jest taki sam i Jaka jest różnica, z grubsza rzecz biorąc, 489 00:23:25,790 --> 00:23:26,760 w każdym z tych plików? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 Tak? 492 00:23:32,060 --> 00:23:34,560 >> PUBLICZNOŚCI: [niesłyszalne] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID MALAN: OK, dobra. 495 00:23:42,160 --> 00:23:46,115 Więc nie jest to wzór, z pewnością, przy czym za każdym razem wybrać wykładzie, 496 00:23:46,115 --> 00:23:48,250 I powinno być generowanie bardzo podobnie wyglądający stronę. 497 00:23:48,250 --> 00:23:50,375 I tak chyba mogę wykorzystać fakt, że tak naprawdę, 498 00:23:50,375 --> 00:23:53,060 celowo numerycznie indeksowane naszą lectures-- 499 00:23:53,060 --> 00:23:55,290 czy mogę umieścić jeszcze więcej słowa w odpowiedzi. 500 00:23:55,290 --> 00:23:59,984 A co to jest jedyna rzecz, naprawdę, to się zmienia między tygodniu jedno- 501 00:23:59,984 --> 00:24:02,400 i pozwól mi przewinąć w dół, więc jest to mniej więcej w tym samym place-- 502 00:24:02,400 --> 00:24:05,480 więc o to tydzień zero, w przybliżeniu w górę. 503 00:24:05,480 --> 00:24:12,370 Oto tygodniu jeden, tydzień zero, jeden tydzień, tydzień zero. 504 00:24:12,370 --> 00:24:14,370 OK, dosłownie, jeśli wiesz, żaden program w ogóle, 505 00:24:14,370 --> 00:24:16,286 teraz jest to po prostu jak wzór odpowiadający gra. 506 00:24:16,286 --> 00:24:17,200 Więc co się zmieniło? 507 00:24:17,200 --> 00:24:18,765 Tak? 508 00:24:18,765 --> 00:24:19,777 >> PUBLICZNOŚCI: [niesłyszalne] 509 00:24:19,777 --> 00:24:22,360 DAVID MALAN: Dobra, więc tytuł zmienia się, zawsze tak lekko. 510 00:24:22,360 --> 00:24:24,010 Zero będzie, oczywiście, do jednego. 511 00:24:24,010 --> 00:24:25,570 Tak samo dzieje się w tagu H1. 512 00:24:25,570 --> 00:24:28,790 I nie bardzo rozumiem to tak łatwo, ponieważ adresy URL są trochę długo. 513 00:24:28,790 --> 00:24:30,670 Ale te adresy URL zmieniają się nieznacznie. 514 00:24:30,670 --> 00:24:34,490 >> Ale to, co się nie zmieni jest, śmiem powiedzieć, większość zawartości page-- 515 00:24:34,490 --> 00:24:38,530 tag HTML to samo, głowa jest takie same, to tytuł jest prawie takie same, 516 00:24:38,530 --> 00:24:40,659 jednostka jest taka sama, a prawie wszystko 517 00:24:40,659 --> 00:24:42,450 jest taki sam, z wyjątkiem te małe szczypie. 518 00:24:42,450 --> 00:24:45,310 Więc jak możemy go o faktoring niektóre na to uwagę? 519 00:24:45,310 --> 00:24:48,740 >> No daj mi dokładnie proponują że w następnej wersji. 520 00:24:48,740 --> 00:24:53,890 Więc tutaj w wersji jedno, mam dokładnie same pliki, plus kilka innych. 521 00:24:53,890 --> 00:24:59,730 Oto index.php-- i nawet jeśli nigdy nie widziałem PHP przed, 522 00:24:59,730 --> 00:25:05,511 co ja pewnie robi to rozwiązać problem-- na podstawie tego, co tu widzisz? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Tak, jest to, że niewielkim zaangażowaniu? 525 00:25:12,760 --> 00:25:13,450 Nie? 526 00:25:13,450 --> 00:25:16,020 Tak, przejdź dalej. 527 00:25:16,020 --> 00:25:17,380 >> PUBLICZNOŚCI: [niesłyszalne] 528 00:25:17,380 --> 00:25:18,380 >> DAVID MALAN: Tak. 529 00:25:18,380 --> 00:25:20,380 >> PUBLICZNOŚCI: [niesłyszalne] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID MALAN: Potrzebuję cię, aby mówić tylko trochę głośniej. 532 00:25:28,669 --> 00:25:31,084 >> PUBLICZNOŚCI: [niesłyszalne] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID MALAN: OK, dobra. 535 00:25:36,660 --> 00:25:38,620 A ja think-- było trudno usłyszeć you-- ale 536 00:25:38,620 --> 00:25:42,690 że to, co dostajesz na to, że znaczniki, które były powszechne do góry, 537 00:25:42,690 --> 00:25:47,710 i znaczniki, które były powszechne na dolny, zostały uwzględnione na zewnątrz, 538 00:25:47,710 --> 00:25:51,140 lub spadł do jakie pliki? 539 00:25:51,140 --> 00:25:53,476 Header.php i footer.php-- i będziemy 540 00:25:53,476 --> 00:25:55,600 wprowadzić kilka poprawek do zająć się obawy po prostu 541 00:25:55,600 --> 00:25:59,370 podniesiona o zmiany numerów, na Przykładowo, jeśli usłyszałem cię prawidłowo. 542 00:25:59,370 --> 00:26:02,060 >> Ale to wydaje się być istota tego. 543 00:26:02,060 --> 00:26:04,820 Jeśli nie było ogromna ilość Redundancja w górnej części strony 544 00:26:04,820 --> 00:26:06,736 i ogromna ilość nadmiarowej dołu 545 00:26:06,736 --> 00:26:09,280 niech dosłownie atrakcją i wyciąć tych treści na zewnątrz, 546 00:26:09,280 --> 00:26:13,270 umieścić go w osobnym file-- tak jak idea CSS, gdzie zbitek 547 00:26:13,270 --> 00:26:16,710 bardzo podobne estetyka, pakowane to w oddzielnym pliku dot PHP, 548 00:26:16,710 --> 00:26:20,340 użyj wymagają mechanism-- które jest jak cis obejmować: które 549 00:26:20,340 --> 00:26:23,570 jest w zasadzie tak, jakby powiedzieć iść chwycić zawartość header.php, 550 00:26:23,570 --> 00:26:25,370 i skopiować i wkleić je tutaj. 551 00:26:25,370 --> 00:26:29,490 >> Ale co to oznacza to, że obecnie w index.php, mam te dwie linie. 552 00:26:29,490 --> 00:26:32,130 W lectures.php, ja też mają te dwie linie. 553 00:26:32,130 --> 00:26:35,230 W week0.php, ja też mają te dwie linie. 554 00:26:35,230 --> 00:26:38,380 >> Więc teraz, jeśli chcę zmienić tytuł wszystkich moich stron, 555 00:26:38,380 --> 00:26:40,530 czy chcę zmienić Podstawowa struktura, 556 00:26:40,530 --> 00:26:44,380 I teraz można to zmienić tylko w jednym miejscu, lub dwa places-- nagłówka i stopki, 557 00:26:44,380 --> 00:26:45,429 odpowiednio. 558 00:26:45,429 --> 00:26:47,970 Teraz wyjścia kodeksu szukać trochę bardziej tajemnicze, prawda? 559 00:26:47,970 --> 00:26:53,590 Ale jeśli myślisz o tym, co strona jest doing-- jakbym prośbą week0.php, 560 00:26:53,590 --> 00:26:59,880 tak jak na rysunku powyżej here-- gdy week0.php jest wymagane, 561 00:26:59,880 --> 00:27:00,960 co to znaczy? 562 00:27:00,960 --> 00:27:04,410 >> Dosłownie, ten plik jest wniosek przeglądarce. 563 00:27:04,410 --> 00:27:06,240 Internetowej server-- a.k.a. 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- łapie tego Plik, week0.php i czyta 565 00:27:09,250 --> 00:27:10,780 go od góry do dołu, od lewej do prawej. 566 00:27:10,780 --> 00:27:15,400 Na pierwszej linii, natychmiast napotyka otwarty nawias znak zapytania PHP, wymagają 567 00:27:15,400 --> 00:27:17,872 Nagłówek dot PHP, i tak co interpreter PHP 568 00:27:17,872 --> 00:27:20,580 does--, który jest wbudowany w internecie serwer, ponieważ wstępnie skonfigurowane 569 00:27:20,580 --> 00:27:24,580 to dla you-- automatycznie przechodzi w header.php, kopiuje zawartość, 570 00:27:24,580 --> 00:27:25,640 wkleja je tutaj. 571 00:27:25,640 --> 00:27:28,790 >> Ale potem spotkania tłumacza znak zapytania nawiasu zamykającego, 572 00:27:28,790 --> 00:27:30,320 tak to wszystko zrobić myślenia. 573 00:27:30,320 --> 00:27:33,400 Teraz to tylko ślepo pluje na linii dwóch przez siedem, 574 00:27:33,400 --> 00:27:35,240 bo to tylko surowe HTML. 575 00:27:35,240 --> 00:27:38,470 Pobiera do linii osiem, a nie, że sama magia again-- otwierania pliku, 576 00:27:38,470 --> 00:27:41,460 chwytając zawartość i wymagając od nich lub ich wklejanie 577 00:27:41,460 --> 00:27:42,480 No dobrze lub nie. 578 00:27:42,480 --> 00:27:44,210 >> Ale ja po prostu nawiązywał do błędu. 579 00:27:44,210 --> 00:27:48,610 Jest to etap częściowej wstecz, bo jeśli spojrzymy w header.php, 580 00:27:48,610 --> 00:27:50,850 Mam trochę wyciąć rożny. 581 00:27:50,850 --> 00:27:56,250 Co funkcja nie poddaję się, aby aby uzyskać ten sporne lepsze projektowanie? 582 00:27:56,250 --> 00:27:57,305 Tak? 583 00:27:57,305 --> 00:27:58,180 PUBLICZNOŚCI: [niesłyszalne] 584 00:27:58,180 --> 00:28:00,570 DAVID MALAN: Tak, rodzaj z wyciąć nietrywialne rożny. 585 00:28:00,570 --> 00:28:04,489 Możesz zauważyć, że to, co się zmienia to tytuł, numer w tytule, 586 00:28:04,489 --> 00:28:05,530 a numer w H1. 587 00:28:05,530 --> 00:28:08,170 Więc moje rozwiązanie było OK, niech po prostu zmienić nazwę strony, 588 00:28:08,170 --> 00:28:10,080 i nie sobie z tym poradzić Problem w ogóle. 589 00:28:10,080 --> 00:28:12,130 Tak, że częściowy krok do tyłu, na pewno. 590 00:28:12,130 --> 00:28:14,300 >> Ale to, co jest godne uwagi tutaj jest, że to, co zrobiłem 591 00:28:14,300 --> 00:28:17,200 w inny sposób uwzględnione wszystkie wspólne rzeczy. 592 00:28:17,200 --> 00:28:21,520 A w footer.php, zauważysz, że uwzględniamy na to wszystko, choć mniejsze, 593 00:28:21,520 --> 00:28:22,790 wspólne rzeczy. 594 00:28:22,790 --> 00:28:26,070 Więc trzeba jakoś teraz mogli zrobić kolejny krok do przodu, i naprawić 595 00:28:26,070 --> 00:28:27,160 że kwestie tytuł. 596 00:28:27,160 --> 00:28:28,180 Więc zróbmy to. 597 00:28:28,180 --> 00:28:35,060 >> Pozwólcie mi iść do mojej drugiej wersji Tutaj, która, ponownie, ma te same pliki 598 00:28:35,060 --> 00:28:36,825 za wyjątkiem jednego nowym dodatkiem. 599 00:28:36,825 --> 00:28:38,950 I to jest trochę bardziej gadatliwy, ale zobaczymy, czy możemy 600 00:28:38,950 --> 00:28:40,550 może odciąć, co się tutaj dzieje. 601 00:28:40,550 --> 00:28:45,370 Więc zamiast wymagających header.php i footer.php, 602 00:28:45,370 --> 00:28:50,180 I wydają się być tylko wymagające jeden file-- nazywa, oczywiście, helpers.php. 603 00:28:50,180 --> 00:28:52,560 A teraz pozwól mi przewidują, co jest we helpers.php 604 00:28:52,560 --> 00:28:55,330 to tylko kilka funkcji że napisałem, tak jak wcześniej. 605 00:28:55,330 --> 00:28:57,550 Ale zadzwoniłem go helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Teraz najwyraźniej, w Linia trzy i 10, jestem 607 00:29:00,370 --> 00:29:02,840 dzwoni dwa functions-- renderowanie nagłówek, stopkę renderowanie. 608 00:29:02,840 --> 00:29:05,040 Ci, nie pochodzą z PHP, napisałem ci się. 609 00:29:05,040 --> 00:29:07,880 I umieścić je w helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Teraz, widzieliśmy tylko tej składni raz, i to było bardzo krótkie. 611 00:29:11,210 --> 00:29:15,330 Ale to podobno argument do renderowania nagłówka funkcji. 612 00:29:15,330 --> 00:29:16,450 Dlaczego mam to wiedzieć? 613 00:29:16,450 --> 00:29:18,522 Cóż tu jest blisko nawias, tu jest otwarty nawias. 614 00:29:18,522 --> 00:29:21,230 I oczywiście, tak jak w C, coś między tymi nawiasami 615 00:29:21,230 --> 00:29:23,350 jest input-- lub argument funkcji. 616 00:29:23,350 --> 00:29:26,710 >> Co to jest typ danych tego argumentu, na podstawie tego, co już podświetlony? 617 00:29:26,710 --> 00:29:30,820 Co te nawiasy kwadratowe wskazuje na podstawie ostatniego tygodnia? 618 00:29:30,820 --> 00:29:33,390 Tak, to jest array-- specjalnie tablicą asocjacyjną. 619 00:29:33,390 --> 00:29:35,700 I składnia ta prawda jest trochę funky, 620 00:29:35,700 --> 00:29:38,860 ale to jest tylko przejazdem w jednej pary kluczy wartości. 621 00:29:38,860 --> 00:29:43,530 Kluczem jest to, cytuję koniec cytatu tytuł i wartość jest CS50. 622 00:29:43,530 --> 00:29:46,220 >> Jeśli to zrobił w C, to może zamiast 623 00:29:46,220 --> 00:29:49,400 wyglądają bardziej jak to, właśnie cytatu CS50-- 624 00:29:49,400 --> 00:29:52,460 czy rzeczywiście byłoby kręcone szelki, czy coś takiego w C, 625 00:29:52,460 --> 00:29:55,580 gdzie klucz jest zero, a wartość jest CS50. 626 00:29:55,580 --> 00:29:59,840 Ale znowu, PHP, chociaż Składnia jest, ponownie, trochę dziwne, 627 00:29:59,840 --> 00:30:02,860 pozwala przejść w słowa zamiast numerów 628 00:30:02,860 --> 00:30:05,120 skojarzyć klucze z wartościami. 629 00:30:05,120 --> 00:30:06,390 >> Więc co to wszystko znaczy? 630 00:30:06,390 --> 00:30:09,750 Jeśli pójdę do helpers.php, Przyjrzyjmy się tej funkcji. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, a renderHeader jest mój funkcji, 632 00:30:13,620 --> 00:30:16,220 i wiem, że ponieważ widzę słowo kluczowe tutaj funkcji. 633 00:30:16,220 --> 00:30:19,450 To jest nowa z C-- go podobno przyjmuje argument o nazwie data-- 634 00:30:19,450 --> 00:30:22,400 ale może Nazwałem to cokolwiek, ale nazwałem go danych, 635 00:30:22,400 --> 00:30:25,090 po prostu się trochę clean-- i tylko zgadywać, zwłaszcza 636 00:30:25,090 --> 00:30:28,173 jeśli już zaprogramowany w jakiś inny język wyższy poziom, zanim coś 637 00:30:28,173 --> 00:30:29,820 powyżej C, koncepcyjnie. 638 00:30:29,820 --> 00:30:33,820 >> Co równe otwarty nawias kwadratowy nawias kwadratowy zapewne na myśli? 639 00:30:33,820 --> 00:30:35,540 Albo co to może oznaczać? 640 00:30:35,540 --> 00:30:39,660 Nie widziałem tego w C. Tak? 641 00:30:39,660 --> 00:30:40,480 >> Pusta tablica. 642 00:30:40,480 --> 00:30:45,440 Dokładniej, oznacza to, że użytkownik nie zadzwonić renderHeader 643 00:30:45,440 --> 00:30:49,340 z argumentem, jestem nadal w toku mieć argument o nazwie dane, 644 00:30:49,340 --> 00:30:52,327 ale jego wartość domyślna to będzie to pusta tablica. 645 00:30:52,327 --> 00:30:53,660 Więc to jest po prostu ładny wygodę. 646 00:30:53,660 --> 00:30:56,493 Nie mam krzyczeć na użytkownika, lub powiedzieć użyłeś mojej funkcji źle. 647 00:30:56,493 --> 00:30:59,849 Mogę tylko dać użytkownikowi domyślny wartość, jeśli nie szczególnie dbać. 648 00:30:59,849 --> 00:31:01,890 Teraz ta funkcja, jestem będzie fala ręce w. 649 00:31:01,890 --> 00:31:07,620 Ale ta funkcja wyciąg pozwala nam przekazać te zmienne w danych 650 00:31:07,620 --> 00:31:10,360 w header.php w następujący sposób. 651 00:31:10,360 --> 00:31:13,100 I to jest ostatni kawałek, Myślę, składni modny. 652 00:31:13,100 --> 00:31:15,860 Oto moja nowa wersja z header.php-- go 653 00:31:15,860 --> 00:31:20,140 mawiał, dosłownie, otwarte Uchwyt tytuł CS50, i to było to. 654 00:31:20,140 --> 00:31:21,766 I to samo dla H1. 655 00:31:21,766 --> 00:31:24,310 >> Teraz najwyraźniej mówi coś bardzo modny. 656 00:31:24,310 --> 00:31:28,030 I pozwól, że uproszczenie to chwilę w następujący sposób. 657 00:31:28,030 --> 00:31:31,020 To jest to, co mam zmieniłem tytuł, aby być. 658 00:31:31,020 --> 00:31:35,140 Jednak robi się trochę brzydkie stale otwartych nawiasach z PHP, 659 00:31:35,140 --> 00:31:36,610 a następnie za pomocą funkcji drukowania. 660 00:31:36,610 --> 00:31:40,810 Okazuje się, że PHP ma skrótów Zapis do tego, co jest po prostu 661 00:31:40,810 --> 00:31:45,050 znak równości, która jest technicznie Funkcja o nazwie echo zamiast druku, 662 00:31:45,050 --> 00:31:46,800 ale to jest to samo, skutecznie. 663 00:31:46,800 --> 00:31:48,440 >> To po prostu wygląda lepiej. 664 00:31:48,440 --> 00:31:50,510 To tylko składniowym cukier, jeśli chcesz, 665 00:31:50,510 --> 00:31:52,260 sprawia, że ​​mój kod wygląda trochę lepiej. 666 00:31:52,260 --> 00:31:54,010 Ale okazuje się, oraz zobaczymy to jeszcze raz 667 00:31:54,010 --> 00:31:57,420 Przed długi, musimy nazwać irytująco długo funkcja nazywa 668 00:31:57,420 --> 00:32:00,582 HTML znaki specjalne w PHP, ponieważ okazuje się, 669 00:32:00,582 --> 00:32:02,790 istnieją pewne wejścia że użytkownik może dać nam, 670 00:32:02,790 --> 00:32:05,160 lub że użytkownik może dać nam, że zamiar złamać naszą stronę. 671 00:32:05,160 --> 00:32:07,035 Ale zobaczymy, że w przyszłym Tydzień z JavaScript. 672 00:32:07,035 --> 00:32:10,740 Ale teraz, po prostu wiem, że ten plik, headers.php, po prostu 673 00:32:10,740 --> 00:32:13,040 ma tytuł, który Minąłem się, że aby 674 00:32:13,040 --> 00:32:17,380 pewien, że to bezpieczne, aby być wstrzykiwany w internecie Strona, i to wypluwa jak mój tytuł 675 00:32:17,380 --> 00:32:18,640 i jak mój H1. 676 00:32:18,640 --> 00:32:24,440 Więc jeśli pójdę teraz do tej wersji, zauważyć, że wykłady ma swój tytuł z powrotem, 677 00:32:24,440 --> 00:32:28,630 Tydzień zera ma swój tytuł z powrotem, i rzeczywiście, HTML Jestem generowania 678 00:32:28,630 --> 00:32:32,110 jest identyczna, co moja pierwsza wersja was-- wyjątkiem mojej spacji, 679 00:32:32,110 --> 00:32:35,150 ponieważ zacząłem formatowanie mój kod trochę inaczej. 680 00:32:35,150 --> 00:32:38,082 Ale ja generowane wszystkie kod mnie obchodzi. 681 00:32:38,082 --> 00:32:39,790 Więc pozwól mi zatrzymać się na na chwilę i zobaczyć 682 00:32:39,790 --> 00:32:42,200 jeśli nie ma żadnych pytań lub niejasności stworzyłem. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 W porządku, więc niech skręcać trochę trudniej tutaj 685 00:32:48,150 --> 00:32:51,500 aby sprawdzić, czy nie ma okazja do poprawy. 686 00:32:51,500 --> 00:32:56,130 Helpers.php miał to również Funkcja o nazwie renderFooter. 687 00:32:56,130 --> 00:32:59,652 A co jest godne uwagi o renderHeader i renderFooter? 688 00:32:59,652 --> 00:33:02,610 I znowu, dla dzisiejszych potrzeb, wiem że funkcja Wyciąg jest tylko 689 00:33:02,610 --> 00:33:08,280 mój sposób na przekazywanie argumentów w header.php i footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> Przepraszam? 692 00:33:11,780 --> 00:33:13,056 >> PUBLICZNOŚCI: [niesłyszalne] 693 00:33:13,056 --> 00:33:15,180 DAVID MALAN: Tak, tylko zmienił wymagają linii. 694 00:33:15,180 --> 00:33:19,410 Tak dosłownie, już popełnił grzech kopiowania i wklejania, po raz kolejny. 695 00:33:19,410 --> 00:33:21,920 To nie jest ogromna liczba linii, ale przychodzą on-- 696 00:33:21,920 --> 00:33:25,220 jeśli mam skopiowanie i wklejenie wszystko wystarczy zmienić jedno słówko, 697 00:33:25,220 --> 00:33:28,610 i jeden mały słowo, które wskazuje Alan obecnie jest stopka tutaj, w porównaniu header tutaj. 698 00:33:28,610 --> 00:33:30,670 W przeciwnym razie, wszystko jest identyczne, za wyjątkiem rozpuszczenia, 699 00:33:30,670 --> 00:33:32,180 Oczywiście, nazwy funkcji. 700 00:33:32,180 --> 00:33:33,690 Więc co możemy zrobić lepiej? 701 00:33:33,690 --> 00:33:39,810 >> Dobrze pozwól mi otworzyć tę wersję tu, przy czym w helpers.php, 702 00:33:39,810 --> 00:33:42,300 dlaczego nie mogę po prostu dostać trochę mądrzejszy o tym? 703 00:33:42,300 --> 00:33:46,410 Napisz nieco bardziej skomplikowana Kod, ale nazywam to uczynić? 704 00:33:46,410 --> 00:33:48,470 Więc co ja zasadniczo zmieniło? 705 00:33:48,470 --> 00:33:51,770 >> To wymaga argumentu now-- dwa argumenty, dane nadal. 706 00:33:51,770 --> 00:33:54,444 A potem co jest pierwszą Nazwa prawdopodobnie używane przez, 707 00:33:54,444 --> 00:33:55,860 w oparciu o to, czego tutaj czytanie? 708 00:33:55,860 --> 00:33:58,452 Nawet jeśli niektóre z składni jest wciąż nowa. 709 00:33:58,452 --> 00:33:59,660 Co to jest znak dolara szablon? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> Przepraszam? 712 00:34:03,016 --> 00:34:03,710 >> PUBLICZNOŚCI: nagłówek lub stopkę. 713 00:34:03,710 --> 00:34:04,510 >> DAVID MALAN: nagłówek lub stopkę. 714 00:34:04,510 --> 00:34:07,134 Więc jak widać, postanowiłem, że jeśli jedyną rzeczą, która się zmienia 715 00:34:07,134 --> 00:34:10,159 Szablon jest to, co chcę do print-- i szablonu 716 00:34:10,159 --> 00:34:13,100 Mam na myśli to jest plan na kod, który chcesz wstawić, 717 00:34:13,100 --> 00:34:16,350 ale chcę podłączyć niektóre values-- więc jeśli to tylko nagłówek 718 00:34:16,350 --> 00:34:20,440 lub stopka, dlaczego nie mogę parametryzacji że i wywołać znak dolara argumentem 719 00:34:20,440 --> 00:34:21,409 szablon? 720 00:34:21,409 --> 00:34:26,250 A potem to modny składnia pozwala mi aby utworzyć ścieżkę zmienna tutaj. 721 00:34:26,250 --> 00:34:28,030 >> Więc droga znak dolara jest zmienną. 722 00:34:28,030 --> 00:34:31,120 Co składni zrobić, jeśli znasz? 723 00:34:31,120 --> 00:34:32,512 Tak? 724 00:34:32,512 --> 00:34:34,065 >> PUBLICZNOŚCI: [niesłyszalne] 725 00:34:34,065 --> 00:34:34,940 DAVID MALAN: Dokładnie. 726 00:34:34,940 --> 00:34:37,600 Jeśli szablon jest, cytatu, nagłówek, czy szablon jest, 727 00:34:37,600 --> 00:34:41,170 cytatu, stopka, że ​​linia nie że już podświetlony, linia osiem, 728 00:34:41,170 --> 00:34:46,330 jest po prostu biorąc to imię, jak nagłówek, i łącząc go z kropką PHP. 729 00:34:46,330 --> 00:34:49,750 Więc nie ma tego operatora w C. Ta kropka jest 730 00:34:49,750 --> 00:34:54,520 niesamowita rzecz w PHP-- jeśli jesteś zaznajomiony z JavaScript lub Java, 731 00:34:54,520 --> 00:34:56,949 można skorzystać z plusem podpisać zrobić konkatenacji. 732 00:34:56,949 --> 00:34:59,974 >> W C, jest to ból w neck-- i tak mi przykro, w p-set sześć, 733 00:34:59,974 --> 00:35:02,390 będziesz musiał zrobić this-- jest to ból w szyi 734 00:35:02,390 --> 00:35:03,930 Łączenie ciągów. 735 00:35:03,930 --> 00:35:04,670 Czemu? 736 00:35:04,670 --> 00:35:06,580 No, bo jeśli masz ciąg znaków, który jest tak długo, 737 00:35:06,580 --> 00:35:09,538 a inny ciąg znaków, który jest tak długo, nie można po prostu podłączyć je razem. 738 00:35:09,538 --> 00:35:11,070 Co ty, zamiast zrobić w C? 739 00:35:11,070 --> 00:35:11,680 Tak? 740 00:35:11,680 --> 00:35:12,380 >> PUBLICZNOŚCI: [niesłyszalne] 741 00:35:12,380 --> 00:35:15,090 >> DAVID MALAN: Musisz malloc pamięci lub używać tablicy na stosie. 742 00:35:15,090 --> 00:35:17,214 I trzeba rzeczywiście sprawiają, że tablica na tyle duże, 743 00:35:17,214 --> 00:35:20,940 zmieścić się także w tym, plus backslash zero. 744 00:35:20,940 --> 00:35:24,994 Następnie połącz je ze sobą za pomocą mieszać kota lub ręcznie za pomocą pętli for, 745 00:35:24,994 --> 00:35:26,160 lub dowolną liczbę technik. 746 00:35:26,160 --> 00:35:27,760 I pokażemy parę w p-set sześć. 747 00:35:27,760 --> 00:35:29,080 >> Jest to ból w szyi. 748 00:35:29,080 --> 00:35:34,190 I to jest naprawdę to, co myśli o to w porównaniu this-- jak C w porównaniu z PHP. 749 00:35:34,190 --> 00:35:36,870 Ty po prostu dużo więcej Funkcjonalność za darmo, 750 00:35:36,870 --> 00:35:39,030 tak, że można skupić, idealnie, na zabawy 751 00:35:39,030 --> 00:35:41,190 część kodowania, Projekt chcesz rozwiązać, 752 00:35:41,190 --> 00:35:43,190 zamiast poziomu minutiae niskim. 753 00:35:43,190 --> 00:35:49,840 >> Więc to po prostu generuje header.php lub footer.php na podstawie których jeden nazywam. 754 00:35:49,840 --> 00:35:52,280 I rzeczywiście, jeśli pójdę do index.php, zawiadomienie 755 00:35:52,280 --> 00:35:56,230 wszystko, co changed-- Zamiast dzwoniąc czynią nagłówek lub uczynić stopki, 756 00:35:56,230 --> 00:36:00,230 Dzwonię render, a następnie przez nazwa szablonu, który chcę zrobić. 757 00:36:00,230 --> 00:36:02,370 I zobaczysz, to też w problemu ustawić siedem, 758 00:36:02,370 --> 00:36:05,530 w którym możemy pozwolić na użycie Ta sama funkcja, aby bukiety 759 00:36:05,530 --> 00:36:07,550 i pęczki różnych stron internetowych. 760 00:36:07,550 --> 00:36:10,570 >> Tak więc, zamiast mieszkać zbyt znacznie więcej od tych details-- 761 00:36:10,570 --> 00:36:13,210 które zobaczymy ponownie w Zestaw problemem seven-- spójrzmy 762 00:36:13,210 --> 00:36:16,850 Dotychczas na początku roztworu do bardziej interesującym problemem. 763 00:36:16,850 --> 00:36:19,310 Jak dotąd, nic nie mamy wykonane ma zapisane dane. 764 00:36:19,310 --> 00:36:22,920 W rzeczywistości, tylko czas, jaki kiedykolwiek zbawieni coś, co zrobiliśmy w tej klasie 765 00:36:22,920 --> 00:36:31,030 jest, kiedy mieliśmy bardzo proste demo chwilę z powrotem, przy czym użyliśmy plików IO w C, 766 00:36:31,030 --> 00:36:34,520 i myślę, że wpisany w imię moje, i Hannah Imię i nazwisko Marii, 767 00:36:34,520 --> 00:36:37,610 a może nazwisko Andy'ego i następnie zaoszczędziliśmy file-- CSV 768 00:36:37,610 --> 00:36:39,430 Plik oddzielonych przecinkami wartości. 769 00:36:39,430 --> 00:36:43,530 >> A kiedyś fopen-- myślę użyliśmy fprintf ile pamiętam, 770 00:36:43,530 --> 00:36:44,910 i zapisany plik. 771 00:36:44,910 --> 00:36:46,920 Teraz, jest najprostszym Formularz bazy danych. 772 00:36:46,920 --> 00:36:50,230 Jeśli chcesz stworzyć stronę internetową dla Program Frosh IM, gdzie pierwszaków 773 00:36:50,230 --> 00:36:53,390 mogą zarejestrować się na sporcie, ci najlepiej chcesz coś zrobić z tymi danymi. 774 00:36:53,390 --> 00:36:55,370 W ubiegłym tygodniu, że nie zrobił nic, z data-- po prostu powiedział, 775 00:36:55,370 --> 00:36:56,661 jesteś zarejestrowany, nie bardzo. 776 00:36:56,661 --> 00:36:58,950 A może Wysłałem e-mail Proctor, i to było to. 777 00:36:58,950 --> 00:37:02,110 >> Ale byłoby miło, gdybym mógł dać, że Proctor pliku CSV, 778 00:37:02,110 --> 00:37:03,340 jak pliku Excel. 779 00:37:03,340 --> 00:37:05,090 Albo jeszcze lepiej, że będzie byłoby miło, gdybym mógł 780 00:37:05,090 --> 00:37:08,830 umieścić nazwy tych użytkowników i dorm nazwiska i wszystko to 781 00:37:08,830 --> 00:37:11,740 w bazie danych, które po prostu żyje na wieki, 782 00:37:11,740 --> 00:37:13,530 dopóki nie zdecydujesz się usunąć dane. 783 00:37:13,530 --> 00:37:15,645 Baza danych, która pozwala mi do kwerendy informacji. 784 00:37:15,645 --> 00:37:18,070 I rzeczywiście, to właśnie baza danych jest. 785 00:37:18,070 --> 00:37:20,470 >> Przedstawiamy dziś i w przyszłym tygodniu, również technologia 786 00:37:20,470 --> 00:37:25,020 nazywa SQL-- zapytania Zorganizowany Język, który jest inny język. 787 00:37:25,020 --> 00:37:28,750 Jest to w zasadzie programowania język, ale dla baz danych. 788 00:37:28,750 --> 00:37:31,760 A baza teraz, po prostu myśleć jak bardzo fantazyjnych wersji 789 00:37:31,760 --> 00:37:35,710 Microsoft Excel lub Google Arkusze lub numery Apple. 790 00:37:35,710 --> 00:37:39,950 Jest to na ogół program, który pozwala przechowywanie całą masę danych 791 00:37:39,950 --> 00:37:43,960 w rzędach i kolumnach, całkiem jak ty może w programie Excel. 792 00:37:43,960 --> 00:37:47,100 >> Ale to, co jest dobre, zwłaszcza jeśli Nie jesteśmy bardzo znane z programu Excel, 793 00:37:47,100 --> 00:37:52,040 co SQL pozwala zrobić to kwerenda w tym informacje pisząc wiersze kodu 794 00:37:52,040 --> 00:37:55,220 gdzie można, nawet jeśli Baza ma milion wierszy w nim, 795 00:37:55,220 --> 00:37:57,190 można znaleźć super szybki rzeczy. 796 00:37:57,190 --> 00:37:59,950 W istocie jest szczególnie Excel zły na dużych zbiorach danych. 797 00:37:59,950 --> 00:38:02,460 I rzeczywiście, aż do kilku lat temu, okazało się, 798 00:38:02,460 --> 00:38:08,890 Excel nie tylko pozwalają na przechowywanie do 65,535 rzędy data-- które 799 00:38:08,890 --> 00:38:12,020 brzmi jak dużo, ale u razem był grad student, 800 00:38:12,020 --> 00:38:14,920 i pamiętam, potykając to dlatego, że był generowania 801 00:38:14,920 --> 00:38:17,900 Pliki CSV dla moich badań i I chciał szybko analizować je 802 00:38:17,900 --> 00:38:19,530 poprzez otwarcie w programie Excel. 803 00:38:19,530 --> 00:38:23,730 Oczywiście, mój komputer po prostu rozbił, bo miałem ponad 65.000 wierszy. 804 00:38:23,730 --> 00:38:27,210 >> Ale skąd wziął się 65.535 pochodzi? 805 00:38:27,210 --> 00:38:29,670 Co się Microsoft robi, prawdopodobnie? 806 00:38:29,670 --> 00:38:32,430 Jeśli jesteś dobry z uprawnień z dwóch? 807 00:38:32,430 --> 00:38:37,160 Tak, były przy użyciu 16-bitowego wartość reprezentuje numer wiersza. 808 00:38:37,160 --> 00:38:41,310 I dwa do 16 jest 65,536-- jeden minus, bo jeśli 809 00:38:41,310 --> 00:38:45,414 Strona zera oznacza, że ​​był Najbardziej liczba wierszy mogłem. 810 00:38:45,414 --> 00:38:46,830 A to był tylko projekt decyzji. 811 00:38:46,830 --> 00:38:52,760 Zapisując 16 bitów, to ogranicza mnie do 16.000 wierszy, a nie 4 mld euro, 812 00:38:52,760 --> 00:38:54,322 które mogłyby miałem idealnie. 813 00:38:54,322 --> 00:38:57,030 Ale teraz, będziemy przedstawić to bardziej w kontekście internetowej. 814 00:38:57,030 --> 00:39:00,390 A co jest miłe o SQL jest to, że nawet choć jest to dość mocny i dość 815 00:39:00,390 --> 00:39:04,050 wyrafinowane, tak naprawdę sprowadza do czterech kluczowych operacji, cztery 816 00:39:04,050 --> 00:39:08,060 kluczowe funkcje, jeśli will-- zostanie wybrany, do pobierania danych, wyszukiwanie 817 00:39:08,060 --> 00:39:12,510 dla danych; usunąć lub usuwania danych; włóż do dodawania wierszy do bazy danych; 818 00:39:12,510 --> 00:39:13,410 i aktualizacji. 819 00:39:13,410 --> 00:39:17,010 Więc jeśli kiedykolwiek używane Google Arkusze kalkulacyjne, Apple Numbers, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, zostały wykonane, Najprawdopodobniej wszystkie 821 00:39:19,310 --> 00:39:22,530 z tych działań jako człowieka przez tylko za pomocą klawiatury i mouse-- 822 00:39:22,530 --> 00:39:26,050 wstawiania danych, za pomocą oczu aby wybrać lub wyszukać dane, 823 00:39:26,050 --> 00:39:28,360 lub dane, aktualizowania lub usuwania danych. 824 00:39:28,360 --> 00:39:29,870 >> Więc co to oznacza? 825 00:39:29,870 --> 00:39:34,300 Cóż, zainstalowane w CS50 IDE jest program o nazwie MySQL. 826 00:39:34,300 --> 00:39:37,050 Jest to darmowa, open-source baza danych, która jest bardzo popularna. 827 00:39:37,050 --> 00:39:40,590 Facebook, na przykład, stosuje się do tego dzień, wśród innych narzędzi, z których korzystają. 828 00:39:40,590 --> 00:39:44,300 I wiele bardzo popularnych stron internetowych użyć to w dużej mierze dlatego, że jest szybki, 829 00:39:44,300 --> 00:39:45,230 a ponieważ to nic nie kosztuje. 830 00:39:45,230 --> 00:39:46,820 Choć z pewnością istnieją alternatywy. 831 00:39:46,820 --> 00:39:49,580 A niektórzy z was mogą pluskać się alternatywy dla projektów końcowych. 832 00:39:49,580 --> 00:39:55,330 >> Ten zrzut ekranu, w międzyczasie, od narzędzie internetowy o nazwie phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Jest to przypadek, że to internetowe narzędzie jest również 834 00:39:58,260 --> 00:40:01,720 napisany w języku PHP, ale co to ma do zrobienia 835 00:40:01,720 --> 00:40:04,620 jest dać nam oparty internetowych interfejs do bazy danych. 836 00:40:04,620 --> 00:40:07,180 Ponieważ MySQL jest zazwyczaj coś, historycznie was, 837 00:40:07,180 --> 00:40:08,770 nie oddziałują tylko z z linii poleceń. 838 00:40:08,770 --> 00:40:10,811 I byłoby bardzo denerwujące i arcane mieć 839 00:40:10,811 --> 00:40:14,487 wpisywanie poleceń tekstowych, aby wybrać danych, wprowadzanie danych i usuwania danych. 840 00:40:14,487 --> 00:40:16,820 Więc niektórzy ludzie w internecie Napisałem program internetowy 841 00:40:16,820 --> 00:40:18,900 że po prostu daj nam zarządzać dane w naszej bazie danych. 842 00:40:18,900 --> 00:40:23,040 To jak podwójne kliknięcie na programie Excel, a prowadzenie jej wersję internetowego. 843 00:40:23,040 --> 00:40:26,370 >> I co masz zamiar użyć tego do ostatecznie w przyszłym tygodniu, a nie w p-set sześć, 844 00:40:26,370 --> 00:40:28,680 ale jest zbudować coś nazywa CS50 Finanse, które 845 00:40:28,680 --> 00:40:32,630 będzie miał bazę użytkowników, z nazwy użytkownika i hasła, 846 00:40:32,630 --> 00:40:34,860 dolara wynosi, że mają na swoich kontach bankowych. 847 00:40:34,860 --> 00:40:37,280 To będzie coś, czego używać do przechowywania 848 00:40:37,280 --> 00:40:39,910 symbole i ilości zasobów, które użytkownicy 849 00:40:39,910 --> 00:40:42,567 kupił za pomocą wirtualnych dolarów, że dasz im. 850 00:40:42,567 --> 00:40:44,900 I to się dzieje, aby umożliwić użytkownikom zarejestrować się w witrynie, 851 00:40:44,900 --> 00:40:47,190 tak, że nawet znajomych można dostroić się do swojej stronie 852 00:40:47,190 --> 00:40:49,360 i rzeczywiście zarejestrować, zaloguj się i bawić 853 00:40:49,360 --> 00:40:52,807 i starają się znaleźć błąd w kodzie, i starają się znaleźć błędy w swojej stronie. 854 00:40:52,807 --> 00:40:55,390 A oni po prostu zarejestrować dodanie siebie, skutecznie, 855 00:40:55,390 --> 00:40:58,120 poprzez kod piszesz do bazy danych. 856 00:40:58,120 --> 00:41:02,470 >> Na przykład, jest to szybkie ekranu z tego, co baza danych może wyglądać. 857 00:41:02,470 --> 00:41:05,190 Jest to z jednej zeszłoroczne solutions-- 858 00:41:05,190 --> 00:41:07,760 to jest jak mini Excel plik, przechowywane w naszej bazie danych 859 00:41:07,760 --> 00:41:09,950 zapisane w tym oprogramowaniu o nazwie MySQL. 860 00:41:09,950 --> 00:41:13,260 Na lewej stronie, mam podobno podana każdemu użytkownikowi unikalny numer. 861 00:41:13,260 --> 00:41:16,200 W drugiej kolumnie, Dałem każdy użytkownik name-- mój własny 862 00:41:16,200 --> 00:41:16,880 między nimi. 863 00:41:16,880 --> 00:41:21,430 A na prawej stronie, Dałem im hash. 864 00:41:21,430 --> 00:41:26,760 >> Teraz jest to faktycznie hasło ale to nie jest zwykły hasło tekst. 865 00:41:26,760 --> 00:41:30,160 Jest to zaszyfrowane hasło, jeśli chcesz, czy hash hasła. 866 00:41:30,160 --> 00:41:32,000 Które wrócimy do wkrótce. 867 00:41:32,000 --> 00:41:34,340 >> Ale jeśli kiedykolwiek przeczytać artykuł o tym, jak 868 00:41:34,340 --> 00:41:37,950 Twoje hasło w pewnym banku lub niektóre Strona internetowa może być zagrożona, 869 00:41:37,950 --> 00:41:39,630 może to na ogół oznacza, jedna z dwóch rzeczy. 870 00:41:39,630 --> 00:41:42,780 Więc jest to tylko fragment z sześciu użytkowników. 871 00:41:42,780 --> 00:41:45,460 Wszyscy z was, teraz mogę zrozumieć za pośrednictwem hackingu lub pękanie 872 00:41:45,460 --> 00:41:47,690 co haseł naszych sześciu ludzi są. 873 00:41:47,690 --> 00:41:49,720 Ale jeśli kiedykolwiek zdobyć alert lub przeprosiny 874 00:41:49,720 --> 00:41:52,803 od firmy lub strony powiedzenie, Przepraszam, haker włamał się do naszej bazy danych, 875 00:41:52,803 --> 00:41:56,360 powinieneś zmienić hasło, co może znaczyć? 876 00:41:56,360 --> 00:41:59,670 >> Cóż, jeden, może oznaczać, że firma była bardziej kretyński, 877 00:41:59,670 --> 00:42:03,630 i została przechowywania hasła w kolumnie, jak ta, w postaci niezaszyfrowanej. 878 00:42:03,630 --> 00:42:05,840 Co oznacza przeciwnika, który ukradł bazę danych, 879 00:42:05,840 --> 00:42:07,440 dosłownie zna login i hasło. 880 00:42:07,440 --> 00:42:08,960 To najgorszy z możliwych scenariuszy. 881 00:42:08,960 --> 00:42:11,710 A jak zobaczysz w p-set siedem, więc łatwo uniknąć. 882 00:42:11,710 --> 00:42:15,624 Nie ma absolutnie żadnego usprawiedliwienia, że forma głupoty w dzisiejszym internecie. 883 00:42:15,624 --> 00:42:18,540 Two-- i znajdziemy jakieś artykuły świadczyć fakt, że wciąż 884 00:42:18,540 --> 00:42:21,710 zdarza się, nonetheless-- dwa, może przeciwnik 885 00:42:21,710 --> 00:42:23,840 ukradł tę wersję bazy danych. 886 00:42:23,840 --> 00:42:27,110 Która jest jeszcze trochę zły, bo teraz wiedzą, że mam sześć klientów, 887 00:42:27,110 --> 00:42:29,270 Wiem, nazwy użytkowników z tych sześciu klientów, 888 00:42:29,270 --> 00:42:32,910 i wiem, że zaszyfrowany lub wersje zakodowane wersje, 889 00:42:32,910 --> 00:42:34,340 haseł tych sześciu klientów. 890 00:42:34,340 --> 00:42:37,010 Ale każdy z was, kto może zrobili [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 gdzie pęknięty haseł lub wziął Spojrzenie na tej wersji problemu 892 00:42:41,150 --> 00:42:46,280 Zestaw, dlaczego jest tak, jeszcze trochę niepokojące jeśli przeciwnik zna hash 893 00:42:46,280 --> 00:42:47,435 Hasła? 894 00:42:47,435 --> 00:42:49,732 >> PUBLICZNOŚCI: Ponieważ mogli wprowadzić cały słownik 895 00:42:49,732 --> 00:42:50,690 do funkcji skrótu. 896 00:42:50,690 --> 00:42:54,520 A jeśli hasło jest słownikiem Słowo, [? może po prostu match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID MALAN: Dokładnie, przeciwnik można po prostu napisać kod, jak niektórzy z was 898 00:42:57,640 --> 00:43:00,526 nie dla [? Hacker?] 2, w którym iteracyjne 899 00:43:00,526 --> 00:43:03,400 wszystkich słów w słowniku, lub wszystkie możliwe kombinacje A 900 00:43:03,400 --> 00:43:06,610 do Z i jeden przez nine-- który brzmi jak dużo, i to jest. 901 00:43:06,610 --> 00:43:08,361 Jednak dla komputera to cholernie szybko. 902 00:43:08,361 --> 00:43:10,610 A w rzeczywistości, to był punkt [? Hacker 2,?] Był 903 00:43:10,610 --> 00:43:12,540 wziąć rzeczy, które dosłownie wygląda tak, 904 00:43:12,540 --> 00:43:14,900 i inżynierii wstecznej co to właściwie było. 905 00:43:14,900 --> 00:43:17,270 >> Będziemy więc przyjrzeć się, jak to możliwe bardziej efektywnie przechowywać tego. 906 00:43:17,270 --> 00:43:20,210 Okazuje się, że na szczęście w MySQL, nie będą typy danych. 907 00:43:20,210 --> 00:43:22,800 A jednym z elementów zabawy około projekt bazy danych, aby być uczciwym, 908 00:43:22,800 --> 00:43:25,810 jest rzeczywiście podejmowaniu decyzji dla siebie jak należy przedstawiać dane? 909 00:43:25,810 --> 00:43:29,630 Jeśli reprezentują numer telefonu jako int, jak wielka liczba, lub długi? 910 00:43:29,630 --> 00:43:31,630 A może rzeczywiście to zrobić jako ciąg znaków? 911 00:43:31,630 --> 00:43:33,780 I nie może być bardzo niebanalną skutki tego. 912 00:43:33,780 --> 00:43:36,714 >> W istocie, jednym z Najwcześniejsze, zabawa Germane historie 913 00:43:36,714 --> 00:43:39,880 jest, gdy Mark Zuckerberg budował Facebook, pierwotnie w, napisane 914 00:43:39,880 --> 00:43:42,300 i nadal jest w dużej mierze napisany w PHP. 915 00:43:42,300 --> 00:43:45,400 I jednym z największych wyzwań stanęli na początku było skalowanie. 916 00:43:45,400 --> 00:43:48,820 Gdy przechowywane dodanie szkoły po Szkoła po szkole, do mojej wiedzy, 917 00:43:48,820 --> 00:43:51,639 jeden z pierwszych rozwiązań zasadniczo skopiować i wkleić 918 00:43:51,639 --> 00:43:53,430 niektóre z baz i część kodu 919 00:43:53,430 --> 00:43:55,346 tak, że Harvard było działa na własnym serwerze, 920 00:43:55,346 --> 00:43:56,995 i MIT został uruchomiony na własnym serwerze. 921 00:43:56,995 --> 00:43:59,120 A to dlatego, dla niektórych z Was, którzy mogą sobie przypomnieć, 922 00:43:59,120 --> 00:44:01,510 nie można mieć przyjaciół w innych sieciach. 923 00:44:01,510 --> 00:44:05,050 >> Prawdopodobnie nie ma przyjaciół na MIT i Harvardu, 10 lub więcej lat temu, 924 00:44:05,050 --> 00:44:07,467 ale nie można rozciągać sieci na częściowo z tego powodu. 925 00:44:07,467 --> 00:44:10,550 I jednym z największych wyzwań dla Mark i dla firm, takich jak Facebook 926 00:44:10,550 --> 00:44:13,460 faktycznie obsługi setki i tysiące i miliony 927 00:44:13,460 --> 00:44:14,460 wniosków na sekundę. 928 00:44:14,460 --> 00:44:16,501 Więc rzeczy zaczniemy mówi o tym tygodniu 929 00:44:16,501 --> 00:44:19,860 są naprawdę będzie germane do pisanie dobrych programów, a popularnie 930 00:44:19,860 --> 00:44:23,040 skuteczne narzędzia, które może obsługiwać wielu użytkowników. 931 00:44:23,040 --> 00:44:25,460 >> Będziemy więc mówić o rzeczach jak indeksowania i wyszukiwania, 932 00:44:25,460 --> 00:44:26,910 ale to jest na dzisiaj. 933 00:44:26,910 --> 00:44:28,780 Będziemy widzieć więcej na środę. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MUZYKA - "SEINFELD" TEMAT] 936 00:44:33,902 --> 00:44:35,943 DAVID MALAN: Możesz do Opisz i odjąć od niego. 937 00:44:35,943 --> 00:44:38,859 I nie musisz trzymać się część wstępnie określoną ilość pamięci. 938 00:44:38,859 --> 00:44:40,580 Cóż, co się, że będzie się nazywać? 939 00:44:40,580 --> 00:44:42,369 >> Głośnik 1: No, co się dzieje? 940 00:44:42,369 --> 00:44:43,535 GŁOŚNIK 2: Co masz na myśli? 941 00:44:43,535 --> 00:44:44,451 On daje wykład. 942 00:44:44,451 --> 00:44:47,650 DAVID MALAN: I możemy użyć Funkcja o nazwie malloc do memory-- 943 00:44:47,650 --> 00:44:50,050 >> Głośnik 1: Dlaczego nie są ramiona ruchome? 944 00:44:50,050 --> 00:44:52,450 >> GŁOŚNIK 2: Cóż that's-- wiesz, że to normalne. 945 00:44:52,450 --> 00:44:57,162 To tak, jak on ma po prostu duże kiełbasy wiszące tam. 946 00:44:57,162 --> 00:44:59,040 >> Głośnik 1: To jest normalne? 947 00:44:59,040 --> 00:45:03,096 >> GŁOŚNIK 2: Tak, myślę, że po prostu założyć, przypadkowo 948 00:45:03,096 --> 00:45:06,840 włożył dezodorant z klejem. 949 00:45:06,840 --> 00:45:07,608