ANDI Peng: We zijn bijna door alle psets. In feite, we zijn door de meerderheid van de moeilijkste psets. Dus we zijn eigenlijk alleen gaat soort wind door middel van de komende weken. We gaan beginnen te praten over onze afstudeeropdrachten, de beurzen op komst in de komende weken. En het leven zal een briesje. Dus niet te veel vandaag. Hopelijk zal eigenlijk wind via de agenda voor vandaag, en dan hier weg met wat tijd te sparen. Ook wil ik mijn excuses aanbieden het ontbreken van snoep vandaag. Ik weet niet waarom. Maar in de week voorafgaand Halloween, ik wil snoep vergeten. Dus ik ben eigenlijk gewoon een uitgestrekt teleurstelling voor je nu. Want ik herinner me letterlijk snoep voor elke klasse, maar Halloween. Maar volgende week, zal ik breng het dubbele van de hoeveelheid snoep goed te maken voor dat allemaal voor jou. Het zal geweldig zijn. Dus ik heb een paar aankondigingen met betrekking tot een aantal plannen. Ik heb een aantal scheduling problemen. Dan gaan we door naar praten over wat er chmod genoemd. We gaan om te praten over snel TCP / IP HTTP. En dan gaan we onze code eigen website met behulp van HTML en CSS. En dan zal ik daadwerkelijk verlaten misschien zoals 20 minuten om te praten over pset6. Omdat pset6 is eigenlijk een heleboel dingen die we al eerder hebben gezien, maar ik wilde vernieuwen een aantal van deze concepten evenals leren een paar nieuwe functies. Koel. Dus allereerst welkom terug van vakantie. Ik hoop dat je pauze was aangenaam. Zou heb je voor de pauze? PUBLIEK: Ging naar New York. ANDI Peng: Je ging naar New York? Ik denk dat de helft van onze school ging naar New York. Dat zit wel goed. Ik heb de meeste van mijn pauze zittend in bed Netflixing. En het was een goede tijd. Maar we zijn nu terug, terug in sessie, terug in de swing van de dingen. We hebben een PSET vanwege deze vrijdag op de middag. Ik denk dat je al hebt opgepikt uw quiz, ja? Dus iedereen die heeft niet hadden hun quizzen, gelieve te komen en krijg je quizzen van mij aan het eind van de sectie. Of track me down op de campus. Ik zal het ergens met mij. Onze laatste project pre-voorstel ook. Dus voor degenen onder ons die nog nooit hebben genomen deze klasse voor, het sluitstuk van CS50 is zeer culmineerde in deze grootse project dat studenten voorstellen. En de pre-voorstel, slechts een algemeen idee van wat men zou willen doen voor hun project, dat idee is te wijten maandag, volgende week maandag op de middag. Dus vrij veel, David denk ik zal praten meer over dit in collegezaal als hij al niet. En er is een solide pagina op onze website uit te leggen aan alle eisen van het project. Maar in wezen, pick een onderwerp dat je hebt is geïnteresseerd in in uw hele tijd hier bij CS, of het gamen of ontwerp of video of wat dan ook. En je kunt echt soort gelden nu een deel van de lessen dat we hier hebben geleerd in CS50-- hi, welcome-- vrijwel uitvoeren een afstudeerproject van uw keuze. Alle dat is te wijten maandag is slechts een korte blurb via e-mail voor mij, een korte zin, als, hey, Andi, Ik ben echt geïnteresseerd in het ontwerpen een spel dat dit doet voor iOS. Koel. Laat me je kort aanvankelijke ideeën voor uw laatste projecten. En we zullen door middel van praten of niet dat is eigenlijk een goed idee of niet, als het een haalbaar idee of niet. Maar de pre-voorstel is het gevolg van volgende week maandag. pset6, onze mooie web-- die verkeerd is. Pset7? pset6? Het is pset6, toch? pset6, onze webserver, is te wijten Vrijdag 's middags met de late dag. Kantooruren te hervatten normaal van maandag donderdag 8:00-11:00 deze week. Ik denk Commons voor de volgende drie nachten. Koel. Voordat we naar materiaal, doet iedereen Voor vragen, grappen, verhalen? Wat heb je gedaan voor de herfst break? Publiek: Wat ik doe? ANDI PENG: Already het is eeuwen geleden eigenlijk. Christabel ging naar New York. Ik verbleef hier en Netflixed. PUBLIEK: Oh, ja ik was hier. ANDI Peng: Oh, OK. Publiek: Ik weet het niet meer Wat bijzonder. ANDI PENG: Dat is OK. Publiek: Netflixing waarschijnlijk. ANDI Peng: Netflixing. Ja, het is een goede tijd. OK. Prima. Heeft u vragen voordat We springen in materiaal? Ook gaan we proberen om snelheid door sectie vandaag, niet te veel te dekken. En hopelijk zullen we krijgen hier een beetje vroeg. Sorry voor niet snoep, ook. Ik ben een teleurstelling, vooral tijdens Halloween. Prima. Koel. Dus we gaan beginnen te praten over een command line argument genoemd chmod. chmod, al is het slechts een Unix-systeem call uitgevoerd vanaf de opdrachtregel om permissies te veranderen. Dus bijvoorbeeld, we hebben Alle gestuit op een pagina als dit waarschijnlijk ergens in onze levensduur van het zijn een internet gebruiker, waar onze webserver ons de fout van Forbidden. Je hebt geen toestemming hebben om toegang te krijgen, yadda, yadda, yadda, op deze server. Al dat werkelijk betekent is dat de permissies die gekoppeld waren aan wat pagina die u probeert te bereiken waren niet voor u open. Dus vrij veel, chmod is de wijze waarop kunnen we die rechten systeem te wijzigen iedereen geven de gebruiker de groep, of de wereld, of combinatie van deze toegang bepaalde bestanden, directories, alles echt, een soort van systeem een besturingssysteem. Dus als een van de jongens hebben computers als je je voelt als het volgende samen met mij vandaag, helemaal gerust gewoon dingen typen in. Zo niet, dan kunt u gewoon rond te hangen. Dus ik ga eigenlijk trekken mijn terminal nu. Dus de opdracht uit te voeren chmod of minstens even een lijst van de machtigingen van uw bestandsmap, net ls-l. Zoals u kunt zien, een heleboel stuff opduikt waarvan de meeste is belangrijk voor ons op de linkerkant hier. Jullie zien een bos van rs, ws, 1 /. Ja. Die zijn in wezen net alle permissies de wat bepaalde mappen verklaren en bestanden van uw systeem. Dus laten we gaan terug naar de kracht punt hier. Dus naast de bestandsnamen zoals jullie kunnen zien aan de rechterkant, We zijn op zoek naar in wezen te zien alleen de kolom aan de linkerkant. Dus naast gewoon de bestandsnamen, we kan de permissies van bestanden te zien, hun eigenaar groep, de groepsnaam, de datum dat het bestand voor het laatst gewijzigd, et cetera. U kunt een heleboel dingen met behulp van chmod zien. Dus de manier waarop we lezen chmod is dat de eerste letter die we vrij veel negeren in termen van het lezen toestemmingen. De eerste letter gewoon vertelt ons wat type systeem dat we toegang. d, in dit geval een map of directory. Dus we weten dat op dit moment mijn werkruimte sectie zeven was een directory. En dan zie je drie triades, in wezen net drie sets van drie karakters. En je kunt bedenken van elk als een beetje. Dus je hoeft alleen drie sets drie bits, negen bits in totaal. Je behandelt ze in groepjes van drie. Dus de eerste groep van drie is altijd uw gebruikersrechten. Uw tweede groep van drie is altijd uw groep permissies. En je derde set van drie is altijd als de wereld, het overal toestemmingen. Dus ik denk dat het makkelijk vraag is wat is het verschil tussen gebruikers en groepen. Het belangrijkste verschil tussen de gebruiker en de groep is dat een gebruiker is gewoon u persoonlijk toegang tot wat het nu is. Een groep kan zijn als u meerdere hebt gebruikers op een computer, bijvoorbeeld. Ieder van hen kan worden behandeld als een groep. En dan is de wereld alleen de wereld, iedereen. Dus we kunnen later zien hoe we kunnen wijzigen die in verschillende machtigingen. Dus vrij veel, we zijn gaat nog steeds focussen aan de zijde aan de linkerkant, waar voor directory CS50 we zien drwx, waar de r betekent gewoon dat het leesbaar. De w gewoon betekent dat het beschrijfbaar. En dan is het gewoon x betekent dat het uitvoerbaar. Je zou het soort denken van niet zinvol. Het moet e. Maar x eigenlijk soort werkt een beetje beter, want je kunt herinneren beter. Dus de drie soorten van dingen die je kunnen doen, kunt u ofwel een bestand te lezen, kunt u toestemming om een ​​te schrijven bestand, of je kan toestemming hebt een bestand uit te voeren. En dus is de manier waarop we eigenlijk vertegenwoordigen die in bits de nummers 4, 2 en 1. Dus alles is dat leesbaar is vertegenwoordigd door het aantal 4. Iets dat is beschrijfbaar wordt weergegeven door 2. En alles dat is uitvoerbaar zoals weergegeven door 1. Dus in die zin kunnen we ook vertegenwoordigen deze numbers-- Hallo, welkom, op een andere manier. Sorry. Voordat iedereen, ga ik verontschuldigingen namens iedereen het invoeren van nu de klas. Ik vergat snoep vandaag. Het spijt me dat ik ben een mislukking deze week van Halloween. Ik zal het dubbele van de hoeveelheid te brengen snoep volgende keer om het goed te maken. Maar anyways, sorry over die jongens, sorry. Dus de manier waarop we kunnen eigenlijk invoeren op onze commando het argument is dat we kan chmod groep slash toestemmingen te doen, waar de groep is gewoon wat groep we proberen te veranderen. En de machtigingen wat we willen toevoegen. Dus bijvoorbeeld de plus voegt permissies, en het aftrekken neemt permissies weg. En de aard van de groep hebben we ons een voor iedereen, u voor de gebruikers, g groepen, of o anderen. Het is een beetje abstract nu. Maar we gaan over een paar voorbeelden alleen maar om dit echt snel aan te tonen. Iedereen goed op deze glijbaan, dus ik kan verder gaan? Koel. Dus bijvoorbeeld, rwx. Voordat we praten over wat het voorstelt, allereerst wat betekent rwx betekenen? Als je ziet dat dit bepaalde bestand heeft machtigingen van rwx, wat betekent dat de persoon zou kunnen doen? PUBLIEK: lezen, schrijven en uitvoeren. ANDI Peng: Ja, precies. U kunt schrijven lezen en uitvoeren. Omdat alle drie van die personages aanwezig zijn. Dus als we doorgaan en praten dit in termen van bits, de rwx kan ook worden weergegeven als 700. Want zoals u kunt zien in welke soort file directory toestemming er drie triaden. In dit geval wordt alleen de eerste triade heeft alles daar. Dus in dit geval, de r 4, w is 2, en x is 1. Als je die bij elkaar optelt, is het 7. En dus als je om te zetten het naar binair, het is 700. Omdat 7 is de eerste triade. 0, er is niets aanwezig in de tweede triade. En dan is er niets aanwezig is in de derde triade, dus dat is een andere 0. Dus in dezelfde zin, een bos van drietallen kunnen worden vertegenwoordigd alleen in stukjes, net binair ook. Dus 700 betekent precies hetzelfde als rwx ------ in termen van rechten. Iedereen duidelijk over? Koel. En zo chmod 111 zou geven die machtigingen voor het bestand? Geven jullie een paar seconden dit om te zetten. Vergeet niet, de eerste triade is voor de gebruiker. De tweede triade is voor de groep. En de derde triade is voor iedereen. En zo chmod 111 zou geven die soort toestemmingen en aan wie? Neem een ​​paar seconden denken en terug te komen. Ja. Publiek: Dus iedereen kan het uit te voeren. ANDI Peng: Yup, precies. Publiek: Maar niemand kan lezen of schrijven. ANDI Peng: En voel vrij uit te leggen aan iedereen Hoe kwam je tot die conclusie. PUBLIEK: Nou, voor de gebruiker, de groep, en de wereld, het is allemaal 1, dat is de code voor executable. ANDI Peng: Ja, precies. Zo 1, in dit geval, alles wat we weten is dat is de uitvoerbare code. Omdat lezen 4. Schrijven is 2. En het uitvoerbare 1. Zo wordt alle drie triaden zijn 1, dat betekent dat de wereld, de gebruiker, en de groep, zij zijn allemaal uitvoerbaar. Iedereen goed met dat? OK. En dus is de tweede manier dat we kunnen eigenlijk schrijf dit ook is dat je kon gewoon chmod doen een plus x. a: alle of iedereen. De plus betekent het geven van rechten aan. En dan is de x betekent executable. Dus er is twee opdrachten eigenlijk identiek. Dus als je wilt uitvoeren dit in uw terminal, je doet chmod 111, naam van uw directory of het bestand. Of je kunt doen chmod een plus x, Naam van uw telefoonboek bestand. Hetzelfde, maar een eenvoudiger manier, misschien voor sommigen te vertegenwoordigen of te wijzigen bestandsrechten. Ieder OK met chmod voordat we verder gaan? Koel. Dus nu gaan we het hoofd in een paar slides van zeer abstracte begrippen dat ik vrij veel gaat door middel van wind. En het is helemaal OK als je niet alles begrijpen. Zelfs nu, doe ik nog steeds niet echt volledig begrijpt alles. Maar het is meer van het krijgen het hoogste niveau inzicht hoe sommige van deze dingen werken. Dus we gaan praten snel over TCP / IP, dat is gewoon Transmission Control Protocol slash Internet Protocol. Herinneren van de lezing, David, heeft hij je leren het voorbeeld, waar hij zou passeren de noten in een envelop naar de top van de collegezaal van? Dus in de wet school auditorium David aangetoond wezen Hoe TCP / IP werkt die zin dat alles wat is is een middel om ervoor te zorgen dat de gegevens is via een server geleverd of op het internet. Dus in het voorbeeld van de envelop en het bericht de gebruiker aan het einde kon zien dat, oh, moest ik krijgen vier pakketten van informatie. Maar ik eigenlijk alleen ontvangen drie. Dat betekent dat ik moet missen een. En één was niet geleverd. Zo TCP / IP op internet, via uw computer en de server, doet precies hetzelfde. Alles wat het doet is geeft u een kader waarin een verloren data pakketten kunnen opnieuw worden verzonden en ontvangen. Net als op het internet wanneer je probeert toegang tot bestanden online of stuur bestanden uw vriend of kijk op web browsers, duizenden en duizenden miljarden en miljarden bytes informatie worden overgedragen per milliseconde. En het is echt, echt verwarrend. En het is echt moeilijk om eigenlijk weten wat er is verzonden en wat niet is verzonden. En dus TCP / IP specificeert gewoon een samenhangend kader waarin uw web browser en uw server kan soort communiceren met elkaar, net zorg ervoor dat de pakketten zijn allemaal hier en niets is verloren en al de gegevens die u gevraagd eigenlijk correct weergegeven. Iedereen op OK gewoon dat zeer korte hoog niveau te begrijpen? Koel. Dus dan gaan we verhuizen in het over HTTP, dat is gewoon Hypertext Transfer Protocol. HTTP, al is het is wat elke pagina of het bestand wordt geopend op uw website, retourneert de server een HTTP statuscode reactie het verzoek zorgen dat ofwel, oh, dit verzoek ging door. En alles is correct weergegeven. Of, oh, nee, 404. Er is iets fout gegaan. Oh, ik kan niet worden weergegeven. Al is het is dat wat je probeert om toegang te krijgen, te gebruiken als de gebruiker probeert toegang te krijgen, op de internet-- gewoon om ervoor te zorgen dat je ofwel met succes hebt toegankelijk wat het ook was of niet succes benaderd wat het ook was. En dus is de HTTP-status code geeft je gewoon een middel om te kunnen weten of of het niet succesvol was of niet. Dus bijvoorbeeld een voorbeeld verzoek. U kunt hier zien dat het meestal meestal vier lijnen. We hebben een GET HTTP 1.1, dat is gewoon de methode verzoek URL, het protocol versie, de naam van het veld, en het veld waarde. Dus geen noodzaak om volledig onthouden hier iets. Gewoon een soort van vertrouwd jezelf met hoe deze te kijken. In dit voorbeeld, de werkwijze verzoek URL is gewoon wat verzoek je stuurt de server. Als, hey, server, ik echt wil toegang yadda, yadda, yadda, HTTP-pagina. Het protocol versie is wat versie van uw gastheer of server wordt gebruikt om informatie. De naam van het veld is de website of de URL die u probeert te openen, in dit geval, www.apple.com. En het veld waarde gewoon typisch naam, waarde. En het kan een soort van combinatie van letters of cijfers of wat dan ook. Dus een typisch verzoek, zodat wat uw computer eigenlijk stuurt naar de server die zegt: hey, weet je wat ik nodig heb dit weergegeven, dat is de aard van de aanvraag dat zij daadwerkelijk ontvangt. Een voorbeeld van wat de reactie server zou terug naar u zou vrijwel hetzelfde zijn, behalve een statuscode boven. Dus 200, 2 0 0 altijd de status code voor OK. Als, OK, dit verzoek ging door. Je was in staat om toegang te krijgen alles goed. Het leven is goed. Het leven is goed. Alles is helemaal goed. En dus dit gewoon vertelt uw browser en server, hey, goed alles is. Ik heb alle informatie die ik nodig heb. Koel. Maar het probleem is soms problemen komen wanneer je have-- duren denk ik Ik sprak over duplicaten. Je hebt minder goede reacties. Dus bijvoorbeeld, 404 is de pagina niet gevonden. Heb je soms een Verboden toegang. Je hebt verschillende andere statuscodes dat ik zeker dat je hebt allemaal gezien als je proberen om onderzoek te doen op het internet. En uw browser geeft u het, nee, geen toegang tot. En je bent als, nou, crap. Dus gewoon vrij veel, er is een aantal mooie gemeenschappelijke statuscodes. Misschien vertrouwd te maken met welke deze zijn. De grappigste die Ik denk dat ik ooit heb gehoord van-- als je toevallig opzoeken allemaal online, om wat voor reden is er eigenlijk een echte statuscode belde 418 Ik ben een theepot. Ik googled waar de oorsprong van deze was uit. En blijkbaar een April Fools ' Dag een paar decennia geleden, iemand dacht dat het hilarisch zou zijn een nieuwe status code genaamd 418 creëren Ik ben een theepot. Rechtmatig, de naam van deze code wordt genoemd Ik ben een theepot. Ik vergeet welke pagina je moet gaan om daadwerkelijk dit scherm. Maar blijkbaar, kun je eigenlijk krijgen de status code van ik ben een theepot of andere manier door middel van iets te doen. Dus er is honderden en honderden statuscodes. Sommigen van hen maken meer gevoel dan anderen. Maar vrijwel alleen vertrouwd jezelf met de meest voorkomende. De gevraagde entiteit lichaam is kort en stout, blijkbaar. Dus soms zijn er meer beangstigend fouten dan ben ik een theepot. Maar dit is er een die ik denk je soort van hoop te raken. Maar ik denk niet dat je wil. Iedereen goed op enkel de status codes, verzoeken, processen, maken ervoor dat informatie correct is geleverd? Dus nu gaan we om de overgang in een leuke deel van de sectie vandaag, waar we een beetje praten over HTML. HTML, al is het HyperText Markup Language. Het is gewoon de standaard taal u gebruiken om alle web te creëren pagina's op het internet. Dus elke webpagina, wat is uw favoriete website? Wat is uw favoriete webpagina? PUBLIEK: [onverstaanbaar]. ANDI PENG: Sorry? Publiek: Tumblr. ANDI Peng: Tumblr. Dus Tumblr is geschreven in HTML. En dus zullen we daadwerkelijk gaan door en spelen met een aantal van deze dingen later. Vrijwel alles wat je moeten leren, om te weten, naar HTML te schrijven kunt u waarschijnlijk gewoon Google op het internet. HTML, het is niet een programma als C waar u variabelen kunt maken en doen coole dingen mee. Het is meer gewoon, oh, dit is hoe ik willen dat dingen op mijn website. En ik ga gewoon om het in te zetten. En het gaat om het te stylen. Dus HTML, in zekere zin, het is net als een opmaak of sjabloon taal. Het is een stuk makkelijker. Het is een stuk makkelijker om te leren, een stuk makkelijker om in te schrijven dan uw typische programmering taal, zeer gemakkelijk, zeer gebruiksvriendelijk toegankelijk en vriendelijk. Dus we eigenlijk gaan spelen rond, schrijven onze eigen pagina's vandaag. Maar voordat we beginnen, ik wil gewoon gaan over enkele korte best practices. Omdat HTML is zo'n gemakkelijke taal en omdat zelfs als je een paar dingen mis, het soms misschien niet opmerkt, we willen ervoor zorgen dat we eigenlijk vast te houden aan onze 'best practices' om ervoor te zorgen dat de dingen die rond kon gaan, maar niet altijd van plan om niet rechts gaan zorg ervoor dat ze tot een minimum beperkt. Dus vrij veel, zorg ervoor dat Uw sluiten alle labels als je aan het schrijven bent in HTML. Als je het openen van een lichaam, zorg ervoor dat je bent te sluiten met een lichaam ergens. Wilt u ervoor zorgen dat uw webpagina valideert met behulp wat heet de W3 Validator. Je kunt gewoon van Google dat online, en er is een link naar het. En dan wil je afzonderlijke HTML, waarbij is uw opmaaktaal van uw stijl, dat is de CSS taal die David aangetoond dat we ook gaan om een ​​beetje te spelen met een lezing. Koel. Dus wanneer u wilt uitvoeren HTML het CS50 apparaat, we gaan naar een run programma genaamd apache, die allemaal is het gewoon een ingebouwde webserver dat iedereen in CS50 toegang heeft. We noemen het apache50 gewoon omdat we graag alles 50 in CS50 noemen. Dus de manier waarop u de CS50 web start server is door het typen op uw bevel lijn apache50 beginnen stip. En als je wilt om het te beëindigen op elk gewenst tijd, denk je apache50 uiteindelijk geen punt. En je gewoon op Enter. En het moet hier te stevenen tot binnenkort. Ja. Dus ik ga gewoon om snel over te gaan een voorbeeld van een echt korte webpagina. En we gaan besteden zoals 10, 15 minuten speeltijd rond het schrijven van onze eigen webpagina's. OK. Dus hier in de IDE-- kan iedereen zien dat? Niet echt. Hier zal ik in te zoomen. Ik heb net deze korte template hier met niets eigenlijk in. We gaan gewoon om snel te schrijven een HTML-programma waarin we net zeg hallo tegen de wereld. Dus hetzelfde als in C, nu zijn we gewoon gaan om het te doen in HTML. Heeft iemand willen eigenlijk alleen probeer mij de eerste wat je zou hebben in een HTML-document om te zetten? Ja. Doelgroep: De beugels, de [onverstaanbaar]. ANDI Peng: Yep. Dus iets dat zeer uniek aan HTML die we meestal traditioneel niet tegenkomen in de andere command lijnniveau programmeertalen is dat we eigenlijk aan geef het type bestand dat dit gaat worden aan de top van onze code. Dus in dit instance-- denk ik dat is de juiste commando, toch? Ja. Op de top, je gewoon wilt opnemen knal DOCTYPE html haakjes net om uw computer te vertellen, he, kijk uit. En HTML-document komt. En hoe willen we om te beginnen ons bestand af? Als we willen gewoon om hallo te zeggen, hebben een webpagina die hallo zegt tegen de wereld, hoe kunnen we gaan over het bouwen van deze? Eigenlijk, laten we richten op Google. En we kunnen eigenlijk dit te doen. Ja. Daar gaan we. Dus HTML. Zoals u kunt zien, mijn browser is eigenlijk dit automatisch styling voor mij. Hetzelfde als in C, wanneer u creëren van een open accolade, uw browser automatisch voegt in een nauwe accolade. Gelukkig, onze IDE houdt doet dit voor ons ook. Dus nu kunnen we vorm van het type het begin van een label, en het zal altijd vertellen ons vergeet om het uiteinde van de tag typen. Ik denk dat dit moet worden geactiveerd. En dan willen we naar toe, altijd, een kop waarin de titel. We willen gewoon misschien te bellen dit hallo, en vervolgens het lichaam. En daar ga je. Dat is eigenlijk onze HTML-document. Dus de manier waarop elk HTML-document is altijd vormgegeven in-- hetzelfde met int main leegte. Je wilt altijd hebben HTML een open en sluit tag aan de boven- en onderkant van uw code. U wilt een hoofd in hebben van die de titel bevat, maar wat gaat naar het tabblad van uw website te tonen pagina, en dan een lichaam binnen waarvan daadwerkelijk de inhoud weer te geven van wat je wilt doen. Dus als je wilde eigenlijk draaien dit, ik ga om uit opnieuw. Je kunt eigenlijk beginnen apache50 beginnen dot. Koel. En dus zoals je kunt zien, nu deze link is opgedoken. Het zegt dat uw site is nu verkrijgbaar bij sommige onderstaande link. Dus al onze IDE heeft done-- niet IDE, sorry-- ja, onze IDE heeft gedaan is het creëren van een web koppeling waarop al onze webpagina's kan worden geraadpleegd op de server. Dus laten we eens een kijkje hier. Laten we op deze, ga naar hello.html. En zie je een heel eenvoudige webpagina hello wereld. OK. We eigenlijk zomaar hebben everyone-- ja, wat is er? Publiek: Ik heb een fundamentele vraag. ANDI Peng: Yup. PUBLIEK: Hoe ga je te redden het bestand als een HTML? ANDI PENG: Ja. Dus als ik een nieuw bestand te maken, als ik dat doe Nieuw bestand, Untittle, als ik dat doe, section.html, boom, dat is alles wat ik moet doen. PUBLIEK: [onverstaanbaar]? ANDI PENG: No. PUBLIEK: [onverstaanbaar]. ANDI PENG: No. PUBLIEK: [onverstaanbaar]. ANDI PENG: Ja. Vrij veel, de uitbreiding op het bestand dat in je IDE, dat vertelt de computer, dat vertelt de browser, hey, kijk uit. Dit gaat code geschreven in deze taal. Dus bijvoorbeeld in Microsoft Woord, wat hebben alle Word-documenten eindigen met welke extensie? .doc of .docx, toch? Dat alles doet is specificeert aan uw besturingssysteem, hey, u een Word-document komen heb. Open het met Word. Hetzelfde met PDF's. Het weet, oh, ik moet het openstellen van dit bestand met Adobe Reader of Adobe Acrobat. En zo extensies werken de op dezelfde manier als op uw computer. Als u uw code pagina opgeven te noemen HTML, dan weet oh, je hebt HTML-code. Ik ga om het te behandelen als html-code. Dus het is super slim in die zin. Dus iedereen, laten we als 10 minuten en gewoon onze eigen websites. Laten toe te voegen in de mooie dingen. Voel je vrij om te zeggen wat je wilt. Ik wil alleen maar om ervoor te zorgen dat ieders servers correct worden uitgevoerd voordat we bevrijden u in de PSET. Want als uw servers niet lopen voor de PSET, dat zal echt, echt slecht. Ik ga gewoon rond zweven en zien wat iedereen werkt. Hoe gaat het? Publiek: Ik draaide op mijn computer. ANDI PENG: Dat is OK. PUBLIEK: [onverstaanbaar]. ANDI Peng: gewoon je IDE. Ja. PUBLIEK: [onverstaanbaar]. ANDI Peng: Het is OK. PUBLIEK: [onverstaanbaar]. ANDI Peng: Helemaal prima. Is iedereen toegang hun web-server OK? Wordt apache50 loopt OK? Ik denk dat in een aantal van de andere secties, we had problemen met mensen die niet de mogelijkheid om toegang te krijgen tot de server. Ja. Zodat je alleen nog maar apache50 ruimte startveld periode. PUBLIEK: [onverstaanbaar]. ANDI Peng: Yup. Goed? PUBLIEK: [onverstaanbaar]. ANDI Peng: Oh, OK. Dus je zou om een ​​ruimte te hebben. Dus apache50-- Publiek: ik deed. ANDI Peng: --start ruimte. PUBLIEK: Oh, ruimte stip. ANDI Peng: Yup, ruimte stip. Daar ga je. Dus dan als je een HTML-pagina aangemaakt, dan kun je gewoon direct naar om de link die het specificeert. En je moet in staat zijn om toegang te krijgen. Iedereen in staat geweest om toegang tot hun webpagina's OK? PUBLIEK: [onverstaanbaar]. ANDI Peng: Oh, dat is OK. PUBLIEK: [onverstaanbaar]. ANDI PENG: Ja. Ik denk dat je eigenlijk kunt openen het binnen uw browser, browser en niet alleen uw IDE browser. Ja, ik denk dat als je kopiëren en plakken. Publiek: En dan hoe kunnen we zet het uit? [ONHOORBAAR] ANDI Peng: Ja, je doet apache50 stoppen zonder periode. Ja. PUBLIEK: [onverstaanbaar]. ANDI Peng: Met geen tijd. Ja. Daar gaan we. Ja. We creëren onze eigen webpagina's. PUBLIEK: Oh, cool. ANDI PENG: Ja. Publiek: Ik heb een vraag. Dus apache 50-- ANDI Peng: 50, ja. PUBLIEK: [onverstaanbaar]. ANDI Peng: Wat? Dat is raar. Kijk, dat was een soort van het probleem Dat was voor het gebeuren. OK. Zie me na sectie. Omdat we met een aantal problemen met de server. En u wilt maken ervoor dat uw server running voor aanvang van de PSET. Want je zult het nodig hebben. Ja. Is er iemand anders die niet is geweest staat om hun server te beginnen? Voor degenen onder u die wilt toevoegen extra stijl aan uw webpagina's, kunnen we eigenlijk doen wat David deed in collegezaal ook, die is het creëren van een extra stijl blad, dat is een punt CSS, Cascading Style Sheet en eigenlijk alleen maar toe te voegen in. Dus bijvoorbeeld, heb ik zojuist vrijwel bijna exact dezelfde één David deed in collegezaal. Je kunt vrijwel alleen lichaam doen. Je hebt wat zijn tags genoemd waarin u kunt toepassen op welke sectie IDE U wilt binnen uw werkelijke naar HTML-pagina. Zodat het lichaam van de pagina, u kunt tekst align center doen. En dan zal ik creatief een label genaamd top binnen die wil ik deze dingen gebeuren, wijs een grotere pixelgrootte voor het lettertype. Ik wil het lettertype gewicht te vet zijn. En ik wil de kleur zijn blauw, net willekeurige waarden die ik besloten om te kiezen. Ik kan een ander label genaamd midden te creëren. Lettergrootte, maken het een beetje kleiner. En dan kan ik nog een tag maken genaamd bodem waar ik wil de lettergrootte zelfs nog kleiner zijn. En zo vrij veel is dit enkel voorbeeld van de broncode of de bron style sheets dat het heel gemakkelijk om gewoon Google. Als je zegt, oh, ik wil dat mijn lettertype worden cursief en donkergroen, kunt u waarschijnlijk Google, en dan zal het u vertellen de juiste markeringen of ID's te creëren. En dus is de manier waarop je zou eigenlijk soort hebben dit in een HTML-document of gebruik het is alles wat je hebt om hier te doen is aan het hoofd Voeg een link naar de style sheet. Dus je kunt gewoon een link href gelijken ongeacht de naam van uw style sheet is. En dan is de relatie is een style sheet. Dus binnen een HTML document, zolang zoals u onder dit punt CSS-sheet, moet u in staat om toegang te krijgen en hebben de eigenschappen daar. Dus bijvoorbeeld, hier heb ik net maak een ander voorbeeld webpagina. Dit is van harte welkom om deel CS50 Dinsdag 2:00-03:30 met mij. En dan heb ik een mooi beeld toegevoegd dat we mogelijk moeten kunnen zien. Dus als je hier een kijkje nemen, als je naar style.html, hebben we een webpagina met kittens. Omdat kitten zijn geweldig. Dus het toevoegen van een afbeelding is gewoon img src link. Vrij veel, als er een soort van functie u wilt toevoegen aan uw website-- dus laten we zeggen, je wilt een menu toevoegen of een zoekbalk of als een image-- alleen Google hoe dat te doen. En je gewoon plop in dat formaat. En je kan gewoon vrij veel gewoon toe te voegen in. Het is echt, echt makkelijk. We creëren onze eigen webpagina's nu. Als je wil-- PUBLIEK: [onverstaanbaar] ANDI PENG: Sorry? PUBLIEK: [onverstaanbaar]. ANDI Peng: Oh, de div is slechts een divisie vertelde me dat, oh, ik heb een bepaald deel genaamd midden waarin ik ben het aanbrengen mijn CSS-tag, en daarna mijn andere divisie met de bodem. Dat is alles wat het is je te vertellen. Want het is leuk om te houden dingen keurig in orde, zodat het programma weet precies werking. En denk dat ik kan kopiëren plak deze in mijn werkelijke browser ook. Het moet wel goed. Ja. Yay. Dus als iedereen wil gewoon probeer het creëren van een webpagina, we zullen nog twee tot drie minuten duren. Ik wil alleen maar om ervoor te zorgen ieders servers draaien en iedereen heeft een idee van hoe dat te doen. Als jullie willen neem uw computers. Werkt nog steeds niet? Publiek: Ik ben gewoon [onverstaanbaar]. ANDI PENG: Misschien proberen te werken 50 ook. Ja. PUBLIEK: [onverstaanbaar]. ANDI PENG: Ja. Dus de manier waarop je een nieuwe start webserver op de IDE is gewoon doen apache50 ruimte startveld stip. Ik wilde alleen maar om ervoor te zorgen ieders servers draaien op OK. Publiek: Hier, op de terminal? ANDI PENG: Ja. PUBLIEK: [onverstaanbaar]. ANDI Peng: Apache. Eigenlijk denk ik dat je bent loopt al iets. Ja, je eigenlijk bent draaien van een andere server. Ja, je bent goed. Zolang die werkt, je bent OK. Publiek: OK. ANDI Peng: Er zijn twee manieren om servers draaien. Zo lang als een van de manieren werkt, het is allemaal goed. We zullen nog een minuut te nemen gewoon soort eindigen de afwerking van welke webpagina jullie wilde maken. Wordt iedereen die werkzaam is op de weg? Servers iedereen zijn running naast voor jou? We zullen cijfer dat uit. En HTML is vrij eenvoudig. Dus ik denk dat we allemaal goed. Ja. Ik kom terug. PUBLIEK: [onverstaanbaar]. ANDI Peng: OK. Publiek: Dus het is gewoon begon te laden. ANDI Peng: Geen zorgen. Dus HTML, er is de broncode die zal online na sectie zijn. Ook, David een geheel bos ook online. Gewoon een soort van blik over het aan zien hoe HTML-pagina's worden geschreven. Het is vrij eenvoudig. Alles wat je niet weet, je behoorlijk veel alleen Google en je bent goed. Ik wil alleen maar om ervoor te zorgen dat uw servers draaien. Publiek: Is het doen dit vaak? ANDI Peng: Het is nog nooit gebeurd met mij. Ik wist niet dat het zou zelfs kunnen overwinteren. PUBLIEK: [onverstaanbaar]. ANDI Peng: Ik denk everyone-- de mijne is nog nooit eerder winterslaap. En ik weet niet waarom. Het is raar. PUBLIEK: [onverstaanbaar]. ANDI PENG: Is jou winterslaap? PUBLIEK: [onverstaanbaar]. ANDI PENG: Ja. Publiek: Het is OK. Dus zodra het is geopend. ANDI Peng: OK. We zullen omgaan met enkele server problemen na sectie. Je moet wel goed. Hoewel, wilt u ervoor zorgen dat u krijgen ze opgelost voordat u vertrekt. Want als je server niet actief, dan ben je niet van plan om in staat zijn om het te doen PSET, net als een deel van de PSET. Dus je wilt er zeker van dat werkt. Koel. Prima. Afscheid kittens. Ik heb een lange tijd op zoek naar dat kitten foto op te zetten. Dus, anyways. PUBLIEK: [onverstaanbaar]. ANDI PENG: Sorry? PUBLIEK: [onverstaanbaar]. ANDI Peng: Ik denk dat het op de website. Net als de spec? PUBLIEK: [onverstaanbaar]. Ik denk dat de spec is gewoon online in week zeven. Ik denk dat het pset6 heet, zelfs hoewel we op week zeven, die is een beetje computing. Publiek: Maar ik bedoel als je willen at-- kijken als je willen trekken onze versie van de website van onze sever? Dus als server.c is de PSET, toch? Als je wilt kijken naar dit, zoals hoe het klopt? ANDI Peng: Oh, dus eigenlijk de PSET, we alles wat we doen hier is hier implementing--, Ik ga op dit kort. Dus voor iedereen die net is geworden sectie, jullie zijn in geluk. Er is zeer weinig materiaal om daadwerkelijk te dekken vandaag. Ik ga gewoon naar de volgende te brengen 20 minuten gaan over PSET hulp. Want er is een aantal nuttige functies die je leven zal helpen. En hopelijk zullen we buiten te zijn hier in zo'n 20 minuten. OK. Dus pset7 is verkeerd. Ook al zijn we op de week zeven, het is eigenlijk pset6. Ik zal dat veranderen. Alles wat we doen in pset6 is het creëren van een webserver. Dat klinkt super eng. En vooral voor degenen van jullie die al keek naar de verdeelsleutel, er is veel van de code, een veel code. Maar is helemaal OK. Omdat de Nitty Gritty een deel van het daadwerkelijk creëren de server wordt gedaan door ons. Alles wat je echt gevraagd te doen in deze PSET is gewoon om wat string manipulatie doen in het dossier I / O. Het is eigenlijk als vrij eenvoudig. Dus als je voor het eerst dat-- downloaden die hier is eigenlijk al gedownload de PSET en meegenomen kijken? Prima. Ja. Er is net 500 regels code dat je gaat te zijn zoals, wat is er aan de hand? En dat is helemaal prima. Zorg ervoor dat u de walk-throughs te kijken. Omdat David en-- Ik weet het niet. Ik denk niet dat het Zamyla's, deze. Maar ik denk dat sommige andere walk-throughs zijn vrij behulpzaam in termen van gewoon laten weten Wat is er aan de binnenkant van je code. En het is helemaal OK. Omdat de vier functies die u bent vroeg uit te voeren eigenlijk nul te maken met de werkelijke server. Het enige wat ze hoeft te doen is gewoon parsing verschillende strijkers, zoeken via strings, om ervoor te zorgen dat dingen te doen wat ze zouden moeten doen. Dus in die zin, zijn er enkele zeer, zeer nuttige functies vooral voor strijkkwartet manipulatie, dat we moeten allemaal gaan over dat ik dacht dat ik zou zeer nuttig zijn voor jullie om te leren voordat de PSET. En ze zijn allemaal opgenomen binnen uw string.h bibliotheek. Er is waarschijnlijk meer bruikbaar functies die ik heb hier niet opgenomen, omdat ik ook nooit gebruiken of misschien heb ik gewoon niet weten dat ze bestaan. Voel je vrij om blik door student.h. Want er gaat veel te zijn functies die zeer nuttig. Zodat de zes die ik het meest gebruik maken van mijn PSET toen ik het deed dit afgelopen week waren strtok, strchr, strrcher, strstr, strcasecmp en strcpy. En zo de laatste twee lijken vrij bekend bij de meeste van jullie. Geval str vergelijken, alles wat het doet is te vergelijken snaren om ze te controleren op gelijkheid, inclusief koffer. En strcpy gewoon kopieën een string in een buffer. En dus die twee moet erg lijken bekend om jullie op dit punt. Omdat we ze veel hebt gebruikt, vooral voor de laatste psets. Maar de eerste vier misschien u nog niet gezien tot nu toe. Maar ik ga gewoon lopen via hen. Omdat ze gaan om je leven te maken echt, echt makkelijk voor-- niet gemakkelijk, maar veel gemakkelijker voor deze aankomende PSET. OK. Dus char * strtok, dit is de functie definitie van deze functie bevatte binnen de string, h bibliotheek. Als je krijgt een ingang van char * koord, dat is gewoon een string, of een constante char * deliminator, Delim voor de korte, alles wat het doet is het breken van de grotere string in een reeks van wat wij noemen tokens gescheiden door een bepaalde waarde. Dus in zekere zin, als ik op te geven U section.7.php dit een tekenreeks. Dus dat zou zijn als ik te passeren in dit als mijn str, mijn char * str, als mijn deliminator was stip, dit alles zou doen is zoeken door middel van string. En de eerste keer ziet een punt, het zou alleen maar terug te keren naar de wijzer naar de laatste token gevonden in de string voordat dit. Zo zou het hier gaan. En het zou geef me 7.php. En als ik het noemen functioneert nog een keer, Het zou me alleen de php. En zo al deze functie doet wordt het afbreken van de grotere reeks in kleinere strings, afhankelijk op wat u zoekt. Dus bijvoorbeeld in je look up functie als je wilt kijken naar wat bepaalde tekens komen over of als stippen gebeuren of uitbreidingen gebeuren, Deze functie zou tamelijk nuttig zijn. Ja. Geen zorgen. Dit zal alle be-- ja, wat is er? Publiek: Dus in de eerste lijn, als we met behulp van dit voorbeeld, wat zouden we invoegen in dat? ANDI PENG: Ja. Je zou gewoon bellen een strtok reeks komma delim. En strijkkwartet is gelijk aan section.7.php. En dan moet je delim bent gelijk aan enkel punt zijn. Publiek: OK. ANDI PENG: Ja. Gewoon zo. Al deze functies zijn vrij vergelijkbaar als we gaan via hen. Ze doen net iets andere dingen. Maar ze gaan allemaal maak uw leven een stuk eenvoudiger. Tweede functie, dit is net als super, super, super belangrijk, is the-- houden. Oeps. Strchr zoekopdrachten voor de eerste occurrence-- eigenlijk, ja. Strchr is de functie die Ik zeker net ging. Dus negeren wat ik zei de eerste functie. Het is eigenlijk heet strchr. Dus wat zou hier gebeurd is, is als u kregen een string in een char c, het zou gewoon geven je wat dat was. Ja. Dus denk dat het als str, die is een string en chr als char. Dus alles wat je probeert te doen is zoeken want waar een char is binnen een string. En dus zoekt het naar de eerste optreden van de aard c in de string str. PUBLIEK: [onverstaanbaar]. ANDI Peng: Yup. En dan als het niet vinden het, het gaat om terug te keren NULL. Dus iets dat gaat heel zijn nuttig voor jullie in het doen van de PSET als, zeg, ben je op zoek naar een uitbreiding als een .docx voor Word document of een .pdf voor een PDF-document, u kunt soort gebruiken om te kijken voor alles wat daarna elke keer zie je een punt, toch? En zo vrij veel, als je lopen dat door middel van de functie, Als het terugkeert NULL, dan weet je dat het vond het niet dot, wat dit betekent duidelijk is geen geldige extensie. Of als het terugkeert iets, dan weet je het gaat om wat we terugkeren zelfs na de verlenging. Dus degenen onder u die had begon op zoek via lookup en ontleden, deze functie's zal super nuttig. Dus we eigenlijk gaan aantonen met deze. Waarom hebben jullie niet proberen het schrijven van een functie bool zin char * s die gewoon geeft true als s is een zin en anders false. Dus hint, je gaat om waarschijnlijk gebruiken strchr. Of als je gewoon zoeken in de string voor een bepaald karakter. En zo in een zin, wat scheidt een zin van een niet-zin welke specifieke karakter? Publiek: Een ruimte. ANDI Peng: Een ruimte, toch? En dus wat doen we waarschijnlijk gaan om willen doen binnen deze functie hier? PUBLIEK: [onverstaanbaar]. ANDI PENG: We gaan te willen strchr string voor het uiterlijk van de ruimte. Want als het iets, dan keert terug We weten dat dit een straf moet zijn. Dat betekent dat we moeten een ruimte in deze string. Als er geen ruimte, dan weten we dat, hey, denk dat het niet een string. Het is waarschijnlijk gewoon een heel lang woord. Dus ik geef je een paar jongens minuten om deze functie te schrijven. Ja. PUBLIEK: Heb je deze string van de gebruiker? ANDI PENG: Ja. Dus dit is gewoon een functie. Dus stel in je belangrijkste functie je al have-- laten we gaan hier. OK. Dus ik heb dit programma, waar schriftelijke Ik heb mijn belangrijkste functie, waar Ik heb zojuist twee snaren. De eerste is Hallo, mijn naam Andi-- is duidelijk, een zin. Mijn tweede is gewoon Andi, duidelijk niet veroordelen. En dus ik ben bijna allebei van die snaren door deze functie. Ik wil dat jullie koud zin te schrijven. En ik ben het opslaan van deze waarden, en dan gewoon printen ze uit. Dus denk dat de gebruiker zal geschieden in een string. En dan zul je in wezen erachter te komen of het een zin of niet en dus terug te keren waar of onwaar. Als jullie willen geven duim omhoog of heads-up, hoofd knikken, is iedereen is klaar om te beginnen dit, dat zou goed zijn. Misschien als 30 seconden? Prima. Laten we eens kijken of je kunt proberen het schrijven van deze functie. Dus pseudo coding-- Ik ga gewoon soort wandeling door dit recht nu. Vrij veel, we weten dat de functie die we moeten gebruiken. We gaan die functie een beroep doen op onze string en zoeken naar een ruimte. Als het iets terugkomt, dan moeten we dat duidelijk is dit een zin. Want er is ruimte. Dan gaan we echt terug. Anders, we gaan return false. Heeft iemand willen geven mij de eerste regel van de code dat we eigenlijk gaan te gebruiken om dit te schrijven? Het is eigenlijk de moeilijkste regel code ook. Ja. Publiek: Als strtok S-- ANDI PENG: Gewoon strchr. PUBLIEK: [onderbreekt hem VOICES] ruimte is niet gelijk aan null. ANDI Peng: Cool. Precies goed. Iedereen begrijpt dat de eerste lijn? We gaan strstr noemen, dat een functie die zoekt de string s de char ruimte. En als het vindt, gaat het om terug een pointer naar de plaats waar dat is. Als het niet vinden, het gaat om terug te keren NULL. Dus als het iets anders dan retourneert NULL, dan weten we dat het vinden van een ruimte. Slaat dat ergens op? Koel. Prima. Dus als we weten dat het vinden van een ruimte, wat willen we doen? Publiek: return true. ANDI Peng: Yup. Return true. En dan, iemand willen eindigen de functie voor mij? Ja. Anders, net als dat. En probeer het samenstellen van dit. Ja. Dus zoals jullie kunnen zien op de uitgangen, herinner Booleans in C worden altijd uitgedrukt in binaire. 1 geldt. 0 is vals. Als we dit uitvoeren functie snaar een, dat is Hallo, mijn naam is Andi-- duidelijk een sentence-- het resultaat uitgeprint met 1 waar is. De tweede, die net een woord, resultaatgericht uitgeprint tot 0, dat is vals. Iedereen duidelijke soort van hoe Deze functie is geschreven? Ja. Publiek: Kunnen we ook doen, in plaats van niet gelijk nee, gelijk gelijk is aan 0, zodat het gelijk? ANDI PENG: No. Omdat strchr is een functie. Ik ga terug naar dit. Dus wat is de return type van onze strchr functie? PUBLIEK: Oh, OK. Of NULL. ANDI PENG: Ja. Het is een char * die me vertelt dat wat Deze functie zal terugkeren, het gaat om een ​​pointer zijn. Ofwel de wijzer gaat worden wijzend naar de plaats waar het is gevonden, of het gaat om terug te keren een verwijzing naar NULL. In beide omstandigheden, gaat het een pointer terug iets. En dus als je zou gelijk Dit is gelijk aan, gelijk, 0, je gaat naar een compilatie fout. Omdat het gaat om een ​​pointer terug. En je gaat proberen om Vergelijk een pointer naar een integer. En de computer is niet gaan als dat. Ja, precies. Koel. Iedereen goed? En ten tweede, we gaan om te gaan over een functie genaamd strstr. Geen zorgen als deze functies zijn verwarrend je. Ze me verwarrend. Als zodanig, kunnen jullie hebben gezien, ze klinken allemaal vrijwel hetzelfde. Net wanneer je in de war bent, trek de string.h bibliotheek. En jullie kunt sorteren waardoor je die. Dus strstr, alles doet is zoekopdrachten een string voor een heel ander string. Dus waar strchr gewoon zoekopdrachten voor een enkel teken, strstr zoekopdrachten voor een hele reeks. Dus ik wilde om te kijken in, ik niet weet, Hallo, mijn naam is Andi. En de naam van mijn beste vriend is ook Andi. Als ik wilde om te zoeken in deze straf voor het hele woord van Andi, mijn naald zou zijn geweest wat je zoekt. En uw hooiberg is wat u zoekt in. Dus als u op zoek bent naar een specifiek woord in een zin, dat woord gaat de naald zijn. En dan is de straf zelf gaat om uw hooiberg zijn. En zo is het gewoon zoekt het eerste optreden van de string naald in de string hooiberg. Het geeft de wijzer het eerste voorkomen. Behalve, herinner me in dit geval, het is de eerste exemplaar van de gehele reeks die u zoekt voor, niet alleen een teken. En dit is dus bijna de hetzelfde als de functie we net deed, alleen met een beetje meer specificiteit. Omdat je op zoek bent naar meer dan één teken. En het gebruik is exact dezelfde als degene die we net gedaan. Iedereen OK met dit? OK. Laatste gaan we om te gaan dan is strrchr, die niet verward met strstr of strchr. strrchr heeft een extra r in. Wees voorzichtig wanneer u typt. Vind je jezelf met inbegrip een extra r dan niet met inbegrip van een r, en dan uw functie wordt raakte niet gaan werken. En je gaat in de war te zijn. Wees voorzichtig dat je spelling al deze functies gelijk. Dus strrchr is de exacte hetzelfde als strchr behalve dat het zoekt niet de eerste optreden van een specifiek karakter, maar het laatste voorkomen. En ja, in die zin, het is bijna precies hetzelfde. Maar in plaats van het verplaatsen doorsturen in een string, je gaat verhuizen achterwaarts in een string. Precies hetzelfde, je bent gewoon het zoeken in een andere volgorde. En zo kan deze super zijn, super handig voor uw lookup functie, de eerste functie op uw PSET. Laten we doen alsof we nodig hadden om een ​​schrijven functie void toestel waarin we langs een constante char * bestandsnaam, gewoon een string, een bestandsnaam, dat is in die naam en prenten het verlengstuk van dat bestand. Dus bijvoorbeeld, als ik passeren in de string van pset7.zip, het gaat gewoon uit te printen de uitbreiding, die is .zip. En dit zou voor een soort van uitbreiding, .docx voor Word of .pdf voor een PDF- bestand of .html voor een HTML-bestand. Vrij veel, brief functie die dat kan doen. Ik ben eigenlijk van plan om overschakelen naar de IDE. Het wordt er niet load-- we gaan. Dus alles wat ik heb hier gedaan is creëerde een char *, een eerste reeks, genaamd pset7.zip. Ik ga om in te zoomen. Ik heb een tweede reeks gemaakt genaamd finalpaper.docx. En schrijf me een functie die bij riep gaat gewoon uitprinten de bestandsextensies. Misschien een paar minuten om na te denken over hoe je gaat om dit te doen. Iets meer uitdagende dan de vorige, maar het gebruik is bijna precies dezelfde. Ja. Dus schrijf een functie genaamd extensie dat, als ik geef je de naam van een bestand, als ik geef je pset7.zip-- I wilt u afdrukken alleen de .zip. Als ik geef je finalpaper.docx, gewoon uitprinten de .docx, alleen de uitbreiding van welke file. Dit eigenlijk alleen duurt twee regels code. Dus probeer om te zien of u kan misschien doen het in dat. Eigenlijk is alleen neemt een regel code. Maar twee lijnen is waarschijnlijk standaard. Welke functie zijn we waarschijnlijk gaat te willen noemen? Publiek: strrchr. ANDI Peng: strrchr, rechts. Omdat we zoeken van rechts links. Ik wist niet geven jullie Een voorbeeld als dit, maar als ik gaf je een voorbeeld als www.apple.com en ik wilde alleen de .com, zou het een voorbeeld van, waar zijn je wilt de laatste instantie roepen van de periode en niet de eerste, toch? Als je oproep strchr het, zou je hebt gezien de apple.com. Als u strrchr aangeroepen, zou je hebben gezien de .com. En dus wees voorzichtig waar ways-- in mijn voorbeeld, kon je waarschijnlijk zou kunnen hebben gewoon geschreven met behulp strchr, want er is maar één punt. Maar in andere gevallen, dat niet het geval. En dus altijd proberen te ontwerpen uw code goed, dus dat-- ja? Publiek: Dus in het Bijvoorbeeld je net zei, als je het zou strrchr geef je .com of kom gewoon? ANDI PENG: Het zou de .com geven. Publiek: OK. ANDI PENG: Ja. Hij wijst naar de plek waar hij het gevonden. Ja. 30 seconden misschien? Ja. Iedereen goed of misschien een beetje meer tijd? Show van handen? Show van hoofden? Koel. Iedereen wil me de eerste geven regel code voor dit programma? PUBLIEK: [onverstaanbaar]. ANDI PENG: Dus de eerste plaats, laten we misschien breken dit neer. Dus wat is de return type van strrchr? Laten we terug gaan. strrchr, wat is de return type? PUBLIEK: Char * ANDI PENG: Het is een char *, toch? Wat betekent dat je waarschijnlijk gaat te willen naar een andere char * om vriendelijk te creëren van de winkel waar het is terug te keren naar, toch? Want als je belt de functie strrchr, het gaat om u een pointer op te geven waar bleek dat laatste periode, toch? Maar je gaat te willen slaan dat er ergens, toch? En dus hoe kunnen we coderen Dit in ons programma? Publiek: Je maakt de char * [onverstaanbaar]. ANDI Peng: Yep. PUBLIEK: [onverstaanbaar]. ANDI Peng: strrchr. Ja. Oh, miste een r daar. PUBLIEK: Bestandsnaam [onverstaanbaar]. Wat is het? Oh, het is gewoon is. ANDI Peng: Oh, het is gewoon is. Yup, sorry. Mijn fout. Voorbeelden niet overeen. Publiek: En dan stip. ANDI Peng: Yup. Wees voorzichtig wanneer u kerels zijn-- hier, laat me in te zoomen. Daar gaan we. Wees voorzichtig wanneer u kerels het typen, vooral wanneer je doet gewoon een char. Het is heel gemakkelijk om per ongeluk net doen dubbele aanhalingstekens in plaats van één. Dat zal niet werken. Compiler zal klagen. En uw functie gewoon niet gaan lopen. En dus wees voorzichtig bij je dingen te doen met tekens dat het enkele aanhalingstekens. En dat doet deze lijn van code zinvol om iedereen? We creëren een char * pointer. Omdat strrchr returns iets van het type pointer. En dus gaan we strchr bellen on I, dat de snaar, het bestand te noemen, dat we passeren. En we zijn op zoek naar de laatste exemplaar van een periode, die is alleen de enkele aanhalingstekens dot enkele offerte. Ja. Publiek: Wanneer gaan we gebruiken dubbele aanhalingstekens en wanneer gebruiken we enkele aanhalingstekens? ANDI PENG: Ja. Dus dubbele aanhalingstekens zijn altijd gebruikt als u een reeks van meer dan één. Dus als je strstr doet, die degene die u zoek een string voor strijkkwartet, u zou het pas in dubbele aanhalingstekens. Maar elke keer is het gewoon een enkel teken, je wilt enkele aanhalingstekens te doen. Het is een goede zaak om in gedachten te houden. Dus nu hebben we onze wijzer, wat doen we ermee? Ik vraag jullie om printen het uit, toch? Dus [onhoorbaar], je wilt geef mij de lijn van code? PUBLIEK: printf-- ANDI PENG: Ja. PUBLIEK: --u behoefte aan een plek houder. ANDI Peng: Yup. Publiek: Print de plaats houder. Ik weet niet wat de plaats houder is maar wijzen op het. OK. Laten we overslaan dat voor nu dan. Publiek: En dan comma-- ANDI Peng: Pointer, toch? PUBLIEK: Pointer, yup. ANDI PENG: Dus een soort van een strikvraag, heeft te maken met pointers en strings dat we soort hebben gesproken over al. Wat voor soort plaats houder doen we nodig hebt voor een pointer naar een char *? PUBLIEK: [onverstaanbaar]. ANDI PENG: Ja. Het is gemakkelijker dan jullie denken het is. PUBLIEK: String? ANDI PENG: Het is gewoon een string, precies. Omdat herinneren strings niet echt bestaan. Een char * is de exacte hetzelfde als een string. En dus echt dit is is wat moeten zijn langs gebruikt. OK. Laten we eens kijken of we kunnen proberen het uitvoeren van deze. Laten we doen een make-extensie. Koel. Jullie zien hoe ik aangenomen in de psset7.zip en de finalpaper.docx, en drukt gewoon uit het .zip en .docx? Zin? OK Dus ik denk dat in je look up functie in uw PSET je gaan als de te vroeg snaar heeft een zekere einde, moet je een bepaalde foutcode te geven. En dus dit zal zijn vrij verschrikkelijk. Want als je kunt achterhalen wat de uitbreiding is, u kunt dan dat vergelijken uitbreiding te zien of het past up met een zekere verlenging. En dan kunt u terugkeren een foutmelding, toch? Ja. Publiek: Dus we doen niet moet toevoegen 1 of iets? De aanwijzer gaat naar the-- ANDI Peng: Nope. Publiek: --point na het. ANDI PENG: Ja. Zij wijst precies aan waar het voorval was. Dus bijvoorbeeld hier, we zijn zoeken naar de periode. Dus het gaat om terug te keren een pointer naar de periode. En dan is het ter perse gaan uit vanaf de periode. Zodat u niet hoeft te voegen 1. Hoewel, het is helemaal prima om, indien je bent nooit zeker weet, om gewoon een soort van test het zelf uit. Bouw een monster programma. Test het zelf uit en zie waar het afdrukken. Dat is ook niet een slechte manier om het te doen. Koel. En dat is vrijwel alle Ik had voor jullie vandaag. We hebben veel van PSET dingen vandaag. Dus in geval van twijfel, zoals Ik zei altijd opzoeken de string.h bibliotheek voor deze PSET. Er gaat een heleboel te zijn functie daar die nuttig zijn. Sommige mogelijk niet effectief. Ik weet niet echt. Wade doorheen, er is een hele hoop van hen. strstr, strchr, strrchr zijn super, super behulpzaam, en de strcpys en strcasecmps dat we al geprobeerd. Het is gewoon veel gedoe met strings, bepalen of ze gelijk zijn, het krijgen van spullen uit strijkers, en de mogelijkheid om bestanden correct openen. Het is een stuk van het dossier van I / O. PSET is echt niet zo slecht. Je gaat om een ​​te nemen kijken, downloaden, en zie een hele hoop code. Geen zorgen, de code eigenlijk schrijven is helemaal niet slecht. Als iemand problemen met hun server, kom me zien na sectie. Nogmaals excuses voor het niet brengen snoep Halloween. Ik weet niet wat er mis was met mij. Maar we zullen dubbele hebben de snoep volgende keer. En veel geluk in uw PSET deze week. Ja.