ANDI Peng: Ons is amper deur al die psets. Trouens, ons is deur die meerderheid van die moeilikste psets. So ons is eintlik net gaan soort van briesie deur die volgende paar weke. Ons gaan om te begin praat oor ons finale projekte, die gebeure kom in die volgende paar weke. En die lewe sal 'n briesie wees. So nie te veel van vandag. Hopelik sal eintlik wind deur die agenda vir vandag, en dan hier uit met 'n tyd om te spaar. Ook, ek wil om verskoning vra vir die gebrek aan lekkergoed vandag. Ek weet nie hoekom nie. Maar in die week voor Halloween, sou ek lekkergoed vergeet nie. So ek is eintlik net 'n groot teleurstelling om jou nou. Want ek onthou letterlik lekkergoed vir elke enkele klas, maar Halloween. Maar volgende week, sal ek bring dubbel die bedrag van lekkergoed om op te maak vir wat, alles vir jou. Dit sal wonderlik wees. So ek het 'n paar van die aankondiging met sommige skedulering. Ek het 'n paar skedulering kwessies. Dan gaan ons aan te beweeg na praat oor wat chmod genoem. Ons gaan om te praat oor vinnig TCP / IP HTTP. En dan gaan ons die kode van ons eie webwerf met behulp van HTML en CSS. En dan sal ek eintlik verlaat miskien soos 20 minute om te praat oor pset6. Omdat pset6 is eintlik 'n baie dinge wat ons reeds gesien het nie, maar ek wou om te verfris sommige van hierdie konsepte sowel as 'n paar nuwe leer funksies. Koel. So die eerste van alles, welkom terug uit breek. Ek hoop dat jy break was aangenaam. Sou jy gedoen het vir pouse? GEHOOR: Het na New York. ANDI Peng: Jy het na New York? Ek dink die helfte van ons skool het na New York. Dis alles reg. Ek het die meeste van my break sittende in die bed Netflixing. En dit was 'n goeie tyd. Maar ons is nou terug, terug in sessie, terug in die swaai van die dinge. Ons het 'n pset weens hierdie Vrydag middag. Ek dink jy het reeds opgetel jou quiz, ja? So iemand anders wat nie het hul vasvrae, kom asseblief en kry jou vasvrae van my aan die einde van die artikel. Of hou my op die kampus. Ek sal dit iewers het met my. Ons finale projek pre-voorstel ook. So vir diegene van ons wat nog nooit geneem hierdie klas voor die sluitsteen van CS50 is baie uitgeloop in hierdie grand projek wat studente voor te stel. En die pre-voorstel, net 'n algemene idee van wat 'n mens kan wil doen vir hul projek, dat die idee is as gevolg van Maandag, volgende Maandag op die middag. So pretty much, David ek dink praat meer hieroor in lesing as hy nie reeds. En daar is 'n stewige bladsy op ons webwerf te verduidelik al die vereistes van die projek. Maar in wese, pluk enige onderwerp wat jy het is wat belangstel in regdeur jou tyd hier by CS, of dit speel of ontwerp of video of enigiets. En jy kan regtig soort nou aansoek doen 'n paar van die lesse dat ons hier geleer het in CS50-- hi, welcome-- om pretty much uitvoer 'n finale projek van jou keuse. Al wat gevolg is Maandag net 'n kort blurb via e-pos vir my 'n vinnige sin, soos, hey, Andi, Ek is regtig belangstel in die ontwerp 'n spel wat dit doen vir IOS. Koel. Laat my net jou kort aanvanklike idees vir jou finale projekte. En ons sal deur middel van praat of nie dit is eintlik 'n goeie idee is of nie, As dit is 'n haalbare idee of nie. Maar net die pre-voorstel is as gevolg van volgende Maandag. pset6, ons pragtige web-- wat verkeerd is. Pset7? pset6? Dit is pset6, reg? pset6, ons web server, is te danke Vrydag middag met die einde van die dag. Kantoorure hervat gewoonlik van Maandag tot Donderdag 8:00-11:00 hierdie week. Ek dink Commons vir die volgende drie nagte. Koel. Voor ons het in materiële, nie almal enige vrae het, grappies, stories? Wat het jy vir val te breek? GEHOOR: Wat ek doen? ANDI Peng: Reeds dit is eeue gelede eintlik. Christabel na New York. Ek het hier gebly en Netflixed. GEHOOR: O, ja, ek was hier. ANDI Peng: O, OK. GEHOOR: Ek kan nie onthou wat spesifiek. ANDI Peng: Dit is OK. GEHOOR: Netflixing waarskynlik. ANDI Peng: Netflixing. Ja, dit is 'n goeie tyd. OK. Alles reg. Enige vrae wat voor ons spring in materiaal? Ook, ons gaan om te probeer om spoed deur artikel vandag nie te veel om te dek. En hopelik sal ons kry hier 'n bietjie vroeg. Jammer vir nie lekkergoed, ook. Ek is 'n teleurstelling, veral gedurende Halloween. Alles reg. Koel. So ons gaan begin praat oor 'n command line argument genoem chmod. chmod, al is dit net 'n Unix-stelsel noem gedoen uit die opdrag lyn om permissies verander. So byvoorbeeld, het ons al teëgekom bladsy soos hierdie waarskynlik iewers in ons lewensduur van wat 'n internet gebruiker waar ons web bediener aan ons gegee deur die dwaling van verbode. U het nie toestemming om toegang te hê, yadda, yadda, yadda, op hierdie bediener. Al wat werklik beteken is dat die regte wat aan alles bladsy wat jy probeer om toegang was nie oop vir jou. So pretty much, chmod is die manier waarop kan ons die regte stelsel verander om almal te gee, die gebruiker, die groep, of die wêreld of enige kombinasie van die toegang om sekere lêers, dopgehou, niks regtig, enige soort stelsel op 'n bedryfstelsel. So as enige van die ouens het rekenaars as jy voel soos volg saam met my vandag, heeltemal gerus net dinge tik in. Indien nie, kan jy net uithang. So ek gaan eintlik trek my terminale nou. So het die opdrag om te hardloop chmod, of ten minste net om die lys van die regte van jou lêer gids, is net ls-l. Soos jy kan sien, 'n klomp van die dinge verskyn waarvan die meeste is vir ons belangrik op die linkerkant hier. Julle sien 'n klomp van die rs, WS, 1 /. Ja. Dit is in wese net al die permissies na wat sekere dopgehou verduidelik en lêers in jou stelsel. So laat ons gaan terug na die krag punt hier. So in bykomend tot die lêer name as julle kan sien op die regte, Ons is op soek wese sien net die kolom aan die linkerkant. So bykomend tot net die lêer name, ons kan die regte van lêers te sien, hul eienaar groep, die naam van die groep, die datum dat die lêer laaste verander, ensovoorts. Jy kan 'n baie van die dinge behulp chmod sien. So die manier waarop ons lees chmod is dat die eerste brief wat ons pretty much te ignoreer in terme van lees regte. Die eerste letter net vertel ons wat tipe stelsel ons toegang. d, in hierdie geval, is 'n gids of gids. So ons weet dat die oomblik my werkplek artikel sewe was 'n gids. En dan drie jy sien drieklanke, wese net drie stelle van drie karakters. En jy kan dink van elke as 'n bietjie. So jy moet net drie stelle drie stukkies, nege stukkies in totaal. Jy behandel hulle in groepe van drie. So het die eerste groep van drie is altyd jou gebruikers regte. Jou tweede groep van drie is altyd jou groep regte. En die derde stel van drie is altyd soos die wêreld, die oral regte. So ek dink die maklike vraag om te vra is wat is die verskil tussen die gebruiker en groep. Die belangrikste verskil tussen die gebruiker en groep is dat 'n gebruiker is net vir jou persoonlik toegang wat dit nou is nie. 'N Groep kan wees as jy meer het gebruikers op 'n rekenaar, byvoorbeeld. Almal van hulle behandel kan word as 'n groep. En dan is die wêreld is net die wêreld, almal. So kan ons later sien hoe ons kan verander diegene in verskillende regte. So pretty much, ons is gaan nog steeds fokus aan die kant aan die linkerkant, waar vir die gids CS50 ons sien drwx, waar die r beteken net dit is leesbaar. Die w net beteken dit is skryfbaar nie. En dan is die x net beteken dit is uitvoerbaar nie. Jy sal dit soort dink van nie sin maak nie. Dit moet wees e. Maar x eintlik soort werk 'n bietjie beter, want jy kan dit te onthou beter. So het die drie tipes van die dinge wat jy kan doen, kan jy óf 'n lêer te lees, kan jy toestemming om 'n skrywe lêer, of jy kan toestemming het om 'n lêer te voer. En so het die manier waarop ons eintlik verteenwoordig diegene in stukkies is die getalle 4, 2 en 1. So enigiets wat is leesbaar is verteenwoordig deur die aantal 4. Enigiets wat skryfbare word verteenwoordig deur 2. En enigiets wat uitvoerbare soos verteenwoordig deur 1. So in hierdie sin, kan ons ook verteenwoordig hierdie numbers-- hi, welkom, in 'n ander manier. Jammer. Voordat almal, ek gaan vra om verskoning namens almal betree nou die klas. Ek het vergeet lekkergoed vandag. Ek is jammer ek is 'n mislukking hierdie week van Halloween. Ek sal dubbel die bedrag van bring candy volgende keer om op te maak vir dit. Maar anyways, jammer oor daardie ouens, jammer. So die manier wat ons kan eintlik insette op ons bevel van die argument is dat ons kan chmod groep slash regte te doen, waar die groep is net watter groep het ons probeer om te verander. En die regte is wat ons wil om by te voeg. So byvoorbeeld, die plus voeg regte, en die Trek neem regte weg. En die tipes groep het ons 'n vir almal, u vir gebruikers, g vir groepe, of o vir ander. Dit is 'n bietjie abstrakte nou. Maar ons sal gaan oor 'n paar voorbeelde net hierdie ware vinnig te demonstreer. Almal goeie oor hierdie skuif, sodat ek kan aanbeweeg? Koel. So byvoorbeeld, rwx. Voordat ons praat oor wat dit verteenwoordig, eerste van alles wat beteken rwx beteken? As jy sien dat hierdie sekere lêer permissies van rwx, wat beteken die persoon kan in staat wees om te doen? GEHOOR: Lees, skryf en uit te voer. ANDI Peng: Ja, presies. Jy kan skryf lees en uit te voer. Want al drie van dié karakters teenwoordig is. So as ons gaan voort en praat hieroor in terme van stukkies, die rwx kan ook voorgestel word as 700. Want soos jy kan sien in 'n soort lêer directory toestemming, daar is drie drieklanke. In hierdie geval, sal slegs die eerste drieklank het niks daar. So in hierdie geval, die r is 4, die w is 2, en die x is 1. As jy daardie saam te voeg, dit is 7. En so as jy sit dit binêre, dit is 700. Omdat 7 is die eerste drietal. 0, daar is niks teenwoordig in die tweede drietal. En dan is daar niks wat in die derde drietal, so dis 'n ander 0. So in dieselfde sin, 'n klomp van die drieklanke kan word net in stukkies, net in binêre sowel. So 700 beteken presies dieselfde ding as rwx ------ in terme van regte. Almal duidelik dat? Koel. En so chmod 111 sou gee toestemmings om die lêer? Gee jou 'n paar ouens sekondes na hierdie skakel. Onthou, die eerste drietal is vir die gebruiker. Die tweede drietal is vir die groep. En die derde drietal is vir almal. En so chmod 111 sou gee wat tipe regte en aan wie? Neem 'n paar sekondes om dink oor dit en kom terug. Ja. GEHOOR: So almal kan dit uit te voer. ANDI Peng: Yup, presies. GEHOOR: Maar niemand kan lees of skryf nie. ANDI Peng: En voel vry om te verduidelik aan almal hoe jy gekom het om daardie gevolgtrekking. GEHOOR: Wel, vir die gebruiker, die groep, en die wêreld, is dit al 1, wat is die kode vir uitvoerbare. ANDI Peng: Ja, presies. So 1, in hierdie geval, al wat ons weet is dat dit die uitvoerbare kode. Omdat die lesing is 4. Skryf is 2. En die uitvoerbare is 1. So is al drie drieklanke is 1, wat beteken dat die wêreld, om die gebruiker, en aan die groep, het hulle is almal uitvoerbare. Almal goed met dit? OK. En so het die tweede manier dat ons kan eintlik skryf dit ook jou kon net chmod doen 'n plus x. n beteken die hele of almal. Die plus beteken dat toestemming om. En dan is die x beteken uitvoerbare. So is daar twee opdragte is eintlik identies. So as jy wil om te hardloop dit in jou terminale, jy doen chmod 111, naam van jou gids of die lêer. Of jy kan doen chmod 'n plus x, naam van jou gids lêer. Dieselfde ding, net 'n makliker manier, miskien, vir 'n paar te verteenwoordig of verandering permissies. Elkeen OK met chmod voordat ons? Koel. So nou gaan ons kop in 'n paar skyfies van 'n baie abstrakte konsepte dat ek pretty much gaan deur wind. En dit is heeltemal OK as jy nie verstaan ​​alles. Selfs nou, ek doen nog steeds nie regtig heeltemal verstaan ​​alles. Maar dit is meer om die boonste vlak begrip hoe sommige van hierdie dinge werk. So ons gaan praat vinnig oor TCP / IP, wat net Transmission Control Protokol streep Internet Protocol. Onthou uit lesing David, het hy jou leer die voorbeeld waar hy wil slaag die notas in 'n koevert op die top van die lesingsaal graag? So in die wet skool ouditorium David gedemonstreer wese hoe TCP / IP werk in die sin dat al wat dit is 'n middel is om te verseker dat data is oor 'n bediener afgelewer of op die internet. So in die voorbeeld van die koevert en die boodskap, die gebruiker aan die einde kon sien dat, oh, ek nodig het om ontvang vier pakkies inligting. Maar ek het eintlik net ontvang drie. Dit beteken dat ek moet ontbreek een. En een is nie afgelewer nie. En so TCP / IP op die internet, deur jou rekenaar en die bediener, doen presies dieselfde ding. Al wat dit doen is gee 'n raamwerk waarin 'n verlore data pakkies kan aanstoot en ontvang. Soos op die internet wanneer jy probeer om toegang tot lêers aanlyn of stuur lêers aan jou vriend of kyk na web implementeer, duisende en duisende van biljoene en biljoene grepe inligting oorgedra per millisekonde. En dit is baie, baie verwarrend. En dit is werklik moeilik om te eintlik weet wat gestuur en wat nie gestuur. En so TCP / IP spesifiseer net 'n samehangende raamwerk waarin jou web leser en jou bediener kan soort van kommunikeer met mekaar, net seker te maak dat pakkies is almal hier en niks se verlore en al die data wat jy versoek is eintlik korrek vertoon. Almal OK op net dat baie Kort hoë vlak te verstaan? Koel. So dan gaan ons om te beweeg in praat oor HTTP, wat is net Hypertext Transfer Protocol. HTTP, al is dit is alles wat 'n bladsy of lêer is toeganklik op jou webwerf, die bediener n HTTP status kode in reaksie die versoek om seker te maak dat die óf, o, hierdie versoek het deur. En alles is goed vertoon. Of, o, nee, 404. Iets het verkeerd geloop. O, ek kan nie vertoon. Al wat dit is, is dat wat ook al jy probeer om toegang, gebruik as die gebruiker probeer om toegang te verkry, op die internet-- net om seker te maak dat jy óf suksesvol het verkry wat dit ookal was of nie suksesvol verkry wat dit ookal was. En so het die HTTP status kode bied jy net 'n middel van in staat is om te weet of of dit nie suksesvol was of nie. So byvoorbeeld, 'n voorbeeld versoek. Jy kan hier sien dit is gewoonlik tipies vier lyne. Ons het 'n AOO HTTP 1.1, wat net die metode versoek URL, die protokol weergawe, die naam veld en die gebied waarde. So nie nodig om heeltemal memoriseer hier nie. Net soort van vergewis jouself met hoe hierdie lyk. In hierdie voorbeeld is die metode versoek URL is net watter versoek jy stuur die bediener. Soos, hey, bediener, ek wil regtig toegang yadda, yadda, yadda, HTTP bladsy. Die protokol weergawe is net watter weergawe van jou gasheer of jou bediener gebruik om inligting te bekom. Die naam veld is die webwerf of die URL wat jy probeer om toegang, in hierdie geval, www.apple.com. En die gebied waarde is net tipies noem, waarde. En dit kan enige soort van 'n kombinasie wees van letters of syfers of wat ook al. So 'n tipiese versoek, so wat jou rekenaar eintlik stuur na die bediener wat sê, hey, jy weet wat ek nodig het hierdie vertoon, Dit is die soort van aansoek dat hulle eintlik ontvang. 'N voorbeeld van wat die reaksie bediener sal terug stuur aan u sou pretty much dieselfde ding wees, behalwe met 'n status kode aan die bokant. So 200, 2 0 0 altyd die status kode vir OK. Soos, OK, hierdie versoek het deur. Jy was in staat om toegang te verkry alles reg. Die lewe is goed. Die lewe is goed. Alles is heeltemal goed. En so gaan dit net vertel die leser en jou bediener, hey, goeie alles is. Ek het al die inligting wat ek nodig het. Koel. Maar die probleem is soms probleme kom wanneer jy have-- duur Ek dink Ek het gepraat oor duplikate. Jy het minder goeie antwoorde. So byvoorbeeld, 404 is die Page nie gevind nie. Jy het soms 'n verbode toegang. Jy het verskeie ander status kodes dat ek seker dat jy het al gesien wanneer jy probeer om navorsing te doen oor die internet. En die leser gee jou die, nee, kan nie toegang tot. En jy soos, wel, kak. Dus net pretty much, daar is 'n paar mooi algemene status kodes. Miskien vergewis jouself met watter diegene is. Die snaaksste een wat Ek dink ek nog ooit gehoor het of-- as jy gebeur om kyk almal van hulle aanlyn, vir een of ander rede is daar eintlik 'n ware status kode genoem 418 Ek is 'n teepot. Ek googled waar die oorsprong van hierdie was van. En blykbaar een April Fools ' Dag 'n paar dekades gelede, iemand het gedink dit sou wees hilarious om 'n nuwe status kode genoem 418 te skep Ek is 'n teepot. Wettig, die naam van hierdie kode genoem ek is 'n teepot. Ek vergeet watter bladsy jy hoef te gaan eintlik maak hierdie vertoning. Maar blykbaar, kan jy eintlik kry 'n status kode: Ek is 'n teepot of ander manier deur iets te doen. So is daar honderde en honderde status kodes. Sommige van hulle maak meer sin as ander. Maar pretty much net vergewis vertroud met die mees algemene hiervan. Die versoek entiteit liggaam is kort en stewig, blykbaar. So soms is daar meer skrikwekkende foute as ek is 'n teepot. Maar dit is die een wat ek dink jy soort van hoop te tref. Maar ek dink nie jy wil. Almal goeie op die net status kodes, versoeke, prosesse, maak seker inligting behoorlik afgelewer? So nou gaan ons oorgang in 'n pret deel van artikel vandag waar ons praat 'n bietjie oor HTML. HTML, al is dit HyperText Markup Language. Dis net die standaard taal jy gebruik om al die web te skep bladsye op die internet. So 'n webblad, wat is jou gunsteling web bladsy? Wat is jou gunsteling web bladsy? GEHOOR: [onhoorbaar]. ANDI Peng: Jammer? GEHOOR: Tumblr. ANDI Peng: Tumblr. So Tumblr is geskryf in HTML. En so sal ons eintlik gaan deur en speel rond met 'n paar van hierdie dinge later. Pretty much alles wat jy nodig om te leer, te leer ken, HTML skryf jy kan waarskynlik net Google op die internet. HTML, dit is nie 'n program soos C waar jy veranderlikes kan skep en te doen koel dinge met dit. Dit is meer van net, o, dit is hoe ek wil dinge om te verskyn op my webwerf. En ek is net gaan om dit in te sit. En dit gaan om dit te stileer. So HTML, in 'n sin, dit is net soos 'n opmaak of template taal. Dit is 'n baie makliker. Dit is 'n baie makliker om te leer, 'n baie makliker om in te skryf as jou tipiese ontwikkeling taal, baie maklik, baie gebruikers toeganklik en vriendelik. So ons is eintlik gaan om te speel rond, skryf ons eie bladsye vandag. Maar voor ons begin, wil ek net gaan oor 'n paar kort beste praktyke. Omdat HTML is so 'n maklike taal en want selfs As jy 'n paar dinge verkeerd, dit soms kan nie agterkom, Ons wil seker maak dat ons eintlik hou ons die beste praktyke om seker te maak dat die dinge wat kon rond gaan, maar is nie altyd gaan nie reg gaan seker te maak dat hulle die minimum beperk. So pretty much, maak seker jou sluit al jou tags wanneer jy skryf in HTML. As jy die opening van ' liggaam, maak seker jy is sluit dit met 'n liggaam iewers. Jy wil om seker te maak dat jou webblad bekragtig deur die gebruik van wat is bekend as die W3 Validator. Jy kan net Google wat online, en daar is 'n skakel om dit te. En dan wil jy aparte HTML, wat is jou opmaak taal van jou styl, wat is die taal wat Dawid CSS gedemonstreer dat ons ook gaan 'n bietjie speel met lesing. Koel. So wanneer jy wil om te hardloop HTML op die CS50 toestel, ons gaan na 'n loop program genaamd apache, wat al is dit net 'n gebou in web bediener wat almal in CS50 toegang het. Ons noem dit net omdat ons apache50 graag alles 50 in CS50 noem. So die manier waarop jy die CS50 web begin bediener is deur te tik op jou bevel lyn apache50 begin dot. En as jy wil om dit te beëindig op enige tyd, het jy apache50 eindig nie dot. En jy net druk Enter. En dit moet hier op pad gou. Yup. So ek gaan net om vinnig te gaan oor 'n voorbeeld van 'n baie kort webblad. En ons gaan om te bestee soos 10, 15 minute speel rondom die skryf van ons eie webblaaie. OK. So hier in die IDE-- almal kan sien dat? Nie regtig nie. Hier is, sal ek in zoom. Ek het net hierdie kort sjabloon hier met niks eintlik in dit. Ons is net gaan om vinnig te skryf 'n HTML program in wat ons nou net sê hallo vir die wêreld. So dieselfde as in C, nou is ons net gaan om dit te doen in HTML. Is daar iemand wat wil eintlik net probeer gee my die eerste ding wat jy sou hê in 'n HTML-dokument te sit? Ja. GEHOOR: Die hakies, die [onhoorbaar]. ANDI Peng: Yep. So iets wat baie uniek aan HTML dat ons tipies tradisioneel nie teëkom in ander opdrag line vlak programmeertale is dat ons eintlik om spesifiseer die tipe lêer dat dit gaan wees aan die bokant van ons kode. So in hierdie instance-- Ek dink dit is die regte opdrag, reg? Yup. Op die top, jy wil net om in te sluit bang DOCTYPE HTML in hakies net na jou rekenaar te vertel, hey, kyk uit. En HTML dokument kom. En dan hoe wil ons om te begin ons lêer af? As ons wil net sê hello, het 'n webblad wat hallo sê vir die wêreld, hoe gaan ons oor die bou van hierdie? Eintlik, laat draai na Google. En ons kan eintlik dit te doen. Yup. Daar gaan ons. So HTML. Soos jy kan sien, my browser is eintlik dit outomaties stilering vir my. Dieselfde as in C, wanneer jy skep 'n oop krullerige brace, die leser outomaties voeg in 'n beslote krullerige brace. Gelukkig het ons IDE lief om doen dit vir ons so goed. So nou kan ons soort van tik die begin van 'n tag, en dit gaan altyd sê ons onthou om die einde van die tag tik. Ek dink dit moet gekapitaliseer. En dan wil ons by te voeg, altyd, 'n kop wat is die titel. Ons wil net miskien noem hierdie hello, en dan die liggaam. En daar gaan jy. Dit is eintlik ons ​​HTML dokument. So die manier dat enige HTML-dokument altyd styl in-- dieselfde ding met int main nietig. Jy wil altyd hê HTML 'n oop en naby tag by die bo-en onderkant van die kode. Jy wil 'n kop binnekant van het wat die titel bevat, net alles gaan die blad van jou web te vertoon bladsy, en dan 'n liggaam binnekant van wat sal eintlik die inhoud te vertoon van alles wat jy wil doen. So as jy wou eintlik loop hierdie, ek gaan om uit te zoom terug. Jy kan eintlik begin apache50 begin dot. Koel. En so soos jy kan sien, wat nou hierdie skakel het opgeduik. Dit sê jou site is nou beskikbaar by sommige skakel hieronder. So al ons IDE het done-- nie IDE, sorry-- ja, ons IDE gedoen is skep 'n web skakel waarop al ons webblaaie kan verkry word op die bediener. So laat ons neem 'n blik hier. Kom ons kliek hierdie, gaan na hello.html. En jy sien 'n baie eenvoudige webblad vir hello world. OK. Ons is eintlik van plan om net het everyone-- ja, what's up? GEHOOR: Ek het 'n basiese vraag. ANDI Peng: Yup. GEHOOR: Hoe spaar jy jou lêer as 'n HTML? ANDI Peng: Ja. So as ek 'n nuwe lêer te skep, as ek dit doen New lêer, Untittle, as ek dit doen, section.html, boom, dis al wat ek het om te doen. GEHOOR: [onhoorbaar]? ANDI Peng: No. GEHOOR: [onhoorbaar]. ANDI Peng: No. GEHOOR: [onhoorbaar]. ANDI Peng: Ja. Pretty much, die uitbreiding op die lêer wat binne-in jou IDE, wat vertel die rekenaar, wat vertel die leser, hey, kyk uit. Dit gaan om die kode te wees geskrywe is in hierdie taal. So byvoorbeeld, in Microsoft Word, wat doen al Word-dokumente eindig met wat die uitbreiding? Doc of Docx, reg? Al wat doen, is om spesifiseer jou bedryfstelsel, hey, jy 'n Word dokument kom het. Maak dit met Woord. Dieselfde ding met PDFs. Dit weet, o, ek moet om oop te maak hierdie lêer met Adobe Reader of Adobe Acrobat. En so uitbreidings bedryf die op dieselfde manier as in jou rekenaar. As jy jou kode inskryf genoem te word HTML, dan is dit weet, oh, het jy HTML-kode. Ek is van plan om dit te hanteer as HTML-kode. So dit is super smart in daardie sin nie. Sodat almal, laat ons soos 10 minute en net skep ons eie webtuistes. Kom ons voeg in die mooi dinge. Voel vry om te sê wat jy wil. Ek wil net seker maak dat almal se bedieners korrek loop voordat ons jou in die pset. Want as jou bedieners nie hardloop vir die pset, wat sal wees baie, baie sleg. Ek gaan net om rond te dryf en sien wat almal se werk. Hoe gaan dit? GEHOOR: Ek het net omgedraai op my rekenaar. ANDI Peng: Dit is OK. GEHOOR: [onhoorbaar]. ANDI Peng: Net jou IDE. Ja. GEHOOR: [onhoorbaar]. ANDI Peng: Dis OK. GEHOOR: [onhoorbaar]. ANDI Peng: heeltemal fyn. Is almal toegang hul web server OK? Is apache50 loop OK? Ek dink in sommige van die ander afdelings, ons het probleme met mense nie in staat is om toegang tot die bediener. Ja. Sodat jy net hardloop apache50 ruimte begin ruimte tydperk. GEHOOR: [onhoorbaar]. ANDI Peng: Yup. Goed? GEHOOR: [onhoorbaar]. ANDI Peng: O, OK. So jy veronderstel is om 'n ruimte te hê. So apache50-- GEHOOR: ek gedoen het. ANDI Peng: --start ruimte. GEHOOR: Ag, ruimte dot. ANDI Peng: Yup, ruimte dot. Daar gaan jy. Daarom dan, as jy 'n HTML bladsy geskep, dan kan jy net gaan direk die skakel wat dit bepaal. En jy moet in staat wees om dit te bekom. Almal staat was om toegang tot hul webblaaie OK? GEHOOR: [onhoorbaar]. ANDI Peng: O, dit is OK. GEHOOR: [onhoorbaar]. ANDI Peng: Ja. Ek dink jy kan eintlik oop dit binne jou webleser en nie net jou IDE leser. Ja, ek dink as jy kopieer en plak dit. GEHOOR: En dan hoe kan ons dit af? [Onhoorbaar] ANDI Peng: Ja, jy doen apache50 stop met geen tydperk. Yup. GEHOOR: [onhoorbaar]. ANDI Peng: Met geen tydperk. Ja. Daar gaan ons. Yup. Ons skep ons eie webblaaie. GEHOOR: O, cool. ANDI Peng: Ja. GEHOOR: Ek het 'n vraag. So apache 50-- ANDI Peng: 50, ja. GEHOOR: [onhoorbaar]. ANDI Peng: Wat? Dit is vreemd. Sien, dit was soort van die probleem Dit was voor die gebeur. OK. Sien my na artikel. Omdat ons met 'n paar probleme met die bediener. En wat jy wil maak seker dat jou bediener is hardloop voor die aanvang van die pset. Want jy gaan dit nodig kry. Ja. Is daar iemand anders wat nie reeds staat om hul bediener om te begin? Vir dié van julle wat wil voeg addisionele styl aan jou webblaaie, kan ons eintlik doen wat Dawid gedoen in lesing so goed, wat is 'n ekstra styl vel, wat is 'n dot CSS, Cascading Style Sheet en eintlik net voeg dit in. So byvoorbeeld, het ek net gemaak pretty much byna presies dieselfde een Dawid gedoen in lesing. Jy kan pretty much net liggaam te doen. Jy wat is tags genoem waarin jy kan aansoek doen om alles artikel IO jy wil in jou werklike HTML-bladsy. Sodat die liggaam van die bladsy, jy kan die teks align sentrum doen. En dan sal ek kreatiewe 'n tag genoem top binnekant waarvan ek wil hierdie dinge gebeur nie, wys 'n groter pixel grootte vir die font. Ek wil die font gewig vet. En ek wil die kleur aan wees blou, net arbitrêre waardes wat ek besluit om van te kies. Ek kan nog 'tag genoem middel te skep. Lettergrootte, maak dit 'n bietjie kleiner. En dan kan ek 'n ander etiket te skep genoem onderkant waar ek wil die lettergrootte om selfs nog kleiner wees. En so pretty much is dit net n voorbeeld bronkode of bron style sheets dat dit baie maklik om net Google. As jy sê: Ag, ek wil my font word kursief en donker groen, Jy kan waarskynlik Google, en dan sal dit vir jou sê die toepaslike tags of ID's te skep. En so het die manier wat jy sou eintlik soort het dit in 'n HTML-dokument of gebruik dit is al wat jy het hier doen, is aan die hoof Voeg 'n skakel na die stylblad. So jy kan net 'n skakel href gelykes Wat ook al die naam van jou stylblad is. En dan is die verhouding is 'n styl neer. So binne 'n HTML-dokument, solank as jy sluit hierdie dot CSS blad, moet jy in staat wees om toegang te verkry en het die eienskappe is daar. So byvoorbeeld, hier ek het nou net skep nog 'n voorbeeld webblad. Dit is welkom om CS50 artikel Dinsdae 2:00-03:30 saam met my. En dan het ek 'n pragtige beeld het bygevoeg dat ons potensieel moet in staat wees om te sien. So as jy 'n blik hier neem, as jy gaan na style.html, Ons het 'n web bladsy met 'katjies. Omdat katjie is awesome. So die toevoeging van 'n beeld is net img src skakel. Pretty much, as daar enige soort funksie jy wil by jou website-- so kom ons sê, jy wil om 'n spyskaart voeg of 'n search bar of soos 'n image-- net Google hoe om dit te doen. En jy moet net plop in daardie formaat. En jy kan net mooi veel voeg dit in. Dit is baie, baie maklik. Ons skep ons eie webblaaie nou. As jy wil-- GEHOOR: [onhoorbaar] ANDI Peng: Jammer? GEHOOR: [onhoorbaar]. ANDI Peng: O, die div is net 'n afdeling vertel my dat, oh, ek het 'n sekere artikel genoem middel in wat ek toepassing my CSS tag, en dan my ander afdeling met die onderkant. Dit is al wat dit is wat jy vertel. Want dit is lekker om te hou dinge netjiese in orde is, so die program weet presies hoe om te hardloop. En dink ek kan kopieer plak hierdie in my werklike leser as well. Dit moet goed wees. Ja. Yay. So as almal wil net probeer om 'n web bladsy, ons sal nog twee tot drie minute. Ek wil net om seker te maak almal se bedieners loop en almal het 'n idee van hoe om dit te doen. As jy ouens wil neem jou rekenaars. Steeds nie werk nie? GEHOOR: Ek is net [onhoorbaar]. ANDI Peng: Miskien probeer werk 50 as well. Ja. GEHOOR: [onhoorbaar]. ANDI Peng: Ja. So die manier waarop jy 'n nuwe begin web bediener op die IO is net doen apache50 ruimte begin ruimte dot. Ek wou net om seker te maak almal se bedieners loop OK. GEHOOR: Hier op die terminale? ANDI Peng: Ja. GEHOOR: [onhoorbaar]. ANDI Peng: Apache. Eintlik, ek dink jy is hardloop iets wat reeds. Ja, jy eintlik is hardloop 'n ander bediener. Ja, jy is goed. Solank as wat werk, is jy OK. GEHOOR: OK. ANDI Peng: Daar is twee maniere om bedieners loop. So lank as een van die maniere werk, dit is alles reg. Ons sal nog 'n minuut neem net soort van klaarmaak die afwerking van watter webblad julle wou maak. Hulle almal deur die manier? Bedieners almal se hardloop behalwe vir jou? Ons sal uitvind dat uit. En HTML se redelik eenvoudig. So ek dink ons ​​is almal goed. Ja. Ek sal terug kom. GEHOOR: [onhoorbaar]. ANDI Peng: OK. GEHOOR: So dit is net begin laai. ANDI Peng: Geen sorge. So HTML, daar is bronkode wat sal aanlyn na artikel wees. Ook Dawid het 'n hele klomp online as well. Net soort van oogopslag oor dit sien hoe HTML bladsye geskryf. Dit is redelik maklik. Enigiets wat jy nie weet nie, jy mooi much net Google en jy is goed. Ek wil net seker maak dat jou bedieners loop. GEHOOR: Is dit doen dikwels? ANDI Peng: Dit is nooit met my gebeur het. Ek het nie geweet dit kan selfs hiberneer. GEHOOR: [onhoorbaar]. ANDI Peng: Ek dink everyone-- my nog nooit gehiberneer. En ek weet nie hoekom nie. Dit is vreemd. GEHOOR: [onhoorbaar]. ANDI Peng: is joune hibernerende? GEHOOR: [onhoorbaar]. ANDI Peng: Ja. GEHOOR: Dis OK. So wanneer dit oop is. ANDI Peng: OK. Ons sal gaan met 'n paar bediener kwessies na artikel. Jy moet goed wees. Alhoewel, jy wil om seker te maak jy Kry hulle opgelos word voordat jy vertrek. Want as jou bediener se loop nie, dan is jy gaan nie in staat wees om die te doen pset, soos enige deel van die pset. So jy wil om seker te maak dat werk. Koel. Alles reg. Groet katjies. Ek het 'n lang tyd op soek na dat katjie prentjie om aan te trek. So, anyways. GEHOOR: [onhoorbaar]. ANDI Peng: Jammer? GEHOOR: [onhoorbaar]. ANDI Peng: Ek dink dit is op die webwerf. Soos die spec? GEHOOR: [onhoorbaar]. Ek dink die spec is net aanlyn in week sewe. Ek dink dit is pset6 geroep, al is ons op week sewe, wat is 'n bietjie rekenaar. GEHOOR: Maar ek bedoel as jy wil at-- kyk as jy wil trek ons ​​weergawe van die webwerf van ons verbreek? Dus, net soos server.c is die pset, reg? As jy wil om te kyk na hierdie, soos hoe dit tjeks uit? ANDI Peng: O, so eintlik die pset, is al wat ons doen hier is hier implementing--, Ek gaan oor dit kortliks. So vir almal wat net gekry artikel, julle is in geluk. Daar is baie min materiaal om werklik te dek vandag. Ek gaan net na die volgende te spandeer 20 minute gaan oor pset help. Want daar is 'n paar nuttige funksies wat jou lewe sal help. En hopelik sal ons uit te wees hier in soos 20 minute. OK. So pset7 is verkeerd. Selfs al is ons op week sewe, dit is eintlik pset6. Ek sal verander. Al wat ons doen in pset6 skep 'n web bediener. Dit klink super scary. En veral vir diegene van julle wat reeds gekyk na die verspreiding kode, daar is 'n baie van die kode, 'n baie van die kode. Maar is heeltemal OK. Omdat die fyner kunsies deel van die skep eintlik die bediener gedoen word deur ons. Al wat jy regtig gevra om te doen in hierdie pset is net 'n paar string manipulasie doen in lêer I / O. Dit is eintlik soos redelik eenvoudig. So wanneer jy die eerste that-- aflaai wat hier het eintlik reeds afgelaai die pset en geneem 'n blik? Alles reg. Ja. Daar is soos 500 reëls van die kode wat jy gaan wees, wat gaan aan? En dit is heeltemal fyn. Maak seker dat jy die loop-throughs kyk. Omdat Dawid and-- Ek weet nie. Ek dink nie dit is Zamyla se, hierdie een. Maar ek dink 'n paar ander loop-throughs is redelik nuttig in terme van net laat jy weet wat gaan op die binnekant van die kode. En dit is heeltemal OK. Omdat die vier funksies wat jy gevra om te implementeer eintlik zero te doen met die werklike bediener. Al wat hulle hoef te doen is net ontleding van verskillende snare, soek deur snare, om seker te maak dinge doen wat hulle veronderstel is om te doen. So tot daardie effek, is daar 'n paar baie, baie nuttige funksies, veral vir string manipulasie, dat ons almal gaan oor dat ek gedink ek wil wees baie nuttig vir julle ouens om te leer voordat die pset. En hulle is almal vervat binne jou string.h biblioteek. Daar is waarskynlik meer nuttig funksies wat ek nie hier ingesluit nie, want ek óf nooit gebruik of miskien het ek net nie weet hulle bestaan ​​nie. Voel vry om oogopslag student.h. Want daar gaan 'n baie wees van funksies wat baie nuttig. So het die ses dat ek die meeste in gebruik my pset toe ek dit gedoen het die afgelope week was strtok, strchr, strrcher, strstr, strcasecmp en strcpy. En so het die laaste twee lyk mooi vertroud met die meeste van julle. Geval Str vergelyk, al wat dit doen is vergelyk snare om hulle te gaan vir gelykheid, insluitend geval. En strcpy net kopieë een string in 'n buffer. En so die twee moet baie lyk bekend aan jou ouens op hierdie punt. Omdat ons hulle 'n baie gebruik het, veral vir die laaste psets. Maar die eerste vier miskien jy nie gesien het tot nou toe. Maar ek gaan net loop deur hulle. Omdat hulle gaan om jou lewe te maak regtig, regtig maklik for-- nie maklik nie, maar veel makliker vir hierdie komende pset. OK. So char * strtok, dit is die funksie definisie vir hierdie funksie vervat binne die string, h biblioteek. As jy 'n gegewe insette van char * string, wat net 'n string, of 'n konstante char * deliminator, skeiding steken vir kort, al wat dit doen is om te breek die groter string in 'n reeks van wat ons noem tekens geskei deur 'n sekere waarde. So in 'n sin, as ek te gee jy section.7.php, dit is 'n string. Sodat sou wees as ek was om te slaag in hierdie as my str, my kar * str, as my deliminator was dot, dit alles sou doen, is die soek deur string. En die eerste keer dat dit sien 'n dot, Dit sou net terug te keer na die wyser om die laaste teken gevind in die string voor hierdie. So sou dit hier gaan. En dit sou gee my net 7.php. En as ek die skakel funksioneer nog een keer, dit sou gee my net die .php. En so sal die hele hierdie funksie te doen is die afbreek van die groter string in kleiner snare afhangende op wat jy soek. En so byvoorbeeld in jou kyk up funksie as jy wil om te kyk na wat sekere karakters kom oor of as kolletjies gebeur of uitbreidings gebeur nie, hierdie funksie sal redelik nuttig wees. Ja. Geen probleem. Dit sal al be-- ja, what's up? GEHOOR: So in die eerste reël, as ons met behulp van hierdie voorbeeld, Wat sou ons plaas in dit? ANDI Peng: Ja. Jy wil net noem 'n strtok string komma skeiding steken. En string is gelyk aan section.7.php. En dan moet jy skeiding steken is gelyk aan net dot kan wees. GEHOOR: OK. ANDI Peng: Ja. Net so. Al hierdie funksies is redelik soortgelyke wanneer ons gaan deur hulle. Hulle doen net effens verskillende dinge. Maar hulle is almal gaan maak jou lewe baie makliker. Tweede funksie, hierdie een is soos super, super, super belangrik, is the-- hou. Oops. Strchr soektogte vir die eerste occurrence-- eintlik, ja. Strchr is die funksie wat Ek het beslis net gaan oor. So ignoreer wat ek gesê het vir die eerste funksie. Dit is eintlik genoem strchr. So, wat sou hier gebeur, is as jy kry 'n string in 'n kar c, Dit sou net te gee jy wat dit ook al was. Ja. So dink aan dit as str, wat is 'n string, en chr as char. So al wat jy probeer om te doen is soek Want waar 'n kar is binne 'n string. En so het dit soek vir die eerste voorkoms van die karakter c in die string str. GEHOOR: [onhoorbaar]. ANDI Peng: Yup. En dan as dit nie vind dit, dit gaan om terug te keer NULL. So iets wat gaan baie wees nuttig vir julle in die doen van die pset As, sê, is jy op soek na 'n uitbreiding soos 'n Docx vir 'n Woord dokument of 'n .pdf vir 'n PDF-dokument, jy kan soort van dit gebruik om te kyk vir alles wat daarna elke keer as jy sien 'n dot, reg? En so pretty much, as jy hardloop dat ons deur die funksie As dit terug NULL, dan weet jy dat dit het dit nie vind dot, wat dit beteken duidelik is nie 'n geldige lêer uitbreiding. Of as dit terug iets, dan weet jy dit gaan net die terugkeer eintlik na die uitbreiding. So dié van julle wat het begin soek deur lookup en ontleed, hierdie funksie se gaan super nuttig wees. So ons is eintlik gaan om aan te toon die gebruik van hierdie. Hoekom het jy nie probeer ouens skryf van 'n funksie Bool vonnis char * s wat net terug waar as s is 'n vonnis en valse anders. So wenk, jy gaan om waarskynlik gebruik strchr. Of jy net te soek in die string vir 'n sekere karakter. En so in 'n sin, wat skei 'n sin van 'n nie-vonnis, wat spesifieke karakter? GEHOOR: 'n ruimte. ANDI Peng: 'n ruimte, reg? En so wat doen ons waarskynlik gaan wil doen in hierdie funksie hier? GEHOOR: [onhoorbaar]. ANDI Peng: Ons gaan om te wil strchr string vir die verskyning van die ruimte. Want as dit iets, dan terug ons weet dat hierdie 'n sin moet wees. Dit beteken dat ons moet 'n ruimte in hierdie string. As daar is geen ruimte, dan weet ons dat hey, dink dit is nie 'n string. Dit is waarskynlik net 'n baie lang woord. So ek gee jou 'n paar ouens minute om hierdie funksie te skryf. Ja. GEHOOR: Het jy hierdie string van die gebruiker? ANDI Peng: Ja. So dit is net 'n funksie. So dink die binnekant van jou belangrikste funksie jy reeds have-- laat ons gaan hier. OK. So ek het hierdie program waar skriftelike Ek het my hooffunksie waar Ek het net gemaak twee stringe. Die eerste een is Hi, my naam is Andi-- duidelik 'n sin. My tweede een is net Andi, duidelik nie sin. En so ek hardloop beide van diegene snare deur hierdie funksie. Ek wil julle vir koue sin te skryf. En ek stoor daardie waardes, en dan net die druk van hulle uit. So dink dat die gebruiker gaan slaag in 'n string. En dan gaan jy in wese uit te vind of dit is 'n sin of nie en daarvolgens terugkeer waar of vals is. As jy ouens wil 'n te gee thumbs up of hoofde op, hoof knik, is iemand se gereed om te begin hierdie, wat sou goed wees. Miskien soos 30 sekondes meer? Alles reg. Kom ons kyk of jy kan probeer skryf van hierdie funksie. So pseudo coding-- Ek gaan net om soort van loop deur middel van hierdie oomblik. Pretty much, ons weet die funksie wat ons nodig het om te gebruik. Ons gaan daardie funksie roep ons string en soek vir 'n ruimte. As dit iets terug, dan moet ons weet dat duidelik, dit is 'n sin. Want daar is ruimtes. Dan gaan ons ware terugkeer. Anders, gaan ons valse terugkeer. Is daar iemand wat wil gee my die eerste reël van die kode dat ons eintlik gaan om te gebruik om hierdie te skryf? Dit is eintlik die moeilikste reël van die kode so goed. Ja. GEHOOR: As strtok s-- ANDI Peng: Slegs strchr. GEHOOR: [INTERPOSING VOICES] ruimte is nie gelyk aan null. ANDI Peng: Cool. Presies reg. Almal verstaan ​​dat die eerste reël? Ons gaan strstr noem, wat is 'n funksie wat soek die string s vir die kar van die ruimte. En as dit bevind is, gaan dit terugkeer 'n wyser na waar dit is. As dit nie vind nie, dit gaan om terug te keer NULL. So as dit iets anders as terug NULL, dan weet ons dit is gevind dat 'n ruimte. Maak wat sin maak? Koel. Alles reg. So as ons weet dit is gevind dat 'n ruimte, wat wil ons doen? GEHOOR: Terug waar. ANDI Peng: Yup. Terugkeer waar. En dan, iemand wil voltooi die funksie vir my? Ja. Anders, net soos dit. En probeer die opstel van hierdie. Yup. So as julle kan sien uit die uitsette, onthou Booleans in C is altyd uitgedruk in binêre. 1 is waar. 0 vals. As ons hierdie hardloop funksie string een, wat is Hi, my naam se Andi-- duidelik, 'n sentence-- die resultaat gedruk om 1 wat waar is. Die tweede een, wat net 'n woord, resultaat gedruk 0, wat is onwaar. Almal duidelik soort van hoe hierdie funksie is geskryf? Ja. GEHOOR: Kan ons dit ook doen, in plaas van nie gelyk nie, is gelyk aan 0 is gelyk aan, sodat dit gelyk is aan? ANDI Peng: No. Omdat strchr is 'n funksie. Ek gaan terug na hierdie. So, wat is die soort opbrengs van ons strchr funksie? GEHOOR: O, OK. Of NULL. ANDI Peng: Ja. Dit is 'n char * wat my vertel dat alles wat hierdie funksie gaan terugkom, dit gaan om 'n wyser wees. Óf die wyser gaan word wys na waar dit gevind nie, of dit gaan om terug te keer 'n verwysing na null. In beide omstandighede, dit gaan om 'n wyser terug na iets. En so as jy was om gelyk hierdie gelykes, gelykes, 0, jy gaan 'n samestelling fout. Want dit gaan 'n wyser terug te keer. En jy gaan om te probeer om vergelyk 'n wyser na 'n heelgetal. En die rekenaar is nie gaan hou nie. Ja, presies. Koel. Almal goeie? En tweedens, ons gaan om te gaan oor 'n funksie genoem strstr. Geen bekommernisse as hierdie funksies is verwarrend jou. Hulle is my verwarrend. As sodanig, kan jy ouens gesien het, hulle almal pretty much dieselfde. Net wanneer jy verward, trek die string.h biblioteek. En julle kan sorteer waardeur 'n mens se wat. So strstr, alles wat nie is soektogte 'n string vir 'n hele ander string. So waar strchr net soektogte vir 'n enkele karakter, strstr soektogte vir 'n hele string. So ek wou om te kyk in, doen ek nie, weet, Hi, my naam is Andi. En die naam van my beste vriend se is ook Andi. As ek wou om te kyk in hierdie vonnis vir die hele woord van Andi, my naald sou gewees alles wat jy soek. En jou hooiberg is alles jy soek vir dit in. So as jy op soek na 'n spesifieke woord in 'n sin, dat die woord gaan jou naald wees. En dan is die sin self gaan jou hooiberg wees. En so is dit net soek die eerste voorkoms van die string naald in die string hooiberg. Dit gee die wyser die eerste voorkoms. Behalwe, onthou in hierdie geval, dit is die eerste voorkoms van die hele string wat jy soek Want nie net 'n karakter. En so dit is amper die dieselfde as die funksie ons het net gedoen het, net met 'n bietjie meer spesifisiteit. Omdat jy op soek is na meer as net een karakter. En die gebruik is presies dieselfde as die een wat ons nou net gedoen het. Almal OK met hierdie? OK. Laaste een wat ons gaan om te gaan oor is strrchr, wat nie verwar word met strstr of met strchr. strrchr het 'n ekstra r daar. Wees versigtig wanneer jy tik. Jy kan vind jouself insluitend 'n ekstra r of nie ook 'n r, en dan jou funksie is het nie gaan werk nie. En jy gaan verward te wees. Wees versigtig dat jy die spelling al hierdie funksies reg. So strrchr is die presiese dieselfde as strchr behalwe dit soek vir nie die eerste voorkoms van 'n spesifieke karakter, maar eerder die laaste voorkoms. En so, in die sin dat, dit is byna presies dieselfde. Maar in plaas van die beweging stuur in 'n string, jy gaan beweeg terug in 'n string. Presies dieselfde ding, is jy net soek in 'n ander orde. En so kan dit super wees, super nuttig vir jou lookup funksie, die eerste funksie op jou pset. Kom ons voorgee dat ons nodig het om 'n skrywe funksie van leemte uitbreiding waarin ons slaag 'n konstante char * lêernaam, net 'n string, 'n lêer naam, wat neem in die naam en afdrukke die uitbreiding van die lêer. So byvoorbeeld, as ek slaag in die string pset7.zip, dit gaan net buite te druk die uitbreiding, wat is Zip. En dit sal werk vir enige soort van uitbreiding, Docx vir Word of Pdf vir 'n PDF lêer of Html vir 'n HTML-lêer. Pretty much, skryf 'n funksie wat dit kan doen. Ek is eintlik van plan om oor te skakel na die IO. Dit is nie daar nie load-- ons gaan. So al wat ek hier gedoen is het 'n kar *, 'n eerste string, genoem pset7.zip. Ek gaan in om te vergroot. Ek het 'n tweede string geskep genoem finalpaper.docx. En skryf vir my 'n funksie dat wanneer genoem gaan net druk die lêernaam uitbreidings. Miskien neem 'n paar minute om te dink oor hoe jy gaan om dit te doen. Bietjie meer uitdagend as die laaste een, maar die gebruik is byna presies dieselfde. Ja. So skryf 'n funksie genoem uitbreiding dat as ek gee jou die naam van 'n lêer, as ek gee jou pset7.zip-- ek wil hê jy om uit te druk net die .zip. As ek vir jou wil finalpaper.docx, net die druk van die Docx, net die uitbreiding van watter lêer. Dit is eintlik net neem twee reëls van die kode. So probeer om te sien as jy kan dalk doen dit in daardie. Eintlik is dit net neem een ​​lyn van kode. Maar twee lyne is waarskynlik meer standaard. Watter funksie is ons waarskynlik gaan wil om te bel? GEHOOR: strrchr. ANDI Peng: strrchr, reg. Omdat ons soek van die regterkant linkerkant. Ek het nie gee julle ouens 'n voorbeeld soos hierdie, maar as ek het julle 'n voorbeeld soos www.apple.com en ek wou net die com, sal dit 'n voorbeeld van waar wees jy wil die laaste instansie bel van die tydperk en nie die eerste nie, reg? As jy oproep strchr dit sou jy het gegewe die apple.com. As jy strrchr genoem, is dit sou jy die lig van die com. En so wees versigtig op wat ways-- in my voorbeeld, jy kan waarskynlik kan hê net geskryf dit met behulp van strchr, want daar is net een dot. Maar in ander gevalle, wat mag nie die geval te wees. En so probeer altyd om te ontwerp jou kode goed, so that-- ja? GEHOOR: So in die Byvoorbeeld jy net gesê, wanneer jy dit sou strrchr gee jou Com of net kom? ANDI Peng: Dit sou die com gee. GEHOOR: OK. ANDI Peng: Ja. Dit dui op waar dit gevind het. Ja. 30 sekondes miskien? Ja. Almal goed of miskien 'n bietjie meer tyd? Opsteek van hande? Wys koppe? Koel. Iemand wil hê om my te gee die eerste reël van die kode vir hierdie program? GEHOOR: [onhoorbaar]. ANDI Peng: So eerste van alles, laat dalk breek dit neer. So, wat is die terugkeer tipe strrchr? Kom ons gaan terug. strrchr, wat is die soort terugkeer? GEHOOR: Char * ANDI Peng: Dit is 'n char *, reg? Wat beteken dat jy waarskynlik gaan om te wil 'n ander kar * soort te skep van die winkel wanneer dit terug te keer na, reg? Want as jy bel die funksie strrchr, dit gaan vir jou 'n wyser te gee waar dit gevind dat dit die laaste periode, reg? Maar jy gaan om te wil stoor wat iewers, reg? En so hoe kan ons die kode dit in ons program? GEHOOR: Jy maak die char * [onhoorbaar]. ANDI Peng: Yep. GEHOOR: [onhoorbaar]. ANDI Peng: strrchr. Ja. O, gemis 'n r daar. GEHOOR: Lêernaam [onhoorbaar]. Wat is dit? O, dit is net s. ANDI Peng: O, dit is net s. Yup, jammer. My fout. Voorbeelde nie ooreenstem. GEHOOR: En dan dot. ANDI Peng: Yup. Wees versigtig wanneer jy ouens are-- hier, laat my in zoom. Daar gaan ons. Wees versigtig wanneer jy ouens tik, veral wanneer jy doen net 'n kar. Dit is regtig maklik om per ongeluk net doen dubbele aanhalingstekens eerder as single. Dit sal nie werk nie. Jou samesteller gaan om te kla. En jou funksie is nie net gaan om te hardloop. En so wees versigtig wanneer jy dinge doen met karakters dat dit enkele aanhalingstekens. En so ook hierdie lyn van kode sin maak vir almal? Ons skep 'n char * wyser. Omdat strrchr opbrengste iets van die tipe wyser. En so gaan ons strchr noem op s, wat is die string, die lêer noem, dat ons verby in. En ons is op soek na die laaste geval van 'n tydperk, wat net die enkele aanhaling dot enkele aanhaling. Ja. GEHOOR: Wanneer gebruik ons ​​dubbele aanhalingstekens en wanneer gebruik ons ​​aanhalingstekens? ANDI Peng: Ja. So dubbel aanhalings is altyd gebruik wanneer jy 'n string van meer as net een. So as jy strstr doen, wat is die een wat jy soek 'n string vir string, jy sou dit slaag in dubbele aanhalingstekens. Maar enige tyd is dit net 'n enkele karakter, jy wil aanhalingstekens te doen. Dit is 'n goeie ding om in gedagte te hou. So nou dat ons het ons wyser, wat doen ons met dit? Ek vra julle om druk dit uit, reg? So [onhoorbaar], wil jy gee my die reël van die kode? GEHOOR: printf-- ANDI Peng: Ja. GEHOOR: --you moet 'n plekhouer. ANDI Peng: Yup. GEHOOR: Druk die plekhouer. Ek weet nie wat die plek houer is, maar punt om dit te. OK. Kom ons slaan dat dan nou. GEHOOR: En dan comma-- ANDI Peng: Pointer, reg? GEHOOR: Pointer, yup. ANDI Peng: So soort van 'n truuk vraag het te doen met wysers en snare dat ons soort het gepraat oor al. Watter soort plekhouer doen ons nodig het vir 'n wyser na 'n char *? GEHOOR: [onhoorbaar]. ANDI Peng: Ja. Dit is makliker as julle dink dit is. GEHOOR: String? ANDI Peng: Dit is net 'n string, presies. Want onthou snare nie regtig bestaan ​​nie. A char * is die presiese dieselfde ding as 'n string. En so baie van hierdie is is wat moes gewees het al langs gebruik. OK. Kom ons kyk of ons kan probeer om hierdie. Kom ons doen 'n maak-uitbreiding. Koel. Julle sien hoe ek geslaag in die psset7.zip en die finalpaper.docx, en dit druk net uit die Zip en die Docx? Maak sin? OK So ek dink in jou kyk up funksie in jou pset jy gaan as die wat gevra moet word string het 'n sekere eindig, jy het om 'n sekere fout kode te gee. En so sal dit wees aaklig. Want as jy kan uitvind uit te vind wat die uitbreiding is, jy kan dan vergelyk uitbreiding om te sien of dit ooreenstem up met 'n sekere uitbreiding. En dan kan jy terug 'n fout boodskap, reg? Ja. GEHOOR: So het ons dit nie doen nie het om by te voeg 1 of enigiets? Die wyser sal gaan na the-- ANDI Peng: Nee. GEHOOR: --point nadat dit. ANDI Peng: Ja. Dit wys presies waar die voorkoms was. So byvoorbeeld hier, ons is soek vir die tydperk. So dit gaan om terug te keer 'n verwysing na die tydperk. En dan is dit gaan om te druk uit begin by die tydperk. Sodat jy nie nodig het om by te voeg 1. Alhoewel, dit is heeltemal fyn om, as jy ooit onseker is, om net 'n soort van toets dit uit jouself. Bou 'n voorbeeld program. Toets dit uit jouself en sien waar dit is die druk. Dit is ook nie 'n slegte manier om dit te doen. Koel. En dit is pretty much al Ek het vir julle vandag. Ons het 'n baie pset dinge vandag. So wanneer jy twyfel, soos Ek het gesê, altyd kyk die string.h biblioteek vir hierdie pset. Daar gaan 'n baie wees funksie in daar wat kan nuttig wees. Sommige mag nie nuttig wees. Ek weet nie regtig. Wade deur dit, daar is 'n hele klomp van hulle. strstr, strchr, strrchr is super, super nuttig, asook die strcpys en strcasecmps wat ons reeds gebruik het. Dis net baie messing rondom met snare, bepaal of hulle is gelyk, kry dinge uit snare, en in staat is om die lêers korrek oop te maak. Dit is 'n baie lêer I / O. pset is regtig nie so sleg nie. Jy gaan 'n te neem kyk na dit, laai dit, en sien 'n hele klomp van die kode. Geen sorge, die kode wat jy eintlik skryf is glad nie sleg nie. As iemand probleme met hul bediener, kom kyk my na artikel. Weer vra om verskoning vir nie bring lekkergoed om Halloween. Ek weet nie wat fout was met my. Maar ons sal 'n dubbele die lekkergoed volgende keer. En voorspoed in jou pset hierdie week. Yup.