ANDI PENG: Jsme skoro přes všechny psets. Ve skutečnosti, jsme přes většinu z nejtěžších psets. Takže jsme vlastně jen jít na druhu vánku přes příštích pár týdnů. Chystáme se začít mluvit o našem Konečné projekty, události přichází V příštích několika týdnech. A život bude hračka. Takže není moc dnes. Doufejme, že bude skutečně vánek prostřednictvím programu pro dnešek, a pak odsud s nějakým času nazbyt. Také chci se omluvit pro nedostatek cukroví dnes. Nevím proč. Ale v týdnu vést Halloween, bych zapomněl cukroví. Takže jsem vlastně jen obrovská zklamáním pro vás právě teď. Protože jsem doslova pamatuji cukroví pro každou třídu, ale Halloween. Ale příští týden, já uvedu zdvojnásobit množství cukroví vynahradit to, že vše za vás. Bude to skvělé. Tak jsem mít pár oznámení pokud jde o nějaké plánování. Mám nějaké problémy plánování. Pak jsme se chystáte přejít na mluvit o tom, co se nazývá chmod. Budeme mluvit o tom, Rychle TCP / IP protokolu HTTP. A pak budeme kódovat naše vlastní webové stránky pomocí HTML a CSS. A pak budu skutečně opustí možná stejně jako 20 minut mluvit o pset6. Vzhledem k tomu, pset6 je vlastně hodně věci, které jsme již viděli dříve, ale chtěl jsem se osvěžit některé z těchto pojmů stejně jako naučit pár nových funkcí. Bezva. Takže v první řadě, Vítejte zpět z přestávky. Doufám, že jste zlom byl příjemný. Mohl jsi to udělat pro přestávku? Diváků: Šel do New Yorku. ANDI PENG: Šel jsi do New Yorku? Myslím si, že polovina naší školy šel do New Yorku. Vše je v pořádku. Strávil jsem většinu svého přestávky sedavý v posteli Netflixing. A byl to dobrý čas. Ale my jsme teď zpátky, zpátky v sezení, zpět do swingu věcí. Máme pset řádně tento pátek v poledne. Myslím, že jste již zvedl svou kvíz, jo? Takže někdo jiný, kdo má neměl své kvízy, prosím, přijít a dostat své kvízy ode mne na konci úseku. Nebo sledovat mě na akademické půdě. Budu si to se mnou někam. Naše poslední projekt pre-návrh také. Takže pro ty z nás, kteří nikdy neabsolvoval tato třída dříve, vyvrcholení na CS50 je velmi vyvrcholila velký projekt, který studenti navrhují. A pre-návrh, jen obecnou představu z toho, co jeden by mohl chtít udělat pro jejich Projekt, že myšlenka je kvůli pondělí příští pondělí v poledne. Tak docela hodně, myslím, že bude David mluvit víc o tom v přednášce když má již ne. A je tu solidní stránka na našich webových stránkách vysvětluje, všechny požadavky projektu. Ale v podstatě, pick jakékoliv téma, které jste zajímal po celý čas zde u CS, ať už je to hraní her nebo designu nebo videa nebo tak něco. A můžete opravdu druh nyní použít některé z lekcí že jsme se naučili tady v CS50-- hi, welcome-- do značné míry vedení konečný projekt dle vašeho výběru. Vše, co je kvůli pondělí jen stručný reklama prostřednictvím e-mailu pro mě, rychlý věta, jako, hej, Andi, Jsem opravdu zájem o projektování hra, která dělá to pro iOS. Bezva. Jen mi nechat svou krátkosti Nápady pro vaše závěrečných projektů. A budeme mluvit přes zda nebo ne že je ve skutečnosti dobrý nápad, nebo ne, pokud je to možné, nápad, nebo ne. Ale jen pre-návrh je splatná příští pondělí. pset6, naše milá web-- to je špatné. Pset7? pset6? To je pset6, že jo? pset6, náš webový server, je splatná Pátek v poledne se na konci dne. Úřední hodiny pokračovat normálně od pondělí do čtvrtka 8:00 do 11:00 v tomto týdnu. Myslím si, že pro Commons další tři noci. Bezva. Předtím, než jsme měli do materiálu, má někdo máte nějaké dotazy, vtipy, příběhy? Co děláte pro podzimní dovolenou? Diváků: Co mám dělat? ANDI PENG: Již je to už dávno ve skutečnosti. Christabel šel do New Yorku. Zůstal jsem tady a Netflixed. Publikum: Jo jsem tady byl. ANDI PENG: Oh, OK. Diváků: Nevzpomínám si co konkrétně. ANDI PENG: To je v pořádku. Diváků: Netflixing pravděpodobně. ANDI PENG: Netflixing. Jo, je to dobrý čas. DOBŘE. Dobře. Jakékoliv dotazy před skáčeme do materiálu? Také, budeme se snažit rychlost přes úsek dnes, není příliš mnoho na pokrytí. A doufejme, že budeme mít tady je trochu brzy. Omlouvám se za to, že bonbóny, také. Jsem na hřišti zejména během Halloween. Dobře. Bezva. Takže budeme začít mluvit o příkazového řádku argument, nazvaný chmod. chmod, vše, co je to jen systém Unix volání vedena z příkazového řádku změnit oprávnění souboru. Tak například, máme všichni setkali stránku jako je to asi někdy v náš životnost bytí internet Uživatel, kde má náš webový server nám dal chybu Forbidden. Nemáte oprávnění k přístupu, yadda, bla, bla, na tomto serveru. Vše, co opravdu znamená je to, že oprávnění , které byly připojeny k jakékoliv Stránka, kterou se snažíte zobrazit nebyly otevřeny pro vás. Tak docela hodně, chmod je způsob, ve kterém ty oprávnění systému můžeme modifikovat dát každému, uživatel, skupina, nebo svět, nebo jakékoliv Kombinace uvedených přístupových na určité soubory, adresáře, něco opravdu, nějaký druh systému, na operační systém. Takže pokud někdo z kluků má počítače, pokud máte pocit, stejně jako následující spolu se mnou dnes, zcela klidně stačí napsat věci v. Pokud ne, stačí vyrazit. Takže budu vlastně táhnout up mého terminálu právě teď. Tak je příkaz ke spuštění chmod, nebo alespoň jen na seznam oprávnění vaše adresář souborů, je jen ls-l. Jak můžete vidět, parta věci vyskočí z nichž většina je pro nás důležité na boční tady levou. Vy jste vidět spoustu RS, WS, 1 /. To jo. Ti, kteří jsou v podstatě jen všechna oprávnění souborové vysvětlit, co některé adresáře a soubory v počítači již. Takže pojďme zpět k napájení bod zde. Takže kromě názvy souborů jak vy můžete vidět na pravé straně, hledáme vidět v podstatě jen sloupec na levé straně. Takže kromě získání názvy souborů, my může vidět oprávnění souborů, jejich Vlastník skupiny, název skupiny, datum že byl soubor naposledy upravený, et cetera. Můžete vidět spoustu věcí s využitím chmod. Takže způsob, jakým čteme chmod, je, že První písmeno jsme docela hodně ignorovat pokud jde o oprávnění čtení. První písmeno nám právě to, co říká, typ systému jsme přístup. d, v tomto případě, je složku nebo adresář. Takže víme, že v současné době moje pracoviště Sekce sedmi byl adresář. A pak vidíte tři trojice, v podstatě jen tři sady tří postav. A vy můžete myslet na každého jako trochu. Takže stačí tři sady tři bity, devět bitů celkem. Můžete s nimi zacházet do skupin po třech. Takže první trojice je vždy vaše uživatelská oprávnění. Vaše druhá skupina tří je vždy svá oprávnění skupiny. A vaše třetí sada tří je vždy jako svět, jsou všude oprávnění. Takže myslím, že snadné otázka se zeptat, je to, co je Rozdíl mezi uživatelem a skupinou. Hlavní rozdíl mezi uživatelem a skupinou je, že uživatel je právě vy osobně přístup k co to je právě teď. Skupina může být, pokud máte více Uživatelé na jednom počítači, například. Všechny z nich může být považována za skupinu. A pak se svět je právě svět, všichni. Takže můžeme vidět později, jak můžeme upravit ty do různých oprávnění. Tak docela hodně, my jsme bude se stále zaměřují na straně vlevo, kde pro adresář CS50 vidíme drwx, kde r prostě znamená, že je čitelný. W prostě znamená, že je to zapisovat. A pak prostě x znamená, že je spustitelný. Člověk by si to druh z nedává smysl. To by mělo být e. Ale x vlastně druh pracuje o něco lépe, protože si to pamatuji lépe. Takže tyto tři typy věcí, může dělat, můžete buď číst soubor, můžete mít oprávnění k napsat soubor, nebo můžete mít povolení spustit soubor. A tak tak, že jsme vlastně představují ty, v bitech je číslo 4, 2 a 1. Takže vše, co je čitelný je reprezentována počtem 4. Cokoli, co je zapisovatelný je reprezentován 2. A vše, co je spustitelný jak je znázorněno o 1. Takže v tomto smyslu, můžeme také reprezentovat tyto numbers-- ahoj, vítejte, jiným způsobem. Litovat. Předtím, než všichni, budu Omlouvám se za všechny zadáním třídu teď. Zapomněl jsem dnes cukroví. Je mi líto, že jsem selhání Tento týden Halloween. Přivedu dvojnásobné množství cukroví příště, aby se na to. Ale tak jako tak, je mi líto o tom, že kluci, sorry. Takže způsob, jak můžeme skutečně vstup na našem příkazu argument je, že jsme může dělat chmod skupina lomítko oprávnění, kde skupina je prostě cokoliv skupina se snažíme změnit. A oprávnění jsou co chceme, aby k němu přidám. Tak například, navíc dodává oprávnění, a odečíst odvádí oprávnění. A druhy skupiny máme A pro všechny, pro uživatele, u, g pro skupiny, nebo o pro ostatní. Je to trochu abstraktní právě teď. Ale půjdeme přes pár příkladů stačí k prokázání tohoto opravdu rychle. Všichni dobře na to skluzavka, takže můžu jít dál? Bezva. Tak například, rwx. Předtím, než budeme mluvit o tom, co to znamená, především co rwx znamená? Pokud zjistíte, že tato určitá Soubor má oprávnění rwx, co to znamenat, že osoba by mohla být schopni to udělat? Publikum: Čtení, zápis a spouštění. ANDI PENG: Jo, přesně tak. Můžete si přečíst zápis a spouštění. Vzhledem k tomu, všechny tři těch jsou přítomny znaky. Takže když jsme se do toho pusťte a diskuse o tom, pokud jde o bitů, rwx může být také reprezentován jako 700. Vzhledem k tomu, jak můžete vidět v některém druh povolení adresáře souboru, tam jsou tři trojice. V tomto případě, pouze první triáda má něco tam. Takže v tomto případě je r je 4, w je 2, a x je 1. Přidáte-li ty dohromady, je to 7. A tak, pokud budete konvertovat to binární, to je 700. Vzhledem k tomu, 7 je první trojice. 0, není nic přítomno v druhém triády. A pak je tu nic přítomna v třetí trojice, takže to je další 0. Takže ve stejném smyslu, banda trojice mohou být reprezentovány jen v bitech, jen v binárním stejně. Takže 700 znamená přesně to samé, jako rwx ------, pokud jde o oprávnění. Všichni jasné, že? Bezva. A tak chmod 111 by dalo která oprávnění k souboru? Dejte si kluci pár sekund převést toto. Pamatujte si, že první triáda je pro uživatele. Druhý triáda je pro skupinu. A třetí trojice je pro každého. A tak chmod 111, které by dalo typ oprávnění a pro koho? Trvat několik sekund o tom přemýšlet a vrátit se. To jo. Diváků: Takže každý může spustit jej. ANDI PENG: Jo, přesně tak. Diváků: Ale nikdo nemůže číst nebo psát. ANDI PENG: A klidně vysvětlit všem Jak jste přišel k tomuto závěru. Publikum: No, pro uživatele, skupiny, a svět, to je vše 1, což je kód pro spustitelný soubor. ANDI PENG: Jo, přesně tak. Takže 1, v tomto případě, všichni víme, že je že, že je spustitelný kód. Vzhledem k tomu, čtení je 4. Psaní je 2. A spustitelný soubor je 1. Tak se všechny tři trojice jsou 1, které Znamená to, že na celém světě, k uživateli, a do skupiny, které jsou všechny spustitelné. Všichni dobře s tím? DOBŘE. A tak se druhý způsob že můžeme vlastně napsat i to je vám mohl jen dělat chmod plus x. má jednak všechny nebo všechny. Plus znamená, že dává oprávnění. A pak x znamená spustitelný. Takže tam dva příkazy jsou ve skutečnosti stejné. Takže pokud chcete spustit to ve vašem terminálu, děláte chmod 111, název adresář nebo soubor. Nebo si můžete udělat chmod A plus x, jméno vašeho adresáře souboru. Totéž, jen jednodušší způsob, Možná, pro některé reprezentovat nebo změna oprávnění k souborům. Každý, kdo v pořádku s chmod než jsme dál? Bezva. Takže teď budeme hlavicí do Několik snímků z velmi abstraktních pojmů že jsem docela hodně bude vánek skrz. A je to naprosto v pořádku, pokud vás Nerozumím všechno. Dokonce i nyní, stále dělám opravdu pochopit všechno úplně. Ale je to víc, jak se dostat nejvyšší úroveň porozumění o tom, jak některé z těchto věcí fungovat. Takže budeme mluvit Rychle o TCP / IP, což je jen Control Transmission Protokol lomítko Protokol sítě Internet. Připomeňme z přednášky, David, se mu naučí vás příklad, kde ji předali poznámky v obálce až rád horní část přednáškového sálu? Takže na Právnické fakultě hlediště David prokázal v zásadě jak TCP / IP pracuje v pocit, že ho všichni je je prostředkem k zajištění toho, aby údaje bylo dodáno přes serveru nebo na internetu. Tak v příkladu obálky a zpráva, uživatel na konci Bylo vidět, že, oh, jsem potřeboval dostávají čtyři pakety informací. Ale já jsem vlastně jen dostal tři. To znamená, že musí být chybí jeden. A jeden nebyla doručena. A tak TCP / IP na internetu, prostřednictvím vašeho počítače a serverem, dělá přesně to samé. Vše, co to udělá, je specifikovat rámec, v němž ztracenou údaje pakety mohou být zlé a obdržel. Stejně jako na internetu, když se snažíte přístup k souborům na internetu nebo posílat soubory se svým přítelem nebo podívat se na webu prohlížeče, tisíce a tisíce miliard a miliard bajtů informací jsou přenášeny na milisekundu. A je to opravdu, opravdu matoucí. A je to opravdu těžké ve skutečnosti vědět, co se byla odeslána a co ne byla odeslána. A tak TCP / IP jen specifikuje soudržné rámec ve kterém váš web Prohlížeč a server může druh komunikovat mezi sebou, jen ujistěte se, že pakety jsou všichni tady a nic je ztracené a veškeré údaje, které jste si vyžádali je ve skutečnosti zobrazení správně. Každý, kdo na tlačítko OK jen, že velmi stručný vysoké úrovni pochopit? Bezva. Takže budeme pohybovat do mluvit o HTTP, což je jen Hypertext Transfer Protocol. HTTP, vše, co je, je bez ohledu na jakákoli stránka nebo soubor je přístupný na vašich webových stránkách, server vrátí HTTP stavový kód v odpovědi na žádost ujistěte se, že buď, ach, tento požadavek prošel. A všechno je nezobrazuje správně. Nebo, oh, ne, 404. Něco se pokazilo. Oh, nemohu zobrazit. Vše, co to je, že bez ohledu na se snažíte získat přístup, použít jako uživatel se pokouší o přístup, Na internet-- jen ujistit že jste buď úspěšně přístupné bez ohledu na to, nebo ne úspěšně přistupovat co to bylo. A tak se stavem HTTP Kód právě vám poskytne prostředkem budou moci zjistit, zda ohledu na to, byla úspěšná nebo ne. Tak například, požadavek příklad. Můžete vidět, že je to tady obvykle obvykle čtyři linky. Máme GET protokolu HTTP 1.1, která je jen Žádost metoda URL, protokol verze, název pole, a hodnota pole. Takže není třeba zcela zapamatovat něco tady. Jen trochu obeznámit sami s tím, jak tyto vypadají. V tomto příkladu, požadavek na způsob URL je prostě cokoliv požadavek budete posílat na server. Stejně jako, hej, server, opravdu chci Přístup yadda, bla, bla, strana HTTP. Verze protokolu je prostě cokoliv verze váš host, nebo server používá pro přístup k informacím. Název pole je na internetových stránkách, nebo URL, že se snažíte získat přístup, V tomto případě, www.apple.com. A hodnota pole jen typicky jméno, hodnota. A to může být nějaký druh kombinace písmen nebo číslic nebo cokoliv jiného. Tak typický požadavek, takže co váš počítač vlastně odešle na server, který říká, hej, víte, co já potřebuji to zobrazeno, To je ten druh žádosti že skutečně dostávají. Příklad reakce, co Server by poslal zpět k vám by bylo skoro totéž, s výjimkou stavovým kódem nahoře. Takže 200, 2 0 0 je vždy stavový kód OK. Stejně jako, OK, tento požadavek prošel. Vy jste schopni získat přístup všechno správně. Život je krásný. Život je v pořádku. Vše je zcela dobrá. A tak to jen řekne prohlížeč a server, hej, všechno je dobré. Mám všechny informace, které potřebuji. Bezva. Ale problém je někdy problémy přijít když si myslím, že poslední have-- Mluvil jsem o duplikáty. Máte méně dobré odpovědi. Tak například, 404 je Stránka nebyla nalezena. Ty mají někdy zakázaným vstupem. Máte různé další stavové kódy, které jsem jistý, že jste všichni viděli, když jste se snaží dělat výzkum na internetu. A váš prohlížeč vám dává závěrky, ne, nemůže získat přístup. A ty jsi jako, no, blbost. Takže jen docela hodně, je tu některé docela běžné stavové kódy. Možná, že se seznámili s těmi, které z nich jsou. Nejzábavnější ten, který Myslím, že jsem kdy slyšel of-- pokud jste náhodou vyhledat všechny z nich on-line, z nějakého důvodu je tu vlastně skutečný stavový kód volal 418 Jsem konvice. I googled kde původ toto bylo od. A zřejmě jeden Apríl " Den pár desítkami let, před někoho napadlo, že by bylo k popukání vytvořit nový stavový kód s názvem 418 Jsem konvice. Legitimně, jméno tohoto kód se nazývá Jsem konvice. Zapomněl jsem, co strana máte přejít na skutečně udělat toto zobrazení. Ale zdá se, že můžete skutečně získat stavový kód z nejsem teapot jaksi přes něco dělat. Takže tam stovky a stovky stavových kódů. Někteří z nich se více smysl než ostatní. Ale do značné míry jen seznámit Nechte se nejčastějších z nich. Požadovaný tělo entity je krátký a tlustý, zřejmě. Takže někdy existuje více děsivé chyby, než jsem konvice. Ale to je ten, který Myslím, že tak nějak doufám, že hit. Ale já si nemyslím, že budete. Každý dobrý jen na stavu kódy, žádosti, procesy, výroba jisti, že informace jsou řádně doručen? Takže teď budeme přechodu do na zábavu části oddílu dnes, kde jsme trochu pohovořit o HTML. HTML, vše, co je HyperText Markup Language. Je to jen standardní jazyk použít k vytvoření celý web stránek na internetu. Takže jakékoliv webové stránky, co je vaše oblíbené webové stránky? Jaký je váš oblíbený webové stránky? Diváků: [Neslyšitelné]. ANDI PENG: Sorry? Diváků: Tumblr. ANDI PENG: Tumblr. Takže Tumblr je napsán v HTML. A tak budeme skutečně projít a pohrajte si s některými z těchto věcí později. Skoro všechno vám je třeba se naučit, vědět, psát HTML můžete pravděpodobně Google právě na internetu. HTML, není to program, jako C kde si můžete vytvořit proměnné a dělat skvělých věcí s ním. Je to spíš jen, oh, to je to, jak jsem se chtějí věci, se objeví na mých webových stránkách. A já jsem prostě jít, aby ji v. A že to bude to styl. Takže HTML, v jistém smyslu, je to jen jako formátování či šablony jazyk. Je to mnohem jednodušší. Je to mnohem snadnější se učit, mnohem snazší psát než váš typický programování jazyk, velmi jednoduché, velmi uživatelsky přístupné a přátelské. Takže jsme vlastně bude hrát kolem, psát své vlastní stránky dnes. Ale dříve, než začneme, chci jen projít několik stručných osvědčených postupů. Vzhledem k tomu, HTML je tak snadná jazyk a protože i Pokud si pár věcí špatně, to někdy nemusí všimnout, Chceme se ujistit, že jsme vlastně dodržování našich osvědčených postupů aby se ujistil, že věci, které by mohlo být děje kolem, ale nejsou vždycky nedaří ujistěte se, že jsou minimalizovány. Tak docela hodně, ujistěte se, vaše závěrečná všechny své tagy když píšete v HTML. Pokud jste otevření tělo, ujistěte se, že jste zavření s tělem někde. Chcete, aby se ujistil, že vaše webové stránky ověřuje pomocí to, co se nazývá W3 Validator. Stačí si jen Google, že on-line, a tam je odkaz na něj. A pak chcete samostatná HTML, který je váš značkovací jazyk ze svého stylu, což je jazyk, CSS, že David prokázaly, že jsme také bude hrát trochu s přednáškou. Bezva. Takže kdykoliv chcete spustit HTML na CS50 spotřebiče budeme spustit program s názvem apache, to vše je jen vestavěný web server, že všichni v CS50 má přístup k. Říkáme to apache50 jen proto, že chtěl volat vše 50 v CS50. Takže tak, že spustíte CS50 web server je od psaní na povel linka apache50 začít tečku. A pokud budete chtít ukončit na kterékoli čas, vy apache50 skončit bez tečky. A stačí stisknout Enter. A to by mělo být míří tady brzy. Jo. Takže jsem jen tak rychle přejít přes příklad opravdu krátké webové stránky. A budeme trávit stejně jako 10, 15 minut hraní kolem píšeme vlastní webové stránky. DOBŘE. Tak tady v IDE-- si každý může vidět, že? Opravdu ne. Tady, budu přiblížit. Právě jsem dostal tento krátký šablonu tu s ničím vlastně v něm. Jsme jen tak rychle psát program HTML, ve které jsme právě pozdravit svět. Takže to samé jako v C, teď jsme prostě dělat to v HTML. Má někdo chtěl vlastně jen zkuste mi dal první věc, kterou bude muset dát do dokumentu HTML? To jo. Diváků: Závorky, tlačítko [] neslyšitelné. ANDI PENG: Jo. Takže něco, co je velmi jedinečné HTML, které jsme obvykle tradičně nesetkáváme v jiném příkazu programovací jazyky linkové je, že jsme skutečně specifikovat typ souboru že to bude v horní části našeho kódu. Takže v tomto instance-- si myslím, to je správná příkaz, že jo? Jo. Na vrcholu, si jen chcete, aby zahrnovala bang DOCTYPE html v závorce jen říci svůj počítač, hele, pozor. A HTML dokument se blíží. A pak, jak chceme odstartovat náš soubor? Pokud chceme jen pozdravit, mají webová stránka, která říká, ahoj světu, jak jsme se jít o budování tohle? Ve skutečnosti, pojďme se obrátit na Google. A skutečně můžeme udělat. Jo. Tam jedeme. Tak HTML. Jak vidíte, můj prohlížeč je ve skutečnosti automaticky styling to pro mě. Totéž jako v C, kdy vás vytvořit otevřený kudrnaté rovnátka, Váš prohlížeč automaticky dodává v úzkém složená závorka. Naštěstí, náš IDE miluje to pro nás stejně. Takže teď můžeme trochu psát začátek tagu, a to, že nás vždycky k pamatovat na typ konec značky. Myslím, že to musí být velkými písmeny. A pak jsme se chcete přidat, a to vždy, hlava, v němž je název. Chceme jen možná volat Hello, a poté tělo. A je to. To je ve skutečnosti náš dokument HTML. Takže tak, že jakýkoliv HTML dokument je vždy stylizovaný in-- téže věci s int main prázdnoty. Vždycky chcete mít HTML otevřený a zavřít tag v horní a dolní části kódu. Chcete-li mít hlavu vnitřek který obsahuje název, jen bez ohledu se bude zobrazovat na kartě vašeho webu strana, a poté tělo uvnitř které bude skutečně zobrazení obsahu na co chcete dělat. Takže pokud byste chtěli skutečně spustit to, budu se přiblížit zpět. Můžete si skutečně začít apache50 začít tečku. Bezva. A tak jak vidíte, teď odkaz má vyskočila. To říká, že vaše stránka je nyní k dispozici na nějaký odkaz níže. Takže všechny naše IDE má done-- Není IDE, sorry-- jo, naše IDE udělal, je vytvořit web odkaz, na kterém všichni našich webových stránek je k dispozici na serveru. Takže pojďme se podívat sem. Pojďme klikněte na to, jděte na hello.html. A vidíte, velmi jednoduchá webová stránka pro Hello World. DOBŘE. Jsme vlastně bude jen mají everyone-- jo, co se děje? Diváků: Mám základní otázku. ANDI PENG: Jo. Diváků: Jak ušetřit váš soubor jako HTML? ANDI PENG: Jo. Takže pokud bych měl vytvořit nový soubor, když to udělám nový soubor, Untittle, když to udělám, section.html, boom, to je vše, co mám dělat. Diváků: [Neslyšitelné]? ANDI PENG: Ne. Diváků: [Neslyšitelné]. ANDI PENG: Ne. Diváků: [Neslyšitelné]. ANDI PENG: Jo. Docela hodně, rozšíření na je soubor, který je uvnitř vašeho IDE, která říká počítači, že říká, že prohlížeč, hele, pozor. To bude kód psaný v tomto jazyce. Tak například, v Microsoft Word, co dělat všechny dokumenty aplikace Word končit, jakou rozšíření? .doc nebo .docx, že jo? Vše, co dělá, je specifikuje Váš operační systém, hej, máte dokument aplikace Word blíží nahoru. Otevřete jej s aplikací Word. Totéž s PDF. To ví, oh, potřebuju otevřít tento soubor Adobe Reader nebo Adobe Acrobat. A tak rozšíření ovládat Stejně jako ve vašem počítači. Pokud zadáte svou znakovou stránku být jmenován HTML, pak to ví, oh, máte HTML kód. Chystám se brát to jako html kód. Takže je to super inteligentní v tomto smyslu. Takže všichni, pojďme se jako 10 minut a jen vytvořit své vlastní webové stránky. Pojďme přidat krásné věci. Nebojte se říct, co chcete. Já jen chci, aby se ujistil, že Servery každého z nás jsou správně spuštěn předtím, než jsme vás osvobodí do pset. Protože pokud vašich serverech neběží pro pset, to bude opravdu, ale opravdu špatné. Já jsem prostě jít plavat kolem a vidět to, co všichni se pracuje. Jak to jde? Diváků: Jen jsem se obrátil na mém počítači. ANDI PENG: To je v pořádku. Diváků: [Neslyšitelné]. ANDI PENG: Jen vaše IDE. To jo. Diváků: [Neslyšitelné]. ANDI PENG: To je v pořádku. Diváků: [Neslyšitelné]. ANDI PENG: úplně v pohodě. Je každý přístup Jejich webový server v pořádku? Je apache50 běží v pořádku? Myslím si, že v některých ostatní oddíly, my Měl problémy s lidmi ne budou moci získat přístup k serveru. To jo. Takže si stačí spustit apache50 space začít prostor období. Diváků: [Neslyšitelné]. ANDI PENG: Jo. Dobrý? Diváků: [Neslyšitelné]. ANDI PENG: Oh, OK. Takže jste měl mít prostor. Tak apache50-- Diváků: jsem to udělal. ANDI PENG: --start prostor. Publikum: Oh, mezera tečka. ANDI PENG: Jo, mezera tečka. Tady máš. Takže pokud máte HTML stránka vytvořena, pak stačí jít přímo na odkaz, který stanoví. A vy byste měli být schopni se k nim dostat. Každý, kdo byl schopen přístup k jejich webové stránky v pořádku? Diváků: [Neslyšitelné]. ANDI PENG: Oh, to je v pořádku. Diváků: [Neslyšitelné]. ANDI PENG: Jo. Myslím si, že můžete skutečně otevřít že v rámci vašeho prohlížeče, prohlížeče a ne jen vaše IDE prohlížeč. Jo, myslím, že když se zkopírovat a vložit. Publikum: A pak jak jsme se to vypnout? [NESLYŠITELNÝ] ANDI PENG: Jo, vy apache50 přestat s žádným obdobím. Jo. Diváků: [Neslyšitelné]. ANDI PENG: Bez období. To jo. Tam jedeme. Jo. Jsme vytvářet své vlastní webové stránky. Publikum: Oh, v pohodě. ANDI PENG: Jo. Diváků: Mám otázku. Tak apache 50-- ANDI PENG: 50, jo. Diváků: [Neslyšitelné]. ANDI PENG: Co? To je divné. Vidíš, to bylo docela emise , co se děje předtím. DOBŘE. Můžete mi po části. Protože jsme s některými Problémy se serverem. A chcete, aby se jisti, že váš server spuštěn před spuštěním pset. Vzhledem k tomu budete potřebovat. To jo. Je tu někdo jiný, který nebyl schopný dostat své server začít? Pro ty z vás, kteří chtějí přidat další styl na vaše webové stránky, můžeme vlastně dělat to, co Učinil David v přednášce také, která je vytvořit další styl list, který je dot CSS, kaskádové Stylů a vlastně jen přidat do. Tak například, právě jsem vytvořil skoro téměř přesně stejný, David učinil v přednášce. Můžete si do značné míry jen to tělo. Máte to, co se nazývá tagy, ve kterých můžete použít na disk IDE bez ohledu na část Chcete v rámci svých Skutečná do HTML stránky. Takže Tělo stránky, vy může dělat zarovnání textu centrum. A pak budu kreativní tag s názvem top uvnitř z nichž chci tyto věci se stalo, přiřaďte větší velikost pixelu pro písmo. Chci, hmotnost písmo být odvážní. A chci barvu na být modrá, prostě libovolné hodnoty, které jsem se rozhodl zvolit. Mohu vytvořit další značku s názvem střední. Velikost písma, aby bylo o něco menší. A pak jsem si vytvořit další značku volal dole, kde chci velikost písma být ještě menší stále. A tak do značné míry je to jen příklad zdrojového kódu nebo zdroj stylů že je to velmi snadné jen Google. Pokud řeknete, oh, chci, aby moje písmo já má být kurzívou a tmavě zelená, můžete pravděpodobně Google, a pak vám řekne, příslušné značky nebo ID vytvořit. A tak způsob, který by ve skutečnosti druh má to v dokumentu HTML nebo použít to je vše, co musíte udělat, zde stojí v čele přidat odkaz na stylů. Takže si můžete jen odkaz href rovná bez ohledu na název vašeho stylů je. A pak vztah je stylů. Takže v jakémkoli HTML dokumentu, pokud jak zahrnout tento dot CSS list, byste měli být schopni získat přístup a mají vlastnosti tam. Takže například, tady jsem jen vytvořit jinou Příklad webovou stránku. To je vítán sekce CS50 Úterý od 2:00 do 3:30 se mnou. A pak jsem přidal krásný obraz, který potenciálně bychom měli být schopni vidět. Takže pokud jste se podívat zde, když jdete do style.html, jsme vytvořili webové stránky s koťata. Vzhledem k tomu, kotě jsou úžasné. Takže přidávání je obraz jen img src odkaz. Docela hodně, jestli je nějaký druh funkce Chcete-li přidat do svého website-- takže řekněme, Chcete-li přidat menu nebo panel vyhledávání nebo podobných image-- jen Google, jak to udělat. A právě plop v tomto formátu. A můžete jen hezká Kolik jen přidat ji do. Je to opravdu, opravdu snadné. Vytváříme vlastní webové stránky právě teď. Jestli chceš-- Diváků: [Neslyšitelné] ANDI PENG: Sorry? Diváků: [Neslyšitelné]. ANDI PENG: Ach, ta div je jen rozdělení říkal mi, že, oh, mám určitá část s názvem prostřední, ve které jsem použití můj CSS tag, a pak Moje další dělení u dna. To je vše, co vám říká. Vzhledem k tomu, to je hezké mít věci, elegantní v pořadí, takže program ví, jak přesně spustit. A myslím, že můžete kopírovat vložit tento do mé skutečné prohlížeči stejně. To by mělo být v pořádku. To jo. Yay. Takže pokud každý chce jen zkuste vytvořit webové stránky, vezmeme další dvě až tři minuty. Já jen chci, aby se ujistil, Servery každého z nás běží a každý má Představa o tom, jak to udělat. Pokud vy chcete uzavřít své počítače. Stále nefunguje? Diváků: Jsem [neslyšitelných]. ANDI PENG: Možná, že se snaží aktualizovat 50 stejně. To jo. Diváků: [Neslyšitelné]. ANDI PENG: Jo. Takže tak, že začnete nový webový server na IDE je jen dělat apache50 prostor startu prostor tečku. Jen jsem chtěl, aby se ujistil, Servery každého z nás běží v pořádku. Publikum: Tady, na terminálu? ANDI PENG: Jo. Diváků: [Neslyšitelné]. ANDI PENG: Apache. Vlastně si myslím, že jsi běží již něco. Jo, ty jsi vlastně spuštěn jiný server. Jo, jsi dobrý. Tak dlouho, jak to je pracovat, jsi v pořádku. Diváků: OK. ANDI PENG: Jsou dva způsoby, jak spustit servery. Tak, pokud jeden ze způsobů pracuje, je to v pořádku. Vezmeme další minutu jen aby druh dokončit dotvářejí na cokoliv webové stránky, kterou kluci chtěl dělat. Je každý pracovní mimochodem? Servery Každý, kdo jsou běží kromě pro vaše? Vyřešíme to ven. A HTML je poměrně jednoduchý. Takže myslím, že jsme všichni dobře. To jo. Vrátím se. Diváků: [Neslyšitelné]. ANDI PENG: OK. Diváků: Takže je to jen začal naložit. ANDI PENG: Žádné obavy. Takže HTML, tam je zdrojový kód, který bude on-line po části. Také, David má celek banda on-line stejně. Jen trochu pohledem přes to, aby vidět, jak jsou HTML stránky napsané. Je to poměrně snadné. Něco, co nevím, vy dost Kolik jen Google a máte dobré. Já jen chci, aby se ujistil, že servery jsou spuštěny. Diváků: Má to to často? ANDI PENG: Je to nikdy se mi nestalo. Nevěděl jsem, že by to mohlo dokonce přechod do režimu spánku. Diváků: [Neslyšitelné]. ANDI PENG: Myslím, že everyone-- Důl nikdy hibernated předtím. A já nevím proč. Je to divný. Diváků: [Neslyšitelné]. ANDI PENG: Je tvoje hibernující? Diváků: [Neslyšitelné]. ANDI PENG: Jo. Diváků: To je v pořádku. Takže jakmile je to otevřené. ANDI PENG: OK. Budeme jednat s nějakým serverem problémy po řezu. Ty by měly být v pořádku. I když se chcete ujistit, že si je vyřešen před odjezdem. Vzhledem k tomu, zda je váš server neběží, pak jste nebude moci provádět pset, stejně jako jakékoli části pset. Takže chcete, aby se ujistil, že to funguje. Bezva. Dobře. Rozloučit koťata. Strávil jsem dlouhou dobu hledá že kotě obrázek, aby na. Tak, tak jako tak. Diváků: [Neslyšitelné]. ANDI PENG: Sorry? Diváků: [Neslyšitelné]. ANDI PENG: Myslím, že je to na internetových stránkách. Stejně jako spec? Diváků: [Neslyšitelné]. Myslím, že je jen spec online v týdnu sedm. Myslím, že se to jmenuje pset6, dokonce i když jsme na týden sedm, což je trochu výpočetní. Diváků: Ale já jsem na mysli, pokud vás chtějí vypadat at-- pokud vás chtějí vytáhnout naše verze webová stránka z naší sever? Tak jako server.c je pset, že jo? Pokud se chcete podívat na to, jako jak to odhlásí? ANDI PENG: Oh, takže vlastně pset, všechno děláme Zde je implementing-- zde, Půjdu přes tento krátce. Takže pro každého, to je jen dostal sekci, vy jste na štěstí. Existuje jen velmi málo materiálu skutečně pokrýt dnes. Já jsem prostě jít strávit další 20 minut jdou nad pset pomoc. Vzhledem k tomu, že je nějaký užitečný funkce, které vám pomohou váš život. A doufejme, že budeme venku odtud dovnitř jako 20 minut. DOBŘE. Takže pset7 je špatné. I když jsme na týden sedm, je to vlastně pset6. Budu změnit. Vše, co děláme v pset6 vytváří webový server. To zní mimořádně děsivé. A zvláště pro ty, kteří z vás, kteří již Podíval se na distribučním kód, je tu spousta kódu, hodně kódu. Ale je naprosto v pořádku. Vzhledem k tomu, natvrdlý kostrbatý část skutečně vytvářet server se provádí námi. Vše, co jste opravdu požádáni dělat v této pset je prostě udělat nějaké manipulaci s řetězci V souboru I / O. Je to vlastně jako poměrně jednoduché. Takže když si nejprve stáhnout that-- kteří zde skutečně již stáhli pset a vzít se podívat? Dobře. To jo. Je tu jako 500 řádků kódu že budete vypadat, co se děje? A to je úplně v pohodě. Ujistěte se, že se budete dívat na Walk-průchodek. Protože David a-- já nevím. Nemyslím si, že je to Zamyla, tento jeden. Ale myslím, že některé další walk-průchodky jsou poměrně užitečné, pokud jde o Jen vám vědět, co se děje uvnitř vašeho kódu. A je to naprosto v pořádku. Vzhledem k tomu, že čtyři funkce, které jste nablízku vyzváno k realizaci mít skutečně nula dělat se skutečným serverem. Jediné, co musíte udělat, je jen analýze různých řetězců, prohledávání řetězců, aby se ujistil, co děláte co mají dělat. Takže v tomto smyslu, tam jsou některé velmi, velmi užitečné funkce, zejména pro řetězec manipulace, že bychom měli všichni projít, že jsem si myslel, že bych být velmi užitečné pro vás naučit se před pokusem o pset. A všichni jsou obsaženy přímo ve Vašem string.h knihovny. Tam je pravděpodobně mnohem užitečnější funkce, jsem zde nejsou zahrnuty, Buď proto, že jsem nikdy použít, nebo Možná jsem prostě nevěděl, že existují. Neváhejte, aby se podíval přes student.h. Vzhledem k tomu, že to bude hodně funkcí, které jsou velmi užitečné. Takže šest který používám nejvíc v mém pset když jsem dělal to minulý týden byli strtok, strchr, strrcher, strstr, strcasecmp, a strcpy. A tak poslední dva se může zdát docela známý většina z vás. Str případ porovnat, vše, co dělá, je porovnat struny pro kontrolu za rovnost, včetně případ. A strcpy jen kopie jeden řetězec do vyrovnávací paměti. A tak ti dva by se zdají být velmi známý vámi v tomto bodě. Protože jsme použili je hodně, zejména v posledních psets. Ale první čtyři možná jste ho ještě neviděli až do teď. Ale budu jen chodit přes ně. Vzhledem k tomu, že jdou, aby se vaše životy Opravdu, rychlé for-- není snadné, ale mnohem jednodušší pro tento nadcházející pset. DOBŘE. Takže char * strtok, to je funkce definice pro tuto funkci obsahovala v rámci řetězce, h knihovny. Pokud dostanou vstup char * řetězec, který je jen řetězec, nebo konstantní char * deliminator, DELIM pro krátké, všechno to dělá láme větší řetězec do série, čemu říkáme tokeny oddělené určitou hodnotu. Takže v tom smyslu, kdybych měl dát jste section.7.php, to je řetězec. Tak to by bylo, kdybych měl projít v tomto jako můj str tak, že můj char * str, když je moje deliminator byla tečka, to vše by se udělat, je vyhledávání prostřednictvím řetězec. A poprvé vidí tečku, by to prostě vrátí k ukazateli do posledního nalezeného tokenu v řetězci před tímto. Takže bylo by to tady. A to by jen dej mi 7.php. A pokud bych měl zavolat fungovaly ještě jednou, to by mi jen .php. A tak všechno je tato funkce dělá se poškodí větší řetězec na menší řetězců v závislosti Na to, co hledáte. A tak se například v váš vzhled up funkce pokud se chcete podívat na to, co určité znaky přijít o nebo pokud body stane, nebo rozšíření se stalo, Tato funkce by být docela užitečné. To jo. Bez obav. To vše be-- jo, co se děje? Diváků: Takže v první linii, Pokud bychom použili tento příklad, co by vložíme do toho? ANDI PENG: Jo. Ty by prostě zavolat strtok řetězec čárka DELIM. A řetězec je roven section.7.php. A pak jste DELIM by mohlo být rovno jen dot. Diváků: OK. ANDI PENG: Jo. Přesně takhle. Všechny tyto funkce jsou poměrně podobné, když jsme jít přes ně. Prostě dělat trochu jiné věci. Ale oni všichni budeme aby váš život mnohem jednodušší. Druhá funkce, tohle je jako super, super, super důležité, Je the-- zvednout. Chybička se vloudila. Strchr vyhledá první occurrence-- Vlastně jo. Strchr je funkce, která Rozhodně jsem prostě šel. Tak ignorovat to, co jsem řekl, pro první funkci. Je to vlastně volal strchr. Takže to, co by se stalo, tady je, pokud jste dostali řetězec v char c, to by jen dát vy, co to bylo. To jo. Takže myslíte, že na to, jak str, který je řetězec, a chr as char. Takže vše, co se snažíte udělat, je vyhledávání pro, kde char je v řetězci. A tak se hledá první výskyt znaku c v řetězci str. Diváků: [Neslyšitelné]. ANDI PENG: Jo. A pak, pokud to nenašel je to, že to bude vrátit NULL. Takže něco, co bude velmi užitečné pro vás v dělá pset pokud, řekněme, jste hledali Rozšíření jako DOCX pro Word dokument nebo .pdf pro dokument PDF, můžete druh použít, aby to vypadalo pro to, co je později pokaždé, když vidíte tečku, že jo? A tak do značné míry, pokud jste běh, že pomocí funkce, pokud to vrátí NULL, pak víte, že to nebyl to najít tečka, což znamená, že tento zjevně není platný příponu souboru. Nebo pokud se vrátí něco, pak víte, to bude cokoli, co se vrátit vlastně po rozšíření. Takže ti z vás, kteří měli začali hledat pomocí vyhledávání a analyzovat, tato funkce je Bude mimořádně užitečné. Takže jsme vlastně bude demonstrovat pomocí této. Proč si kluci zkuste zapsáním Funkce bool věta char * s, že prostě vrací true, pokud s je věty a false jinak. Takže náznak, budete se pravděpodobně používat strchr. Nebo vám stačí hledat v Řetězec pro určitý znak. A tak ve větě, to, co odděluje větu z non-věty, jaké konkrétní postava? Diváků: Vesmírná. ANDI PENG: Vesmírná, že jo? A tak co budeme pravděpodobně bude chcete udělat v této funkci tady? Diváků: [Neslyšitelné]. ANDI PENG: Budeme chtít strchr řetězec pro vzhled prostoru. Vzhledem k tomu, pokud se vrátí něco, pak víme, že to musí být věta. To znamená, že musíme mít prostor v tomto řetězci. Pokud není žádný prostor, pak víme, že, hej, myslím, že to není řetězec. Je to asi jen opravdu dlouhé slovo. Takže já dám vám kluci pár minut k napsání této funkce. To jo. Diváků: Dostali jste Tento řetězec od uživatele? ANDI PENG: Jo. Tak to je jen funkce. Tak si představte uvnitř hlavní funkci jste již have-- jdeme sem. DOBŘE. Tak jsem napsal tento program, v němž Mám můj hlavní funkce, kde Právě jsem vytvořil dva řetězce. První z nich je Ahoj, jmenuji je Andi-- jasně, věta. Můj druhý z nich je právě Andi, jasně ne odsoudit. A tak Běžím oba tyto struny přes tuto funkci. Chci vy psát studené větu. A já ukládání těchto hodnot, a pak jen jejich tisku. Takže myslím, že uživatel je projet v řetězci. A pak budete v podstatě zjistit, jestli je to trest, nebo ne a vrátí true nebo false podle toho. Pokud se chcete vy, čímž se získá palce nahoru nebo heads up, head přikývnout, Je někdo je připraven ke spuštění to, že by bylo dobré. Možná, stejně jako dalších 30 vteřin? Dobře. Uvidíme, jestli si můžete vyzkoušet psaní této funkci. Takže pseudo coding-- Já jsem prostě jít druh projít tohoto práva nyní. Docela hodně, my víme, že Funkce, které musíme použít. Budeme volat tuto funkci na náš řetězec a hledání prostoru. Pokud se vrátí něco, pak musíme vědí, že zřejmé, že toto je věta. Protože tam je prostor. Pak budeme vracet true. Else, budeme return false. Má někdo chtěl dát me první řádek kódu že jsme vlastně bude použít k napsání tohoto? Je to vlastně nejtěžší řádek kódu také. To jo. Diváků: Pokud strtok S- ANDI PENG: Just strchr. Diváků: [vložením VOICES] prostor není rovno null. ANDI PENG: cool. Přesně tak. Všichni pochopili, že první řádek? Budeme volat strstr, což je funkce, která vyhledává řetězec s pro char prostoru. A pokud najde, bude to vrátit na místo, kde to je. Pokud se nenajde to, že to bude vrátit NULL. Takže pokud se vrátí něco jiného než NULL, pak víme, že to našel mezeru. Dává to smysl? Bezva. Dobře. Takže pokud víme, že je nalezen space, co chceme dělat? Diváků: Návrat pravda. ANDI PENG: Jo. Návrat pravda. A pak někdo bude chtít dokončit funkci pro mě? To jo. Else, stejně jako to. A kompilace to. Jo. Tak jako vy můžete vidět z výstupy, pamatujte booleans v C jsou vždy vyjádřeny v binární. 1 je pravda. 0 je false. Pokud bychom měli spustit tento Funkce na provázku jedné, což Hi, jmenuji se Andi-- Je zřejmé, že je výsledek sentence-- vytisknout na hodnotu 1, který přesně. Druhý, který je jen slovo, výsledek vytisknout na 0, což je falešný. Každý jasný druh o tom, jak Tato funkce byla napsána? To jo. Diváků: Můžeme také udělat, místo toho, se nerovná ne, rovná se rovná 0, tak, že je rovna? ANDI PENG: Ne. Vzhledem k tomu, strchr je funkce. Chystám se zpět na tuto. Takže co je návratový typ naší strchr funkce? Publikum: Oh, OK. Nebo NULL. ANDI PENG: Jo. Je to char *, který mi říká, že bez ohledu na Tato funkce se vracet, to bude ukazatel. Buď ukazatel bude ukázal na místo, kde je to našel, nebo to bude návrat ukazatel na NULL. V obou okolností, bude to vrátit ukazatel na něco. A tak pokud jste se srovnávat to rovná, rovná, 0, budete mít chybu kompilace. Vzhledem k tomu, že to bude vracet ukazatel. A vy budete snažit porovnat ukazatel na celé číslo. A počítač není bude líbit. Jo, přesně tak. Bezva. Všichni dobře? A za druhé, budeme jít přes funkci nazvanou strstr. Žádné starosti, pokud tyto funkce jsou matoucí vás. Oni mě matoucí. Jako takový, vy mohl vidět, všichni zní skoro stejné. Prostě vždy, když jsi zmatený, vytáhnout string.h knihovnu. A vy můžete seřadit jehož prostřednictvím je který. Takže strstr, všechno, co dělá, je vyhledávání řetězec pro zcela jiné řetězce. Takže tam, kde strchr jen vyhledávání pro jeden znak, strstr hledá celý řetězec. Tak jsem se chtěl podívat, vůbec se mi nelíbí Víte, Ahoj, jmenuji se Andi. A název Můj nejlepší přítel je také Andi. Kdybych chtěl hledat v této trest pro celou slovo Andi, můj jehla by bylo co hledáte. A vaše kupka sena je cokoliv hledáte pro to v. Takže pokud hledáte specifické slovo uvnitř věty, to slovo bude vaše jehly. A pak věta sama o sobě bude váš kupce sena. A tak to prostě prohledá první výskyt z řetězce jehly v řetězci kupce sena. Vrací ukazatel na první výskyt. Až na to, nezapomeňte v tomto případě, je to První výskyt celého řetězce že hledáte pro, ne jen charakter. A tak to je téměř totéž jako funkce jsme právě udělal, jen s trochu víc specifičnost. Vzhledem k tomu, hledáte více než jen jeden znak. A využití je přesně stejný jako ten, který jsme právě udělali. Každý, kdo v pořádku s tím? DOBŘE. Poslední člověk budeme jít přes je strrchr, což není zaměňována s strstr nebo strchr. strrchr má navíc v r tam. Buďte opatrní, když píšete. Můžete najít sami, včetně extra r nebo ne včetně r, a pak se vaše funkce se dostal nebude fungovat. A ty budeš zmatený. Dávejte pozor, aby jste pravopisu Všechny tyto funkce přímo. Takže strrchr je přesný totéž jako strchr kromě vyhledá není první výskyt zvláštní povaze, ale spíše poslední výskyt. A tak, v tom smyslu, je to téměř přesně stejný. Ale místo toho, pohybující se předat v řetězci, budete se stěhovat vzad v řetězci. Přesně to samé, jste jen vyhledávání v jiném pořadí. A tak by to mohlo být super, Super užitečné pro vyhledávání funkce, první Funkce na pset. Pojďme předstírat, že jsme potřebovali napsat Funkce void prodloužení, ve kterém jsme předat název * souboru konstantní char, jen řetězec, název souboru, , který bere v tomto jménu a vytiskne out rozšíření tohoto souboru. Tak například, pokud by byla k I projít v řetězci pset7.zip, že to bude jen vytisknout rozšíření, což je .zip. A to bude fungovat pro nějaký druh rozšíření, .docx pro Word nebo pdf pro PDF soubor nebo HTML na soubor HTML. Docela hodně, napsat funkce, která může udělat. Já jsem vlastně bude přejít na IDE. Není load-- tam pojedeme. Takže všechno, co jsem udělal, je tady vytvořil char *, první řetězec, volal pset7.zip. Chystám se přiblížit. Vytvořil jsem druhý řetězec volal finalpaper.docx. A napsat mi funkci, která při volal bude jen vytisknout přípony názvů souborů. Možná trvat pár minut přemýšlet o tom, jak budete postupovat. Mírně náročnější než ten poslední, but využití je téměř přesně to samé. To jo. Takže napsat funkci nazvanou příponu že, kdybych vám název souboru, kdybych, aby vám pset7.zip-- I abys vytisknout jen .zip. Pokud dám vám líbí finalpaper.docx, jen vytisknout DOCX, jen rozšíření jakéhokoli souboru. To vlastně jen trvá dva řádky kódu. A tak se snaží zjistit, jestli vás může snad to udělat v tom. Vlastně je to jen trvá jeden řádek kódu. Ale dva řádky je pravděpodobně více standardem. Jaké funkce jsme pravděpodobně bude chtít zavolat? Diváků: strrchr. ANDI PENG: strrchr, vpravo. Vzhledem k tomu, co hledáme z pravé vlevo. Nedal jsem vám kluci Příkladem takhle, ale když jsem dal vám příklad, jako www.apple.com a já jsem chtěl, .com, by to být příklad, kdy Chcete-li volat na poslední instanci doby, a to první, že? Pokud jste byli volání strchr to, by si dal tu apple.com. Pokud jste volal strrchr to, by vám dal .com. A tak buďte opatrní, na které ways-- v mém příkladu, by pravděpodobně mohlo by mohly mít právě napsal jej pomocí strchr, protože tam je jen jeden bod. Avšak v jiných případech, které nemusí být případ. A tak se vždy snaží navrhnout váš kód dobře, takže that-- jo? Diváků: Takže v Příkladem jste právě řekl, Pokud tak učiníte, že by strrchr dám .com nebo jen přijít? ANDI PENG: To by vám dát .com. Diváků: OK. ANDI PENG: Jo. Poukazuje na místo, kde ho našel. To jo. 30 sekund možná? To jo. Všichni dobře, nebo možná trochu víc času? Show rukou? Show hlav? Bezva. Každý, kdo chtějí dát mi první řádek kódu pro tento program? Diváků: [Neslyšitelné]. ANDI PENG: Takže v první řadě, pojďme možná rozčlenit tento systém. Takže to, co je typ návrat strrchr? Pojďme zpátky. strrchr, jaký je typ návrat? Publikum: Char * ANDI PENG: Je to char *, že jo? Což znamená, že budete pravděpodobně bude chtít vytvořit další char * na druhu skladu, kdykoli je to návratu do, že jo? Vzhledem k tomu, pokud zavoláte funkce strrchr, to bude vám ukazatel všude tam, kde je zjištěno, že poslední období, v pořádku? Ale budete chtít ukládat, že někde, že jo? A tak jak jsme kód toto do našeho programu? Publikum: Děláš char * [neslyšitelných]. ANDI PENG: Jo. Diváků: [Neslyšitelné]. ANDI PENG: strrchr. To jo. Oh, vynechal r tam. Diváků: Název souboru [neslyšitelných]. Co je to? Ach, to je jen to. ANDI PENG: Oh, je to jen to. Jo, sorry. Moje chyba. Příklady neodpovídá. Diváků: A pak dot. ANDI PENG: Jo. Buďte opatrní, když kluci are-- tady, dejte mi přiblížit. Tam jedeme. Buďte opatrní, když kluci psaní, zvláště když děláte jen char. Je to opravdu snadné omylem právě dělat dvojité uvozovky, spíše než jeden. To nebude fungovat. Váš kompilátor bude stěžovat. A vaše funkce je prostě nebude spouštět. A tak buďte opatrní při děláte věci s znaků, že je to apostrofy. A tak se tento řádek Kód smysl pro každého? Jsme vytvořit char * ukazatel. Vzhledem k tomu, strrchr přiznání něco typu ukazatel. A tak budeme volat strchr na s, což je řetězec, soubor jméno, že jsme předáním. A my hledáme pro poslední instance období, které je jen jeden citát dot jedinou nabídku. To jo. Diváků: Kdy používáme uvozovky a když máme používat apostrofy? ANDI PENG: Jo. Takže uvozovky jsou používá vždy, když vás mají řetězec více než jen jeden. Takže pokud děláte strstr, což je ten, který vás vyhledat řetězec pro řetězec, vás by předat ji do uvozovek. Ale kdykoli je to jen jeden znak, Chcete udělat jednoduchých uvozovkách. Je to dobrá věc, mít na paměti. Takže teď, že máme naše ukazatel, co budeme dělat s tím? Žádám tě lidi na tisk to, že jo? Takže [neslyšitelný], chcete dej mi řádek kódu? Publikum: printf-- ANDI PENG: Jo. Diváků: --you potřebovat držák místo. ANDI PENG: Jo. Diváků: Vytiskněte zástupnou. Já nevím, co to místo Držák je ale poukazují na to. DOBŘE. Pojďme přeskočit, že pro tuto chvíli poté. Diváků: A pak comma-- ANDI PENG: Pointer, že jo? Publikum: Pointer, Jo. ANDI PENG: Tak trochu chyták, má co do činění s ukazateli a smyčce že jsme trochu mluvili už o. Jaký druh držitele místa my potřebujete pro ukazatel na char *? Diváků: [Neslyšitelné]. ANDI PENG: Jo. Je to jednodušší, než si kluci myslí, že je. Publikum: String? ANDI PENG: Je to jen řetězec, přesně tak. Vzhledem k tomu, pamatujte řetězce ve skutečnosti neexistují. Char * je přesný totéž jako řetězec. A tak skutečně to to je to, co by měla být použita po celou dobu. DOBŘE. Uvidíme, jestli se nám podaří zkusit spustit tento. Pojďme udělat make rozšíření. Bezva. Vy jste vidět, jak jsem šel v psset7.zip a finalpaper.docx, a to jen vytiskne ZIP a DOCX? Dávat smysl? OK Takže myslím, že ve vašem Podívejte se nahoru Funkce v pset, kterou jste bude požádán, pokud Řetězec má určitou konec, musíte dát určitý chybový kód. A tak to bude dost hrozné. Vzhledem k tomu, jestli můžete přijít co je přípona, pak můžete porovnat, že Rozšíření aby zjistil, jestli se shoduje up s určitou příponou. A pak se můžete vrátit chybové hlášení, že jo? To jo. Diváků: Takže my ne muset přidat 1 nebo něco? Ukazatel půjde na the-- ANDI PENG: Ne. Diváků: --point po něm. ANDI PENG: Jo. Poukazuje přesně kde se událost byla. Tak například tady, my jsme hledal období. Takže to bude návrat ukazatel na období. A pak to bude tisknout tak, že vycházejí na období. Takže se nemusíte přidat 1. I když, je to naprosto v pořádku, pokud na jste někdy jisti, aby jen tak z vyzkoušet si to sami. Vybudovat ukázkový program. Vyzkoušejte si to sami a vidět, kde je to tisk. To také není špatný způsob, jak to udělat. Bezva. A to je skoro všechny Měl jsem pro vás dnes. Udělali jsme spoustu věcí pset dnes. Takže v případě pochybností, jako je Řekl jsem, vždy vyhledat string.h knihovna pro tento pset. Tam to bude hodně Funkce v tam, že mohou být užitečné. Některé nemusí být užitečné. Já opravdu nevím. Wade přes to, že je celá parta z nich. strstr, strchr, strrchr jsou super, super užitečné, tak i na strcpys a strcasecmps že jsme již používá. Je to jen spoustu pohráváte s struny, určování, zda jsou rovné, dostat věci z řetězců, a je schopen správně otevírat soubory. Je to hodně souboru I / O. pset to opravdu není tak špatné. Budeš trvat podívat se na to, stáhnout, a vidět spoustu kódu. Bez obav, tím jste kód vlastně napsat, vůbec špatné. Pokud má někdo problémy s jejich Server, za mnou po části. Omluv se opět za to, že přinášet cukroví Halloween. Já nevím, co se se mnou děje. Ale budeme mít double cukroví příště. A hodně štěstí ve vaší pset tento týden. Jo.