[Powered by Google Translate] [Savaitę 7]
[David J. Malan - Harvardo universiteto]
[Tai CS50. - CS50.TV]
Gerai. Sveiki sugrįžę. Tai CS50, o tai yra 7 savaitės pradžios.
Pora mažai pranešimų:
Pset5 dabar vyksta arba netrukus turi būti,
ir leiskite man pasakyti, gana garbingai, tai yra linkę būti tarp sunkiau
Žinoma, problema rinkinių, todėl leiskite man paminėti dabar
kad šią savaitę daugiau nei kada nors jums nereikia laukti, kol, tarkim, trečiadienio naktį
arba ketvirtadienis naktį pasinerti.
Tai tikrai įdomi pset. Mes manome, kad tai smagu.
Jei jūs iš tikrųjų gauti jį visiškai teisingas, ir ji tada iššūkis vadinamąją Big valdybą,
jūs turite galimybę, kad atitiktų Ratio kai aikštyno darbuotojų
ir kai kurie iš jūsų klasiokų.
Kas Big valdyba yra, kai jūs turite savo rašybos tikrintuvo veikimą,
galėsite eiti į cs50.net paleidus komandą,
grynai pasirinkti, ir tada suma laiko ir RAM suma ir daugiau
, kad jūs naudojate savo įgyvendinimo bus eksponuojami čia aikštyno puslapis.
Jūs pastebėsite, kad šie žmonės čia visa krūva yra išvardytos, kaip darbuotojų
nes per savaitgalį, darbuotojai maniau, kad būtų smagu pabandyti pranokti vienas kitą.
Taigi suprasti, kad tikslas čia yra ne pralenkti darbuotojus.
Net ir aš esu tik 13 numeriu.
Vien tik pasirinkti, bet tai galimybė pamatyti, kaip mažai RAM
ir kiek mažai CPU sekundes galite naudoti, vis-à-vis kai kurie iš jūsų klasiokų.
>> Ir aš pripažinti, kad Kevin Michael Schmid,
Šiuo metu numeris 1 poziciją kaip viena iš TFS,
tai įgyvendinti, kurį mes vadiname neįmanoma
atsižvelgiant į tai, kad jis naudoja beveik 0 RAM ir beveik 0 sekundžių pakrovimo.
Taigi, mes pasirūpinsime Kevin neprisijungę. [Juokas]
Yra tam tikrų įgūdžių, kad Kevin narys Janezas Potočnikas bandymo čia.
Vienas iš dalykų, mes manome, kad mes norime padaryti taip pat yra dabar CS50x savaitę vyksta,
ir jūs, vaikinai, yra tiek, kiek šio eksperimento dalis, kaip šie studentai.
Mes paprašėme juos kaip dalį savo pset0, kuris buvo taip pat pateikti Scratch projektą
palūkanos jų - žaidimas, interaktyvi meno kūrinys, animacija, ar kaip
1 - 2-minučių vaizdo, ar jie norėtų, sakydamas hello pasaulyje ir jie iš tikrųjų yra.
Aš maniau aš norėčiau pasidalinti su jumis, tik vaizdo įrašus, pora, kad iki šiol nebuvo pateiktos
nes mums, darbuotojų bent tai tikrai buvo įdomi
ir įkvepiantis žiūrėti šiuos žmonės iš viso pasaulio - šalys visame pasaulyje -
pritaikymas, visų dalykų, informatikos kursus internetu,
ar tai reiškia, kad jie nori tęsti savo studijas,
jie nori imtis savo karjerą į naują kryptį,
jie nori užpildyti spragas savo žiniomis,
todėl kai kurie iš tų pačių priežasčių, kad jus vaikinai galbūt čia buvo.
>> Taigi aš jums vieną tokį studentą čia. Jūs galite padidinti Volume tik šiek tiek.
Čia yra vienas iš mūsų studentų 1-minutės pateikimo.
Sveikas, pasauli. Esu pramonės inžinerijos čia, Malaga, Ispanija studentas.
Aš džiaugiamės apie šį internetinį kursą, nes aš myliu kompiuterių mokslo, aš tikrai,
ir aš tikrai vertiname, kad man ją tyrinėti.
Ir tai, kad galiu mokytis pats, visi jus vaikinai padaryti
bet vietoj to, kad Harvardo Esu Malagoje, kaip nuostabus tai?
Na, aš Fernando ir tai yra CS50. Žiūrėti jus vaikinai.
[Juokas] Kitas klipas, mes ypač patinka, jūs pamatysite, kad šis ponas anglų kalba yra ne toks stiprus.
Atrodo, kad jis turėjo tai mašina išvertė, todėl patys vertimai yra šiek tiek netobula,
bet tai buvo vienas iš mūsų pasirinkimą iki šiol, taip pat.
[♪ ♪]
Sveikas, pasauli. [Kalbėti japonų]
[Turiu pasveikinti japonų, nes mano anglų kalbos yra labai nepatikimas.]
[Aš atidaviau jums laišką iš Gifu mieste, Japonijoje.]
[Galiu būti studentas pirmą kartą per 20 metų, kaip galima matyti.]
[Aš esu labai dėkingas Harvardo universiteto, kurie suteikė man šią galimybę ir EDX.]
[Golfas yra gitara ir mano mėgstamiausias dalykas veikia.] [Juokas]
[♪ ♪]
Kodėl jūs manote, aš bandžiau dalyvauti cs50x.]
[Harvardo universiteto, tai mano ilgesys.]
, Ypač, jei aš esu toli gyveno Japonijoje.]
[Aš norėjau pabandyti iš karto žino, kad egzistuoja tokios EDX kada.]
[Ar ne manote, taigi jums nereikės susiję su mokymosi I amžiaus]
[CS50 yra mano ilgesys. Mano vardas yra Kazu, ir tai yra CS50.]
[♪ ♪] [plojimai ir visaip kitaip]
Kitas mūsų mėgstamiausia buvo šis argumentas čia nuo ko nors.
[♪ ♪] [Malan] "Google", kad, jei esate susipažinę su šiuo meme.
>> Ir tada galiausiai, pora kitų, kad gavo komandiruotų, kad galbūt laimėti žavinga apdovanojimą.
[Mokiniai] Aww! >> [Malan] Mes turime klausytis. Tai yra trumpas, todėl klausytis atidžiai.
[Moteriška garsiakalbis] Koks tavo vardas? >> Louie.
[Moteriška garsiakalbis] Kas tai? >> [Giggles] CS50. [Juokas]
[Malan] Jis padarė du užtrunka, nors.
Čia mes einame, paskutinis.
Mano vardas yra Louie, ir tai yra CS50.
[Juokiasi] Tai tada yra CS50x.
Ačiū visiems tiems iš jūsų, o kartu namuose
, kurie buvo patekę iki šiol.
Šiandien, galime daryti išvadą, kad mūsų diskusiją duomenų struktūras,
bent kai svarbiausias,
ir tada mes ir toliau mūsų pokalbį apie HTML ir web programavimas.
Iš tiesų, mes praleido pastaruosius maždaug septynias savaites, žiūri programavimo pagrindai -
algoritmai, duomenų struktūros, ir panašūs -
ir C, kaip jums gali tekti susidurti iki šiol,
nebūtinai yra labiausiai prieinama kalbų
su kuriuo būtų galima įgyvendinti kai kuriuos iš šių idėjų.
Ir taip pradėti šią savaitę, kitą savaitę ir tada,
mes pagaliau galės pereiti nuo C, kuris paprastai žinomas kaip gana žemo lygio kalba,
dalykų aukštesnio lygio, tarp jų PHP, JavaScript, ir kaip,
mes pamatysime remtis tų pačių pamokų, kad mes išmoko per pastaruosius keletą savaičių,
, bet jūs pamatysite, kad skelbiantis matricas ir maišos lenteles ir dalykų, pavyzdžiui, paieškos ir rūšiavimo
taip daug lengviau, nes kalbos patys pradėsite naudoti
taps galingas.
Bet pirmiausia, medžių taikymas.
Tai labai dažnas šių dienų, reikia suspausti informaciją.
Kokiame kontekste norite glaudinti kažkokį skaitmeninės informacijos?
>> Taip. >> [Studentas] Kai jums reikia siųsti jį per tinklą.
Taip, kai norite atsiųsti ką nors iš interneto.
Jei norite atsisiųsti didelį failą, jis puikiai tinka, jei kas nors iš kitos pusės
suspaustas šį failą, naudojant zip formatu arba kažką panašaus, kad
taip, kad jūs siunčiate mažiau, nei kitu atveju galėtų būti perduodami bitai.
Taigi, kaip jūs suspausti informaciją?
Viskas suvesta naudojant mažiau bitų nei reikalaujama pagal nutylėjimą.
Bet tai yra rūšies keistas dalykas, nes manau atgal į 0 ir 1 savaites
kai mes kalbėjome apie ASCII ir dvejetainius ir mes kalbėjome apie ASCII ypač
kaip naudojant 8 bitų atstovauti abėcėlės raidėmis
kad laiškas yra atstovaujama 65, mažosiomis yra numeris 97,
ir vis dėlto jūs atstovaujate 65 arba 97, jūs naudojate 7 ar 8 bitus.
Bet laimikis, kad yra keletas anglų abėcėlės raidės
kad yra ne toks populiarus kaip kiti.
Z yra ne visi, kad populiarus, Q yra ne visi, kad populiarus, bet ir E yra super populiarus.
Ir dar visus šiuos laiškus, pagal nutylėjimą pasaulis naudoja tą patį skaičių bitais, tik 8.
Taigi ar nebūtų buvę protingiau jei vietoj naudojant 8 bitų kiekvienos raidės,
net retai naudojama kaip Q ir Z,
ką daryti, jei mes mažiau bitų A ir E ir S ir populiariausių raidės
ir daugiau bitų mažiau populiarių messages,
idėja, tegul optimizuoti bendrai atveju,
kuris yra kompiuterių mokslo tema bando optimizuoti, kas nutiks, labiausiai
dalykų, kad, taip, gali atsitikti ir praleisti šiek tiek daugiau laiko, šiek tiek daugiau vietos
tačiau nebūtinai taip dažnai.
Taigi paimkime pavyzdį.
>> Tarkime, kad mes norime užkoduoti informaciją gana efektyviai.
Jums gali tekti užaugo žinant šiek tiek kažką apie Morzės abėcėle,
ir šansai yra, jūs nežinote, faktinis kodas,
bet jūs galite priminti, kad ji bent jau ši serija taškų ir brūkšnelių.
Tai yra gana efektyvūs kodavimas, ir pranešimas, kad populiariausia raidė - pavyzdžiui, E -
naudoja pypsi trumpiausias.
Morzės kodas yra visa informacija apie PYP-PYP-PYP-PYP-PYP-PYP ir turintis tonus
arba trumpiems laikotarpiams laiką arba ilgą laiką.
E, kaip žymimas taškas, yra super trumpas pyptelėjimas, tik pypsėjimas, ir kad sudarytų E.
Priešingai, T būtų ilgesnis pyptelėjimas, pavyzdžiui, pyptelėjimą [pailgina garso]
ir kad sudarytų T.
Bet tai dar gana trumpas, nes, priešingai, jei peržvelgsite Z,
išreikšti Z jūs einate pyptelėjimas, pyptelėjimas [ilgesnį garsas], pyptelėjimas, pyptelėjimas [trumpesnis garsas].
Todėl ilgiau, nes ji yra mažiau paplitęs.
Bet kabliuko, kad čia yra Morzės abėcėlė yra šiek tiek trūkumų
tuo, kad tai nėra karto decodable.
Pavyzdžiui, tarkime, kad jūs išgirsite kai vielos pyptelėjimą pabaigos [trumpas], pyptelėjimas [ilgai].
Kokią žinią aš tiesiog gauti? Taškas ir brūkšnys. Ką tai?
[Studentas] A. >> [Malan] Gal.
Taip pat gali būti E, T.
Kitaip tariant, Morzės abėcėlė, nors ji naudoja šį principą optimizuoti kampe bylą,
jis neturi būti ir tuoj pat Dekoduojamumas.
Tai reiškia, kad žmogaus, kuris klausos ar gauti šiuos taškus ir brūkšnelius
kažkaip išsiaiškinti, kur pertraukos tarp raidžių,
, todėl, jei jūs neturite žinoti, kur tos pertraukos, jums gali supainioti ET arba atvirkščiai.
>> Taigi, kas gali tai padaryti? Morzės abėcėle galima tiesiog pristabdyti tarp raidžių.
Bet pristabdžius rūšies skaitiklis spartumo dalykų visumos požiūriu.
Taigi, ką daryti, jei vietoj to, mes atėjo su kodu, ten, kur buvo ne tai bloga padėtis
kur E yra priešdėlis, pavyzdžiui,
Kitaip tariant, jei mes galime įsitikinti, kad modeliai yra dar trumpas populiariausių raidėmis
mažiau populiarių messages, bet ten nebūtų įmanoma supainioti?
Į Huffman vardu vyras prieš keletą metų išrado šią schemą, pavadintą Huffman kodavimas
kad iš tikrųjų naudoja vieną duomenų struktūrų, mes praleido šiek tiek laiko, kalbėti apie
praeitą savaitę, kad medžių, dvejetainiai medžių, konkrečiai -
dvejetainis medis, reiškia, kad ji turi ne daugiau kaip 2 vaikus.
Ji turi gal į kairę vaiką, gal teisę vaiką, ir viskas.
Taigi, tarkime, tik diskusijos dėlei, kad kas nors nori siųsti žinutę
kad atrodo taip. Tai visiška nesąmonė, bet tai sudaro Kaip, B, Cs, Ds ir Es.
Ir jeigu jūs iš tikrųjų skaičiuoti iki Kaip, B, Cs, Ds ir Es
ir tada padalinti iš visų raidžių,
tai mažai diagrama čia sako, kad 45% iš raidžių Es, 20% Kadangi
10% B, ir kt.
Taigi, kitaip tariant, įsivaizduokite, kad kotiruojamos eilutė yra
yra tik kai pranešimas, kad norite siųsti.
Taip atsitinka, kad nesąmonė, tik taip mes galime naudoti kaip raides, kaip įmanoma,
bet tai iš tiesų pasitvirtina, kad E išlieka populiariausia,
, B ir C yra mažiausiai populiarus, bent jau iš šių 5 abėcėlės raidės.
Taigi, kaip mes galime eiti apie tai ateina su koduotę,
dvejetainis kodavimas, 0s ir 1s modelis kiekvienam iš šių laiškų
tokiu būdu, kad E yra trumpas modelis, o gal B ir C yra šiek tiek ilgesnis modeliai,
dar kartą, idėja yra ta, kad mes norime naudoti mažiau bitai didžiąją laiko dalį
ir daugiau bitų tik vieną kartą, o.
Hafmano kodavimo, galite sukurti miško medžių.
Yra tarsi story line, kuri apima medžių, taip pat ir pastato juos.
Pradėkime.
>> Aš siūlau, kad jums pradėti su šiuo miško, taip sakant, iš 5 medžių,
kurių kiekviena yra gana kvailas medis.
Medis sudaro tik vieną mazgą,, išreikšta kaip čia apskritimu.
Taigi, kiekvienas iš šių dalykų gali būti C struct
ir viduje C struct gali būti plūdės, atstovaujanti dažnio skaičius
ir tada gal char ty raidę.
Todėl manau, kad kaip tik bet kokia sena C struct šių mazgų, tačiau, dabar, aukštesnį lygį.
Tai yra 5 medžiai, kiekvienas, kurie turi tik vieną mazgą miškas.
Hafmano Siūloma, kad mes pradėti derinti šiuos medžius
kad yra mažiausias dažnio skaičių į šiek tiek didesnis medžių
sujungiant jas su nauju šakninis mazgas.
Taigi čia iš raidžių, pastebėsite, kad būtų patogiau, aš surūšiuoti juos iš kairės į dešinę,
nors tai nėra būtina, ir pranešimas, kad mažiausi mazgai
šiuo metu yra 10% ir 10%.
Taigi Huffman pasiūlė, kad mes sujungti tuos 2 smulkiausius mazgų į naują medžio
įvedant naują patronuojančiai mazgas ir tada tos patronuojančios į kairę vaiką ir tinkamą kūdikio
kur B yra pasirinktinai į kairę ir C yra savavališkai teisę.
Ir tada Huffman taip pat pasiūlė, kad tegul dabar tiesiog manau, kad iš kairės vaiko
vieną iš šių medžių, visada taip, kuriai atstovauja 0
ir teisę vaikas visada atstovauja skaičiumi 1.
>> Nesvarbu, jei apversti juos taip ilgai, kaip jūs atitinka.
Taigi dabar mes turime keturis šio miško medžių.
Ir aš sakau: 4, nes dabar kairėje medis -
ir tai ne tiek daug, ta prasme, kad jis auga tokiu būdu medis
tai daugiau kaip šeimos medį, kur dabar yra 0,2 yra tarsi dviejų vaikų tėvų -
pastebėti, kad tos patronuojančios mes paruošiau 0,2.
Mes pridėjome dažnio dviejų vaikų skaičių ir atsižvelgiant į naujas mazgas, bendra suma.
Taigi dabar mes tiesiog pakartokite šį procesą.
Rasti du mažiausi mazgus ir tada sujungti juos į naują medžio
ir tada pakartokite šį procesą skatinančių.
Dabar mes turime kelis kandidatus, 20%, 15%, o dar 20%.
Tokiu atveju, mes turime nutraukti lygiąsias. Mes galime tai padaryti savavališkai.
Mes tiesiog reikia daryti nuosekliai.
Šiuo atveju, aš savavališkai eiti su kairėje,
ir dabar aš sujungti 20% ir 15%, man duoti naują tėvų vadinamas 35%,
kurio kairėje vaikas 0, kurio dešinė vaikas yra 1, ir dabar mes turime tik tris medžius miške.
Galite gali matyti, kur tai vyksta.
Jei mes pakartoti dar keletą kartų, mes ketiname turėti tik vieną didesnį medį,
kurio visi kraštai yra paženklinti 0s ir 1s.
Leiskite tai padaryti vėl.
35% to medžio šaknis. 20% ir 45%, todėl mes ketiname sujungti 35% ir 20%.
Dabar mes turime šį medį. Mes pridėti kartu, mes turime 55%.
Dabar ten tik du medžiai miške.
Mes darome tai vieną galutinį laiką, ir tikiuosi, matematiškai visi dažniai pridėti iki
, nes jie turi, nes mes skaičiuojamas juos nuo get-go pridėti iki 100%.
Ir dabar mes turime vieną medį.
Taigi tai yra Huffman kodavimas medis.
Jis rūšies užima nors ten nuvykti, žodžiu, tačiau tikrovė yra už linijos
rekursinis funkcija, jums galėtų statyti tai, ką iki gana greitai.
Taigi dabar mes turime vieną naują mazgą, ir visų šių vidinių mazgų buvo malloc'd
matyt, pakeliui.
Taigi, dabar šio medžio viršuje turime 100%, bet dabar pastebėti, mes turime kelias
šis naujas puikiai puikiai puikiai seneliai visiems puikiai puikiai provaikaičiai
apačioje, "kad visi lapai.
>> Ką mes ketiname padaryti dabar yra pasiūlyti, kad siekiant atstovauti "E" raide,
mes tiesiog naudoti skaičių 1. Kodėl?
Nes jei mes feed šį medį iš galutinio šaknies lapų žinomas kaip e,
mes laikomės tik vieną pranašumą, dešiniojo krašto, ir tai pažymėti žinoma viršutiniame dešiniajame 1.
Taigi potekstė čia Huffman, kad E koduotė dvejetainiu būti tik 1.
Ir tai pretty damn efektyvus. Tikrai negali gauti bet mažesnis nei, kad.
Priešingai, ketina būti atstovaujama, jei jums sekti logika,
, kas bitų, o ne modelis? 01.
Taigi, norint gauti pradėsime ne šaknis, ir mes einame į kairę ir tada mes eiti į dešinę,
, o tai reiškia, mes po 0 ir 1.
Todėl mes atstovauti laišką modelio 0 ir 1.
Ir dabar pastebėti, mes jau turime nedelsiant Dekoduojamumas turtą
kad mes neturėjome Morzės abėcėle.
Nors abi iš šių modelių yra gana trumpas - E yra 1 bitas, yra 2 bitai -
pastebėsite, kad jie negali būti supainiotas vieną ar kitą,
nes jei matote 1 jis gavo, E, jei matote 0 1 tai akivaizdžiai turite būti A.
Be to, tai, kas D? 001.
Kas yra C? 0001.
O kas tai yra B? 0000.
Ir dar kartą, nes visi iš raidžių, mes rūpinamės yra lapų
ir nė vienas iš jų rūšies tarpininkų kelio nuo šaknų iki lapų,
2 raidės skirtingas koduotes conflating rizika nėra
, nes visi iš šių bitų modelius yra deterministinis.
0000 visada bus B.
Yra joks mazgas kažkur tarp jų, kad galite sumaišyti vieną raidę kita.
Taigi, kas čia potekstė?
>> Populiariausias laiškas šiuo atveju E turi Dotarłeś trumpiausią kodavimą,
Įsigijo kitą trumpiausią kodavimą,
B ir C, kuri mes jau žinojo nuo get-go rūšies mažiausiai populiarus
dažnis 10% kiekvieno, jie įgijo ilgiausią kodavimą.
Ir kas iš to, tai reiškia, kad dabar yra, kad jei jūs norite siųsti pranešimą, kuris yra suspaustas
internetu arba elektroniniu paštu, arba iš panašių dirbinių,
, o ne naudojant standartinį ASCII, galite siųsti Huffman koduotą pranešimą
, pagal kurią, jei norite siųsti laišką E, galite siųsti tik vieną bitų.
Jei norite siųsti, galite atsiųsti 2 bitai, 01, užuot siuntę 8 bitai
po to dar 8 bitai, po to dar 8 bitai ir kt.
Bet yra kabliuko čia.
Tai nėra pakankamas, kad būtų tiesiog statyti šį medį ir tik tada pradėti siųsti iš Alice Bob
trumpesnis tiek modelis, eilutė iš ASCII,
nes Alisa taip pat turi informuoti Bob ką
Jei Bobas ir vyksta, kad būtų galima skaityti savo suspaustą pranešimą?
[Nesigirdi studentas atsakas] >> Kas tai?
[Nesigirdi studentas atsakas] >> Iš koks medis.
Arba dar tiksliau, ką šios koduotės,
ypač, nes per šią istoriją mes padarė sprendimą skambutį vienu metu.
Prisiminkite, kad mes turėjome savavališkai pasirinkti tarp 2 skirtingų 20% mazgų?
Taigi, tai ne tas atvejis, kad Bob, gavėjas, galite tiesiog atkurti savo medį
nes gal jis bus sukurti medį, vis tiek šiek tiek skirtingai nuo Alice.
Be to, Bobas nėra net žinoti, ką pradinis pranešimas
nes vienintelis dalykas, Alisa siunčia jį, žinoma, yra suspaustas pranešimą.
>> Taigi su slėginio panašaus Laimikis, kad, taip, Alisa gali sutaupyti visai daug bitais
siunčiant 1 E ir 01 ir tt,
tačiau ji taip pat turi informuoti Bob kartografavimo tarp raidžių ir bitai
nes jie negali aiškiai remtis tik ASCII nebėra, jei mes ne naudojant ASCII.
Todėl ji gali nusiųsti jam medį kažkaip
užsirašyti, laikyti jį kaip dvejetainiai duomenys ar kažkas panašaus -
arba tiesiog atsiųskite jam šiek tiek Cheat sheet, "Excel" failą, kuris rodo, kad parodyti.
Taigi suspaudimo efektyvumas tikrai daroma prielaida, jog pranešimai, kad jūs siunčiate
yra gana didelis, bent vidutinių,
nes jei jūs siunčiate super trumpą pranešimą,
jei jūs tiesiog norite siųsti pranešimą BAD, kuris atsitinka būti žodis, mes galime aiškiai čia,
B-D, jūs tikriausiai ketina naudoti mažiau bitų,
bet laimikis, jei jūs taip pat turite informuoti Bob, koks medis yra
ar tai, ką šios koduotės, jūs ketinate tikriausiai nusvertų visų santaupų,
turėti suspausto ko pradėti.
Taigi, ji iš tikrųjų gali būti atvejis, kad jei bandysite suspaudžiant
net ir su kažkuo, kaip zip ar failo formatus jums gali būti susipažinę su
gana mažos rinkmenos, net tuščias failai
kartais tie failai gali gauti daugiau ir ne mažesnis.
Bet realiai, tai atsitiks tik mažiems failo dydis,
todėl ji nesiruošia gigabaitų failą, kad 2 GB;
mes iš tikrųjų kalbame baitų arba tik pora kilobaitai.
>> Kai, pavyzdžiui, užtrauktuku programos yra pakankamai protingas suprasti, kad,
"Jūs ketinate išleisti daugiau bitų kompresoriai tai."
"Leiskite man ne nerimauti jį suglaudinti, jums visiems."
Taigi tai yra tik vienas būdas suspaudžiant teksto formatą.
Mes galime įgyvendinti kažką panašaus į tai, C.
Pavyzdžiui, čia yra tai, kaip mes galime atstovauti šio medžio mazgas
kur mes turime char simbolį, slankiojo dažnio vertė yra
ir kaip mes matėme su kitais mūsų duomenų struktūras, 2 Pointeriai
1 į kairę vaikui, 1 į dešinę, arba kurios gali būti lygus NULL,
bet jei ne, tai reiškia į kairę vaiko ir teisingu vaiko.
Taigi, tai tada Huffman kodavimas, ir tai yra vienas iš būdų, kad galite eiti apie suspaudžiant informaciją,
ir tai tikrai vienas iš labiausiai lengva įgyvendinti
, tarkime, praėjusios savaitės duomenų struktūras kontekste,
nors yra dar sudėtingesnius algoritmus
, kad galima padaryti dar sudėtingesnius mutacijų, dėl kurių jūsų duomenis.
Kokių nors klausimų, tada ant medžių, dvejetainiai medžiai, arba slėginio teksto?
[Studentas] Ar yra koks nors dviprasmybių, pavyzdžiui, jei [nesigirdi] padalinti į 01
tada 011 būtų dviprasmiškas, tiesa?
[Nesigirdi] >> Geras klausimas. Neaiškumų.
Leiskite apibendrinti, nurodydama šioje nuotraukoje čia.
Kadangi simbolius, suspaudžiant, atstovybės,
šio algoritmo apibrėžimą visada lieka lapai,
jums niekada netyčia tą patį modelį bitų kelių raidžių prefikso.
Taigi, kitaip tariant, esate susirūpinęs, tai skamba kaip, dviprasmybes, kylančių
, pagal kurį 001 B arba C arba kažką panašaus, kad pradžia pradžia gali būti.
Bet tai ne tas atvejis, nes pranešimas, kad visų abėcėlės raidžių, mes kodavimas
yra lapų.
>> Dviprasmiškumo gali kilti tik kaip Morzės abėcėle,
, jei, pavyzdžiui, C buvo kažkur palei kelią, nuo šaknų iki B
[Studentas] Teisė. Taigi, šiuo atveju, tarkim, 2 lapai. >> Pasakykite turi - Pasakykite, kad vėl.
[Studentas] Pasakykite 2 lapai, f ir g punktuose, ir tada G - >> Gerai. Bet ji negali.
Savaime negali turėti lapai F ir G, nes šių laiškų F ir G
būtų patys palieka kažkur B kairėje arba E teisė
Taigi pagal apibrėžimą, jie turi būti lapai.
Priešingu atveju, jūs esate visiškai teisus, mes ne išspręsti šią problemą, kad susiduria su Morzės kodas.
Geras klausimas. Kiti klausimai? Gerai.
Tai bitų sąvoka, it turns out, kad mes neturėjo galios, visi kartu, kad mes ne iš tikrųjų naudojamas
, kai ji atėjo į manipuliuoti šių 0s ir 1s.
Mes paklausėme apie tai vieną iš pirmųjų probleminių rinkinių:
ty, kaip jūs einate apie perėjimą didžiąsias į mažąsias arba atvirkščiai?
Arba, konkrečiau, vienas iš tų pirmųjų psets paprašė
kiek bitų jūs iš tikrųjų turi apversti, siekiant pakeisti į mažąsias arba atvirkščiai,?
Štai trumpas priminimas apie tai, ką 65 ir 97 atrodo kaip dvejetainis.
Ir net jei šis klausimas tarsi išblukęs savo atminties,
vėl čia galite pamatyti, kad, kiek bitų reikia apversta
pakeisti kapitalą į mažąsias? Tik vieną.
>> Jie skiriasi tik vienoje vietoje, trečias iš kairės bitų.
Kadangi turi 010, mažai 011.
Taigi, vienaip ar kitaip, mes turime tiesiog būtų galima apversti, kad šiek tiek,
tada ir mes galime pasinaudoti arba mažosiomis raidėmis.
Mes padarėme tai praeityje iš tikrųjų, naudojant, jei sąlygos
ir tikrinti, ar laiškas yra tarp kapitalo ir kapitalo Z,
išėjimai, pavyzdžiui, - + 26 ar kažkas panašaus.
Jūs tikriausiai padarė aritmetinę pakeisti abėcėlės raides.
Bet kas, jei galėtume tiesiog apversti, kad vieną tiek?
Kaip tu galėjai eiti apie vienas baitas verta bitų, todėl 8 bitai kaip 01.000.001 01.100.001?
Jei turėjo tuos bitai modelius, kaip mes galime eiti apie keičiasi tik vienas iš jų?
Ką daryti, jei mes pristatome geltonai čia šį kitą modelį bitais?
Jei aš darau visą geltonos styginių 0s išskyrus bitas, kad noriu pakeisti
ir tada aš įvesti naują operatorių, žinomas kaip Bitinis operatoriaus -
Bitinis ta prasme, kad ji veikia atskirų bitų,
ne visą baitą arba visus iš karto keturi baitai.
Ši vertikali juosta ten geltonos rodo, kad kas būtų, jei mes priimame kapitalo atstovavimą A
ir Bitinis ARBA su geltona bitų seka?
Kitaip tariant, prisiminkite mūsų diskusijų Būlio išraiškos nulio ir tada C
>> Daro boolean ar tai reiškia, kad būtų tiesa, bet pirmas dalykas, turi būti tiesa,
arba antras dalykas, turi būti tiesa, ar jie abu turi būti tiesa,
ir tada produkcija yra pati tiesa.
Šiuo atveju čia, ką mes gauname, jei mes priimame 0 "arba" Ed su 0? Neteisinga ar klaidingas?
Jis vis dar ne, taigi mažosiomis lieka taip, kaip tikėtasi.
Ką daryti, jei vietoj to, mes padaryti 1 arba 0?
Tai dabar dar 1, bet pastebėti, kas bręsti čia.
Jei pradėsime sostinę ir toliau "arba" atskirus bitus, kaip mes darome, čia,
0 arba geltona suteikia mums tai, ką čia apačioje? Tai suteikia mums 1.
Iš tikrųjų, tarkime, mes nežinojome, ką didžiąsias versija mažai iš tikrųjų buvo.
Eikime tai padaryti. Leiskite man pereiti atgal per čia.
Leiskite tai padaryti ir vėl. 0 arba 0 man duoda 0.
1 arba 0, suteikia man 1.
0 arba 1 suteikia man 1.
0 arba 0 man duoda 0. Kitą yra 0, kitą yra 0, kitą yra 0.
1 arba 0, suteikia man 1.
Ir, net jei mes ne iš anksto žinoti, ką mažosiomis buvo,
tiesiog "arba" su šio modelio, kad mes čia pateikiami geltonas bitų,
galite mažosiomis kapitalą prakeiktas, kad šiek tiek.
Mes panaudojome šią išraiška savaites: prakeiktas šiek tiek.
Kaip jūs iš tikrųjų tai padaryti programiškai?
Galite naudoti tai, kas paprastai vadinama kaukė, bitų sekos,
kad šiuo atveju tiesiog taip atsitinka atrodyti šį numerį čia,
ir tada jūs "arba" jis kartu naudojant šią naują C operatorius,
ne | |, naudoti vieną | ir jūs iš tiesų gauti šį atsakymą, nes čia kodėl?
Tai 1s vieta, 2s vieta, 4S, 8s, 16s, 32s.
Taigi paaiškėja, kad, jei vartojate didžioji raidė ir Bitinis ARBA sveikasis skaičius 32
nes sveikasis skaičius 32, kai jūs žiūrite į jį kaip bitai, atrodo taip,
tai reiškia, kad tu gali apversti tiek, kad jūs iš tikrųjų norite.
Ir panašiai - ir mes pažvelgti kodą tik akimirką -
Tarkime, mes norime eiti kita kryptimi.
>> Kaip tu iš mažosios raidės a su kapitalu? Kurie šiek tiek reikia pakeisti?
Tai tas pats.
Mes norime pakeisti, kad trečiųjų tiek iš 1 į 0.
Ir kaip galėtume eiti apie tai daryti?
Kaip mes išjungti šiek tiek? Su tuo, ką bitų modelis galėtume išjungti šiek tiek?
Ką daryti, jei mes rūšiuoti invertuotąjį kaukę?
Anksčiau, mes padarėme visą geltonos kaukė 0s
išskyrus vieną bitų norėjome įjungti,
ką daryti, jei šį kartą, mes visą kaukė 1s išskyrus bitų, kad mes norime, kad išjungtumėte
ir tada naudokite kas operatorių?
Ką daryti, jei mes "ir" dalykai? Leiskite pažvelgti.
Jei mes dabar flip, tarkime, kad vėl galiu sukurti kaukę, kad viskas 1s
išskyrus viena šiek tiek, kad aš noriu išjungti
ir tada, o ne "arba" balti skaičiai iki viršaus su geltona skaičių, čia,
ką daryti, jei aš vietoj "ir" juos kartu? Tai vadinama Bitinis.
Logiškai mąstant, tai tas pats dalykas, kaip Būlio.
Tai suteikia man 0 & 1 yra 0. Taip neteisinga ir teisinga, yra klaidinga.
Tiesa, ir tiesa yra tiesa.
Ir čia yra magija: TRUE ir FALSE, dabar ne, taigi mes jau išjungtas, kad šiek tiek.
Ir dabar istorijos poilsio yra gana paprasta.
Kadangi kaukė likusi dalis yra 1s, nesvarbu, kokie skaičiai yra baltos spalvos.
Kai "ir" kažkas su tiesa, jūs nesiruošia pakeisti savo vertę.
Jei tai tiesa, jis liks tiesa. Jei jis neteisingas, jis bus klaidingas.
>> Bet magija atsitiks, kai tai, kas buvo tiesa
ir tu tada "ir" ji klaidinga.
Tai turi išjungdami, kad šiek tiek.
Todėl šiek tiek paslaptingas.
Tegul realiai pažvelgti į tam tikrą kodą, kuris gali iš tikrųjų atrodo dar labiau paslaptingas,
bet tegul pažvelgti čia tolower.
Jei aš žiūriu tolower, iš kapitalo į mažąsias,
galime pamatyti, kaip mes galime įgyvendinti šią programą.
Štai pagrindinis, ir tai ne imtis bet kokių komandų eilutės argumentus.
Aš skelbiantis simbolių c raštą, kuriame vartotojas ketina įvesti in
Aš tada naudoti pažįstamas daryti, o linijos tiesiog įsitikinkite, kad vartotojas tikrai suteikia man kapitalą
, B, C. .. Z, todėl jie man kažką tarp A ir Z.
Ir dabar, ką aš darau čia?
Aš "arba" ING tai su 0x20, bet tai iš tikrųjų tas pats, kaip -
ir mes grįžti į tai per akimirką - 32.
Taigi dar kartą, 32 tai bitų čia modelis. Kodėl mes tai žinome?
Tiesiog manau, kad atgal į savaitę 0.
Tai 1s vieta, 2s vieta, 4S, 8s, 16s, 32s vieta.
Taigi tai geltona numeris atsitinka būti 32.
Galiu tada kaip char laišką čia, Bitinis "arba" Tas su prasme skaičius 32,
ir ką aš grįšiu? Mažosiomis versija, kad char.
Metu senumo, nors aš pareiškiau tai skirtingų pagrindinių notacijos.
Ką ši? >> [Studentas] Šešioliktainis.
[Malan] Tai atsitinka atstovauti šešioliktainis.
Mes ne kalbėjo apie šešioliktainis visi, kad daug,
bet tai tikrai patogu panašiais atvejais.
>> Nors ji ir atrodo sudėtingesnis ir daugiau, nors ji atrodo kaip 20 ir ne 32,
paaiškėja, kad šešioliktainis iš tiesų yra super patogu notacijos
nes šešioliktainis kas po 0x skaitmuo - o tai reiškia, nieko;
tai tiesiog žmogiška konvencija, kuri sako, kad čia ateina šešioliktainis skaičius -
kiekviena iš šių skaitmenų, 2 ir 0, patys gali būti atstovaujama
lygiai 4 bitai.
Taigi, jeigu mes tai darysime, leiskite man atverti teksto redaktoriumi čia - Weird automatinį užbaigimą
jei mes čia, šiek tiek teksto redaktorių skaičius 0x20 - čia yra 4 bitai, štai dar 4 bitai.
Darykime dešinė 4 bitai pirmas.
0, kai atstovaujama su 4 bitai yra kas? Super lengva. Tiesiog visi 0s.
Taigi, 4 bitai kaip 0s.
Kaip jūs atstovaujate 2? Tai buvo kartu, nes mes padarėme tai, bet tai 0100.
Todėl tai yra 1s vieta, tai yra 2s vieta, ir tada nesvarbu, ką kitos vietos.
Kitaip tariant, šešioliktainis jūs galite pasakyti, 0x20,
tačiau, jei jūs tada galvoti apie tai, kas yra 2, ir kaip jis atstovavo dvejetainiu,
kas yra 0, o kaip jis atstovavo dvejetainiu,
atsakymai į šiuos klausimus yra tai ir tai, atitinkamai.
Taigi, 0x20 atsitinka atstovauti šis 8 bitų modelis,
o būtent kaukė, kad mes norėjome.
Taigi tai yra šiuo metu tik proto mankšta,
tačiau tikrovė yra tokia, naudojant kodą, tai paprastai labiau įprasta rašyti konstantas, kaip šis
šešioliktainis, nes tada programuotojas gali gana lengvai,
net jei tai reikalauja šiek tiek popieriaus ir pieštuką, išsiaiškinti, kas, kad bitų modelis
, nes galite ne tik išreikšti 0s ir 1s paprastai kodą.
Jūs negalite eiti 00.010 ir kt.
>> Jūs turite pasirinkti dešimtainių arba šešioliktainis ar aštuntainė ar kitų žymėjimai.
Dauguma žmonių linkę pasirinkti šešioliktainis tiesiog todėl, kad kiekvienas skaitmuo rodo 4 bitai
ir jūs galite tai padaryti greitai matematikos.
Ir aš jums pamojuoti savo jėgas toupper, kuris yra beveik tas pats, tai atrodo beveik identiškas.
Toupper atsitinka naudoti arba operatorius, bet greičiau šį vaikiną ir DF.
Ką df? DF? Kas nors? >> [Studentas] 255.
255? Ne 255. , Kad būtų ir toliau.
Mes palikti šį vieną, nes truputį pasimankštinti.
Bet jei jūs einate nuo 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ir tai, kas ateina po 9?
Mes natūra iš dešimtainių skaitmenų, bet šešioliktainis kas ateina po 9?
[Studentas]. >> Taigi, a, b, c, d,.
Galite išsiaiškinti, iš ten kokia bitų d tikrųjų atstovauja modelis.
Ir jei mes padaryti matematiką, mes pamatysime, kad jūs galų gale gauti atgal kaukė yra identiškas.
Tai f, visi 1s, o tai yra d. Taigi df šią kaukę. Gerai.
Ir galiausiai, kad viskas garso super, super techninę,
bet manau, mes norėjau parašyti programa, kuri daro tai.
Leiskite man eiti į priekį ir padaryti dvejetainis, kuris yra į failą pavadinimu binary.c programa.
O dabar leiskite man paleisti dvejetainis ir duok man ne neigiamas sveikasis.
Pradėkime lengva ir įrašykite 0.
Tai dabar yra programa, kuri spausdina savo sveikąjį skaičių dvejetaine sistema.
Taigi, jei aš vėl žaisti šį žaidimą ir įvesti tik 1, turėčiau gauti 32-bit atstovavimą 1.
Jei aš tai padaryti ir vėl su 2, turėčiau gauti, kad.
Jei aš tai padaryti 7, turėčiau gauti keletą 1s pabaigoje ir kt.
Pasirodo, aš paminėti tai, nes su Bitinis operacijas
jūs iš tikrųjų galite padaryti vieną dalyką, taip pat.
Šios kaukės galite sukurti dinamiškai.
Pažvelkite į šį vieną galutinį pavyzdžiui, su Bitinis operacijas.
Čia yra pirmoji dalis kodo, greitai vartotojo numerį,
o taip pat reikalauja, kad jūs suteikiate man ne neigiamas sveikasis.
Taip, kad tarsi senosios mokyklos dalykų.
Bet čia yra kažkas, kad rūšies įdomus.
>> Kaip aš galiu eiti apie spausdinant dvejetainis skaičius?
Aš pirmą kartą pakartoti nuo to, ką į tai, ką?
Kas yra int dydis tipiškai, bent jau prietaiso? >> [Studentas] 4.
Tai 4. Taigi, 4 * 8 yra 32 - 1 yra 31.
Taigi, jei aš pradedu skaičiuoti nuo 31, kuri atstovauja, it turns out,
tik konceptualiai, 31-bitų arba aukščiausios kategorijos bitų, tai čia vaikinas,
kadangi tai bus bitų 0.
Taigi tai yra šiek tiek 01 ... bitų 31.
Taigi, kas yra šis kodas daro?
Pastebėsite tai linijos, net jei ji atrodo paslaptingas, lygiai iteravimu nuo 31 žemyn iki 0. Štai ir viskas.
Taigi dabar įdomiausia dalis turi būti šių 5 eilučių čia.
Atkreipkite dėmesį, kad šioje eilutėje aš skelbiantis kintamasis vadinamas kaukė
turi būti suderinti su mūsų istorija šių geltonų numerių.
Ir tada, kas tai daro?
Tai dar vienas Bitinis operatorius, mes dar nematėte anksčiau, greičiausiai.
Tai Left Shift operatorius.
Šis operatorius daro.
Čia yra skaičius 1, o jei jūs darote i Left Shift Kairysis Shift
ką jūs manote, kad turi daryti poveikį individualiems 1?
Pažodžiui perkelia jį per.
Numeris 1 todėl, jei yra tai, ką jūs turite kairėje ir pradėdami Inicijuojama i iki 31,
kas tai ketinate daryti? Ji ketina priimti šį skaičių 1 ir pereiti 31 vietų čia.
Ir todėl, kad akivaizdu, jokie kiti skaitmenys, kodėl ji,
tas bus pagal nutylėjimą pakeisti 0s.
Taigi, jūs pradėsite su 1 numeriu, kuris, žinoma, atrodo taip -
ir leiskite man atkreipti jį čia centre.
Ir tada, kaip jums perkelti daiktus į kairę, šis vaikinas iš esmės eina šiuo keliu.
Tačiau, kaip greitai, kaip jūs darote, kad 0 bus užpildyti.
Jei jums pereiti antrą kartą, jis eina šiuo keliu, o kitas 0 pasireiškia užpildyti
>> Jums pereiti jį dar kartą ir tada kita 0 pasireiškia užpildyti
Taigi, jei jūs šį 1 << 31 vietų dalykas, jūs galų gale gauti kaukę
, yra 32 simbolių, kairiausias vienas iš kurių yra 1,
visos likusios kurių yra 0.
Ir paaiškėja, kaip panaikinti, perkeliant numerį į kairę, kaip šis
taip pat atsitiktinai, o kartais ir patogiai,
turi daryti tai, ką iki šio skaičiaus? >> [Studentas] padvigubinti.
Padvigubinti, nes kiekvienas Skilčių - 1s vieta, 2s vieta, 4s vieta,
8s vieta, 16 vieta - they're visą dubliavimas, kaip jūs einate į kairę.
Arba, tiksliau, kai jums perkelti 1s jūs ketinate baigti padvigubinti skaičiaus vertę.
Jūs galite baigti daryti įdomias transformacijas skaitmenų
perkeliant viską tokiu būdu jėgų, 2.
Taigi, kaip tai veikia?
Tai tada duoda man kaukę, kad viskas, išskyrus 1 būtent toje vietoje, noriu, kad jis 0s,
ir tada ši išraiška, kuri yra pavogta iš toupper.c,
tik sakau, skaičių n, kad vartotojas turi įvesti,
"Ir" su ta kaukė, ir tai, ką jūs ketinate gauti?
Jūs ketinate gauti 1, jei yra 1, tame kaukėtas vietoje,
ar jūs ketinate gauti 0, jei ten nėra.
Ir taip ši programa iš tikrųjų jis turi kilpą,
ir jis sukuria kaukę su 1 čia, tada 1 čia, tada čia 1
ir ji naudoja šią Bitinis ir Trick pasakyti, yra 1 bitas į vartotojo įvestį čia?
>> Ar yra 1 bitas vartotojo įvesties čia? Ir jei taip, pažodžiui spausdinti 1, kitas spausdinti 0.
Mes tai darome su int tik todėl, kad kodėl mes darome 32 bitus, o ne 8,
bet tai, ką mes įdiegėme tada tai Bitinis Ir tai Bitinis ARBA
ir tai Left Shift operatorius, kuris ne dažnai siaubingai naudingas,
tačiau paaiškėja, jie gali būti.
Iš tiesų, jei jums buvo sudaryti kažką panašaus į loginę masyvo
tiesiog atstovauti true arba false, manau, kad jūs norėjo sekti, ar
kambarys pilnas iš 300 studentų yra,
jums gali paskelbti, tipo 300 dydžio masyvas, bool, kad jūs gaunate 300 bools,
ir jūs galite nustatyti kiekviena tiesa, jei kas nors čia ir false kitaip.
Kodėl taip yra, kad duomenų struktūros vaizdas neefektyvus?
Kas blogai apie tai duomenų struktūra, 300 bools masyvo dizainas?
Kas yra bool, iš tiesų, po kapotu?
Tai taip pat yra kažkas, kad gali būti nesusipažinę.
Pasirodo, ten yra ne bool.
Atsimenu, mes tarsi sukurta, kad su cs50.h failą,
, kuri pati apima standartinį Bool.
C rūšies kvailas, nors, kai jis ateina į Bool.
Jis naudoja 8 bitus kiekvienas bool, kuris yra visiškai kainuojančio
nes akivaizdu, kiek bitų tu turi bool? Tik 1.
Taigi paaiškėja, kad, jei dabar jūs turite galimybę su Bitinis operatorių
manipuliuoti atskirus bitus net ir char, net vieną baitą,
it turns out, gali sumažėti atminties reikia vaizduoti kažką kvailas
kaip tą lankomumo stiliaus duomenų struktūros iš koeficiento 8.
Vietoj to, naudojant 8 bitų atstovauti true arba false, galima tiesiog naudoti vieną
naudojant vieną baitą visų aštuonių studentų į klasę
ir perjungti 0-1 individualius bitų naudojant šių žemo lygio triukų rūšių.
Kad tikrai nutraukti energijos. Ar yra kokių nors klausimų apie Bitinis operacijas?
>> Taip. >> [Studentas] Ar yra išimtinė arba operatorius?
Taip. Yra išimtinė arba operatorius, kad atrodo taip, ^, morkos simbolis,
, o tai reiškia tik pirmas dalykas, ar antras dalykas, gali būti, kad išėjimo signalas 1 1.
Yra taip pat ne, ~, kuris leis jums apversti 0 iki 1 arba atvirkščiai, taip pat.
Ir ten pat teisę operatorius keičiamas, >>, kuris yra matėme priešais.
Gerai. Paimkime dalykų į aukštesnį lygį.
Mes pradėjome kalbėti apie tekstą ir tada jį suglaudinti,
ir sudaro su mažiau bitų tekstą;
mes kalbėjome šiek tiek apie tai, kaip mes dabar gali pradėti manipuliuoti dalykų, dėl Bitinis lygiu.
Tegul dabar padidinti atgal iki 10.000 pėdų atstovavimo
daugiau sudėtingų dalykų, pavyzdžiui, grafika.
Čia mes turime su Vokietijos vėliava, čia mes turime vieną Prancūzijos.
Tai gali būti atstovaujama failų formatų, kuriuos gali žinoti - Gif, pavyzdžiui.
Jei jūs kada nors matė vaizdą internete, kad baigiasi. Gif,
tai Graphics Interchange Format.
Šios dvi vėliavas čia Rūšiuoti paskolinti save suspaudimo
Kas galbūt akivaizdžios priežasties? >> [Nesigirdi studentas atsakas]
Yra daug pasikartojimų, tiesa?
Kad galėtumėte siųsti Vokietijos vėliava, galvoti apie tai, kaip vaizdas ekrane
atsarginę savo Scratch dienų.
Jūs tikriausiai pamenate, kad yra atskirų taškų ar taškų, kurie sudaro vaizdą.
>> Yra visa eilė juodų taškelių, o kita visa eilė juodų taškelių.
Yra eilių juodų taškų, kad mes galėtume pamatyti, jei mes tikrai Mastelis krūva,
panašiai kaip, kai mes Mastelis Rob veido Photoshop.
Kuo greičiau mes turime giliau ir giliau ir giliau į atvaizdo,
jūs pradėjote matyti pixelation, visi kvadratų, kad šiuo atveju sudaro savo akis.
Čia tas pats sandoris. Jei mes Mastelis gana didelis, jums reikės atskirų taškų.
Na, tai yra rūšies bitų švaistymas.
, Jei trečdalis vėliava yra juoda ir trečdalis vėliava yra geltona ir tt,
kodėl mes negalime kažkaip suspausti šią vėliavą?
Ir net Prancūzijos vėliava gali būti suspausta, nors modelis yra šiek tiek kitokia.
Pasirodo, GIF failo formatas yra lossless suspaudimo formatas,
o tai reiškia, galite imtis vaizdą, pavyzdžiui, Vokietijos vėliava,
jūs galite išmesti savo bitų daug neprarandant kokybės.
Tai Priešingai kažką panašaus JPEG,
, su kuriais daugelis iš mūsų tikriausiai yra labiau susipažinę.
"Facebook" nuotraukos ir "Flickr" nuotraukų ir panašūs
beveik visada išsaugoti kaip JPEG, kai jie įkėlė
bet JPEG praradimu - praradimu - formatas, kuriuo išmesti bitai
bet jūs taip pat išmetame kokybę.
Ir todėl, jei jūs suspausti nuotraukas su Photoshop arba įkelti juos į "Facebook"
arba juos tikrai Crappy telefonas,
žinote, kad vaizdas pradeda gauti labai suteptas ir pixelated,
ir kad todėl, kad ji yra suspausta iki kompiuterio ar telefono
tiesiog mesti informaciją iš karto.
Bet GIF yra nuostabi, kad ji gali naudoti mažiau bitų nei jis gali pagal nutylėjimą
neprarandant jokios informacijos.
>> Ir tai iš esmės daro taip.
, O ne parduotuvėje, pavyzdžiui, BMP failą RGB trigubas Juodas, Juodas, Juodas, Juodas,
juoda, juoda, juoda, juoda, juoda, juoda, juoda, juoda ir tt,
o, GIF formatu ketina pasakyti, "Juoda"
ir tada ", pakartokite tai 100 kartų", ar kažkas panašaus.
"Juoda, pakartokite tai 100 kartų, juodos, pakartokite tai 100 kartų ..."
"Geltona, pakartokite tai 100 kartų."
Ir taip ji prisimena, iš esmės, kairiausias pikselių
ir tada koduoja kažkaip vėl ir vėl kartoti, kad pikselių sąvoką.
Taigi, GIF tada gali suspausti neprarandant jokios informacijos.
Bet jei jūs turėjo atspėti, jei tai yra algoritmas, kuris Gif naudojimą,
, kuris iš šių vėliavų, net jei jie atrodo vienodi dydžio,
bus mažesnis, kai diske saugomas GIF? >> [Studentas] Vokietija.
Vokietija bus mažesni? Kodėl?
[Studentas], nes galite tai pakartoti, daug, daug kartų horizontaliai
ir tada galite pakartoti dar kartą. >> Būtent.
Nes žmonės, kurie išrado GIF tiesiog rūšies savavališkai nusprendė
kad kartojimas bus suderinti horizontaliai, o ne į šonus.
Yra daug daugiau kartojimas šonus čia nei su Prancūzijos vėliava Vokietijos vėliava.
Taigi, jei mes iš tikrųjų atverti mano kietajame diske aplanką, kuriame yra šių GIF,
jūs iš tikrųjų galite pamatyti, kad čia yra Vokietijos vėliava 2 kilobaitai ir Prancūzijos yra 4 kilobaitai.
Taip atsitinka būti sutapimas, kad vienas yra du kartus kito,
bet tai iš tikrųjų, kad Prancūzijos vėliava yra daug didesnis.
>> Net jei mes kalbame čia apie grafika, gali kreiptis į tas pačias idėjas
ne dalykų, pavyzdžiui, vėliavomis, bet vaizdai, kurie yra šiek tiek sudėtingesnis.
Pavartojus per nuotrauką obuolių, tikrai yra daug dubliavimo,
taip kažkaip galėtume prisiminti, kad numatytasis fonas yra mėlynas
o ne, kaip dešinėje turima informacija rodo,
turite prisiminti, kad šioje nuotraukoje kiekvieno vaizdo taško spalvą.
Taigi, mes galime mesti bitai nuvyksite neprarandant informacijos.
Apple "vis dar atrodo taip pat.
Šiame pavyzdyje čia, jūs galite pamatyti, kas vyksta filme.
Tai sudaro senosios mokyklos kino ritės, viršutiniame atvaizdą ten
turite vairuoti namo praeityje RV ir medis.
Ir, kad van diskai praeityje iš kairės į dešinę, kas akivaizdžiai nėra kinta?
Namas yra nesiruošia niekur, ir medis nesiruošia niekur.
Vienintelis dalykas, kuris juda yra šiuo atveju van.
Taigi, kaip Bendroji informacija Nepakitęs rodo, ką jūs galite padaryti filmus
panašiai tiesiog išmesti informaciją, kuri nekeičia tarp rėmų.
Tai paprastai žinomas kaip interframe suspaudimo
, pagal kurią, jei šis rėmas atrodo beveik identiška šiai,
tegul ne vargintis saugoti diske bet identiškos informacijos
šių tarpinių kadrų, galime naudoti tik vieną kartą, o pagrindinius rėmus
, kad iš tikrųjų, laikyti šią informaciją Gausiai lygiai taip pat šiek tiek normalumas patikrinti.
>> Priešingai, kitas požiūris į suspaudžiant vaizdo šiame antrosios ir mažesnė, pavyzdžiui čia,
kur, o ne parduotuvėje 30 kadrų, kodėl ne jūs tiesiog laikyti 15 kadrų per sekundę, o ne?
, O ne filmo natūra teka gražiai, puikiai,
tai gali atrodyti kaip ji mikčiojimas šiek tiek, šiek tiek senas mokyklos,
tačiau grynasis poveikis bus naudoti daug mažiau bitų nei priešingu atveju gali būti būtina.
Taigi, kur gi tai tada palikti?
Kad buvo panaikinti tiek kur kitur, galite eiti su suspaudimo.
Apie tai daugiau, imtis klasės, kaip CS175 čia.
Štai dar vienas pavyzdys, kaip vaizdo.
Jei bitė yra vienintelis dalykas, juda,
jūs galite iš tikrųjų išmesti informaciją tose vidurinių rėmų
nes gėlių ir dangus ir lapai nesikeičia.
Bet tegul dabar apsvarstyti vieną dalyką.
Per ateinančius 5 minučių mes palikti C už amžinai paskaitos? Taip. Ne psets nors.
Paskutinis pasakojimas apie C ir tada mes gauname labai seksualus stuff
dalyvauja HTML ir web ir woo-hoo. Gerai.
Čia mes einame. Štai motyvacija.
Pasirodo, visą šį laiką, kai mes buvo raštu programas, mes paleisti Apsukite metalinis garsas.
Ir Apsukite metalinis garsas, mes pasakyti, nes pirmą savaitę beveik, mano šaltinio kodą
ir paverčia jį į objekto kodo.
Tai užtrunka C ir konvertuoja jį į 0s ir 1s.
Aš rūšies gulėti jums per kelias savaites, nes tai ne visai taip paprasta, kaip kad.
>> Yra daug daugiau vyksta po gaubtu, kai paleidžiate programą panašaus Apsukite metalinis garsas.
Sudarant programą iš tiesų, iš tiesų gali būti apibendrinti
kaip jūs tikriausiai pamenate, kad Rob vaizdo kompiliatorius,
į šių 4 žingsnių: išankstinis apdorojimas, sudarant pati, montavimas, ir susiejimas.
Bet mes klasėje ir dauguma žmonių visame pasaulyje paprastai apibendrinti visus šiuos veiksmus
kaip tik "kompiliavimas."
Tačiau jei mes pradėsime su šaltinio kodu, kaip šis, priminti, tai galbūt paprasčiausias C programa
parašiau iki šiol, priminti, kad kai surinkti ji baigiasi atrodo taip.
Bet ten iš tikrųjų tarpinis žingsnis, ir šie veiksmai yra taip.
Pirmasis yra tai, ką pačiame viršuje tai ir dauguma mūsų programas,
# Include
Ką # include padaryti už mus?
Jis į mano bylą, kad gana daug kopijos ir pastos stdio.h turinys kodėl?
Kodėl aš priežiūrą apie turinį stdio.h? Kas ten interesų?
Printf deklaracija, jos prototipas, kad kompiliatorius žino, ką aš turiu galvoje
kai aš paminėti šią funkciją printf.
Taigi 1 žingsnį rengiant išankstinio apdorojimo, kuriuo kaip Apsukite metalinis garsas programa
arba kai pagalbininkas programa, kuri Apsukite metalinis garsas ateina su nuskaito kodą iš viršaus į apačią,
kairės į dešinę, ir bet kada, jis mato # simbolį kaip įtraukti raktinių žodžių,
ji atlieka šią operaciją, kopijuoti ir įklijuoti į savo failą šiuo atveju stdio.h.
Tai 1 žingsnis.
Tada jūs turite daug didesnę C bylą dėl didžiulio kopijuoti, įklijuoti darbo, kad tik atsitiko.
>> 2 žingsnis Dabar yra kompiliavimas.
Tačiau paaiškėja, sudarant trunka šaltinio kodą, kuris atrodo taip
ir paverčia jį į kažką, kad atrodo taip,
tiems, kurie susipažinę yra vadinama? >> [Studentas] asamblėja. >> Asemblerio kalba.
Iš tikrųjų tai yra kažkas, jei vartojate CS61 jums pasinerti į išsamiau.
Ji yra maždaug taip arti, kaip jūs galite gauti raštu 0s ir 1s save
bet raštu dalykų taip, kad vis dar leidžia bent šiek tiek prasmės.
Tai yra mašina instrukcijos, ir jei mes slinkite žemyn iki pagrindinės funkcijos,
pastebėsite, kad yra tai stumti nurodymas, perkelti mokymą, atimti mokymą,
skambinti pamokymų ir kt.
Kai išgirsite, kad jūsų kompiuteris turi "Intel Inside,
turite Intel CPU jūsų Mac arba PC, ką tai reiškia?
CPU yra integruota įmonės, pavyzdžiui, "Intel suprasti tam tikras komandas.
Jie neturi jokio supratimo, kokių funkcijų, pavyzdžiui, apsikeitimo sandorio arba pagrindinių per se,
bet jie žinoti, ką labai žemo lygio instrukcijos, kaip pridėti, atimti, stumti,
perkelti, ir kt.
Taigi, kai jūs surinkti C kodą į Asemblerio kalba,
jūsų labai patogi atrodantis kodas yra konvertuojamas į kažką, kad atrodo taip,
kad pažodžiui juda baitų arba 4 baitų aplink tokių mažų vienetų ir iš procesoriaus.
Bet pagaliau, kai Apsukite metalinis garsas yra pasirengusi priimti šį atstovavimą savo programą
į 0s ir 1s, tada žingsnelis, vadinamas montavimas atsitinka,
o tai vėl viskas vyksta akimoju, kai veikia Apsukite metalinis garsas.
Mes pradėti čia, išveda failą panašaus į tai, ir tada ji konvertuoja jį į šių 0s ir 1s.
Ir, jei norite grįžti tam tikru momentu ir realiai pamatyti kaip tai veikia praktikoje,
jei aš einu į hello1.c tai yra viena iš pirmųjų programų, mes pažvelgė -
paprastai mes sudaryti šį Apsukite metalinis garsas hello1.c, o tai suteikia mums a.out.
Tačiau jeigu jums, o ne suteikti jai-S vėliava, ką gausite hello1.s
, ir jūs iš tikrųjų matyti Asemblerio kalba.
>> Darau tai labai trumpa programa, tačiau, jei jūs einate atgal scramble
panaudoti ar bet kokia programa jūs parašėte ir tiesiog iš smalsumo
norite pamatyti, ką ji iš tikrųjų atrodo, kas iš tikrųjų įtraukti į procesoriaus,
galite naudoti, kad, nepriklausomai nuo laivo vėliavos Apsukite metalinis garsas.
Bet tada galiausiai, vis dar vienas kabliuko.
Čia yra 0s ir 1s, kad atstovauti savo įgyvendinimą Hello, world.
Bet aš naudojamas kažkieno funkciją savo programą.
Taigi, nors procesas buvo aš hello.c
jis bus surinkti į surinkimo kodą, ir tada ji bus surinkti į 0s ir 1s,
tik 0s ir 1s, kurie yra išvedamas Šiuo metu
yra tas, kad rezultatai iš mano kodas.
Bet asmuo, kuris parašė printf, jie prieš 20 metų parengė savo kodą
ir jis jau įdiegtas kažkur ant prietaiso,
todėl mes kažkaip sujungti jo su mano 0s ir 1s 0s ir 1s,
ir tai veda mus į 4-ojo ir galutinis žingsnis kaupti, žinomas kaip susiejimas.
Taigi kairėje pusėje, mes turime tą patį vaizdą, kaip ir anksčiau:
hello.c tampa surinkimas kodas tampa 0s ir 1s.
Bet priminti, kad aš naudojo standartinę I / O lib mano kodas,
, o tai reiškia, kad kažkur kompiuteryje yra failas, kuris vadinamas stdio.c
arba bent jau parengė jos redakcija, nes kažkas prieš keletą metų
parengė stdio.c į surenkant kodą ir tada visa krūva 0s ir 1s.
Tai yra tai, kas žinoma kaip statinis ar dinaminis biblioteka.
Tai kai failas sėdi kažkur į prietaisą.
>> Bet galiausiai, aš imtis savo 0s ir 1s ir to asmens 0s ir 1s
ir kažkaip sujungti juos, tiesiog juos suderinti 0s ir 1s
į vieną failą pavadinimu a.out arba HELLO1 ar kokia Aš pakvietė Mano programos
taip, kad galutinis rezultatas turi visus 1s ir 0s, turėtų rašyti savo programą.
Taigi šį semestrą visą šį laiką, kai buvote naudojant Apsukite metalinis garsas
ir dar neseniai padaryti norint paleisti Apsukite metalinis garsas,
visus šiuos veiksmus buvo vyksta Rūšiuoti akimirksniu, bet labai sąmoningai.
Ir todėl, jei jūs ir toliau informatikos, ty CS61,
tai sluoksnis, kad jūs ir toliau žievelės atgal ne ten
kalbame apie efektyvumą, užtikrinti saugumą, ir šių žemesnio lygio informacijos.
Bet su tuo, mes ruošiamės palikti už C.
Eikime į priekį ir imtis mūsų 5-minučių pertrauką,
ir kai mes einame atgal: internetas.
Gerai. Mes atgal.
Dabar mes pradedame ieškoti ne tik HTML, nes, kaip pamatysite,
HTML pati iš tiesų yra gana paprasta
bet tikrai ne interneto programavimo apskritai, tinklų kūrimas, apskritai,
ir kaip visos šios technologijos ateiti kartu
leisti mums sukurti daug sudėtingesnes programas ant interneto
nei iki šiol mums pavyko šių juoda ir balta langai.
Iš tiesų, nors šį semestrą taško mes santykinai mažiau laiko praleisti
PHP, HTML, CSS, JavaScript, SQL ir daugiau,
dauguma studentų, galų gale daryti galutinius projektus, kurie yra žiniatinklio
nes kaip pamatysite, fonas dabar jūs turite C
yra labai daug šių aukštesnio lygio kalbų.
>> Ir kaip jums pradėti galvoti apie savo galutinį projektą,
, kuri, panašiai kaip problemą, 0, kur buvo skatinami
padaryti, dauguma nieko jums įdomūs nulio
galutinis projektas yra jūsų galimybė imtis savo naujai atrastą žinių ir išminties C
arba PHP arba JavaScript ar pan iš už nugaros
ir sukurti jūsų pačių programinė įranga gali matyti visas pasaulis.
Ir sėklos jums idėjų, žinau, kad jūs galite galvą čia, projects.cs50.net.
Kiekvienais metais, mes prašyti idėjų iš dėstytojų ir kitų darbuotojų bei studentų grupės dėl kampusie
tiesiog pateikti savo idėjų, įdomių dalykų, kad gali būti išspręsta naudojant kompiuterius,
naudojant svetainių, naudojant programinę įrangą.
Taigi, jei esate stengiasi sugalvoti su savo idėja,
visomis priemonėmis slinkti idėjų, šiais metais ir paskutinis.
Tai yra visiškai gerai spręsti, kad buvo kovojama prieš projektą.
Mes matėme daug apps už tai skalbinių statusą miesteliu,
valgomojo salėje meniu naršyti daug apps,
daug apps kursų kataloge naršyti ir panašiai.
Ir iš tiesų, būsimos paskaitos ir ateityje seminarų,
mes supažindins Jus su kai viešai prieinama API, tiek komerciškai prieinamas
taip pat čia galima nuo CS50 miesteliu, kad jūs turite prieigą prie duomenų
ir tada gali padaryti įdomių dalykų su juo.
Taigi daugiau dėl galutinių projektų per kelias dienas, kai mes paleisti specifikaciją,
bet dabar, žinau, kad jūs galite dirbti solo arba su vienu ar dviem draugams
dauguma bet jus sudominti projekto.
Internetas.
Eiti į priekį ir išsitraukti savo nešiojamąjį kompiuterį, jūs einate į facebook.com pirmą kartą,
nėra prisijungęs neseniai, ir paspauskite Enter. Kas tiksliai vyksta?
>> Kai paspausite Įveskite savo kompiuteryje, visa krūva žingsnių
pradėti tarsi stebuklingai vyksta.
Taigi, jūs čia į kairę, interneto serverio, pavyzdžiui, "Facebook" yra dešinėje,
ir kažkaip jūs naudojate šią kalbą, vadinamas HTTP Hiperteksto perdavimo protokolas.
HTTP yra ne programavimo kalba. Tai daugiau protokolas.
Tai yra konvencijų rinkinys, kad interneto naršyklė ir interneto serverių naudoti, kai intercommunicating.
Ir ką tai reiškia, kaip nurodyta toliau.
Panašiai kaip ir realiame pasaulyje, mes turime šias konvencijas
kur, jei jūs patenkinti kai pirmą kartą žmogų, jei jūs neprieštaraujate humoring mane čia,
Aš galėtų sugalvoti jums, pasakyti: "Labas, mano vardas yra Dovydas." >> Sveiki, David. Mano vardas yra Sammy.
"Sveiki, Mano vardas Dovydas. Yra Sammy".
Taigi dabar mes tik užsiima tokio kvailas žmogaus protokolo
kur aš pradėjo protokolą, Sammy atsakė,
mes sukrėtė rankas, ir sandoris yra baigtas.
HTTP yra labai panašus į dvasią.
Jeigu Jūsų naršyklė prašo www.facebook.com,
tai, ką tikrai daro jūsų naršyklė yra išplėsti savo ranką, taip sakant,
prie serverio ir jis jai išsiųsdama pranešimą.
Ir pranešimas paprastai yra kažkas panašaus Get - ką jūs norite gauti?
man pagrindinis puslapis, kuris paprastai yra žymimas viengubu pasviru brūkšniu "URL pabaigoje.
Ir tik kad jūs žinote, kokia kalba aš kalbu, aš naršyklė einu pasakyti,
kad aš kalbu HTTP 1.1 versiją,
, O taip pat gera priemonė, aš norėčiau pasakyti, kad priimančioji, kad aš noriu į pagrindinį puslapį
yra facebook.com.
Paprastai, interneto naršyklė, jums nežinant, žmogaus,
siunčia šį pranešimą per internetą, kai jūs tiesiog įveskite www.facebook.com
>> Įvesti į naršyklę.
Ir ką "Facebook" atsakyti?
Jis reaguoja su kai panašios išvaizdos paslaptingas detales, bet ir daug daugiau.
Leiskite man eiti į priekį "Facebook" puslapis.
Tai yra ekrano, kad daugelis iš mūsų tikriausiai niekada pamatyti, jei jūs visą laiką būti prisijungus,
bet tai iš tiesų jų namų puslapiu.
Jeigu mes tai darysime "Chrome", atkreipkite dėmesį, kad jūs galite traukti šių mažai kontekstinio meniu.
Naudodami "Chrome" ar Mac OS, Windows, Linux, arba iš panašių,
jei Valdymo paspaudimą ar kairėje spustelėkite, paprastai galite atsigriebti meniu, kuris atrodo taip,
kur laukia keletas variantų, iš kurių vienas yra View Page Source.
Taip pat galite paprastai gauti į šiuos dalykus, eikite į meniu Rodymas ir išnyra aplink.
Pavyzdžiui, čia pagal View, kūrėjas yra tas pats dalykas.
Aš ruošiuosi eiti į priekį ir ieškoti View Page Source.
, Ką jūs pamatysite, HTML, kad Markas yra parašyta, kad atstovauti facebook.com.
Tai visiškai netvarka čia, bet mes pamatyti, kad tai daro šiek tiek daugiau prasmės prieš ilgas.
Tačiau yra keletas modelių čia. Leiskite man slinkti žemyn stuff like.
Tai sunku žmogaus skaityti, bet pastebėsite, kad ten šią kampu skliaustuose modelį
su raktiniais žodžiais, kaip ir antrojoje alternatyvoje, raktinius žodžius, pavyzdžiui, vertės, kai kabutėmis.
Tai kur, kada Jūs užsiregistravote pirmą kartą nurodyta, ką savo gimimo metus.
Gimimo metus, kad išskleidžiamajame meniu kažkaip užkoduota čia
HTML Hypertext Markup Language šia kalba.
Kitaip tariant, kai jūsų naršyklė prašo tinklalapį,
jis kalba apie šią konvenciją, vadinamą HTTP.
Bet ką facebook.com atsakas į šį prašymą?
>> Jis reaguoja su kai kuriais iš šių paslaptingas žinutes, kaip matysime per akimirką.
Tačiau labiausiai savo atsakymą HTML hiperteksto kalba.
Štai tikrasis kalba, kuria parašytas puslapis yra.
Ir kas yra interneto naršyklė tikrai tada, gavęs kažką, kad atrodo taip,
skaito iš viršaus į apačią, iš kairės į dešinę, ir bet kada jis pamato vieną iš šių kampu skliausteliuose
po raktinį žodį kaip galimybe, tai rodo, kad žymėjimo kalbą tinkamu būdu.
Šiuo atveju, tai būtų rodyti metų išplečiamojo meniu.
Bet vėl, tai yra pilnas netvarka pažvelgti.
Tai ne dėl to, kad "Facebook" kūrėjai pasireiškia 0 5 stiliaus, pavyzdžiui.
Tai yra todėl, kad dauguma kodą, jie rašo, yra, tiesą sakant, parašyta gražiai,
gerai komentarų, gražiai įtraukta, ir panašūs dirbiniai,
bet, žinoma, mašinų, kompiuterių, naršyklių tikrai nesuteikia nusispjauti
ar jūsų kodas yra gerai stiliaus.
Ir iš tikrųjų, tai visiškai išlaidavimas paspausti klavišą TAB, visus tuos kartus
ir pateikti pastabas visi per savo kodą ir pasirinkti tikrai aprašomojo kintamųjų vardai
nes jei naršyklė nerūpi, visi jūs darote ne dienos pabaigoje švaisto baitų.
>> Taigi paaiškėja, ką dauguma svetainių yra nors facebook.com šaltinio kodas,
už cs50.net ir visų šių ir kitų svetainių internete
paprastai yra gerai parašyta ir gerai komentarų ir gražiai įspaudžiami ir panašūs,
paprastai prieš svetainė yra įdėti į internetą, kodas minified,
kuria HTML ir CSS - kažkas, mes netrukus matysime,
mes netrukus matysime, JavaScript "kalbos kodas yra suspausta,
kai ilgą kintamųjų vardai tapo X ir Y ir Z,
ir visi tos tarpų, kad daro viską, kas atrodo taip įskaitomas išmesti,
nes, jei jūs manote apie tai šiuo būdu, "Facebook" gauna mlrd skaičius per dieną -
kažkas crazy, kaip kad - taip, ką daryti, jei programuotojas tik analinis
tik įtrauka šiek tiek kodo eilutę vis tiek daug daugiau, paspauskite tarpo klavišą vieną papildomo laiko?
Kas yra potekstė, jei "Facebook" išsaugo, kad tarpus
visi baitai jie siunčia atgal į žmonių internete?
Paspaudus tarpo, kai suteikia jums papildomą baitą į savo bylą.
Ir jei milijardas žmonių, tada pereikite prie atsisiųsti pagrindinį puslapį tą pačią dieną,
kiek daugiau duomenų perduodama per internetą?
Be priežasties gigabaitų.
Ir suteikė daug svetainių tai nėra toks keičiamo dydžio klausimas,
, bet ir "Facebook", "Google", kai kurie iš populiariausių svetainių
yra puiki paskata finansiškai, kad jūsų kodas atrodyti netvarka
taip, kad jūs naudojate kaip kelių baitų, kiek įmanoma, be to, tada jį suglaudinti,
naudojant kažką panašaus užtrauktuku, algoritmas vadinamas gzip,
kad naršyklė nėra automatiškai. Bet tai yra baisu.
Mes niekada išmokti ką nors apie kitų žmonių interneto svetainėse ir kaip kurti tinklalapius
jei mes turime pažvelgti į tai, kaip šis.
>> Taigi, laimei, kaip Chrome "bei" IE ir Firefox naršykles šių dienų
paprastai ateina su built-in Kūrėjo įrankiai.
Tiesą sakant, jei aš einu Čia patikrinkite elementą arba jei aš einu į peržiūra, kūrėjas,
ir pereiti prie Kūrėjo įrankiai aiškiai,
dabar tai ne mano ekrano apačioje langas pasirodo.
Tai šiek tiek bauginanti, nes ten daug nepažįstamas skirtukų,
bet jei aš spustelėkite elementų visą kelią apačioje kairėje
Chrome "yra akivaizdžiai labai protingas. Ji žino, kaip interpretuoti šį kodą.
Ir tai, ką Chrome "valo" Facebook "HTML.
Nors yra ne tarpus ten, ne įdubimas ten,
dabar pastebėti, kad galiu pradėti naršyti šį tinklalapį daugiau hierarchiškai.
It turns out, kad kiekvienas interneto puslapis, parašyta kalba vadinama HTML5 turėtų prasidėti,
tai DOCTYPE deklaraciją, taip sakant: <! DOCTYPE html>
Tai tipo šviesos ir pilka, bet tai pirmoje eilutėje kodo šį failą,
ir kad tik nurodo naršyklei, "Ei, čia ateina kai HTML5 Čia ateina tinklalapį.
Skliaustai atidaromi po, kad būna, kad tai, ką, skliaustai atidaromi HTML tegus,
ir tada, jei aš pasinerti giliau - šie strėlės yra visiškai beprasmis.
jie tik pristatymas labui, jie yra ne iš tikrųjų į bylą -
pastebėti, kad "Facebook" HTML tegus viduje, nieko, kad prasideda su atviro korpuso
ir tada žodis yra vadinamas žymę.
Taigi, HTML tegus viduje, matyt, galvos ir kūno tegus tegus.
Žymės galvos viduje dabar yra visai netvarka "Facebook"
, nes jie turi daug metaduomenų ir kitų dalykų, rinkodaros ir reklamos.
>> Bet jei mes slinkti žemyn, žemyn, žemyn, žemyn, pažiūrėkime, kur ji yra. Štai ji.
Tai vienas yra bent šiek tiek susipažinę.
"Facebook" puslapis pavadinimas, jei kada nors savo pavadinimo juostoje skirtuke,
Sveiki atvykę į "Facebook" - Prisijungti Registracija arba Sužinokite daugiau.
Štai ką galėtumėte pamatyti Chrome "pavadinimo juostoje,
ir tai, kaip jis atstovauja kodą.
Jei mes ignoruoti visa kita į galvą, dauguma iš tinklalapio viduriai yra į kūną,
ir paaiškėja, kad "Facebook" kodas ketina ieškoti sudėtingesnis
nei dauguma dalykų mes rašyti iš pradžių tik todėl, kad jis buvo pastatytas per metus,
bet ten visai daug SCRIPT, JavaScript "kalbos kodas,
svetainė, kuri leidžia labai interaktyvus:
matyti būsenos atnaujinimus akimirksniu naudojant kalbų, pavyzdžiui, "JavaScript".
Yra kažkas vadinamas div, kuri yra puslapyje skaidantis.
Bet prieš kurią mes gauname, kad išsamiai, pabandykime nutolinti
ir pažvelgti paprastesnė versija 1.0 "Facebook", taip sakant.
Čia yra hello, pasaulio tinklalapių.
Ji, kad DOCTYPE deklaraciją pačiame viršuje
kuris yra šiek tiek skiriasi nuo visko.
Nothing else mes rašome į interneto puslapį ketina pradėti <! išskyrus tos linijos
ir išskyrus vadinamąjį komentarų HTML.
Bet didžiąja dalimi į interneto puslapį, viskas skliaustai atidaromi, raktažodžius, skliaustai uždaromi.
>> Šiuo atveju jūs galite pamatyti paprasčiausias tinklalapių galimų.
HTML tegus yra pagrindinė žymeklį ir tai yra kūno tegus
, bet pastebėsite, kad ten tai paleisti ir sustabdyti žodžius sąvoka.
Tai pradžios žymos HTML, tai artimas tegus arba end tag.
Atkreipkite dėmesį, kad jie tarsi priešingybių ta prasme, kad artimas tegus arba end tag
šis ukośnika viduje savaime.
Tuo tarpu, yra atviru viršumi tegus čia ir čia arti galva tegus.
>> Yra atviras pavadinimas ir uždaryti žymės pavadinimą čia.
Tas faktas, kad aš įdėti pavadinimas į vieną eilutę, tik visiškai vienašališkų.
Jis tiesiog atrodė taip, tarsi jis tilptų gražiai į vieną eilutę, todėl aš ne nerimauti pataikyti Įveskite porą kartų.
Tuo tarpu, kūnas, aš padariau įtrauka tiesiog turi būti vis tiek aišku.
Atkreipkite dėmesį, kad HTML yra gana kvailas kalba.
Tiesą sakant, atgal per dieną, kol buvo WYSIWYG redaktoriai
ir "Microsoft Word", kur jūs galite pasakyti: "šis drąsus, kad šiuos kursyvu,
jūs iš tiesų įveskite mažai komandas esė prieš 20 + metų
, pagal kurią galėtumėte pasakyti, "Start šis tekstas paryškinti. nebedarykite šis tekstas drąsus."
"Start iðspausdinkite tekstas kursyvu. Nebedarykite iðspausdinkite tekstas kursyvu."
>> Štai ką HTML arba bet kokia žymėjimo kalba.
Šis pirmasis tegus sako: "Ei, naršyklė. Čia ateina šiek tiek HTML."
Kitas tegus sako: "Ei, naršyklė. Čia ateina į galvą, savo puslapyje antraštės".
"Ei, naršyklė. Čia ateina pavadinimą."
Ir tada čia, "Ei, naršyklė Štai dėl titulo."
Taigi tai yra, kaip naršyklė žino, kad nebėra rodyti daugiau simbolių, nei Apie pasaulis
pavadinimo juostoje.
Tuo tarpu, tai sako, "Tai viskas už galvos."
Tai sako, "Čia ateina į kūną Štai kūno." - Pažodžiui, žodžiai Hello, world.
Ir tai sako čia, "Štai jis organizmui. Štai ir viskas HTML."
Taigi naršyklių yra gana kvailas.
Jie tiesiog perskaityti šią medžiagą viršaus į apačią, iš kairės į dešinę, ir tai, ką jie negausite.
Tegul iš tikrųjų šiek tiek pavyzdį.
Leiskite man atverti programų paprasčiausias mano Mac čia, būtent TextEdit.
"Windows" galite naudoti Notepad.exe.
, Bet tai yra viskas, ko jums reikia norint pradėti priėmimo tinklalapius.
Aš ruošiuosi eiti į priekį ir tiesiog nukopijuokite ir įklijuokite šį kodą į šį failą.
Aš ruošiuosi eiti į priekį ir išsaugokite jį savo kompiuteryje,
ir aš ruošiuosi Išsaugoti kaip hello.html
failas yra pavadintas ir dabar hello.html.
Čia jis yra ant mano darbastalio.
Leiskite man eiti į naršyklę ir vilkite failą į naršyklę.
Ir voila, čia yra mano labai pirmasis interneto puslapis.
Atkreipkite dėmesį, kad skirtuko pavadinimas yra Apie pasaulis už žymės pavadinimą,
ir pamatysite, kad hello, pasaulis yra mano tinklalapį kūno,
Woo-hoo, aš internete.
>> Aš tikrai ne, į dešinę, nes šis failas yra ne internete.
Taip atsitinka, kad mano vietos kietajame diske tam tikroje kelio.
Bet idėja yra ta pati. Viskas, dabar mes turime, yra web serveris, į kurį norite įkelti jį.
Bet pirmiausia leiskite pristatyti iš tikrųjų šiek tiek daugiau sudėtingumą ir šiek tiek daugiau stilizacija.
Tai paprasta, jei nuobodu, interneto puslapis.
Pasirodo, yra ir kitų rūšių žymeles, mes galime naudoti.
Pavyzdžiui, čia geltonai įdiegėme 2 naujas gaires.
Mes ne žaisti daug su šių šiandien, bet pastebėsite, kad link tag
kažkaip atrodo skiriasi nuo visko.
Link tag trunka, kas yra vadinama atributai,
ir atributas yra kažkas, kuris pakeičia jų etiketes elgesį.
Šiuo atveju tai nėra geriausias pasirinkimas pavadinimus, nuorodą, nes tai tipo prasmės,
tačiau ši nuoroda tegus sako, iš esmės, failą pavadinimu styles.css viduje savo tinklalapį.
Jūs galite galvoti apie tai, kaip analogiška C # include direktyvą.
Styles.css yra nuoroda į visai kita kalba, kad mes ne žaisti su šiandien,
bet tai estetika: šrifto dydžiai, spalvos, apdaila, ženkliukų, paraštes,
ir visi tokio estetika išsamiai.
Tuo tarpu, scenarijus tegus funkciškai panaši,
bet, o ne įtraukti CSS, kad kalbos, ji apima kitą kalbą, "JavaScript".
Taigi, kitaip tariant, su 2 Tags ilgainiui galės parašyti savo tinklalapį
bet ir traukti į kodą, kad aš ar kas nors kitas yra parašęs
, kad galėtume atsistoti ant kitų žmonių pečių, mes galime praktikuoti gerą dizainą,
faktoringo iš bendro kodo.
Jei aš turiu 10 skirtingų interneto puslapius, tai reiškia, kad kai kurie iš mano estetika
galima būtų atsižvelgti iš, panašiai kaip # include, į atskirą failą.
Todėl mes vis ten.
Bet tegul iš tikrųjų pirmą kartą padaryti kažką įdomiau su šiuo failu.
>> Vėlgi, tai yra tiesiog "TextEdit. Nesu techniškai internete dar, bet mes ten.
Norėčiau, kad Hello, world šiek tiek drąsiau, nei ji yra.
Taigi, labas, tegul savavališkai pasakyti drąsus.
Vėlgi, istorija yra ta pati: hello, kablelis, pradėti uždirbti šis drąsus,
tada pasaulis bus atspausdintas paryškintai, o tai reiškia, sustabdyti spausdinimą paryškintu šriftu.
Leiskite man eiti į priekį ir išsaugoti savo failą, grįžkite prie "Chrome", aš padidinti tik taip mes galime pamatyti tai geriau,
ir paleisti, ir pamatysite, kad pasaulis dabar drąsus.
Internetas yra visa informacija apie hipersaitus, todėl galime eiti į priekį ir tai padaryti:
mano mėgstamiausia svetainė yra, tarkim, youtube.com.
Išsaugoti, perkraukite puslapį. Gerai. Yra pora problemų, dabar Be šio tinklalapio Szkaradność.
1, aš esu gana įsitikinęs, aš paspauskite "Enter" čia. Ir aš.
Aš ne tik paspauskite Enter, aš taip pat įspaudžiami, praktikuoti tai, ką mes jau pamokslavo apie stilių,
bet mano yra šalia pasaulyje.
Tad kodėl tai yra? Naršyklės tik tai, ką jūs pasakykite jiems.
Nepasakiau naršyklę, "pertrauka linijos čia Įdėkite dalis pertrauka čia."
Taigi naršyklę, nesvarbu, jei aš paspauskite Parodyti 30 kartų,
tai vis dar ketina įdėti savo teisę į pasaulį.
Ką aš tikrai turite padaryti čia pasakyti kažką panašaus , įterpti eilutės lūžį.
>> Ir iš tikrųjų, eilutės lūžį Keistas dalykas rūšies
todėl, kad jūs tikrai negali pradėti judėti į kitą eilutę, tada kažką daryti,
ir tada sustoti į naują eilutę. Tai tipo, kurių atominis operacijos.
Jūs arba padaryti tai arba jūs neturite. Paspaudžiant "Enter" arba jūs neturite.
Taigi BR yra šiek tiek skirtingo žyma, ir todėl man reikia rūšiuoti atviros ir uždarykite jį
visi vienu metu.
Tai, kad sintaksė yra.
Techniškai, galite padaryti kažką panašaus į tai, kai kuriais HTML versijų,
tačiau tai yra tiesiog kvaila, nes nėra jokios priežasties, paleisti ir sustabdyti kažką
jei galite vietoj padaryti visa tai vienu metu.
Suprantu, kad HTML5 nėra griežtai reikalauti, šį velniop,
todėl jūs pamatysite vadovėlius ir interneto išteklius, kad jos neturite,
bet gera priemonė leidžia verstis simetrija, kad mes matėme iki šiol.
Tai reiškia, kad žymė yra atidarytas ir uždarytas.
Taigi dabar leiskite man išsaugoti savo failą, grįžti čia.
Gerai, kad tai pradeda atrodyti geriau, išskyrus internete aš žinau, yra natūra spausti,
ir dar youtube neatrodo sukelti nieko.
Tai todėl, kad, nors atrodo, kad nuorodą, naršyklė nežino, kad per se,
kad aš turiu pasakyti naršyklės, kad tai nuoroda.
>> Būdas tai padaryti yra naudoti fiksuoto žymės:
<A href Hyper nuoroda, kuri yra senosios mokyklos būdas pasakyti, nuorodą,
= "Http://www.youtube.com">
ir leiskite man pereiti į naują eilutę tik, kad šiek tiek lengviau skaityti,
ir aš trauktis šrifto dydį.
Aš padariau dar? L. Yra bus tai dichotomija.
Šis tag, žymės saito tiesų požymį,
kuris iš dalies keičia savo elgesį, ir to atributo reikšmė yra akivaizdžiai "YouTube" URL.
, Bet pastebėsite, kad dichotomija yra tai, kad tik todėl, kad URL, jūs ketinate,
tai nereiškia, kad turi būti žodis, kad jūs pabrėždamas, ir darant nuorodą.
O, kad gali būti kažkas panašaus į tai.
Taigi, aš turiu pasakyti nebedaryti šis žodis naudojant artimą fiksuoto žymės hipersaitas.
Pranešimas aš ne tai daryti.
1, tai tiesiog kiekvieno laiko švaistymas ir tai nėra būtina.
>> Uždaryti žymą, jūs tik dar kartą paminėti tag name.
Jūs neturite paminėti vieną iš atributų.
Todėl galime išsaugoti, kad grįžti. Gerai, voila, dabar tai mėlynos ir nuorodos.
Jei aš spustelėkite jį, aš iš tikrųjų eiti į "YouTube".
Taigi, nors mano tinklalapis yra ne internete, tai bent HTML,
ir jei mes leidžiame Interneto pasivyti, mes iš tikrųjų galų gale čia youtube.com.
Ir aš galiu grįžti ir čia mano tinklalapis. , Bet pastebėsite.
Jeigu jūs kada nors įsigijo elektroninius laiškus arba į sukčių pinkles,
dabar jūs turite vos po penkių minučių galimybę daryti tą patį.
Mes galime eiti čia ir padaryti kažką panašaus www.badguy.com
ar kas paviršutiniškas svetainė, ir tada jūs galite pasakyti patikrinti PayPal sąskaitą.
[Juokas] Ir dabar tai ketina eiti į badguy.com, aš nesiruošia spausti ant
nes aš neįsivaizduoju, kur, kuris veda. [Juokas]
>> Bet dabar mes turime galimybę iš tikrųjų baigti.
Taigi mes tikrai tik subraižyti paviršių.
Mes ne programavimo savaime, mes raštu žymėjimo kalbą.
Bet kai tik mes aplink mūsų žodyną HTML,
mes jums pristatyti PHP, tikrasis programavimo kalba
, kuris leis mums sukurti HTML automatiškai generuoti CSS automatiškai,
taip, kad mes galėtume pradėti trečiadienį įgyvendinti, tarkim,
mūsų paieškos sistema ir dar daugiau.
Bet daugiau, kad porą dienų. Mes jums tada.
>> [CS50.TV]