[MUZYKI] DAVID MALAN: Jest CS50 i to jest początek tygodnia osiem. I jesteśmy bardzo podekscytowani, aby powitać tył, duża niespodzianka, CS50 własnej Ramon Galvan, wschodząca starszy, który był spędzeniu kilku miesięcy od lipca w Los Angeles, w Hollywood, dosłownie pracuje na nowym telewizorze pokaż nazywa Colony, twórca, który jest rzeczywiście ałunu sam Harvard. A więc jesteśmy bardzo podekscytowani, aby zobaczyć debiut w sieci USA tego stycznia. Więc stay tuned, że i dla więcej Ramon w nadchodzących tygodniach. Teraz wiem, że koniec jest bliski. A co to oznacza to, że nie jest wszystko, co pozostało wiele CS50, przykro mówić. Mamy tylko trzy problemu zestawy lewy-- istnieje Problem ustawione six-- który w Twoje ręce teraz lub wkrótce będą, z powodu jeszcze w tym week-- ma most nasze światy linii poleceń, gdzie spędziliśmy większość czasu przy użyciu C, a świat programowania WWW. Cóż, zobaczymy wiele pomysłów zapożyczone z pracy linii poleceń, ale także wiele nowych i ciekawe pomysły które również będzie germane dla dla aplikacji mobilnych i technologii, bardziej ogólnie, z którym faceci są wszystkie znane dziś na laptopy i telefony itp. Więc nie wdrożyć strona internetowa lub strona per se, ale rzeczywisty serwer WWW. Będziesz pisać resztę serwera WWW napisany w C, którego celem w życiu jest do odbioru żądania HTTP, te wirtualne koperty ciągle mówimy o, a właściwie reagować zarówno z niektóre statyczne content-- lubią dot HTML Plik lub kropka JPEG lub każda inna liczba plików lub nawet plik PHP w którym twój internetowej Serwer będzie interpretować, że PHP Kod i wypluć wyniki. Teraz, my ci z sporo ramach dla it-- rzeczywiście Kod dystrybucji problemu zestaw sześciu jest długa ponad 1000 linii, co oznacza Wiele z nich jest komentarzy, być fair-- ale to ma naprawdę być okazją dostać się w ręce brudne nurkowania w dość dużym projekcie że mamy bardzo szczegółowo wykute sztuk dla Ciebie, tak, że naprawdę po wyjściu CS50 i wprowadzić rzeczywisty świat programowania i chce babrać w dowolną liczbę projektów, będziesz miał znacznie większe komfort pobierania jakieś źródło Kod, niektóre open source projektu w internecie, i nurkowania i co Zmiany, które uważasz. Problem ustawić siedem będzie o tworzyć własne internetowej aplikacji że trwa wprowadzanie dynamiczne i produkuje wyjście dynamiczny w formie strony internetowej etrade.com-podobne. A problemem ustawić osiem skupi się na jeszcze inny język znany jako JavaScript. Zaś, ostateczna Projekt jest na horyzoncie. Tak zwane pre-proposal Wynika tygodnia od obecnie. Pre-proposal-- wg specyfikacji, co jest na website-- CS50 jest Jest to dość przypadkowy szansa dla wysłanie maila dość zwięzły do kolegów nauczania żeby go informować lub jej tego, co myślisz, do używać go lub ją jako gremium. I mają zdrowy rozsądek check-- czy myślisz o gryzienie zbyt dużo, czy może za mało, a może masz w ogóle pojęcia, i chcesz zaangażować się w rozmowy. Następnie jest propozycja i raport o stanie, tzw CS50 hackathon tutaj Cambridge dla studentów Harvardu i Yale podobnie. Ostateczny projektu Wdrożenie jest to spowodowane. A potem sprawiedliwy CS50 tutaj, w Cambridge, a także innego w New Haven. Tak więc wniosek, spójrz na strona dla tych danych. Ale bardziej emocjonująco też jest możliwość ubrudzić sobie ręce, a twoje otwarte na całość umysły kilka tematów i narzędzi i technik, które są pomocnicze do podstawy programowe kursu, w niemniej jednak związane. A także kamienie wspaniałe krokowe do robi naprawdę fajne projekty końcowe, które wykraczają poza materiał omówiliśmy formalnie problemu ustawia lub wykładu. Więc idź do strony CS50 dla cała lista seminariów. Jeśli nie masz jeszcze zarejestrować się, że jest w porządku. Śmiało i zarejestrować się nadal i będziemy śledzić połączenia na żywo z transmisji strumieniowej, dzień i godzina jest na stronie internetowej. I wszystko będzie rejestrowane i umieścić w Internecie jeśli nie możesz zrobić poszczególne dni i godziny. Co do tego, co nas czeka thereafter-- dobrze, Oczywiście, nie ma hackathon CS50. To zdjęcie, przypomnijmy, z tygodnia zerowej podjęte około 4 AM jeden wieczór w latach poprzednich. Targi CS50, który ponownie odbędzie się w obu miastach. A potem, żeby posadzić nasion, choć nadal mają miesięcznie plus na lewo od semestru, jeśli chcesz dołączyć własne nauczanie CS50 jest personel, i chcesz rozpocząć myśli o zostaniu Kalifornia, lub nauczania facet, wie, że zaczniemy mówić o tym więcej jeszcze w tym semestrze. Ale na zdjęciu jest większość tegorocznych zespołu. I tak, PHP-- i byłem tak smutno w zeszłym tygodniu, że [? Allyse?] Uprzejmie udał się do starań o uzyskanie nam te wspaniałe rekwizyty że nie kończy się przy użyciu, więc naprawdę wyglądał głupie że mieliśmy łopatę siedzi tu cały dzień, w ubiegłą środę, a trochę łyżka. Ale to był mój metaforyczny sposób stara się malować obraz, dlaczego mamy do przejścia z C na języku, takich jak PHP. I to samo można powiedzieć o żadnej liczba languages-- Java, Python, Ruby lub bukiety wiele innych, ale podczas gdy w C, na przykład, zapisanie programu w języku C może być zazwyczaj jak biorąc łyżkę tak i kopanie dziury w ziemi, w piasku lub błocie. PHP pozwala na wykonywanie o wiele większe ukąszenia z tego problemu, pisanie znacznie mniej kodu przy użyciu znacznie mniejszej narzędzie, bo jest tak dużo więcej Funkcjonalność sztukowanych w. Teraz, gdy byliśmy bardzo dramatyczne, że mamy coś do łopaty tutaj, ale tak będzie. W tym samym czasie, druga metafora wpadliśmy Jest, oczywiście, można używać coś takiego klucza wbijać się w coś na kształt paznokci. Ale oczywiście, prawo Narzędzie do użytku będzie być nie tyle Język nazywa C-- a teraz po prostu denerwują [? Sanders?] Chyba, będziemy naprawić later-- tak właściwym narzędziem do często korzystają nie będzie Narzędzie to najniższy poziom. I rzeczywiście, C nie jest językiem, który większość z was nigdy nie będzie w użyciu, Należy koniecznie stosować lub ponownie. I faktycznie, trochę secret-- tylko raz Sam używam C jest dość dużo między Września i grudnia każdego upadku semestr. A to dlatego, że używać go jako okazję nauczyć się podstaw programowania, a wraz z nim komputera Podstawy naukowe, dane Struktury, Algorytmy i like-- ale bardzo szybko będziesz zobacz teraz, składni i idee leżące u podstaw C są tak cudownie przenieść na bardziej nowoczesny Języki poziomie wyższym, jak PHP i Python i Perl i Java i Objective-C-- właściwie nie tyle Cel-C-- ale Swift, te nowsze Języki, że wielu z was będzie następnie babrać z Ciebie ostatecznego projektu. Więc bez zbędnych ceregieli, niech rzeczywiście korzystać z PHP, aby rozwiązać pewne problemy. Przypomnijmy, że na początku, ostatnia tygodniu, po prostu skorzystaliśmy CS50 IDE, napisaliśmy przemiły mały program że po prostu powiedział: "Witaj, świecie". I wtedy zapisany w plik o nazwie hello.php. I wtedy wpadłem tego polecenia. I czemu? W języku angielskim, co tu się dzieje? Co robię, gdy Pobiegłem polecenia? Tak? PUBLICZNOŚCI: Jest jakaś funkcja PHP że czyta co in-- rozumie. DAVID MALAN: Dobra, nie ma niektórych funkcji PHP-- i pozwól mi być bardziej szczegółowe, jest program o nazwie PHP, a.k.a. Tłumacza, który rozumie zawartość hello.php, i interpretuje go od góry do na dole, od lewej do prawej, i robi to, co mówią te polecenia. Polecenia w hello.php, oczywiście, jest po prostu źródłem code-- funkcje i zmienne i pętle i podobne, że my sami zaczęli pisać w PHP. Ale w przeciwieństwie do C, który jest skompilowany języka, PHP po prostu napisać go i uruchom go. Możesz pominąć ten krok pośrednika o przekształcenie go do zer i jedynek, a następnie uruchomić go. A więc to, co jest do góry nogami z tego? Dlaczego jesteśmy omijając krok? Dlaczego bardziej nowoczesnych języków mają tendencję do pominąć ten krok? Jakie były korzyści? Albo po prostu intuicyjnie? Nawet jeśli nie mam pisałem dużo PHP, co jest korzystne, o nie kompilowania kodu sądzisz? Nie? Nie popełniając? Zarysowania głowę? Tak. PUBLICZNOŚCI: Bardziej dynamiczne. DAVID MALAN: Bardziej dynamiczne? Co masz na myśli? PUBLICZNOŚCI: [niesłyszalne] DAVID MALAN: OK, dobra, więc w zależności od wejścia, nie trzeba kompilować go za każdym razem. I to naprawdę jest tak proste jak that-- co jest sens kontynuowania skompilować kod? To tylko krok, który jest making-- to wymaga, W ciągu ostatnich kilku tygodni, dwa razy więcej kroków tak po prostu uruchomić program. To było przydatne, widząc, że Ciebie zobaczyć komunikaty o błędach i tak dalej, ale to wciąż tylko irytujące krokiem. I tak programiści sobie sprawę, w czasie, dlaczego nie zacząć pisać w językach, które nie trzeba ten krok dość mechaniczną, tak, że można po prostu napisać Twój kod i uruchomić go. Ale jaka była cena że widzieliśmy zapłaciliśmy w zeszłym tygodniu, w jednym konkretnym przykładzie? Tak? Prędkości. Więc [? co to?] tłumacze trochę wolniej, w tym zer i jedynek są miła i szybka do komputera aby zrozumieć, ponieważ Intel CPU, czy cokolwiek to jest, tylko rozumie, co się dzieje na tych wzorców bitów. Natomiast tłumacza to program, który naprawdę musi przeczytać źródło ASCII kod, który napisałeś, i przekonwertować go, że tak powiem, lub dowiedzieć się, jak to konwertuje ostatecznie do zer i jedynek. Więc po prostu zajmuje trochę trochę trafień wydajności. Więc to trochę kompromisu. Teraz, jeśli robimy to tu, pozwól mi zrób przykład w następujący sposób. Jeśli wrócę tu, nowy plik, zamierzam aby zapisać to znowu hello.php. A teraz mam zamiar iść do przodu i powiedzieć: "print hello world" - i przypominam sobie, że mogę korzystać z drukiem, nie wiem użyć druku-F. A teraz tutaj, jeśli to zrobię PHP hello.php, huh-- I nie wydaje się interpretować go. Co zrobiłem źle? PUBLICZNOŚCI: Kątowe bransoletki. DAVID MALAN: Tak, trzeba kąt ten uchwyt do góry. Więc jest to trochę denerwujące, ale przyzwyczaisz się do niego szybko. Jeśli mam napisać kod PHP, I generalnie trzeba powiedzieć program, lub poinformować tłumacza, hej PHP, tutaj jest trochę kodu PHP. A potem na dokładkę, chciałbym zamknięcie nie w tym, ale raczej ze znakiem zapytania po prostu kąt Uchwyt, tak, że teraz tu, jeśli uruchomię to jeszcze raz, teraz Uzyskać pożądany rezultat. Teraz zróbmy niewielki optymalizacji, po prostu tak, że widziałem go wcześniej. Jest to trochę denerwujące, że I trzeba uruchomić PHP przestrzeni hello.php, ponieważ w przeszłości może po prostu napisz dot ukośnik nazwa programu, co jest miłe. To trochę lepsze doświadczenie użytkownika. Tak więc okazuje się, można to zrobić w PHP z following-- I mogą korzystać z tego dość tajemniczy Zaklęcie na górze tutaj, który jest powszechnie nazywany shebang, przy czym jest to ostre symbolem, że tak powiem, jest to huk lub wykrzyknik. I to teraz jest ścieżką do programu na typowym systemie Linux, które nazywa środowisko lub env. I to line-- długą historię jedna linia short-- tylko mówi, hej komputer, znaleźć PHP interpreter dla mnie w środowisku, znaleźć je w pamięci, że tak powiem. A teraz, co jest ładne, jest że jeśli pójdę na dół, Mogę zrobić dot ukośnik komentarzy dot php, or-- hmm. Permission denied. Cóż, zobaczymy jeszcze tego z problemem ustawić siedem, jeśli Ciebie jeszcze nie, z uprawnieniami. Okazuje się, że muszę aby uruchomić to polecenie nazywa [? chamod?] na zmiany mode-- A plus x hello.php. Muszę [niesłyszalne] ten jeden dodatkowy krok, który mówi mój komputer, aby hello.php wykonywalny. A teraz uważaj, co happens-- kropkę slash hello.php, to po prostu działa. Nie musisz podawać interpreter więcej. I mogę to zrobić jeszcze ładniejsza, Nadal, jeśli zmienić nazwę tej rzeczy. Jeśli przeniosę hello.php tylko Hello-- tak zawiadomienia w lewym górnym rogu, nazwa programu jest Rzeczywiście teraz po prostu Witam. Teraz mogę zrobić to wyglądać programie C, mimo że jest napisane w PHP-- i szczerze dowolna liczba w innych językach. Tak marginalna poprawa, nie ma różnicy funkcjonalne. Ale to tylko mała ciekawostka teraz, tak, że można pisać programy w dowolnym języku, a użytkownik nie ma trzeba wiedzieć, czy obchodzi mnie, co to są. Cóż, spójrzmy na bardziej przekonujące przykład teraz że bita z góry. I to się nazywa quote.php. I to jest dostępne online. I zauważyć, że jest to dość short-- ale to jest programem wiersza poleceń, to będzie wyglądać się cen akcji dla mnie, co faktycznie się być germane do problemu ustawić siedem. Zobaczmy więc, co robię. Na samej górze Mam otwarty nawias znak zapytania PHP. Wtedy mam ten wiersz, w którym jestem wymagające plik o nazwie functions.php-- jedziemy zobaczyć więcej o tym za chwilę, ale to jest jak C pod wersja ostre obejmują, gdzie chcesz iść to inny plik. PHP zwraca wymagać, choć ma również obejmować funkcję. I okazuje się, że function.php jest tylko coś napisałem przed klasą. I umieścić go w tym samym katalogu, ponieważ Chciałem czynnik poza kodu które możemy użyć w innym miejscu. Tymczasem można chyba wywnioskować, co się tutaj dzieje. Ten jest trochę inny od C-- ale co mam na myśli zapewnienia właściwego wykorzystania? Przetłumacz tę bardziej technicznie. W jakich okolicznościach jestem wychodzenia z programu, lub wyjeździe? Tak? PUBLICZNOŚCI: Gdy nie masz dwa argumenty wiersza poleceń. DAVID MALAN: Kiedy nie mam dowodzić argumenty wiersza. I pamiętaj, że jeden z tych Argumenty jest sama nazwa programu. A drugi będzie inne słowo wpisuję po wierszu. Tak jak C, to to mój sposób na sprawdzenie, czy użytkownik współpracy i uruchomić program, jak zamierzałem? Teraz, coś trochę inaczej z C-- przede wszystkim mamy mają ten znak dolara, i co robi dolara znak oznaczający w PHP? Tylko zmienna. To all-- tylko zmienna, a następnie co chcesz właściwie nazwać. Zauważ, że jest coś brakuje w moim programie PHP, tak jak to było w zeszłym brakuje tygodniu, w porównaniu do C, co jest co? A typy, ale także coś innego. Nie jest czymś function-- funkcję głównego. Nie ma główną funkcją. Wystarczy zacząć pisać kod bez konieczności martwić się o to dość arbitralne Konwencja nazewnictwa jakieś domyślne główną funkcją. Więc arg C jest tak naprawdę zmienna globalna że interpreter sprawia, że ​​dla mnie dostępne. Teraz, to jest interesujące. Tak więc patrzeć na rzeczy. Znak dolara Zdjęcie jest na w lewo, to moja zmienna. Z prawej strony, jest podobno funkcja w PHP o nazwie odnośnika, że Olewam mój ostatni wiersz poleceń Argument to-- cokolwiek to słowo. I zobaczymy, jak to pracuje w jednej chwili. I wtedy wreszcie jestem raportowania cenę. Jestem wydrukowanie jednego Udział taki a taki. I pamiętaj, to jest sposób, w PHP-- sposób w PHP-- gdzie nie trzeba robić znak dolara S już. Możesz po prostu użyć nawiasów klamrowych i podłączyć w jakiejś zmiennej. Nie musisz się martwić, printf w taki sam sposób. I tak na marginesie, kiedy można umieścić zmienną wewnątrz cudzysłowów, takich jak ten, używasz fantazyjne techniki nazywa zmiennej interpolacji. To oznacza po prostu podłącz zmienną tutaj. I tak na marginesie, niektórzy z was, którzy przychodzą z innych środowisk programistycznych, nie może używać apostrofów wokół struny, aby to zrobić. Musisz użyć cudzysłowów dla Zmienna interpolacji do pracy. W przeciwnym razie będziesz dosłownie zobaczyć te nawiasy klamrowe. Więc wreszcie, idziemy dalej i uruchomić to. Pozwól, że mój terminalu trochę większe. Pozwólcie mi iść do przodu i uruchamiania wewnątrz mojego katalogu cytatem. [? CDsource?] [? AM?] [? cytat?] PHP cytat dot PHP, i będę szukać czegoś jak GOOG, który jest jej symbol giełdowy, i jeden udział nową nazwą, Alfabet Inc, kosztuje $ 717 od dzisiaj. Dobrze, jeśli chcemy uruchomić to znowu, ktoś mają inny giełdowy chcą patrzeć? Microsoft Myślę, że jest ten jeden, MSFT-- 53 $. Myślę, że może to jest Yahoo. I jest to, że na Facebooku. Więc co to jest ten program robi? Magia wydaje się być osadzone w tym funkcje przeszukiwania. Więc rzućmy okiem. Okazuje się, że nie przyjdzie PHP, to w functions.php. I nie przejdzie to bardzo szczegółowo, ale zauważ operacyjny słowo tutaj że w wierszu szóstym functions.php-- Dosłownie znaczy funkcję. I podać nazwę mojej funkcji. I wtedy podać dowolny argumenty lub parametry, Chcę, aby funkcja take-- żadnych rodzajów. A następnie wdrożyć go. I będę machać ręką w realizacji, ponieważ jest to dość zaawansowane w prawo teraz, ale my go ponownie zobaczyć w rzeczywistości w tygodniu w problemu ustawić siedem. Ale mogę to posprzątać, też. I obejmował również w dzisiejsza Kod wersja cytatu, który nie ma pliku dot PHP. Bo to, co jest zapewne u Górna część programu o nazwie po prostu zacytować? Że tak zwane shebang-- dość tajemnicze zaklęcie który mówi znaleźć w PHP, a następnie uruchomić go na mojego kodu tutaj. W porządku, tak że przynosi nam na którym skończyliśmy ostatnia time-- choć z niektóre bardziej zaawansowane przykłady. Wszelkie pytania do tej pory o PHP i co robimy? No-- wszystko w porządku. Tak? PUBLICZNOŚCI: Wewnątrz Pliki HTML, zrobić you-- [? czy ty ?] [? tak nazwać?] w [niesłyszalne] plik PHP? DAVID MALAN: Dobre pytanie. W kontekście internetowej, której jesteśmy dosłownie na temat przejścia do, nie stosować tzw shebang na górze ponieważ server-- internetowej często Program o nazwie Apache lub Microsoft IIS, Internet Information Server, lub dowolna ilość innego oprogramowania serwera WWW, wie, że gdy widzi Kropka plik PHP, które to tłumacza należy uruchomić na nim. To nie wygląda na tej pierwszej linii. Więc tej pierwszej linii sztuczki jest tylko, gdy jesteś pisanie wiersza poleceń programs-- które nie zrobimy bardzo często, ale to jest nasz sposób pomostowych nasze przykłady C do teraz nasze PHP. Więc rzeczywiście zlikwidować ten świat ze świata wiersza poleceń do sieci w następujący sposób. Pozwólcie mi iść do przodu i wyciągnąć tutaj na chwilę. Więc jeśli mamy serwer WWW, a raczej jeśli mamy tu mój laptop, które będę rysować tak. I tu mamy www w jakiejś formie. A potem tutaj, mamy serwer w building-- to jest jak internet works-- i tutaj Jest to serwer z kilkoma światłami może. Co się właściwie dzieje między tymi dwoma połączeniami? Więc w tym budynku jest serwer WWW. To tylko komputer który jest uruchomiony jakiś eksploatacji system-- być może wolne oprogramowanie nazywa Apache, który jest uruchomiony CS50 IDE. Więc można właściwie myśleć o tym budynku jako budynek w który jest przechowywany CSt0 IDE. To miejsce, gdzie wszyscy z was mają Rachunki, gdzie was wszystkich mieć swój własny serwer WWW działa, wszyscy mają swój własny, unikalny adres URL, jak zaczęliśmy dyskutować, a zobaczysz więcej w P. ustawić sześć. Oto mój laptop gdzieś indziej w Internecie. I tak, kiedy odwiedzam adres URL, który należy do mnie, że ruch internetowy będzie na serwer, serwera odbieranie HTTP request-- jak uzyskać index.html i to Odpowiadając na tej stronie internetowej. Więc to jest ogólny paradygmat. Podczas gdy wszystko się Do tej pory Dziś wszystko dzieje się tylko w ogranicza tego budynku. Używałem mojego laptopa, ale Byłem podłączony do CS50 IDE, więc wszystkie z tych programów biegałam w środku tego serwera, sam. Ale teraz, zacznijmy ponownym użyciem PHP napisać jakieś rzeczywiste programy serwowane są przez serwer WWW. I to zrobić, mam zamiar iść w całą masę przykładów że wprowadzenie tego pojęcia tutaj. Jest to więc rodzaj fantazyjny sposób Opisując paradygmat programowania. I rzeczywiście, po wyjściu CS50 lub pracy nad projektami końcowych, lub podjąć niektóre przestrzegać od klasy, zaczniesz aby zobaczyć, że world-- szczególnie dorósłszy w językach takich jak C które są bardzo niskie level-- sobie sprawę, że nie jest lepiej sposoby pisania oprogramowania. Istnieją pewne wzory, które można wykonać, pewne sposoby organizowania plików oraz sposoby nazywania swoich funkcji, tak, że długie opowiadanie, świat ma pochodzić z całym gronem akronimów i nazwy sposobów programowania. To są tylko techniki można użyć. I jeden z nich nazywa MVC, dla modelu View Controller. I to jest właśnie dla teraz, nadmiernie skomplikowane sposób mówienia, jak należy ułożyć strona PHP opartych, w naszym przypadku. Jak organizować swoje pliki, w jaki sposób zorganizować swoją logikę, w taki sposób, że ułatwia Napisać bardziej skomplikowanych stron internetowych? I rzeczywiście, będziemy szybko dostać się tam z p-set siedem. Tak więc w świecie MVC, będziesz aby zobaczyć, że nasz kod może ogólnie scharakteryzować jako albo kodu modelu lub kod kontrolera, lub widoku Kod. I mam zamiar upraszcza go jako follows-- sterownik jest mózgi swoim programie, to, gdzie wszystkie z ciekawa logika się dzieje. Więc wszystko byliśmy pisanie tej pory w klasie, jest trochę jak kontroler code-- to sterowanie Twój program, swoje pętle, twój warunki, swoje funkcje i zmienne i to wszystko. Widoki, teraz będą się trochę bardziej oczywiste w świecie internetu. A widok jest estetyka swojej stronie internetowej. To, co użytkownik sees-- obrazów, tabele HTML, znaczniki HTML oraz wszystkie z tym, wszystkie z puszystej estetycznych rzeczy, które nie jest trudne do napisania, ale jest tylko to, co masz generowania, jest tzw widzenia estetyki. I model, a ostatecznie będzie być stuff-- bazy danych, które zaczniemy nurkowanie w ogóle tym bardziej w tą środę. Tak więc sterownik jest logika, Widok jest estetyczne rzeczy, i model będzie gdzie możemy przechowywać nasze dane rzeczywiste. Warto więc spojrzeć na to bardziej konkretnie w poniższym przykładzie. Mam zamiar iść do mojego katalogu tutaj dzisiejszej źródła code-- z których wszystkie jest dostępna w Internecie. I mam zamiar przejść do wersji zerowej. I tu jest-- nazwijmy to w Wersja zerowy stronie CS50 jest. Niewiele tu w ogóle. Jest to bardzo prosta strona internetowa, która jest Prawdopodobnie za pomocą czego HTML tags-- tylko Chyba z ostatnich przykładów? Co to? H1-- pewnie za to duże pogrubienie Tytuł, że logo się góry, CS50. A co jeszcze jest w grze? Tak? PUBLICZNOŚCI: nieuporządkowana lista. DAVID MALAN: nieuporządkowana list-- tak UL tag a może kilka znaczników LI. A jeśli nie pamiętam tych, to szczerze mówiąc nie ma znaczenia. Są puszyste rodzaju szczegóły implementacją HTML że szybko sprawdzić i jesteś z powrotem na swój sposób. Skupimy się bardziej na programowaniu pomysły, które są bardziej soczyste kawałki. Więc po prostu wziąć szybkie spojrzeć na HTML-- i rzeczywiście jeśli otworzyć źródło widok tutaj, yup, To jest dokładnie to, co się tutaj dzieje. Istnieje znacznik UL. Zagnieżdżone wewnątrz, że jest tagów LI się. A potem pożyczyłem URL rzeczywistego nauczania tutaj. A następnie w lectures.php jest najwyraźniej kolejny generowane dynamicznie strona że będzie miał, niech see-- ah, przez pierwsze dwa tygodnie wykładu. Więc tygodniu zero i jeden tydzień, niech spojrzeć na this-- gdybym zobaczyć źródło strony, również bardzo proste. Są to prowadzi do dwóch stron nazywa week0.php i week1.php. Tak uważają teraz, co się dzieje. Po kliknięciu na week0.php, mój laptop czyni wniosek o week0.php. Serwer WWW, a.k.a., CS50 IDE, odbiera ten wirtualny kopertę. To widząc wiadomość jak, się week0.php. Jest on następnie interpretacji plik, góry do dołu, w lewo na prawy-- plik nazywa week0.php-- i wypluwając wyniki. Więc wewnątrz tego pliku, week0.php musi być logika kontroler, który generuje to HTML, a my wkrótce zobaczyć. Ale teraz, pozwól mi kliknij tygodniu zerowym, a teraz mamy środę i piątek, a teraz mamy slajdy powoli z tygodnia zera. A może pamiętacie to z drodze powrotnej, kiedy. Więc to wszystko, ta strona robi. Warto więc zastanowić się, jak to robić. Mam zamiar iść z powrotem do Kod źródłowy tutaj, w CS50 IDE, i mam zamiar otworzyć index.php. W górnej części tego pliku jest kilka uwag. A następnie w środku tego pliku, to Okazuje się, że to w ogóle nie ma kodu PHP. Bo jeśli nie masz żadnego z nawiasem tagi znak zapytania PHP, jesteś wolny, aby po prostu umieścić kod HTML. Bo to, co PHP tłumacz ma robić, jest, kiedy czyta ten file-- od góry do dołu, od lewej do prawy-- tylko interpretuje kod nie widzi między te nawiasy znak zapytania. I coś jeszcze, że tak nie jest uznać za PHP, po prostu wypluwa. I HTML jest jedną z rzeczy, będzie to tylko wypluć. Więc ten plik może mieć nazywany index.html, ale jestem nazywania wszystkiego Kropka PHP jako odskocznię. Lectures.php-- podobnie rozczarowująca, to tylko niektóre HTML. Week0.php, podobnie tylko niektóre HTML. Ale teraz postawmy na przysłowiowym inżynierii kapelusz, i zastanowić się, jak możemy to poprawić. To nie jest trudne, aby to zrobić, ale rodzaj zdecentralizowanego do kopiowania i wklejania. I rzeczywiście, jeśli zrobię tygodniu dwa, ty wiem, co mam prawdopodobnie zamierzasz zrobić? Mam zamiar iść do week1.php, jestem zamiar zaznaczyć wszystko. Mam zamiar go skopiować, wkleić go do nowego pliku o nazwie week2.php, podać kilka adresów, a na mojej drodze. Tak więc na podstawie tego, co mamy Już widziałem w C, to nie czuję się dobrze, mam nadzieję. Kopiowanie, wklejanie rzadko właściwym rozwiązaniem. Co więc możemy zacząć zrobić, aby poprawić? Gdzie są szanse dla lepszego projektu? Do czasu, mogę Tydzień osiem, to będzie być naprawdę denerwujące jeśli chcę zmienić czcionka z każdego z moje strony, lub jeśli chcę zmiana struktury układu. Więc gdzie jest szansa dla lepszego projektu? Cóż, spójrzmy na to, co jest wspólna dla wszystkich tych plików. Oto jeden tydzień, oto tygodniu zero, oto lectures.php, oto index.php-- co jest taki sam i Jaka jest różnica, z grubsza rzecz biorąc, w każdym z tych plików? Tak? PUBLICZNOŚCI: [niesłyszalne] DAVID MALAN: OK, dobra. Więc nie jest to wzór, z pewnością, przy czym za każdym razem wybrać wykładzie, I powinno być generowanie bardzo podobnie wyglądający stronę. I tak chyba mogę wykorzystać fakt, że tak naprawdę, celowo numerycznie indeksowane naszą lectures-- czy mogę umieścić jeszcze więcej słowa w odpowiedzi. A co to jest jedyna rzecz, naprawdę, to się zmienia między tygodniu jedno- i pozwól mi przewinąć w dół, więc jest to mniej więcej w tym samym place-- więc o to tydzień zero, w przybliżeniu w górę. Oto tygodniu jeden, tydzień zero, jeden tydzień, tydzień zero. OK, dosłownie, jeśli wiesz, żaden program w ogóle, teraz jest to po prostu jak wzór odpowiadający gra. Więc co się zmieniło? Tak? PUBLICZNOŚCI: [niesłyszalne] DAVID MALAN: Dobra, więc tytuł zmienia się, zawsze tak lekko. Zero będzie, oczywiście, do jednego. Tak samo dzieje się w tagu H1. I nie bardzo rozumiem to tak łatwo, ponieważ adresy URL są trochę długo. Ale te adresy URL zmieniają się nieznacznie. Ale to, co się nie zmieni jest, śmiem powiedzieć, większość zawartości page-- tag HTML to samo, głowa jest takie same, to tytuł jest prawie takie same, jednostka jest taka sama, a prawie wszystko jest taki sam, z wyjątkiem te małe szczypie. Więc jak możemy go o faktoring niektóre na to uwagę? No daj mi dokładnie proponują że w następnej wersji. Więc tutaj w wersji jedno, mam dokładnie same pliki, plus kilka innych. Oto index.php-- i nawet jeśli nigdy nie widziałem PHP przed, co ja pewnie robi to rozwiązać problem-- na podstawie tego, co tu widzisz? Tak, jest to, że niewielkim zaangażowaniu? Nie? Tak, przejdź dalej. PUBLICZNOŚCI: [niesłyszalne] DAVID MALAN: Tak. PUBLICZNOŚCI: [niesłyszalne] DAVID MALAN: Potrzebuję cię, aby mówić tylko trochę głośniej. PUBLICZNOŚCI: [niesłyszalne] DAVID MALAN: OK, dobra. A ja think-- było trudno usłyszeć you-- ale że to, co dostajesz na to, że znaczniki, które były powszechne do góry, i znaczniki, które były powszechne na dolny, zostały uwzględnione na zewnątrz, lub spadł do jakie pliki? Header.php i footer.php-- i będziemy wprowadzić kilka poprawek do zająć się obawy po prostu podniesiona o zmiany numerów, na Przykładowo, jeśli usłyszałem cię prawidłowo. Ale to wydaje się być istota tego. Jeśli nie było ogromna ilość Redundancja w górnej części strony i ogromna ilość nadmiarowej dołu niech dosłownie atrakcją i wyciąć tych treści na zewnątrz, umieścić go w osobnym file-- tak jak idea CSS, gdzie zbitek bardzo podobne estetyka, pakowane to w oddzielnym pliku dot PHP, użyj wymagają mechanism-- które jest jak cis obejmować: które jest w zasadzie tak, jakby powiedzieć iść chwycić zawartość header.php, i skopiować i wkleić je tutaj. Ale co to oznacza to, że obecnie w index.php, mam te dwie linie. W lectures.php, ja też mają te dwie linie. W week0.php, ja też mają te dwie linie. Więc teraz, jeśli chcę zmienić tytuł wszystkich moich stron, czy chcę zmienić Podstawowa struktura, I teraz można to zmienić tylko w jednym miejscu, lub dwa places-- nagłówka i stopki, odpowiednio. Teraz wyjścia kodeksu szukać trochę bardziej tajemnicze, prawda? Ale jeśli myślisz o tym, co strona jest doing-- jakbym prośbą week0.php, tak jak na rysunku powyżej here-- gdy week0.php jest wymagane, co to znaczy? Dosłownie, ten plik jest wniosek przeglądarce. Internetowej server-- a.k.a. CS50 ID-- łapie tego Plik, week0.php i czyta go od góry do dołu, od lewej do prawej. Na pierwszej linii, natychmiast napotyka otwarty nawias znak zapytania PHP, wymagają Nagłówek dot PHP, i tak co interpreter PHP does--, który jest wbudowany w internecie serwer, ponieważ wstępnie skonfigurowane to dla you-- automatycznie przechodzi w header.php, kopiuje zawartość, wkleja je tutaj. Ale potem spotkania tłumacza znak zapytania nawiasu zamykającego, tak to wszystko zrobić myślenia. Teraz to tylko ślepo pluje na linii dwóch przez siedem, bo to tylko surowe HTML. Pobiera do linii osiem, a nie, że sama magia again-- otwierania pliku, chwytając zawartość i wymagając od nich lub ich wklejanie No dobrze lub nie. Ale ja po prostu nawiązywał do błędu. Jest to etap częściowej wstecz, bo jeśli spojrzymy w header.php, Mam trochę wyciąć rożny. Co funkcja nie poddaję się, aby aby uzyskać ten sporne lepsze projektowanie? Tak? PUBLICZNOŚCI: [niesłyszalne] DAVID MALAN: Tak, rodzaj z wyciąć nietrywialne rożny. Możesz zauważyć, że to, co się zmienia to tytuł, numer w tytule, a numer w H1. Więc moje rozwiązanie było OK, niech po prostu zmienić nazwę strony, i nie sobie z tym poradzić Problem w ogóle. Tak, że częściowy krok do tyłu, na pewno. Ale to, co jest godne uwagi tutaj jest, że to, co zrobiłem w inny sposób uwzględnione wszystkie wspólne rzeczy. A w footer.php, zauważysz, że uwzględniamy na to wszystko, choć mniejsze, wspólne rzeczy. Więc trzeba jakoś teraz mogli zrobić kolejny krok do przodu, i naprawić że kwestie tytuł. Więc zróbmy to. Pozwólcie mi iść do mojej drugiej wersji Tutaj, która, ponownie, ma te same pliki za wyjątkiem jednego nowym dodatkiem. I to jest trochę bardziej gadatliwy, ale zobaczymy, czy możemy może odciąć, co się tutaj dzieje. Więc zamiast wymagających header.php i footer.php, I wydają się być tylko wymagające jeden file-- nazywa, oczywiście, helpers.php. A teraz pozwól mi przewidują, co jest we helpers.php to tylko kilka funkcji że napisałem, tak jak wcześniej. Ale zadzwoniłem go helpers.php. Teraz najwyraźniej, w Linia trzy i 10, jestem dzwoni dwa functions-- renderowanie nagłówek, stopkę renderowanie. Ci, nie pochodzą z PHP, napisałem ci się. I umieścić je w helpers.php. Teraz, widzieliśmy tylko tej składni raz, i to było bardzo krótkie. Ale to podobno argument do renderowania nagłówka funkcji. Dlaczego mam to wiedzieć? Cóż tu jest blisko nawias, tu jest otwarty nawias. I oczywiście, tak jak w C, coś między tymi nawiasami jest input-- lub argument funkcji. Co to jest typ danych tego argumentu, na podstawie tego, co już podświetlony? Co te nawiasy kwadratowe wskazuje na podstawie ostatniego tygodnia? Tak, to jest array-- specjalnie tablicą asocjacyjną. I składnia ta prawda jest trochę funky, ale to jest tylko przejazdem w jednej pary kluczy wartości. Kluczem jest to, cytuję koniec cytatu tytuł i wartość jest CS50. Jeśli to zrobił w C, to może zamiast wyglądają bardziej jak to, właśnie cytatu CS50-- czy rzeczywiście byłoby kręcone szelki, czy coś takiego w C, gdzie klucz jest zero, a wartość jest CS50. Ale znowu, PHP, chociaż Składnia jest, ponownie, trochę dziwne, pozwala przejść w słowa zamiast numerów skojarzyć klucze z wartościami. Więc co to wszystko znaczy? Jeśli pójdę do helpers.php, Przyjrzyjmy się tej funkcji. renderHeader.php, a renderHeader jest mój funkcji, i wiem, że ponieważ widzę słowo kluczowe tutaj funkcji. To jest nowa z C-- go podobno przyjmuje argument o nazwie data-- ale może Nazwałem to cokolwiek, ale nazwałem go danych, po prostu się trochę clean-- i tylko zgadywać, zwłaszcza jeśli już zaprogramowany w jakiś inny język wyższy poziom, zanim coś powyżej C, koncepcyjnie. Co równe otwarty nawias kwadratowy nawias kwadratowy zapewne na myśli? Albo co to może oznaczać? Nie widziałem tego w C. Tak? Pusta tablica. Dokładniej, oznacza to, że użytkownik nie zadzwonić renderHeader z argumentem, jestem nadal w toku mieć argument o nazwie dane, ale jego wartość domyślna to będzie to pusta tablica. Więc to jest po prostu ładny wygodę. Nie mam krzyczeć na użytkownika, lub powiedzieć użyłeś mojej funkcji źle. Mogę tylko dać użytkownikowi domyślny wartość, jeśli nie szczególnie dbać. Teraz ta funkcja, jestem będzie fala ręce w. Ale ta funkcja wyciąg pozwala nam przekazać te zmienne w danych w header.php w następujący sposób. I to jest ostatni kawałek, Myślę, składni modny. Oto moja nowa wersja z header.php-- go mawiał, dosłownie, otwarte Uchwyt tytuł CS50, i to było to. I to samo dla H1. Teraz najwyraźniej mówi coś bardzo modny. I pozwól, że uproszczenie to chwilę w następujący sposób. To jest to, co mam zmieniłem tytuł, aby być. Jednak robi się trochę brzydkie stale otwartych nawiasach z PHP, a następnie za pomocą funkcji drukowania. Okazuje się, że PHP ma skrótów Zapis do tego, co jest po prostu znak równości, która jest technicznie Funkcja o nazwie echo zamiast druku, ale to jest to samo, skutecznie. To po prostu wygląda lepiej. To tylko składniowym cukier, jeśli chcesz, sprawia, że ​​mój kod wygląda trochę lepiej. Ale okazuje się, oraz zobaczymy to jeszcze raz Przed długi, musimy nazwać irytująco długo funkcja nazywa HTML znaki specjalne w PHP, ponieważ okazuje się, istnieją pewne wejścia że użytkownik może dać nam, lub że użytkownik może dać nam, że zamiar złamać naszą stronę. Ale zobaczymy, że w przyszłym Tydzień z JavaScript. Ale teraz, po prostu wiem, że ten plik, headers.php, po prostu ma tytuł, który Minąłem się, że aby pewien, że to bezpieczne, aby być wstrzykiwany w internecie Strona, i to wypluwa jak mój tytuł i jak mój H1. Więc jeśli pójdę teraz do tej wersji, zauważyć, że wykłady ma swój tytuł z powrotem, Tydzień zera ma swój tytuł z powrotem, i rzeczywiście, HTML Jestem generowania jest identyczna, co moja pierwsza wersja was-- wyjątkiem mojej spacji, ponieważ zacząłem formatowanie mój kod trochę inaczej. Ale ja generowane wszystkie kod mnie obchodzi. Więc pozwól mi zatrzymać się na na chwilę i zobaczyć jeśli nie ma żadnych pytań lub niejasności stworzyłem. W porządku, więc niech skręcać trochę trudniej tutaj aby sprawdzić, czy nie ma okazja do poprawy. Helpers.php miał to również Funkcja o nazwie renderFooter. A co jest godne uwagi o renderHeader i renderFooter? I znowu, dla dzisiejszych potrzeb, wiem że funkcja Wyciąg jest tylko mój sposób na przekazywanie argumentów w header.php i footer.php. Przepraszam? PUBLICZNOŚCI: [niesłyszalne] DAVID MALAN: Tak, tylko zmienił wymagają linii. Tak dosłownie, już popełnił grzech kopiowania i wklejania, po raz kolejny. To nie jest ogromna liczba linii, ale przychodzą on-- jeśli mam skopiowanie i wklejenie wszystko wystarczy zmienić jedno słówko, i jeden mały słowo, które wskazuje Alan obecnie jest stopka tutaj, w porównaniu header tutaj. W przeciwnym razie, wszystko jest identyczne, za wyjątkiem rozpuszczenia, Oczywiście, nazwy funkcji. Więc co możemy zrobić lepiej? Dobrze pozwól mi otworzyć tę wersję tu, przy czym w helpers.php, dlaczego nie mogę po prostu dostać trochę mądrzejszy o tym? Napisz nieco bardziej skomplikowana Kod, ale nazywam to uczynić? Więc co ja zasadniczo zmieniło? To wymaga argumentu now-- dwa argumenty, dane nadal. A potem co jest pierwszą Nazwa prawdopodobnie używane przez, w oparciu o to, czego tutaj czytanie? Nawet jeśli niektóre z składni jest wciąż nowa. Co to jest znak dolara szablon? Przepraszam? PUBLICZNOŚCI: nagłówek lub stopkę. DAVID MALAN: nagłówek lub stopkę. Więc jak widać, postanowiłem, że jeśli jedyną rzeczą, która się zmienia Szablon jest to, co chcę do print-- i szablonu Mam na myśli to jest plan na kod, który chcesz wstawić, ale chcę podłączyć niektóre values-- więc jeśli to tylko nagłówek lub stopka, dlaczego nie mogę parametryzacji że i wywołać znak dolara argumentem szablon? A potem to modny składnia pozwala mi aby utworzyć ścieżkę zmienna tutaj. Więc droga znak dolara jest zmienną. Co składni zrobić, jeśli znasz? Tak? PUBLICZNOŚCI: [niesłyszalne] DAVID MALAN: Dokładnie. Jeśli szablon jest, cytatu, nagłówek, czy szablon jest, cytatu, stopka, że ​​linia nie że już podświetlony, linia osiem, jest po prostu biorąc to imię, jak nagłówek, i łącząc go z kropką PHP. Więc nie ma tego operatora w C. Ta kropka jest niesamowita rzecz w PHP-- jeśli jesteś zaznajomiony z JavaScript lub Java, można skorzystać z plusem podpisać zrobić konkatenacji. W C, jest to ból w neck-- i tak mi przykro, w p-set sześć, będziesz musiał zrobić this-- jest to ból w szyi Łączenie ciągów. Czemu? No, bo jeśli masz ciąg znaków, który jest tak długo, a inny ciąg znaków, który jest tak długo, nie można po prostu podłączyć je razem. Co ty, zamiast zrobić w C? Tak? PUBLICZNOŚCI: [niesłyszalne] DAVID MALAN: Musisz malloc pamięci lub używać tablicy na stosie. I trzeba rzeczywiście sprawiają, że tablica na tyle duże, zmieścić się także w tym, plus backslash zero. Następnie połącz je ze sobą za pomocą mieszać kota lub ręcznie za pomocą pętli for, lub dowolną liczbę technik. I pokażemy parę w p-set sześć. Jest to ból w szyi. I to jest naprawdę to, co myśli o to w porównaniu this-- jak C w porównaniu z PHP. Ty po prostu dużo więcej Funkcjonalność za darmo, tak, że można skupić, idealnie, na zabawy część kodowania, Projekt chcesz rozwiązać, zamiast poziomu minutiae niskim. Więc to po prostu generuje header.php lub footer.php na podstawie których jeden nazywam. I rzeczywiście, jeśli pójdę do index.php, zawiadomienie wszystko, co changed-- Zamiast dzwoniąc czynią nagłówek lub uczynić stopki, Dzwonię render, a następnie przez nazwa szablonu, który chcę zrobić. I zobaczysz, to też w problemu ustawić siedem, w którym możemy pozwolić na użycie Ta sama funkcja, aby bukiety i pęczki różnych stron internetowych. Tak więc, zamiast mieszkać zbyt znacznie więcej od tych details-- które zobaczymy ponownie w Zestaw problemem seven-- spójrzmy Dotychczas na początku roztworu do bardziej interesującym problemem. Jak dotąd, nic nie mamy wykonane ma zapisane dane. W rzeczywistości, tylko czas, jaki kiedykolwiek zbawieni coś, co zrobiliśmy w tej klasie jest, kiedy mieliśmy bardzo proste demo chwilę z powrotem, przy czym użyliśmy plików IO w C, i myślę, że wpisany w imię moje, i Hannah Imię i nazwisko Marii, a może nazwisko Andy'ego i następnie zaoszczędziliśmy file-- CSV Plik oddzielonych przecinkami wartości. A kiedyś fopen-- myślę użyliśmy fprintf ile pamiętam, i zapisany plik. Teraz, jest najprostszym Formularz bazy danych. Jeśli chcesz stworzyć stronę internetową dla Program Frosh IM, gdzie pierwszaków mogą zarejestrować się na sporcie, ci najlepiej chcesz coś zrobić z tymi danymi. W ubiegłym tygodniu, że nie zrobił nic, z data-- po prostu powiedział, jesteś zarejestrowany, nie bardzo. A może Wysłałem e-mail Proctor, i to było to. Ale byłoby miło, gdybym mógł dać, że Proctor pliku CSV, jak pliku Excel. Albo jeszcze lepiej, że będzie byłoby miło, gdybym mógł umieścić nazwy tych użytkowników i dorm nazwiska i wszystko to w bazie danych, które po prostu żyje na wieki, dopóki nie zdecydujesz się usunąć dane. Baza danych, która pozwala mi do kwerendy informacji. I rzeczywiście, to właśnie baza danych jest. Przedstawiamy dziś i w przyszłym tygodniu, również technologia nazywa SQL-- zapytania Zorganizowany Język, który jest inny język. Jest to w zasadzie programowania język, ale dla baz danych. A baza teraz, po prostu myśleć jak bardzo fantazyjnych wersji Microsoft Excel lub Google Arkusze lub numery Apple. Jest to na ogół program, który pozwala przechowywanie całą masę danych w rzędach i kolumnach, całkiem jak ty może w programie Excel. Ale to, co jest dobre, zwłaszcza jeśli Nie jesteśmy bardzo znane z programu Excel, co SQL pozwala zrobić to kwerenda w tym informacje pisząc wiersze kodu gdzie można, nawet jeśli Baza ma milion wierszy w nim, można znaleźć super szybki rzeczy. W istocie jest szczególnie Excel zły na dużych zbiorach danych. I rzeczywiście, aż do kilku lat temu, okazało się, Excel nie tylko pozwalają na przechowywanie do 65,535 rzędy data-- które brzmi jak dużo, ale u razem był grad student, i pamiętam, potykając to dlatego, że był generowania Pliki CSV dla moich badań i I chciał szybko analizować je poprzez otwarcie w programie Excel. Oczywiście, mój komputer po prostu rozbił, bo miałem ponad 65.000 wierszy. Ale skąd wziął się 65.535 pochodzi? Co się Microsoft robi, prawdopodobnie? Jeśli jesteś dobry z uprawnień z dwóch? Tak, były przy użyciu 16-bitowego wartość reprezentuje numer wiersza. I dwa do 16 jest 65,536-- jeden minus, bo jeśli Strona zera oznacza, że ​​był Najbardziej liczba wierszy mogłem. A to był tylko projekt decyzji. Zapisując 16 bitów, to ogranicza mnie do 16.000 wierszy, a nie 4 mld euro, które mogłyby miałem idealnie. Ale teraz, będziemy przedstawić to bardziej w kontekście internetowej. A co jest miłe o SQL jest to, że nawet choć jest to dość mocny i dość wyrafinowane, tak naprawdę sprowadza do czterech kluczowych operacji, cztery kluczowe funkcje, jeśli will-- zostanie wybrany, do pobierania danych, wyszukiwanie dla danych; usunąć lub usuwania danych; włóż do dodawania wierszy do bazy danych; i aktualizacji. Więc jeśli kiedykolwiek używane Google Arkusze kalkulacyjne, Apple Numbers, Microsoft Excel, zostały wykonane, Najprawdopodobniej wszystkie z tych działań jako człowieka przez tylko za pomocą klawiatury i mouse-- wstawiania danych, za pomocą oczu aby wybrać lub wyszukać dane, lub dane, aktualizowania lub usuwania danych. Więc co to oznacza? Cóż, zainstalowane w CS50 IDE jest program o nazwie MySQL. Jest to darmowa, open-source baza danych, która jest bardzo popularna. Facebook, na przykład, stosuje się do tego dzień, wśród innych narzędzi, z których korzystają. I wiele bardzo popularnych stron internetowych użyć to w dużej mierze dlatego, że jest szybki, a ponieważ to nic nie kosztuje. Choć z pewnością istnieją alternatywy. A niektórzy z was mogą pluskać się alternatywy dla projektów końcowych. Ten zrzut ekranu, w międzyczasie, od narzędzie internetowy o nazwie phpMyAdmin. Jest to przypadek, że to internetowe narzędzie jest również napisany w języku PHP, ale co to ma do zrobienia jest dać nam oparty internetowych interfejs do bazy danych. Ponieważ MySQL jest zazwyczaj coś, historycznie was, nie oddziałują tylko z z linii poleceń. I byłoby bardzo denerwujące i arcane mieć wpisywanie poleceń tekstowych, aby wybrać danych, wprowadzanie danych i usuwania danych. Więc niektórzy ludzie w internecie Napisałem program internetowy że po prostu daj nam zarządzać dane w naszej bazie danych. To jak podwójne kliknięcie na programie Excel, a prowadzenie jej wersję internetowego. I co masz zamiar użyć tego do ostatecznie w przyszłym tygodniu, a nie w p-set sześć, ale jest zbudować coś nazywa CS50 Finanse, które będzie miał bazę użytkowników, z nazwy użytkownika i hasła, dolara wynosi, że mają na swoich kontach bankowych. To będzie coś, czego używać do przechowywania symbole i ilości zasobów, które użytkownicy kupił za pomocą wirtualnych dolarów, że dasz im. I to się dzieje, aby umożliwić użytkownikom zarejestrować się w witrynie, tak, że nawet znajomych można dostroić się do swojej stronie i rzeczywiście zarejestrować, zaloguj się i bawić i starają się znaleźć błąd w kodzie, i starają się znaleźć błędy w swojej stronie. A oni po prostu zarejestrować dodanie siebie, skutecznie, poprzez kod piszesz do bazy danych. Na przykład, jest to szybkie ekranu z tego, co baza danych może wyglądać. Jest to z jednej zeszłoroczne solutions-- to jest jak mini Excel plik, przechowywane w naszej bazie danych zapisane w tym oprogramowaniu o nazwie MySQL. Na lewej stronie, mam podobno podana każdemu użytkownikowi unikalny numer. W drugiej kolumnie, Dałem każdy użytkownik name-- mój własny między nimi. A na prawej stronie, Dałem im hash. Teraz jest to faktycznie hasło ale to nie jest zwykły hasło tekst. Jest to zaszyfrowane hasło, jeśli chcesz, czy hash hasła. Które wrócimy do wkrótce. Ale jeśli kiedykolwiek przeczytać artykuł o tym, jak Twoje hasło w pewnym banku lub niektóre Strona internetowa może być zagrożona, może to na ogół oznacza, jedna z dwóch rzeczy. Więc jest to tylko fragment z sześciu użytkowników. Wszyscy z was, teraz mogę zrozumieć za pośrednictwem hackingu lub pękanie co haseł naszych sześciu ludzi są. Ale jeśli kiedykolwiek zdobyć alert lub przeprosiny od firmy lub strony powiedzenie, Przepraszam, haker włamał się do naszej bazy danych, powinieneś zmienić hasło, co może znaczyć? Cóż, jeden, może oznaczać, że firma była bardziej kretyński, i została przechowywania hasła w kolumnie, jak ta, w postaci niezaszyfrowanej. Co oznacza przeciwnika, który ukradł bazę danych, dosłownie zna login i hasło. To najgorszy z możliwych scenariuszy. A jak zobaczysz w p-set siedem, więc łatwo uniknąć. Nie ma absolutnie żadnego usprawiedliwienia, że forma głupoty w dzisiejszym internecie. Two-- i znajdziemy jakieś artykuły świadczyć fakt, że wciąż zdarza się, nonetheless-- dwa, może przeciwnik ukradł tę wersję bazy danych. Która jest jeszcze trochę zły, bo teraz wiedzą, że mam sześć klientów, Wiem, nazwy użytkowników z tych sześciu klientów, i wiem, że zaszyfrowany lub wersje zakodowane wersje, haseł tych sześciu klientów. Ale każdy z was, kto może zrobili [? Hacker 2?] gdzie pęknięty haseł lub wziął Spojrzenie na tej wersji problemu Zestaw, dlaczego jest tak, jeszcze trochę niepokojące jeśli przeciwnik zna hash Hasła? PUBLICZNOŚCI: Ponieważ mogli wprowadzić cały słownik do funkcji skrótu. A jeśli hasło jest słownikiem Słowo, [? może po prostu match--?] DAVID MALAN: Dokładnie, przeciwnik można po prostu napisać kod, jak niektórzy z was nie dla [? Hacker?] 2, w którym iteracyjne wszystkich słów w słowniku, lub wszystkie możliwe kombinacje A do Z i jeden przez nine-- który brzmi jak dużo, i to jest. Jednak dla komputera to cholernie szybko. A w rzeczywistości, to był punkt [? Hacker 2,?] Był wziąć rzeczy, które dosłownie wygląda tak, i inżynierii wstecznej co to właściwie było. Będziemy więc przyjrzeć się, jak to możliwe bardziej efektywnie przechowywać tego. Okazuje się, że na szczęście w MySQL, nie będą typy danych. A jednym z elementów zabawy około projekt bazy danych, aby być uczciwym, jest rzeczywiście podejmowaniu decyzji dla siebie jak należy przedstawiać dane? Jeśli reprezentują numer telefonu jako int, jak wielka liczba, lub długi? A może rzeczywiście to zrobić jako ciąg znaków? I nie może być bardzo niebanalną skutki tego. W istocie, jednym z Najwcześniejsze, zabawa Germane historie jest, gdy Mark Zuckerberg budował Facebook, pierwotnie w, napisane i nadal jest w dużej mierze napisany w PHP. I jednym z największych wyzwań stanęli na początku było skalowanie. Gdy przechowywane dodanie szkoły po Szkoła po szkole, do mojej wiedzy, jeden z pierwszych rozwiązań zasadniczo skopiować i wkleić niektóre z baz i część kodu tak, że Harvard było działa na własnym serwerze, i MIT został uruchomiony na własnym serwerze. A to dlatego, dla niektórych z Was, którzy mogą sobie przypomnieć, nie można mieć przyjaciół w innych sieciach. Prawdopodobnie nie ma przyjaciół na MIT i Harvardu, 10 lub więcej lat temu, ale nie można rozciągać sieci na częściowo z tego powodu. I jednym z największych wyzwań dla Mark i dla firm, takich jak Facebook faktycznie obsługi setki i tysiące i miliony wniosków na sekundę. Więc rzeczy zaczniemy mówi o tym tygodniu są naprawdę będzie germane do pisanie dobrych programów, a popularnie skuteczne narzędzia, które może obsługiwać wielu użytkowników. Będziemy więc mówić o rzeczach jak indeksowania i wyszukiwania, ale to jest na dzisiaj. Będziemy widzieć więcej na środę. [MUZYKA - "SEINFELD" TEMAT] DAVID MALAN: Możesz do Opisz i odjąć od niego. I nie musisz trzymać się część wstępnie określoną ilość pamięci. Cóż, co się, że będzie się nazywać? Głośnik 1: No, co się dzieje? GŁOŚNIK 2: Co masz na myśli? On daje wykład. DAVID MALAN: I możemy użyć Funkcja o nazwie malloc do memory-- Głośnik 1: Dlaczego nie są ramiona ruchome? GŁOŚNIK 2: Cóż that's-- wiesz, że to normalne. To tak, jak on ma po prostu duże kiełbasy wiszące tam. Głośnik 1: To jest normalne? GŁOŚNIK 2: Tak, myślę, że po prostu założyć, przypadkowo włożył dezodorant z klejem.