ANDI PENG: Mi smo skoraj skozi vse psets. Dejstvo je, da smo z večino najtežjih psets. Torej smo dejansko samo dogaja, da vrste vetrič skozi naslednjih nekaj tednih. Bomo začeli govoriti o naših končni projekti, dogodki, ki prihajajo gor V naslednjih nekaj tednih. In življenje bo prepir. Torej, ne preveč danes. Upajmo, da bo dejansko vetrič z dnevnega reda za danes, in potem od tu z nekaj časa za rezervne. Tudi jaz želim, da se opravičujem za pomanjkanje sladkarije danes. Ne vem, zakaj. Toda v tednu, ki vodijo do Halloween, jaz bi pozabil sladkarije. Tako da sem pravzaprav le velika razočaranje za vas prav zdaj. Ker sem dobesedno spomnim sladkarije za vsak posamezen razred, vendar noč čarovnic. Ampak naslednji teden, bom prinesel podvojiti količino sladkarij da bi za to, vse za vas. To bo super. Torej imam nekaj objav v zvezi z neko načrtovanje. Imam nekaj vprašanj urnika. Potem se bomo, da se premaknete na govori o tem, kaj se imenuje chmod. Bomo govorili o hitro TCP / IP HTTP. In potem bomo kodo naše lastno spletno stran z uporabo HTML in CSS. In potem bom dejansko zapusti morda kot 20 minut za pogovor o pset6. Ker pset6 je dejansko veliko stvari, ki smo jih videli že prej, vendar sem želel osvežitev nekatere od teh pojmov kot tudi naučijo nekaj novih funkcij. Cool. Torej najprej dobrodošli nazaj od odmora. Upam, da si odmor bilo prijetno. Bi si naredil za počitek? OBČINSTVO: odšla v New York. ANDI PENG: Si šel v New York? Mislim pol našo šolo je šel v New York. V redu je. Sem preživel večino mojega odmora sedeč v postelji Netflixing. In to je bil pravi čas. Toda sedaj smo nazaj, nazaj v zasedanje, nazaj v zamahu stvari. Imamo pset ustrezno v petek opoldne. Mislim, da ste že pobral svoj kviz, ja? Torej kdorkoli drug, ki ima niso imeli svoje kvize, prosim pridi in dobite kvizi mi na koncu odseka. Ali tira me na kampusu. Bom imel z mano nekam. Naš končni projekt pre-predlog tudi. Torej za tiste med nami, ki še nikoli niso sprejeti ta razred prej, Capstone o CS50 je zelo veliko dosegla vrhunec v tem grand projekt, ki študentom predlagati. In pre-predlog, Samo splošna ideja o tem, kaj lahko ena želeli narediti za svoje Projekt, ki ideja je posledica ponedeljek, naslednji ponedeljek opoldne. Torej precej, David mislim, da bo govori več o tem v predavanju če je že ni. In tam je trdna stran na naši spletni strani pojasnjujejo vse zahteve projekta. Ampak v bistvu, pick katerokoli temo, ki ste so zainteresirani za ves svoj čas tukaj na CS, pa naj gre za igre na srečo ali oblikovanje ali video ali karkoli. In lahko res nekako zdaj se nekatere lekcije da smo se tu naučili v CS50-- hi, welcome-- za precej vodenje končni projekt po vaši izbiri. Vse to je posledica ponedeljek samo kratek blurb preko e-pošte do mene, hitro stavek, všeč, hej, Andi, Res me zanima oblikovanje igra, ki to naredi za iOS. Cool. Samo povej mi kratko začetnico Ideje za vaše končne projekte. In bomo govorili skozi ali ne, ki je pravzaprav dobro ali ne, če je to izvedljivo ideja ali ne. Ampak samo pre-predlog je posledica naslednji ponedeljek. pset6, naša lepa web--, da je narobe. Pset7? pset6? To je pset6, kajne? pset6, naš spletni strežnik, je posledica Petek opoldne s pozno dan. Uradne ure spet normalno od ponedeljek četrtek 8.00 do 11.00 ta teden. Mislim Commons za naslednja tri noči. Cool. Prej smo imeli v materialu, pa nikomur imate kakršnakoli vprašanja, šale, zgodbe? Kaj ste naredili za počitek padec? OBČINSTVO: Kaj naj storim? ANDI PENG: Že je že pred leti pravzaprav. Christabel odšla v New York. Ostal sem tukaj in Netflixed. OBČINSTVO: Oh, ja sem bil tu. ANDI PENG: Oh, v redu. OBČINSTVO: Jaz se ne spomnim kaj posebej. ANDI PENG: To je v redu. OBČINSTVO: Netflixing verjetno. ANDI PENG: Netflixing. Ja, to je dober čas. V REDU. V redu. Vsa vprašanja pred skočimo v materialu? Prav tako bomo poskušali pospešiti skozi oddelek danes ne preveč za kritje. In upam, da bomo dobili tukaj malo zgodaj. Žal mi je za ne sladkarije, prav tako. Jaz sem razočaranje, še posebej v času noči čarovnic. V redu. Cool. Torej bomo začeli govoriti o argument ukazne vrstice imenujemo chmod. chmod, vse, kar je, je le sistem Unix klic opravili v ukazni vrstici za spremembo dovoljenja datotek. Tako, na primer, ki smo jih Vse naletela na stran kot je to verjetno nekje v naša življenjska doba pa internet uporabnik, če ima naš spletni strežnik dano nam napako Forbidden. Nimate dovoljenja za dostop, dolgočasne, dolgočasne, dolgočasne, na tem strežniku. Vse to v resnici pomeni je, da so dovoljenja ki so bili pritrjeni na karkoli Stran, ki ste skušali dostop niso bili odprti za vas. Torej precej, chmod je način, na katerega moremo spremeniti ta sistem dovoljenj dati vse, uporabnik, skupina, ali svet, ali kateri koli Kombinacija teh dostopa do nekaterih datotek, imeniki, kaj res, vsaka vrsta sistema na operacijski sistem. Torej, če imate katerega od fantov računalniki, če čutite kot sledi skupaj z mano danes, popolnoma vas prosimo, da samo tip stvari v. Če ne, si lahko samo zvečer ven. Torej bom dejansko potegnite do mojega terminala zdaj. Torej ukaz za zagon chmod ali vsaj tik na seznam dovoljenja Vašega Datoteka imenik, je le ls-l. Kot lahko vidite, kup stvari pops up, od katerih je večina Pomembno je, da nas na leva stran tukaj. Vidva videli kup RS, WS 1 /. Ja. Tisti, ki so v bistvu samo vsa dovoljenja datoteka razložiti, kaj nekatere imenikov in datoteke v vašem sistemu ima. Torej pojdimo nazaj Moč točka tukaj. Torej poleg imen datotek saj lahko vi vidite na desni, iščemo videti bistveno samo stolpec na levi strani. Torej poleg pravkar imena datotek, smo lahko vidite dovoljenja datotek, njihovo Lastnik skupino, ime skupine, datum da je bila datoteka nazadnje spremenjene, et cetera. Ogledate si lahko veliko stvari, ki uporabljajo chmod. Torej način, da beremo chmod je, da prva črka smo precej prezreti v smislu bralnih dovoljenj. Prva črka nam samo pove, kaj tip sistema smo dostopu. d, v tem primeru, je mapo ali imenik. Torej vemo, da je trenutno moj delovni prostor oddelek sedem je imenik. In potem vidiš tri triadi, v bistvu samo trije sklopi treh znakov. In lahko si misliš, in sicer kot bit. Torej imate le tri sklope Tri bitov, devet bitov v celoti. Lahko jih obravnavajo v skupinah po tri. Torej je prva skupina treh je Vedno vaše uporabniške dovoljenja. Vaša druga skupina treh je Vedno vaše pravice skupine. In tvoj Tretji sklop treh Vedno je tako kot po svetu, Everywhere dovoljenja. Tako da mislim, enostavno postaviti vprašanje, kaj je razlika med uporabnikom in skupino. Glavna razlika med uporabnikom in skupino je, da je uporabnik samo vi osebno dostop do vse, kar je zdaj. Skupina je lahko, če imate več uporabniki na enem računalniku, na primer. Vsi izmed njih se lahko obravnava kot skupina. In potem je svet samo svet, vsakdo. Tako lahko vidimo, kasneje o tem, kako smo lahko spremenijo tiste v različnih dovoljenj. Torej precej, smo dogaja, da se še vedno osredotočajo na strani na levi strani, kjer je Za imeniku CS50 vidimo drwx, kjer r pomeni le, da je berljivo. W samo pomeni, da je mogoče pisati. In potem x samo pomeni, da je izvršljiva. Ti bi ga misliš vrste od nima smisla. Moralo bi biti e. Ampak x pravzaprav vrsta deluje malo bolje, ker jo lahko spomnite bolje. Torej tri vrste stvari, ki jih more storiti, lahko bodisi prebrati datoteko, lahko imate dovoljenje, da napišete datoteko, ali bi lahko imeli dovoljenja izvršiti datoteko. In zato je tako, da smo dejansko predstavljajo tiste v bitih je številke 4, 2 in 1. Torej, kaj je to berljivimi s številom 4 zastopa. Vse, kar je mogoče pisati predstavlja 2. In kaj je to izvedljivo kot 1, predstavljena. Torej, v tem smislu, lahko tudi mi predstavljajo te numbers-- hi, dobrodošli, na drugačen način. Žal mi je. Pred vsemi, bom Opravičujem se v imenu vseh vstopa v razred zdaj. Pozabil sem sladkarije danes. Žal mi je, da sem napaka ta teden noči čarovnic. Jaz bom prinesla dvojno količino sladkarije drugič, da bi za njo. Ampak nekako, žal O tem fantje, žal. Torej način, da bomo lahko dejansko vhod na naš ukaz je argument smo lahko storite skupina Slash dovoljenja chmod, kjer je skupina samo karkoli skupina smo poskušali spremeniti. In dovoljenja so karkoli želimo, da bi vanjo dodala. Tako na primer, plus dodaja dovoljenja, in Odštej jemlje dovoljenja. In vrste skupine imamo a za vse, u za uporabnike, g za skupine, ali o drugih. To je malo abstraktno zdaj. Se bomo sprehodili čez par primerov samo dokazati to resnično hitro. Vsakdo dobro na tem slide, tako da sem lahko premikate naprej? Cool. Tako, na primer, rwx. Preden govorimo o tem, kaj to pomeni, najprej kaj rwx pomeni? Če vidite, da je to gotovo Datoteka ima dovoljenja rwx, kaj naj bi to pomenilo, oseba, ki bi bili sposobni narediti? OBČINSTVO: branje, pisanje in izvajanje. ANDI PENG: Ja, točno. Si lahko preberete pisanje in izvajanje. Ker vse tri tistih znaki so prisotni. Torej, če gremo naprej in pogovor o tem v smislu bitov, rwx lahko predstavimo tudi kot 700. Saj, kot lahko vidite na katerem koli vrsta datotečnega imenika dovoljenja, tam je tri triad. V tem primeru je samo prvi triad je kaj tam. Torej v tem primeru je R 4, w je 2, in x je 1. Če dodate tistimi skupaj, to je 7. In tako, če pretvorbo da bi binarno, je 700. Ker 7 je prva triada. 0, nič ni prisoten v drugem triado. In potem ni nič prisotne v tretje triade, tako da je drugo 0. Torej, v istem smislu, kup triade lahko predstavimo samo v bitih, samo v binarni obliki, kot dobro. Torej 700 pomeni točno isto stvar kot rwx ------ glede dovoljenj. Vsakdo jasno, da je? Cool. In tako chmod 111 bi dal ki dovoljenja za datoteko? Daj vidva par sekund za pretvorbo tega. Ne pozabite, da je prvi triad je za uporabnika. Drugi triade je za skupino. In tretji triadi je za vsakogar. In tako chmod 111 bi dal, ki vrsta dovoljenj in komu? Traja nekaj sekund, da se razmišljati o tem in prišel nazaj. Ja. OBČINSTVO: Tako lahko vsakdo izvršiti. ANDI PENG: Ja, točno. OBČINSTVO: Ampak nihče ne more brati ali pisati. ANDI PENG: In vas prosimo, razložiti vsem kako si prišel do tega zaključka. OBČINSTVO: No, za uporabnika, skupine, in svet, da je vse 1, kar je koda za izvršljiv. ANDI PENG: Ja, točno. Torej 1, v tem primeru, vsi vemo, da je to izvedljivo kodo. Ker je branje je 4. Pisanje je 2. In izvršljiv 1. Torej se vsi trije triad so 1, ki pomeni, da v svetu, za uporabnika, in skupine, ki so so vsi izvršljiv. Vsakdo dobro s tem? V REDU. In tako drugi način da bomo lahko dejansko napisati to tudi vi lahko samo naredi chmod plus x. sredstvo vse ali vsakogar. Plus pomeni, daje dovoljenja, da. In potem je x pomeni izvedljiva. Torej je dva ukaza so pravzaprav enaki. Torej, če želite zagnati ta v vašem terminalu, vam chmod 111, ime vaš imenik ali datoteka. Ali lahko naredite chmod plus x, Ime vašega imenika datoteke. Ista stvar, samo lažji način, morda za nekatere, da predstavljajo, ali sprememba Dovoljenja datoteke. Vsak OK z chmod preden gremo naprej? Cool. Torej, zdaj gremo na glavo v nekaj diapozitivov iz zelo abstraktnih pojmov da sem precej bo vetrič skozi. In to je povsem v redu, če vas Ne razumem vsega. Celo zdaj, jaz še vedno ne res popolnoma razumem vse. Ampak to je bolj za pridobivanje na najvišji ravni razumevanja o tem, kako nekatere od teh stvari delujejo. Torej bomo govorili hitro o TCP / IP, ki je le Control Transmission Protokol poševnica internetnega protokola. Spomnimo iz predavanja, David, ti je naučil primer, kjer bi bil prehod pojasnila v kuverti do rad vrh predavalnici? Torej, v šolski zakon dvorani na David bistvu dokazali kako TCP / IP deluje občutek, da je vse to je je sredstvo, ki zagotavlja, da se podatki je bilo izvedeno preko strežnika ali na internetu. Torej, v primeru ovoja in sporočilo, uporabnik ob koncu bi videli, da, oh, sem potreboval, da prejeli štiri pakete informacij. Ampak jaz dejansko prejela le tri. To pomeni, da je treba, da manjka ena. In eden ni bilo dostavljeno. In tako TCP / IP na internetu, z vašim računalnikom in strežnikom, počne točno isto stvar. Vse kar naredi je, določite okvir, v katerem je izgubljena podatki pakete lahko zameril in prejela. Tako kot na internetu, ko ste poskušali Za dostop do datotek na spletu ali pošiljanje datotek vaš prijatelj ali pogled na spletu brskalniki, na tisoče in tisoče milijard in milijard bajtov podatkov se prenesejo na milisekundo. In to je res, res zmedeno. In to je res težko dejansko vedo, kaj je bilo poslano in je tisto, kar ni bilo poslano. In tako TCP / IP samo določa skladen okvir v katerem vašo spletno brskalnik in strežnik lahko nekako komunicirati med seboj, tako poskrbite, da so paketi vse je tukaj in ni nič izgubljeno in vsi podatki, ki ste jih zahtevali dejansko prikazovanje pravilno. Vsakdo OK na samo, da je zelo Kratek visoko raven razumeš? Cool. Torej se bomo, da se premaknete v govoriš HTTP, ki je samo Hypertext Transfer Protocol. HTTP, vse kar je, je ne glede na katero koli stran ali je datoteka naložena na vaši spletni strani, strežnik vrne HTTP Status koda odgovor na zahtevo, se prepričajte, da bodisi, oh, ta prošnja šla skozi. In vse, kar je pravilno prikazovanje. Ali pa, oh, ne, 404. Nekaj ​​je šlo narobe. Oh, ne morem prikazati. Vse, kar je, je, da ne glede na skušaš dostopa, uporabite kot uporabnik poskuša dostopati, na internet-- samo pazite, da si uspešno pogledali kar je bilo ali ne Uspešno naložena, kar je bilo. In tako stanje HTTP Koda vas samo zagotavlja sredstvo, da bi lahko vedeli, ali ali je bila uspešna ali ne. Tako, na primer, zahteva zgled. Tukaj lahko vidite, da je običajno običajno štiri vrstice. Imamo GET HTTP 1.1, ki je pravkar zahteva metoda URL, protokol Različica, ime polja, in vrednost polja. Tako ni potrebe, da popolnoma zapomniti ničesar tukaj. Samo nekako seznaniti sami s tem, kako to videti. V tem primeru je zahtevek metoda URL je samo karkoli zahteva pošiljate strežnik. Kot, hej, strežnik, res želim, da Dostop do dolgočasne, dolgočasne, dolgočasne, HTTP stran. Različica protokola je le karkoli Različica vaš gostitelj ali strežnik se uporabljajo za dostop do informacij. Ime polja je spletna stran ali URL, ki ga poskušate dostopa, V tem primeru, www.apple.com. In vrednost polje Samo običajno ime, vrednost. In je lahko kakršno koli kombinacijo črk ali številk ali karkoli. Torej tipično zahteva, da kaj je računalnik dejansko pošlje na strežnik, ki pravi, hej, veš kaj rabim to prikaže, da je vrsta zahteve ki so dejansko prejeli. Primer odgovora na to, kaj server bi poslali nazaj v vas bi bilo precej isto stvar, razen s kodo stanja na vrhu. Torej 200, 2 0 0 vedno koda status OK. Kot, OK, ta prošnja šla skozi. Ste bili sposobni za dostop do vse pravilno. Življenje je dobro. Življenje je v redu. Vse, kar je popolnoma v redu. In tako je to samo pove, brskalnik in vaš strežnik, hej, dobro vse je. Imam vse informacije, ki jih potrebujem. Cool. Ampak problem je, včasih težave prišel gor ko have-- trajala mislim Govoril sem o dvojnikov. Imate manj dobre odzive. Tako na primer, 404 je Page Not Found. Včasih imajo Forbidden dostop. Imate različne druge statusnih kod da sem prepričajte, da ste vsi videli, ko ste poskuša narediti raziskave na internetu. In vaš brskalnik vam daje , ne, ne morejo dostopati. In ti si všeč, no, sranje. Torej, samo precej, tam je nekaj zelo pogoste kode stanja. Mogoče se seznanite s katere so to. Najbolj smešna tista, ki Mislim, da sem kdaj slišal of-- če se zgodi, da poglej vse od njih na spletu, iz neznanega razloga, tam je pravzaprav realna statusna koda poklical 418 sem čajnik. I googled kjer Izvor tega je bilo iz. In očitno ena april Fools " Dan pred nekaj desetletji, kdo mislil, da bi bilo smešno ustvariti novo kodo stanja, imenovano 418 Jaz sem čajnik. Legitimno, ime tega koda se imenuje sem čajnik. Sem pozabil, kaj stran morate iti, da dejansko bo ta zaslon. Ampak očitno, lahko dejansko pridobiti statusno kodo sem čajnik nekako skozi delaš nekaj. Tako da je na stotine in stotine statusnih kod. Nekateri od njih bolj Občutek kot drugi. Ampak precej preprosto seznanite sami s najpogostejših. Zaprošeni subjekt telo kratek in čokat, očitno. Tako da včasih obstaja več zastrašujoče napake kot sem čajnik. Ampak to je tista, ki mislim, da si nekako upam, da bo zadel. Ampak jaz ne mislim, da bo. Vsakdo dobro na samo stanje kode, prijave, procesi, izdelava zagotoviti informacije pravilno dostavljena? Torej, zdaj gremo na prehodu v za zabavo v delu danes, kadar govorimo malo o HTML. HTML, vse je HyperText Markup Language. To je samo standard jezik lahko uporabite za ustvarjanje vse spletu strani na internetu. Torej vsaka spletna stran, kaj je tvoja najljubša spletna stran? Katera je tvoja najljubša spletna stran? OBČINSTVO: [neslišno]. ANDI PENG: Oprostite? OBČINSTVO: Tumblr. ANDI PENG: Tumblr. Torej je Tumblr napisana v HTML. In tako bomo dejansko šel skozi in igral z nekaterimi od teh stvari kasneje. Precej vse, kar se morajo naučiti, da veš, pisati HTML lahko verjetno Samo Google na internetu. HTML, to ni program, kot C kjer si lahko ustvarite spremenljivk in storiti kul stvari z njim. To je več od le, oh, to je, kako sem želijo stvari, da se pojavi na moji spletni strani. In jaz sem šele tekoč, da ga v. In to se dogaja, da je slog. Torej HTML, v smislu, da je tako kot oblikovalni ali predlogo jezik. To je veliko lažje. To je veliko lažje, da se naučijo, veliko lažje pisati v kot vaš tipičen programiranje jezik, zelo enostavno, zelo uporabniku dostopna in prijazna. Torej smo dejansko dogaja, da igrajo naokoli, pišejo danes lastne strani. Toda preden začnemo, želim iti čez nekaj kratkih najboljših praks. Ker je HTML tako enostavno jezik in ker tudi Če boste to storili nekaj stvari narobe, včasih morda ne bo opazil, želimo zagotoviti, da smo dejansko drži naših najboljših praks se prepričajte, da stvari, ki lahko dogaja okoli vendar niso vedno dogaja, da ne gremo desno se prepričajte, da ste jih zmanjšati. Torej precej, poskrbite, vaše zapiranje vse vaše tags Ko pišete v HTML. Če ste odprtjem telo, se prepričajte, da ste jo zaprete s telesom nekje. Hočeš, da poskrbite, da vaš Spletna stran potrdi s pomočjo kar se imenuje W3 Validator. Lahko samo Google, da na spletu, in tam je povezava z njo. In potem boste želeli ločena HTML, ki je vaš označevalni jezik iz vašega stila, ki je CSS jezik, David dokazali, da smo tudi bo igral malo s predavanjem. Cool. Torej, kadarkoli želite zagnati HTML na CS50 aparata, bomo teči Program se imenuje Apache, vse to je samo vgrajeno v spletni strežnik, da vsakdo v CS50 ima dostop do. Pravimo, da apache50 samo zato, ker mi želeli poklicati vse, kar je 50 v CS50. Torej tako, da začnete CS50 spletu Strežnik je z vpisom na vaš ukaz linija apache50 začetek piko. In če želite, da končajo na katerokoli Tokrat vam apache50 ne konča pika. In si samo pritisnite tipko Enter. In to je treba tarifno številko tukaj kmalu. Ja. Tako da sem le, da bo hitro šel čez primer zelo kratek spletni strani. In bomo preživeli kot 10, 15 minut igranja okoli pisanjem lastne spletne strani. V REDU. Torej, tukaj v IDE-- lahko vsi vidijo, da je? Niti ne. Tukaj bom povečavo. Pravkar sem dobil to kratko predlogo tukaj z ničemer dejansko v njej. Mi smo le, da bo hitro pisanje program HTML, v katerem smo pravkar pozdravite svetu. Torej isto, kot v C, zdaj smo le, da bo to v HTML. Ali kdo želel, da dejansko samo poskusite mi dali ste prva stvar bi morali dati v dokumentu HTML? Ja. OBČINSTVO: V oklepaju [neslišno]. ANDI PENG: Yep. Torej nekaj, kar je zelo edinstvena HTML, ki jih običajno tradicionalno ne naletijo na drugi ukaz programski jeziki ravni linija je, da smo dejansko opredelite vrsto datoteke da se to dogaja, da je Na vrhu našega kode. Torej, v tem instance-- mislim da je pravi ukaz, kajne? Ja. Na vrhu, si samo želim, da se vključi bang DOCTYPE html v oklepaju samo povedati računalnik, hej, pazi. In HTML dokument prihaja. In potem, kako hočemo da začnete svojo datoteko? Če hočemo samo pozdravi, imajo Spletna stran, ki pravi, da pozdravi na svetu, kako bomo šli o gradnji to? Pravzaprav, kaj je obrniti na Googlu. In bomo dejansko lahko to storite. Ja. Tam gremo. Torej HTML. Kot lahko vidite, je moj brskalnik je dejansko samodejno styling to za mene. Enako kot v C, ko vas ustvariti odprto kodrasti naramnicami, Vaš brskalnik samodejno Dodaja, v tesnem kodrasto opornico. Na srečo, naš IDE ljubi To storite tako za nas, kot tudi. Torej, zdaj bomo lahko nekako tip začetek tag, in to se dogaja, da nas vedno znova povedati, da ne pozabite, da tip konec tag. Mislim, da je to treba kapitalizirane. In potem smo se želeli dodati, vedno glavo, v kateri je naslov. Pravkar smo želeli, da morda pokličete to pozdravi, nato pa telo. In tam greš. To je pravzaprav naš HTML dokument. Torej tako, da vsak HTML dokument je vedno styled in-- isto stvar z int glavno praznino. Vedno želite imeti HTML odprt in tesno oznako na vrhu in na dnu kodo. Želite imeti glavo notranjost ki vsebuje naslov, tako glede se dogaja, da se prikaže zavihek za vašo spletno Stran in nato telo znotraj katerega bo dejansko prikazovanje vsebine za karkoli hočeš narediti. Torej, če boste želeli, da dejansko vozijo to, da bom za povečavo nazaj ven. Lahko dejansko začeli apache50 začetek piko. Cool. In tako, kot lahko vidite, zdaj Ta povezava je izstrelil. To pravi, da je vaša stran je zdaj voljo na neki spodnjo povezavo. Torej vse naše IDE ima done-- ne IDE, sorry-- ja, naša IDE bilo storjeno, je ustvariti spletno Povezava na kateri vseh naših spletnih straneh je na voljo na strežniku. Torej, kaj si oglejte tukaj. Oglejmo kliknite na to, pojdite na hello.html. In vidite, zelo enostavno Spletna stran za Hello World. V REDU. Mi smo dejansko dogaja, da samo imajo everyone-- ja, kaj se dogaja? OBČINSTVO: Imam osnovno vprašanje. ANDI PENG: Yup. OBČINSTVO: Kako rešiti datoteka kot HTML? ANDI PENG: Ja. Torej, če bi bil jaz, da ustvarite novo datoteko, če naredim nove datoteke, Untittle, če to storim, section.html, bum, da je vse, kar moram narediti. OBČINSTVO: [neslišno]? ANDI PENG: No. OBČINSTVO: [neslišno]. ANDI PENG: No. OBČINSTVO: [neslišno]. ANDI PENG: Ja. Precej, razširitev na datoteka, ki je v vašem IDE, da pove računalnik, ki pove, brskalnik, hej, pazi. To se bo koda napisana v tem jeziku. Tako na primer v Microsoftu Beseda, kaj vse Wordove dokumente konča z, kaj podaljšanja? .doc ali .docx, kajne? Vse, kar počne, je Določa vaš operacijski sistem, hej, imaš Wordov dokument, ki prihaja. Odprite jo z Word. Ista stvar z PDF. To ve, oh, moram za odpiranje te datoteke Adobe Reader ali Adobe Acrobat. In tako deluje Extensions enak način, kot je v vašem računalniku. Če podate svojo kodno stran biti imenovan HTML, potem ve, oh, imaš HTML kodo. Jaz grem, da ga obravnavajo kot html kodo. Torej, to je super pametna v tem smislu. Torej vsi, vzemimo kot 10 minut in samo ustvariti lastne spletne strani. Dodajmo v ljubkih stvari. Reci kar hočeš. Rad bi samo, da se prepričajte, da strežniki vsakogar pravilno deluje preden smo vas osvobodi v pset. Ker če strežnikov ne teči za pset, da bo zelo, zelo slabo. Jaz sem le, da bo plavati okoli in videli, kaj počnejo dela na. Kako gre? OBČINSTVO: Pravkar sem obrnil na mojem računalniku. ANDI PENG: To je v redu. OBČINSTVO: [neslišno]. ANDI PENG: Samo vaš IDE. Ja. OBČINSTVO: [neslišno]. ANDI PENG: To je v redu. OBČINSTVO: [neslišno]. ANDI PENG: Popolnoma v redu. Je vsakdo dostop do njihovi spletni strežnik v redu? Je apache50 teče v redu? Mislim, da v nekaterih drugi oddelki, smo imela težave z ljudmi ne da bi lahko za dostop do strežnika. Ja. Tako da boste šele teči apache50 Prostor začetek vesoljske obdobje. OBČINSTVO: [neslišno]. ANDI PENG: Yup. Dobra? OBČINSTVO: [neslišno]. ANDI PENG: Oh, v redu. Torej boš moral imeti prostor. Torej apache50-- OBČINSTVO: sem. ANDI PENG: --start prostor. OBČINSTVO: Oh, prostor pika. ANDI PENG: Yup, prostor pika. Izvolite. Torej, če imate strani HTML ustvarjen, potem lahko greš neposredno na povezavo, ki ga določi. In bi morali biti sposobni za dostop. Vsakdo je sposoben dostop do njihove spletne strani, v redu? OBČINSTVO: [neslišno]. ANDI PENG: Oh, to je v redu. OBČINSTVO: [neslišno]. ANDI PENG: Ja. Mislim, da lahko dejansko odpreti je v vašem brskalniku, brskalnik in ne samo tvoj IDE brskalnik. Ja, mislim, da če kopirate in prilepite. OBČINSTVO: In potem kako ga izklopite? [Neslišno] ANDI PENG: Ja, to storite apache50 ustaviti brez obdobja. Ja. OBČINSTVO: [neslišno]. ANDI PENG: Brez obdobju. Ja. Tam gremo. Ja. Smo ustvariti lastne spletne strani. OBČINSTVO: Oh, kul. ANDI PENG: Ja. OBČINSTVO: Imam vprašanje. Torej apache 50-- ANDI PENG: 50, ja. OBČINSTVO: [neslišno]. ANDI PENG: Kaj? To je čudno. Glej, da je bila vrsta izdaje da je dogajalo prej. V REDU. Glej me po oddelku. Ker imamo nekaj Vprašanja s strežnikom. In želite prepričani, da je vaš strežnik teče pred začetkom pset. Ker boste potrebovali. Ja. Je še kdo, ki ni bil mogli priti njihov strežnik začeti? Za tiste, ki želijo dodati dodatni slog na vaše spletne strani, bomo lahko dejansko narediti kaj David storil v predavanju, kot tudi, ki je ustvaril dodaten slog stanja, ki je dot CSS, Cascading Style Sheet in dejansko samo dodajte v. Tako, na primer, sem ga pravkar ustvarili precej skoraj popolnoma enaka ena David storil v predavanju. Lahko precej pač telo. Imate kaj se imenujejo oznake, v kateri se lahko uporabljajo za IDE karkoli poglavje želite v vašem Dejanska na strani HTML. Torej telo strani lahko storite besedila align center. In potem bom kreativna oznaka imenovan top notranjosti katerega želim te stvari zgodi, dodeliti večjo velikost slikovnih pik za pisavo. Hočem teža pisava biti drzen. In želim, da se barva modra, samo arbitrarno vrednote, ki sem se odločil, da izberejo. Lahko ustvarite drugo oznako, imenovano srednji. Velikost pisave, da bo malo manjši. In potem sem lahko ustvarite novo oznako imenovano dno, kjer želim velikost pisave da je še celo manjša. In tako precej je to samo primer izvorne kode ali izvornih listih slog da je zelo enostaven za samo Google. Če rečeš, oh, hočem svoj pisavo se pisavi in ​​temno zelene barve, si verjetno lahko Google, in potem vam bo povedal, ustrezne oznake ali ID za ustvarjanje. In tako je način, da bi jih dejansko nekako imajo to v dokumentu HTML ali uporabite to je vse, kar imate storiti, tukaj je na čelu dodajte povezavo do slogi. Tako da lahko samo link href enaka ne glede na ime vašega slogi je. In potem je razmerje je slog stanja. Torej, v vsakem dokumentu HTML, dokler če vključite to dot CSS stanja, bi morali imeti dostop do in imajo lastnosti tam. Tako, na primer, tukaj sem pravkar ustvariti drug primer spletne strani. To je dobrodošlo, da oddelku CS50 Ob torkih od 2:00 do 3:30 z mano. In potem sem dodal lepo podobo, ki smo morda bi morali biti sposobni videti. Torej, če si pogledate tukaj, če greš v style.html, smo ustvarili spletno stran z mladiče. Ker mucka so super. Torej dodajanje slika je samo img src povezavo. Precej, če je kakršno koli funkcijo želite dodati v svoj website-- tako recimo, želite dodati menu ali bar iskanje ali podobno image-- samo Google, kako to storiti. In si Pljuskanje v tej obliki. In si lahko samo lepa še samo dodati v. To je res, res enostavno. Mi ustvarjamo lastne spletne strani, prav zdaj. Če želiš-- OBČINSTVO: [neslišno] ANDI PENG: Oprostite? OBČINSTVO: [neslišno]. ANDI PENG: Oh, div je le delitev mi je povedal, da, oh, imam določen del se imenuje sredina, v kateri sem uporabo moja CSS tag in nato moja druga delitev z dnom. To je vse, kar je povedal,. Ker je lepo, da stvari urejene v vrstnem redu, tako da program ne ve, kako točno teči. In mislim, da lahko kopirate prilepite v mojem dejansko brskalnik, kot dobro. To bi moralo biti v redu. Ja. Jej. Torej, če vsakdo želi samo poskusite ustvariti spletno stran, bomo vzeli še dve do tri minute. Rad bi samo, da se prepričajte, strežniki vsakogar teče in vsakdo ima Ideja o tem, kako to storiti. Če hočete, da vzemite ven svoje računalnike. Še vedno ne deluje? OBČINSTVO: Jaz sem samo [neslišno]. ANDI PENG: Mogoče poskusite posodobiti 50, kot dobro. Ja. OBČINSTVO: [neslišno]. ANDI PENG: Ja. Torej tako, da začnete nov spletni strežnik na IDE je samo storiti apache50 prostor začetek vesoljske piko. Pravkar sem se želel prepričati, strežniki vsakogar teče OK. Skupina: Tu, na terminalu? ANDI PENG: Ja. OBČINSTVO: [neslišno]. ANDI PENG: Apache. Pravzaprav, mislim, da si teče nekaj že. Ja, vi ste dejansko teče drug strežnik. Ja, ti si dober. Dokler, ki je deluje, si v redu. OBČINSTVO: OK. ANDI PENG: Še dva načine za zagon strežnikov. Torej, dokler enega od načinov se delajo, da je vse v redu. Vzeli bomo še minuto samo da bi nekako končal Absolventski dotiki karkoli Spletna stran, ki jo fantje želel, da bi. Vsi delajo mimogrede? Strežniki vsakogar so teče poleg za tvoje? Mi bomo to ugotovil. In HTML je dokaj preprost. Zato mislim, da smo vsi dobri. Ja. Vrnil se bom. OBČINSTVO: [neslišno]. ANDI PENG: OK. OBČINSTVO: Torej, to je samo začela naložiti gor. ANDI PENG: Brez skrbi. Torej HTML, tam je izvorna koda, ki bo na spletu po oddelku. Tudi David ima celoto kup na spletu kot tudi. Samo nekako pogled nad njim, da videli, kako so HTML strani napisano. To je dokaj enostavno. Kaj ne veš, ti zal veliko samo Google in si dober. Rad bi samo, da se prepričajte, da strežnikov teče. OBČINSTVO: Ali je to storiti pogosto? ANDI PENG: Še nikoli se mi je zgodilo. Nisem vedel, da bi lahko celo zimsko spanje. OBČINSTVO: [neslišno]. ANDI PENG: Mislim everyone-- rudnik ni nikoli zimsko spanje prej. In ne vem, zakaj. To je čudno. OBČINSTVO: [neslišno]. ANDI PENG: Je tvoje zimsko spanje? OBČINSTVO: [neslišno]. ANDI PENG: Ja. OBČINSTVO: To je v redu. Torej, ko je odprta. ANDI PENG: OK. Bomo se ukvarjajo z nekaterimi strežnikom Vprašanja po oddelku. Moral bi biti v redu. Kljub temu, da želite, da poskrbite, da boste Spravi jih rešiti, preden greš. Ker če vaš strežnik je ne deluje, potem ste ne bo mogel storiti pset, kot kateri koli del pset. Tako da boste želeli, da poskrbite, da to deluje. Cool. V redu. Reči zbogom mucek. Preživel sem dolgo časa iskal da mucek slika, da dajo na. Torej, nekako. OBČINSTVO: [neslišno]. ANDI PENG: Oprostite? OBČINSTVO: [neslišno]. ANDI PENG: Mislim, da je na spletni strani. Tako kot spec? OBČINSTVO: [neslišno]. Mislim, da je spec je le spletu v sedmih tednu. Mislim, da se imenuje pset6, celo čeprav smo na teden, sedem, ki je malo računalništvo. OBČINSTVO: Ampak mislim, če vas želijo videti at-- če vas želijo dvigni svojo različico spletna stran od našega sever? Tako kot server.c je pset, kajne? Če želite, da pogled na to, všeč, kako se preverja ven? ANDI PENG: Oh, tako da dejansko pset, vsi delamo tukaj je implementing-- tukaj, Bom šel čez ta kratko. Torej za vsakogar, ki je pravkar prišel na oddelku, vi ste v srečo. Obstaja zelo malo gradiva dejansko pokrivajo danes. Jaz sem samo tekoč potrošiti naslednji 20 minut gredo čez pset pomoči. Zato, ker je nekaj koristnih funkcije, ki bodo pomagali vaše življenje. In upajmo, da bomo ven od tod v kot 20 minut. V REDU. Torej pset7 je narobe. Čeprav smo na teden sedem, je dejansko pset6. Bom spremeniti. Vse delamo v pset6 ustvarja spletni strežnik. Sliši se super strašljivo. In še posebej za tiste, od vas, ki so že pogledal kodo distribucije, tam je veliko kode, veliko kode. Vendar je povsem v redu. Ker gnjidama kašaste del dejansko ustvarja strežnik se opravi z nami. Vsi ste res vprašal storiti v tem pset je le, da naredite nekaj niz manipulacije v spisu I / O. To je pravzaprav kot je dokaj preprost. Torej, ko ste prvič prenesete that-- ki tukaj je dejansko že prenesli pset in jih pogledam? V redu. Ja. Tam je kot 500 vrstic kode da boš všeč, kaj se dogaja? In to je povsem v redu. Prepričajte se, da ste gledal sprehod kanale. Ker David in-- Ne vem. Jaz ne mislim, da je Zamyla je, tale. Ampak mislim, da nekatere druge sprehod-kanale so precej pomoč v smislu samo najemnin veš kaj se dogaja v notranjosti vašega kode. In to je povsem v redu. Ker štiri funkcije, da ste prosil za izvajanje imajo dejansko nič opraviti z dejanskim strežnikom. Vse kar morate storiti je, samo razčlenjevanje drugačne strune, iskanje po nizih, Da bi se prepričali stvari počnejo kaj oni bi se delaš. Torej, v tem smislu, obstajajo nekaj zelo, zelo uporabne funkcije, predvsem za niz manipulacija, da bi morali vsi iti čez, da sem mislil, da sem bilo zelo koristno za vas da se naučijo, preden poskušate v pset. In oni so vse vsebovane v vašem string.h knjižnici. Tam je verjetno bolj uporabno funkcije sem niso vključeni tukaj, ker sem bodisi jih nikoli ne uporablja ali Morda sem samo ni vedel, da obstajajo. Vas prosimo, da pogled skozi student.h. Ker tam se dogaja, da je veliko funkcij, ki so zelo koristne. Torej šest, ki jo uporabljam najbolj v mojem pset, ko sem bil početje to čez teden dni bili strtok, strchr, strrcher, strstr, strcasecmp in strcpy. In tako zadnji dve se morda zdi precej pozna večina od vas. Str primeru primerjati, vse to pa je primerjati strune, da jih preverite za enakost, vključno z zadevo. In strcpy le kopije en niz v pufru. In tako ta dva bi morala zdi zelo seznanjeni, da vama na tej točki. Ker smo jih uporabljali veliko, še posebej v zadnjih psets. Toda prva štiri morda niste videli do sedaj. Ampak bom samo sprehod skozi njih. Ker oni 'tekoč, da bo vaše življenje res, res enostavno for-- ni enostavno, vendar je veliko lažje za ta prihajajoči pset. V REDU. Torej znak * strtok, to je funkcija definicija za to funkcijo, je vseboval v okviru niza, h knjižnici. Če ste prejeli vložkom char * niz, ki je le niz, ali konstanta char * deliminator, RAZMEJ na kratko, vse to počne se prebija večja niz v nizu, kar imenujemo žetoni ločeni z določeno vrednostjo. Torej, v smislu, če bi dal vi section.7.php, to je niz. Tako, da bi bilo, če bi bil jaz mimo V tem so moji str, moj char * str, če je bil moj deliminator pika, vse to bi bilo storiti, je iskanje s pomočjo vrvice. In prvič se ji zdi piko, da bi samo vrniti na kazalec do zadnjega žetona ugotovljeno v nizu pred tem. Torej bi bilo iti tukaj. In bi samo daj mi 7.php. In če bi bil jaz imenujem delovati še enkrat, da bi mi samo .php. In tako se je vse to funkcija počne se zrušijo večji niz na manjše strune odvisno o tem, kaj iščete. Tako na primer, pri tvoj pogled up funkcija Če želite pogledati, kaj nekateri znaki prišlo ali če pike zgodi ali razširitve se zgodi, Ta naloga bo dokaj koristno. Ja. Brez skrbi. To bo vse be-- ja, kaj se dogaja? OBČINSTVO: Torej, v prvi vrstici, če smo bili z uporabo tega primera, kaj bi mi vstavite v to? ANDI PENG: Ja. Vi bi samo poklicati strtok niz vejica RAZMEJ. In niz je enaka section.7.php. In potem ste RAZMEJ lahko enaka samo dot. OBČINSTVO: OK. ANDI PENG: Ja. Kar tako. Vse te funkcije so precej Podobno, ko gremo skozi njih. Oni pač nekoliko drugačne stvari. Ampak oni so vse bo da bo vaše življenje veliko lažje. Druga funkcija, tale je všeč super, super, super pomembno, je the-- držite gor. Ups. Strchr išče prvo occurrence-- pravzaprav, ja. Strchr je funkcija, ki Jaz zagotovo šel čez. Torej prezreti, kar sem rekel za prvo funkcijo. To je pravzaprav imenuje strchr. Torej, kaj bi se zgodilo, tukaj je, če vam je bila dana niz v char c, bi samo dal vam karkoli že to je. Ja. Torej, pomislite, da je str, ki je niz, in chr kot char. Torej vse, kar poskušate storiti, je iskanje za kjer je znak v nizu. In zato išče prvo Pojav značaja c v nizu str. OBČINSTVO: [neslišno]. ANDI PENG: Yup. In potem, če v njej ni najti to, da se dogaja, da se vrne NULL. Torej nekaj, kar se dogaja, da je zelo koristno za vas v početje pset če rečem, da si iščejo Podaljšanje kot .docx za Word dokument ali .pdf za dokument PDF, lahko nekako uporabite pogledati za kar je kasneje vsakič, ko vidite piko, kajne? In tako zelo veliko, če vas teči, da prek funkcije, če se vrne NULL, potem veš, da je to ga ni dot najti, kar pomeni, da je to očitno ni veljavna končnica datoteke. Ali pa, če se vrne nekaj, potem veste, to se dogaja, da se vrnete Karkoli dejansko po razširitvi. Torej tiste, ki ste imeli začeli iskati skozi lookup in razčleniti, ta funkcija je bo zelo koristno. Torej smo dejansko dogaja dokazati s pomočjo tega. Zakaj ne bi vidva poskusili sestaviti Funkcija bool stavek char * s, da Samo vrne true, če y je stavek in false sicer. Torej namig, da boš bi verjetno uporabljate strchr. Ali pa samo iskanje v niz za določeno značaja. In tako v stavku, kaj loči stavek iz ne-stavku, kaj poseben značaj? OBČINSTVO: Prostor. ANDI PENG: Prostor, kajne? In kaj bomo verjetno bo želeli narediti v tej funkciji tukaj? OBČINSTVO: [neslišno]. ANDI PENG: bomo želeli strchr Niz za videz prostora. Ker če se vrne nekaj, nato vemo, da mora biti to kazen. To pomeni, da moramo imajo prostor v tem nizu. Če ni prostora, potem vemo, da, hej, mislim, da to ni niz. To je verjetno samo res dolga beseda. Torej, jaz ti bom dal fantje par minut, da napišete to funkcijo. Ja. OBČINSTVO: Ste dobili Ta niz od uporabnika? ANDI PENG: Ja. Torej je to samo funkcija. Tako si predstavljam v vašem glavne funkcije ste že have-- pojdimo tukaj. V REDU. Tako sem napisal ta program, kjer Imam glavno funkcijo, Pravkar sem ustvaril dveh nizov. Prvi je Živjo, moje ime je Andi-- jasno, stavek. Moj drugi je pravkar Andi, očitno ne obsojam. In zato tečem tako tistih, strune skozi to funkcijo. Želim vama, da napišete hladno kazen. In jaz shranjevanje teh vrednot, in potem samo njihovo tiskanje. Torej menite, da je uporabnik dogaja, da prenese v nizu. In potem boš v bistvu ugotovimo, če je kazen ali ne in vrne true ali false ustrezno. Če hočete, da dobimo thumbs up ali glave gor, glavo pokimal, je kdo pripravljen za začetek to, da bi bilo dobro. Morda tako kot še 30 sekund? V redu. Poglejmo, če lahko poskusite pisanje to funkcijo. Torej pseudo coding-- sem le, da bo nekakšen sprehod skozi te pravice zdaj. Precej, vemo, Funkcija da moramo uporabiti. Mi bomo za klic te funkcije na naš niz in iskanje za prostor. Če se vrne nekaj, potem moramo vemo, da je jasno, da je to, stavek. Zato, ker je prostore. Potem se bomo vrnili res. Else, bomo vrne false. Ali kdo želel dati me prva vrstica kode da smo dejansko dogaja uporabiti za to napisati? To je pravzaprav najtežji vrstica kode, kot dobro. Ja. OBČINSTVO: Če strtok S- ANDI PENG: Just strchr. OBČINSTVO: [interposing GLAS] Prostor ni enaka nič. ANDI PENG: Cool. Ravno prav. Vsi razumeli, da je prvo vrstico? Mi bomo za klic strstr, ki je funkcija, ki išče niz je za char prostora. In če ga najde, gre za vrne kazalec, kje je to. Če ne najdete, to se dogaja, da se vrnete NULL. Torej, če se vrne nič drugega kot NULL, potem vemo, da je našel prostor. Ali to smiselno? Cool. V redu. Torej, če vemo, je, da najde Prostor, kaj želimo narediti? OBČINSTVO: Vrnitev res. ANDI PENG: Yup. Return true. In potem nekdo želi končal funkcijo za mene? Ja. Drugega, kar tako. In poskusite zbiranje to. Ja. Tako da lahko vi vidite iz izhodi, se spomnite Booleans v C so vedno izraženi v binarno. 1 je res. 0 je napačen. Če smo teči ta funkcija na vrvico enega, ki je Pozdravljeni, moje ime je Andi-- Jasno je, da sentence-- rezultat natisne na 1, kar je res. Drugi korak, ki je prav beseda, Rezultat natisne 0, ki je napačen. Vsakdo jasno nekako o tem, kako ta funkcija je napisal? Ja. OBČINSTVO: Lahko smo tudi storili, namesto ni enak ne, enaka enak 0, tako, da je enaka? ANDI PENG: No. Ker strchr je funkcija. Grem nazaj na to. Torej, kaj je tip rezultata naše strchr funkcije? OBČINSTVO: Oh, v redu. Ali NULL. ANDI PENG: Ja. To je char *, ki mi pravi, da ne glede na Ta funkcija se bo vrnil, to se dogaja, da je kazalec. Bodisi kazalec se bo kaže, da, kjer je to našel, ali pa se dogaja, da se vrnete kazalec NULL. V obeh okoliščino, da se dogaja vrne kazalec na nekaj. In tako, če ste bili, da enačijo To je enako, enako, 0, boš dobil napako pri prevajanju. Ker to se dogaja, da se vrnete kazalec. In boste poskušali primerjajo kazalec na celo število. In računalnik ni bo všeč. Ja, točno. Cool. Vsakdo dobro? In drugič, smo šli nad funkcijo imenovano strstr. Brez skrbi, če te funkcije so vam zmedeno. Oni so me zmedli. Kot tak, bi vidva so videli, so vse zveni precej isto. Samo, ko boste zmedeni, potegnite navzgor string.h knjižnico. In vidva lahko razvrstimo skozi katero je katero. Torej strstr, vse, kar počne, je iskanja niz za cel drugi niz. Torej, kje strchr le iskanj za posamezni znaki, strstr išče celoten niz. Zato sem želela videti, sem ne Veste, Zdravo, moje ime je Andi. In ime Moj najboljši prijatelj je tudi Andi. Če sem hotel iskati v tem kazen za celotno besedo Andi, moja igla bi bilo kar iščete. In tvoj senu je karkoli iščete za to v. Torej, če iščete specifična beseda v stavku, ta beseda se bo vaš iglo. In potem je stavek sam se bo vaš senu. In tako se je pravkar išče prva pojavitev godalnega igle v niz senu. Se vrne kazalec do prvega pojava. Razen, ne pozabite, v tem primeru je to Prvi pojav celotnega niza da iščete za, ne samo znak. In zato je to skoraj Isto kot funkcijo smo pravkar storil, samo z malo bolj specifičnost. Ker ste iskali več kot samo en znak. In navada je popolnoma enaka kot tistega, ki smo ga pravkar storil. Vsakdo v redu s tem? V REDU. Zadnji bomo šli nad je strrchr, ki ni zamenjevati z strstr ali strchr. strrchr ima dodatno r tam. Bodite previdni, ko tipkate. Morda boste našli tudi dodatno r ali ne, vključno z r, in potem vaša funkcija je dobil, ne bo šlo. In boš zmedeni. Bodite previdni, da ste črkovanje vse te funkcije prav. Torej strrchr je točna ista stvar kot strchr razen da išče ni prvi Pojav posebnega značaja, ampak zadnji pojav. In tako, v tem smislu, je skoraj popolnoma enaka. Toda namesto da bi se gibljejo posreduje v nizu, boš se gibljejo nazaj v nizu. Točno isto stvar, ti si samo iščejo v drugačnem vrstnem redu. In tako bi lahko to bilo super, super koristno za vaše lookup Funkcija, prvi funkcija na vašem pset. Naj se pretvarjamo, da smo morali napisati Funkcija praznine razširitve, v katerih smo mimo konstanta char ime * datoteke, le niz, ime datoteke, da je v tem imenom in tiskov ven podaljšanje te datoteke. Torej, za primer, če bi bil jaz preide v nizu pset7.zip, da se bo izpisal samo razširitev, ki je .zip. In to bi bilo delo za kakršno koli podaljšanje, .docx za Word ali .pdf za PDF datoteko ali .html za datoteko HTML. Precej, napisati funkcija, ki lahko to storite. Jaz sem pravzaprav dogaja, da preklopite na IDE. Ni load-- tam gremo. Torej vsi tukaj sem naredil, je ustvaril char *, prvi niz, imenuje pset7.zip. Jaz grem za povečavo. Sem ustvaril drugi niz imenuje finalpaper.docx. In napisati mi funkcijo, da ko imenuje se dogaja, da samo natisnete Razširitve imena datoteke. Morda traja nekaj minut, da razmišljajo o tem, kako boš to naredil. Nekoliko bolj zahtevna kot zadnja, vendar uporaba je skoraj povsem enako. Ja. Torej napisati funkcijo imenovano podaljšanje da, če ti dam ime datoteke, če bi bil jaz, da vam pset7.zip-- I želim vam, da natisnete samo .zip. Če dam vam je všeč finalpaper.docx, samo natisnete .docx, samo razširitev katerega koli datoteke. To pravzaprav samo traja dve vrstic kode. Torej, poskusite da vidim, če vas morda lahko to storite v tem. Pravzaprav je samo traja eno vrstico kode. Ampak dve vrstici je verjetno bolj standardne. Kaj funkcija smo verjetno želeli poklicati? OBČINSTVO: strrchr. ANDI PENG: strrchr, desno. Ker smo iskali ob desni levi. Jaz ti ni dala fantje Primer takega, ampak če sem vam dal zgled, kot www.apple.com in sem želel Com, bi bilo na primer o tem, kje želite poklicati zadnjo instanco obdobja in ni prva, ne? Če ste bili klic strchr ga, bi vam jih dal Apple.com. Če ste poklicali strrchr ga, bi ti dal Com. In zato bodite previdni, na katerih ways-- v mojem primeru, lahko bi bilo verjetno samo napisana z uporabo strchr, saj obstaja samo ena pika. Toda v drugih primerih, da ne sme biti tako. In tako vedno poskušajo oblikovati kodo dobro, tako that-- ja? OBČINSTVO: Torej, v Primer si rekel, ko vam strrchr da bi vam .com ali pravkar prišel? ANDI PENG: To vam bo dala Com. OBČINSTVO: OK. ANDI PENG: Ja. Poudarja, da kadar jo našel. Ja. Morda 30 sekund? Ja. Vsakdo dobro ali morda malo več časa? Prikaži rok? Prikaži glav? Cool. Kdo želel, da mi je prvi vrstica kode za ta program? OBČINSTVO: [neslišno]. ANDI PENG: Torej, najprej, kaj je mogoče razdeliti. Torej, kaj je tip vrnitev strrchr? Pojdimo nazaj. strrchr, kaj je tip vrnitev? OBČINSTVO: Char * ANDI PENG: To je char *, kajne? Kar pomeni, da ste verjetno bo da želijo ustvariti nov char * k naravi prodajalne, kadarkoli je to vrnitvi, kajne? Ker če pokličete funkcija strrchr, to se dogaja, da vam kazalec kjerkoli je ugotovilo, da je zadnji čas, prav? Ampak boste želeli shranite, da nekje, kajne? In tako, kako bomo kodo ta v naš program? OBČINSTVO: Narediš char * [neslišno]. ANDI PENG: Yep. OBČINSTVO: [neslišno]. ANDI PENG: strrchr. Ja. Oh, tam izpustili r. OBČINSTVO: Ime datoteke [neslišno]. Kaj je to? Oh, to je samo to. ANDI PENG: Oh, to je samo to. Ja, žal. Moja napaka. Primeri se ni ujemalo. OBČINSTVO: In potem dot. ANDI PENG: Yup. Bodite previdni, ko fantje are-- tukaj, mi povečate. Tam gremo. Bodite previdni, ko fantje tipkanje, še posebej, če delaš samo char. To je zelo enostavno, da pomotoma samo narediti dvojne narekovaje, ne pa en sam. Da ne bo delovalo. Vaš prevajalnik se dogaja, da se pritožujejo. In vaša naloga je, samo ne bo teči. In zato bodite previdni, ko delaš stvari s znakov, da je apostrof. In tako ne to linijo Koda smisla za vsakogar? Smo ustvarili char * kazalec. Ker strrchr donosi nekaj tipa kazalec. In tako bomo za klic strchr o S, pri čemer je niz, datoteka ime, da smo mimo v. In iščemo zadnji primerek obdobje, ki je samo single quote dot enojni narekovaj. Ja. OBČINSTVO: Kdaj uporabite dvojne narekovaje in kdaj bomo uporabili enojne narekovaje? ANDI PENG: Ja. Torej dvojni narekovaji so uporablja vedno, ko vas imeti niz več kot le ena. Torej, če delaš strstr, ki je tisti, ki vas iskanje niz za nizom, vas bi ga prenese v dvojnih narekovajih. Ampak kadarkoli je to samo en sam znak, želite storiti enojne narekovaje. To je dobra stvar, da v mislih. Torej sedaj, da imamo kazalec, kaj bomo naredili s tem? Prosim vas, fantje, da tiskanjem, kajne? Torej [neslišno], ki jih želite daj mi vrstico kode? OBČINSTVO: printf-- ANDI PENG: Ja. OBČINSTVO: --you potrebujete držalo mesto. ANDI PENG: Yup. OBČINSTVO: Natisni imetniku mesto. Ne vem, kaj mesto imetnik vendar točke do njega. V REDU. Oglejmo preskočite, da je za zdaj takrat. OBČINSTVO: In potem comma-- ANDI PENG: Pointer, kajne? OBČINSTVO: Pointer, Ja. ANDI PENG: Torej nekakšen trik vprašanje, ima opraviti s kazalci in godala da smo nekako govorila že. Kakšno imetnika mestu počnemo potrebujete za kazalec za char *? OBČINSTVO: [neslišno]. ANDI PENG: Ja. To je lažje kot si mislite, da je. OBČINSTVO: String? ANDI PENG: To je samo niz, točno. Ker se spomnite strune v resnici ne obstajajo. Char * je točna ista stvar kot niz. In tako v resnici je to s je kaj bi bilo treba uporabiti vse skupaj. V REDU. Poglejmo, če smo lahko poskusite z izvajanjem tega. Naredimo podaljšanje make. Cool. Vi vidite, kako sem opravil v psset7.zip in finalpaper.docx, in to samo natisne .zip in .docx? Ima smisel? OK Torej, mislim, da v vašem poglej gor funkcija v vašem pset ste ga dogaja se vprašal, če je Niz je določen konec, moraš dati neko kodo napake. In tako bo to precej grozno. Ker če lahko ugotovimo kaj je razširitev, lahko nato primerjajo da Razširitev da vidim, če se ujema up z določeno podaljšanja. In potem se lahko vrnete sporočilo o napaki, kajne? Ja. OBČINSTVO: Torej, ne bomo morali dodati 1 ali kaj? Kazalec bo šel the-- ANDI PENG: Nope. OBČINSTVO: --point po njej. ANDI PENG: Ja. Poudarja točno kjer je bil pojav. Tako na primer tukaj, smo išče obdobje. Tako se dogaja, da se vrnete kazalec obdobju. In potem se dogaja, da natisnete izhajajoč na obdobje. Torej vam ni treba dodati 1. Kljub temu, da je to povsem v redu, da, če ste popolnoma prepričani, da nekako , da preizkusite tudi sami. Zgradite program vzorca. Ga preizkusiti sebe in videti, kje je tiskanje. To tudi ni slab način, da to storite. Cool. In to je zal veliko vse Imela sem za vas danes. Naredili smo veliko pset stvari danes. Torej, če ste v dvomih, kot so Rekel sem, vedno poglej gor string.h knjižnica za to pset. Tam se dogaja, da je veliko Funkcija notri, da je lahko koristna. Nekateri ne sme biti koristna. Jaz res ne vem. Wade skozi njo, pa je cel kup njih. strstr, strchr, strrchr so super, super koristno, kot tudi se strcpys in strcasecmps da smo že v uporabi. To je samo veliko o mesijanski okrog s strune, določanje, ali oni so enaki, pridobivanje stvari iz strun, in da bi lahko pravilno odpreti datoteke. To je veliko datoteko I / O. pset je res, da ni slabo. Boste vzeli poglej jo, jo naložite, in videli cel kup kode. Brez skrbi, koda, ki jo dejansko napisati, sploh ni slabo. Če ima kdo težave z njihovo Strežnik, pridi me videli po oddelku. Enkrat se opravičujem enkrat ne prinaša sladkarije za noč čarovnic. Ne vem, kaj je bilo narobe z mano. Ampak bomo imeli dvojni sladkarije naslednjič. In veliko sreče v vašem pset ta teden. Ja.