HANNAH Blumberg: Sveiki visi. Mes ketiname pradėti tik pora minučių anksčiau nes mes turime visai daug medžiagos gauti per. Aš Ona. Aš TF. Maria bus prisijungti mums vos pora minučių. Ji moko skyrių tiesiai prieš. Aš mokau teisę skyrių po, todėl mes ketiname išlaikyti jį į valandą ir pusę. Taigi, kaip jūs pamatysite čia, mes turime gana keli klausimai turime gauti per, todėl mes ketiname būti šiek tiek greitai. Bet jei bet kuriuo momentu mes sakome kažką per greitai arba jūs nesuprantate, nedvejodami nutraukti klausimus. Mes norime, kad būtų galima padaryti tai peržiūrėti sesiją naudinga jums visiems kaip įmanoma. Nuostabus. Taigi leiskite pereiti teisę su Kai kurios temos, kad mes iš tikrųjų labai, labai trumpai, kuriems už viktorina 0 viktorinoje 0 peržiūros sesijos. Taigi pradedant susijusių sąrašus. Taigi tiesiog įsitikinkite, kad turite kai pagrindinių žinių apie susijusius sąrašus ir yra patogūs daro kai kurie iš pagrindinių operacijas. Taigi tiesiog peržiūrėti, susijusi sąrašai yra geriau nei masyvai nes jie gali augti dinamiškai. Taigi, mes turime tą didžiulį pranašumą. Mes matėme juos naudoti į maišos lentelėmis, kai mes nežinau tiksliai, kiek tai, ką mes ketiname nori įterpti į mūsų duomenų struktūros. Deja, mes turime vienetų susietą sąrašą visame atminties, todėl nebūtinai bus sugebėti daryti pastovų laiko susipažinti bet susietame sąrašo elemento. Norint rasti ypač elementas, mes turi pakartoti visus būdas iš pradžių. Taigi reikia nepamiršti, kad dauguma Pagrindinės operacijos yra omega 1 d. Taigi įdėklas yra tik ketina imtis 1 d. Ištrinti ketina imtis n, nes mes turi eiti ieškoti jį iš sąrašo. Ir paieška, galėtų imtis blogiausiu atveju, n. Mes negalime padaryti kažką panašaus dvejetainis paieškos susietą sąrašą nes mes galime ne tik atsitiktinai peršokti į vidurį. Kietas. Nuostabus. Šiek tiek kaminai. Tai vėlgi atėjo į viktorinos 0, todėl jūs turėtų būti super patogiai su juo. Bet kaminai, mes prašome jus prisiminti keletą padėklai kamino. Ir tai bus pirmasis, paskutinis iš. Taigi, mes sukrauti viską pluošte, ir tada jei mes bandome imtis ko nors off-- kuri mes vadiname Popping išjungtas stack-- mes pleiskanoti viršuje. Ir jei mes norime įdėti kažką į kaminą, mes vadiname tai stumia. Taigi ji visada bus augo iš panašaus dėklų pluošto apačioje. Nuostabus. Mes matėme kaminai įgyvendinti su abiem susijusių sąrašų ir matricos. Jei įgyvendinant su matricomis, norite įsitikinti, sekti tiek dydis ir talpa. Taigi dydis bus dabartinis Taškų dalykų savo kaminą, o talpa yra viso dalykų, kuriuos galite laikyti savo kamino. Kietas. Labai panašiai, mes turime eiles. Tokiu atveju vietoj galvoti apie iš padėklų kamino, manau linija. Tai bus pirmasis, pirmasis iš. Taigi, jei jūs rikiuojasi kažkas parduotuvėje, Tikimės, kad asmuo iš pradžių linija bus padėjo pirmas. Vietoj sakydamas stumti ir pop, kaip mes darome kaminą, mes tiesiog pasakyti į eilę ir dequeue. Ir vėl, jei esate įgyvendinti tai su masyvo, mes turime sekti ne tik į dydis ir talpą, bet taip pat ir galvos, kuri bus mūsų eilės priekyje. Kietas. Bet dėl ​​to klausimų? Nuostabus. Persikėlimas į dešinę kartu. Gerai, maišos lentelės. Štai kur jis pradeda gauti tikrai įdomu. Taigi maišos lentelės yra vienas įgyvendinimas Association masyvas. Taigi, iš esmės, kas atsitiko yra mes turime visą šią įvestį, ir mes duoti maišos funkcija, kuri sako, Gerai, tai yra, kur į maišos lentelė jis priklauso. Taigi paprasčiausias maišos funkcija kad mes matėme yra tiesiog pasakyti, Gerai, tarkime, kad mes norime įdėti įsipareigojimų mūsų maišos lentelė. Ir tikrai paprasta idėja gali būti pasakyti, gerai, tegul tiesiog surūšiuoti mašinas pagal pirmoji raidė žodžio. Taigi galite pamatyti čia, mes bananą, mes įdėti jį per maišos funkcija, ir ji sako, ei, kad turėtų eiti 1 indeksą. Taigi, mes galime iš esmės galvoti apie maišos Lentelę įvairių kaušų krūva. Ir kiekvienas iš šių kibirai vyksta surengti susieto sąrašą galvą. Ir tą susietą sąrašą, kur mes galime iš tikrųjų įdėti skirtingų vienetų duomenis. Taigi nardymo šiek tiek daugiau į maišos funkcija, čia pavyzdys aš tiesiog aprašyta, kur mes tiesiog pasakyti, Gerai, imtis pirmąją raidę Žodžio ir mes ketina rūšiuoti ją į kibirus. Taigi, matyt, ten bus 26 kibirų, po vieną kiekvienam abėcėlės raide. Kodėl diskusijose nėra galimybės tai puikus maišos funkcija? Ką daro ši ne idealus? Taip. Auditorija: Jūs ketinate turėti susidūrimų. HANNAH Blumberg: Taip, tiksliai. Jūs ketinate turėti susidūrimų. Taigi, kad vienas dalykas. Ir mes kalbame apie tai, kaip mes galime nustatyti susidūrimų vos sekundę. Su kita, ši problema ypač maišos funkcija yra tai, kad mūsų skirtingi kaušai ketinate būti Pretty drastiškai įvairių dydžių. Mes žinome, kad ten visai daug daugiau žodžių, kurie prasideda su ne-X, todėl mes ketiname turėti labai nesubalansuotas kibirai mūsų maišos lentelė. Kietas. Taigi, taip, grįžkime prie susidūrimų vieta. Ką mes darome, jei ten susidūrimas? Mes turime keletą skirtingų variantų. Taigi vienas, todėl manau, mes stengiamės įdėti uogų į mūsų maišos lentelė. Ir mes matome, oi, mes norime įdėti ją į indeksu 1, bet bananų jau gyvena ten. Ką mes ketiname daryti? Mes turime du pagrindinius variantus. Numeris vienas yra, mes galime pasakyti, gerai, nėra patalpa indeksu 1, bet tegul tiesiog nuolat ieško per kol mes galime rasti kitą atvirą vietą. Taigi mes pasakyti, gerai, tegul įdėti jį į vietą 3. Štai vienas variantas. Tai vadinama linijinis zondavimo. Ir antras variantas sako, gerai, gerai, tegul tiesiog padaryti kiekvienas iš šių kibirai būti vadovais susijusių sąrašus. Ir tai gerai, jei yra daugiau nei vieno dalyko į kibirą. Užtenka tik ketina pridėti jį į priekį. Taigi čia matote, gerai, kai mes įdėta uogų, mes tiesiog paėmė bananą, rūšies pastūmėjo jį per trupučiu ir išmetė uogų ten. Ir tai taip pat visiškai gerai. Tai vadinama atskira jungimo. Jūs galite galvoti apie tai, kaip lyg AN vadovų masyvas susijusių sąrašus. Bet kokie maišos klausimai stalai, maišos funkcijos? Nuostabus. Medžiai ir nutraukė. Taigi medis yra bet kokios rūšies duomenų struktūros kurioje yra keletas Rūšiuoti hierarchijos ar tam tikros rūšies Eilės savo įvairių objektų. Ir tai bus super aišku, kai mes matome pavyzdį. Ir mes matėme kartų, kartu su maišos lentelėmis, į pset5-- kuris, vėlgi, visiškai teisingas žaidimas tai quiz--, kaip ir kitas duomenų struktūros, kad mes galime laikyti skirtingus dalykus. Atsižvelgiant į žodyną atveju, mes saugomi žodžių krūva. Taigi leiskite pažvelgti į kai kurių medžių išvaizdą. Taigi, tai yra medžio pavyzdys. Ji turi struktūrą rūšies, kad hierarchinėje struktūroje, kur galima pamatyti, kad šis 1 mazgas viršuje turi tam tikrą rangą rūšiuoti virš 2 ir 3 kuri yra virš 4, 5, 6 ir 7, ir, kuri yra virš 8 ir 9. Taigi, kad viskas, ką mes vadiname medis, todėl galite tiesiog natūra paveikslo šią nuorodą į savo galvą. Dabar, mes turėti pora daugiau specializuotų medžiai. Taigi vienas pavyzdys yra dvejetainis medis. Ir dvejetainis medis, vėl, tik bus duomenų struktūra su kažkokia hierarchijos, bet kiekvienas iš mazgų gali būti ne daugiau kaip du vaikams. Štai kur žodis dvejetainis ateina iš. Taigi, tai yra Binarinės medžio pavyzdys. Taigi, kad mažesnės kategorijos medžių. Dabar galime gauti net daugiau specifinių ir kalbėti apie dvejetainis dvejetainis paieškos trees-- medžiai, o. Taigi čia idėja yra ne tik kiekvienas mazgas turi ne daugiau kaip du vaikus, bet visi su vaikais Kairėje bus mažesnis ir visi su vaikais teisė ketinate būti didesni. Taigi pranešimas tiesiog mūsų dvejetainis medis, ten ne santykiai tarp numerius. Tačiau mūsų dvejetainis paieškos medis, matome, gerai, čia 44. Ir kiekvienas numeris, 44 kairėje yra mažesni ir viskas į dešinę yra didesni. Ir tai priklauso ne kiekvienas lygis medžio. Taigi čia, tai yra mažesnės nei 22, ir tai yra didesnis nei 22. Ir tai dvejetainis paieškos medis. Kodėl mes manome, ji vadinama dvejetainis paieškos medis? Kas algoritmas ji jums priminti? Auditorija: Dvejetainiai paieška. HANNAH Blumberg: Dvejetainiai paieška. Nes jei ieškote pirma skaičius šio medžio, kiekviename taške, galite tiesiog trankyti išjungti pusė medžio, kuris yra didelis. Ir taip, kad ketina suteikti mums kažką kad atrodo kaip dvejetainis paieškos daug. Turite klausimų? Gerai, gerai. Gerai, bando. Visiems mėgstamiausia. Taigi, tai yra, kad pavyzdys mes matėme A klasės krūva. Ir vėl, tai tik dar vienas būdas, kad mes galime saugoti duomenis. Atsižvelgiant į žodyną atveju, vėl, tai tik bus įsipareigojimų. Taigi pažiūrėkime, ką tai iš tiesų atrodo šiek tiek žemesnio lygio. Taigi leiskite pažvelgti vienu mazgo TRIE. Ir mes matome, gerai, ten vyksta būti Būlio ir mazgas, rodyklė į mazgą. Ir mes matome, kad Būlio vadinamas is_word. Taigi, iš esmės, tai ketina atitinka prie šių mažų trikampių, kurie sako, jei jūs čia Dotarłeś, radote pilną žodį. Mes žinome, kad "Tiuringo" per Čia yra pilnas žodis, kadangi tik T-U-R nėra žodis nes mes nematome, kad mažai deltą. Ir tai mažai Delta, vėlgi, atitinka šio is_word, tai Bulio is_word. Ir tada mes turime vaikų masyvo. Taigi kiekviename lygyje, galite turi tam tikrą mazgą, ir kad mazgas taškų į masyvas visą abėcėlės. Taigi matote, vėl, Šioje picture-- aš ketina išlaikyti šokinėja atgal ir forth--, kad, kad viršuje masyvo turi skirtingas krūva mazgai atskilimas jį. Jis turi 26, arba 27, jei norite įtraukti papildomą pobūdį. Ir tai suteikia mums būdas saugoti mūsų duomenų tokiu būdu, kad gali būti žiūrima kad jūs galite ieškoti super greitai. Kas yra peržvalgos metas TRIE? Auditorija: [nesigirdi]. HANNAH Blumberg: Taip. Teoriškai, tai pastovus laikas. Tai tik ketina būti dydis žodis, kurį norite ieškoti. Net jei mes pridėti Zillion daugiau žodžių mūsų TRIE, jis nesiruošia imtis mums bet ilgiau nustatyti jei duotas žodis yra TRIE. Taigi tai tikrai gražus. Auditorija: Ar jūs tiesiog inicijuoti, kad masyvas? Praleidote tašką ar du. Ar jūs tiesiog kalbėti apie kad per sekundę? HANNAH Blumberg: Žinoma, absoliučiai. Geras klausimas. Klausimas buvo, mes turi masyvą, kad yra teks mazgas žvaigždę ne tik mazgas, tiesa? Kietas. Taigi čia ką kalbate yra mūsų masyvas yra tik bus rodykles į kitus matricos. Taigi, tai essentially-- ją natūra jaučia susietą sąrašą, tokiu būdu kur kiekvienas iš šių vaikų tiesiog atkreipti dėmesį į kitą mazgą. Ir taip, kad mes realiai nustatyti, ei, gerai, mes pakartota per visą Žodis, yra šis žodis žodyne, mes tiesiog patikrinti šį is_word. Didelis klausimas. Taip. Auditorija: Gerai. Taigi, kas buvo už TRIE Runtime? HANNAH Blumberg: Žinoma. Taigi dėl pasiūlymo dėl TRIE runtime Ieškoti ketina būti pastovus laikas. Taigi, tai tik ketina būti skaičius raidėmis žodį. Tai nepriklauso nuo dydis žodyne arba duomenų struktūros dydis. Taigi čia šiek tiek paprastesnis pavyzdys. Šiuo atveju, jūs galite pamatyti, kad žodis GPGB yra žodyne ir jūs turite priartinimas, bet jūs neturi kažką panašaus zoologijos sode. Kaip mes zoologijos sode? Kaip mes pridėti zoologijos į mūsų žodynas, mūsų TRIE? Taip. Auditorija: Padaryti is_word pasakytina apie [nesigirdi]. HANNAH Blumberg: Geras. Taigi mes norime pasakyti, Z-O-O, ir tada mes norime norite patikrinti ne tą langelį, taip pat. Didysis. Leiskite palyginti labai trumpai bando palyginti maišos lentelėmis. Tries yra tikrai puikus nes, kaip jau minėjome, jie suteikia pastovus laiko peržvalgos. Bet didžiulis trūkumas yra jie humongous. Jūs galite gauti jausmas, net žiūri į jį, kad ji ketina imtis didžiulis atminties. Taigi jie ketina būti daug didesnis nei maišos lentelėmis, bet jie ketina duoti mums daug greičiau lookup kartų. Taigi, kad tipo tavo kompromisas, kas jums rūpi, ar tai greitis ar atminties. Bet dėl ​​to klausimus, visi C duomenų struktūrų. Gražus. GERAI. Mes ketiname pereiti prie šiek tiek tiek interneto plėtrai su Maria. MARIA ZLATKOVA: Gražus. GERAI. HANNAH Blumberg: Galite naudoti savo nešiojamas. MARIA ZLATKOVA: gražus. Gerai. Kaip mes judėti dabar internete plėtra, mes kalbėjome šiek tiek apie besikeičiančius leidimų failų ir katalogų taip, kad jie gali būti pasiekiamas su kitais naudotojais, kad pasaulyje, ir taip, kad mes galime pamatyti, kaip Iš esmės mes galime perteikti jiems kai mes sukurti tokius dalykus kaip interneto svetainėse kad mes dažniausiai darome. Taigi mes matėme chmod komandą kuris yra kaita režimas, iš esmės. Štai Linux komandų ir jis keičia prieigos teises failų sistemos objektus. Ir failų sistemos objektas tik katalogas, failas, nieko, kad jūs galite pakeisti leidimus. Taigi norėdami pamatyti failų teises, mes įveskite komandą ls, sąrašą, -L. Ir kai mes tipo, kad mes paprastai pamatyti kai leidimus kad atrodo tarsi tai priešais katalogo pavadinimą. Taigi d nuoroda į katalogą. Ir tada mes turime tris trigarsių, kad iš esmės kreiptis į bet teises naudotojas, grupė, arba pasaulyje. Dėl leidimų tipų, kad mes galime turėti šių trijų grupių žmonių yra arba r skaitymo, w rašyti ir X įvykdyti. Ir mes galime turėti tiems, grupė ir pasaulio, taip pat. Gudrybės dalykas yra tai, kad kartais kai mes įvesti chmod komandą mes tipo šiek tiek skaičių kad sudarė trys bitai. Taigi, mes galime padaryti, kaip 777, ir, kad iš esmės nurodytų pridėtinės vertės kiekviena iš šių triads nes R norėtų atkreipti dėmesį į 4, W būtų perduoti iki 2, ir x būtų galima nurodyti 1, todėl, kai pridedama iki, kiekvienas iš skaičių būtų nusileisti į kaupiamojo skaičius prie bendros vertės tarp 0 ir 7. Taigi, mes taip pat gali turėti: 0 už ne visais leidimais. Ir kad būtų iš esmės duoti mums už abiejų vartotojui teises, grupė arba pasaulyje. Bet apie tai klausimai iki šiol? Auditorija: Jūs sakėte, skaityti buvo 4? MARIA ZLATKOVA: Taip. Auditorija: [nesigirdi]. HANNAH Blumberg: Yup. Auditorija: Ir tada pridedant visus tuos kiti rodytų savo numerį. MARIA ZLATKOVA: Taip. Taip. Tai yra puikus klausimai. Gražus. Be to, mes šoktelėjo į HTML ir A šiek tiek daugiau apie interneto plėtrą. Taigi HTML tiesiog reiškia, Hiperteksto kalba. Ir tai yra antkainis kalba, kuri yra standartinė kad ji naudojama siekiant sukurti tinklalapius. Tai vadinama žymėjimo kalba nes tai nėra iš tikrųjų surinkti. Jis nesako kaip kai kodekse turėtų būti būti įvykdytas ar ko nors panašaus, kad. Jis tiesiog apibrėžia ir aprašoma, kaip interneto puslapis turi būti įsteigtas su kiekviena iš jo elementų ir kaip jie turėtų atrodyti vartotojui. Kai kurie iš HTML žymes kad mes perėjo yra šie. Visi mūsų HTML dokumentų pradėjo su DOCTYPE HTML. Tada mes visada turime HTML tegus. Mes turime galvą ir kūną. Ir labai svarbu, kad HTML yra Šis įdėtos struktūros Rūšiuoti nes tai labai aišku. Ir tada ji tampa labai aišku, kai mes reikia atidaryti ir iš tikrųjų glaudžius žymes. Ir mes visada reikia uždaryti Žymos kad mes atidarytas. Ir čia mes turime kai kurių tipų dalykų į priekį, kad mes norime turėti. Taigi turime, pavyzdžiui, iš CS50 pavadinimas. Ir tada mes iš tikrųjų galite susieti stiliaus lapą kuris apibrėžia, kaip mes stilius mūsų svetainėje. Tai atitinka CSS. Mes ketiname eiti per jį Kitas pora skaidres, taip pat. Per kūno, mes nustatyti kai klasės ir idėjas. Ir kaip priminimas, vėlgi, ID yra unikalus ir klasių galima priskirti kelis elementus. Ir tai tiesiog reiškia, kad mes galime naudoti klases ir ID per kita structures-- Taigi, Pavyzdžiui, per CSS failus ar stiliaus sheets-- kreiptis į konkrečių elementų ir iš esmės teigia, kad norime stilius arba sukurti tam tikrą elementą kai tikru būdu. Ir mes vadiname juos jų identifikatoriai ir klasės. Ir taip pat gali reikšti skirtingi dalykai pagal žymeles, taip pat, bet identifikatoriai ir klasių tiesiog duoti mums šiek tiek universalumas ir ką konkrečiai mes noriu kreiptis į. Taigi tik pavyzdys. Vėl, mes galime per CSS failą, kur mes norite nustatyti kai style-- tiek spalvų, šriftų, ir stuff like that-- mes galime apibrėžti kūno stilių. Taigi, kad būtų apibrėžti už viso kūno žyme. Bet tada mes taip pat galime apibrėžti pasiūlymas dėl #title stilius. Ir vėl, hashtag remiasi mūsų ID ir taškas remiasi mūsų klasėje. Ir tada už .info, mes Taip pat galite nustatyti keletą atributų. Ir vėl, kai mes einame atgal, mes turėjome mūsų klasė vadinama informacijos ir mūsų ID pavadinimas. Ir matome, kad mes vadiname jiems #title ir .info. Auditorija: Ar galėtumėte pasakyti, grotelėmis [? priimti mane? ?] MARIA ZLATKOVA: Atsiprašome? Auditorija: Ar galėtumėte pasakyti, grotelėmis [? priimti mane? ?] MARIA ZLATKOVA: hashtag reiškia ID SO #title nurodo kokiomis elementų turi šį ID vadinamas pavadinimas. Ir tada taškas reiškia klasės. Taigi .info remiasi šio elemento nes ji turi klasės info. Taip. Auditorija: Kodėl jūs atskirti juos į HTML? Kodėl jūs sakote tam tikri dalykai yra ID ir tam tikri dalykai yra klasės? MARIA ZLATKOVA: Tai tik iki you-- HANNAH Blumberg: Pakartokite klausimą. MARIA ZLATKOVA: Oi, atsiprašau. Kodėl mes atskirti tam tikrus elementus kaip ID ir kitų elementų klasėms? Štai tik todėl, kad tikrai dažnai dizaino pasirinkimas. Jis suteikia jums daug universalumas yra galėtų pasakyti, kad aš noriu šį konkretų objektą turėti šį ID, nes jie nori daryti daug dalykų su juo, ir I tik norite nustatyti stilių, tam tikras stilius arba spalva kokia to elemento. Ir būdas tai padaryti yra tiesiog suteikiant jai ID. Ir tada, jei aš noriu turėti įvairių daiktų pora turintys, kad vietoj vyksta ir nustatyti their-- užuot jį Tag nes žymė būtų nustatyti ląstelių visai žyme kiekvieną kartą, kad žymė yra naudojama, galite nustatyti klasę kelis elementus. Ir tada tiesiog prisijungti prie šios klasės ir pasakyti Noriu stiliaus šioje klasėje, kad taip. Ir vėl, klasė gali būti daug skirtingų daiktų ir ID turi būti unikalus. Didžiosios klausimai. Visi kiti klausimai? Gerai, nuostabus. Vėlgi, tai yra, kaip šie selektoriai yra nuorodos į CSS, su grotelėmis, su tašku, arba be nieko priskiriant tam tikros žymės stilių, pavyzdžiui, organizme. Ir čia mes turime bendras sintaksė, kaip tai daroma. Norėdami pakartoti kai geriausias praktika HTML ir CSS, turime vėl uždaryti visus HTML žymės, kad mes atviri. Ir tai, ką mes jus rekomendavo padaryti jūsų galutinis projektų, taip pat CS50 Finansų, yra padaryti Įsitikinkite, kad visi jūsų HTML patvirtina. Ir tai daroma su W3 tvirtintojas. Ir tada, ką mes padarėme, ir ką mes rekomenduojame tai yra atskirti stilių, todėl CSS nuo žymėjimo HTML. Taigi viskas, kas susiję su tuo, kaip Jūsų puslapis ketina vizualiai atrodo ir kaip ji ketina būti pakeista reikia eiti į CSS dokumentą. Ir tada jūsų antkainis sakydamas, kaip viskas yra vienas kito atžvilgiu yra HTML, ir kad reikia eiti į vidų Jūsų HTML dokumentus. Turite klausimų? Mhm. Auditorija: Ką tiksliai vyksta nuo su puslapio įteisinimo kai mes patvirtinimui HTML, kad [nesigirdi] buvo sukurta? MARIA ZLATKOVA: Taigi what-- manote jus. Taigi, kas tiksliai vyksta nuo su puslapio įteisinimo Ir kodėl mes turime padaryti, kad? Iš esmės, mes turime padaryti, kad nes daug kartų, Jūsų naršyklė, jei nenorite uždaryti žymą ar kažkas panašaus, Jūsų naršyklė vis dar vyksta padaryti puslapį, ir dar gali dirbti, bet tai geriausia praktika įsitikinti, kad jūs vėl uždaryti visus savo žodžius, kad visi jūsų elementai yra taip, kad jie turėtų būti, ir iš esmės, kad tai, padarytais konvencijų, kurios yra derinys. Tai, vėlgi, tik dalykas, kad jums reikia būti mokymosi daryti, priešingai, turintis sloppier kodas ir stuff like that. Taip. O, atsiprašau. Maniau, kad jums buvo pakelti ranką. Auditorija: Ne, aš tiesiog buvau [nesigirdi]. MARIA ZLATKOVA: Gerai. Auditorija: Ačiū. MARIA ZLATKOVA: Žinoma, ačiū. Taigi dar kartą, vyksta į tai, kaip informacija perduodama ir komunikacijos modeliai perduoti informaciją. TCP / IP. TCP tiesiog reiškia perdavimas Valdymo protokolas ir IP nuoroda į interneto protokolo. Ir tai tik nuoroda į būdas duomenys yra pateikta. Jei mes turime kai kuriuos duomenis, kad turi pristatyti į you-- taip jums padaryti už tam tikrą serverį prašymą. Pavyzdžiui, kai mes bandyti prieiti cs50.net, mes pateikti prašymą CS50 serveris ir mes matyti, kad mes norime gauti Ši informacija rūšiuoti. Ir tada yra pagrįsti šio protokolo kiek ši informacija yra pateikta, serveris suteikia informacijos grįžti į mus, klientas. Ir tada mes galime peržiūrėti už puslapį informacija ir tada jį naudoti. Taigi Hiperteksto perdavimo protokolas yra tik dar vienas protokolas arba nustatyti konvencijų, kuris apibrėžia, kaip interneto naršyklė ir interneto serveris turėtų bendrauti. Ir pradėti visa tai kartu, HTTP, vėlgi, tik apibrėžia, kaip tai apibrėžta hiperteksto kurį HTML, kad mes dirbame, kad, kaip ji turėtų būti pristatytas jums ir kaip kad duomenys, pateikti jums pasireiškia jums. Ir štai kodėl, jei jus vaikinai prisiminti iš klasės, mes turėjome daug prašymų ir mes turėjome daug sintaksės šių prašymų, kad mes ketiname pereiti dabar. Taigi dar kartą, kai mes išsiųsti prašymas prie serverio, mes turime apibrėžti keletą dalykų. Taigi, mes turime rasti tipą Prašymo, kad mes kuriame. Ir vėl, turime, pavyzdžiui, GET yra vieno tipo metodas kad mes turime mūsų prašymą. Ir galiausiai HTTP / 1.1 yra tik protokolas, mes naudojame dabar. Dauguma laiko, kad vyksta protokolą, kad mes naudojate. Taigi, jei turite klausimų kaip kad ant jūsų viktorina. Štai konvencijų kad mes iki šiol. Kairinis pasvirasis brūkšnys reiškia, kokios rūšies dalykų mes prašyti. Tada, mūsų kompiuteris, pavyzdžiui, šis atveju, mes bandome eiti į google.com. Taigi, tai yra už priimančioje vertė. Tai yra informacijos tipas , kurie gali būti išsiųstas. Ir tada atsako, kurios galėtų siunčiami, vėl, remiantis šio protokolo, vėl, HTTP / 1.1. Taigi, kad HTTP versija dar kartą. 200 Gerai yra tik statuso kodą. Ir tai Gerai yra tik frazė remiantis šios būsenos kodą. Ir tada Content-Type nurodo tipo kad grąžinamas jums, kad yra už tą tinklalapį, kad jums gauti ir kad Jūsų naršyklėje gali tapti vėliau. Ir tai yra text / html. Auditorija: Ką 1.1 reiškia? MARIA ZLATKOVA: Tai tik versija of-- oh, ką 1,1 reiškia? Tai tik versija, HTTP versija protokolą, kad mes naudojate. Didelis klausimas. Kiti klausimai? Auditorija: Gal galite Apibendrinant Content-Type nekilnojamojo greitai? MARIA ZLATKOVA: Taigi, kad yra tai, ką serveris. iš informacija-- tipo kas turinio tipas buvo klausimai. Taigi, kad buvo tipo informacija, kad jūs gaunate atgal iš serverio, tipo duomenų, kad naršyklė gali tada padaryti, kad jūs naudojate. Auditorija: Ar tai, ką ši protokolas sakau jums daryti? MARIA ZLATKOVA: Atsiprašome? Auditorija: Ar tai, ką protokolas pasakyti? MARIA ZLATKOVA: The protocol-- Auditorija: --what Content-Type yra arba what-- MARIA ZLATKOVA: protokolas yra paremtas on-- kas protokolas sakau? Tai tiesiog būdas kad šios informacijos buvo pristatytas jums grindžiamas ant kokios protokolo Ar ši informacija buvo gavo pristatyti atgal. Ar tai prasminga rūšiuoti? HANNAH Blumberg: Jūs galima galvoti apie protokolo kaip a-- Manau profesorius Malan apibūdino klasėje, kaip lyg a-- tai kaip žmogiškojo Patvirtinimas ryšio ekvivalentas. Pasakykite, kaip, ei, aš prašymas ir aš žinoti, kaip elgtis HTTP 1.1 versijos. Ir tada serveris sako, oh, gerai, I-- ir tiek egzistuoja. Aš taip pat žinau, kaip elgtis su HTTP / 1.1. Ir aš ruošiuosi duoti atsarginę dalį turinio. Šiuo atveju, ji vyksta būti tipo text / html. Taigi tai tipo tik būdas iš jų communicating-- MARIA ZLATKOVA: Tai tiesiog patvirtinantis, kad esate tiek pagal tą pačią protokolas ir kad tiek klientas ir taip server-- Jūsų naršyklė ir server-- rūšiuoti žinoti, kas esate kalbame apie ir turėti už einančios į duomenų konvencija. Auditorija: Taigi Content-Type part-- Content-Type text / html-- tai atskiras dalis to paties pranešimo? Ar tai dalis tarkim, 200? Ar 200 jiems pasakyti, kad arba is-- MARIA ZLATKOVA: 200 sako, kad visi nuėjo Gerai. Ir tada turinio tipas yra tarsi atskiras dalis pačiu pranešimu, ir sakydamas dalykas, kad aš Gražintinos šį text / html tipo. Tai tiesiog suteikiant daugiau informacijos. Nieko pridėti? GERAI. Visi kiti klausimai apie tai? Nuostabus. Todėl kai kurie kiti HTTP būsenos, kad mes galėtume gauti papildomai 200 OK, tie, kurie mes matėme gal galbūt daug yra 403 ir 404. Taigi 404, jei bandėte prieiga kažkas, kad neegzistuoja. Taigi, pavyzdžiui, jūsų CS50 Finansai psets, jei buvo teikimo quote.html ir jūs neturėjo tokio failo, bet vietoj jūs turėjote quote.php, kad lemtų 404 Not Found nes failas gali neegzistuoja. Dėl 403 Uždraudė, kad nurodo leidimus. Taigi, jei kai byla yra neįžvelgiamos pasaulis, galite gauti 403 grąžinami. Kai kurie kiti, kad jūs galite get-- 301, Perkelta Pastoviai; 302, Surasta; 304, modifikuotas; 400, Bad prašymu; ir tada vidinė serverio klaida dėl 500 ir 503, paslauga neprieinama. Taip. Auditorija: mes Tikimasi prisiminti visus tuos statusus? MARIA ZLATKOVA: būčiau juos savo apgauti lape. [Juokas] Auditorija: Ar mes Tikimasi žinoti, kas sukelia kiekvienas? MARIA ZLATKOVA: Ar jie? HANNAH Blumberg: Už tuos, kurie mes paleisti into-- Taigi klausimas was-- MARIA ZLATKOVA: Ar jie tikėjosi žinoti, ką kiekvienas vieną iš šių statuso kodai gali būti užfiksuojamas? Taigi tie, kad mes naudojamų ir įvažiavo į, sakyčiau, taip. Taigi mes tikrai matė 200 Gerai ir dėstė jį psets. Mes matėme 403, 404. Dėl kitų kokius? HANNAH Blumberg: Aš norėčiau pasakyti 500 atrodo teisingas žaidimas. MARIA ZLATKOVA: 500, taip. HANNAH Blumberg: Taip. Tiesiog turi bendrą prasmę kas juos sukelia. Ir taip pat, tiesiog jų pavadinimai, galite rūšies kaip padaryti išsilavinę atspėti, kaip į tai, ką iš tikrųjų juos sukelia. Pavyzdžiui, visam laikui, tikriausiai failas buvo perkeltas visam laikui. Auditorija: Bet ankstesnis Egzaminas, ten buvo taip kaip jūs tikitės mums atsakyti, kad? HANNAH Blumberg: Tai buvo verta nulis taškų. Ant 418 klausimą dėl arbatinukas yra techniškai HTTP statuso, bet tai buvo verta nulis taškų. Akivaizdu, kad esate ne Tikimasi, kad juos žinoti. Auditorija: Ar tai realus? HANNAH Blumberg: Tai tikras viena, bet tai nieko nereiškia. Tai tiesiog pokštas. Interneto žmonės yra juokinga. MARIA ZLATKOVA: Didžiosios klausimai, vaikinai. Visi kiti klausimai? Auditorija: Kas yra vidinė serverio klaida? MARIA ZLATKOVA: Vidaus serverio klaida tiesiog reiškia, kad tapote negali bendrauti su dėl tam tikrų priežasčių serveryje. Taigi, tai nebūtinai kažkas, kad turi daryti su klientu ar kažkas panašaus. Aš nežinau, bet konkretus pavyzdys kad mes perėjo paaiškinti, bet taip. HANNAH Blumberg: Žinoma. Taigi, pavyzdžiui, kaip tegul sako, kad jūs dirbote Mashup ir "Google" serverių, sumažėjo kai priežastis, elektros energija nutraukimo, tarkim. Tai būtų vidinė serverio klaida arba kai rūšiuoti of-- patinka jums nebūtų gauti atsakymą atgal. MARIA ZLATKOVA: Taip. Tai tik tada, kai esate negali bendrauti su tam tikrą, nes priežasties serveris IT žemyn ar kokios nors kitos priežasties. Taigi šokinėja į PHP. PHP, skirtingai nuo HTML, yra programavimo kalba. Ir mes pradėjome jį naudoti, nes ji yra labai naudinga interneto plėtrai. Mes pirmą kartą naudojo jį CS50 finansų. Ir tai iš esmės padeda mums atnešti kartu tai antkainis, dizainas, ir kaip mes iš tikrųjų naudoti informaciją rodyti dalykų tinklalapį. Taigi PHP pati reiškia PHP Hiperteksto pirminio apdorojimo, todėl rekursywny backnorym savaime. Ir atidarymo žymės PHP mes kairė ir dešinę rodykles su klaustukais ir PHP. Taigi, mes jau matėme jį krūva. Dabar mes tik ketina eiti per kai kurie iš pagrindinių dalykų apie jį. Taigi su PHP, kintamojo pavadinimai prasideda su dolerio ženklu. Mes nenurodysite, vėlgi, kintamasis tipo nebėra. Tiesiog kaip mes padarėme su C, mums nereikia daryti. Mes galime padaryti įvairių krūva Daiktai su kintamaisiais. Mes galime sudėti juos kartu iki concatenating juos su dot žymėjimo, kuris mes negalėjome padaryti C dar kartą. Vėlgi, mes turime šiek tiek daugiau universalumo PHP požiūriu kintamųjų. Kartą, mes neturi pagrindinę funkciją. Ir PHP yra interpretuojamas o ne renkami, Taigi tiesiog kaip mes padarys C failus, mes neturime daryti, kad PHP. Bet, o, taip, kad kalba paleisti savaime, ji aiškinama. Ir tada laisvai įvedėte tiesiog reiškia, kad mes neturi nurodyti kintamąjį tipas ir kintamųjų tipai yra suprantama runtime. Auditorija: Bet ką tu reiškia dot sąryšis? MARIA ZLATKOVA: Žinoma. Kai mes norime įdėti dalykų together-- Taigi, jei mes turėjome šiek tiek kintamasis, kad turėjo 3 vertę ir mes turėjome kitą kintamasis, kuris turėjo eilutės reikšmė, galėtume įdėti kintamieji kartu įgyvendinant tašką tarp jų ir concatenating juos. Arba mes galime sukurti kintamasis vadinamas vardas ir įdėti jį kartu concatenating dvi eilutes. Taigi, jei mes turėjome eilutę dvigubai citatos ir mes įdėti tašką po jo, ir tada mes turėjome kitą eilutę, kad būtų sukurti eilutę apskritai. Auditorija: Gerai. MARIA Latvija: buvo, kad išvalyti? Auditorija: Taip. MARIA ZLATKOVA: Gerai. Taip. Auditorija: Kai sakote aiškinti, o ne renkami, tu kalbi apie jus ne reikia kaip speciali, kai kalbama apie PHP, palyginti su C? MARIA ZLATKOVA: Kai mes sakome, aiškinti, o ne renkami, Ką mums reiškia? Taigi, tai reiškia, kad mes nereikia Vykdomieji failai paleisti PHP. Tai reiškia, kad jis veikia, kaip jis eina. Ar tai prasminga? Šiek tiek daugiau. HANNAH Blumberg: Taigi jūs galima galvoti apie vertėjo kaip kitos programos, kuri yra atsakinga už ketinate eilutė po eilutės per PHP ir iš tikrųjų jį paleidus, o ne kad sudarant visa tai žemyn į dvejetainę. Tai nėra iš tikrųjų ką nors reiškia apie tai, kaip konkreti turime būti. Mes vis dar turime būti tikslūs, ir ne Pamiršote kabliataškį ir įsitikinkite, jūs turite savo dolerio ženklas, ir tokie dalykai kaip, kad. Geras klausimas. MARIA ZLATKOVA: Taip. Taigi eilutė po eilutės, kaip ne su C failus, mes turime padaryti visa finalą kol mes iš tikrųjų gali ją paleisti. Štai pagrindinis skirtumas. Bet vėl, mes negalime tikrai ne tokia konkreti. Taigi masyvai PHP atstovauti faktiškai užsisakyti žemėlapis. Taigi matricas asocijuotų vertybių raktus. Du būdai, kaip paskelbti masyvas, remiantis šia sintakse, mes galime būti aiškiau sakydamas turime masyvą ir mes turime šį key1 mapowaną tai 1 reikšmė, key2 kad žemėlapiai VALUE2. Arba mes galime tik sukurti masyvą kad yra vertybes pati ir tada raktai Suprantama, tokiu būdu,. Bet apie tai klausimai? Auditorija: kas būtų raktai būti antrame pavyzdyje? 0, 1, 2, 3? MARIA ZLATKOVA: Pavyzdžiui, tai tik šioje grupėje raktai nebūtinai padaryti skirtumą. Jie tiesiog apibrėžti, kaip jūs galite naudoti vertybes viduje ji. Taigi, jei mes turėjome foreach kilpa PHP, kad būtų leidžia mums pereiti per visus vertybes, mes galime eiti per visus vertybes, net jei mes turėjome arba nebuvo apibrėžta konkretus raktas per svetainės Ankstesnis sintaksė. Taigi net ir su šios rūšies iš masyvo, mes vis dar gali turėti foreach ciklas kad eina per kiekvieną iš masyve rakto reikšmių. Taigi foreach sintaksę kilpa, mes pradėti su masyvo. Ši $ arr kintamasis yra mūsų tikrasis masyvas kad mes apibrėžta ankstesniame šliaužiklio kaip vertės, tiesiog eina per kiekvieną iš verčių, nepriklausomai nuo to, ar mes turėjo raktą, ar ne. Ir tada mes galime padaryti kažką viduje iš foreach ciklas vertė. Taigi dar kartą, jei mes turėjome masyvą kaip tai čia created-- taip mes turime foo ir vertę raktą baras, Baz raktas ir vertė qux-- mes galime turėti foreach ciklą, kad eina per masyvo rakto ir tada kažką daryti su raktu, ir / arba vertė. Bet mes ne visada turėti foreach kilpų, kad eina per masyvą kaip pagrindinis žemėlapį į vertę. Mes galime eiti per foreach ciklas masyvo vertės. HANNAH Blumberg: Ir aš manau, to-- buvo jūsų klausimą, ką yra išvestinis indeksas? Auditorija: Kinda. MARIA ZLATKOVA: O. HANNAH Blumberg: Taip, taip. Taigi, iš esmės, jei nenurodysite pagrindinis, tai bus 01. MARIA ZLATKOVA: Taip. Kaip ir su C, tai nulis indeksuojami jei nenurodysite klavišą. Auditorija: Atsiprašau. Gal bandote kalbėti šiek tiek garsiau? Turiu šiek tiek problemų klausos viską. MARIA ZLATKOVA: Aš taip atsiprašau. Taip, žinoma. Taigi jūs norite mane eiti per šį kartą? Arba this-- Auditorija: Taigi ankstesniame slide-- jei galite tiesiog eiti atgal per vieną sekundę. MARIA ZLATKOVA: Žinoma, gaila. Auditorija: Taigi antrasis masyvas čia nėra atrodo, turi vertę, raktas, rūšiuoti [? priežastinio ryšio. ?] MARIA ZLATKOVA: Teisė, teisė. Auditorija: Taigi, kaip tai veikia kai jums sako, kad viskas arba nieko. Man atrodo, kad A [? foo?] jau. MARIA ZLATKOVA: Taip, taip. Taigi dar kartą, tai yra įsakė žemėlapis šia prasme kad yra suprantami, Pavyzdžiui, indeksai čia gali būti suprantama kaip 0, 1, 2, 3. Vėlgi, tai turi tie, indeksai yra mūsų lygiavertis turėti raktus surišti vertybes. Taigi, jei mūsų raktas buvo 0-- atsiprašau. HANNAH Blumberg: Ne, ten kreida čia. Tai tikrai tikrai gražus. MARIA ZLATKOVA: Tai puiku. GERAI. Taigi dar kartą, $ arr 0 būtų už vertės 1 raktas. 0 būtų už vertės 1 raktas. Auditorija: aš atsiprašau. Tai nematomas. HANNAH Blumberg: Gerai, nevermind. Kreida buvo prasta idėja. Aš jį atgal. Jūs galite galvoti apie raktus kaip 0 žemėlapių vertės 1 d. MARIA ZLATKOVA: Taip. Taigi, šis yra 0, tai yra 1, 2, 3. Tai gali būti jūsų raktai. Jūs galite galvoti apie juos as-- taip. Taigi vietoj to, aiškūs mygtukai, jie rūšiuoti suprantama kaip indeksai pradedant 0. Kreida nepadėjo. Taip. Auditorija: Kad foreach ciklas, jei mes norėjome peržiūrėti kaip vertės, jis tiesiog automatiškai indeksą 0? MARIA ZLATKOVA: Taip. Būtų pereiti per kiekvieną iš reikšmių. Auditorija: [nesigirdi] kaip 0 arba būtų, kad tik padaryti 0? MARIA ZLATKOVA: Jums reikės pasakyti, kaip dolerio ženklas ir tada kai kintamojo vardas, vertė. Auditorija: [nesigirdi]. MARIA ZLATKOVA: Atsiprašome? Auditorija: Atsiprašome, aš tiesiog bando prisiminti. Kaip jūs darytumėte, kad jei galite tai padaryti automatiškai indeksavimas yra vos 0 iš? MARIA ZLATKOVA: Taigi, kaip jūs darytumėte, kad Jei neturėjo konkrečios esminės pavadinimus? Auditorija: Taip. MARIA ZLATKOVA: Jūs tiesiog define-- tiesiog pasakyti sau kaip nors pavadinimą. Taigi, jūsų psets, jūs vaikinai gali prisiminti foreach $ eilutę kaip $ eilutės, mes sukūrėme Save šį $ eilutę sakydamas mes norime eiti per eilės, kaip $ eilučių. Nors mes neturėjome Tai aiškus $ eilutės apibrėžta, galėtume tiesiog eiti ir sako tai gali būti mūsų pagrindinis, ir tiesiog pereiti per kiekvieną iš reikšmių. Auditorija: Taigi yra vertė naujas kintamasis mes sukurti saugoti [nesigirdi]? MARIA ZLATKOVA: Taigi tai ne prigimties naujas kintamasis. Tai kintamasis, kuris nurodo į viduje į kiekvieną iš jų masyvo. HANNAH Blumberg: Tai naujas kintamojo vardas. MARIA ZLATKOVA: Taip, tai yra nauja kintamojo vardas, Bet tai ne inherently-- taip. Tai tiesiog naujas kintamasis kad jūs galite padaryti, kad. Taigi tiesiog kaip mes padarėme $ eilės, kaip $ eilutės, eilutės buvo nauja kintamojo pavadinimą, kad mes gali sukurti mūsų foreach ciklas. Jis neturi Gyvuoti prieš tai. Auditorija: Ar jūs einate per logika kiekvienas, naudojant pavyzdį ten? MARIA ZLATKOVA: Mhm. O, atsiprašau. Štai pavyzdys. Tikrai. Taigi kiekvienas array-- taip tai reiškia, kad eiti į šio masyvo kaip raktą value--, kad vyksta eiti per šio masyvo ir pirmą kartą eiti ir gauti foo, The pagrindinis rūšys ir reikšmė baras. Ir tada antras pasikartojančių už kilpos, jis ketina pereiti ir imtis pagrindinis bazių ir vertė qux. Ir tada jūs galite padaryti kažką bet kuri iš jų arba abu iš jų. Auditorija: Taigi idėja turintys pagrindinį tašką, vertei, Ką jūs galų gale gauti? MARIA ZLATKOVA: Kas yra idėja turintys pagrindinis nukreipta į vertę? Tai tik dar vienas konvencija, dar būdas išgyvena masyvo ir kad galėtų prieiti Arba mygtuką arba vertė arba abu, ir juos naudoti. Auditorija: Kokia vaidmuo pareikalauti, kad foreach veikia? Taigi, jei mes pridėti elementai masyvo vėliau būtų tie būti pirmieji vadinamas į foreach masyvas, ar tai būtų vėliau? MARIA ZLATKOVA: Taigi, kas yra įsakymas, kad foreach kilpa eina per išsirikiavo? Jis eina per pirmas elementas paskutinį elementą, iki paskutinio pridėtinės elemento. Jei norite pridėti elementus vėliau, jie būtų būti accessed-- pirmieji elementai būtų būti atvertas kaip pirmas elementai masyvas, ir tada jūs einate per kiekvieną kad kaip rūšies yra ordered-- elementai ne padengti, bet taip, kad jie buvo įdėti į masyvą. Auditorija: Taigi nauji elementai papildomas vėliau? Taigi jie added-- jie bus paskutiniai į [? iteracijos. ?] MARIA ZLATKOVA: nauji elementai can-- Iš esmės, kai nauji elementai yra pridėta, jie pridėti prie masyvo pabaigos? Auditorija: Taip. MARIA ZLATKOVA: Manau, kad. Taip. Ir tada su savo foreach ciklas, Pridėję naujus elementus ir jums eiti per juos, nauji elementai būtų būti accessed-- naują elementą, jei tai įtraukta paskutinis, ji bus atvertas paskutinis. Auditorija: Ar jūs tiesiog pateikite pavyzdį kažką, kad būtų [nesigirdi] su kažkuo, kurių vertė kaip [nesigirdi] arba vertę, patinka, kaip jūs formatas, kuris? MARIA ZLATKOVA: Žinoma. Ar galiu pateikti pavyzdžiu, ką mes daryti su verte? Taigi, ką jūs vaikinai gali būti susipažinę su yra tai, kad mes išgyveno masyvo ir iš esmės spausdinami kiekvieną iš elementų, pavyzdžiui, kaip dalis įsakė sąrašas ar kažkas, kad. Ar tai prasminga ar mes norime to-- Auditorija: Ar mes galime spausdinti šias vertybes iš kitų? MARIA ZLATKOVA: Taip, mes galime spausdinti ir tada iš esmės $ vertę, nes ne kad konkreti vertė, mes būtume spausdinimas viduje jo vertę. Taigi, jei mes buvome mūsų pirmajam iteracijos tai ir mes spausdinami $ vertę, mes būtume spausdinimo baras. Auditorija: Ar yra taip pat kilpos PHP ar tiesiog foreach kilpos? MARIA ZLATKOVA: Yra taip pat vyrių į PHP. Ir jų logika yra beveik tokios pats, ką jūs jau naudojamas. Auditorija: Taigi jos vertė yra niekinis. MARIA ZLATKOVA: Tai kaip tas pats. Taip. Auditorija: aš tik ketina prašyti. Taigi, kai jūs paskelbti masyvas, jums nereikia pasakyti, kokio dydžio jis ketina būti, o tai reiškia, kad galite tiesiog pridėti ir atimti elementų [nesigirdi]. MARIA ZLATKOVA: Yup. Taip. Būtent. Kai mes pareiškiame masyvą, mes nereikia sakyti, kokio dydžio ji yra, todėl mes galime tiesiog pridėkite elementus ant vėliau ji taip pat. Daugiau klausimų? Taigi pareikšti PHP ir HTML kartu, ką mes seen-- gerai, Pavyzdžiui, šiame pavyzdyje, turime HTML forma, kuri turi įvesties lauką. Ir įvesties laukas yra tik pavadinimas ir tada jis turi mygtuką Pateikti. Ir kai jūs paspauskite Submit mygtuką, mūsų hello.php failą, nes už forma metodas yra gauti, mes galime prieiti kokia yra pavadinimas pagal tai gauti pasaulinį kintamąjį, kad is-- sintaksę, nes tai yra $ _GET. Ir tada mes galime prieiti kokia naudotojo įvesties viduje tos formos pavadinimas nurodant, kad šios srities pavadinimą. Visi kiti klausimai ar bet klausimai šiuo konkrečiu pavyzdžiui? Auditorija: Kur yra PHP? MARIA ZLATKOVA: Čia. Taigi tai yra mūsų atidarymo tegus PHP. AUDITORIJA: O, tiesa. MARIA ZLATKOVA: Taip. HANNAH Blumberg:? = Sutrumpintai tai yra PHP ir tik aidas. AUDITORIJA: O. MARIA ZLATKOVA: Taip, atsiprašau. Aš turėjo padaryti, kad aišku. HANNAH Blumberg: spausdinti. MARIA ZLATKOVA: Tai tik funkcija kuri leidžia mums spausdinti kažką. Didelis klausimas. Taigi going-- taip. Auditorija: Ar yra bus gana iš rankų kodavimas PHP ir HTML tiek nuo Quiz 1? MARIA ZLATKOVA: Gali būti Nemaža aiškinimo PHP ir HTML, nebūtinai kaip didžiulis kodavimo, nors jums gali tekti parašyti foreach ciklas, nors už kilpa. Bet kuris iš kilpų, kad mes padengti čia yra teisingas žaidimas. Ir tai dažniausiai tai. HANNAH Blumberg: būčiau pasirengęs. Lygiai taip pat, kad mes paprašėme jūsų rašyti viktorina 0 A C funkcijų krūva, Būčiau pasirengęs padaryti pats PHP ir JavaScript. MARIA ZLATKOVA: Taip. HANNAH Blumberg: Sakyčiau, little-- kaip mes ne vyksta, kad jums parašyti didžiulis HTML puslapis tik todėl, kad yra šiek tiek varginantis, tačiau jums gali tekti dalių. Štai visiškai teisingas žaidimas. Kaip mažą HTML puslapį, visiškai teisinga. Auditorija: Gerai. Kaip apie JavaScript, taip pat? HANNAH Blumberg: Taip. JavaScript yra teisingas žaidimas. MARIA ZLATKOVA: Taip. Štai visiškai teisingas žaidimas. HANNAH Blumberg: Mes gausite į tą, kuris, kaip 10 minučių. MARIA ZLATKOVA: SQL, vėlgi, Struktūrinių užklausų kalba. Ji iš esmės leidžia mums valdyti duomenis į reliacinės duomenų bazės valdymo sistema. Tai tiesiog iš esmės reiškia, kad mes turime kažkur saugoti kai kuriuos duomenis, kad mes galbūt norėsite naudoti tinklalapyje ar kitu pavidalu. Ir tada mes turime užklausas gauti informaciją iš mūsų duomenų bazės, arba įrašyti informaciją apie juos. Iš bendros ones-- UPDATE daug, ĮRAŠYTI, pasirinkite ir ištrinti. Taigi UPDATE, tai yra sintaksė atnaujinimo duomenis į duomenų bazę. Atnaujinama šią lentelę, pavadintą stalo sakydamas SET, mes galime nustatyti keletą Visos reikšmės eilučių vienodo kažkas. Taigi mes taip pat galite nurodyti, kai konkretus įrašų, kad mes norime keisti ir kad gali būti prireikus naudojant. Ir mes galime nurodyti, kad mes tik norime pakeisti kai eilutes, kur už namo, jei mes turėjome studentų lentelę ir visi studentai turėjo namą, todėl būtų tik pakeisti kai vertybes kai namas yra lygus Kurier, pavyzdžiui. Dėl INSERT, mes galime įterpti tam tikros vertybės į lentelę. Taigi INSERT INTO lentelės ir tada vertes, ir tada skliausteliuose, mes nurodyti kuri vertina norite įterpti. Taigi INSERT INTO lentelės, col1 ir col2, vertė yra VAL1 ir VAL2. Taigi tai įterpia iš esmės naują eilutę į kuriame pateikiamos reikšmes 1 ir 2 pagal 1 ir 2 stulpelių. Ir tada mes ketiname eiti per greitas pavyzdys, kaip tai atrodo kaip mūsų duomenų bazėje truputį. Bet tai galutinis užklausa, kad aš manau, kad mes ketiname eiti per, PASIRINKTI, jis tiesiog leidžia mums pasirinkti duomenis iš lentelės galbūt jį naudoti vėliau. Ir kaip mes tai padaryti mes tiesiog laikyti jį tam tikru kintamuoju. Ir tada mes galbūt gali jį naudoti dar kartą. Taigi PASIRINKTI žvaigždutė reiškia pasirinkti visus. Tai tik trumpa atrankos visiems. IŠ lentelę, kurioje, mes ieškome kai kurioms specifinėms sąlygoms, taip, jei stulpelyje yra lygus kažkas, pavyzdžiui. Jei mes tiesiog norėjau Atrinkti visus nuo stalo, tai tik parenka visus stulpelius ir visos eilutės iš lentelės. Ir tada DELETE FROM stalo KUR sp lygus kažką, tai tik ištrina kai eilėje iš mūsų stalo kur mes turime tam tikras specialias sąlygas. Šiuo atveju, sąlygos yra stulpelis lygus kažką. Taigi tik greitas pavyzdys. Jei mes turime šią lentelę čia ir mes jį įterpti į lentelę, šios reikšmės, kad būtų įterpti naują eilutę. Ir jei mes turėjo automatinį prieaugį, tai tik prieaugio mūsų ID nuo 0 iki 1 iki 2. Jei mes išrinkome visi iš studentų, ją tiesiog grįžta visus laukus ir visus eilučių. Kur m yra didesnis nei arba lygus 2016, kad būtų tiesiog grįžti Ona ir aš. Ir tada, jei mes tiesiog pasirinktas metų tapatybės ir metus studentai kur namas yra Cabot namai, kad būtų vėl grįžti Oną ir save. Tada, jei mes išbraukiami iš studentų kur vardas yra lygus Rob, kad būtų ištrinti visą eilutę. Ir tada, jei mes nustatome Vardas, atnaujinkite studentai SET vardas lygi Daven KUR namas yra lygi Cabot namai, kad ketina eiti į tie eilutės ir tada atnaujinti vardą. Ir tada keli SQL duomenų tipai yra CHAR, VARCHAR, INT, ir plaustas. Tai yra teisingas žaidimas. Norėčiau eiti vėl ir įsitikinkite, kad žinote, ir turi juos savo Cheat sheet, ką kiekvienas iš tų ženklų buvo naudojami, kokia Jūs naudojote juos savo psets, ir įsitikinkite, kad esate susipažinę ir patogu turintys pasirinkti iš skirtingų duomenų tipų savo pset. Taip. Auditorija: Kas buvo, kad stalo saugomi? Taip, kur yra ši lentelė saugomi? MARIA ZLATKOVA: Na, dabar, tai nėra saugomi. Bet kokiu atveju, kur yra ši lentelė saugomi? Tačiau jis gali būti saugomi SQL duomenų bazės. Auditorija: O kur yra SQL duomenų bazės? Be kompiuterio, interneto kažkur, serveris? MARIA ZLATKOVA: Tai gali būti Taškų įvairių dalykų. HANNAH Blumberg: Mes susieti su SQL lenteles daugiausia su phpMyAdmin. Taigi, mes galime paklausti serverį saugoti juos mums. Galėtume juos laikyti mūsų kompiuteryje. MARIA ZLATKOVA: Tai tiesiog priklauso nuo kaip norite tai padaryti patys. Bet mes jau saugojimo jiems, kaip minėta Ona, phpMyAdmin, kuri yra internete. Ir tada, kaip mes naudojame PHP ir SQL, mes jį laikyti į tam tikrą kintamojo ką mes užklausti dėl. Taigi, jei mes Atrinkti visus iš istorijos kur user_id lygus Session ID, kad būtų pasirinkti visus eilutes konkrečiam asmeniui, kuris yra prisijungęs iš istorijos stalas ir rūšiuoti juos į eilučių. Cool dalykas žinoti kad CS50 užklausą funkcija apsaugo nuo SQL injection žymes. Tai tiesiog reiškia, kad ji užtikrina, įėjimo, kad būtų įvestas teisingas ir kad asmuo, kuris įeina į įvestį ne bando įvesti kai kenksminga kodas arba lašas mūsų stalų arba ištrinti viską viduje mūsų duomenų bazės. Trumpa apžvalga iš Modelis Peržiūrėti kontrolierius modelis tai tik organizuoti būdas ir galvoju apie kodą. Tai vėl, projektavimo paradigma. Tai, kas reiškia, kad yra tai, kad mes can-- ir gera praktika atskirti skirtingų dalių Mūsų kodą ir ką jie kontroliuoti į šių trijų paradigmų. Taigi, mūsų požiūris yra dažniausiai mūsų šablonai, mūsų išdėstymą, būdas kad mes nustatyti, kaip mūsų kodas atrodo. Štai dažniausiai mūsų CSS failai ir būdas kad mes apibrėžti mūsų kodą dizainas, iš esmės. Mūsų valdiklis yra daugiausia, ką mes jau darome su PHP failus. Taigi dar kartą, dirbti su informacija, kad mes turime ir apibrėžti, kaip tai informacija yra naudojama, ir tada artimųjų, kad informacija arba ant mano arba modelį. Ir modelis, taip, kad mes naudoju, kai ji buvo mūsų duomenų bazėje, taip, kur mūsų informacija saugomi, todėl jis turi kažkur gyvena, ir bet kurio iš kodas, kuris yra susijęs su tuo, kaip kad mes gauti šią informaciją arba būdas, kad mes šią informaciją atnaujina. Taigi, MVC modelį, HTTP prašymai siunčiami į interneto serverį. Tada valdiklis interpretuoja prašymas iš naudotojo ir tada patvirtina vartotojo įvestį. Tai neprivaloma, kad mes turime valdytojas bendrauti su modeliu, todėl kažką kaip mūsų duomenų bazėje ar kokios nors kitos funkcijos kad relės informaciją. Ir tada, pagaliau, valdiklis eina informacija į mano taip, kad ji gali būti priimtas, ir kad ji gali tampa matoma bet kuriam asmeniui, patekti į tinklalapį. Turite klausimų? Nuostabus. Taigi dar kartą, modelis, jo funkcija, vėl, yra patvari informacijos saugojimas, valdyti ir organizuoti duomenis. Ir ką mes matėme, kad kas yra MySQL duomenų bazės ir bet kokius duomenų failus, kurie gali naudoti. Peržiūrėti pateikimas informacijos vartotojas, UI arba vartotojo sąsaja. Ir šis pavyzdys yra HTML. Ir tada mes galime turėti minimalų PHP. Taigi už kilpos, kad kartojasi daugiau duomenų, kurie yra išspausdinti yra dalis: vaizdas, kaip priešingai reguliatoriumi. Ir tada mūsų PHP failus daug patenka į valdiklio kategorijas. Jis tiesiog rankenos vartotojų prašymų ir gauna informaciją iš modelio. Šuoliai į dokumentą Objektas Modelis, tai tik nurodo, kaip HTML dokumentai yra organizuotas. Ir jie organizuojami į medį struktūra, kuri turi hierarchijos. Taigi, jei mes turime prieigą prie [nesigirdi] pavaizdavimas dokumento, galime dirbti su dokumentu, pavyzdžiui, mes manipuliuoti objektus iš esmės. Ir padaryti tai šiek tiek aiškiau, kai mes turime daug mūsų Įvairios žymės atsakyti skirtingų maršrutų mūsų medžiu. Ir tada šiame pavyzdyje, mes turi pradinį dokumento mazgas. Mes turime, tada, mūsų HTML mazgas kad skyla į galvą ir kūną. Vadovas turi pavadinimą ir tada pavadinimas yra Hello, World. Ir mūsų kūnas tiesiog yra Labas, pasauli, taip pat. Taigi kokių nors klausimų dėl bet kurios dalykų, kad mes, kuriems iki šiol? O jei ne, Ona bus perimti JavaScript. Nuostabus. HANNAH Blumberg: Gerai, gerai. Jei kas nors ateina su PHP arba HTML arba bet stuff Marija, kuriai, mes visada galime pristabdyti. Mes darome geriau laikas vėl, todėl nuostabus. Ir tik grįžti tikrai greitai tai, jei peržvelgsite kiekvieną praėjusių metų egzamino, tai ateina either-- čia kai HTML, padaryti šią schemą. Arba štai ši schema, padaryti kai HTML, todėl tikrai praktikuoti tai. Ir tada, kad viena su garantija klausimas, kad jūs galite gauti į dešinę. Kietas. Taigi pakalbėkime apie JavaScript ir kaip tai šiek tiek skiriasi nuo kalbomis, pavyzdžiui, PHP ir C, dvi kalbos matėme iš anksto. Taigi numeris vienas, tai silpnai įvedėte. Tai kaip PHP, tačiau, skirtingai nei C Tai aiškinama kalba. Vėlgi, tai, kaip PHP, skirtingai nuo C ir tai ketina leisti mums use-- ją veikia tikrai gražiai su interneto svetainėse. Ji ketina leisti mums manipuliuoti turinys ir kaip jis atrodo ir ką jis daro. Mes ketiname pamatyti šiek tiek "Ajax". Tai leidžia mums bendrauti asinchroniškai su skirtingais serveriais ir gauti informaciją. Ir tai yra dalykas, kad tikrai atskiria JavaScript nuo PHP ir C yra tai, kad jis yra kliento pusėje. Tiek PHP ir C yra paprastai serverio pusėje. Nes didžioji dalis, ir beveik visiškai ką matėme, bent jau Ši klasė, "JavaScript" veikia kliento pusėje, o tai reiškia, kad naršyklė yra iš tikrųjų atsakingas už paleisti jį. Ir tai reiškia, kad mes ne reikia bendrauti su serverio. Taigi, tai reiškia, kad jis gali būti daug greičiau nes tai iš tikrųjų tik tai Chrome ", tai Safari, tai "Firefox", ką jūs naudoti iš tikrųjų veikia jūsų "JavaScript". Auditorija: Ką asinchroninis reiškia? HANNAH Blumberg: Ak, koks ar asinchroniškai reiškia? Didelis klausimas. Asinchroniškai means-- Na, kiekis, kuris mes naudojame tai, gerai, mes yra kurti tinklalapį ir mes turime gauti tam tikrą informaciją. Taigi, su Mashup Pavyzdžiui, tam tikra informacija, kad mes galbūt norėsite yra straipsnis pavadinimai. Dabar mes could-- vieną variantą yra daryti sinchroniškai o tai reiškia, tegul sustabdyti, eikite gauti straipsnį, gauti straipsnyje nugarą, o tada padaryti, bet tai būtų tikrai lėtai. Tai būtų blogas vartotojo patirtį nes jūs tiesiog sėdėti ten laukia kažkas atsakyti. Asinchroniškai reiškia mes toliau vyksta apie savo verslą, teikiant puslapį, ir mes atsiųsime išjungti prašymą Tai tipo ketinate atsitikti fone. Manau, mes naudojame pavyzdyje paskaita, iš kurios skambinama Rob ir sakydami: Ei, jūs galite surasti tai iki man ir grįžti į mane, o ne tik man laukia telefonu. Taigi asinchroniškai reiškia, kad ji vyksta fone nuo mūsų lygiagrečiai. Didelis klausimas. Kasnors dar? Didysis. Mes šokinėti daug daugiau į asinchroniniai prašymai su Ajax. Auditorija: Ar JavaScript-- kur daro jis patenka su MVC? HANNAH Blumberg: Didžioji klausimas. Kur JavaScript rudenį su MVC? Hm. Aš manau, kad jis gali fall-- todėl paprastai nėra patinka Squish ją į tą paradigma, bet aš manau, sakyčiau, Gerai, kad "JavaScript" iš tikrųjų ketina leisti mums surinkti duomenis, interpretuoti duomenis, iš tikrųjų prasmingų dalykų su duomenimis. Tokiu būdu, tai labai kontrolės pan. Bet tai taip pat ketina leisti mums rodyti dalykų ir spausdinimo dalykų. Tokiu būdu, tai labai Peržiūrėti panašūs. Taip. Taigi, tai lyg PHP kur ji gali rūšies būti tiek. Geras klausimas. Kasnors dar? Gerai, nuostabus. Persikėlimas į dešinę kartu. Taigi pažiūrėkime pavyzdį kaip mes galime naudoti JavaScript vieną iš mūsų interneto programas. Taigi aš, kad tai index.html su HTML krūva. Ir dalykas, kurį noriu jums sutelkti dėmesį į tai scenarijus žymė. Ir tai sako, gerai, aš noriu paleisti kai JavaScript ir čia yra, kur jis gyvena. Jis gyvena hello.js. Ir labai daug, kaip CSS, mes galime įdėti JavaScript per HTML. Kodėl mes norime, kad atskirtumėte jį? Taip. Auditorija: Lengviau perrašyti? HANNAH Blumberg: Taip. Tai lengviau naudotis visoje skirtingi tinklalapiai. Jis išvaduoja švaresnis. Tai tiesiog gera praktika. Nuostabus. Geras atsakymas. Taigi gerai, todėl tai vyksta būti mūsų index.html. Ir tada žemyn čia yra mūsų maža maža failas JavaScript. Ir visa tai sako yra perspėjimas Labas, pasauli. Taigi, kas atsitinka, kai šiuo puslapiu renders-- todėl, jei jūs einate į bet kokios svetainės tai is-- visa tai nutiks jis ketina pasakyti, gerai, aš ketina paleisti šią JavaScript kodą. Ir tai JavaScript kodą tiesiog sako perspėjimas Labas, pasauli. Taigi, aš ruošiuosi gauti šią draugiškas tiek pop-up. Kietas? Tai tipo kaip mūsų pats pirmas JavaScript programa, mūsų Labas, pasauli. Pažvelkime šiek tiek daugiau apie tai, ką "JavaScript sintaksė atrodo. Ir konkrečiai, galime palyginti ją C ir PHP, kurį mes matėme anksčiau. Be JavaScript, mes ketiname turėti var, kintamojo vardas, ir tada jo tikroji vertė. Ir mes neturime nurodyti rūšį, tiesiog kaip PHP, bet labai skirtingai C Taigi, pavyzdžiui, jei mes norėjome laikyti vertę 50, C, mes turime pasakyti, ei, C, noriu sveikasis skaičius, Aš ruošiuosi jį vadiname i, o jos vertė yra 50. PHP, tai šiek tiek lengviau. Mes sakome, ei, aš noriu kintamąjį vadinamas I ir jo vertė yra 50. Labai panašiai, JavaScript, mes sako ei, aš noriu kintamasis vadinamas i, jos vertė yra 50. Kiekvienas paskesnis laikas, kad aš naudoju I nereikia rašyti var. Tai tiesiog aš iš to taško. Tuo pačiu būdu,, C, kur kai mes sakome, int i, mes tiesiog naudokite i. Kietas? Gerai. Pereinant prie kilpos, Laimei, tai beveik ieškoti exactly-- Manau, kad jie lygiai tas pats, ką kilpos ketinate atrodyti kažkas panašaus į C, kur yra jūsų for ciklas ketina turėti tris parts-- iniciacijos, būklė ir atnaujinimas. Kurį laiką kilpa, jis atrodo lygiai toks pats. Mes tiesiog suteikti jai būklę. Ir do while cikle, vėl, lygiai taip pat,. Mes suteikiame jis sąlyga. Tarkime, aš norėjau pakartoti over-- Norėjau daryti kažką penkis kartus. C, mes galime rašyti už init i lygus 0. i yra mažesnis nei 5, i ++. Tik skirtumas, JavaScript, Užuot pasakęs int i lygus 0, mes sakome var i lygus 0. Gražus. Tai vienintelis skirtumas. Bet dėl ​​to klausimų? Taip. Auditorija: Taigi PHP, tai tas pats dalykas, išskyrus atvejus, tačiau, kaip kintamąjį? Arba buvo toks var pavyzdžiui? HANNAH Blumberg: Taip. Taigi PHP, ji vyksta būti dolerio ženklas. Taigi jis ketina $ i lygiųjų 0, $ i yra mažesnis nei 5, $ i ++. Didelis klausimas. Dabar pakalbėkime apie funkcija deklaracijos. C, kai mes deklaruotas funkcija, mes davė jam vardą ir mes jį davė kai kuriuos parametrus. Ir pradžioje, mes rašė tipą. Be JavaScript, visi mes tereikia parašyti raktažodžių funkcija, sako, ei, JavaScript, Aš apie apibrėžti funkciją. Šiuo atveju, ji turi pavadinimas suma. Ir tai trunka du argumentus, X ir Y. Atkreipkite dėmesį, kad mes nerūpi apie x ir y tipų. Ir kaip C, turime Šis raktažodis grąža, todėl mes galime padaryti kažką kaip grįžimo x ir y. Ir dabar, kai mes parašiau tai pirmas funkcija, mes galime naudoti sumą visur. Ir tai visiškai gerai. Vienas tikrai cool dalykas apie JavaScript, kad yra labai skirtingai C yra ta, kad funkcijos gali būti traktuojami kaip vertybių. Taigi, mes galime padaryti kažką panašaus čia kur aš manau, aš padengti tai up-- Aš, kuriems iki var sumą part-- ir mes ką tik pasakė funkcija xy lygus grąžinimo x plus y. Tai yra tai, ką būtų galima pavadinti anoniminis funkcija. Tai be pavadinimo funkcija. Kadangi ši sako funkcija suma, bla, bla, bla, tai tiesiog pasakyti funkciją. Bet dabar, nors turiu Tai anoniminė funkcija, kad funkcija yra tikrai tik vertė. Mes galime traktuoti kaip vertybė. Taigi, mes galime išsaugoti jį kintamajam tas pats būdas galėtume laikyti 50 kintamąjį. Taigi, mes galime pasakyti, gerai, aš noriu kintamasis, tai vadinama suma, ir ji yra ši funkcija. Taigi šie du dalykai yra iš tikrųjų ketina daryti tą patį dalyką, bet sintaksė yra šiek tiek skiriasi ir rūšies įdomus dėmesį. Taip. Auditorija: Taigi jums gali skambinti funkcija, kuri buvo anoniminė, sakydamas, sum laikiklius 2, 5? HANNAH Blumberg: Taip. Galite skambinti šiuo anonimiškai funkcija tuo pačiu būdu. Jūs darytumėte sumą (2, 5) ;. Tai būtų visiškai gerai. Jei aš nepadarė var suma yra lygi funkcija, jei aš tiesiog ištrinti this-- aš žinau, tai ant mano rankos, bet apsimesti Aš ištrynė this-- tada kad funkcija rūšies tiesiog dingo. Jūs niekada negali naudoti jį dar kartą, nes Jūs neturite už jį pavadinimą. Sunku kreiptis į kažką jūs nežinote, ką skambinti. Geras klausimas. Taip. Auditorija: Ar galite nuoroda sumą kitose vietose su x plius y vertę? HANNAH Blumberg: Ar galite nuoroda suma kitose vietose su x vertė plius y? Aš nesu visiškai tikras, ką reiškia. Auditorija: Taigi savo praeitį pusiau anoniminis funkcija yra suma yra lygi tai Anoniminis funkciją, todėl suma yra dabar kintamas, kad jūs can-- HANNAH Blumberg: Teisė. Taigi suma yra kintamasis, bet tai actually-- taip, suma yra kintamas, kurio reikšmė yra funkcija. Taigi, tai yra funkcija, kuri yra rūšies Keistas dalykas, į kuriuos vyniojami aplink galvą nes mes jau žaisti su C, ir jūs negalite padaryti, kad C. Bet dabar mes galime skambinti susumuotų pačiu būdu galėtume vadinti sumą čia. Auditorija: Gerai. HANNAH Blumberg: Taip. Geras klausimas. Taip. Auditorija: Taigi mes Nenaudokite prototipų PHP arba JavaScript? HANNAH Blumberg: Ne, mes nereikia naudoti prototipų, ypač JavaScript. Taigi vienas blogas dalykas, praktika, kad aš ketinate pasakyti, kad jūs neturėtumėte daryti yra jūs neturite rašyti var i = 50. Jūs galite tiesiog pradėti daryti i = 50. Ir būtų tiesiog padaryti i pasaulinė kintamasis. Tai labai bloga praktika, kad never say to aiškiai var i, bet tai ką jūs galite padaryti. Vertėjas nėra ketina klykauti ne jums. JavaScript yra gana panašus, galite daryti ką norite. O, atsiprašau. Yra du. Oranžinės kelnės. Pirmyn. Auditorija: Ne, tu pirmas. Auditorija: Ne, aš tiesiog pasakyti Aš neturėjau mano ranką. GERAI. Taigi, jei jums buvo skambinti kad pirmą kartą, dabar Apibendrinant, mes jį vadiname tas pats būdas, X, y, kaip kiekvieną kartą? HANNAH Blumberg: Taip. Taigi šie du esmės padaryti tą patį. Auditorija: Ir kas yra privalumas naudojant vieną arba kitą? HANNAH Blumberg: Nėra privalumas naudojant vieną arba kitą. Aš tik norėjau parodyti jums du skirtingų vienetų sintaksė. Kur anoniminė Daug kartų funkcijos turiu tikslą yra, jei į kitą argumentą funkcija turėtų būti funkcija. Ir mes pamatysime, kad tik antras su Ajax. Taigi, jei tai nebuvo jokios prasmės, laikyti jį į savo pakaušį. Štai kur anoniminis funkcija gali būti naudinga, nes tai tikrai ne verta suteikiant jai vardą, nes mes tiesiog ketina jį naudoti iš karto. Taip. Auditorija: Jei X ir Y pokytis vėliau įjungtas, bus susumuoti keisti, taip pat? HANNAH Blumberg: Jei X ir Y pokytis vėliau, bus susumuoti keisti, taip pat? Taigi tai yra iš tikrųjų aš manau, kažką, kad, vėl, ji tiesiog jaučiasi labai skiriasi iš C. Tai nėra vertė. Tai ne 5. Tai tiesiog pati funkcija. Taigi kuo greičiau, kad tai parametrai, tada jūs iš tikrųjų apskaičiuoti vertę. MARIA ZLATKOVA: Ir tada galite skambinti funkcija ir naudoti jį gauti tam tikrą vertę. HANNAH Blumberg: Teisė. Būtent. Taip. Auditorija: Taigi, jei jūs tiesiog laikyti jį į kintamąjį, kaip var x lygus sumai dviejų values-- HANNAH Blumberg: Taip. Taigi jums gali tiesiog daryti var sumą lygus sumai dviejų reikšmių. Taip. Visi kiti klausimai? Taip. Auditorija: Bet norėčiau, kad painioja sumą ir sumą? Pavyzdžiui, jei Jūs skambinate savo kintamą sumą, Jūs skambinti funkcija sumą? HANNAH Blumberg: mm. Mm. Jei tu kažką kaip, suma yra lygi suma 2, 5? Auditorija: Taip. HANNAH Blumberg: Manau, kad būtų perrašyti sumos vertę. Taigi dar vienas įdomus dalykas, apie JavaScript yra tai, kad tik vienas kintamas gali būti nuo įvairių tipų krūva. Blogas praktika. Jūs neturėtumėte daryti kažką kaip ką tik pasakė. Tačiau C, jei aš nustatytas lygus sveikasis skaičius, mes žinome, kad tai niekada ketina tapti eilutė. Tai ne "JavaScript" atveju. Taip, geras klausimas. Kasnors dar? Gerai. Daro viską teisę laiku. Išlaikyti vyksta. Gerai. Jei pažvelgsime į masyvą JavaScript, čia greitas pavyzdys stygų masyvo. Ir masyvai gali augti dinamiškai. Jie neturi turėti fiksuoto dydžio tas pats būdas kad jie C Galime prieiti prie elementai tik su laužtiniuose skliaustuose. Tai atrodo kaip PHP ir daug daug pavyzdžiui, C, kur galime pasakyti, šiuo atveju, jei aš norėjau žodį JavaScript, aš norėčiau do ARR skliaustus su 0, 1, 2. Ir tada, jei pamenate, C, kai mes norėjo gauti masyvo ilgį, tai buvo tikrai erzina. Bet JavaScript, super lengva. Visi mes darome, .length. Suteikia jai ilgio. Viskas. Auditorija: Štai paprasta. HANNAH Blumberg: Taip, daro jūsų gyvenimą daug lengviau. Gerai, object-- nėra. Objektai JavaScript jaustis panašus structs C daug ir asociatyvių masyvai PHP. Taigi, ką mes matėme daug yra JSON, kuris reiškia JavaScript Object žymėjimo aprašas. Ir tai iš esmės yra būdas struktūrizavimo mūsų duomenų. Taigi pažiūrėkime pavyzdį, turbūt lengviausias. Taigi čia rasite objekto pavyzdys kad saugo klasę, CS50. Ir kai aš sakau klasę, aš turiu galvoje, žinoma, ne like-- Taip, žinoma, CS50. Ir jūs pamatysite, kad viskas objektą bus pateikta į garbanotas petnešos. Ir mes pradedame bendrauti laukų pavadinimus arba raktai su įvairiomis vertybėmis. Taigi galite pradėti pamatyti, kaip šios rūšies jaučiasi masyvą PHP. Taigi mes ketiname susieti sritis arba raktas vardas, žinoma, su eilutę, CS50. Mes ketiname turėti instruktorius. Mes ketiname turėti TFS. Mes ketiname turėti skaičių psets ir mes ketiname įrašyti. Ir vienas kietas dalykas, reikia pažymėti visus šie dalykai turi skirtingus tipus, ir tai visiškai gerai. Tai bauda už objekto, iš tiesų, tai tikriausiai tikimasi objekto turėti stygų derinys ir numerius ir loginę ir masyvai ir kas nors jums gali nori turėti viduje objektas. Ir pažymi, kad jie bus vardai ar raktus, ir tada mes tiesiog nustatyti, kad jis lygus su trupučiu dvitaškis. Auditorija: Ką tiksliai reiškia JSON reiškia? HANNAH Blumberg: Kas tiksliai reiškia JSON reiškia? JSON tiesiog stovi JavaScript objektas Žymėjimas. Tai tik keletas iš formatavimo būdas. Taip. Tai formatavimo mūsų duomenų būdas. C, tai structs. PHP, tai asociatyvias masyvus. Be JavaScript, turime objektus. Auditorija: Taigi CS50 yra objektas? HANNAH Blumberg: CS50 yra šiuo atveju objektas. Dabar, kaip padaryti mes iš tikrųjų prieigą tie laukai arba pakeisti šiose srityse. Pavyzdžiui, tarkime, mes nusprendėme, kad jūs norėjote vieną mažiau pset šį semestrą. Vietoj devynių, mes tik teks aštuoni. Kaip mes tai pakeisti? Oi, negerai taip. Yra du būdai, kad mes galime tai padaryti. Numeris vienas yra su tašku žymėjimas ir numeris du yra kvadratinės kronšteino žymėjimo. Taigi, pavyzdžiui, jei I norėjo pakeisti ar prieigos psets laukas mūsų CS50 objektą, ką aš norėčiau padaryti, tai CS50.psets, todėl objekto tašku vardas iš lauko ar rakto pavadinimą. Labai panašiai, tai tiksliai lygiavertis padaryti CS50, tada laužtiniuose skliausteliuose, psets. Kietas? Taip. Auditorija: Taigi yra JSON techniškai JavaScript vis tiek, nors į psets mes atskirti jį [nesigirdi]? HANNAH Blumberg: Žinoma. Taigi klausimas yra, ar JavaScript ir JSON ekvivalentas? Taigi JSON yra žymėjimas, iš esmės būdas, kad mes parašyti objektą iš JavaScript. Taigi jie ne visai tas pats. Sakyčiau, "JavaScript", ten yra objektų JavaScript. JSON į tuos objektus ir atspausdina juos ir rodo juos ar saugo juos gražus būdas. Taigi JSON nėra programavimo kalba taip, kad JavaScript. Tai tiesiog už žymėjimas Mūsų objektai JavaScript. Taip. Auditorija: Taigi, kas tiksliai [Nesigirdi] užbaigti? HANNAH Blumberg: Žinoma. Taigi tai iš tiesų nieko nedaro. Tai tik būdas pasiekti. Taigi tarkime, mes norėjome pakeisti iš probleminių rinkinių skaičius nuo devynių iki aštuonių. Ką mes darome, yra kažką daryti kaip CS50.psets = 8 ;. Taip, puikus klausimas. Tai tik parodyti jums, sintaksė. Ar ne iš tikrųjų nieko naudingo. Turite klausimų? Persikėlimas į dešinę kartu. Taigi pažvelkime greitai pavyzdys, kaip JavaScript veikia, nes aš jums papasakojo daro visi šie dalykai ir cool leidžia mums pakeisti puslapius. Leiskite realiai pamatyti kaip tai veikia. Taigi imtis, pavyzdžiui, šį HTML failą. Ir dalykas, kurį noriu jums sutelkti dėmesį į tai šis konkretus žymė, kuris yra mygtukas, su id search_button. Tai tiesiog šiame puslapyje. Taigi, dabar pažiūrėkime, ką mes iš tikrųjų galime padaryti. Na, tarkime, kai Paspaudus šį mygtuką, mes norime padaryti alert-- jūs paspaudėte mygtuką. Pažiūrėkime, kaip mes galime tai padaryti. Taigi window.onload-- tai nėra kažkas kad jūs mačiau klasei, todėl nereikia žinoti jį viktorinoje. Tačiau tai iš esmės sako, gerai, skambučių Ši funkcija kai langas apkrovos. Taigi, kad tiesiog rūšies nustatymo kodą. Nesijaudinkite tiek daug apie tai. Ką aš noriu jums sutelkti dėmesį yra čia. Mes sakome, var Searchbutton lygus document.getElementById search_button. Taigi, kaip jums gali atspėti, Kas tai yra ji sako, Gerai, eikite rasti elementą su ID search_button. Ir dabar mes turime, kad Tikrasis elementas ir aš ketina laikyti jį kintamasis Searchbutton. Ir dabar mes iš tikrųjų gali naudoti, kad elementas ir jį pakeisti, ar prieiti prie savo vertybes, dalykų, kaip kad. Mes iš tikrųjų galite pradėti bendradarbiauti su interneto puslapyje. Taigi čia aš sakau, gerai, kad dabar turiu kad mygtuką, kai jis paspaudžia, skambinti šiuo anoniminį funkciją. Taigi, tai yra, kai anoniminis funkcijos tampa naudinga. Ir ką funkcija daryti? Na, tai tik tai vadina įspėjimo funkcija ir ji sako, jūs paspaudėte mygtuką Pateikti užklausą. Taigi, kas atsitiks, jei aš einu ten, kur HTML gyvena ir aš spustelėkite mygtuką, Aš gausiu išgalvotas mažai perspėjimą kad sako, kad jūs paspaudėte mygtuką. Taigi ką atkreipti dėmesį į here-- document.getElementById gauna ypač HTML elementas su nurodytu ID. Ir dabar mes galime nustatyti kas turėtų atsitikti, kai kad ypač elementas yra paspaudėte. Auditorija: Mes turime įdėti visus, kad? HANNAH Blumberg: Atsiprašome? Auditorija: Ar turime fiziškai kodą visa tai? HANNAH Blumberg: Ar turime fiziškai kodą visa tai? Taip. Ar tai ne erzina natūra? Tai kodą aikštelė. Auditorija: Jūs galite importuoti kažką. HANNAH Blumberg: Teisė. Mes galime naudoti kažką. Ir particular-- oh, tai pasakojo, turiu mokyti skyrių. Visų pirma, tegul naudotis biblioteka JQuery, nes tai buvo tikrai ilgai ir tikrai erzina ir aš noriu, kad būtų galima supaprastinti ir padaryti jį trumpesnis ir lengviau rašyti. Taigi JQuery yra JavaScript biblioteką. Taigi JavaScript programavimo kalba; JQuery yra biblioteka. Ir tai daro lengviau krūva. Tai daro keičiasi ir vyksta visoje HTML-dokumentą daug lengviau. Tai daro tvarkymo renginiai lengviau. Tai daro animacija lengviau ir tai daro Ajax lengviau. Taigi leiskite peršokti į dvi tie dalykai dabar. Atsiprašau. Prieš mes darome, kai pagrindinė sintaksė. Tai yra tai, ką dauguma skambučiai į JQuery biblioteka atrodyti. Mes naudojame šią doleris sign-- jokio ryšio ženklas PHP, tik inconvenient-- pavadinimo selektorių, taškas, tada veiksmas. Taigi pažiūrėkime, kai konkrečių pavyzdžių, kad. Taigi, šis iš tikrųjų yra tas pats, Kodas iš renginio skaidrę. Taigi, tai ilgas, negraži dalykas tampa tai daug gražiau, mažesnis dalykas. Taigi pabandykime padalyti. Tai sako, gerai, jQuery-- tai doleris sign-- JQuery, mane surasti langą. Taigi, kad selektorius. Kai jis įkelia, skambinkite šią funkciją. Taigi, kad viskas viduje. GERAI. Kol kas viskas gerai? Gerai. Dabar, JQuery, rasti mane į dalykas su ID search_button. Ir ką ji paspaudėte, skambinti šią funkciją. Ir tada šios funkcijos visiškai toks pat. Tiesiog truputį perspėjimo, jūs paspaudėte mygtuką Pateikti užklausą. Taigi tai tikrai gražus. Tai tikrai kondensuojasi ir supaprastina mūsų kodą. Kaip aš žinau, kad tai ID search_button o ne kaip klasės search_button? Auditorija: hashtag? HANNAH Blumberg: Taip. Tai maišos simbolis, tai tik kaip CSS. Taigi nepamirškite, su CSS, kai mes norėjo pasirinkti kažką pagal ID, mes panaudojome svaras ženklas. Ir kai mes norėjome pasirinkti kažkas pagal klases, mes naudojame tašką. Didysis. Logiška? Taigi JQuery, kaip manoma, tik, kad mūsų gyvenimas būtų lengvesnis. Taip. Auditorija: Taigi, aš esu šiek tiek supainioti, kaip anoniminis funkcija veikia. Ar jūs vadinate šį anonymouse funkcija, funkcija? Kaip tai vadinama? HANNAH Blumberg: Žinoma. Taigi funkcija yra tik raktinis žodis, kuris sako, aš apie apibrėžti funkciją. AUDITORIJA: O, gerai. HANNAH Blumberg: Gerai? Ir tada mes perduoti jį kaip argumentas to-- Paimkime Šis vidinis one-- į paspaudimą funkcija. Taigi, taip, kad funkcija, Tai anoniminė funkcija, tampa faktinis argumentas. Taigi nepamirškite JavaScript, mes galima gydyti funkcijas, vertybes. AUDITORIJA: O, gerai. HANNAH Blumberg: Taip. Man patinka, kad "O". Gražus. Kiti klausimai? Laikas? MARIA ZLATKOVA: Geras. Geras. HANNAH Blumberg: awesome. Po greito naudinga JQuery. Nesiruošiu eiti per visą jų. Šios skaidrės bus iki internetinėje trupučiu vėliau, todėl jūs galite patikrinti tai iš šiek tiek vėliau. Bet iš esmės, apskritai modelis turi kur mes sakome, Gerai, ei, JQuery, čia mano selektorių ir tada čia veiksmas. Ir jūs galite padaryti tokius dalykus kaip patekti vertė forma, prieigą prie kai kurių HTML, kontrolė, kas atsitinka, kai vartotojas pateikia formą, dalykų, pavyzdžiui, kad. Taip. Auditorija: Taigi, Egzaminas, mes ketiname reikia žinoti gana daug iš JQuery dokumentai. Taigi turint omenyje, kad mes kopijuoti / įklijuoti JQuery dokumentus, mūsų apgauti lape, Kur nubrėžta linija? Kaip, kiek mums reikia žinoti? HANNAH Blumberg: Didžioji klausimas. Kyla klausimas, iš esmės turint omenyje, kad jums negali prieiti prie jQuery dokumentus bandymo metu, kiek jūs turėtumėte žinoti? Mes ne tikėtis jums ateiti su kai kurių atsitiktinių funkcija kad mes tikimės, kad jūs "Google". Dalykų, kurie yra teisingas žaidimas yra norėčiau sako tiesiog rūšies bendrojo sintaksę, galėtų pasirinkti pagal ID ir iki class-- taip kaip CSS. Ir tada faktinių funkcijų save programą, mes tikriausiai pasakys. Taip. Auditorija: Taigi, kai jūs pasirenkate pagal klases reikštų tašką. HANNAH Blumberg: Taip, tiksliai. Geras. Kai pasirenkate pagal klases, jis ketina reikia dot vietoj svaro ženklas. Taip. Auditorija: Would You eiti per skirtumu tarp pasirinkdami pagal ID ir klasės? HANNAH Blumberg: Žinoma. Skirtumas tarp to ID ir parinkimas pagal klases. Taigi, kaip sakė Marija Šiek tiek anksčiau, gali būti tik vienas elementas HTML su tam tikra ID, o klasėje, ji leidžia mums grupės krūva Skirtingų elementų kartu, taip dalykų, kurie yra susiję, bet ne visai tas pats. Ar tai atsakyti į klausimą? Nuostabus. Taip. Auditorija: Ką daryti, jei turite kelias dalykų, kurie yra toje pačioje klasėje? HANNAH Blumberg: Kas atsitinka, jei turite kelis dalykus, kurie yra tos pačios klasės? Taigi, pavyzdžiui, jei mes tik naudojant gryną JavaScript, mes padaryti kažką panašaus document.getElementsByClass. Ir kas tada, kad iš tiesų yra Grąžina elementų masyvas. Ir jūs turite arba pakartoti per juos arba rasti, kuris iš jūsų nori. Jis nesiruošia duoti Jūs vienas elementas. Jis ketina suteikti jums AN elementų masyvas. Didelis klausimas. Kasnors dar? Nuostabus. Taigi manau, kad, jei esate susipažinę su bet JQuery matėte į pset, jums turėtų būti gerai eiti. Klausimas? Oi, ne. Aš tikrai turi mokyti. Atsipalaiduokite. Tai bus gerai. Aš ten. Pakalbėkime apie Ajax. Taigi Ajax bus a-- gerai, pradėkime su tuo, ką jis reiškia. Tai akronimas. Tai reiškia Asinchroninis JavaScript ir XML. Ir XML yra iš esmės bus [Nesigirdi] su mūsų duomenų tipą. Bet mes ne iš tikrųjų naudojamas XML. Vietoj to, mes tiesiog naudoti JSON. Taigi, iš esmės, tai kai data-- Asinchroninis JavaScript ir duomenų, Šiuo atveju, JSON. Ir mūsų tikslas, kaip minėjome šiek tiek anksčiau, yra, kad būtų galima padaryti prašymą, turi būti toks prašymas daryti jos dalykas fonas, bet toliau daryti viską, kas mes buvome, ketinanti daryti. Ir tada, kai tokia informacija yra pasiruošę, tada mes jį įtraukti. Taigi pažiūrėkime, ką šis iš tikrųjų atrodo. Ir tai, jums turėtų būti šiek tiek susipažinę nuo pset8, vienas tiesiog sužaidė. Taigi čia galioja JQuery funkcija, mes galime noriu žinoti about-- šio dolerio ženklas. Taigi ji sako, JQuery funkcija, .getJson. Ir kas ši funkcija daro tai mano URL ir šiek tiek parameters-- todėl manau, kad tuo atveju, iš pset8, tai buvo, pavyzdžiui, URL buvo articles.php ir parametrai buvo eiti = šiek pašto kodą. Ir ji sako, gerai, kad prašymą Tai URL su pateiktų parametrų. Ir tai tiesiog atsitinka. Kai jis baigia, tai arba vyksta sėkmingai baigtas ar jis ketina nepavyks. Taigi tai yra pokalbio lygiavertis Robas ir paprašyti, kad jis ką nors daryti. Ir tada, kai jis vadina atgal, jis arba ketinate pasakyti Atlikau ar man nepavyko. Taigi tuo atveju, kai esate padaryta, jūs sakote, gerai, aš padaryti. Ir tada jūs vadinate šią funkciją. Šiuo atveju, ji ketina būti funkcija, kuri užima šiek tiek informacijos. Vienas mes paprastai rūpi duomenys, duomenys, kad mes iš tikrųjų buvo grąžinta kaip kvietimas .getJSON rezultatas. Ir jūs galite padaryti kažką su juo. Taigi, atsižvelgiant į pset8 atveju, mes rodomas kaip sąrašą. Fail bus funkcija tai vadinama jeigu prašymas neatitinka dėl kokios nors priežasties. Ir atsižvelgiant į pset8 atveju, mes tiesiog console.log ją. Bet apie tai klausimai? Taip. Auditorija: Ar mes tiesiog naudokite funkciją teta vietoj funkcija, textStatus, jqHXR. HANNAH Blumberg: Žinoma. Taigi, taip, manau, kad į pset, mes tik pamačiau funkcija duomenis. Taigi tai tik the-- Taip, gerai. Štai ką matėme pset. Štai visiškai gerai. Tai tik, jei norite ištraukti daugiau informacijos, tai yra dalykai, kurie galite gauti iš .getJSON. Geras klausimas. Kasnors dar? Taip. Auditorija: Taigi .getJSON yra Ajax? HANNAH Blumberg: Gerai. Taigi, tai yra keblus dalis natūra. Tai yra JQuery funkcija, kuri leidžia jums reikia padaryti, asinchroninis skambučius. Ir tie asinchroniniai skambučiai, tai tai, ką mes jau kalbama kaip Ajax. Taip. Tai paėmė mane tikrai ilgą laiką išardyti, kai buvau studentas. Auditorija: Ar galite pasakyti, kad dar kartą? HANNAH Blumberg: Taip. Ar galiu pasakyti, kad dar kartą? Tai .getJSON funkcija, ji yra JQuery funkcija. Ir tai ketina padaryti asinchroninis skambutis. Ir šie asinchroniniai ragina mes buvo kalbama apie tuos, kurie, kaip "Ajax". Visi kiti klausimai? Mes turime tik keletą minučių liko. Ir Marija ketina susivynioti su saugumu ir tada mes ketiname turi būti tik apie padaryta. MARIA ZLATKOVA: Nuostabus, Gerai. Taigi tai is-- tiesiog pora sekundžių ieškoti per tai. Ir tai nėra kažkas tikrai didelis. Ir gali kas nors pasakykite man, kodėl? Kas vyksta foo ir gali galėtų potencialiai sukelti kažką blogo, ir ką tai vadinama? Taip. Auditorija: Jei argumentas, kad tai praėjo daugiau kaip 12 simbolių, tai galėtų ištekėti. MARIA ZLATKOVA: Teisė. Tobula. Ką jis vadinamas? Jūs tiesiog paminėjo. Auditorija: buferio. MARIA ZLATKOVA: Yup, buferio. Taigi, tai yra kažkas, kad mes vadina buferio. Ir mes matome, kad foo vidų, mes apibrėžti mūsų buferio, C, su 12 dydžio. Tačiau pagrindinis, mes do not patikrinti bet kokiu būdu ne visi ar kad argv1-- buvo antrasis argumentas. Mes neturime patikrinti, ar dydis tai yra tinkama. Taigi, jei mes turėjome ypač piktybinis vartotojas uždavęs tam tikru argumentu, kad buvo ilgesnis nei 12, ir tada potencialiai po tos ribų argumentas, turėjo tam tikrą vykdomąjį kodą kad jis bando padaryti kažką blogo su tuo; tai, kas nutiktų, būtų svarbesni grąžą adresas foo funkciją, sukelia funkciją, kai grįžti vykdyti šią kodą. Ir tada blogi dalykai gali atsitikti. Ar tai prasminga visiems? Ir kaip mes galime apsaugoti nuo tai? Bet kokie pasiūlymai? Iš esmės, viduje potencialiai rūšys, kaip mes galime patikrinti, įsitikinkite, kad negali atsitikti? Auditorija: Jei dydis 12 viršijama, Jums skirs papildomą atmintį? MARIA ZLATKOVA: pasiūlymas yra skirti Papildoma atmintis dydžio viršyta. Tiesą sakant, mes galime padaryti kažką daug paprastesnė nei kad taip pat. Mes galime tik gauti eilutės ilgis argumento, kad yra įregistruotas, patikrinti, ar tai yra mažiau nei arba lygus 12-- o tai, ką mes norime ją būti, nes mes nenorime tai viršija mūsų buferis ribų. Ir tada, jei jis nėra, mes gali dirbti su argumentais. Ir tada, jeigu ji, mes iš tikrųjų norime į Yello potencialiai vartotojui. Bet tai, kaip mes norėtume daryti. Taip. Auditorija: Ar galite paaiškinti memcpy nekilnojamojo Greita? MARIA ZLATKOVA: Oi, atsiprašau. Taip. Memcpy trunka kokia is-- Atsiprašome, Gerai. Memcpy trunka kokia yra bar, kokia yra perduodama į foo kaip komandinės eilutės argumentas. Taigi ji ketina imtis argv1. Argv1 vadinamas baras čia. Taigi ji ketina imtis baras ir jis ketina nukopijuokite jį į c. Auditorija: Gerai. MARIA ZLATKOVA: Ir jis ketina copy-- trečiasis argumentas tiesiog reiškia į tai, kiek ji ketina kopijuoti į C. Auditorija: Ak. Taigi Tai vienas kopijavimas visa tai tada. MARIA ZLATKOVA: Taip, tai kopijavimo visa tai. Yep. Pirma, mes įsitikinkite, kad juosta yra ne lygi nuliui, nes tai rodyklė. Tada mes gauti string ilgis bare. Mes įsitikinkite, kad jis mažesnis arba lygus 12. Ir tada, nes mes pasirūpino, mes galime iš tikrųjų memcpy ir būti tikri, kad viskas OK. Turite klausimų? Didysis. Turiu du true arba false klausimus. Can anyone tell me iš karto jei tai yra true arba false? Taip, tai klaidinga. Būtent. Abu jie yra neteisingi. Taigi, naudojant vieną slaptažodį niekada tikrai gera idėja nes jei kas nors žino Jūsų slaptažodis, jie gali tiesiog prieiti prie visų kitų jūsų sąskaitas. Ir tada piktogramos nieko siekiant užtikrinti saugumą. Mes paprastai turėtų ieškoti HTTPS vietoj HTTP ir URL. Ir kai kurių kitų tipų išpuolių, kad mes paminėti, Dovydas buvo paminėta paskaita, SQL injection atakas. Mes jau matėme, kad jeigu mes don't-- CS50 užklausos funkcija užtikrina, kad SQL injekcijos išpuolių negali atsirasti. Bet jei mes ne naudojant CS50, citata, citatos pabaiga "Query" mes turime įsitikinti, kad naudotojo įvesties nėra faktiškai kai "SQL užklausa kurie bus sukelti visi mūsų stalų būti atsisakyta ar kažką blogo atsitikti su mūsų duomenų bazės. Sesijos vogimą yra kitas priepuolis tipas tai atsitiks, kai kai kurie blogai asmuo naudoja kai aukos sesiją ID atidarykite prisijungimo informaciją. Taigi labai trivialus pavyzdys, kad yra pavyzdžiui, jei mes turime viešą kompiuterį, tada blogas žmogus prisijungia ir tada jie slapukus, kurie yra išgelbėti. Ir slapukus nekeičia sesijai. Tada mes turime auka eiti ir tada prisijungti prie svetainės. Slapukai nesikeičia tam tikrą sesijos. Ir tada auka registruojasi svetainėje ir paskui palieka. Ir tada tas asmuo, kuris nueina tada gali ir toliau naudoti savo sesijos ID prieigą prie savo informacijos. Štai vienas pavyzdys kaip kad gali atsitikti. Ir tada aš ne nerimauti per daug apie specialų kodą arba nieko kaip kad gali sukelti tai, bet tam tikra idėja rūšiuoti ką kintamieji dalyvaujančių šiame yra. Ir tada manipuliuoti antraštę duomenys yra dar vienas tipo atakos kad turi Dovydas kalbėjo apie. Ir tai tik nuoroda į kas gali atsitikti, kai atsakymas, HTTP atsakymas viduje mūsų antraštės nėra tinkamai dezinfekuotas. Ir bet koks, pavyzdžiui fields--, jei kas nors perrašo vieną iš antraštės vertės yra nieko daugiau, nei ką jie turėtų contain-- ir iš tikrųjų sudėtyje, pavyzdžiui, 200 Gerai statusas kodas, tada jie potencialiai gali daryti kenksmingą dalykų, kai jie neturėjo. Bet aš ne nerimauti per daug apie konkretų kodas kad gali sukelti tai, tiesiog tarsi supratimo aukšto lygio dalykai, kaip kad. Manau, kad tai yra viskas kad mes turime padengti. Nuostabi. Kiekvienas turi kokių nors klausimų dėl bet iš dalykų, kad mes, kuriems? Taip. Auditorija: Taigi vienas rūšiuoti daugiau logistikos klausimas. Ar turinys daugiausia dėmesio dalykų po viktorina 1? MARIA ZLATKOVA: Taigi Kyla klausimas, yra turinio daugiausia dėmesio buvo skiriama dalykų po viktorina 1? Taigi dėmesys skiriamas po viktorina 1, su išimtimi kad mes turime sutelkti dėmesį į dalykus pset5 ir iš duomenų struktūrų daug kad mes padengti. Ir mes negalime pasakyti, kad mes gali ignoruoti nieko prieš kad, nes jis remiasi jį taip pat. Taigi dėmesys, kad, plius pset5 medžiagos kaip, įskaitant susijusius sąrašus, kaminai, eiles, ir viskas kad Hannah perėjo. HANNAH Blumberg: Teisė. Taip, mes nuėjome per visą C stuff iš pat pradžių labai greitai. Tačiau įsitikinkite, kad peržiūrėti šį. Grįžti atgal ir žiūrėti Viktorina 0 apžvalgą. Pora daugiau logistikos pastabos, tiesiog, o mes turime savo dėmesį. Mes ketiname turėti darbo valandas tiek pirmadienį ir antradienį naktį. Jie ketina būti MD 119. Tai yra all į svetainę, todėl jei nenorite girdėti, jokių rūpesčių. MARIA ZLATKOVA: 8:30 iki 11:00. HANNAH Blumberg: Taip, 8:30 iki 11:00 val. Mes būsiu ten. Mes ten atsakyti į klausimus. Tai gana chill ir įdomus. Vaikinai gali užduoti klausimus kad jūs turite ant viktorina 1 d. Ir viktorina 1 yra Trečiadienis, todėl geros kloties. Jei turite kokių nors klausimų, gal ateis kalbėtis su mumis čia vienas ant vieno. Kietas. Labai ačiū. MARIA ZLATKOVA: Labai ačiū, vaikinai. Auditorija: Šaulys. [Plojimai]