ANDI PENG: Jesteśmy prawie przez wszystkie psets. W rzeczywistości, jesteśmy przez większość z najtrudniejszych psets. Więc jesteśmy właściwie tylko zamiar rodzaju wietrze przez następne kilka tygodni. Mamy zamiar zacząć mówić o naszym projekty końcowe wydarzenia wymyślanie w ciągu najbliższych kilku tygodni. A życie będzie proste. Więc nie za dużo dzisiaj. Mam nadzieję, że będzie faktycznie wiatr przez agendy dziś a potem się stąd z jakiegoś wolnego czasu. Ponadto chcę przeprosić za brak cukierków dzisiaj. Nie wiem dlaczego. Ale w tygodniu poprzedzającym Halloween, mogłem zapomnieć o słodycze. Więc jestem właściwie tylko ogromna rozczarowaniem dla ciebie teraz. Bo dosłownie pamiętać, cukierki dla każdej klasy, ale Halloween. Ale w przyszłym tygodniu, sprowadzę podwoić ilość cukierków w celu uzupełnienia, że ​​wszystko dla Ciebie. Będzie świetnie. Więc mam kilka ogłoszeń dotyczące jakiegoś harmonogramu. Mam pewne problemy planowania. Następnie idziemy, aby przejść do rozmawiać o tym, co się nazywa chmod. Mamy zamiar rozmawiać o szybko, TCP / IP, HTTP. A potem będziemy kodować nasze własną stronę internetową za pomocą HTML i CSS. A potem będę faktycznie opuszcza może jak 20 minut, aby porozmawiać o pset6. Ponieważ pset6 jest rzeczywiście dużo rzeczy, które widzieliśmy już wcześniej, ale chciałem odświeżyć niektóre z tych pojęć a także nauczyć kilku nowych funkcji. Chłodny. Więc przede wszystkim, Witaj ponownie z przerwą. Mam nadzieję, że przerwa była przyjemna. Czy robiłeś w przerwie? PUBLICZNOŚCI: Poszedłem do Nowego Jorku. ANDI PENG: Poszedłeś do Nowego Jorku? Myślę, że połowa naszej szkoły udał się do Nowego Jorku. Nic się nie stało. Spędziłem większość mojego przerwy siedzący tryb życia w łóżku Netflixing. I to był dobry czas. Ale teraz jesteśmy z powrotem, z powrotem w sesji, już w huśtawka rzeczy. Mamy pset należytej ten piątek w południe. Myślę, że już mam podniósł quiz, tak? Więc każdy, kto ma Nie mieli swoje quizy, proszę przyjść i uzyskać quizy mnie na końcu sekcji. Lub śledzić mnie na kampusie. Muszę go ze mną gdzieś. Nasz ostatni projekt wstępnie propozycję również. Więc dla tych z nas, którzy nigdy nie miały ta klasa wcześniej, zwieńczeniem CS50 Kulminacją jest bardzo w tym wielki projekt, który uczniowie proponują. Oraz wniosku wstępnego, tylko ogólny pomysł co może chcieć zrobić dla ich Projekt, ze względu, że pomysł jest poniedziałek, następny poniedziałek w południe. Więc dość dużo, David myślę, że będzie porozmawiać o tym w wykładzie jeśli nie ma już. I jest solidna strona na naszej stronie internetowej, wyjaśniając wszystkie wymagania projektu. Ale zasadniczo, pick każdy temat, że masz interesowałem się przez cały czas tutaj w CS, czy to w grach lub projektu lub wideo albo coś. I można naprawdę rodzaj Teraz stosuje się niektórych lekcji że nauczyliśmy się tu w CS50-- hi, welcome-- do prawie prowadzenie ostateczny projekt wyboru. Wszystko to z powodu poniedziałek jest tylko krótki krótką informację przez e-mail do mnie, szybkie zdanie, jak, hej, Andi, Jestem bardzo zainteresowany w projektowaniu to gra, która robi to dla iOS. Chłodny. Po prostu daj mi swój krótki inicjał pomysły na ostatecznych projektów. I porozmawiamy przez czy to jest rzeczywiście dobry pomysł, czy nie, jeśli jest to możliwe, pomysł, czy nie. Ale wniosku wstępnego wynika w następny poniedziałek. pset6, nasz piękny web--, że jest źle. Pset7? pset6? To pset6, prawda? pset6, nasz serwer, to ze względu Piątek w południe z końca dnia. Godziny urzędowania od poniedziałku wznowić normalnie do czwartku w godzinach 8:00 do 11:00 w tym tygodniu. Myślę Commons dla kolejne trzy noce. Chłodny. Zanim mieliśmy do materiału, czy ktoś masz jakieś pytania, żarty, historie? Co zrobiłeś dla upadku przerwie? PUBLICZNOŚCI: Co mam zrobić? ANDI PENG: Już to wieki temu faktycznie. Christabel udał się do Nowego Jorku. Byłem tu i Netflixed. PUBLICZNOŚCI: Oh, tak byłem tutaj. ANDI PENG: Och, OK. PUBLICZNOŚCI: nie pamiętam co konkretnie. ANDI PENG: To jest OK. PUBLICZNOŚCI: Netflixing pewnie. ANDI PENG: Netflixing. Tak, to jest dobry moment. OK. W porządku. Wszelkie pytania przed wskakujemy do materiału? Ponadto, mamy zamiar spróbować przyspieszyć poprzez rozdział dzisiaj, nie za dużo na pokrycie. I miejmy nadzieję, będziemy mieli tu trochę za wcześnie. Przepraszam za nie słodycze, również. Jestem rozczarowaniem szczególnie podczas Halloween. W porządku. Chłodny. Tak więc mamy zamiar zacząć mówić o argument wiersza poleceń o nazwie chmod. chmod, wszystko to jest tylko system Unix zadzwoń prowadzone z wiersza poleceń zmienić uprawnienia plików. Tak na przykład, mamy wszystkie napotkane stronę tak pewnie kiedyś w nasza żywotność bycia www Użytkownik, gdzie nasz serwer ma dał nam błąd Zakazane. Nie masz uprawnień do dostępu, pierdu, pierdu, pierdu, na tym serwerze. Wszystko, co naprawdę znaczy jest to, że uprawnienia które zostały załączone do tego, co Strona, którą próbujesz się dostać nie były otwarte dla Ciebie. Więc dość dużo, chmod jest to sposób, w którym możemy modyfikować te uprawnienia systemu dać każdemu, użytkownik, grupa, czy świat, czy jakakolwiek Połączenie tych dostępem do niektórych plików, katalogi, wszystko naprawdę, każdy rodzaj systemu, system operacyjny. Jeśli więc któryś z chłopaków ma komputery, jeśli czujesz, jak po dziś ze mną, zupełnie nie krępuj się po prostu wpisz rzeczy w. Jeśli nie, możesz po prostu spędzać czas. Więc mam zamiar faktycznie pociągnąć się moim terminalu teraz. Tak więc polecenie, aby uruchomić chmod, a przynajmniej tak do listy uprawnienia swoje Katalog plików, to tylko ls-l. Jak widać, kilka rzeczy wyskakuje z których większość jest dla nas ważne na tu strona lewa. Wy zobaczyć kilka rs, ws, 1 /. Tak. Są to w zasadzie tylko wszystkie uprawnienia do pliku wyjaśnić, co niektóre katalogi i pliki w systemie mają. Więc wróćmy do Chodzi o moc. Tak więc, oprócz nazwach jak chłopaki widać po prawej stronie, szukamy zobaczyć zasadniczo po prostu kolumna po lewej stronie. Tak więc dodatkowo do właśnie nazwy plików, możemy Można zobaczyć prawa dostępu do plików, ich Grupa właściciel, nazwa grupy, data że plik był ostatnio zmodyfikowane, et cetera. Można zobaczyć wiele rzeczy za pomocą chmod. Tak więc sposób, w jaki czytamy chmod jest to, że pierwsza litera dość dużo ignorować w zakresie uprawnień do czytania. Pierwsza litera po prostu mówi nam, co typ systemu mamy dostęp. d, w tym przypadku jest folderu lub katalogu. Więc wiemy, że obecnie moje miejsce pracy Sekcja siedem było katalogiem. A potem widzisz trzy triady, w zasadzie tylko trzy zestawy trzech znaków. A może uważasz, że każdego jako trochę. Więc po prostu trzy zestawy trzy bity, dziewięć bitów w sumie. Traktujesz je w grupach po trzy. Tak, że pierwsza grupa trzech jest zawsze uprawnień użytkownika. Twoja druga grupa trzech jest zawsze swoje uprawnienia grupy. A twój trzeci zestaw trzech zawsze jest jak świat, że wszędzie uprawnienia. Sądzę więc, że proste pytaniem jest to, co jest Różnica pomiędzy użytkownikiem a grupy. Główna różnica między użytkownikiem i grupy jest to, że użytkownik jest tylko osobiście dostępu, co jest teraz. Grupa może być, jeśli masz wiele użytkowników na jednym komputerze, na przykład. Wszystkie z nich mogą być traktowane jako grupy. A potem świat tylko świat, każdy. Tak więc widzimy, później, jak się da modyfikacji tych, na różne uprawnienia. Więc dość dużo, jesteśmy będzie nadal koncentrować się na części po lewej stronie, gdzie dla CS50 katalogu widzimy drwx, gdzie R oznacza po prostu, że to czytelny. The W po prostu oznacza, że ​​jest zapisywalny. A potem x tak Oznacza to plik wykonywalny. Można by to, że rodzaj z nie ma sensu. Powinien to być np. Ale x właściwie rodzaj działa trochę lepiej, ponieważ można zapamiętać to lepiej. Tak więc trzy rodzaje rzeczy może to zrobić, możesz odczytać plik, możesz mieć uprawnienia, aby napisać plik, lub możesz mieć pozwolenie wykonać pliku. I tak droga, że ​​w rzeczywistości stanowią te, w bitach jest numerem 4, 2 i 1. Więc wszystko to czytelny jest reprezentowane przez liczbę 4. Wszystko to jest zapisywalny reprezentowany przez 2. A wszystko, co jest wykonywalny reprezentowane przez 1. Więc w tym sensie, możemy również reprezentowania tych numbers-- Cześć, witamy w inny sposób. Przepraszam. Przed wszystkim, mam zamiar Przepraszam w imieniu wszystkich wprowadzając klasę teraz. Zapomniałem cukierki dziś. Przykro mi, że jestem porażka w tym tygodniu Halloween. Sprowadzę podwójną ilość cukierki następnym razem, aby to nadrobić. Ale tak czy inaczej, przepraszam o tym, że faceci, przepraszam. Więc sposób, że możemy rzeczywiście wejście na naszej komendy argumentem jest to może zrobić uprawnienia grupy ukośnymi chmod, gdzie grupa jest tylko cokolwiek Grupa staramy się zmienić. I uprawnienia są co chcemy, aby dodać do niego. Tak na przykład, oraz dodaje uprawnienia, i odejmowania odbiera uprawnienia. I rodzaje grup mamy A dla wszystkich u użytkowników, g w grupach lub o innych. To trochę abstrakcyjne teraz. Ale pójdziemy na kilka przykładów wystarczy wykazać, to bardzo szybko. Wszyscy dobrze o tym zjeżdżalnia, więc mogę przejść? Chłodny. Tak na przykład, rwx. Zanim zaczniemy mówić o tym, co oznacza, Przede wszystkim co to rwx oznacza? Jeśli widzisz, że to pewne plik ma uprawnienia rwx, co to znaczy, osoba może być w stanie to zrobić? PUBLICZNOŚCI: odczytu, zapisu i wykonania. ANDI PENG: Tak, dokładnie. Możesz przeczytać zapisu i wykonania. Ponieważ wszystkie te trzy Znaki są obecne. Więc jeśli mamy iść do przodu i mówić na ten temat w odniesieniu do bitów rwx może być również przedstawiony jako 700. Bo jak widać w każdym rodzaj uprawnienia do katalogu plików, tam trzy triady. W tym przypadku, tylko pierwsza Triada ma coś tam. Tak więc w tym przypadku, R oznacza 4, W jest 2, a x wynosi 1. Jeśli dodać te, razem, to jest 7. I tak, jeśli konwersja to na binarny, to 700. 7, ponieważ jest pierwszym triad. 0, nic nie występuje w drugim triadę. A potem nic nie występuje w trzecia triada, więc to już inna 0. Tak więc w tym samym sensie, kilka triad może być reprezentowana tylko w bitach, po prostu binarnie, jak również. Tak więc 700 oznacza dokładnie to samo co rwx ------ w zakresie uprawnień. Każdy jasne, że? Chłodny. I tak chmod 111 dałoby które uprawnienia do pliku? Ci faceci kilka sekund do konwersji tego. Pamiętaj, pierwszy triady dla użytkownika. Drugi triady dla grupy. I trzecia triada jest dla wszystkich. I tak chmod 111 da które rodzaj uprawnień i do kogo? Poświęć kilka sekund o tym myśleć i wrócić. Tak. PUBLICZNOŚCI: Więc każdy może ją wykonać. ANDI PENG: Tak, dokładnie. PUBLICZNOŚCI: Ale nikt nie potrafi czytać ani pisać. ANDI PENG: I feel free do wyjaśnienia wszystkich w jaki sposób doszedł do tego wniosku. PUBLICZNOŚCI: Cóż, dla użytkownika, grupa, a świat, to wszystko jedno, który jest kod wykonywalny. ANDI PENG: Tak, dokładnie. Więc 1, w tym przypadku, wiemy tylko, że to jest kod wykonywalny. Bo czytanie jest 4. Pisanie to 2. I wykonywalny to 1. Tak więc wszystkie trzy triady jest to 1, które Oznacza to, że na świecie do użytkownika, i do grupy, są wykonywalny. Wszyscy dobrze się z tym? OK. I tak drugi sposób że możemy właściwie piszę to również jest to, może po prostu zrobić chmod plus x. środek całości lub wszystkich. Plus oznacza, nadając uprawnienia. I wtedy x oznacza wykonywalny. Więc nie dwa polecenia są właściwie identyczne. Więc jeśli chcesz uruchomić to w terminalu, zrobić chmod 111, nazwę Twój katalog lub plik. Albo możesz zrobić chmod a Plus X, nazwa pliku w katalogu. Samo, po prostu łatwiejszy sposób, być może, dla niektórych do reprezentowania lub zmiany uprawnienia do pliku. Każdy OK z chmod Zanim przejdziemy? Chłodny. Więc teraz mamy zamiar głowę w Kilka slajdów z bardzo abstrakcyjnych pojęć że jestem dość dużo będzie wiatr przez. I to jest zupełnie ok, jeśli nie wszystko rozumiem. Nawet teraz, nadal nie bardzo rozumiem kompletnie wszystko. Ale to bardziej się najwyższy poziom zrozumienia o tym, jak niektóre z tych rzeczy działa. Więc będziemy rozmawiać szybko o TCP / IP, która jest po prostu Transmission Control Protokół slash Internet Protocol. Przypomnijmy, od wykładu, David, on nauczy cię przykład gdzie by przejść notatki w kopercie do jak szczyt sali wykładowej? Więc w auli szkolnej prawo David wykazać zasadniczo jak TCP / IP pracuje w poczucie, że wszyscy go Jest to sposób na zapewnienie, że dane został dostarczony w poprzek serwera lub w Internecie. Tak więc na przykład koperty a komunikat użytkownikowi na koniec widział, że, och, ja potrzebowałem otrzyma cztery pakiety informacji. Ale faktycznie otrzymała tylko trzy. To znaczy, że musi być brakuje jednego. I nie została dostarczona. I tak TCP / IP w Internecie, za pośrednictwem komputera i serwera, robi dokładnie to samo. Wszystko robi to określić Ramy, w których utracone dane Pakiety mogą być złe i odbierane. Podobnie jak w internecie, gdy starasz aby uzyskać dostęp do plików w Internecie lub wysłać pliki znajomemu lub spojrzeć na sieci Przeglądarki, tysiące o miliardy bajtów informacji są przenoszone na milisekundę. I to bardzo, bardzo mylące. A jest to naprawdę trudne do naprawdę wiedzą, co zostało wysłane a co nie zostało wysłane. I tak, TCP / IP, tylko określa spójnych ram w którym swoją www Przeglądarka i serwer może rodzaj komunikowania się ze sobą, tylko upewnij się, że pakiety są wszystko tutaj i nic nie stracił i wszystkie dane, które są wymagane jest rzeczywiście prawidłowo wyświetlane. Każdy OK tylko, że bardzo krótki wysoki poziom zrozumienia? Chłodny. Tak więc mamy zamiar przenieść na mówić o HTTP, które jest po prostu Hypertext Transfer Protocol. HTTP, wszystko to jest to, co jakakolwiek strona lub plik jest dostępny na stronie internetowej, serwer zwraca błąd HTTP Kod stanu w odpowiedzi do wniosku upewniając się, że albo, och, ten wniosek przeszedł. I wszystko jest prawidłowo wyświetlane. Albo, oh, nie, 404. Coś poszło nie tak. Och, nie mogę wyświetlić. Wszystko to jest to, że niezależnie od próbujesz dostępu, używać jako użytkownik próbuje uzyskać dostęp, na internet-- prostu upewniając że trzeba albo powodzeniem obejrzano cokolwiek to było, czy nie z powodzeniem uzyskać cokolwiek to było. I tak statusu HTTP Kod po prostu dostarcza środek jest w stanie wiedzieć, czy czy nie było udane, czy nie. Tak na przykład, żądanie przykładów. Widać tutaj, że to zazwyczaj zazwyczaj cztery linie. Mamy HTTP GET 1.1, który jest po prostu Metoda żądania URL, protokół wersja, nazwa pola, i wartość pola. Tak więc nie ma potrzeby całkowitego zapamiętać cokolwiek tutaj. Po prostu rodzaj zapoznanie sobie z tym, jak one wyglądają. W tym przykładzie, żądanie Sposób Adres URL jest po prostu cokolwiek wniosek wysyłasz do serwera. Jak, hej, serwer, naprawdę chcę Dostęp pierdu, pierdu, pierdu, strona HTTP. Wersja protokołu jest tylko cokolwiek Wersja Twój komputer lub serwer jest używany do dostępu do informacji. Pole Nazwa jest strona lub Adres URL, że próbujesz uzyskać dostęp, w tym przypadku, www.apple.com. A wartość pola jest po prostu zazwyczaj nazwa, wartość. I może to być dowolny rodzaj połączenia liter lub cyfr lub cokolwiek innego. Tak więc typowy wniosek, więc co komputer faktycznie wysyła do serwera, który mówi, hej, wiesz, czego potrzebuję to wyświetlane, to jest rodzaj wniosku że faktycznie otrzymają. Przykładem reakcji na to, co Serwer wyśle ​​do ciebie byłoby niemal tak samo, z wyjątkiem kodu stanu u góry. Tak 200 2 0 0 jest zawsze kod status OK. Jak, OK, to wniosek przeszedł. Ty byłeś w stanie uzyskać dostęp wszystko poprawnie. Życie jest dobre. Życie jest w porządku. Wszystko jest zupełnie dobra. A więc to po prostu mówi przeglądarkę i Twój serwer, hej, wszystko jest dobrze. Mam wszystkie informacje potrzebne. Chłodny. Ale problem jest czasem problemy wymyślić kiedy have-- trwać Myślę Mówiłem o duplikaty. Musisz mniej dobrych odpowiedzi. Tak na przykład, 404 jest Page Not Found. Czasem mają Zakazane dostęp. Masz różne inne Kody stanu, że jestem pewien, że wszystko widział, gdy jesteś starając się zrobić badania w Internecie. A Twoja przeglądarka daje The, nie, nie może uzyskać dostępu. I jesteś jak, dobrze, bzdura. Więc po prostu bardzo dużo, nie niektóre całkiem wspólne kody stanu. Może zapoznania się z którymi te osoby są. Najśmieszniejsze, który Myślę, że kiedykolwiek słyszałem of-- jeśli zdarzy się wyszukać wszystkie z nich on-line, z jakiegoś powodu nie ma rzeczywiście prawdziwy kod stanu zwana 418 Jestem czajniczek. Google, gdzie Pochodzenie to było z. I najwyraźniej jeden aprilis Dzień parę lat temu, ktoś, że byłoby zabawne aby utworzyć nowy kod stanu nazwie 418 Jestem czajniczek. Legalnie, nazwa ta Kod nazywa Jestem czajniczek. Nie pamiętam, co strony trzeba przejść do rzeczywiście zrobić to zmienić. Ale jak widać, można rzeczywiście otrzymać kod statusu jestem czajniczek jakoś poprzez robienie czegoś. Więc nie setki, a setki kodów stanu. Niektóre z nich bardziej Poczucie niż inni. Ale dość dużo tylko zapoznanie się z najczęstszych. Żądana ciała podmiot jest krótkie i grube, widocznie. Więc czasami są bardziej Błędy przerażające niż jestem czajniczek. Ale to jest taki, który myślę, że Ci rodzaj nadzieję trafić. Ale nie sądzę, że tak. Wszyscy dobrze na stan tylko Kody, wnioski, procesy podejmowania pewna informacja jest dostarczana prawidłowo? Więc teraz jedziemy do przejścia się od zabawy w ramach sekcji dzisiaj, gdzie mówimy trochę o HTML. HTML, wszystko jest HyperText Markup Language. To jest po prostu średnia język używać do tworzenia wszystkich sieci stron w Internecie. Więc każda strona internetowa, co jest twoja ulubiona strona internetowa? Jaka jest twoja ulubiona strona internetowa? PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Słucham? PUBLICZNOŚCI: Tumblr. ANDI PENG: Tumblr. Więc Tumblr jest napisane w HTML. A więc będziemy rzeczywiście przejść i bawić się z niektórych z tych rzeczy później. Prawie wszystko ci trzeba się nauczyć, aby wiedzieć, napisać HTML można chyba tylko Google w internecie. HTML, to nie jest program jak C gdzie można tworzyć zmienne i robić fajne rzeczy z nim. To jest bardziej po prostu, no, to jak ja aby sprawy pojawiają się na mojej stronie internetowej. A ja po prostu będzie umieścić go w. I to będzie go tytułować. Więc HTML, w pewnym sensie, to jak język formatowania lub szablonu. Jest to o wiele łatwiejsze. Jest to o wiele łatwiejsze, aby dowiedzieć się, o wiele łatwiej napisać w niż typowy programowania język, bardzo łatwe, bardzo łatwy dostęp i przyjazny. Więc jesteśmy naprawdę dzieje się grać wokół, pisać własne strony dzisiaj. Ale zanim zaczniemy, ja po prostu chcę przejść kilka krótkich najlepszych praktyk. Ponieważ HTML takie jest łatwe język, a ponieważ nawet jeśli nie kilka rzeczy źle, czasami nie zauważyć, chcemy, aby upewnić się, że jesteśmy rzeczywiście stosując się do naszych najlepszych praktyk aby upewnić się, że rzeczy, które może być dzieje wokół, ale Nie zawsze będą nie idź w prawo upewnij się, że są one ograniczone do minimum. Więc dość dużo, upewnij się, Twoje zamykające wszystkie tagi jeśli piszesz w HTML. Jeśli otwarcie ciała, upewnij się, że jesteś zamykając go z ciała gdzieś. Chcesz, aby upewnić się, że strona sprawdza za pomocą co nazywa W3 Validator. Można tylko Google, że w Internecie, i tam jest link do niego. A potem chcesz oddzielne HTML, które jest język znaczników ze swojego stylu, który jest językiem CSS, że David pokazały, że jesteśmy również do gry nieco z wykładu. Chłodny. Więc kiedy tylko chcesz, aby uruchomić Kopiuj na urządzeniu CS50, mamy zamiar uruchomić Program o nazwie Apache, które jest po prostu wbudowany serwer WWW, że wszyscy w CS50 ma dostęp do. Nazywamy to apache50 tylko dlatego, że jak to nazwać wszystko 50 w CS50. Więc sposób, że po uruchomieniu sieci CS50 Serwer jest przez wpisanie na poleceniu Linia apache50 rozpocząć kropkę. A jeśli chcesz ją zakończyć w dowolnym czas, ty apache50 końca nie kropka. A ty po prostu wciskamy Enter. I powinna być pozycja się tu wkrótce. Tak. Więc jestem po prostu szybko przejść przykładem bardzo krótkiej stronie internetowej. I mamy zamiar spędzić jak 10, 15 minut gry wokół pisania własnych stron internetowych. OK. Więc tutaj w IDE-- Czy każdy może zobaczyć, że? Nie całkiem. Tutaj będę powiększać. Mam tylko ten krótki szablon tu z niczym faktycznie w nim. Jesteśmy po prostu się szybko napisać program HTML, w którym po prostu przywitaj się świata. Tak samo jak w C, teraz jesteśmy po prostu się to zrobić w HTML. Czy ktoś chce właściwie tylko spróbuj dając mi pierwszą rzeczą, którą będzie musiał umieścić w dokumencie HTML? Tak. PUBLICZNOŚCI: W nawiasie [niesłyszalne]. ANDI PENG: Tak. Więc coś, co jest bardzo charakterystyczne dla HTML że zazwyczaj tradycyjnie nie spotkać w innych polecenia języki programowania liniowe jest to, że rzeczywiście określić typ pliku że jest to będzie na szczycie naszego kodu. Więc w tym instance-- myślę to jest prawo polecenia, prawda? Tak. Na górze, po prostu chcesz to huk DOCTYPE html w nawiasie po prostu poinformować swojego komputera, hej, uważaj. Oraz dokument HTML nadchodzi. A potem, jak chcemy na rozpoczęcie nasz plik? Jeśli po prostu chcesz się przywitać, mają Strona internetowa, która mówi hello na świecie, jak pójdziemy na temat budowy tego? Właściwie, wróćmy do Google. A my w rzeczywistości może to zrobić. Tak. No to jedziemy. Więc HTML. Jak widać, moja przeglądarka jest rzeczywiście automatycznie stylizacji to dla mnie. Tak samo jak w C, kiedy stworzenie otwartej nawias klamrowy, automatycznie Twoja przeglądarka dodaje się w ścisłej nawias klamrowy. Na szczęście, nasz IDE kocha zrobić to za nas. Więc teraz możemy rodzaju typ początek znacznika i to będzie zawsze powiedzieć nam pamiętaj, aby wpisać koniec elementu. Myślę, że to musi być kapitalizowane. A potem chcemy dodać, zawsze, głowa, w którym jest tytuł. Chcemy tylko być może zadzwonić to cześć, a następnie ciało. I proszę. To jest rzeczywiście nasz dokument HTML. Więc sposób, że każdy dokument HTML Zawsze jest coś w stylu in-- samym z int main pustkę. Zawsze chce mieć HTML otwartą i bliską tag na górze i na dole kodu. Chcesz mieć głowę wewnątrz od który zawiera tytuł, po prostu cokolwiek zamierza wyświetlić kartę swojej sieci Strona, po czym korpus, wewnątrz którego będzie faktycznie wyświetlić zawartość o co chcesz zrobić. Więc jeśli chcesz faktycznie uruchomić tego, mam zamiar powiększyć powrotem. Możesz zacząć apache50 rozpocząć kropkę. Chłodny. A więc jak widać, teraz ten link nie pojawiło się. Mówi, witryna jest teraz dostępne w pewnym poniższy link. Tak więc wszystkie nasze IDE ma done-- nie IDE, sorry-- tak, nasz IDE zrobił jest stworzenie sieci Link na które wszystkich naszych stron internetowych mogą być dostępne na serwerze. Warto więc zapoznać się tutaj. Załóżmy, kliknij na to, przejdź do hello.html. I widać to bardzo prosta Strona internetowa dla Hello World. OK. Jesteśmy rzeczywiście będzie po prostu mają everyone-- Tak, o co chodzi? PUBLICZNOŚCI: Mam podstawowe pytanie. ANDI PENG: Tak. PUBLICZNOŚCI: Jak zapisać plik jako HTML? ANDI PENG: Tak. Więc gdybym miał stworzyć nowy plik, jeśli to zrobię nowy plik Untittle, jeśli to zrobię, section.html, boom, To wszystko, co musisz zrobić. PUBLICZNOŚCI: [niesłyszalne]? ANDI PENG: Nie PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Nie PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Tak. Dość dużo, rozszerzenie na plik, który jest wewnątrz IDE, które mówi komputerowi, że mówi przeglądarce, hej, uważaj. To będzie kod napisane w tym języku. Tak na przykład w programie Microsoft Słowo, co robią wszystkie dokumenty Worda kończy się, jakim rozszerzeniem? .doc lub .docx, prawda? Wszystko, co robi, jest Określa Twój system operacyjny, hej, masz dokument Word wymyślanie. Otworzyć go w programie Word. To samo z plikami PDF. Ona wie, oh, potrzebuję otworzyć ten plik z programu Adobe Reader lub Adobe Acrobat. I tak rozszerzenia obsługiwanie tak samo jak w komputerze. Jeśli określisz swoją stronę kodową być nazwany HTML, to wie, Och, masz kod HTML. Mam zamiar traktować go jako kod html. Więc to jest bardzo inteligentny w tym sensie. Więc każdy, weźmy jak 10 minut i po prostu tworzyć własne strony internetowe. Dodajmy w piękne rzeczy. Zapraszam do powiedzenia, co chcesz. Chcę tylko, aby upewnić się, że serwery każdego z nas są działa poprawnie zanim uwolni cię do zbior. Bo jeśli serwerach nie działają dla pset, że będzie naprawdę, naprawdę zły. Jestem po prostu będzie unosić się i zobaczyć, co wszyscy pracujemy. Jak leci? PUBLICZNOŚCI: Ja po prostu odwrócił się na moim komputerze. ANDI PENG: To jest OK. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Tylko IDE. Tak. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Jest OK. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: całkowicie w porządku. Czy każdy dostępu ich serwer OK internetowej? Czy apache50 działa OK? Myślę, że w niektórych inne sekcje, możemy miał problemy z nie ludzi jest w stanie uzyskać dostęp do serwera. Tak. Więc po prostu uruchomić apache50 Przestrzeń rozpocząć okres przestrzeni. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Tak. Dobry? PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Och, OK. Więc powinien mieć miejsca. Więc apache50-- PUBLICZNOŚCI: zrobiłem. ANDI PENG: --start miejsca. PUBLICZNOŚCI: Och, miejsca kropka. ANDI PENG: Tak, przestrzeń kropka. Proszę bardzo. Tak więc, jeśli masz strona HTML tworzone, to możesz po prostu przejść bezpośrednio do linku, że określa. I powinieneś być w stanie do niego dostęp. Każdy mógł dostęp do ich stron internetowych OK? PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Och, to jest OK. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Tak. Myślę, że rzeczywiście można otworzyć go w przeglądarce, przeglądarki i to nie tylko przeglądarka IDE. Tak, myślę, że jeśli skopiuj go i wklej. PUBLICZNOŚCI: A potem w jaki sposób go wyłączyć? [NIESŁYSZALNY] ANDI PENG: Tak, możesz zrobić apache50 zatrzymać bez okresu. Tak. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Bez okresu. Tak. No to jedziemy. Tak. Jesteśmy tworzenia własnych stron internetowych. PUBLICZNOŚCI: O, fajnie. ANDI PENG: Tak. PUBLICZNOŚCI: Mam pytanie. Więc apache 50-- ANDI PENG: 50, tak. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Co? To dziwne. Zobacz, że był rodzaj emisji co się działo wcześniej. OK. Zobacz mnie po sekcji. Bo my mamy pewne problemy z serwerem. I chcesz, aby upewnić się, że serwer jest uruchomiony przed rozpoczęciem pset. Ponieważ będziesz go potrzebować. Tak. Czy jest ktoś jeszcze, że nie było w stanie uzyskać ich serwer zacząć? Dla tych z Was, którzy chcą, aby dodać Dodatkowym styl do stron internetowych, faktycznie możemy zrobić co Dawid w wykładzie, jak również, co jest utworzyć dodatkowy styl blachy, która jest w CSS kropka, Kaskadowe Arkusz stylów i faktycznie po prostu dodaj go. Tak na przykład, właśnie stworzył prawie prawie dokładnie taki sam jeden Dawid w wykładzie. Można bardzo dużo po prostu zrobić ciało. Masz, co nazywane są znaczniki, w którym można stosować na dysk IDE niezależnie sekcję chcesz w swoim Rzeczywista na stronie HTML. Więc ciało stronie może zrobić tekstowy centrum align. A potem będę twórczy tag nazywa góry wewnątrz czego chcę te rzeczy stało, przypisać większy rozmiar piksela dla czcionki. Chcę waga czcionki być śmiały. I chcę kolor na być niebieski, po prostu arbitralne Wartości, że postanowiłem wybrać. Mogę stworzyć kolejny tag nazwie średniej. Rozmiar czcionki, sprawiają, że nieco mniejsze. A potem mogę utworzyć kolejny tag nazywa dole, gdzie chcę rozmiar czcionki być jeszcze mniejsze nadal. I tak dość dużo to tylko przykład arkuszy stylów kodu źródłowego lub źródłowych że bardzo łatwo tylko Google. Jeśli mówisz, oh, chcę moje czcionki być kursywą i ciemnozielone, można zapewne Google, i to będzie wam odpowiednie znaczniki lub identyfikatory stworzyć. I tak droga, że ​​faktycznie rodzaj mieć to w dokumencie HTML lub użyj to jest wszystko, co masz do zrobienia jest na czele dodać link do arkusza stylów. Więc można tylko link href równych bez względu na nazwę arkusza stylów jest. A następnie związek jest arkusz stylów. Więc w jakimkolwiek dokumencie HTML, tak długo, jak to ten arkusz CSS kropka, powinieneś być w stanie uzyskać dostęp do i mają właściwości tam. Tak na przykład, tutaj mam tylko utworzyć kolejną przykładową stronę internetową. Jest to zapraszamy do sekcji CS50 Wtorki od 2:00 do 3:30 ze mną. A potem dodałem piękny obraz, który mamy potencjalnie powinny być w stanie zobaczyć. Więc jeśli spojrzeć tutaj, jeśli pójdziesz do style.html, stworzyliśmy stronę internetową z kociąt. Ponieważ kotka są niesamowite. Więc dodając obraz jest po prostu img odnośnik SRC. Dość dużo, jeśli jest każdy rodzaj funkcji chcesz dodać do listy website-- więc powiedzmy, chcesz dodać menu lub pasek wyszukiwania lub jak image-- tylko Google, jak to zrobić. I po prostu rzuć w tym formacie. A może po prostu dość ci dużo po prostu dodaj go. To naprawdę bardzo proste. Tworzymy własny Strony internetowe już teraz. Jeśli chcesz-- PUBLICZNOŚCI: [niesłyszalne] ANDI PENG: Słucham? PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Och, div jest tylko podział powiedział mi, że, och, mam pewna część nazywa średnim, w którym jestem stosowania mój tag CSS, a następnie moja druga dywizja z dołu. To wszystko, to mówi. Ponieważ jest to miłe, aby utrzymać wszystko schludne, tak, więc program wie, jak dokładnie do uruchomienia. I że mogę skopiować wkleić do mojego rzeczywistego przeglądarki, jak również. Powinno być dobrze. Tak. Hura. Więc jeśli każdy chce po prostu próby tworzenia stron internetowych, weźmiemy jeszcze dwie do trzech minut. Chcę tylko, aby upewnić się, serwery każdego z nas są uruchomione i każdy ma pomysł, jak to zrobić. Jeśli chcecie, aby wykupić swoje komputery. Wciąż nie działa? PUBLICZNOŚCI: Jestem po prostu [niesłyszalne]. ANDI PENG: Może spróbuj aktualizować 50, jak również. Tak. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Tak. Więc sposób, aby zacząć nowy Serwer WWW na IDE jest tylko zrobić apache50 startu przestrzeni kosmicznej kropkę. Chciałem się tylko upewnić, serwery każdego z nas działają OK. PUBLICZNOŚCI: Na terminalu? ANDI PENG: Tak. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Apache. Właściwie myślę, że jesteś działa już coś. Tak, jesteś w rzeczywistości uruchomiony inny serwer. Tak, jesteś dobry. Tak długo, jak to działa, jesteś OK. PUBLICZNOŚCI: OK. ANDI PENG: Jest dwóch sposoby uruchamiania serwerów. Tak długo, jak jeden ze sposobów działa, to wszystko w porządku. Weźmiemy jeszcze minutę tylko rodzaj skończyć wykończenia z co Strona internetowa chłopaki chcieli zrobić. Czy wszyscy pracujący w drodze? Serwery każdego z nas są działa oprócz dla Ciebie? Będziemy tego dowiedzieć. I HTML jest dość prosta. Więc myślę, że wszyscy jesteśmy dobre. Tak. Wrócę. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: OK. PUBLICZNOŚCI: Więc to tylko zaczął ładować. ANDI PENG: Nie martw się. Więc HTML jest kod źródłowy, który będzie online po sekcji. Ponadto, David posiada całość Grono, jak również online. Wystarczy rodzaju spojrzenie na to, aby zobaczyć, jak strony HTML są pisane. Jest to dość łatwe. Wszystko, czego nie wiem, to dość dużo tylko Google i jesteś dobry. Chcę tylko, aby upewnić się, że serwery są uruchomione. PUBLICZNOŚCI: Czy to zrobić często? ANDI PENG: To nigdy nie zdarzyło mi się. Nie wiedziałem, że to może nawet hibernacji. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Myślę everyone-- Kopalnia nigdy nie hibernacji przed. I nie wiem dlaczego. To dziwne. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Czy twoje hibernacji? PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Tak. PUBLICZNOŚCI: Jest OK. Więc kiedy jest otwarty. ANDI PENG: OK. Zajmiemy się z jakimś serwerem Problemy po sekcji. Powinno być w porządku. Mimo, chcesz upewnić się, My je rozwiązać przed wyjazdem. Bo jeśli serwera nie działa, to jesteś nie będzie w stanie zrobić zbior, jak każda część pset. Więc chcesz się upewnić, że to działa. Chłodny. W porządku. Powiedzieć, kocięta na pożegnanie. Spędziłem dużo czasu na szukanie że obraz kotek założyć. Tak, i tak. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Słucham? PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Myślę, że to na stronie internetowej. Podobnie jak w specyfikacji? PUBLICZNOŚCI: [niesłyszalne]. Myślę, że to tylko spec on-line w tym tygodniu siedem. Myślę, że to się nazywa pset6, nawet choć jesteśmy na tydzień siedem, które jest computing nieco. PUBLICZNOŚCI: Ale to znaczy, jeśli Ciebie chcesz wyglądać at-- jeśli Ciebie chcą podciągnąć naszą wersję strona internetowa z naszej sever? Więc jak server.c jest pset, prawda? Jeśli chcesz spojrzeć na to, tak jak to się sprawdza? ANDI PENG: Och, tak, rzeczywiście zbior, wszystko robimy tutaj jest implementing-- tutaj, Pójdę nad tym chwilę. Więc dla wszystkich, że właśnie dostał do sekcji, jesteście w szczęście. Jest bardzo mało materiału faktycznie pokrywają dziś. Ja tylko zamiar spędzić następny 20 minut będzie nad pset pomoc. Ponieważ istnieje kilka przydatnych funkcje, które pomogą ci życie. I miejmy nadzieję, że będziemy się stąd w jak 20 minut. OK. Więc pset7 jest nie tak. Mimo, że jesteśmy na tydzień siedem, to faktycznie pset6. Będę zmienić. Wszystko robimy w pset6 jest stworzenie serwera WWW. To brzmi bardzo groźnie. A zwłaszcza dla tych, z was, którzy mają już spojrzał na kod dystrybucji, tam jest dużo kodu, dużo kodu. Ale jest zupełnie OK. Ponieważ Nitty Gritty część rzeczywiście tworzenia Serwer dokonuje się przez nas. Wszystko tak naprawdę zapytał do zrobienia w tej pset jest po prostu zrobić kilka manipulacji ciąg w pliku I / O. To rzeczywiście jak dość proste. Więc kiedy najpierw pobrać that-- którzy tu rzeczywiście już pobrane pset i pod lupę? W porządku. Tak. Nie ma jak 500 linii kodu że masz zamiar być jak, co się dzieje? I to jest całkowicie w porządku. Upewnij się, że oglądanie walk-through. Ponieważ Dawid and-- nie wiem. Nie sądzę, że to Zamyla, ten jeden. Ale myślę, że jakiś inny walk-through są dość pomocny w zakresie po prostu z powiadomieniem co się dzieje wewnątrz kodu. I to jest zupełnie OK. Ponieważ cztery funkcje, że jesteś zwrócił się do wdrożenia mają właściwie zera do czynienia z rzeczywistym serwerem. Wszystko, co musisz zrobić, to po prostu analizowania różnych ciągów, przeszukując strun, aby upewnić się, że wszystko robią co oni mają robić. Tak więc w tym zakresie, są kilka bardzo przydatnych funkcji, szczególnie dla łańcucha Manipulacja, że ​​wszyscy powinniśmy przejść nad tym myślałem, że być bardzo przydatne dla was Przed przystąpieniem do nauki w pset. I wszystkie one są zawarte w Twoim string.h bibliotece. Nie ma chyba bardziej użyteczne Funkcje Nie zawarte tutaj, bo nigdy ani z nich korzystać lub Być może po prostu nie wiedzą, że istnieje. Zapraszam do oka poprzez student.h. Ponieważ nie będzie dużo funkcji, które są bardzo przydatne. Więc sześciu że używam najbardziej w moim zbior, kiedy to robiłem w ubiegłym tygodniu były strtok, strchr, strrcher, strstr, strcasecmp i strcpy. I tak dwa ostatnie mogą wydawać dość znane większości z was. Sprawa Str porównać, to tak naprawdę jedynie porównać sznurki, by sprawdzić ich równości, w tym przypadku. I StrCpy tylko kopie jeden ciąg znaków do bufora. I tak te dwa powinny wydawać się bardzo znane was w tym momencie. Ponieważ używaliśmy ich dużo, zwłaszcza w ciągu ostatnich psets. Ale pierwsze cztery być może nie widziałem do tej pory. Ale mam zamiar po prostu chodzić po nich. Ponieważ zamierzamy uczynić swoje życie naprawdę, naprawdę łatwe nie for-- łatwe, ale o wiele łatwiej nadchodzącym pset. OK. Więc char * strtok, jest to funkcja Definicja ta funkcja zawierał w ciąg, h bibliotece. Jeśli podane są dane wejściowe char * Łańcuch, który jest po prostu ciągiem znaków, lub stałą char * deliminator, ogranicznik w skrócie, wszystko to robi łamie większy Łańcuch do serii, co nazywamy tokeny oddzielone pewnej wartości. Więc w pewnym sensie, jeśli miałbym dać Ci section.7.php, jest to ciąg znaków. Więc to byłoby gdybym miał przekazać w tym, jak mój str, mój char * str, jeśli deliminator była kropka, to wszystko Wyszukiwarka byłoby zrobić to za pośrednictwem łańcucha. I po raz pierwszy widzi kropki, to po prostu powrócić do wskaźnika ostatniego tokena znaleziono w ciągu przed tym. Więc byłoby to tutaj. I to właśnie daje mi 7.php. I jeśli miałbym nazwać funkcjonować jeszcze raz, to daje mi tylko .php. A więc wszystko, ta funkcja robi jest przełamanie większy ciąg na mniejsze łańcuchy, zależnie na tym, co szukasz. I tak, na przykład, w czynność wygląd się jeśli chcesz spojrzeć na to, co niektóre znaki dojść czy kropki wydarzy lub rozszerzenia się zdarzyć, funkcja ta będzie dość przydatne. Tak. Bez obaw. To wszystko być: Tak, o co chodzi? PUBLICZNOŚCI: Więc w pierwszej linii, jeśli używaliśmy ten przykład, co by wstawić w to? ANDI PENG: Tak. Można by tak nazwać strtok ogranicznik ciąg przecinek. A łańcuch jest równa section.7.php. I wtedy jesteś ogranicznik może być równa tylko punktowe. PUBLICZNOŚCI: OK. ANDI PENG: Tak. Tak po prostu. Wszystkie te funkcje są dość podobnie, gdy idziemy przez nich. Oni po prostu zrobić nieco inne rzeczy. Ale oni wszyscy będą Twoje życie o wiele łatwiejsze. Druga funkcja, ten jest jak super, super, super ważne, jest the-- pomieścić. Ups. Strchr wyszukuje pierwszy occurrence-- rzeczywiście, tak. Strchr to funkcja I na pewno po prostu poszedł. Więc ignorować tego, co powiedziałem dla pierwszej funkcji. To naprawdę nazywa strchr. Więc co tu się stało jest, jeśli dostaliście łańcuch znaków w char c, to po prostu dać Ci, co to było. Tak. Więc pomyśl o tym, jak ul, który jest ciągiem znaków, i chr jako char. Więc wszystko co próbujemy zrobić, to znaleźć dla których znak jest w ciągu znaków. I tak to wyszukuje pierwszy Występowanie charakteru c w łańcuchu str. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Tak. A jeśli nie znajdziesz to, to się zwróci NULL. Więc coś, co będzie bardzo użyteczne dla was w robienie pset jeśli, powiedzmy, czego szukasz dla Rozszerzenie jak .docx za słowo Dokument lub .pdf do dokumentu PDF, można rodzaj używać go szukać na to, co jest potem każdym razem, gdy pojawi się kropka, prawda? I tak bardzo dużo, jeśli Ciebie prowadzony, że dzięki funkcji jeśli zwraca NULL, to wiesz, że to nie znaleźliśmy go kropka, która oznacza, zdecydowanie nie jest ważne rozszerzenie pliku. Albo jeśli zwróci coś, to wiesz, to będzie powrót Cokolwiek w rzeczywistości po rozszerzeniu. Tak więc ci, którzy mieli zaczął rozglądać się za pośrednictwem odnośnika i analizować, ta funkcja będzie bardzo przydatna. Więc jesteśmy naprawdę dzieje wykazać za pomocą tego. Dlaczego nie wy Spróbuj napisać Funkcja bool zdanie char * s, które po prostu zwraca true jeśli s jest zdanie i false w przeciwnym wypadku. Więc podpowiedź, będziesz do prawdopodobnie używać strchr. Albo po prostu wyszukać w Łańcuch do niektórych znaków. I tak w jednym zdaniu, co odróżnia zdanie z nieprzestrzegania wyroku, co specyfika? PUBLICZNOŚCI: Przestrzeń. ANDI PENG: Przestrzeń, prawda? A więc to, co mamy prawdopodobnie będzie chce zrobić w tej funkcji tutaj? PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Będziemy chcą strchr Ciąg o wygląd przestrzeni. Bo jeśli coś, a potem wraca Wiemy, że to musi być wyrokiem. To oznacza, że ​​musimy mają miejsce w tym ciągu. Jeśli nie ma miejsca, to wiemy że, hej, domyślam się, że nie jest to ciąg znaków. To chyba tylko bardzo długie słowo. Więc dam ci faceci kilka minut, aby napisać tę funkcję. Tak. PUBLICZNOŚCI: Dostałeś to ciąg od użytkownika? ANDI PENG: Tak. Więc jest to tylko funkcja. Więc wyobraź sobie, wewnątrz funkcji main już have-- chodźmy tutaj. OK. Więc Napisałem ten program, gdzie Mam swoją główną funkcją gdzie Właśnie stworzyliśmy dwa sznurki. Pierwszy z nich to Cześć, mam na imię jest Andi-- wyraźnie zdanie. Mój drugi jest po prostu Andi, wyraźnie nie skazać. I tak biegnę, zarówno tych, sznurki dzięki tej funkcji. Chcę Was napisać zdanie zimno. A ja przechowywania tych wartości, a potem po prostu ich drukowania. Więc myślę, że użytkownik jest przejdzie w ciągu. A potem będziesz zasadniczo dowiedzieć się, czy jest to zdanie, czy nie i powrót odpowiednio prawda lub fałsz. Jeśli chcecie, aby dać Kciuk w górę lub główek, skinienie głowy, jest ktoś gotowy, aby rozpocząć tego, to byłoby dobre. Może jak 30 sekund? W porządku. Zobaczymy, czy można spróbować pisanie tej funkcji. Więc pseudo coding-- Idę do rodzaj przejść przez to teraz. Dość dużo, wiemy, że Funkcja, że ​​musimy użyć. Mamy zamiar wywołać tą funkcję na nasz łańcuch i poszukiwanie miejsca. Jeśli zwróci coś, to musimy wiem, że, oczywiście, jest to zdanie. Bo nie ma miejsca. Następnie jedziemy do powrotu prawda. Innego, będziemy return false. Czy ktoś chce dać mnie pierwsza linia kodu że jesteśmy naprawdę dzieje w użyciu to napisać? To rzeczywiście najtrudniejsze linii kodu, jak również. Tak. PUBLICZNOŚCI: Jeśli strtok S-- ANDI PENG: Tylko strchr. PUBLICZNOŚCI: [wstawienie GŁOSY] Przestrzeń nie jest równa null. ANDI PENG: Spoko. Dokładnie tak. Wszyscy rozumieją, że pierwszy wiersz? Mamy zamiar zadzwonić strstr, która jest funkcją, która wyszukuje łańcuch s do char przestrzeni. A jeśli go znajdzie, to będzie zwraca wskaźnik do miejsca, gdzie to jest. Jeśli nie go znaleźć, to się zwróci NULL. Więc jeśli zwróci coś innego niż NULL, to wiemy, że znalazł miejsce. Czy to ma sens? Chłodny. W porządku. Tak więc, jeśli wiemy, że znalazł przestrzeń, co chcemy zrobić? PUBLICZNOŚCI: Powrót prawda. ANDI PENG: Tak. Return true. A potem, ktoś chce zakończyć się funkcję dla mnie? Tak. Indziej, tak po prostu. I spróbować kompilacji tego. Tak. Tak jak chłopaki widać z Wyjścia, pamiętaj logicznych w C są zawsze wyrażane w formacie binarnym. 1, jest prawdą. 0 jest fałszywe. Gdybyśmy mieli do uruchomienia tego Funkcja na ciąg jeden, który Jest Cześć, nazywam się Andi-- Jasne jest, że sentence-- wynik wydrukowane na 1, co jest prawdą. Druga, która jest po prostu słowo, wynik drukowane na 0, co jest fałszywe. Każdy rodzaj jasne, w jaki sposób funkcja ta została napisana? Tak. PUBLICZNOŚCI: Możemy również zrobić, zamiast nie równa nie, równa jest równa 0, tak, to jest równe? ANDI PENG: Nie Ponieważ strchr jest funkcją. Mam zamiar wrócić do tego. Więc co to za typ zwracany naszego funkcji strchr? PUBLICZNOŚCI: Och, OK. Lub NULL. ANDI PENG: Tak. Jest to char *, który mówi mi, że cokolwiek funkcja ta będzie powrócić, to będzie wskaźnik. Albo wskaźnik będzie wskazując, gdzie znalazł go, czy to będzie powrót wskaźnik NULL. W każdej sytuacji, to będzie zwraca wskaźnik do czegoś. I tak, jeśli były do ​​zrównania to równa, równa, 0, masz zamiar dostać się błąd kompilacji. Bo to będzie zwracają wskaźnik. I masz zamiar spróbować porównać wskaźnik do liczby całkowitej. A komputer nie spodoba. Tak, dokładnie. Chłodny. Każdy dobry? A po drugie, mamy zamiar iść na funkcję o nazwie strstr. Nie martw się, jeśli te Funkcje mylą was. Oni myli mnie. Jako takie, moglibyście widziałem, wszystkie brzmią bardzo podobnie. Tylko kiedy jesteś zagubiony, podciągnąć string.h bibliotekę. A wy można sortować przez które, które. Więc strstr, wszystko, co robi, jest wyszukiwanie łańcuch na cały inny ciąg. Więc gdzie strchr zaledwie wyszukiwania dla pojedynczego znaku, strstr wyszukiwania dla całego łańcucha. Więc chciałem zajrzeć, nie wiem wiedzieć, Cześć, nazywam się Andi. I nazwa mojego najlepszego przyjaciela jest Andi. Gdybym chciał szukać w tym Zdanie dla całego słowa Andi, moja igły byłby co szukasz. A twój stogu siana jest cokolwiek szukasz tego w. Więc jeśli szukasz specyficzne słowo w zdaniu, że słowo to będzie twój igły. A potem sam zdanie będzie twoja stogu siana. I tak to właśnie przeszukuje pierwsze wystąpienie igły łańcucha w stogu siana smyczkowy. Zwraca wskaźnik do pierwszego zdarzenia. Z wyjątkiem, pamiętaj w tym przypadku, to jest to Pierwsze wystąpienie całego łańcucha że jesteś poszukiwania na, nie tylko postać. A więc jest niemal samo jak funkcja po prostu tak, tylko z nieco bardziej specyfika. Ponieważ szukasz więcej niż jeden znak. I użycie jest dokładnie to samo jak ten, który właśnie zrobił. Każdy OK z tym? OK. Ostatni mamy zamiar iść przez to strrchr, co nie jest mylić z strstr lub strchr. strrchr ma dodatkowy rw tam. Bądź ostrożny, gdy piszesz. Może znaleźć się w tym dodatkowy r lub nie w tym r, a następnie czynność nie został zadziała. I masz zamiar się mylić. Należy uważać, że jesteś pisowni wszystkie te funkcje w prawo. Więc strrchr jest dokładna samo, co strchr oprócz tego, że szuka nie pierwszy wystąpienie specyficznego charakteru, ale ostatnie wystąpienie. I tak, w tym sensie, to prawie dokładnie to samo. Ale zamiast się przekazania w ciągu znaków, masz zamiar być w ruchu do tyłu, w ciągu. Dokładnie to samo, jesteś po prostu wyszukiwanie w innej kolejności. I tak może to być super, bardzo przydatne dla odnośnika Funkcja pierwszy Funkcja na zbior. Udajmy, że musimy napisać Funkcja pustych rozszerzenia, w którym przekazać stała char * nazwa pliku, po prostu ciągiem znaków, nazwa pliku, że bierze w tym imię i wydruków na przedłużenie tego pliku. Tak na przykład, jeśli miało przechodzi w ciąg pset7.zip, to będzie drukować tylko wydłużenie, które zip. I to będzie pracować dla jakiekolwiek rozszerzenie, .docx dla Word lub pdf w formacie PDF pliku lub .html do pliku HTML. Dość dużo, napisać funkcja, która może to zrobić. Jestem rzeczywiście będzie przełączyć na IDE. To nie jest load-- tam idziemy. Więc zrobiłem tutaj jest stworzył char *, pierwszy ciąg, nazywa pset7.zip. Mam zamiar powiększyć. Został utworzony drugi ciąg nazywa finalpaper.docx. I napisz mi funkcję, gdy zwany będzie po prostu wydrukować rozszerzenia nazw plików. Może potrwać kilka minut do myślenia o tym, jak masz zamiar to zrobić. Nieco trudniejsze niż ostatni, ale zużycie jest prawie dokładnie taki sam. Tak. Więc napisać funkcję o nazwie rozszerzenie że jeśli dam ci nazwy pliku, gdybym daje pset7.zip-- I chcą, aby wydrukować tylko .zip. Jeśli dam chcesz finalpaper.docx, po prostu wydrukować .docx, po prostu rozszerzenie jakiegoś pliku. To właściwie tylko zajmuje dwie linijki kodu. Więc staram się zobaczyć, czy Ciebie Może zrobić to można w to. Właściwie, to tylko zajmuje jedną linię kodu. Ale dwie linie to chyba bardziej standardowe. Jakie funkcje są prawdopodobnie będzie chciał zadzwonić? PUBLICZNOŚCI: strrchr. ANDI PENG: strrchr, prawda. Ponieważ szukamy z prawej lewo. Nie dałem wam przykład w ten sposób, ale jeśli dałem wam przykład, jak www.apple.com i chciałem po prostu .com, byłby to przykład, gdzie chcesz zadzwonić ostatnią instancję okresu, a nie pierwszy, prawda? Jeśli były połączenia strchr, to nie dałem ci apple.com. Jeśli nazywa strrchr, to dałby ci .com. A więc należy być ostrożnym, na których ways-- w moim przykładzie, można prawdopodobnie może mieć po prostu napisał go za pomocą strchr, ponieważ jest tylko jedna kropka. Jednak w innych przypadkach to nie może być przypadek. I tak zawsze staram się projektować kod dobrze, więc that-- tak? PUBLICZNOŚCI: Więc w Przykład po prostu powiedział, Gdy to zrobisz strrchr że będzie daje .com lub po prostu przyjść? ANDI PENG: To daje .com. PUBLICZNOŚCI: OK. ANDI PENG: Tak. Wskazuje, gdzie znalazłem. Tak. 30 sekund może być? Tak. Wszyscy dobrze, a może nieco więcej czasu? Podniesienie rąk? Pokaż głów? Chłodny. Każdy, kto chce dać mi pierwszy linia kodu dla tego programu? PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Więc przede wszystkim, niech może podzielenie go. Więc jaki jest rodzaj powrotu strrchr? Wracajmy. strrchr, co jest zwracany typ? PUBLICZNOŚCI: Char * ANDI PENG: To char *, prawda? Co oznacza, że ​​jesteś prawdopodobnie będzie chce stworzyć kolejny char * do rodzaju w sklepie, kiedy to powrót do, prawda? Bo jeśli zadzwonisz strrchr funkcji, to się daje wskaźnik do wszędzie tam, gdzie okazało się, że ostatni okres, dobrze? Ale będziesz chciał zapisać, że gdzieś, prawda? I tak, w jaki sposób kod to w naszym programie? PUBLICZNOŚCI: Sprawiasz char * [niesłyszalne]. ANDI PENG: Tak. PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: strrchr. Tak. Och, brakowało R istnieje. PUBLICZNOŚCI: Nazwa pliku [niesłyszalne]. Co to jest? Och, to tylko s. ANDI PENG: Och, to jest po prostu s. Tak, przepraszam. Moja wina. Przykłady nie pasuje. PUBLICZNOŚCI: I wtedy kropka. ANDI PENG: Tak. Bądź ostrożny, gdy faceci are-- tutaj, pozwól mi przybliżyć. No to jedziemy. Bądź ostrożny, gdy faceci pisania, zwłaszcza gdy robisz tylko char. To naprawdę łatwe do przypadkowego tylko nie cudzysłowów, a nie pojedyncza. To nie zadziała. Twój kompilator będzie narzekać. A twoja funkcja jest po prostu nie będzie działać. A więc należy zachować ostrożność podczas robisz rzeczy ze znakami, że to pojedyncze cudzysłowy. I tak robi ten wiersz Kod sensu wszystkich? My tworzymy char * wskaźnik. Ponieważ zwrotów strrchr coś typu wskaźnika. I tak mamy zamiar zadzwonić strchr na s, który jest ciągiem, plik Imię, które przekazujemy w. I szukamy ostatni wystąpieniem okresu, który jest tylko pojedynczy cytat dot pojedynczego cudzysłowu. Tak. PUBLICZNOŚCI: Gdy używamy cudzysłowów i kiedy używamy apostrofów? ANDI PENG: Tak. Więc cudzysłowy są zawsze, gdy mają ciąg więcej niż tylko jeden. Więc jeśli robisz strstr, która jest tym, który cię wyszukać ciąg na ciąg, ciebie by przekazać ją w cudzysłów. Ale za każdym razem, to tylko pojedynczy znak, chcesz zrobić, apostrofów. To jest dobra rzecz, aby pamiętać. Więc teraz, że mamy wskaźnik, co mamy z nim zrobić? Pytam was, aby drukując go, prawda? Więc [niesłyszalne], chcesz daj mi wiersz kodu? PUBLICZNOŚCI: printf-- ANDI PENG: Tak. PUBLICZNOŚCI: --you potrzebujesz uchwyt miejsce. ANDI PENG: Tak. PUBLICZNOŚCI: Broszura uchwyt miejsce. Nie wiem, co miejsce Uchwyt jest tylko punkt do niego. OK. Pomińmy, że teraz to. PUBLICZNOŚCI: A potem comma-- ANDI PENG: Pointer, prawda? PUBLICZNOŚCI: Pointer, yup. ANDI PENG: Więc trochę podchwytliwe pytanie, ma do czynienia ze wskaźnikami i smyczki że mamy trochę rozmawialiśmy o już. Jaki rodzaj uchwytu miejsce jak my potrzeba wskaźnika do char *? PUBLICZNOŚCI: [niesłyszalne]. ANDI PENG: Tak. To prostsze niż myślicie, że jest. PUBLICZNOŚCI: String? ANDI PENG: To jest po prostu ciąg, dokładnie. Bo pamiętam, ciągi tak naprawdę nie istnieje. Char * jest dokładna samo jak łańcuch. I tak naprawdę to s jest co powinny zostać wykorzystane przez cały czas. OK. Zobaczmy, czy możemy spróbować uruchomić tego. Zróbmy rozszerzenie make. Chłodny. Wy zobaczyć, jak zdałem w psset7.zip i finalpaper.docx, i to po prostu wypisuje i .zip Docx? Ma sens? OK, więc myślę, że w twoim patrzeć Funkcja w pset jesteś będzie pytanie, czy Ciąg ma pewną zakończenie, trzeba dać pewien kod błędu. I tak to będzie straszne. Bo czy można wymyślić co rozszerzenie jest, można następnie porównać, że rozszerzenie, aby zobaczyć, czy pasuje do z pewnym rozszerzenia. A potem można wrócić komunikat o błędzie, prawda? Tak. PUBLICZNOŚCI: Więc nie robimy dodać 1 lub coś? Wskaźnik pójdzie do the-- ANDI PENG: Nie. PUBLICZNOŚCI: --point po nim. ANDI PENG: Tak. Wskazuje ona dokładnie których wystąpienie było. Tak na przykład tutaj, jesteśmy szukając okresie. Więc to będzie powrót wskaźnik do okresu. I wtedy to się dzieje, aby wydrukować wychodząc z tego okresu. Więc nie trzeba dodać 1. Mimo, że jest to całkowicie w porządku, aby, jeśli nie masz pewności, po prostu rodzaj od przetestować go samodzielnie. Zbuduj program przykładowy. Przetestuj to sam i zobaczyć, gdzie to jest drukowanie. To nie jest też zły sposób to zrobić. Chłodny. I to jest dość dużo wszystko Miałem dla was dzisiaj. Zrobiliśmy dużo pset rzeczy dzisiaj. Tak więc w razie wątpliwości, jak Powiedziałem, zawsze patrzeć string.h biblioteka dla tego pset. Nie będzie wiele Funkcja tam, które mogą być użyteczne. Niektóre z nich mogą być użyteczne. I naprawdę nie wiem. Wade przez niego, nie cała masa z nich. strstr, strchr, strrchr są super, super pomocny, jak również z strcpys i strcasecmps że mamy już używany. To jest po prostu dużo bawić z łańcuchy, ustalenia, czy są one równe, coraz rzeczy z ciągów i jest w stanie prawidłowo otwierać pliki. Jest wiele plików I / O. pset naprawdę nie jest tak źle. Masz zamiar wziąć spojrzeć na to, pobierz go, i zobaczyć całą masę kodu. Nie martw się, kod, właściwie napisać nie jest źle. Jeśli ktoś ma problemy z ich Serwer, przyjdź do mnie po sekcji. Przepraszam jeszcze raz za nie przynosząc cukierki Halloween. Nie wiem, co się ze mną dzieje. Ale mamy podwójne cukierki następnym razem. I powodzenia w pset w tym tygodniu. Tak.