ANDI Peng: Vi är nästan genom alla psets. I själva verket är vi igenom de flesta av de svåraste psets. Så vi är faktiskt bara gå till typ av vinden genom nästa par veckor. Vi kommer att börja prata om vår examensarbeten, händelserna kommer upp under de närmaste veckorna. Och livet kommer att bli en lätt match. Så inte alltför mycket i dag. Förhoppningsvis kommer faktiskt vind genom dagordningen för idag, och sedan vara out of here med lite tid över. Dessutom vill jag be om ursäkt för bristen av godis idag. Jag vet inte varför. Men i veckan fram Halloween, skulle jag glömma godis. Så jag är faktiskt bara en stor besvikelse för dig just nu. Eftersom jag minns bokstavligen godis för varje enskild klass, men Halloween. Men nästa vecka kommer jag ta dubbelt så mycket godis för att kompensera för det, allt för dig. Det kommer att vara bra. Så jag har ett par meddelanden om någon schemaläggning. Jag har några schemaläggning frågor. Sedan ska vi gå vidare till prata om vad som kallas chmod. Vi kommer att prata om snabbt TCP / IP HTTP. Och sedan ska vi koda vår egen webbplats med hjälp av HTML och CSS. Och då jag faktiskt lämnar kanske som 20 minuter att prata om pset6. Eftersom pset6 är faktiskt en hel del saker som vi redan har sett förut, men jag ville uppdatera några av dessa begrepp samt lära ett par nya funktioner. Häftigt. Så först av allt, välkommen tillbaka från paus. Jag hoppas att du paus var trevlig. Skulle gjorde du för paus? PUBLIK: Gick till New York. ANDI PENG: Du gick till New York? Jag tror halva vår skola åkte till New York. Det är okej. Jag tillbringade större delen av min paus stillasittande i sängen Netflixing. Och det var en bra tid. Men vi är nu tillbaka, tillbaka i session, tillbaka i gång saker. Vi har en pset grund denna fredag ​​kl. Jag tror att du har redan plockade upp din frågesport, ja? Så någon annan som har inte hade sina frågesporter, Kom och få dina frågesporter från mig i slutet av avsnittet. Eller spåra mig på campus. Jag har det med mig någonstans. Vår sista projekt pre-förslag också. Så för dem av oss som aldrig har tagit denna klass innan, en hörnsten i CS50 är mycket kulminerade i detta slagna projekt som eleverna föreslår. Och det preliminära projektförslaget, bara en allmän idé vad man kanske vill göra för deras projekt, är den tanken beror måndag, nästa måndag kl. Så ganska mycket, David tror jag kommer prata mer om detta i föreläsning om han inte redan har. Och det finns en fast sida på vår hemsida förklarar alla krav i projektet. Men i huvudsak, plocka något ämne som du har varit intresserad av hela din tid här på CS, oavsett om det är spel eller design eller video eller något. Och du kan verkligen slags nu tillämpa några av de lärdomar att vi har lärt oss här i CS50-- hej, welcome-- till ganska mycket genomför ett lärdomsprov som du väljer. Allt som är på grund måndag är bara en kort blurb via e-post för mig, en snabb mening, liknande, hey, Andi, Jag är verkligen intresserad av design ett spel som gör detta för iOS. Häftigt. Låt mig bara din korta inledande idéer för dina sista projekt. Och vi kommer att prata igenom huruvida det är faktiskt en bra idé eller inte, om det är en genomförbar idé eller inte. Men bara pre-förslag beror nästa måndag. pset6, vår fina web-- det är fel. Pset7? pset6? Det är pset6, eller hur? pset6, vår webbserver, beror Fredag ​​vid lunchtid med den sena dagen. Kontorstider återuppta normalt från måndag till torsdag 8:00 till 11:00 den här veckan. Jag tror Commons för de kommande tre nätterna. Häftigt. Innan vi hade i material, inte någon har några frågor, skämt, berättelser? Vad gjorde du för hösten paus? PUBLIK: Vad jag gör? ANDI PENG: Already Det är länge sedan faktiskt. Christabel åkte till New York. Jag stannade här och Netflixed. Målgrupp: Oh, ja jag var här. ANDI PENG: Åh, OK. PUBLIK: Jag minns inte vad specifikt. ANDI PENG: Det är OK. PUBLIK: Netflixing förmodligen. ANDI Peng: Netflixing. Ja, det är en bra tid. OK. Okej. Eventuella frågor innan Vi hoppar in material? Dessutom kommer vi att försöka fart genom avsnitt i dag, inte för mycket för att täcka. Och förhoppningsvis får vi här ute lite tidigt. Ledsen för att inte godis, också. Jag är en besvikelse, särskilt under Halloween. Okej. Häftigt. Så vi kommer att börja prata om en kommandorad argument som heter chmod. chmod, är allt det är bara ett Unix-system kallar leds från kommandoraden att ändra filrättigheter. Så till exempel, vi har alla stött på en sida så här förmodligen någon gång i vår livstid att vara en internet användare, där vår webbserver har gett oss felet av Förbjudna. Du har inte behörighet att komma åt, yadda, yadda, yadda, på den här servern. Allt som verkligen betyder är att behörigheterna som fästes till vad Sidan du försökte komma åt inte var öppna för dig. Så ganska mycket, chmod är det sätt på vilket Vi kan ändra dessa-tillstånd att ge alla, användaren, gruppen, eller världen, eller någon kombination av dessa tillgång till vissa filer, kataloger, något verkligen, någon typ av system på ett operativsystem. Så om någon av killarna har datorer om du känner gilla att följa med mig i dag, helt gärna bara skriva saker i. Om inte, kan du bara umgås. Så jag kommer att faktiskt dra upp min terminal just nu. Så kommandot för att köra chmod, eller åtminstone bara att lista behörigheterna för din filkatalogen är bara ls-l. Som ni kan se, ett gäng grejer dyker upp varav de flesta är viktigt för oss på vänster sida här. Ni ser ett gäng rs, ws, 1 /. Ja. De är i huvudsak bara alla filrättigheter att förklara vad vissa kataloger och filer i ditt system har. Så låt oss gå tillbaka till power point här. Så utöver filnamnen som ni kan se på den högra, vi vill se i huvudsak bara kolumnen till vänster. Så förutom att bara filnamnen, vi kan se behörigheter av filer, deras ägargrupp, gruppens namn, datum att filen senast modifierade, et cetera. Du kan se en hel del saker med chmod. Så det sätt som vi läser chmod är att den första bokstaven vi ganska mycket ignorera när det gäller läsning behörigheter. Den första bokstaven bara berättar vad typ av system som vi går in. d, i detta fall, är en mapp eller katalog. Så vi vet att närvarande mitt arbetsyta avsnitt sju var en katalog. Och då ser du tre triader, i huvudsak bara tre uppsättningar av tre tecken. Och du kan tänka på varje som en bit. Så du bara har tre uppsättningar tre bitar, nio bitar totalt. Du behandlar dem i grupper om tre. Så den första gruppen av tre är alltid din användarbehörighet. Din andra grupp av tre är alltid dina grupprättigheter. Och din tredje uppsättning av tre är alltid som världen, de överallt behörigheter. Så jag antar att det enkla fråga att ställa är vad som är skillnaden mellan användare och grupp. Den största skillnaden mellan användare och grupp är att en användare bara dig personligen tillgång till vad det är just nu. En grupp kan vara om du har flera användare på en dator, till exempel. Alla av dem kan betraktas som en grupp. Och då världen är bara världen, alla. Så att vi kan se senare hur vi kan modifiera dem i olika behörigheter. Så ganska mycket, vi är kommer fortfarande att fokusera på delen till vänster, där för katalog CS50 vi ser drwx, där r bara innebär att det är läsbar. W betyder bara att det är skrivbar. Och sedan x bara betyder att det är körbar. Man skulle kunna tro det slag av inte vettigt. Det bör vara e. Men x faktiskt typ av fungerar lite bättre, eftersom du kan komma ihåg det bättre. Så de tre typer av saker du kan göra, kan du antingen läsa en fil, Du kan ha behörighet att skriva en fil, eller du kan ha behörighet att exekvera en fil. Och så sätt som vi faktiskt representera dem i bitar är talen 4, 2 och 1. Så allt som är läsbar är representerad av antalet fyra. Allt som är skrivbar representeras av två. Och allt som är körbar såsom representeras av en. Så i den meningen kan vi också representera dessa numbers-- hej, välkommen, på ett annat sätt. Förlåt. Innan alla, kommer jag att be om ursäkt å allas vägnar kommer in i klass nu. Jag glömde godis idag. Jag är ledsen att jag är ett misslyckande denna vecka av Halloween. Jag kommer att ta dubbelt så mycket godis nästa gång för att kompensera för det. Men ändå, sorry om att killar, sorry. Så det sätt som vi kan faktiskt ingång på vår kommando argumentet är vi kan göra chmod grupp snedstreck behörigheter, där gruppen är precis vad grupp vi försöker ändra. Och behörigheter är vad vi vill lägga till den. Så till exempel, den plus lägger behörigheter, och subtrahera tar bort behörigheter. Och vilken typ av grupp som vi har vår en för alla, u för användarna, g för grupper, eller o för andra. Det är lite abstrakt just nu. Men vi kommer att gå över ett par exempel bara för att visa detta riktigt snabbt. Alla bra på detta bild, så jag kan gå vidare? Häftigt. Så till exempel, rwx. Innan vi talar om vad den representerar, först och främst vad rwx detta? Om du ser att denna viss filen har behörigheterna rwx, vad betyder det person kunde kunna göra? Målgrupp: läsa, skriva och köra. ANDI PENG: Ja, exakt. Du kan läsa skriva och köra. Eftersom alla tre av dem tecken är närvarande. Så om vi går vidare och prata om detta i termer av bitar, den rwx kan också betecknas som 700. För som ni kan se i alla sorts filkatalogen tillstånd, det finns tre triader. I det här fallet, bara den första triad har något där. Så i detta fall är R 4, w är 2, och x är ett. Om du lägga till dem tillsammans, det är 7. Och så om du konverterar det till binära, det är 700. Eftersom 7 är förstatriaden. 0, det finns inget före i andratriaden. Och så finns det inget som finns i tredjetriaden, så det är en annan 0. Så i samma mening, ett gäng triader kan representeras bara bitar, precis i binärt samt. Så 700 betyder exakt samma sak som rwx ------ när det gäller behörighet. Alla tydliga på den punkten? Häftigt. Och så chmod 111 skulle ge vilka behörigheter till filen? Ge er ett par sekunder för att omvandla denna. Kom ihåg att den första triaden är för användaren. Den andra triaden är för gruppen. Och tredjetriaden är för alla. Och så chmod 111 skulle ge vilken typ av tillstånd och till vem? Ta ett par sekunder tänka på det och komma tillbaka. Ja. PUBLIK: Så alla kan köra den. ANDI PENG: Japp, exakt. PUBLIK: Men ingen kan läsa eller skriva. ANDI PENG: Och gärna att förklara för alla hur du kom till denna slutsats. Målgrupp: Tja, för användaren, grupp, och världen, det är allt en, vilket är koden för körbar. ANDI PENG: Ja, exakt. So 1, i det här fallet, är allt vi vet att detta är den exekverbara koden. Eftersom behandlingen är 4. Att skriva är 2. Och den körbara är en. Så är alla tre triaderna är 1, att innebär att till världen, till användaren, och till gruppen, de är alla körbara. Alla bra med det? OK. Och så den andra vägen att vi kan faktiskt skriver detta också är dig kunde bara göra chmod ett plus x. en: allt eller alla. Plus innebär att ge tillstånd till. Och sedan på x betyder körbar. Så det finns två kommandon är faktiskt identiska. Så om du vill köra detta i din terminal, du gör chmod 111, namn din katalog eller filen. Eller så kan du göra chmod ett plus x, namn på din katalogfilen. Samma sak, bara ett enklare sätt, kanske för vissa att representera eller förändring filrättigheter. Var och en OK med chmod innan vi går vidare? Häftigt. Så nu ska vi gå in i en några bilder av mycket abstrakta begrepp att jag är ganska mycket kommer att vind genom. Och det är helt OK om du förstår inte allt. Redan nu gör jag fortfarande inte riktigt förstå allt helt. Men det är mer för att få den översta nivån förståelse av hur vissa av dessa saker fungerar. Så vi kommer att prata snabbt om TCP / IP, som är bara Transmission Control Protokoll snedstreck Internet Protocol. Minns från föreläsning, David, han lär dig exemplet där han skulle passera noterna i ett kuvert upp att gilla toppen av föreläsningssalen? Så i lagen skolans aula David visade väsentligen hur TCP / IP fungerar i den meningen att allt är är ett sätt att säkerställa att data har levererats över en server eller på Internet. Så i exemplet av kuvertet och meddelandet, användaren i slutet kunde se att, åh, jag behövde får fyra informationspaket. Men jag faktiskt bara fått tre. Det betyder att jag måste saknas en. Och en inte levererades. Och så TCP / IP på internet, via din dator och servern, gör exakt samma sak. Allt det gör är att ange en ram inom vilken en förlorad uppgifter paket kan ogillar och tas emot. Liksom på internet när du försöker att komma åt filer på nätet eller skicka filer till din vän eller titta på webb webbläsare, tusen och åter tusen miljarder och åter miljarder bitgrupper informationen överförs per millisekund. Och det är riktigt, riktigt förvirrande. Och det är verkligen svårt att faktiskt vet vad som har skickats och vad som inte har skickats. Och så TCP / IP bara specificerar en sammanhängande ram där din webb webbläsare och servern kan typ av kommunikation med varandra, precis se till att paket är alla här och ingenting är förlorat och alla data som du begärt faktiskt visas korrekt. Alla OK på just detta mycket kort hög nivå förstå? Häftigt. Så då vi ska flytta till att prata om HTTP, som är bara Hypertext Transfer Protocol. HTTP, är allt det är vad varje sida eller filen öppnas på din webbplats, servern returnerar ett HTTP statuskod som svar begäran att se till att antingen, oh, gick denna begäran igenom. Och allting visas korrekt. Eller, åh, nej, 404. Något gick snett. Åh, jag kan inte visas. Allt som är är att oavsett du försöker att komma åt, använda som användaren försöker komma åt, på internet-- bara att se att du antingen har lyckats nås vad det var eller inte framgångsrikt nås vad det var. Och så HTTP status kod bara ger dig ett medel för att kunna veta om eller det var inte lyckat eller inte. Så till exempel, ett exempel begäran. Du kan se här är det vanligtvis typiskt fyra rader. Vi har en GET HTTP 1.1, vilket är bara metoden URL-begäran, protokollet version, fältnamn, och fältvärdet. Så ingen anledning att helt memorera något här. Bara typ av bekanta dig med hur dessa ser ut. I detta exempel, den förfrågningsmetoden Webbadressen är bara vad begäran du skickar servern. Liksom, hey, server, jag verkligen vill tillgång yadda, yadda, yadda, HTTP-sidan. Protokollet versionen är precis vad version din värd eller servern använder för att få tillgång till information. Fältnamnet är webbplatsen eller URL som du försöker att komma åt, i det här fallet, www.apple.com. Och fältvärdet är bara typiskt namn, värde. Och det kan vara någon form av kombination bokstäver eller siffror eller vad som helst. Så en typisk begäran, så vad datorn faktiskt skickar till servern som säger, hey, du vet vad jag behöver det här visas det är den typ av förfrågan att de faktiskt får. Ett exempel svar på vad server skulle skicka tillbaka till dig skulle vara ganska mycket samma sak, förutom med en statuskod på toppen. Så 200, 2 0 0 är alltid statuskoden för OK. Liksom, OK, gick denna begäran igenom. Du skulle kunna få tillgång allt korrekt. Livet är bra. Livet är bra. Allt är helt bra. Och så detta bara berättar webbläsaren och servern, hey, allt är bra. Jag fick all information jag behöver. Häftigt. Men problemet är ibland problem kommer upp när du have-- pågå Jag tror Jag talade om dubbletter. Du har mindre bra svar. Så till exempel, 404 är Page Not Found. Du har ibland en Forbidden tillgång. Du har olika andra statuskoder som jag är säker på att du har alla sett när du är försöker göra efterforskningar på internet. Och din webbläsare ger dig den, nej, inte kan komma åt. Och du är som, ja, skit. Så bara ganska mycket, det finns några ganska vanliga statuskoder. Kanske bekanta dig med vilka som de är. Det roligaste en som Jag tror att jag någonsin har hört of-- om du råkar leta upp dem alla på nätet, av någon anledning finns det faktiskt en verklig statuskod ringde 418 Jag är en tekanna. Jag googled där ursprunget till denna var från. Och tydligen en April Fools ' Dag ett par decennier sedan, någon trodde det skulle vara lustiga att skapa en ny kod status kallas 418 Jag är en tekanna. Legitimt, namnet på denna kod kallas jag en tekanna. Jag har glömt vilken sida du måste gå att faktiskt göra denna display. Men tydligen, kan du faktiskt erhålla en statuskoden jag en tekanna på något sätt genom att göra något. Så det finns hundratals och hundratals statuskoder. Några av dem gör mer känsla än andra. Men ganska mycket bara bekanta dig med de vanligaste. Den begärda enhet kroppen kort och stout, tydligen. Så ibland finns det mer skrämmande fel än jag är en tekanna. Men detta är något som jag antar du typ av hoppas att slå. Men jag tror inte att du kommer. Alla bra på just status koder, önskemål, processer, tillverkning säker information levereras på rätt sätt? Så nu ska vi övergång i en rolig del av avsnitt idag, där vi prata lite om HTML. HTML, det är allt Hyper Markup Language. Det är bara standardspråk du använder för att skapa alla web sidor på internet. Så någon webbsida, vad är din favorit webbsida? Vad är din favorit webbsida? PUBLIK: [OHÖRBAR]. ANDI PENG: Förlåt? PUBLIK: Tumblr. ANDI PENG: Tumblr. Så Tumblr är skriven i HTML. Och så vi ska faktiskt gå igenom och leka med några av dessa saker senare. Ganska mycket allt du behöver lära sig, att veta, att skriva HTML kan du förmodligen bara Google på internet. HTML, det är inte ett program som C där du kan skapa variabler och göra häftiga saker med det. Det är mer av bara, åh, det är så jag vill att det ska synas på min hemsida. Och jag ska bara lägga den i. Och det kommer att styla det. Så HTML, på sätt och vis, det är precis som en formatering eller mall språk. Det är mycket enklare. Det är mycket lättare att lära sig, mycket lättare att skriva på än din vanliga programmering språk, mycket lätt, mycket användartillgänglig och vänlig. Så vi faktiskt kommer att spela runt, skriver våra egna sidor idag. Men innan vi börjar, jag vill bara gå igenom några korta bästa praxis. Eftersom HTML är så lätt språk och eftersom även om du gör ett par saker fel, det ibland kanske inte märker, Vi vill se till att vi är faktiskt följa våra bästa praxis att se till att saker som skulle kunna gå runt men inte alltid kommer att inte gå rätt se till att de är minimeras. Så ganska mycket, se till att dina avslutande alla dina taggar när du skriver i HTML. Om du öppnar en kropp, se till att du är stänga det med en kropp någonstans. Du vill vara säker på att din webbsida validerar med hjälp av vad som kallas W3 Validator. Du kan bara Google som på nätet, och det finns en länk till det. Och då du vill separat HTML, som är ditt märkningsspråk från din stil, vilket är CSS språk som David visade att vi är också kommer att spela lite med föreläsning. Häftigt. Så när du vill köra HTML på CS50 apparaten, vi kommer att köra en program som heter apache, som allt är bara en inbyggd webbserver som alla i CS50 har tillgång till. Vi kallar det apache50 bara för att vi vilja kalla allt 50 i CS50. Så det sätt som du startar CS50 webben server är genom att skriva på ditt kommando line apache50 starta prick. Och om du vill avsluta det när som helst tid, du apache50 avslutas prick. Och du bara trycka Enter. Och det bör vara på väg upp här snart. Japp. Så jag ska bara snabbt gå över ett exempel på ett riktigt kort webbsida. Och vi kommer att spendera som 10, 15 minuter spelar runt skriver våra egna webbsidor. OK. Så här i IDE-- kan alla se det? Inte riktigt. Här kommer jag zooma in. Jag har precis fått denna korta mall här med ingenting faktiskt i det. Vi ska bara snabbt skriva en HTML-program som vi just säga hej till världen. Så samma sak som i C, nu är vi bara kommer att göra det i HTML. Finns det någon som vill faktiskt bara försöka ge mig det första du skulle behöva sätta i ett HTML-dokument? Ja. PUBLIK: Konsolerna, det [ohörbart]. ANDI PENG: Japp. Så något som är mycket unikt för HTML som vi normalt traditionellt inte stöta på i andra kommandot linjenivå programmeringsspråk är att vi faktiskt ange vilken typ av fil att detta kommer att bli på toppen av vår kod. Så i detta instance-- tror jag det är rätt kommando, eller hur? Japp. På toppen, du bara vill inkludera bang DOCTYPE html inom parentes bara att berätta för din dator, hej, titta ut. Och HTML-dokument kommer. Och sedan hur vi vill att börja vår fil? Om vi ​​vill bara säga hej, har en webbsida som säger hej till världen, hur ska vi gå om att bygga det här? Faktiskt, låt oss vända sig till Google. Och vi kan faktiskt göra detta. Japp. Det går vi. Så HTML. Som ni kan se, är min webbläsare faktiskt automatiskt styling detta för mig. Samma sak som i C, när du skapa en öppen klammerparentes, webbläsaren automatiskt lägger i en nära klammerparentes. Lyckligtvis älskar vår IDE till gör detta för oss också. Så nu kan vi typ av typ början av en etikett, och det kommer att alltid berätta för oss att kom ihåg att skriva i slutet av etiketten. Jag tror att detta måste aktiveras. Och sedan vill vi lägga till, alltid, ett huvud där är titeln. Vi vill bara kanske ringa det här inlägget hello, och sedan kroppen. Och där du går. Det är faktiskt vår HTML-dokument. Så sätt att varje HTML-dokument är alltid utformade in-- samma sak med int main tomrum. Du vill alltid ha HTML en öppen och tagg upptill och botten av din kod. Du vill ha ett huvud inne i som innehåller titeln, precis vad kommer att visa fliken för din webbplats sidan, och sedan en kropp inuti vilken kommer faktiskt visa innehållet av vad du vill göra. Så om du ville verkligen köra detta, jag kommer att zooma ut. Du kan faktiskt börja apache50 starta prick. Häftigt. Och så som ni kan se, nu denna länk har dykt upp. Det står din webbplats är nu finns någon länk nedan. Så alla våra IDE har done-- inte IDE, sorry-- yeah, vår IDE har gjort är att skapa en webbsida länken på vilken alla våra webbsidor kan nås på servern. Så låt oss ta en titt här. Låt oss titta på detta, gå till hello.html. Och du ser en mycket enkel webbsidan för hallå världen. OK. Vi faktiskt kommer att bara har everyone-- ja, vad är det? PUBLIK: Jag har en grundläggande fråga. ANDI PENG: Japp. PUBLIK: Hur sparar du filen som en HTML? ANDI PENG: Ja. Så om jag skulle skapa en ny fil, om jag gör ny fil, Untittle, om jag gör, section.html, bom, det är allt jag har att göra. PUBLIK: [OHÖRBAR]? ANDI PENG: Nej PUBLIK: [OHÖRBAR]. ANDI PENG: Nej PUBLIK: [OHÖRBAR]. ANDI PENG: Ja. Ganska mycket, förlängningen på filen som finns inuti din IDE, som talar om för datorn att talar om för webbläsaren, hej, titta ut. Detta kommer att bli koden skrivet på detta språk. Så till exempel, i Microsoft Word, vad gör alla Word-dokument sluta med vad förlängning? .doc eller .docx, eller hur? Allt det gör är specificerar till ditt operativsystem, hej, du har ett Word-dokument som kommer upp. Öppna den med Word. Samma sak med PDF-filer. Det vet, åh, jag behöver att öppna upp den här filen med Adobe Reader eller Adobe Acrobat. Och så förlängningar driva samma sätt som i din dator. Om du anger din kod sida som ska namnges HTML, då vet, Åh, du har HTML-kod. Jag kommer att behandla det som html-kod. Så det är super smarta i det avseendet. Så alla, låt oss ta ut 10 minuter och bara skapar våra egna webbplatser. Låt oss lägga i den vackra saker. Känn dig fri att säga vad du vill. Jag vill bara vara säker på att allas servrar kör korrekt innan vi befria dig i pset. För om dina servrar inte köra för pset, som kommer att bli riktigt, riktigt illa. Jag ska bara flyta runt och se vad alla arbetar med. Hur går det? PUBLIK: Jag vände bara på min dator. ANDI PENG: Det är OK. PUBLIK: [OHÖRBAR]. ANDI PENG: Bara din IDE. Ja. PUBLIK: [OHÖRBAR]. ANDI PENG: Det är OK. PUBLIK: [OHÖRBAR]. ANDI PENG: Helt bra. Är alla åtkomst deras webbserver OK? Är apache50 kör OK? Jag tror att en del av de andra sektionerna, vi hade problem med människor som inte att kunna komma åt servern. Ja. Så du bara köra apache50 utrymme börjar rymdperioden. PUBLIK: [OHÖRBAR]. ANDI PENG: Japp. Bra? PUBLIK: [OHÖRBAR]. ANDI PENG: Åh, OK. Så du är tänkt för att ha en plats. Så apache50-- PUBLIK: Jag gjorde. ANDI Peng: --start utrymme. Målgrupp: Åh, utrymme prick. ANDI PENG: Japp, utrymme prick. Här har du. Alltså om du har en HTML-sida skapas, då kan du bara gå direkt till länken som fastställs av domstolen. Och du ska kunna komma åt den. Alla kunnat åt sina webbsidor OK? PUBLIK: [OHÖRBAR]. ANDI PENG: Åh, det är OK. PUBLIK: [OHÖRBAR]. ANDI PENG: Ja. Jag tror att du kan faktiskt öppna det i din webbläsare, webbläsare och inte bara din IDE webbläsare. Ja, jag tror att om du kopiera och klistra in. PUBLIK: Och sedan hur ska vi stänga av den? [OHÖRBAR] ANDI PENG: Ja, gör du apache50 sluta med någon period. Japp. PUBLIK: [OHÖRBAR]. ANDI PENG: Utan period. Ja. Det går vi. Japp. Vi skapar våra egna webbsidor. Målgrupp: Åh, cool. ANDI PENG: Ja. PUBLIK: Jag har en fråga. Så apache 50-- ANDI Peng: 50, ja. PUBLIK: [OHÖRBAR]. ANDI PENG: Vad? Det är konstigt. Se, det var typ av frågan som hände tidigare. OK. Se mig efter avsnitt. Eftersom vi har en del problem med servern. Och du vill göra Se till att din server är kör innan pset. Eftersom du kommer att behöva det. Ja. Finns det någon annan som inte har varit kunna få sin server för att börja? För dig som vill lägga till extra stil till dina webbsidor, vi faktiskt kan göra det David gjorde föreläsning samt, vilket är att skapa en ytterligare stil ark, som är ett punkt CSS, Cascading Style Sheet och faktiskt bara lägga in den. Så till exempel, har jag just skapat ganska mycket nästan exakt samma en David gjorde i föreläsning. Du kan ganska mycket bara göra kroppen. Du har så kallade taggar i vilka Du kan ansöka om att IDE oavsett avdelning du vill ha i din faktiska HTML-sidan. Så att kroppen på sidan, du kan göra text align center. Och sedan ska jag kreativ en tagg som kallas topp inne som jag vill ha dessa saker till hända, tilldela en större pixelstorlek för teckensnittet. Jag vill att textvikt till vara djärv. Och jag vill att färgen vara blå, bara godtyckliga värderingar som jag bestämde mig för att välja. Jag kan skapa en annan tagg som kallas mitten. Teckenstorlek, gör det lite mindre. Och då kan jag skapa en annan tagg kallas botten där jag vill teckenstorlek att vara ännu mindre fortfarande. Och så ganska mycket detta är bara exempel av källkod eller källformatmallar att det är mycket lätt att bara Google. Om du säger, åh, jag vill ha min typsnitt att kursiv och mörkgröna, Du kan förmodligen Google, och så kommer det att berätta för dig lämpliga taggar eller ID för att skapa. Och så det sätt som du skulle faktiskt typ av har detta i ett HTML-dokument eller använd det är allt du har att göra här är i spetsen lägga till en länk till formatmallen. Så du kan bara koppla href jämlikar oavsett namnet på din formatmall är. Och då förhållandet är en formatmall. Så inom någon HTML-dokument, så länge du inkludera denna punkt CSS blad, bör du kunna komma åt och har de egenskaper där. Så till exempel, här har jag bara skapa ett annat exempel webbsida. Detta är välkommet att CS50 sektion Tisdagar från 02:00 till 03:30 med mig. Och då har jag lagt till en härlig bild som vi potentiellt skulle kunna se. Så om du tar en titt här, om du går till style.html, vi skapat en webbsida med kattungar. Eftersom kattungen är fantastisk. Så att lägga till en bild bara img src länk. Ganska mycket, om det finns någon form av funktion du vill lägga till din website-- så låt oss säga, du vill lägga till en meny eller ett sökfält eller liknande en image-- bara Google hur man gör det. Och du bara plopp i det formatet. Och du kan bara ganska mycket bara lägga in den. Det är riktigt, riktigt enkelt. Vi skapar vår egen webbsidor just nu. Om du vill-- PUBLIK: [OHÖRBAR] ANDI PENG: Förlåt? PUBLIK: [OHÖRBAR]. ANDI PENG: Åh, div är bara en division talar om för mig att, åh, jag har en viss del som kallas mitten där jag ansöker min CSS tag, och sedan min andra division med bottnen. Det är allt det som talar om. Eftersom det är skönt att hålla saker snyggt i ordning, så att programmet vet hur exakt för att köra. Och tror att jag kan kopiera klistra in den här i min faktiska webbläsare också. Det ska vara bra. Ja. Jippie. Så om alla vill bara försöka skapa en webbsida, vi tar ytterligare två till tre minuter. Jag vill bara se till att allas servrar kör och alla har en idé om hur man gör det. Om ni vill ta ut dina datorer. Fortfarande inte fungerar? PUBLIK: Jag är bara [OHÖRBAR]. ANDI PENG: Kanske prova uppdatera 50 också. Ja. PUBLIK: [OHÖRBAR]. ANDI PENG: Ja. Så sätt som du startar en ny webbserver på IDE är bara gör apache50 utrymme start utrymme prick. Jag ville bara se till att allas servrar kör OK. ÅHÖRARNA: Här, på terminalen? ANDI PENG: Ja. PUBLIK: [OHÖRBAR]. ANDI PENG: Apache. Faktiskt, jag tror att du är kör redan något. Ja, du är faktiskt kör en annan server. Ja, du är bra. Så länge det fungerar, du är OK. PUBLIK: OK. ANDI PENG: Det finns två sätt att köra servrar. Så länge en av de sätt fungerar, det är okej. Vi tar en minut bara typ av avsluta finputsning av något webbsida ni ville göra. Är alla som arbetar förresten? Allas servrar är kör förutom för er? Vi ska räkna ut. Och HTML är ganska enkel. Så jag tror att vi är alla bra. Ja. Jag kommer tillbaka. PUBLIK: [OHÖRBAR]. ANDI PENG: OK. PUBLIK: Så det är bara börjat ladda upp. ANDI PENG: Inga bekymmer. Så HTML, det finns källkod som kommer att vara online efter avsnitt. Dessutom har David en helhet gäng på nätet också. Bara typ av blick över det till se hur HTML-sidor skrivs. Det är ganska lätt. Allt du inte vet, du ganska mycket bara Google och du är bra. Jag vill bara vara säker på att dina servrar körs. PUBLIK: Är det gör det ofta? ANDI PENG: Det har aldrig hänt mig. Jag visste inte att det kan även övervintra. PUBLIK: [OHÖRBAR]. ANDI PENG: Jag tror everyone-- Gruvan har aldrig övervintrat förut. Och jag vet inte varför. Det är konstigt. PUBLIK: [OHÖRBAR]. ANDI PENG: Är din ide? PUBLIK: [OHÖRBAR]. ANDI PENG: Ja. PUBLIK: Det är OK. Så när det är öppet. ANDI PENG: OK. Vi kommer att ta itu med några server problem efter avsnitt. Du ska vara bra. Även vill du se till att du få dem lösas innan du lämnar. För om serverns inte körs, då är du inte kommer att kunna göra pset, liksom någon del av pset. Så du vill vara säker på att det fungerar. Häftigt. Okej. Säg adjö kattungar. Jag tillbringade en lång tid söker som kattunge bild att sätta på. Så, ändå. PUBLIK: [OHÖRBAR]. ANDI PENG: Förlåt? PUBLIK: [OHÖRBAR]. ANDI PENG: Jag tror att det är på webbplatsen. Liksom spec? PUBLIK: [OHÖRBAR]. Jag tror att spec är bara nätet i vecka sju. Jag tror det kallas pset6, även även om vi är på vecka sju, som är lite computing. PUBLIK: Men jag menar om du vill titta at-- om du vill dra upp vår version av webbplatsen från vår sever? Så som server.c är pset, eller hur? Om du vill titta på detta, som hur det checkar ut? ANDI PENG: Åh, så faktiskt den pset, är allt vi gör här är implementing-- här, Jag ska gå igenom det här en kort stund. Så för alla som bara har blivit avsnitt, ni är i tur. Det finns mycket lite material att faktiskt täcka idag. Jag ska bara tillbringa nästa 20 minuter gå över pset hjälp. Eftersom det finns några användbara funktioner som kommer att hjälpa ditt liv. Och förhoppningsvis kommer vi vara ute härifrån i likhet med 20 minuter. OK. Så pset7 är fel. Även om vi är på vecka sju, det är faktiskt pset6. Jag ska ändra på det. Allt vi gör i pset6 skapar en webbserver. Det låter super skrämmande. Och särskilt för dem av er som redan har tittat på distributionskoden, det finns en hel del kod, en hel del kod. Men är helt OK. Eftersom nitty gritty del av att faktiskt skapa servern görs av oss. Allt du verkligen frågat att göra i denna pset bara för att göra några strängmanipulationer i fil-I / O. Det är faktiskt liknande ganska enkel. Så när du först ladda ner that-- som Här har faktiskt redan hämtat den pset och tagit en titt? Okej. Ja. Det är som 500 rader kod att du kommer att se ut, vad händer? Och det är helt bra. Se till att du titta på genomgångar. Eftersom David och-- Jag vet inte. Jag tror inte att det är Zamyla s, här. Men jag tror att någon annan genomgångar är ganska användbart i termer av bara så att du vet vad som händer på insidan av din kod. Och det är helt OK. Eftersom de fyra funktioner som du är ombedd att genomföra har faktiskt noll att göra med själva servern. Allt de behöver göra är att bara analysera olika strängar, söka igenom strängar, att se till att saker och ting gör vad de ska göra. Så för ett liknande resonemang, det finns några mycket, mycket användbara funktioner, särskilt för stråk manipulation, att vi bör alla gå över att jag trodde jag skulle vara mycket användbart för er att lära sig innan du försöker pset. Och de är alla ingår inom din string.h bibliotek. Det finns förmodligen mer användbar funktioner Jag har inte ingår här, eftersom jag antingen aldrig använda dem eller kanske jag bara inte vet att de existerar. Känn dig fri att titta igenom student.h. Eftersom det kommer att bli en hel del funktioner som är mycket användbara. Så sex som jag använder mest i mitt pset när jag gjorde det här senaste veckan var strtok, strchr, strrcher, strstr, strcasecmp och strcpy. Och så de två sista kan tyckas ganska bekant för de flesta av er. Str fall jämföra, allt det gör är att jämföra strängar att kontrollera dem för jämställdhet, inklusive fall. Och strcpy kopierar bara en sträng till en buffert. Och så de två ska verka mycket bekant för er på denna punkt. Eftersom vi har använt dem en hel del, särskilt för de senaste psets. Men de fyra första kanske du inte har sett hittills. Men jag ska bara gå igenom dem. Eftersom de kommer att göra ditt liv verkligen, verkligen lätt for-- inte lätt, men mycket lättare för den kommande pset. OK. Så char * strtok, är detta funktionen definition för denna funktion finns i strängen, h bibliotek. Om du får en ingång till char * sträng, som ligger bara en sträng, eller en konstant char * deliminator, AVSKILJ för korta, allt den gör är att bryta den större sträng i en serie av vad vi kallar token åtskilda av ett visst värde. Så på sätt och vis, om jag skulle ge du section.7.php, detta är en sträng. Så det skulle vara om jag skulle passera i detta som min str, min char * str, om mitt deliminator var prick, allt detta skulle göra är att söka genom sträng. Och första gången ser en prick, det skulle bara återgå till pekaren till den sista symbolen hittas i strängen innan. Så det skulle gå här. Och det skulle bara ge mig 7.php. Och om jag skulle ringa fungera en gång, det skulle ge mig bara .php. Och så allt här funktionen gör bryter ner större strängen i mindre strängar beroende på vad du letar efter. Och så till exempel i ditt utseende up funktion Om du vill titta på vad vissa tecken kommer om eller om punkter hända eller förlängningar hända, denna funktion skulle vara ganska användbart. Ja. Inga problem. Detta kommer alla be-- ja, vad är det? PUBLIK: Så i den första raden, om vi använde detta exempel, vad skulle vi sätta in det? ANDI PENG: Ja. Du skulle bara ringa ett strtok sträng kommatecken AVSKILJ. Och strängen är lika med section.7.php. Och då är du AVSKILJ kan vara lika med bara dot. PUBLIK: OK. ANDI PENG: Ja. Bara sådär. Alla dessa funktioner är ganska liknande när vi går igenom dem. De gör bara lite olika saker. Men de är alla kommer att göra ditt liv mycket enklare. Andra funktion, detta är som super, super, super viktigt, är the-- hålla upp. Hoppsan. Strchr söker efter den första occurrence-- faktiskt, ja. Strchr är den funktion som Jag definitivt bara gick över. Så ignorera vad jag sa för den första funktionen. Det är faktiskt kallas strchr. Så vad skulle hänt här är om du fick en sträng i en char c, Det skulle bara ge du vad det var. Ja. Så tänk på det som str, vilket är en sträng och chr som röding. Så allt du försöker göra är att söka för var en röding ligger inom en sträng. Och så den söker efter den första förekomst av tecknet c i strängen str. PUBLIK: [OHÖRBAR]. ANDI PENG: Japp. Och sedan om det inte hittar det, det kommer att återvända NULL. Så något som kommer att bli mycket användbart för er i att göra pset om, säger, du letar efter en förlängning som en Docx för Word dokument eller en PDF för ett PDF-dokument, du kan sorts använda den för att se för allt som är efteråt varje gång du ser en prick, eller hur? Och så ganska mycket, om du kör den genom funktionen, om den returnerar NOLL, då vet du att det hittade inte det prick, vilket innebär detta uppenbarligen inte är ett giltigt filnamnstillägg. Eller om den återvänder något, då vet du det kommer att återvända oavsett s faktiskt efter förlängning. Så de av er som hade började leta igenom lookup och tolka denna funktion är kommer att bli super bra. Så vi faktiskt kommer att demonstrera att använda denna. Varför inte ni försöker skriva en funktionen bool meningen char * s som bara returnerar true om s är en mening och i annat fall false. Så antyder, du kommer att förmodligen använda strchr. Eller om du bara söka i sträng för en viss karaktär. Och så i en mening, vad som skiljer en mening från en icke-mening, vilka specifika karaktär? PUBLIK: Ett utrymme. ANDI PENG: Ett utrymme, eller hur? Och så vad vi förmodligen kommer att vill göra inom denna funktion här? PUBLIK: [OHÖRBAR]. ANDI PENG: Vi kommer att vilja strchr sträng för uppkomsten av utrymmet. För om det återvänder något, då Vi vet att detta måste vara en mening. Det innebär att vi måste har ett utrymme i denna sträng. Om det inte finns något utrymme, då vet vi att hej, antar att det inte är en sträng. Det är nog bara en riktigt långt ord. Så jag ska ge er ett par minuter att skriva den här funktionen. Ja. PUBLIK: Fick du denna sträng från användaren? ANDI PENG: Ja. Så det här är bara en funktion. Så tänk i din huvuduppgift du redan have-- låt oss gå hit. OK. Så jag har skrivit programmet om Jag har min huvudsakliga funktion där Jag har just skapat två strängar. Den första är Hej, mitt namn är Andi-- klart, en mening. Min andra är bara Andi, uppenbarligen inte meningen. Och så jag kör båda dessa strängar genom denna funktion. Jag vill att ni ska skriva kall mening. Och jag lagra dessa värden, och sedan bara skriva ut dem. Så tänk att användaren är kommer att passera i en sträng. Och då du kommer att väsentligen ta reda på om det är en mening eller inte och returnera sant eller falskt i enlighet därmed. Om ni vill ge en tummen upp eller heads up, huvud nicka, är någon är redo att börja detta skulle det vara bra. Kanske som 30 sekunder? Okej. Låt oss se om du kan prova skriver denna funktion. Så pseudo coding-- jag ska bara typ av gå igenom detta just nu. Ganska mycket, vi vet funktion som vi måste använda. Vi kommer att kalla denna funktion på vår sträng och sökandet efter en plats. Om den returnerar något, då måste vi vet att, uppenbarligen är detta en mening. Eftersom det finns utrymmen. Då vi kommer att återvända sant. Annars kommer vi att returnera false. Finns det någon som vill ge mig den första raden kod att vi faktiskt tänker att använda för att skriva detta? Det är faktiskt den svåraste kodrad samt. Ja. PUBLIK: Om strtok s-- ANDI PENG: Bara strchr. PUBLIK: [inplacering RÖSTER] utrymmet inte är lika med noll. ANDI PENG: Cool. Exakt rätt. Alla förstår att första raden? Vi kommer att kalla strstr, som är en funktion som söker strängen ar för det förkolnade materialet i rymden. Och om den finner det, det kommer att returnera en pekare till var det är. Om den inte hittar det, det kommer att återvända NULL. Så om det returnerar något annat än NULL, så vet vi att det har funnit en plats. Betyder det vettigt? Häftigt. Okej. Så om vi vet att det hittat en utrymme, vad vi vill göra? PUBLIK: Återgå sant. ANDI PENG: Japp. Return true. Och sedan, någon vill avsluta funktionen för mig? Ja. Annat, bara sådär. Och försök att sammanställa detta. Japp. Så när ni kan se från utgångar, minns Booleans i C är alltid uttrycks i binär. 1 är sant. 0 är falsk. Om vi ​​skulle köra funktionen snöre en, som är Hej, mitt namn är Andi-- klart, en sentence-- resultatet skrivas ut till en som är sann. Den andra, som är bara ett ord, resultat skrivas ut till 0, vilket är falskt. Alla tydlig typ av hur denna funktion är skriven? Ja. Publik: Kan vi också göra, i stället för inte lika nej, lika lika med 0, så att det är lika med? ANDI PENG: Nej Eftersom strchr är en funktion. Jag kommer tillbaka till detta. Så vad är returtypen av vår strchr funktion? Målgrupp: Åh, OK. Eller null. ANDI PENG: Ja. Det är en char * som säger mig att allt denna funktion kommer att återvända, det kommer att vara en pekare. Antingen pekaren kommer att bli som pekar på där det har hittat det, eller det kommer att återvända en pekare till null. I båda omständigheter, det kommer att returnera en pekare till något. Och så om du skulle jämställa detta är lika, lika, 0, du kommer att få en sammanställning fel. Eftersom det kommer att returnera en pekare. Och du kommer att försöka jämföra en pekare till ett heltal. Och datorn är inte kommer att gilla det. Ja, exakt. Häftigt. Alla bra? Och för det andra, vi kommer att gå över en funktion som kallas strstr. Inga bekymmer om dessa funktioner är förvirrande dig. De förvirrande mig. Som sådan, skulle ni ha sett, de alla låter ganska mycket samma. Just när du är förvirrad, dra upp string.h biblioteket. Och ni kan sortera genom vilken man är där. Så strstr, är allt som gör sökningar en sträng för en helt annan sträng. Så var strchr bara sökningar för ett enda tecken, strstr söker efter en hel sträng. Så jag ville titta i, det gör jag inte vet, Hej, mitt namn är Andi. Och min bästa väns namn är också Andi. Om jag ville se i denna straff för hela ord Andi, min nål skulle ha varit vad du letar efter. Och din höstack är vad du letar efter det. Så om du letar efter en specifikt ord i en mening, det ordet kommer att bli din nål. Och sedan meningen själv kommer att vara din höstack. Och så bara söker den första förekomsten av strängen nålen i strängen höstack. Den returnerar pekaren till den första förekomsten. Utom, minns i det här fallet, är det första förekomsten av hela strängen att du söker för, inte bara ett tecken. Och så detta är nästan samma sak som den funktion vi gjorde bara, bara med lite mer specificitet. Eftersom du söker efter mer än bara ett tecken. Och användningen är exakt samma som den som vi just gjorde. Alla OK med detta? OK. Förra vi ska gå över är strrchr, som inte är förväxlas med strstr eller med strchr. strrchr har en extra r där. Var försiktig när du skriver. Du kan hitta dig själv inklusive en extra r eller ej ett r, och sedan din funktion är jag inte kommer att fungera. Och du kommer att bli förvirrad. Var försiktig så att du stava alla dessa funktioner till höger. Så strrchr är den exakta Samma sak som strchr förutom att det söker efter inte den första förekomsten av en specifik karaktär, utan snarare den sista förekomsten. Och så, i den meningen, Det är nästan exakt samma. Men istället för att flytta framåt i en sträng, du kommer att vara på väg bakåt i ett snöre. Exakt samma sak, du är bara söka i en annan ordning. Och så det kan vara super, super bra för din sökning funktion, varvid den första funktionen på din pset. Låt oss låtsas att vi behövde för att skriva en funktion av tomrums utsträckning i vilken vi passera en konstant char * filnamn, bara en sträng, ett filnamn, som tar i det namnet och skriver ut förlängningen av den filen. Så till exempel, om jag skulle passera i rad pset7.zip, det kommer att skriva ut bara förlängningen, vilket är Zip. Och detta skulle fungera för någon form av förlängning, .docx för Word eller .pdf för en PDF fil eller .html för en HTML-fil. Ganska mycket, skriva ett funktion som kan göra det. Jag faktiskt kommer att växla över till IDE. Det är inte load-- där vi går. Så allt jag har gjort här är skapade en char *, en första sträng, kallas pset7.zip. Jag kommer att zooma in. Jag har skapat en andra strängen kallas finalpaper.docx. Och skriva mig en funktion som när kallas kommer att bara skriva ut filnamnstilläggen. Kanske ta ett par minuter att tänka om hur du ska göra detta. Något mer utmanande än den förra, men användningen är nästan exakt samma. Ja. Så skriver en funktion som kallas förlängning att om jag ger dig namnet på en fil, om jag skulle ge dig pset7.zip-- jag vill att du ska skriva ut bara .zip. Om jag ger du finalpaper.docx, bara skriva ut .docx, bara en förlängning av vad fil. Detta egentligen bara tar två rader kod. Så försök att se om du kan kanske göra det i det. Faktiskt, det bara tar en kodrad. Men två linjer är förmodligen mer standard. Vilken funktion är vi förmodligen kommer att vilja ringa? PUBLIK: strrchr. ANDI PENG: strrchr, höger. Eftersom vi letar från höger till vänster. Jag ville inte ge er ett exempel som detta, men om jag gav er ett exempel som www.apple.com och jag ville bara .com, skulle det vara en exempel där du vill ringa sista instans av perioden och inte den första, eller hur? Om du var samtals strchr, det skulle ha gett dig apple.com. Om du ringde strrchr, det skulle ha gett dig .com. Och så var försiktig på vilken ways-- i mitt exempel, kan du förmodligen skulle ha just skrivit den med strchr, eftersom det finns bara en prick. Men i andra fall, som kanske inte är fallet. Och så försöker alltid att utforma koden väl, så that-- ja? PUBLIK: Så i exempel du sa, när du strrchr det skulle ge dig .com eller bara komma? ANDI PENG: Det skulle ge dig .com. PUBLIK: OK. ANDI PENG: Ja. Det pekar på där den fann den. Ja. 30 sekunder kanske? Ja. Alla bra eller kanske lite mer tid? Handuppräckning? Visa huvuden? Häftigt. Någon som vill ge mig den första kodrad för det här programmet? PUBLIK: [OHÖRBAR]. ANDI Peng: Så först av allt, låt oss kanske bryta ner det. Så vad är avkastningen typ av strrchr? Låt oss gå tillbaka. strrchr, vad är returtypen? PUBLIK: Char * ANDI PENG: Det är en char *, eller hur? Vilket betyder att du antagligen kommer att vilja skapa en annan char * att typ av butik närhelst det är återvända till, eller hur? För om du ringer funktionen strrchr, det kommer att ge dig en pekare till varhelst det sig att sista perioden, höger? Men du kommer att vilja lagra den någonstans, eller hur? Och så hur vi koda detta i vårt program? PUBLIK: Du gör char * [OHÖRBAR]. ANDI PENG: Japp. PUBLIK: [OHÖRBAR]. ANDI Peng: strrchr. Ja. Åh, missade ett r där. PUBLIK: Filnamn [OHÖRBAR]. Vad är det? Åh, det är bara är. ANDI PENG: Åh, det är bara är. Japp, sorry. Mitt fel. Exempel matchade inte. PUBLIK: Och sedan dot. ANDI PENG: Japp. Var försiktig när ni är-- här, låt mig zooma in. Det går vi. Var försiktig när ni skriver, särskilt när du gör bara en röding. Det är verkligen lätt att av misstag bara gör dubbla citattecken i stället för singel. Det kommer inte att fungera. Din kompilator kommer att klaga. Och din funktion är bara inte kommer att köra. Och så var försiktig när du gör saker med tecken att det är enkla citattecken. Och det gör den här raden av kod vettigt för alla? Vi skapar en char * pekare. Eftersom strrchr återgår något av typen pekare. Och så vi kommer att kalla strchr på s, som är strängen filen namn, som vi passerar. Och vi letar efter den sista instans av en period, som är bara enstaka citat dot enda anbud. Ja. PUBLIK: När vi använder dubbla citat och när vi använder apostrof? ANDI PENG: Ja. Så citationstecken är alltid används när du har en rad mer än bara en. Så om du gör strstr, vilket är det som du söka efter en sträng för sträng, du skulle låta det gå i dubbla citattecken. Men helst är det bara ett enda tecken, du vill göra enkla citattecken. Det är en bra sak att ha i åtanke. Så nu när vi har vår pekare, vad gör vi med det? Jag ber er att skriva ut det, eller hur? Så [OHÖRBAR], du vill ge mig kodraden? PUBLIK: printf-- ANDI PENG: Ja. PUBLIK: --you behöver en platshållare. ANDI PENG: Japp. PUBLIK: Skriv ut platshållare. Jag vet inte vad platsen innehavaren men pekar på den. OK. Låt oss hoppa över den nu då. PUBLIK: Och sedan comma-- ANDI PENG: Pointer, eller hur? Målgrupp: Pointer, Japp. ANDI PENG: Så typ av en kuggfråga, har att göra med pekare och strängar att vi har sådan talat om redan. Vilken typ av platshållare gör vi behov av en pekare för en char *? PUBLIK: [OHÖRBAR]. ANDI PENG: Ja. Det är enklare än ni tror. PUBLIK: String? ANDI PENG: Det är bara en sträng, exakt. Eftersom ihåg strängar inte verkligen existerar. En char * är den exakta samma sak som en sträng. Och så egentligen detta är är vad borde ha använts hela tiden. OK. Låt oss se om vi kan försöka köra detta. Låt oss göra en make förlängning. Häftigt. Ni ser hur jag passerade i psset7.zip och finalpaper.docx, och det bara skrivs ut .zip och .docx? Vettigt? OK, så jag tror på ditt utseende upp funktion i din pset du är kommer att bli tillfrågad om sträng har en viss slut, du måste ge en viss felkod. Och så det blir ganska hemskt. För om du kan räkna reda på vad förlängningen är, Du kan sedan jämföra det förlängning för att se om det matchar upp med en viss utsträckning. Och då kan du återvända ett felmeddelande, eller hur? Ja. PUBLIK: Så vi inte måste lägga 1 eller något? Pekaren kommer att gå till the-- ANDI PENG: Nope. Publik: --point efter den. ANDI PENG: Ja. Det pekar exakt där händelsen var. Så till exempel här, vi är söka efter perioden. Så det kommer att återvända en pekare till perioden. Och då det kommer att skriva ut ut med början på perioden. Så du inte behöver lägga till en. Även det är helt bra att, om du någonsin osäker, bara slag av testa det själv. Bygg ett provprogram. Testa det själv och se där det är utskrift. Det är inte heller ett dåligt sätt att göra det. Häftigt. Och det är ganska mycket alla Jag hade för er i dag. Vi gjorde en hel del pset saker idag. Så när du är osäker, liksom Jag sa, alltid leta upp den string.h bibliotek för denna pset. Det kommer att bli en hel del funktion i det som kan vara användbar. Vissa kanske inte är användbar. Jag vet inte riktigt. Vada igenom det, det finns en hel massa av dem. strstr, strchr, strrchr finns super, super bra, liksom de strcpys och strcasecmps att vi redan har använt. Det är bara mycket messing med strängar, bestämma om de är lika, få saker ur strängar, och att kunna öppna filer på rätt sätt. Det är en hel del av fil I / O. pset är verkligen inte så illa. Du kommer att ta en titta på det, ladda ner den, och se en hel del kod. Inga bekymmer, koden du faktiskt skriver är inte dåligt alls. Om någon har problem med sina server, kom se mig efter avsnitt. Apologize återigen för att inte vilket godis till Halloween. Jag vet inte vad som var fel med mig. Men vi kommer att ha dubbel godis nästa gång. Och lycka till i din pset denna vecka. Japp.