ANDI PENG: Ni estas preskaŭ tra ĉiuj psets. Fakte, ni estas tra la plimulto de la plej malfacilaj psets. Do ni estas efektive nur tuj ia venteto tra la sekvanta paro de semajnoj. Ni tuj komencos parolante pri nia fina projektoj, la eventoj venanta supre en la sekvantaj malabundaj semajnoj. Kaj vivo estos brizo. Do ne tro multe hodiaŭ. Espereble, efektive brizo tra la tagordo por hodiaŭ, kaj tiam el tie kun iom da tempo por ŝpari. Ankaŭ, mi volas pardonpeti por la manko de bombono hodiaŭ. Mi ne scias kial. Sed en la semajno kondukante supren Halloween, mi forgesus dolĉaĵoj. Do mi estas fakte nur vastan seniluziiĝo al vi ĝuste nun. Ĉar mi laŭvorte memoras bombono por ĉiu unuopa klaso, sed Halloween. Sed venontsemajne, mi venigos duobligi la kvanton de dolĉaĵoj kompensi ke, cxion por vi. Tio estos granda. Do mi havas kelkaj anoncoj pri iuj planadon. Mi havas kelkajn temptabelanta temoj. Tiam ni tuj pluiri al paroli pri kio nomiĝas chmod. Ni tuj paroli pri rapide TCP / IP HTTP. Kaj tiam ni tuj programi nian propra retejo uzante HTML kaj CSS. Kaj poste mi fakte forlasi eble kiel 20 minutoj por paroli pri pset6. Ĉar pset6 fakte multajn aĵoj kiujn ni jam vidis antaŭe, sed mi volis refreŝigi iuj el tiuj konceptoj krom instrui kelkajn novajn funkciojn. Malvarmeta. Do unue, bonvenigi reen de rompiĝo. Mi esperas ke vi estas paŭzo estis agrabla. Ĉu vi faris por paŭzo? Publiko: iris al Novjorko. ANDI PENG: Vi eniris al Nov-Jorko? Mi pensas duono nia lernejo iris al Novjorko. Ĝi estas tute bona. Mi pasigis la plejparton de mia paŭzo malnomadaj enlite Netflixing. Kaj ĝi estis bona tempo. Sed ni estas nun reen, reen en kunsido, reen en la balancilo de aĵoj. Ni havas pset pro tiu vendredo tagmeze. Mi kredas ke vi jam prenis vian kvizon, Yeah? Do iu ajn alia kiu havas ne havis siajn kvizoj, bonvolu veni kaj akiri viajn kvizojn de mi ĉe la fino de la sekcio. Aŭ spuri min sur kampuso. Mi havas ĝin kun mi ien. Nia fina projekto pre-propono ankaŭ. Do por tiuj el ni, kiuj neniam prenita ĉi klaso antaŭ, la Capstone de CS50 estas multege kulminis en tiu grandioza projekto kiu studentoj proponi. Kaj la antaŭ-propono, nur ĝenerala ideo kion oni volus fari por ilia projekto, tiu ideo estas pro lundo, sekvanta lundo tagmeze. Do preskaux, David Mi pensas volo paroli plu ĉe prelego se li ne havas jam. Kaj estas solida paĝon sur nia retejo klarigante ĉiuj postuloj de la projekto. Sed esence, pick ajna topiko kiu vin havas interesiĝis en viaj tempo tie ĉe CS, cxu gxi estas videoludado aŭ dezajno aŭ video aŭ ion. Kaj vi povas vere ia nun apliki iuj de la lecionoj ke ni lernis tie en CS50-- hi, welcome-- al preskaux farado fina projekto preferatan. Ĉiuj jen pro lundo estas nur mallongan blurb retpoŝte al mi, rapidan kondamnon, kiel, hej, Andi, Mi estas vere interesita en desegnanta ludo kiu faras tiun por iOS. Malvarmeta. Nur lasu min vian mallongan komencan ideoj por via fina projektoj. Kaj ni parolos tra ĉu ke estas fakte bona ideo aŭ ne, se ĝi estas farebla ideo aŭ ne. Sed nur la antaŭ-propono ŝuldiĝas sekva lundo. pset6, nian belan web-- ke estas erara. Pset7? pset6? Estas pset6, dekstra? pset6, nia ttt-servilo, estas pro Vendredo tagmeze kun la malfrua tago. Oficejo horoj rekomenci normale de lundo al ĵaŭdo 8:00 al 11:00 tiu semajno. Mi pensas Komunaĵo por la venontaj tri noktoj. Malvarmeta. Antaŭ ni havis en materialo, ĉu iu havas demandojn, ŝercoj, rakontoj? Kion vi faris por falo paŭzo? Publiko: Kio mi faras? ANDI PENG: Jam ĝi estas aĝoj antaŭ praktiko. Christabel iris al Novjorko. Mi restis ĉi tie kaj Netflixed. Publiko: Oh, yeah mi estis tie. ANDI PENG: Oh, OK. Publiko: mi ne memoras kion specife. ANDI PENG: Tio estas BONE. Publiko: Netflixing verŝajne. ANDI PENG: Netflixing. Jes, ĝi estas bona tempo. BONE. Bone. Demandojn antaŭ Ni salti en materialo? Ankaŭ, ni tuj provos rapidi tra sekcio hodiaŭ, ne tro multe por kovri. Kaj espereble, ni akiros el tie iom frue. Pardonu por ne bombono, ankaŭ. Mi estas seniluziiĝo, speciale dum Halloween. Bone. Malvarmeta. Do ni tuj komencos parolante pri komandlinio argumento nomata chmod. chmod, ĉiu estas estas nur Unikso sistemo alvoko farita de la komandlinio ŝanĝi dosierajn permesojn. Do ekzemple, ni ĉiuj renkontis paĝo kiel tiu verŝajne iam en nian vivon span de estanta interreto uzanto, kie nia retservilo havas donis al ni la eraron de Malpermesita. Vi ne rajtas aliri, yadda, yadda, yadda, sur tiu servilo. Ĉiuj kiu vere signifas estas ke la permesojn ke estis alkroĉitaj al kiom paĝo vi volis aliro ne malfermita al vi. Do preskaux, chmod estas la maniero en kiu ni povas modifi tiujn sistemo permesojn doni ĉiu, la uzanto, la grupo, aŭ la mondo, aŭ ajnan kombino de tiuj aliro al iuj dosieroj, subdosierujoj, ion vere, omnaspeca sistemon sur mastruma sistemo. Do se iu el uloj havas komputiloj se vi sentas kiel sekva kune kun mi hodiaŭ, tute bonvolu tajpi aferoj en. Se ne, vi povas simple pendi. Do mi tuj fakte tiri mian terminalo nun. Do la komandon lanĉendan chmod, aŭ almenaŭ nur printi la permesojn de via dosiero dosierujo, estas nur ls-l. Kiel vi povas vidi, faskon de ŝtofo krevas supre plejparto de kiu estas grava al ni sur la maldekstra flanko tie. Vi uloj vidi faskon de rs, ws, 1 /. Yeah. Tiuj estas esence nur ĉiuj dosierajn permesojn klarigi kion certaj subdosierujoj kaj dosierojn en via sistemo havas. Do ni revenu al la potenco punkto tie. Do aldone al la dosiero nomoj kiel vi uloj povas vidi sur la dekstra, ni serĉas vidi esence nur la kolumnon maldekstre. Do krom ĵus la dosiero nomoj, ni povas vidi la permesojn de dosieroj, ilia mastro grupo, la grupo nomon, la daton ke la dosiero estis lastafoje modifita, kaj tiel plu. Vi povas vidi multajn aferojn uzante chmod. Do la maniero ke oni legas chmod estas ke la unua letero ni preskaux ignori laŭ legado permesojn. La unua litero nur klarigas kion tipo de sistemo ni aliru. d, ĉikaze, estas dosierujo aŭ dosierujo. Do ni scias ke nuntempe mia laborspaca sekcio sep estis dosierujo. Kaj tiam vi vidos tri triadoj, esence nur tri aroj de tri karakteroj. Kaj vi povas pensi de ĉiu kiel iom. Do vi simple havas tri arojn de tri bitoj, naŭ bitoj entute. Vi traktas ilin en grupoj de tri. Do la unua grupo de tri estas Ĉiam via uzanto permesojn. Via dua grupo de tri estas Ĉiam via grupo permesojn. Kaj via tria aro de tri Estas ĉiam kiel la mondo, la ĉie permesojn. Do mi supozas ke la facilaj demando demandi estas kio estas la diferenco inter uzanto kaj grupo. La ĉefa diferenco inter uzantoj kaj grupoj estas ke uzanto estas nur vi persone aliranta ajn ĝi estas ĝuste nun. Grupo povas esti se vi havas plurajn uzantoj en unu komputilo, ekzemple. Ĉiuj ili povas esti traktata kiel grupo. Kaj tiam la mondo estas nur la mondon, ĉiuj. Do ni povas vidi poste kiel ni povas modifi tiujn en malsamaj permesojn. Do preskaux, ni estas tuj ankoraŭ enfokusigi fare maldekstre, kie por dosierujo CS50 vidas drwx, kie la r simple signifas estas legebla. La w simple signifas ĝi estas skribebla. Kaj tiam la x simple signifas ĝi estas plenumebla. Oni kredus ke ĝi afabla de sensencaĵo. Ĝi devus esti e. Sed x fakte speco de funkcias iom pli bone, ĉar vi povas memori ĝin pli bone. Do la tri tipoj de aferoj vi povas fari, vi povas aŭ legi dosieron, Vi povas havi permeson skribi fajliloj, aŭ vi povus havi permeson ekzekuti dosieron. Kaj tial la maniero kiun ni efektive reprezenti tiujn en bitoj estas la numeroj 4, 2, kaj 1. Do io tio estas legebla reprezentita de la nombro de 4. Io ajn jen skribebla estas reprezentita per 2. Kaj io tio rulebla kiel reprezentita per 1. Do en tiu senco, ni povas ankaŭ reprezenti tiujn numbers-- hi, bonvenigas, en malsama maniero. Pardonon. Antaŭ ĉiu, mi tuj pardonpetas nome de ĉiuj eniri la klason nun. Mi forgesis dolĉaĵoj hodiaŭ. Mi bedaŭras Mi estas fiasko ĉi semajno de Halloween. Mi alportos duobla la kvanto de Candy apud tempon por kompensi ĝin. Sed anyways, bedaŭras pri kiuj infanoj, pardonon. Do la maniero ke ni povas fakte enigo sur nia komando la argumento estas ni povas fari chmod grupo oblikvo permesojn, kie la grupo estas ĝuste kio ajn grupo ni provas ŝanĝi. Kaj la permesoj estas kion ni volas aldoni ŝin. Do ekzemple, la plus aldonas permesojn, kaj la subtrahi forprenas permesojn. Kaj la tipoj de grupo ni havas nia pli por ĉiuj, u por uzantoj, g por grupoj, aŭ o por aliaj. Estas iom abstrakta rajto nun. Sed ni transiru paro ekzemploj nur pruvi tiun realan rapidan. Ĉiu bona sur tiu diapozitivoj, do mi povas pluiri? Malvarmeta. Do ekzemple, rwx. Antaŭ ni parolas pri kio reprezentas, unue kion signifas rwx signifas? Se vi vidas ke tiu certa La dosiero havas permesojn de rwx, kion tio signifas la persono povus esti malfacila? Publiko: legi, skribi kaj ekzekuti. ANDI PENG: Jes, ĝuste. Vi povas legi skribi kaj ekzekuti. Ĉar ĉiuj tri de tiuj karakteroj estas prezencoj. Do se ni iras antaŭen kaj diskuto pri tiu en terminoj de bitoj, la rwx povas ankaŭ esti prezentita kiel 700. Ĉar kiel vi povas vidi en ajna ia dosiero dosierujo permeson, ekzistas tri triadoj. En tiu kazo, nur la unua triad havas tie ion. Do en ĉi tiu kazo, la r estas 4, la w estas 2, kaj la x estas 1. Se vi aldonas tiujn kune, estas 7. Kaj do se vi konverti ĝin al duuma, ĝi estas 700. Ĉar 7 estas la unua triada. 0, estas nenio ĉeestanta en la dua triado. Kaj tiam ekzistas nenio ĉeestanta en la tria triada, do tio estas alia 0. Do en la sama senco, faskon de triadoj povas esti reprezentata nur per bitoj, ĝuste en duuma tiel. Do 700 signifas la precizan samon kiel rwx ------ en terminoj de permesoj. Ĉiu klara sur tio? Malvarmeta. Kaj tiel chmod 111 donus kio permesojn al la dosiero? Donu vi uloj paro sekundojn por konverti ĉi. Memoru, la unua triad estas por la uzanto. La dua triado estas por la grupo. Kaj la tria triado estas por ĉiuj. Kaj tiel chmod 111 donus kiu tipo de permesoj kaj al kiu? Prenu kelkajn sekundojn por pensi pri ĝi kaj reveni. Yeah. Publiko: Do ​​ĉiuj povas ekzekuti ĝin. ANDI PENG: Yup, precize. Publiko: Sed neniu povas legi aŭ skribi. ANDI PENG: Kaj bonvolu klarigi al ĉiuj kiel vi venis al tiu konkludo. Publiko: Nu, por la uzanto, la grupo, kaj la mondo, ĉio 1, kiu estas la kodo por ruleblan. ANDI PENG: Jes, ĝuste. Do 1, en tiu kazo, ĉiuj ni scias estas ke tiu estas la ruleblan kodo. Ĉar legado estas 4. Skribo estas 2. Kaj la ruleblan estas 1. Do estas tri triadoj estas 1, ke signifas ke al la mondo, al la uzanto, kaj al la grupo, ili ĉiuj estas plenumebla. Ĉiu bona kun tiu? BONE. Kaj tial la dua vojo ke ni povas reale skribi ĉi ankaŭ estas vi povus nur fari chmod alpago x. rimedon ĉiu aŭ ĉiuj. La alpago signifas doni permesojn al. Kaj tiam la x signifas plenumebla. Do ekzistas du komandojn estas fakte identa. Do se vi volas lanĉi tion en via fina stacio, vi faras chmod 111, nomo de via dosierujo aŭ via dosiero. Aŭ vi povas fari chmod alpago x, nomo de via dosierujo dosiero. Sama afero, nur pli facila maniero, eble, por iuj por reprezenti aŭ ŝanĝo dosierajn permesojn. Cxiu OK kun chmod antaŭ ni pluiru? Malvarmeta. Do nun ni iras al kapo en kelkaj diapozitivoj de tre abstraktaj konceptoj ke mi estas preskaux tuj brizo tra. Kaj ĝi estas tute bone se vi ne komprenas ĉion. Eĉ nun, mi ankoraŭ ne vere komprenis ĉion tute. Sed estas pli akiri la pinta nivelo kompreno de kiom kelkaj el tiuj aferoj funkcias. Do ni tuj paroli rapide pri TCP / IP, Kiu estas nur Transmission Control Protokolo oblikvo Interreto Protocol. Memoras de prelego, David, li instruos vin la ekzemplon kie li volus pasi la notoj en koverto supren al ŝati la supro de la prelego halo? Do en la jurstudo aŭditorio David pruvis esence kiom TCP / IP laboras en la senco ke ĉiuj ŝin estas estas rimedo de certigado ke datumoj estis transdonita trans servilo aŭ sur la interreto. Do en la ekzemplo de la koverto kaj la mesaĝo, la uzanto fine povis vidi ke, ho, mi bezonis ricevas kvar pakojn de informo. Sed mi efektive nur ricevis tri. Tio signifas mi devas manki unu. Kaj oni ne transdonis. Kaj tiel TCP / IP en la interreto, tra via komputilo kaj la servilo, faras la ĝusta sama afero. Ĉiuj faras estas specifi kadro en kiu perditan datumoj pakoj povas malaprobi kaj ricevis. Kiel sur la interreto kiam vi provas aliri dosierojn rete aŭ sendas dosierojn al via amiko aux rigardi retejo retumiloj, miloj kaj miloj de miliardoj kaj miliardoj de bajtoj informo transdoniĝas po milisegundo. Kaj estas vere, vere malklara. Kaj estas vere malfacile fakte scias kio estas sendita kaj kio ne estis sendita. Kaj tiel TCP / IP simple precizigas cohesive kadro en kiu via retejo krozilo kaj via servilo povas ia komuniki reciproke, ĵus certiĝu ke pakoj estas ĉiuj tie kaj nenio perdigxis kaj ĉiuj datumoj kiujn vi petis Efektive montri ĝuste. Ĉiu OK sur nura ke tre mallonga alta nivelo komprenas? Malvarmeta. Do tiam ni tuj movas en parolante pri HTTP, kiu estas nur Hipertextual Transfer Protocol. HTTP, ĉiu estas estas ajn iu ajn paĝo aŭ dosiero estas alirita sur via retejo, la servilo revenas HTTP statuson kodo en respondo al la peto certigante ke ĉu, ho, tiu peto trairis. Kaj ĉio estas montri ĝuste. Aŭ, ho, ne, 404. Io misokazis. Ho, mi ne povas montri. Ĉiuj estas estas ke cxio vi provas aliri, uzi kiel la uzanto provas aliri, sur la internet-- simple certigi ke vi devas aŭ sukcese Montrita ajn ĝi estis aŭ ne sukcese Montrita ajn estis. Kaj tial la HTTP statuso kodo nur provizas vin rimedo de povi scii ĉu aŭ ne estis trafita aŭ ne. Do ekzemple, ekzemplo peto. Vi povas vidi tie estas kutime tipe kvar linioj. Ni havas GET HTTP 1.1, kiu estas nur la metodo peto URL, la protokolo versio, la kampo nomo, kaj la kampo valoro. Do ne necesas komplete enmemorigi ion tie. Nur ia familiarize mem kun kiel tiuj aspektas. En tiu ekzemplo, la metodo peto URL estas simple ajn peton vi sendas la servilo. Kiel, hej, servilo, mi vere volas aliro yadda, yadda, yadda, HTTP paĝo. La protokolo versio estas ĝuste kio ajn versio via gastiganto aŭ viaj servilo uzas por aliri informojn. La kampo nomo estas la retejo aŭ la URL kiu vi provas aliri, tiukaze www.apple.com. Kaj la kampo valoro estas nur tipe nomas, valoro. Kaj ĝi povas esti ajna speco de kombinaĵo de literoj aŭ numeroj aŭ kio ajn. Do tipa peto, do kion via komputilo reale sendas al la servilo, kiu diras, hey, Vi scias kion mi bezonas tiun montrata, ke tiaspeca peto ke ili efektive ricevos. Ekzemplo respondo de kio la servilo sendus reen al vi estus preskaux la samo, krom kun statuso kodon ĉe la supro. Do 200, 2 0 0 estas ĉiam la statuso kodo por OK. Kiel, okej, tiu peto trairis. Vi povis konsenti ĉiun korekte. Vivo estas bona. Vivo estas fajna. Ĉio estas tute bona. Kaj tiel tio nur klarigas vian retumilon kaj via servilo, hej, ĉio estas bona. Mi akiris ĉiujn informojn mi bezonas. Malvarmeta. Sed la problemo estas kelkfoje problemoj supreniru kiam vi have-- daŭri Mi pensas Mi parolis pri duobligitaj. Vi havas malpli bonajn respondojn. Do ekzemple, 404 estas la Paĝo ne trovita. Vi kelkfoje havas Malpermesita aliro. Vi havas diversaj aliaj statuson kodoj ke mi estas certe vin havas ĉiujn vidita kiam vi estas provas fari esploradon sur la interreto. Kaj via retumilo donas la, ne, ne povas aliri. Kaj vi estas kiel, nu, sensencaĵo. Do nur preskaux, ekzistas kelkaj belaj komuna statuso kodojn. Eble konatiĝi kun kiu ones tiuj estas. La plej amuza kiu Mi kredas ke mi iam aŭdis of-- se vi hazarde serĉi ĉiujn el ili rete, ial ekzistas fakte vera statuso kodo nomita 418 Mi estas tekruĉo. Mi googled kie la origino de tiu estis. Kaj ŝajne unu April Fools ' Tago paro jardekoj, iu pensis ke estus ridiga krei novan statuson kodo nomita 418 Mi estas tekruĉo. Laŭleĝe, la nomo de tiu kodo nomiĝas Mi tekruĉo. Mi forgesas kio paĝon vi devas iri al reale fari ĉi montriĝo. Sed ŝajne, vi povas efektive akiri statuson kodon de mi tekruĉo iel tra faranta ion. Do ekzistas centoj kaj centoj de statuso kodojn. Iuj el ili fari pli sencon ol aliaj. Sed preskaux nur familiarize mem kun la plej komunaj. La petita ento korpo estas malalta kaj dika, ŝajne. Do iam estas pli timiga eraroj ol mi tekruĉo. Sed tiu estas kiu mi supozas vi ia esperas trafi. Sed mi ne kredas ke vi faros. Ĉiu bona sur nura statuso kodoj, petoj, procesoj, farado certa informo estas transdonita konvene? Do nun ni tuj transiro en el amuza parto de sekcio hodiaŭ, kie ni parolos iomete pri HTML. HTML, ĉiuj estas Hipertextual Markup Language. Estas nur la norman lingvon vi uzas por krei la TTT paĝoj en la interreto. Do ajna retpaĝo, kio estas via preferataj retpaĝo? Kio estas via plej ŝatata retpaĝo? Spektantaro: [inaudible]. ANDI PENG: Pardonu? Publiko: Tumblr. ANDI PENG: Tumblr. Do Tumblr estas skribita en HTML. Kaj tiel ni vere trairi kaj amuziĝu kun iuj de tiuj aĵoj poste. Preskaux cxion vi bezonas lerni, scii, skribi HTML vi povas verŝajne nur Google sur la interreto. HTML, ĝi ne estas programo kiel C kie vi povas krei variablojn kaj fari malvarmeta aferojn per ĝi. Estas pli de ĵus, oh, tio estas kiel mi volas aferoj aperi sur mia retejo. Kaj mi simple tuj meti ĝin en. Kaj tuj stiligi ĝin. Do HTML, iasence, estas nur kiel a formatado aŭ ŝablono lingvo. Ĝi estas multe pli facila. Ĝi estas multe pli facila por lerni, multe pli facile skribi en ol via tipa programado lingvo, tre facila, tre uzanto alirebla kaj amika. Do ni efektive tuj ludi ĉirkaŭ, skribi nian propran paĝojn hodiaŭ. Sed antaŭ ol ni komencu, mi nur volas iri super iu mallonga bonaj praktikoj. Ĉar HTML estas tia facila lingvo kaj ĉar eĉ se vi faros kelkajn aferojn erara, ĝi kelkfoje povas ne rimarki, ni volas certigi ke ni estas vere aliĝi al niaj bonaj praktikoj por certiĝi, ke aferoj povus esti iranta ĉirkaŭ sed ne ĉiam tuj ne ĝuste iros certigi ke ili estas minimumigita. Do preskaux, certiĝu via fermante ĉiujn viajn etikedoj kiam vi skribas en HTML. Se vi malferm korpo, certigu ke vi estas fermante ŝin kun korpo ie. Vi volas certigi ke via retpaĝo validigas uzante kio nomiĝas la W3 Kontrolilo. Vi povas simple Google kiu rete, kaj tie estas ligo al ĝi. Kaj tiam vi volas apartaj HTML, kiu estas via markaĵojn de via stilo, kiu estas la CSS lingvo kiu Davido pruvis ke ni ankaŭ ludos iom kun prelego. Malvarmeta. Do aùton vi volas kuri HTML sur la CS50 aparaton, ni tuj kuri programo nomata Apache, kiuj ĉiuj estas nur enkonstruita retservilo ke ĉiuj en CS50 havas aliron al. Ni nomas ĝin apache50 nur ĉar ni ŝatas nomi ĉiun 50 en CS50. Do la vojo ke vi komencas la CS50 retejo servilo estas tajpante sur via komando linio apache50 komenci dot. Kaj se vi volas fini ĝin en ajna tempo, vi apache50 fini neniu punkto. Kaj vi nur batis Enter. Kaj devus esti estrante ĉi tien baldaŭ. Jes. Do mi simple tuj rapide transiru ekzemplo de vere mallonga retpaĝo. Kaj ni tuj elspezi kiel 10, 15 minutoj ludi ĉirkaŭ skribi nian propran retpaĝon. BONE. Do jen en la IDE-- povas ĉiuj vidi ke? Ne vere. Nu, mi zomi. Mi ĵus ricevis tiun mallongan ŝablonon tie kun nenio vere en ĝi. Ni nur tuj rapide skribi HTML programo en kiu ni ĵus saluti la mondo. Do samon kiel en C, nun ni estas nur tuj faros ĝin en HTML. Ĉu iu volas fakte nur provu doni al mi la unua afero vi devus meti en dokumento HTML? Yeah. Publiko: La krampoj, la [inaudible]. ANDI PENG: Yep. Do iu kiu estas tre unika al HTML kiu ni tipe tradicie ne renkontas en aliaj komando linio nivelo programlingvoj estas ke ni efektive al specifi la tipon de dosiero ke ĉi tiu tuj estos ĉe la supro de nia kodo. Do en ĉi instance-- mi pensas tio estas la ĝusta komando, dekstra? Jes. Ĉe la supro, vi nur volas inkludi bang DOCTYPE html en krampoj nur diri via komputilo, hej, elsercxu. Kaj HTML dokumento venas. Kaj tiam kiel ni volas dividi nian dosieron? Se ni nur volas diri saluton, havi retpaĝo kiu diras saluton al la mondo, Kiel ni iras pri konstruado ĉi? Fakte, ni turnas al Google. Kaj ni povas reale fari tion. Jes. Tie ni marŝos. Do HTML. Kiel vi povas vidi, mia retumilo estas reale aŭtomate stiligante tion por mi. Samon kiel en C, kiam vi krei malferman krispa krampoj, Via retumilo aŭtomate aldonas en proksiman buklaj krampoj. Bonŝance, nia IDE amoj Faru por ni ankaŭ. Do nun ni povas ia tajpas la komencon de etikedo, kaj ĝi tuj iam diras nin memoru tajpi la fino de la etikedo. Mi pensas ĉi devas esti majuskle. Kaj poste ni volas aldoni, ĉiam, kapo en kiu estas la titolo. Ni nur volas eble nomu tiun saluton, kaj tiam korpo. Kaj tie vi iru. Tio estas fakte nia HTML dokumento. Do la vojo ke iu HTML dokumento ĉiam styled in-- samon kun int main malplenon. Vi ĉiam deziras havi HTML malferma kaj proksima etikedo ĉe la supro kaj malsupro de via kodo. Vi volas havi kapon ene de kiu enhavas la titolon, simple ajn tuj montros la langeto de via retejo paĝo, kaj tiam korpo interne de kiu efektive montri la enhavon de kion vi volas fari. Do se vi vere volis kuri tiu, mi tuj zoom reen eksteren. Vi povas vere komenci apache50 komenci dot. Malvarmeta. Kaj do, kiel vi povas vidi, nun tiu ligilo pusxis supren. Ĝi diras via paĝaro estas nun disponebla en iu ligilon sube. Do ĉiuj niaj IDE havas done-- Ne Ide, sorry-- yeah, nia IDE faris estas krei retejo ligilo sur kiu ĉiuj niaj retpaĝoj povas esti alirita sur la servilo. Do ni rigardu ĉi tie. Ni alklaku ĉi, kuragxas hello.html. Kaj vi vidos tre simplan retpaĝo por saluton mondo. BONE. Ni efektive tuj ĝuste havas everyone-- yeah, kio estas supre? Publiko: Mi havas bazajn demando. ANDI PENG: Yup. Publiko: Kiel vi ŝpari vian dosieron kiel HTML? ANDI PENG: Yeah. Do se mi estus krei novan dosieron, se mi fari novan dosieron, Untittle, se mi faras, section.html, eksplodo, nur tion mi devas fari. Spektantaro: [inaudible]? ANDI PENG: No. Spektantaro: [inaudible]. ANDI PENG: No. Spektantaro: [inaudible]. ANDI PENG: Yeah. Pli malpli, la etendo sur la dosiero kiu estas en via IDE, kiu rakontas la komputilo, ke rakontas la retumilo, hej, elsercxu. Ĉi tuj estos kodo skribitajn en tiu lingvo. Do ekzemple, en Microsoft Vorto, kio faras tuta Vorto dokumentoj fini kun, kio etendo? .doc aŭ .DOCX, dekstra? Ĉiuj kiuj faras estas specifas por via mastruma sistemo, hey, vi hvas Vorto dokumenton venanta supre. Malfermu ĝin kun Vorto. Sama afero kun PDFs. Ĝi scias, ho, mi bezonas malfermiĝi tiun dosieron kun Adobe Reader aŭ Adobe Acrobat. Kaj tiel etendoj operacii la sama maniero kiel en via komputilo. Se vi specifas vian kodon paĝon esti nomata HTML, tiam sciu, ho, vi hvas HTML kodo. Mi tuj trakti ĝin kiel html-kodo. Do estas súper inteligentaj en tiu senco. Do ĉiuj, ni prenu kiel 10 minutoj kaj nur krei nian propran retejoj. Ni aldonu en la belaĵoj. Bonvolu diri kion vi volas. Mi nur volas certigi ke ĉies serviloj kuras korekte antaŭ ni liberigos vin en la pset. Ĉar se via serviloj ne kuras por la pset, ke estos vere, vere malbona. Mi simple tuj flosi ĉirkaŭ kaj vidi kion ĉies laboris. Kiel vi fartas? Publiko: Mi ĵus ŝaltis mian komputilon. ANDI PENG: Tio estas BONE. Spektantaro: [inaudible]. ANDI PENG: Nur via IDE. Yeah. Spektantaro: [inaudible]. ANDI PENG: Estas bone. Spektantaro: [inaudible]. ANDI PENG: tute bone. Ĉu ĉiuj aliranta ilia retservilo OK? Ĉu apache50 kurante OK? Mi pensas en iu el la aliaj sekcioj, ni havis temojn kun homoj ne povante aliri la servilon. Yeah. Do vi nur kuri apache50 spaco komenci spaco periodo. Spektantaro: [inaudible]. ANDI PENG: Yup. Bona? Spektantaro: [inaudible]. ANDI PENG: Oh, OK. Do vi laŭsupoze havas spacon. Do apache50-- Publiko: mi faris. ANDI PENG: --start spaco. Publiko: Ho, spaco punkto. ANDI PENG: Yup, spaco punkto. Tie vi iros. Tial se vi havas HTML-paĝo kreita, tiam vi povas simple iru rekte al la ligilo kiu ĝi precizigas. Kaj vi devus povi aliri ĝin. Ĉiu povis konsenti liajn retpaĝojn OK? Spektantaro: [inaudible]. ANDI PENG: Ho, tio estas bone. Spektantaro: [inaudible]. ANDI PENG: Yeah. Mi kredas ke vi efektive povas malfermi ĝin ene de via retumilo, krozilo kaj ne nur vian IDE retumilo. Jes, mi pensas, se vi kopias kaj almeti ĝin. Publiko: Kaj poste Kiel ni elŝalti ĝin? [Inaudible] ANDI PENG: Jes, vi faras apache50 halti sen periodo. Jes. Spektantaro: [inaudible]. ANDI PENG: Sen periodo. Yeah. Tie ni marŝos. Jes. Ni kreas nian propran retpaĝon. Publiko: Ho, malvarmeta. ANDI PENG: Yeah. Publiko: Mi havas demandon. Do apache 50-- ANDI PENG: 50, yeah. Spektantaro: [inaudible]. ANDI PENG: Kio? Tio estas stranga. Vidu, tio estis speco de la temo kiu okazis antaŭe. BONE. Vidu min post sekcio. Ĉar ni estas havanta iun demandoj kun la servilo. Kaj vi volas fari certa ke via servilo estas kurante antaŭ komenci la pset. Ĉar vi tuj bezonas ĝin. Yeah. Ĉu estas iu alia kiu ne estis kapablaj akiri ilian servilo komenci? Por tiuj de vi kiu deziras aldoni aldona stilo al viaj retpaĝoj, ni povas fakte faras kion Faris David en prelego tiel, kiu estas krei plian stilo folio, kiu estas skalara CSS, akvofalo Stilo Sheet kaj efektive nur aldoni gxin en. Do ekzemple, mi ĵus kreis preskaux preskaŭ la ĝusta sama Faris David en prelego. Vi povas sufiĉe tre nur faru korpo. Vi havas kion nomas etikedoj en kiu vi povas apliki al ide ajn sekcio vi volas en via fakta al HTML-paĝo. Do la korpo de la paĝo, vi povas fari tekston centrigi. Kaj poste mi krea etikedo nomita pinto ene pri kiuj mi volas tion al okazi, atribui pli grandan rastrumero grandeco por la tiparo. Mi volas la tiparo pezo kuragxi. Kaj mi volas la koloron al esti blua, nur arbitra valoroj kiu Mi decidis elekti. Mi povas krei alian etikedon nomitan meza. Tiparo, faru ĝin iom malgranda. Kaj tiam mi povas krei alian etikedo nomita fundo kie mi volas la tiparon esti eĉ pli malgranda ankoraŭ. Kaj tiel bele multe tio estas nur ekzemplo de fontkodo aŭ fonto stilo littukojn ke ĝi estas tre facile simple Google. Se vi diras, ho, mi volas mian tiparon esti kursivigitaj kaj malhelverdaj, vi povas verŝajne Google, kaj tiam mi diros al vi la taŭga etikedoj aŭ IDs krei. Kaj tial la maniero kiun vi farus reale ia havas tiun HTML-dokumenton aŭ uzi ĝin estas ĉiuj vi devas fari ĉi tie estas en la kapo aldoni ligilon al la stilo folio. Do vi povas simple ligi href egaluloj ajn la nomo de via stilo folio estas. Kaj tiam la rilato estas stilo folio. Do en iu dokumento HTML, kiel longa kiel vi inkluzivas ĉi punkto CSS folion, Vi devus esti kapabla aliri kaj havas la propraĵoj tie. Do ekzemple, tie Mi havas precize krei alian ekzemplon retpaĝo. Tiu estas bonvena CS50 sekcio Mardon de 2:00 al 3:30 kun mi. Kaj poste mi aldonis bela bildo kiu ni potenciale povus vidi. Do se vi rigardu tie, se vi iras al style.html, ni kreis retpaĝon kun katidoj. Ĉar katido estas timinda. Do aldonado bildo estas nur IMG SRC ligilon. Pli malpli, se ekzistas omnaspeca trajto vi volas aldoni al via website-- do ni diru, vi volas aldoni menuo aŭ serĉo trinkejo aŭ kiel an image-- simple Google kiel fari tion. Kaj vi nur Plop en tiu formato. Kaj vi povas simple bela tre nur aldoni gxin en. Estas vere, vere facila. Ni kreas nian propran retpaĝoj nun. Se vi volas-- Spektantaro: [inaudible] ANDI PENG: Pardonu? Spektantaro: [inaudible]. ANDI PENG: Oh, la div estas simple malkonsento diras al mi ke, ho, mi havas certa sekcio nomata mezo, kie mi aplikanta miaj CSS etikedon, kaj tiam mia alia divido kun la fundo. Jen ĉio ĝi estas diranta vin. Ĉar ĝi estas agrable teni aferojn neta en ordo, tiel la programo scipovas ĝuste kuri. Kaj pensas mi povas kopii almeti ĉi en mia aktuala retumila tiel. Ĝi devus esti fajnaj. Yeah. Yay. Do se ĉiuj volas nur provu kreas retpaĝon, ni prenos alian du al tri minutoj. Mi nur volas certigi ĉies serviloj kuras kaj ĉiuj havas ideon de kiel fari tion. Se vi infanoj volas forprenu vian komputiloj. Ankoraŭ ne funkcias? Publiko: Mi estas nur [inaudible]. ANDI PENG: Eble provi ĝisdatigi 50 ankaŭ. Yeah. Spektantaro: [inaudible]. ANDI PENG: Yeah. Do la vojo ke vi komencas novan retservilo sur la IDE estas nur fari apache50 spaco komenco spaco punkto. Mi nur volis certigi ĉies serviloj kuras OK. Publiko: Tie, sur la fina stacio? ANDI PENG: Yeah. Spektantaro: [inaudible]. ANDI PENG: Apache. Efektive, mi pensas ke vi estas kurante iu jam. Jes, vi estas vere kurante alia servilo. Jes, vi estas bona. Dum tiu laboras, vi estas okej. Publiko: OK. ANDI PENG: Ekzistas du manieroj kuri serviloj. Do tiel longe kiel unu el la vojoj laboras, estas tute certe. Ni prenos alian minuto nur speco de fini supren la fini tuŝas sendistinge retpaĝo vi uloj volis fari. Estas ĉiuj laboranta sur la vojo? Ĉies serviloj kurante krom por la via? Ni kalkuli ke ekstere. Kaj HTML La sufiĉe simpla. Do mi pensas ke ni estas tute bona. Yeah. Mi revenos. Spektantaro: [inaudible]. ANDI PENG: OK. Publiko: Do ​​estas nur komenciĝis ŝargi supren. ANDI PENG No worries. Do HTML, ekzistas fontkodon ke estos rete post sekcio. Ankaŭ, Davido havas tuto faskon linio tiel. Nur speco de rigardo super ĝin vidi kiel HTML paĝoj estas skribitaj. Tio estas sufiĉe facila. Ion vi ne scias, vi bela tre nur Google kaj vi bone. Mi nur volas certigi ke via serviloj kuras. Publiko: Cxu fari tion ofte? ANDI PENG: Ĝi neniam okazis al mi. Mi ne scias ĝin eĉ povus hiberna. Spektantaro: [inaudible]. ANDI PENG: Mi pensas everyone-- mino neniam invernó antaŭe. Kaj mi ne scias kial. Ĝi estas stranga. Spektantaro: [inaudible]. ANDI PENG: Ĉu via hibernando? Spektantaro: [inaudible]. ANDI PENG: Yeah. Publiko: Estas bone. Do iam ĝi estas malferma. ANDI PENG: OK. Ni traktas kun iu servilo temoj post sekcio. Vi devus esti bone. Kvankam, vi volas certigi vin akiri ilin solvitaj antaŭ ol vi foriros. Ĉar se via servilo ne kurante, tiam vi estas ne tuj povos fari la pset, kiel ajna parto de la pset. Do vi volas certigi ke tio laboras. Malvarmeta. Bone. Diru adiaŭ katidoj. Mi pasigis longan tempon serĉante ke katido bildon por surmeti. Do, anyways. Spektantaro: [inaudible]. ANDI PENG: Pardonu? Spektantaro: [inaudible]. ANDI PENG: Mi kredas ke estas en la retejo. Kiel la specifon? Spektantaro: [inaudible]. Mi pensas la spec estas nur rete en semajno sep. Mi pensas ĝi nomiĝas pset6, eĉ kvankam ni estas sur semajno sep, kiuj estas iom komputado. Publiko: Sed mi volas diri, se vi volas rigardi at-- se vi volas elsxiros nia versio de la ttt-ejo de nia Sever? Do kiel server.c estas la pset, dekstra? Se vi volas rigardi tion, kiel kiel kontrolas? ANDI PENG: Ho, tiom reale la pset, ĉiuj ni faras tie estas implementing-- tie, Mi iros super ĉi mallonge. Do por ĉiuj kiuj estas ĵus akirita al sekcio, vi uloj estas en sorto. Ekzistas tre malgranda materialo efektive kovras hodiaŭ. Mi simple tuj pasos la proksimaj 20 minutoj trapasado pset helpon. Ĉar estas kelkaj utilaj funkcioj kiuj helpos via vivo. Kaj espereble, ni estos ekster de tie en kiel 20 minutoj. BONE. Do pset7 malĝustas. Eĉ kvankam ni estas sur semajno sep, fakte pset6. Mi ŝanĝos tion. Ĉiuj ni faras en pset6 kreas retservilo. Tio sonas súper timiga. Kaj precipe por tiuj de vi kiu havas jam rigardis la dissendo kodo, ekzistas multe da kodo, multan kodon. Sed estas tute okej. Pro la nitty gritty parto de reale kreanta la servilo estas farita de ni. Ĉiuj vi vere demandis fari en ĉi pset Estas simple fari iun string manipulado en dosiero / S. Ĝi estas fakte kiel sufiĉe simpla. Do kiam vi unue elŝutu that-- kiuj tie efektive jam elŝutis la pset kaj prenita rigardon? Bone. Yeah. Ekzistas kiel 500 linioj de kodo ke vi tuj estos kiel, Kio okazas? Kaj tio estas tute bone. Certiĝu vi spekti la promeno-throughs. Ĉar Davido kaj-- Mi ne scias. Mi ne kredas ke estas Zamyla a, ĉi tiu. Sed mi pensas kelkaj aliaj marŝi-throughs estas sufiĉe helpema en terminoj de nur sciigi iun kio okazas ene de via kodo. Kaj ĝi estas tute okej. Ĉar la kvar funkcioj ke vi estas demandis implementar havas reale nulo fari kun la fakta servilo. Ĉiuj ili devas fari estas simple sintaksanalizo malsamaj kordoj, trasercxante kordoj, por certiĝi aferoj faras kion ili supozis esti farante. Do al tiu efiko, estas kelkaj tre, tre utilaj funkcioj, speciale por arĉinstrumenta manipulado, ke ni ĉiuj transiru ke mi pensis ke mi devus esti tre utila por vi infanoj lerni antaŭ ol provi la pset. Kaj ili ĉiuj enhavis ene via string.h biblioteko. Ekzistas probable pli utila funkcioj mi ne inkluditaj ĉi tie, ĉar mi ĉu neniam uzos ilin aŭ eble mi nur ne sciis ke ili ekzistas. Bonvolu rigardo tra student.h. Ĉar ne tuj estos multe de funkcioj kiuj estas tre utilaj. Do la ses kiu mi uzas la plej en mia pset kiam mi estis faranta ĝin ĉi tiu pasinta semajno estis strtok, strchr, strrcher, strstr, strcasecmp kaj strcpy. Kaj tiel la lasta du povas ŝajni bela familiara al plej parto de vi. Str kazo kompari, ĉiuj faras estas kompari kordoj kontroli ilin por egaleco, Inkluzivanta kazo. Kaj strcpy nur kopioj unu ĉeno en buffer. Kaj tial tiuj du devus simili tre familiara al vi uloj ĉe tiu punkto. Ĉar ni uzis ilin multe, speciale por la lasta psets. Sed la unuaj kvar eble Vi ne vidis ĝis nun. Sed mi tuj ĵus trairu ilin. Ĉar ili tuj faros viajn vivojn vere, vere facila for-- ne facila, sed multe pli facile por tiu venonta pset. BONE. Do char * strtok, tiu estas la funkcio difino por tiu funkcio enhavis ene de la kordoj, h biblioteko. Se vi estas donita enigo de char * kordo, kiu estas nur ĉeno, aŭ konstanta char * deliminator, delim por mallonga, ĉiuj ĝi estas faranta rompas la pli grandaj ŝnuro en serion de kion ni nomas ĵetonoj apartigitaj per certa valoro. Do iusence, se mi eĉ disdonus vi section.7.php, tiu estas ĉeno. Ke estus se mi pasas en ĉi kiel mia str, mia char * str, se mia deliminator estis streketo ĉiuj ĉi farus Estas serĉo tra ŝnuro. Kaj la unuan fojon vidas unu streketo estus simple reveni al la montrilon al la lasta signo trovita en la kordo antaŭ tiu. Do ĝi irus tie. Kaj ĝi nur donu al mi 7.php. Kaj se mi estus nomi la funkcii pli tempo, donus al mi nur la .php. Kaj tial ĉiuj ĉi funkcio faras rompas malsupren la granda kordo al malpli kordoj depende sur kio vi estas serĉanta. Do ekzemple, en vian rigardon supren funkcio se vi volas rigardi kio certaj karakteroj venis pri aŭ se dots okazi aŭ etendoj okazi, tiu funkcio estus sufiĉe utila. Yeah. Neniu ĉagrenoj. Tio ĉiuj be-- yeah, kio estas supre? Publiko: Do ​​en la unua linio, se ni uzis tiun ekzemplon, kion ni enmeti en tio? ANDI PENG: Yeah. Vi simple nomas strtok kordo komo delim. Kaj ŝnuro egalas section.7.php. Kaj tiam vi estas delim povus esti egala al nur pentras. Publiko: OK. ANDI PENG: Yeah. Ĝuste tiel. Ĉiuj ĉi tiuj funkcioj estas sufiĉe simila kiam ni iros tra ili. Ili nur faras iomete malsamaj aferoj. Sed ili cxiuj iras al fari vian vivon tre pli facila. Dua funkcio, ĉi onia kiel ekstra, super, super grava, estas the-- teni supren. Oops. Strchr serĉoj por la unua occurrence-- reale, yeah. Strchr estas la funkcio kiu Mi sendube ĵus trapasis. Do ignori kion mi diris por la unua funkcio. Ĝi estas fakte nomita strchr. Do kio okazis ĉi tie estas se vi ricevis ĉenon en char c, ĝi nur donas vi kio ajn tio estis. Yeah. Do pensu pri ĝi kiel str, kiu estas ĉeno, kaj chr kiel char. Do ĉiuj vi provas fari estas serĉo cxar kie char estas ene de kordoj. Kaj tial ĝi serĉas la unuan aperon de la karaktero c en la kordo str. Spektantaro: [inaudible]. ANDI PENG: Yup. Kaj tiam se ĝi ne trovis ĝin, ĝi tuj revenos NULL. Do iu kiu tuj estos tre utila por vi uloj en faranta la pset se, diru, vi estis serĉanta etendo kiel .DOCX por Vorto dokumento aŭ .pdf cxar PDF dokumento, vi povas ia uzi ĝin por rigardi por kiaj estas poste ĉiufoje kiam vi vidas punkton, ĉu ne? Kaj tiel bele multe, se vi kuri ke per la funkcio, se ĝi revenas NULL, tiam vi scias ke ĝi ne trovis ĝin streketo kion signifas tiu klare ne estas valida dosiersufikso. Aŭ se ĝi revenas io, tiam vi scias ĝi tuj revenas ajn la fakte post la pligrandigo. Do tiuj el vi, kiuj havis komenciĝis trarigardante lookup kaj analizi, tiu funkcia tuj estos super utila. Do ni efektive tuj pruvi uzanta ĉi. Kial ne vi uloj provu skribi funkcio bool frazo char * s, ke nur revenas vera se S estas frazo kaj falsaj alie. Do aludo, vi tuj probable uzi strchr. Aŭ vi simple serĉu en la ŝnuro por certa karaktero. Kaj tiel en frazo, kio disigas frazo de ne-kondamno, kio specifa karaktero? Spektantaro: Spaco. ANDI PENG: spaca, dekstra? Kaj do kion ni probable tuj volas fari ene de tiu funkcio ĉi tie? Spektantaro: [inaudible]. ANDI PENG: Ni tuj volas strchr ŝnuro por la apero de la spaco. Ĉar se ĝi revenas ion, do ni scias, ke tiu devas esti frazo. Tio signifas ke ni devas havas spacon en tiu ĉeno. Se ne estas spaco, tiam ni scios ke, hey, supozas ke ne ĉenon. Ĝi estas probable nur vere longa vorto. Do mi donos al vi infanoj paro minutojn skribi ĉi tiu funkcio. Yeah. Spektantaro: Ĉu vi ricevis tiun ĉenon de la uzanto? ANDI PENG: Yeah. Do tio estas nur funkcio. Do imagu interne via ĉefa funkcio vi jam have-- ni iru tien. BONE. Do mi skribis tiun programon kie Mi havas mian ĉefan funkcion kie Mi ĵus kreis du kordoj. La unua estas Saluton, mia nomo estas Andi-- klare, frazo. Mia dua estas nur Andi, klare ne kondamni. Kaj tial Mi kuras ambaŭ de tiuj kordoj tra tiu funkcio. Mi volas vin infanoj skribi malvarma frazo. Kaj mi stoki tiuj valoroj, kaj tiam simple videbligi ilin. Do pensas ke la uzanto estas preterpasonta en cxeno. Kaj tiam vi tuj esence eltrovi se ĝi estas frazo aŭ ne kaj revenas vera aŭ malvera laŭe. Se vi infanoj volas doni dikfingrojn supren aŭ kapojn supren, kapo kapjeso, Estas iu estas preta por komenci tiu, tio estus bona. Eble kiel 30 sekundoj? Bone. Ni vidu se vi povas provi skribas tiun funkcion. Do pseŭdo coding-- mi simple tuj ia trairu ĉi ĝuste nun. Pli malpli, ni konas la funkcio kiun ni devas uzi. Ni tuj nomas tiun funkcion sur nia kordoj kaj serĉo de spaco. Se ĝi revenas ion, do ni devas scias ke, evidente, tiu estas frazo. Ĉar estas spacoj. Tiam ni tuj revenos vera. Alie, ni tuj revenos falsaj. Ĉu iu volas doni mi la unuan linion de kodo ke ni efektive tuj uzi skribi ĉi? Ĝi estas fakte la plej malfacila linio de kodo tiel. Yeah. Publiko: Se strtok s-- ANDI PENG: Nur strchr. Spektantaro: [intermetante VOĈOJ] spaco estas ne egala al nula. ANDI PENG: Cool. Ekzakte pravas. Ĉiuj komprenas ke unua linio? Ni tuj nomas strstr, kiu estas funkcio kiu serĉas la kordo s por la char de spaco. Kaj se li trovas ĝin, ĝi tuj reveni sagon al kie tiu estas. Se ĝi ne trovas ĝin, ĝi tuj revenas NULL. Do se ĝi revenas io ajn krom NULL, tiam ni scias ke estas trovita spaco. Ĉu tio havas sencon? Malvarmeta. Bone. Do se ni scias ĝi trovis spaco, kion ni volas fari? Publiko: Reiru vera. ANDI PENG: Yup. Reveni vera. Kaj tiam, iu volas fini supren la funkcion por mi? Yeah. Alie, ĝuste tiel. Kaj provi kompili ĉi. Jes. Do kiel vi uloj povas vidi el la eliroj, memoru Booleans en C ĉiam esprimita en duuma. 1 estas vera. 0 estas malvera. Se ni devis kuri ĉi funkcio sur ŝnuro unu, kiu Estas Saluton, mia nomo Andi-- Klare, sentence-- la rezulto presita eksteren al 1 kiu estas vera. La dua unu, kiu estas nur unuvorte rezulto presita eksteren al 0, kiu estas falsa. Ĉiu klara ia pri kiel tiu funkcio estis skribita? Yeah. Spektantaro: Ĉu ni ankaŭ faros, anstataŭ ne egali ne, egalas egalas 0, tiel ke ĝi estas egala al? ANDI PENG: No. Ĉar strchr estas funkcio. Mi tuj reiri al tiu. Do kio estas la reveno tipo de nia strchr funkcio? Publiko: Oh, OK. Aŭ nula. ANDI PENG: Yeah. Estas char * kiu diras min ke kio ajn tiu funkcio estas tuj revenos, ĝi tuj esti puntero. Ĉu la puntero tuj estos indikante kie ĝi estas trovita tio, aŭ ĝi estas tuj revenos puntero al NULL. En ĉu cirkonstanco, ĝi tuj reveni puntero al io. Do se vi estus egaligi tiu egalas, egalaj, 0, vi tuj akiri kompilaĵo eraro. Ĉar ĝi estas tuj revenos montrilo. Kaj vi tuj provi kompari puntero al entjero. Kaj la komputilo estas ne tuj ŝatas tion. Jes, ĝuste. Malvarmeta. Ĉiu bona? Kaj due, ni tuj iru super funkcio nomita strstr. Neniu ĉagrenoj se tiuj funkcioj estas konfuzante vin. Ili konfuzas min. Kiel tia, vi infanoj povus esti vidita, ili ĉiuj sonas sufiĉe tre la sama. Nur kiam vi estas konfuzita, elsxiros string.h biblioteko. Kaj vi uloj povas ordigi tra kiu onia kiu. Do strstr, cxiuj faras estas serĉoj ŝnureto por tuta alia ŝnuro. Do kie strchr nur serĉoj por sola karaktero, strstr serĉoj por tuta ŝnuro. Do mi volis rigardi, mi ne faras scias, Saluton, mia nomo estas Andi. Kaj mia plej bona amiko nomiĝas ankaŭ Andi. Se mi volis serĉi en tiu frazo por la tuta vorto de Andi, mia kudrilo estintus kion vi serĉas. Kaj via garbejo estas kio ajn vi serĉas ĝin en. Do se vi serĉas specifa vorto ene de frazo, ke vorto estas iranta esti via nadlo. Kaj tiam la frazo mem tuj estos via fojnamaso. Kaj tiel nur sercxojn la unua okazo de la kordo kudrilo en la kordo fojnamaso. Ĝi redonas la montrilon al la unua apero. Krom, memori en ĉi tiu kazo, ĝi estas la unua apero de la tuta ŝnuro ke vi serĉas por, ne nur karaktero. Kaj tiel tio estas preskaŭ la samon kiel la funkcio ni ĵus faris, nur kun iom pli specifeco. Ĉar vi estas serĉanta pli ol nur unu signo. Kaj la uzado estas la ĝusta sama kiel kiu ni ĵus faris. Ĉiu OK kun tio? BONE. Lasta ni tuj iru super estas strrchr, kio ne konfuzita kun strstr aŭ kun strchr. strrchr havas ekstran r en tie. Estu zorgema kiam vi tajpas. Vi povas trovi vin mem inter ili ekstra r aŭ ne inkludante r, kaj tiam via funkcio Estas got ne tuj funkcios. Kaj vi tuj esti konfuzita. Esti zorgema ke vi literumas ĉiuj tiuj funkcioj pravas. Do strrchr estas la ĝusta samon kiel strchr krom ĝi serĉas ne la unua okazo de specifa karaktero, sed prefere la lasta okazo. Kaj tiel, en tiu senco, ĝi estas preskaŭ la ĝusta sama. Sed anstataŭ movanta plusendu en cxeno, vi tuj transloĝiĝos Malantaŭen en cxeno. Ĝusta sama afero, vi estas nur serĉanta en malsama ordo. Kaj tiel tio povus esti super, súper utila por via lookup funkcion, la unua funkcio sur via pset. Ni pretendi ke ni bezonis skribi funkcio de malplenon etendo en kiu ni pasi konstanta char * dosiernomo, nur ĉeno, dosiernomon, kiu portas en tiu nomo kaj presaĵoj el la etendo de tiu dosiero. Do ekzemple, se mi Iam en la ligilo de pset7.zip, ĝi tuj presi nur la pligrandigo, kio estas Zip. Kaj tiu laborus por omnaspeca etendo, .DOCX por Word aŭ .pdf cxar PDF file aŭ .html por HTML dosiero. Pli malpli, skribi funkcio kiu povas fari tion. Mi efektive tuj ŝaltu al la IDE. Ĝi ne load-- tie ni iras. Tiamaniere mi faris tie estas kreita char *, unua ŝnuro, nomata pset7.zip. Mi tuj zomi. Mi kreis dua ŝnuro nomata finalpaper.docx. Kaj skribu min funkcio kiu kiam vokis tuj ĝuste presi la dosiernomo etendoj. Eble preni paron minutoj pensi pri kiel vi tuj fari tion. Iomete pli defia ol la lasta, sed la uzado estas preskaŭ precize samaj. Yeah. Do skribi funkcion nomita etendo ke, se mi donos al vi la nomon de dosiero, se mi al vi pset7.zip-- mi volas ke vi presi nur la .zip. Se mi donas al vi plaĉas finalpaper.docx, nur presi la .DOCX, nur la etendo de ajn dosieron. Tiu fakte nur prenas du liniojn de kodo. Do provu vidi se vi povas eble fari gxin en tiu. Fakte, ĝi nur prenas unu linio de kodo. Sed du linioj estas probable pli normo. Kio funkcio estas ni probable tuj volas nomi? Publiko: strrchr. ANDI PENG: strrchr, dekstre. Ĉar ni serĉas de dekstre maldekstren. Mi ne donis vin infanoj ekzemplo kiel tiu, sed se mi donis al vi ekzemplon kiel www.apple.com kaj mi nur volis la .com, ĝi estus ekzemplo de kie vi volas nomi la lasta petskribo de la periodo kaj ne la unua, ĉu ne? Se vi estus alvoko strchr, ĝi estus jam donis al vi la apple.com. Se vi nomas strrchr, ĝi donus al vi la .com. Kaj do atentu sur kiu ways-- en mia ekzemplo, vi povus probable povus havi nur skribis ĝin uzante strchr, ĉar ekzistas nur unu punkto. Sed en aliaj kazoj, ke ne povas esti la kazo. Kaj tiel ĉiam provas desegni vian kodo bone, tiel that-- yeah? Publiko: Do ​​en la Ekzemple vi ĵus diris, kiam vi strrchr ĝi farus donu vin .com aŭ simple veni? ANDI PENG: Ĝi donus vin la .com. Publiko: OK. ANDI PENG: Yeah. Ĝi notas al kie trovis ĝin. Yeah. 30 sekundoj eble? Yeah. Ĉiu bona aŭ eble iom pli da tempo? Show de manoj? Show de kapoj? Malvarmeta. Ĉiu volas doni al mi la unuan linio de kodo por tiu programo? Spektantaro: [inaudible]. ANDI PENG: Do unue, ni eble rompi ĉi malsupren. Do kio estas la reveno tipo de strrchr? Ni reiru. strrchr, kio estas la reveno tipo? Publiko: Char * ANDI PENG: Estas char *, ĉu ne? Kio signifas ke vi probable tuj voli krei alian char * al speco de vendejo whenever ĝi estas reveninte al, dekstra? Ĉar se vi nomas la funkcio strrchr, ĝi tuj donas vin montrilon al kien ĝi trovis ke lasta periodo, dekstra? Sed vi tuj volas stoki ke ie, ĉu ne? Kaj do kiel ni kodigi ĉi en nia programo? Spektantaro: Vi faros la char * [inaudible]. ANDI PENG: Yep. Spektantaro: [inaudible]. ANDI PENG: strrchr. Yeah. Ho, missed r tie. Publiko: Dosiero nomo [inaudible]. Kio estas tio? Ho, estas nur s. ANDI PENG: Ho, ĝi estas nur s. Yup, pardonon. Mia malbona. Ekzemploj ne egalis. Publiko: Kaj poste pentras. ANDI PENG: Yup. Estu zorgema kiam vi infanoj are-- tie, lasu min zomi. Tie ni marŝos. Estu zorgema kiam vi infanoj tajpas, speciale kiam vi faras nur char. Estas vere facile akcidente ĵus do citiloj anstataŭ sola. Tio ne funkcios. Via tradukilo tuj plendi. Kaj via funkcio estas nur ne tuj kuros. Kaj do atentu kiam vi faras aferoj kun signoj ke ĝi estas ununura citaĵoj. Kaj same faras tiu linio de kodo sencon ĉiuj? Ni kreas char * puntero. Ĉar strrchr revenoj iom da tipo montrilo. Kaj do ni tuj voku strchr sur s, kiu estas la kordo, la dosiero nomo, ke ni pasante en. Kaj ni serĉas la lasta Ekzemple de periodo, kiu estas nur la solan citaĵo pentras sola citaĵo. Yeah. Spektantaro: Kiam ni uzas duoblan citaĵoj kaj kiam ni uzas solan citaĵoj? ANDI PENG: Yeah. Do citiloj estas ĉiam uzata kiam vi havas ĉenon de pli ol nur unu. Do se vi faras strstr, kiu estas kiu vi serĉu kordo por arĉinstrumenta, vi pasus ĝin en citiloj. Sed iam ĝi estas nur sola karaktero, vi deziras fari simpla citaĵoj. Estas bona afero teni en menso. Do nun ni havas niajn montrilo, kion ni faru per ĝi? Mi demandas vin guys presi ĝin, ĉu ne? Do [inaudible], vi volas donu al mi la linion de kodo? Publiko: printf-- ANDI PENG: Yeah. Publiko: --you bezonas lokon posedanto. ANDI PENG: Yup. Publiko: Presi la loko posedanto. Mi ne scias kio la loko posedanto estas sed punkto al ĝi. BONE. Ni salti ke nuntempe tiam. Publiko: Kaj poste comma-- ANDI PENG: Pointer, dekstra? Publiko: Pointer, Yup. ANDI PENG: Do ia truko demando, devas vidi kun punteros kaj kordoj ke ni ia parolis pri jam. Kia loko posedanto faros ni bezonas por montrilo por char *? Spektantaro: [inaudible]. ANDI PENG: Yeah. Ĝi estas pli facila ol vi uloj pensas ĝin estas. Publiko: String? ANDI PENG: Estas nur string, precize. Ĉar rememoru kordoj ne vere ekzistas. A char * estas la ĝusta samon kiel linio. Kaj do vere tiu s estas kio devus uziĝis ĉiuj kune. BONE. Ni vidu se ni povas provi kuri ĉi. Ni faru fabrikaĵ etendo. Malvarmeta. Vi uloj vidi kiel min pasis en la psset7.zip kaj la finalpaper.docx, kaj ĝi simple presas el la Zip kaj la .DOCX? Sencon? OK Do mi pensas en via rigardo supren funkcio en via pset vi estas tuj demandos se la kordo havas certan finaĵon, vi devas doni certan eraro kodo. Kaj tiel tio estos bela terura. Ĉar se vi povas kalkuli el kio la pligrandigo estas, vi povas poste kompari ke etendo por vidi se ĝi egalas supre kun certa etendo. Kaj tiam vi povas reveni erarmesagxon, dekstra? Yeah. Publiko: do ni ne devas aldoni 1 aŭ ion? La montrilo iros the-- ANDI PENG: Nope. Publiko: --point post tio. ANDI PENG: Yeah. Notas ĝuste al kie la okazaĵo estis. Do por ekzemplo tie, ni estas sercxinte la periodo. Do ĝi estas tuj revenos montrilo por la periodo. Kaj tiam tuj presi eksteren ekde la periodo. Do vi ne bezonas aldoni 1. Kvankam, ĝi estas tute bone al, se vi iam dubas, al nur speco de provi ĝin vi mem. Konstruu specimenon programo. Testu ĝin vi mem kaj vidi kie ĝi estas presanta. Tio ankaŭ ne estas malbona maniero fari ĝin. Malvarmeta. Kaj tio estas sufiĉe tre ĉiuj Mi havis por vi infanoj hodiaŭ. Ni faris multan pset havajxoj hodiaŭ. Do kiam en dubo, kiel Mi diris: ĉiam rigardi supren la string.h biblioteko por ĉi pset. Tie tuj estos multa funkcio tie kiuj povas esti utilaj. Iuj povas esti utila. Mi ne vere scias. Vadi, ekzistas tuta aro da ili. strstr, strchr, strrchr estas super, super helpema, tiel kiel la strcpys kaj strcasecmps ke ni jam uzata. Estas nur multajn rompado ĉirkaŭe kun kordoj, determinanta se ili estas egalaj, atingi aĵojn el kordoj, kaj povante malfermi dosierojn ĝuste. Estas multe de dosiero / S. pset estas vere ne tiel malbona. Vi tuj prenos rigardas ĝin, elŝutu ĝin, kaj vidi tutan faskon de kodo. Neniu ĉagrenoj, la kodo vi fakte skribi ne malbone ĉe ĉiuj. Se iu havas problemojn kun ilia servilo, venu vidi min post sekcio. Pardonpetas denove pro ne alportante dolĉaĵoj por Halloween. Mi ne scias kion mi misas. Sed ni havos duobla la bombono venontfoje. Kaj bona sorto en via pset tiu semajno. Jes.