[Powered by Google Translate] [Savaitė 9] [David J. Malan - Harvardo universiteto] [Tai CS50. - CS50.TV] Gerai. Sveiki sugrįžę. Tai CS50, o tai yra 9 savaitės pradžios. Šiandien mes turime sutelkti dėmesį visų pirma dėl dizaino, ne ilgiau C bet PHP ir SQL bitų ir Javascript, ypač į 7 pset tiek tikslu, taip pat jūsų galutinis projektas. Iš tiesų, jei jūs tuo momentu savo galutinį projektą kur matyt, bent valandą, arba tiek atgal pradėjo duoti šiek tiek minties į galutinį projektą ir jūs galvojate norite bendradarbiauti su 1 arba 2 klasiokais, jei jums kyla problemų jungiantis su klasės draugus, nedvejodami užpildyti formą, esančią cs50.net/partners/form. Jis tiesiog klausia, kas tu esi, kokios projekto galvojate apie kur jūs gyvenate tik dėl logistinių priežasčių. Ir tada, jei norite saugoti akis dėl per kitą savaitę arba tiek skaičiuoklės URL, galite matyti tik skaityti "Google" dok , kurią mes tokios informacijos rinkimo. Taigi, jei norite dirbti su kuo nors, visomis priemonėmis jaustis laisvai ištiesti pagalbos ranką žmonėms per tą mechanizmą. Bet dauguma žmonių daryti darbo solo. Tai visiškai baudą. Todėl nesijaučia, kad tai jokiu būdu privalomo. Penktadienį buvo tik man ir komandos čia, tuščias teatro didžiąja dalimi. Buvo 3 turistai sėdi ten, kad buvo šiek tiek nepatogu. Ką mes kalbėjome apie duomenų bazes ir mes kalbėjome apie 7 pset šiek tiek. Ir jei tu negali atsitikti taip, prašau, kad ant vaizdo, tik dar, kad gerai. Aš pabandysiu apibrėžia visas sąlygas, kad mums būtų kitaip laiko savaime suprantamu dalyku remiantis penktadienį savo paskaitoje. Tačiau šiandien mes ketiname išbandyti, kad jums iki taško, ne tik, kad galėtų padaryti kažką panašaus pset 7 bet tikrai suprasti, kas vyksta po gaubtu, ypač kai iš abstrakcijų, kad mes įtraukti į functions.php failą kad jūsų gyvenimas šiek tiek lengviau, bet taip, kad jūs galų gale suprasti kad kai mokymo ratai nukristi po kelių savaičių, jūs galite vis dar išgyventi realiame pasaulyje, ir padaryti šią medžiagą be bet CS50 sistemos Jumis. Šis $ _SESSION, tiems iš jūsų, kurie yra susipažinę arba kurie jau pateko į vaizdo penktadienį, ką SESIJA darykime PHP, interneto taikymo? Tai superglobal kintamasis, o tai reiškia, jis panašus dvasia GET ir POST ir keletas kitų, bet kas yra tai, ką naudinga? Kas yra SESIJA naudojamas? Taip. [Studentas] Jungiamasi Sorry? [Studentas] Logging in Jungiamasi tiesų. Mes naudojame pset 7 Ši sesija superglobal palengvinti prisijungti. Ir ką malonu apie šį superglobal yra, kad jis masyvą. Asociatyvus masyvas, primenu, yra tik matrica, bet kurių indeksai nebeturi būti skaičiai kaip 012. Jie gali būti skaičiai arba jie gali būti net stygos. Ir todėl, jei jūs nėrė į pset 7 dar, jūs galite prisiminti, kad mes saugome pagrindinį, pavadintą ID viduje šio Association masyvas, kurio reikšmė yra kažkas panašaus į 123 - nesvarbu, kaip šiuo metu prisijungęs vartotojo ID. Tai motyvacija yra, kad net po to, kai vartotojas aplankė localhost ar mano svetainė apskritai ir tada jie jau prisijungęs, net jei jie ne spustelėkite nuorodą arba grįžti į savo interneto svetainėje 5 minutes ar net valandą ar net dieną, bet jie palieka savo naršyklės langą atvirą, per šį superglobal aš galiu prisiminti, kad jie prisijungęs. Kitaip tariant, jis leidžia man laikyti šiek tiek ilgalaikį, ką noriu apie klientą. Ir jūs galite galvoti apie tai tikrai kaip krepšelį įsikūnijimas. Vietų, pavyzdžiui, "Amazon" akivaizdžiai jums įdėti į krepšelį dalykų, bet HTTP protokolas, kad įgaliojimai internete, yra be pilietybės ta prasme, kad kai Jūs lankotės svetainėje, didžiąja dalimi jūs neturite tam tikrą pastovų ryšį su tinklu tarp Jūsų naršyklės ir serverio. Iš karto, kai jūs įkėlėte HTML ir formato JPEG ir GIF, ir visa tai, ryšys nueina, ir jūs tiesiog HTML ir Papuošalą kopiją iš serverio. Bet jei serveris nori prisiminti kažką apie jus, našta serveryje iš tikrųjų įrašyti šią informaciją. Ir tokiu būdu jūs programuotojas, kuris turi kontroliuoti serverio galite įdėti labiausiai, ką norite viduje šio superglobal Association masyvas ir ji ten bus kitą kartą, kai vartotojas grįžta, ar tai minučių arba net dienų, išskyrus atvejus, kai jie uždaryti savo naršyklės langą, tuo momentu SESIJA dingsta. Todėl efemeriška saugojimas, tai nepatvarus, ir tai reiškia, kad išeiti iš karto, kai naudotojas baigia savo naršyklę, - ne tik, kad skirtukas, dažnai visa naršyklė, tokiu būdu veiksmingai registruojant vartotoją. Taigi, kaip tai, ką iš tikrųjų įgyvendintas? Paimkime greitai pažvelgti į paprastą pavyzdį, mes pažvelgė penktadienį. Tiems, kurie susipažinę, tai buvo taip paprasta, kaip šis. Tai interneto puslapis, kurio vienintelis tikslas gyvenime yra man pasakyti kiek kartų aš aplankė šį puslapį. Tai čia pirmą kartą pirmadienį, kad aš ją aplankė, todėl ji sako 0 kartų. Bet jei aš pradedu iš naujo įkelti šį puslapį, ji sako, 1 kartą, 2, 3, 4, 5, ir tai galų gale tiesiog laikyti skaičiavimo iki, iki, iki, iki, iki kiekvieną kartą, kai aš iš tikrųjų spustelėkite Atnaujinti. Taigi, kaip šie darbo? Leiskite man eiti viduje šį failą, vadinamą counter.php. Viršutinė dalis yra visų Blue komentuoja, bet įdomiausia dalis yra čia. 13 on-line mes vadiname šią funkciją session_start ir tai yra tiesiog viską, ką reikia daryti, jei jūs norite turėti prieigą šis specialusis superglobal vadinamas $ _SESSION. Kad daro tai įmanoma, ir mes pamatyti, metu, kaip kad viskas įmanoma. 16 eilutėje pranešimo, ką aš darau. Jei raktas, vadinamas skaitiklis - kitaip tariant, indekso reikšmė - "skaitiklis" yra šio masyvo viduje, vadinamas sesija, tada, ką aš darau su juo žemiau linijos? Kas yra eilutė 18 daro? [Nesigirdi studentas atsakas] Kas tai? [Studentas] saugojimas vertę. Geras. Tai laikyti vertę, kad sesija dabar naujame vietos laikino kintamojo, $ Skaitiklis mažosiomis. Atkreipkite dėmesį, kad PHP jau yra šiek tiek tingus čia. Atkreipkite dėmesį, mes neturime bet paminėta int ar plūduriuoti ar siūlai ar ko nors panašaus, kad nes PHP yra silpnai įvedėte, kuriuo jūs neturite nurodyti kintamojo tipą, ir čia šiuo atveju aš net paskelbė jį dar. Aš nedeklaravę viduje šių klamrami ir skirtingai nei C, iš tikrųjų tai yra gerai. Nesvarbu, kaip giliai įdėtos kintamasis deklaraciją PHP - viduje garbanotas petnešomis, viduje garbanotas petnešomis ir panašios - ji tuo metu laiku yra Likusiam programos trukmės laikotarpiui, geriau ar blogiau. Taigi, jis iš karto tampa pasaulio kuo greičiau ją apibrėžti kaip mes darome, čia. Priešingu atveju, jei aš negali rasti, kad nėra nieko sesijos superglobal, Aš, matyt, Inicijuojama Šis kintamasis counter 0, taip tik darant prielaidą, kad vartotojas turi čia dar niekada nebuvau. Ir tada tai, žinoma, yra pokyčio skaitiklis kaip? Aš atnaujinti vertę, kuri yra viduje šio Association masyvas nustato, per kiek laiko ji lygi kokia skaitiklis šiuo metu yra + 1. Jei aš slinkti žemyn į puslapio HTML, tai tikrai gana paprasta. Turiu šio puslapio kūno "Jūs aplankė šią svetainę toks ir toks kartus." Ir tai yra PHP konstruktas. Jei tai padarysite <=, tai atitinka kokią funkciją? Tai tikrai atitinka kažką panašaus printf, mes matėme daug kartų, C, nors, kaip žinote jau iš spec pset 7, spausdinimo pat yra funkcija, kad tik spausdina kažką iš, jis nėra iš tikrųjų naudoti formato kodus, ir jūs iš tikrųjų galite pasakyti echo taip pat. Jie visi vis tiek šiek tiek kitoks, net jei grynasis poveikis yra galiausiai pats. Taigi šis lygybės ženklo yra tiesiog tarsi elegantiškas būdas tai daryti daugiau glaustai nei priešingu atveju galbūt būtų galima. Taigi, kad viskas šioje svetainėje. Jis spausdina skaitiklio vertę. Kaip visa tai iš tikrųjų vyksta? Jums gali prisiminti per savaitę arba tiek atgal mes pradėjome ieškoti po gaubtu , kaip interneto puslapis veikia naudojant šį inspektorius skirtuką. Chrome "yra tai tiek Mac versija, Windows versija, ir netgi Linux versija, ir Firefox ir IE turi panašius mechanizmus, kuriais turite šią built-in Debugger viduje naršyklėje. Paimkime bent šių išvaizdą. Mes turime visa krūva skirtukų čia ir priminti, kad kairiausias elementai, ir nesvarbu, kaip godawful HTML ir "JavaScript" yra į puslapį, Prisiminkite, kad elementai "iš tikrųjų gali naršyti HTML hierarchiškai ir gražus ir tvarkingai. Taigi, jei jūs bandote išmokti iš, pavyzdžiui, "Google" ar "Facebook" tinklalapyje ar tikrai bet kokios svetainės, suprantame, kad jūs tikriausiai geriau žiūri šaltinio kodą tokiu būdu, o ne peržiūrėti žaliavos šaltinį, kuris gali būti netvarka, kaip mes matėme ypač "Google" svetainėje. Taigi, jei aš vietoj spustelėkite skirtuką Network čia galime pamatyti, kas vyksta, kai aš aplankyti šį puslapį. Pirmiausia leiskite man išvalyti talpyklą. Aš ruošiuosi eiti į "Chrome" nustatymus ir tada pereiti į istorijos Išvalyti visus naršymo duomenis. Jums gali būti naudojama tai daryti kitiems tikslams, [juokas] bet kai jis ateina į besivystančių svetainių, tai tikrai naudinga - jei jūs juoktis žinote. [Juokas] Tai tikrai tikrai naudinga kuriant interneto svetaines, nes tikrovė yra dalykų, pavyzdžiui, slapukus ir dalykų, pavyzdžiui, talpyklą failus HTML, "JavaScript" failus iš podėlio iš tikrųjų gali tapti didelis galvos skausmas, nes jei dėl kokios nors priežasties naršyklę - nusprendžia į talpyklą kai kuriuos failus ir dar atlikote pakeitimus į šį failą į serverį bet naršyklė tikrai ne suprato, kad failas buvo pakeistas ir todėl nėra iš tikrųjų iš naujo atsisiųsti, net jei jūs paspauskite Reload vienas iš labiausiai Patikimas būdų, tiesiog įsitikinkite, kad kaltas būna ne su kodu, naršyklėje elgesį, yra eiti į čia, tai atlikti turite savo naršyklėje ir tiesiog išvalyti visą istoriją, kad nėra jokios painiavos. Ir tada, jei jūs tikrai norite būti paranojikas, mesti naršyklę, paleiskite ją iš naujo, ir tada įsitikinkite, kad viskas neveikia kaip tikėtasi. Taigi trumpai tariant, išvalius naršyklės talpyklą yra gera, kai darai plėtrą. Taigi čia mes turime skirtuką Network. Aš anksčiau lankėsi svetainėje 9 kartus, tačiau leiskite man eiti į priekį ir spustelėkite Atnaujinti. Ir aš atgal iki 0. Tegul iš tikrųjų matyti, kaip ji yra, kad šios sesijos superglobal yra įgyvendinamas. Aš ruošiuosi spustelėkite 1 HTTP užklausa, kad buvo padaryta, ir tai derinimo langas leidžia, man atrodo viduje. Čia aš matau tik iš serverio atsakymą, kuris nėra įdomus. Aš mačiau, bet keliais būdais. Bet tai, kas techniškai įdomi antraštės. Jei aš slinkti žemyn čia ir sutelkti dėmesį į antraštes užklausų ir spustelėkite Peržiūrėti šaltinį, ką aš norėčiau pamatyti, yra tiesiog HTTP užklausa , kad tiesiog nuėjo nuo savo naršyklėje į serverį, GET yra operacinis žodis ir tada / counter.php failo pavadinimas, HTTP/1.1 tiesiog HTTP versija, kad mano naudojama naršyklė. Ši linija čia yra šiek tiek priminimas iš naršyklės į serverį, serverio vardas kad ji nori su kuo pasikalbėti. Ir tada tai likusi dalis yra kartais įdomus, tačiau nėra aktualus dabar. Tai tiesiog rūšies smalsumą. Paslaptingas, nors ši eilutė yra, bet kuriuo metu Jūsų naršyklė apsilanko svetainę ji informuoja serverį, kokią naršyklę jūs naudojate ir kokią operacinę sistemą jūs naudojate ir ką jos redakcija. Taigi, jei jūs kada nors susimąstėte, kaip tokios svetainės, kaip CNN ir Papuošalą žinoti, ką procentinė dalis, "Mac" vartotojams, internete, PC vartotojams, IE vartotojai, Chrome vartotojų ir panašūs, tai, nes visi mūsų naršyklėse sakote kiekvieną svetainę ten kas mes esame. Jis nebūtinai turi būti asmeniškai identifikuojančią informaciją, tačiau ji pasakyti serverį, ką jūsų IP adresas yra ir ką Naršyklė ir OS jūs naudojate. Taip, kad, kai tokia informacija yra. Bet kas įdomiau dabar, kai jis ateina į šių sesijų atsakymo antraštė. Leiskite man spustelėkite Peržiūrėti šaltinį šalia atsako. Kas įdomu, čia yra keletas dalykų. 1, mes turime grįžti būsenos kodas 200. Mes niekada pamatyti šį kodą statuso, nes tai reiškia, kad viskas yra gerai. Tiesiogine prasme tai reiškia, kad gerai, priešingai nei ko nors kito. Kas yra skaičius, kartais matome, kad blogai? [Studentas] 404. 404, failas nerastas, 403 jums gali būti suklupimo ant jau , kuri yra draudžiama, o tai reiškia, Jūs pamiršote chmod kažkas, labiausiai tikėtina. Ir ten yra krūva kitų. Žemyn čia, tai yra šiek tiek beprotiška. Aš tikrai tik kelias minutes parašė šį failą įdėti jį į gedit. Kodėl šį puslapį baigiasi 1981 m. Prieš ten tikrai buvo interneto? Kas vyksta? [Nesigirdi studentų požiūrio] laiko spaudu. Bet kodėl? Tai šiek tiek savavališkas, tačiau tai tikrai naudinga. Ką tai sako, kad savo naršyklėje, tai PHP failą, kurį ką tik paprašė, jau baigėsi. Tiesą sakant, jis nustojo galioti prieš 30 metų. Bet ką tai iš tikrųjų reiškia? Tai tiesiog reiškia, kitą kartą, kai vartotojas apsilanko šį puslapį, ar perkrovimą ar įvesti į adreso juostą URL, įsitikinkite, kad jūs einate ir atnešti naują kopiją. Tai yra, rūšies talpyklos Kovoje pavyzdžiui, kvailas žodis, kuris tiesiog reiškia, kad bando atgrasyti naršykles iš faktiškai spartinimo HTML, kad buvo siunčiami iš serverio , kad jūs ne atsitiktinai pataikyti iš naujo atidaryti ir matyti tą patį failo versiją. Jūs iš tikrųjų norite, kad serveris siųsti naują kopiją. Taigi tai, kad ji 1981 tiesiog reiškia, kad tai, ką prietaisas pasirinkti savavališkai dienos praeityje. Bet realus sultingas linija yra dabar šį vieną. Net prieš 50, jūs tikriausiai miglotai susipažinęs su slapukais. Kaip ir dabar, ypač tarp mažiau patogūs arba tarp kas yra jūsų supratimą slapukas dabar net jei mes apie tai, kad jūsų supratimą ir labiau techninio pobūdžio? Kas yra slapukas? Taip. [Studentas] Informacija apie vartotoją, pavyzdžiui, jei jie jau parašė savo vartotojo vardą ar kažką. Geras. Tai informacija apie vartotoją, nepriklausomai nuo to, ar įvedėte savo vartotojo vardą jau. Slapukai yra kelias, kuriuo serveriai gali prisiminti ką nors apie vartotoją. Ir ką slapukas tikrai yra tekstinis failas, arba kai baitų seka kad pasodinti viduje jūsų naršyklėje serveryje, ir viduje šio failo, arba tarp tų baitų yra kažkoks identifikatoriaus. Gal tai tiesiog jūsų vartotojo vardas, bet dažniau tai kažkas paslaptingas išvaizdos kaip šis dalykas čia - bo8dal3ct ir tt - tai tikrai didelis Skaitinė-raidinė seka tai tikrai tik reiškia būti unikalus identifikatorius jums. Arba galite galvoti apie tai, kaip rūšiuoti virtualios rankos antspaudu. Jeigu jūs einate į kai klubo arba pramogų parkui, prisiminti, kad jūs iš tikrųjų mokama ir praėjo, jie įdėti truputį raudonas lipdukas ant jūsų rankų yra tam tikros rūšies, ir kad primena žmones prekystalio, kad jūs jau sumokėtą ir jūs galite ateiti ir eiti, kaip jums patinka. Slapukai yra šiek tiek panašus dvasios. Aš pirmą kartą aplankė šią svetainę, kaip aš ką tik išvalius talpyklą, web serveris, šiuo atveju prietaisas, įdėti spaudą ant mano ranka kurio vardas PHPSESSID, sesijos ID, kurio vertė yra Skaitinė-raidinė seka tai tikrai ilgas. Taip, kad dabar tarsi papuoštas mano ranka taip, kad kitą kartą aš paspauskite Perkrauti arba rankiniu būdu aplankyti šį URL į naršyklę, mano apibrėžimą HTTP naršyklė ketina pateikti rankų spaudo vėl ir vėl ir vėl. Taigi, net jei serveris nėra visada žino, kas aš esu, jie bent jau žinau, kad aš esu tas pats vartotojas, ar bent jau, tiksliau, tą pačią naršyklę. Ir todėl iš esmės tai yra kaip SESIJA superglobal yra įgyvendinamas. Serveris neturi jokios idėjos, kas jūs esate, kai peržiūrėti svetainę antra ar trečią kartą nebent jums pristatyti šį rankų antspaudą. Ir kuo greičiau jums pristatyti, kad ranka spaudo, web serveris, iš esmės patenka į šiek tiek savo duomenų bazėje ir patikrinimus, gerai, aš ką tik matė rankų antspaudu vartotojo bo8dal3ct ir kt. Leiskite man pamatyti, kokia informacija programuotojas saugomi viduje apie šį klientą superglobal, ir tada leiskite man įsitikinti, kad tie duomenys yra vėl viduje superglobal sesijos taip, kad programuotojas gali vėl pasiekti, kad duomenys net jei ji buvo nustatyta prieš keletą minučių ar valandų. Taigi, kitaip tariant, sausainiai, kurie tam tikrą laiką gavo blogas repo dėl nesaugumo naršyklėse ir jie tikrai pažeidžia mūsų privatumą ir visa tai, jie iš tikrųjų turi daug naudos, nes be jų jūs nuolat reikia prisijungti prie kiekvieno "Facebook" puslapyje, Jūs lankotės arba kiekvienas "Gmail" elektroninio pašto adresą, skaityti, jei naršyklė neturėjo tam tikrą kelią prisimenant kad jūs jau patvirtintas. Taigi tokiu būdu slapukai bus siunčiami atgal ir atgal per vielos. Kitas smalsumas apie slapukus, ypač čia, kad tai yra visiškai paprasto teksto. Nėra jokios šifravimo, čia vyksta kokia, ir iš tiesų aš naudoju HTTP metu. Vienas iš mūsų mėgstamiausių akimirkų CS50, kuris dabar yra prieš 2 metus, buvo maždaug tuo metu, įrankis, vadinamas Firesheep išėjo. Tai buvo nemokama programinė įranga, kuri buvo padaryta "saugumo tyrėjas , kaip bendruomenei pažadino pasakyti, ar atrociously įgyvendinama buvo tam tikrų autentifikacijos mechanizmų, internete. Dar kurį laiką, "Facebook" buvo beveik visiškai per HTTP, ne HTTPS. Ir net jei jūs neturite idėjos, kaip kriptografija, S yra saugus todėl reiškia, kad bent kai kurie šifravimo dalyvauja. "Facebook" buvo naudojamas užšifruoti vartotojo vardus ir slaptažodžius, bet tuoj pat, kai pažvelgė į savo pokes arba jūsų pranešimus arba jūsų News Feed, visa tai buvo paprastasis. Taip buvo "Gmail", kol tik metus ar 2 prieš. Jums prisijungti bet kuriuo metu, taip, jie naudojami saugoma šifravimo, bet po to jie to nepadarė. Ir kodėl gali būti? Kodėl ne tik naudoti kriptografiją visą laiką naudojimo atvejais, kaip šis? Kas tai? Manau, kad girdėjau kažką. [Studentas] Greičio. Greitis, tiesa? Yra būdų, kaip apie tai. Bet jei jūs tiesiog rūšies galvoti apie tai logiška, kad jei jįužšifruosite kažką, ką jums reikia padaryti bent šiek tiek daugiau darbo. Pset 2, kai įgyvendinama Cezaris ar Vigenere ar net nulaužti, tiesiog spausdinti eilutę yra gana lengva. Šifravimo ir tada spausdinti eilutę minimaliai reikalauja šiek tiek daugiau darbo.  Super populiarių svetainių, tokių kaip "Google" ir "Facebook", , jei turite už kiekvieną tinklalapį jie lanko daugiau dirbti kiekvienam vartotojui, , kad tiesiog reikia daugiau CPU laiko. O jei jums reikia daugiau CPU laiko, jums gali tekti daugiau serverių, o tai reiškia, jums gali prireikti daugiau pinigų. Ir taip jau daugelį metų tai tiesiog tikrai nebuvo geriausia praktika. Žmonės turėtų naudoti SSL šifravimą, tik tada, kai jiems reikia. Tačiau paaiškėjo, ir šio Firesheep kolegos super aišku, kai jus vaikinai, kurie šiuo metu "Facebook" dabar - Iš smalsumo, galime pamatyti, jei jums prisipažinti. Jei esate "Facebook" dabar kai skirtuko, net jei ji nėra užimti, yra Jūsų URL HTTP ar HTTPS? [Daug studentams] S. S? [Juokas] Gerai. Bet koks HTTP? Tik 1? Gerai. Taigi, mums visiems, kad vaikinas gali nulaužti Facebook sąskaitą dabar. Nes didžioji dalis, tai tapo įjungtas pagal nutylėjimą, bent jau kai kurių svetainių. Ir ilga istorija trumpa, jei Jūsų interneto srauto nėra šifruojamas, ne tik HTML eiti pirmyn ir atgal visoje WiFis nekoduotus todėl nereikia dalykų, pavyzdžiui, slapukus, eiti į priekį ir atgal per orą be šifravimo. Taigi, jei turite tik šiek tiek programavimo išminties, ar šiek tiek "Google" paiešką įgūdžius rasti laisvą programinę įrangą, kuri daro tai, viskas, ką jums reikia padaryti, yra sėdėti "Starbucks" arba sėdėti oro uoste, kuriame ten paprastai paprastasis "Wi-Fi" ir tiesiog žiūrėti pagal raktinius žodžius, pavyzdžiui, Set-Cookie: ar PHPSESSID todėl, jei turite techninių išminties tiesiog žiūrėti WiFi visi bitai, kad per visą šio modelio oro srauto, tada galite pasakyti, kad vaikinas PHPSESSID atsitinka būti bo8dal ir pan. Ir tada vėl, jei esate pakankamai techniškai Atjautība arba turi tinkamą įrankį, tada galite tiesiog iš naujo sukonfigūruoti savo naršyklę pradėti, kad ranka, antspaudas Facebook.com, ir "Facebook" yra tik ketina manyti, kad esate, kad vaikinas nes visi jie žino, kas jūs esate, bet, kad jūs turite šį unikalų identifikatorių. Taigi, jei jūs pavogti, kad unikalų identifikatorių ir pateikia jį savo interneto serveriu, kaip, jie tiesiog ketinu parodyti jums to asmens naujienų arba tas asmuo pranešimai ar Pokes. Ir aš norėčiau "Google" dabar kaip įjungti HTTPS "Facebook" galbūt. Bet jis tikrai yra taip paprasta, kaip kad. Ir taip "Facebook" ir "Google" ir panašūs Dotarłeś tikrai gerai, tačiau saugoti akis už bet kokius aplankytus tinklalapius, kurie nenaudoja HTTP daugiau ir turi kažkokį konfidencialios informacijos, ar tai finansinės arba asmeninės ar pan. Jei jie nenaudoja, tai, turbūt, kaip tai slapukai gali būti lengvai pavogtas ir tada suklastoti, ir tai, ką Firesheep padarė. Jūs neturite būti programuotojas. Viskas, ką turėjo padaryti, turite prieigą prie interneto, atsisiųsti šį nemokamą įrankį, ir ką ji turėtų daryti reikia užsiregistruoti ir tada jis bus parodyti jums, "Facebook" vardus visi Sanders, šiuo konkrečiu demonstracijoje, aplink jus ir visa, ką turėjo padaryti, buvo spustelėkite savo pavadinimą ir programinė įranga automatizuoti procesą uostyti tą slapuką, pateikiant jį į "Facebook", kaip savo, ir, voila, jūs prisijungęs. Taigi tai yra dar vienas iš tų "nedaryk to" oficialiai. Jei turite savo namų tinklą ir norite Taisome, visomis priemonėmis, bet suprasti, tai nereiškia, kirsti liniją universitetinėje aplinkoje. Bet tikslas čia yra tikrai pabrėžti ne tai, kaip tai padaryti bet kaip apsiginti nuo šių dalykų rūšių. Ir trivialus sprendimas čia, nors ji pati yra ydinga, yra tikrai sumažinti bet kokių svetainių, kurios yra ne naudojant HTTPS nuolat. Taigi, svetainių, kaip "Facebook" ir "Google" vis labiau žymės langelius , kur Jūs galite pasirinkti, kad šis dalykas rūšiuoti, ir bankai turėjo šiuo metų dėl panašių priežasčių. Taigi, tik šiek tiek baimės faktorių, jei mes galime. Bet tai trumpai. Kad yra kaip serveris prisimena, kas jūs esate. Ir kuo greičiau, nes jie gali prisiminti, kas jūs esate, jie gali prisiminti ką nors apie jus kad programuotojas yra saugomi viduje šios specialios superglobal vadinamas $ _SESSION. Ir už 7 pset mes jį naudoti funkcionalumą lengvai tik prisiminti int, būtent unikalus ID, vartotojo, kuris yra prisijungęs, todėl, kad mes žinome, jie buvo ten anksčiau. Bet tada sesijų ar slapukus, arba, pavyzdžiui, klausimai? Firesheep neveikia, taip pat nebėra, ir jūs turite įdėti savo kompiuterį į specialią doroviškai režimu todėl jūs iš tikrųjų klausytis eismui neskaitant sau. Taigi, jei jūs šiuo metu atsisiųsti Firesheep, supranta, kad tai nėra taip paprasta, nes ji kažkada buvo įrodyti. Gerai. Ir nereikia daryti Sanders. Tai padaryti namie. Duomenų bazės. Vienas iš dalykų, mes padarėme labai sąmoningai pset 7 buvo, mes suteikiame Jums pavyzdį, duomenų bazės lentelę vartotojams, kurie turi tam tikrą vartotojo ID, kai vartotojo vardai, ir kai jame yra užšifruoti slaptažodžiai. Ir kaip pamatysite, jei jūs neturite jau, jūs ketinate turi pakeisti A lentelėje šiek tiek. Jūs ketinate pridėti šiek tiek talpyklą kiekvieną iš šioje lentelėje vartotojams, ir jūs ketinate turi pridėti dar vieną istorijos lentelę, portfeliai stalo, arba galbūt tai kažkas kita. , Bet ir galvoti apie tai, kaip tai padaryti, tegul atverti šį įrankį kuriuos mes naudojome penktadienį, bet jei nepažįstamas, prietaisas ateina su įrankiu vadinamas phpMyAdmin, kuris atsitiktinai, parašyta PHP kodu, , tačiau jo gyvenimo tikslas, po to, kai aš prisijungti čia kaip jharvard su raudonu, yra suteikti man patogus būdas peržiūrėti ir pakeisti savo duomenų bazę. Duomenų bazę, kad aš bėgu ant prietaiso vadinamas MySQL. Tai yra labai populiarus, ir tai yra nemokama atviro kodo duomenų bazė, kuri yra nuostabiai paprastas naudoti, ypač su priekinių baigiasi, kaip šis. Tai, ką šis įrankis leidžia man daryti, pavyzdžiui, kišti aplink stalų. Leiskite man eiti į priekį ir tai padaryti. Penktadienį mes sukūrėme lentelę, pavadintą studentams, kad buvo super paprasta. Jis turėjo 3 stulpelius - id, vardas, pavardė ir elektroninio pašto - ir aš rankiniu būdu įtraukė keletą eilučių kaip Dovydas ir Mike Šiame konkrečiame pavyzdyje. Paimkime tai šiek tiek toliau, ir įsivaizduokime, kad mes norime prisiminti daugiau ne tik vardą ir elektroninio pašto apie klientą. Let me paspauskite struktūra čia viršuje. Ir vėl, pset walks jus per būtinų žingsnių čia, todėl nesijaudinkite, jei kai tai yra šiek tiek greitai. Tada aš spustelėkite čia. Aš ruošiuosi įdėti tam tikrą kolonėlės paštu nes aš noriu pridėti kažką panašaus namuose. Aš pamiršau įrašyti studento namus. Leiskite man spustelėkite Eiti, ir dabar mes turime šią formą, kurie, deja, yra šiek tiek plati, iš kairės į dešinę, bet aš ruošiuosi skambinti šioje srityje namo pavadinimą, ir tada tipo dabar aš turiu pasirinkti. Todėl galime turėti trumpą pokalbių apie įvairių tipų MySQL nes kadangi PHP yra silpnai atspausdinti ir ji tarsi atlieka greitai ir laisvi tipų, duomenų bazėje, ypač tai super svarbu, kad iš tikrųjų naudoti rašyti savo pranašumą , dėl to, kad vienas iš dalykų, MySQL ir kitų duomenų bazių variklių gali padaryti už jus yra užtikrinti, kad jums nereikia įdėti netikrą duomenis į savo duomenų bazę. Tai tarsi laisvo klaidų tikrinimo jums. Namų mes jokiu būdu nenorime, kad ji būtų int, kuris yra 32-bitų reikšmę MySQL. Mes padarėme kalbėti trumpai penktadienį apie varchar, kuris reiškia kintamo ilgio char. Kas tai yra? Tai leidžia jums nurodyti, kad norite, kad tai yra tam tikra eilutė. Jūs tikrai ne iš anksto žinoti, kiek laiko ji yra, todėl mes savavališkai pasakyti, namas pavadinimas gali būti 255 simbolių, , bet jūs galite eiti su 32, 64 - bet kurį skaičių iš tikrųjų. Bet naudojant varchar lauku vadinamas char privalumas yra tai, ką? Tiesiog intuityviai, jei aš slinkti žemyn čia, pastebėsite, kad char ir ten varchar. Varchar kintamo ilgio char char yra fiksuoto ilgio char. Taigi remiantis tik šio apibrėžimo, kas yra kiekvieno iš jų pranašumas ar trūkumas? Kitaip tariant, who cares apie skirtumą, arba kodėl tai turėtų rūpesčių Jums? Taip. [Studentas] varchar lanksčiau, bet užima daugiau atminties. Geras. Varchar užima daugiau - Pažiūrėkime. Aš nesu įsitikinęs, jei aš girdėjau šią teisę. Ar galite pasakyti, kad dar kartą? [Studentas] Aš pasakiau, varchar tikriausiai turi daugiau lankstumo, tačiau ji užima daugiau atminties. Įdomu. Gerai. Varchar tikriausiai suteikia jums daugiau lankstumo, bet užima daugiau atminties. Pastaroji yra nebūtinai tiesa. Tai priklauso nuo konteksto, bet galime grįžti, kad. [Nesigirdi studentas atsakas] Būtent. Jis iš tikrųjų tuo atveju,, kad char paprastai naudoja daugiau atminties nes char, kaip C, kaip eilutę, tai simbolių masyvas. Taigi, jei tu sakai char 255 ilgio lauką, duomenų bazė yra tiesiog ketina duoti jums 255 simbolių. Ir jei namas baigiasi Mather ir 6 simbolių, jūs eikvoti daugiau nei 200 simbolių. Taigi varchar efektyviai naudoja tik kaip daug ženklų, tai yra būtina, nustatytos didžiausios sumos. Bet kaina, kurią mokate iš tiesų yra kokybės, gali. Jei jūs iš anksto žinoti, kad visi jūsų stygos bus 8 simbolių - Pavyzdžiui, tarkime, kad jums reikia slaptažodžius 8 ilgis - naudojant char lauką kartais, bet ne dažnai aukštyn, yra nurodyti už ką nors, pavyzdžiui, fiksuoto ilgio slaptažodžiu nes dabar duomenų bazėje gali būti dar protingesni. Žino, kad kiekvieną char lauką, kiekvienas stulpelyje eilutė yra vienodo ilgio, jūs gaunate atgal laisvosios kreipties funkcija. Jūsų duomenų bazės lentelėje galite šokinėti tarp įvairių tekstinius laukus nes manau, su duomenų bazės duomenų eilučių ir stulpelių. Taigi, jei kiekvienas stygos yra tokio paties ilgio, žinote, kad pirmasis yra baitu 0, sekantis baitas yra 8 ir tada 16 ir tada 24 ir pan. Taigi, jei visi stygos yra to paties ilgio, galite šokinėti daug efektyviau. Taip, kad gali būti atlikimo terminai nauda, bet paprastai jūs neturite iš anksto žinant, prabanga, varchar yra būdas eiti. Štai dar viena detalė, kad net ir "Facebook" įvažiavo į galų gale. Ints yra didelė, ir mes tarsi juos naudoti pagal nutylėjimą, bet kuriuo metu, kai norime numerį, bet tai tik 32 bitų. Ir nors "Facebook" nėra gana turėti 4 mlrd. Vartotojų, ten tikrai keletas ten žmonės su keliais sąskaitų ar sąskaitų buvo atidarytas ir tada uždarytas, ir todėl "Facebook" pati Manau, prieš keletą metų turėjo pereiti nuo int , kaip taikliai pavadino, bigint, kuris yra tik 64 bitų vietoj. Taigi tai taip pat yra dizaino sprendimas. Jums bus nuostabiai pasisekė, jei jūsų galutinis projektas tampa paleidimo, buvo 4 mlrd. ir 1 vartotojai, duoti ar priimti, tokiu atveju naudojant int gali būti šiek tiek trumparegis. Bet iš tikrųjų, jūsų Vartotojų lentelė yra tikriausiai gerai su int. Bet kažką panašaus pset 7, kaip jūsų istorijos lentelės galite turėti tūkstančius, milijonus vartotojų jei peraugs į etrade.com. Taigi, kadangi jūs negalite turėti daugiau nei 4 mlrd. Vartotojų, tie vartotojai, jūs turite, gali turėti daugiau nei 4 mlrd. sandorių laikui bėgant - perka ir parduoda ir dalykų per savo istoriją. Taigi, jei jūs numatyti - vėl, tai yra geri problemų turi, jei turite tai daug duomenis jei jūs numatyti duomenis, viršijančius int dydis, vyksta su kažką panašaus bigint yra kryptis, ne pakankamai dažnai priimta dizaineriai nes žmonių skaičius, kad nesiruošia būti problema, bet tai tik lengva pasirinkti kažką daugiau nei, kad. Dešimtainis mes naudojame 7 pset, kuris apibrėžia fiksuotą tikslumą todėl jūs galite išvengti klausimus, susijusius su float ir double ir realiju ir pan. Ir tada ten kai kurie kiti laukai. Mes pakylės mūsų rankas į juos tam tikru mastu. Bet datos, laikas, nustatytą formatą MySQL, ir saugoti datos, datą, o ne varchars privalumas reiškia, kad duomenų bazė iš tikrųjų gali juos performatuoti į įvairių formatų, ar JAV formatas arba Europos formatas arba kaip vis dėlto norite tai - daug efektyviau, nei tuo atveju, jei ji buvo tik keletas bendro pobūdžio varchar. Ir tada ten kai kurie kiti dvejetainiai, VARBINARY, BLOB. Tai yra dvejetainiai dideli objektai, ir jūs taip pat gali laikyti dvejetainiai duomenys taip pat geometrinių duomenis duomenų bazėje. Bet mums, mes paprastai rūpi Ints ir varchars ir pan. Leiskite baigti šį pavyzdį su namo. Namas, kuriame aš ruošiuosi savavališkai pasakyti bus 255 apdegina. Tada numatytoji reikšmė galėtume tai padaryti. Mes galime pagal nutylėjimą, visus Mather House, pavyzdžiui. Štai kaip mes galime nurodyti, kad duomenų bazė turėtų užtikrinti, kad kažkas visada turi vertę. Bet aš palikti, tai būtų. Tiesą sakant, žmonių, kurie gyvena miesteliu ir ne namuose, gal aš iš tikrųjų noriu patikslinti, kad numatytoji reikšmė namo yra NULL, ir tada man reikia pažymėti šį langelį ir pasakykite duomenų bazę, tai gerai,, jei vartotojas namas yra NULL. Vėlgi, tai yra dar vienas gynybos mechanizmas, galite įdėti vietoje taigi jums nereikės net įdėti ją į savo PHP kode, būtinai. Duomenų bazė bus užtikrinta, kad viskas yra arba yra ne NULL. Ir tada galiausiai, savybės. Nė vienas iš jų yra tikrai svarbi. Dvejetainis, nepasirašytos - nė vienas iš jų yra susiję su VARCHAR. Indeksas. Ar kas nors žino ar prisiminti ar turite atspėti, kas indeksas yra namo kažką panašaus? Tai taip pat yra tikrai svarbus ir gana lengva dizaino sprendimas. Tiems, kurie dar nematė jį, penktadienį mes kalbėjome trumpai apie pirminius raktus. Duomenų bazės lentelę, pirminis raktas yra laukas arba stulpelis , kuris vienareikšmiškai identifikuoja eilutes lentelėje. Taigi dabartinėje lentelėje turime ID, mes turime vardus ir elektroninius laiškus. Kuris iš jų yra geriausias kandidatas būti pirminis raktas, kurių vaidmuo yra unikaliai identifikuoti eilutes? Tikriausiai ID Be abejo, mes taip pat galėtų panaudoti tai, ką nors? Gal galite naudotis elektroniniu paštu, nes teoriškai tai unikalus išskyrus atvejus, kai žmonės dalinasi elektroninio pašto sąskaitas. Tačiau realybė yra ta, kad jei jūs naudojate skaitinį ID, kaip ir 1234, tai tik 32 bitų, o elektroninio pašto adresas gali būti taip daug baitai arba tai daug baitų. Taigi, kalbant apie efektyvumą unikalių identifikatorių, jis yra linkęs būti gera praktika, tiesiog naudoti int net jei jūs turite kokį nors tekstą, kandidatas, kad galėtumėte be abejo, naudotis. Namo kažką panašaus, tai neturėtų būti pirminis raktas nes tada tik 1 asmuo galėtų gyventi Mather ir 1 asmuo iš Kurier ir panašios. Be to, tai neturėtų būti unikalus. Skirtumas tarp pirminės ir unikalus yra tai, kad mūsų dabartinėje lentelėje, ID būtų pirminis bet elektroninis paštas nėra pirminės priežasties mes tik paminėta - spektaklis - tačiau ji vis tiek turėtų būti unikalus. Taigi, jūs vis dar galite užtikrinti unikalumą nedarant reikalavimą kad tai super svarbu pagrindinis laukas. , Tačiau tai yra gana naudinga: indeksas. Jei žinote, iš anksto savo galutinį projektą, 7 pset arba apskritai, kad ši sritis namas bus kažkas jums ieškoti daug Pasirinkite Raktinių žodžių ar kažkas kita, tada jūs galite pasakyti, kad duomenų bazę dirbti savo magija Preemptively ir įsitikinkite, kad ji sukuria atmintyje jokių išgalvotas duomenų struktūrų, būtinų paspartinti paiešką pagal į namus. Gal jis bus naudojamas maišos lentelę, gal tai bus susietą sąrašą. Iš tikrųjų, jis yra linkęs naudoti medį, dažnai struktūra vadinama B-medį - ne dvejetainis medis, o B-medis, kuris yra labai platus medis , kad jūs galite pamatyti kaip CS124, duomenų struktūros klasės į klasę. Bet trumpai tariant, jūs neturite nerimauti, kad, naudojant SMART duomenų bazės programinę įrangą. Jūs galite tiesiog pasakyti, "Rodyklė šį lauką, kad aš galiu ieškoti efektyviau." Jei paliksite šį parametrą ir bandysite ieškoti visiems duomenų bazės, kuris gyvena Mather, ji pereina į linijinių paieška. Ir jei jūs turite 6000 undergrads visą gyvenimo tam tikru namą jūs ketinate ieškoti visą lentelę rasti Matherites , kadangi jei pasakysi puslapis, tikiuosi, ji bus kažkas arti logaritminėje paieškos rasti tuos rūšių studentai. Tai tik nemokamai funkcija įjungti, nors ji ateina nors kiek vietos kaina. Galiausiai, auto prieaugis, tai AI laukas, , kuris tiesiog reiškia, kad, jei tai int ir nenorite rūpintis prieaugio patys kiekvieną kartą, kai naujas vartotojas, patikrinkite, ar ir kiekvienas vartotojas, kuris gauna įterpiamas automatiškai gaus naują vardą. Leiskite spustelėkite Įrašyti ir dabar galime rasti kaltės su šio dizaino. Jei aš einu į naršyti, praneša, kad ir Mike ir mano namas yra NULL. Aš galiu naudoti phpMyAdmin pakeisti rankiniu būdu. Aš galiu eiti čia ir įveskite Mather ir tada paspauskite Enter, ir dabar pastebėti, lentelėje yra skirtingas. Bet pastebėsite, aš galėjau daryti ką nors kita, taip pat. Dovydo ID yra 1, todėl phpMyAdmin vėl yra tik administracinė priemonė; tai nėra kažkas, jūsų vartotojai yra kada nors pamatyti. Taigi, jei aš vietoj to spustelėkite SQL skirtuką aukštyn viršuje - ir vėl, pset 7 supažindins jus daugiau šių užklausų Galiu rankiniu būdu įvykdyti SQL Structured Query Language komandą UPDATE vartotojai SET namo = 'Pfoho "WHERE id = 1. Šie SQL užklausų, gražiai pakankamai, gana skaitoma iš kairės į dešinę. Atnaujinti lentelę vartotojams, nustatyti lauką pavadinimu namas Pfoho , kur vartotojo ID yra 1. Arba aš netgi ten, kur email = 'malan@harvard.edu ". Tol, kol kuris vienareikšmiškai identifikuoja man, kad dirbti taip pat. Tačiau ID linkęs būti didesnis našumas, todėl galime tai padaryti. Leiskite spustelėkite Eiti. Gerai, lecture.users neegzistuoja. Koks mano klaida? Kas yra lentelė iš tikrųjų vadinamas čia? Tai vadinama studentų tik todėl, kad ką mes padarėme čia viršuje kairėje. Tai vadinama studentai, o ne vartotojų. Taigi spustelėkite Eiti. 1 eilutė paveikta. Užklausa užtruko 0.01 sekundžių. Jeigu dabar aš spustelėkite Naršyti, dabar Malan gyvenimą Pfoho. Taigi, kad kitą SQL skonio, bet pset padės jums šiek tiek daugiau. Kvailas sprendimas aš jau čia. Norėčiau teigti, kad ši duomenų bazė dizainas yra neefektyvus nes kuo daugiau žmonių įtraukti į studentų stalo, kuo daugiau iš mūsų pradėti pridedant, TFS, aš pradėti pridedant daugiau, mes ketiname pradėti pamatyti, kas atleidimu iš darbo, šioje lentelėje? Taip. [Studentas] Matydamas, kad jis yra studentų, mes, naudojant tą patį [nesigirdi] Tas pats - Teisė, tiksliai. Taigi, jei 400 žmonių gyvena Mather, duoti ar priimti, galiausiai ši lentelė turi 400 eilutes, kad pasakyti "Mather", "Mather" "Mather," Mather, "Mather parengto". Mes eikvoti visų šių baitų, ir ten takeaways pora. 1, yra crazy kampe, kur, jei kas nors moka daug pinigų ir pervadina Mather, dabar mes turime pakeisti visą mūsų duomenų bazės lentelę. Tai nesiruošia atsitikti dažnai, nors Pfoho kažkada buvo vadinamas North House prieš 15 metų, todėl atsitinka. Bet tai dar ne viskas, kad įtikinamų. Patrauklesni nei kampe atveju, kaip kad reikia atnaujinti duomenis urmu duomenų bazėje kodėl jūs saugoti Mather vėl ir vėl ir vėl ir vėl? Tai daug simbolių, 6 simbolių. Mes negalime padaryti, net geriau nei, ypač Pforzheimer? Žinoma, mes galime padaryti geriau nei tas, kuris daug simbolių. Kodėl gi ne tiesiog susieti su kiekvienam namui unikalų identifikatorių parduotuvė, kuri kiekvienam vartotojui? Taigi, pabandykime tai. , O ne tiesiog naudokite studentams lentelę, leiskite man eiti čia mano paskaitos duomenų bazės viršuje kairėje. Pastebėsite čia, ji sako Sukurti lentelę. Leiskite man sukurti naują lentelę, pavadintą namai. Stulpelių skaičius bus 2. Įveskite. Dabar turiu 2 laukus. Aš ruošiuosi skambinti pavadinimas, ir tai bus ilgis 255 varchar, bet tai gana savavališkas. Leiskite man įdėti žemyn čia pagal susitarimą. Taigi įdėti ID čia. Tegul kiekvienas namas unikalų identifikatorių. Tegul kiekvienas namas vardą. Tegul nurodo, kad identifikatorius, pagal susitarimą bus nepasirašytos naudoti tik teigiamus skaičius. Eikime į priekį ir suteikti šį auto prieaugio lauką dabar. Ir mums reikia, kad kas nors kitas? Eikime į priekį ir spustelėkite Įrašyti. Dabar turiu antrą lentelę. Atkreipkite dėmesį, panaikinti tai yra šiek tiek paslaptingas SQL komandą kad jums reikės įvesti rankiniu būdu, jei nenaudojate administracinė priemonė, pavyzdžiui, phpMyAdmin. Taigi dar viena priežastis, kodėl mes ją naudojame. Tai nuostabiai naudinga rūšiuoti pedagogiškai, nes jūs galite spustelėti aplink ir išsiaiškinti, kaip viskas veikia tiesiog nukopijuoti ir įklijuoti ką phpMyAdmin padarė. Bet CREATE TABLE komanda yra tai, ką tik buvo įvykdytas, ir čia yra mano stalo. Leiskite man eiti į priekį ir naudoti RAW SQL, o ne per daug supaprastinti spustelėdami skirtuką Įterpimas. Leiskite man INSERT INTO namų, ir aš norėčiau pasakyti iš namų pavadinimas teks Mather "vertės. Štai ir viskas. Šį sintaksė yra šiek tiek paslaptingas. Tai srityse mes norime įterpti vardas. Tai yra vertybės, norime įterpti į šiose srityse. Leiskite man spustelėkite Eiti. 1 eilutė įterpiama užtruko 0.02 sekundžių. Man spustelėkite Naršyti dabar. Pastebėsite, jei aš spustelėkite Naršyti, yra Mather parengto pranešimo, kurio ID yra automatizuoti numeris 1. Duok man dar vieną. Leiskite man eiti į SQL skirtuką. INSERT INTO namų. Teks vertę Pfoho namuose pavadinimas ir kt. Eiti. Ir galiu laikyti tai daryti vėl ir vėl ir vėl. Arba, jei jums nuobodu, naudojant phpMyAdmin, galite tiesiog naudokite skirtuką Įterpimas ir neturi įveskite žaliavinio SQL. Jūs galite tiesiog sprogimo greitai rašyti, pavyzdžiui, Kurier, Enter, ir dabar, jei mes spustelėkite Naršyti, ten Kurier su 3 ID. Taigi, tai, ką mes vadiname auto prieaugio. Bet dabar mes turime nustatyti kažką studentams. Mokiniams, ką turėtų namo lauko duomenų tipas dabar bus? Ji turėtų būti int, tiesa? Taigi tikslas čia yra veiksnys, kitaip žinoma kaip normalizuoti, lenteles kad mes ne aukštesnėje informaciją Gausiai mano lentelių. Ir vėl, kelias, kurį mes buvome čia ketina pasakyti, Mather, Mather, Mather parengto pranešimo, Mather, Pfoho, Pfoho, Pfoho, Pfoho, kuris yra labai nereikalingas iš simbolių išlaidumas. Taigi leiskite man eiti į priekį ir tai pakeisti paspaudę struktūros, ir leiskite man eiti į priekį ir patikrinti namo lauką, spustelėkite Keisti, ir dabar aš ruošiuosi pakeisti į int. 255 yra nebeaktualios. Leiskite man eiti į priekį ir pasakyti, kad gerai, jei jis vis dar yra NULL. Įrašyti. Dabar stalo studentai buvo pakeistas sėkmingai, ir vėl pastebėti namas yra int. Kaip panaikinti, ignoruoti Skaičius skliausteliuose, kai jis ateina į int. Tai yra palikimas priežasčių. Atgal į dieną, kai jūs neturite GUI, vietoj to turėjo komandinės eilutės aplinką, 10 ir 11 straipsnius, nurodyti kiek simbolius, kuriuos turėtų parodyti terminalo lange iš tikro parodyti laukus. Tai neturi nieko daryti su faktinio srityje bitų ilgio, todėl mes tiesiog ignoruoti, kad dabar. Dabar aš turiu eiti į šioje lentelėje. Ir jei Davidas gyvena Mather, namas turi būti ne 0, kuri yra arčiausiai NULL nutylėjimą int vertė. Jis turėtų gyventi namas 1. Tegul savavališkai pasakyti, kad Mike gyvena mieste Pfoho, todėl namo numeris 2. Dabar mano lentelė atrodo šiek tiek paslaptingas. Tačiau mano, efektyvumą. Aš dabar tik 32 bitų nustatyti namą, kuris reiškia, kad yra tik 1 kanoninė mano namuose Mather ir Pfoho apibrėžimas ir kad namų lentelėje. Taigi, jei aš noriu vėl prisijungti prie šios lentelės, manau, apie tai šiuo būdu. Čia aš turiu savo studentams lentelę, ir dešinėje pusėje yra šie skaičiai, 1 ir 2. 1 yra Mather, 2 yra Pfoho. Mes turime tuos pačius numerius šios kitos lentelės, kuri yra vadinama namai, 1 ir 2 ir 3 šių 3 namų. Tai, ką mes dabar norime padaryti, PHP ir SQL kode galimybes, rūšiuoti vėl prisijungti šias lenteles, kur, jei jie yra studentai, ir tai yra namai, mes norime kažkaip sujungti juos taip, kad 1 linijos su 1, 2 eilutės iki su 2, ir kad mes galime išsiaiškinti, kur Davidas Mike ir kur visi kiti gyvena. Norėdami tai padaryti, mes galime atlikti SQL užklausos, pavyzdžiui, šių. SELECT * FROM studentams JOIN namus - Ir dabar, kokius laukus mes norime prisijungti? Taigi students.house = houses.id. Šiek tiek paslaptingas, tačiau ši dalis reiškia tiesiog sukurti naują laikiną lentelę tai prisijungti prie studentų ir namų rezultatas. Ir kaip jūs norite sujungti mano pirštų patarimų čia? Nustatyti studentų namų Namai ID laukas, lygų lauką. Ir jei aš spustelėkite Eiti, aš grįšiu, ką aš tikėjosi. Dovydas yra Mather, Mike Pfoho, ir aš taip pat matau unikalius identifikatorius. Bet yra ta, dabar turiu visą lentelę. Ir taip išsinešimui čia pset 7, ar tikrai per galutinį projekto: Jei pastebėsite, kad jūs saugoti bet kokią informaciją gabalas Gausiai, ar tai būtų namas, gal tai miestas, valstija, ir ZIP kur ZIP paprastai, bet ne visada būti naudojamas kaip unikalus identifikatorius, eiti per naudojimosi psichiškai ir tada kažką panašaus į phpMyAdmin faktoringo, kad bendrų duomenų, nes, ypač, kaip jūsų svetainę gauna daugiau naudojami gerai ir labiau populiarėja, tai, kaip jūs įsitikinkite, kad viskas yra super greitai, suteikti duomenų bazei, kaip įmanoma tiek daug užuominų į unikalumą. Kuris buvo daug. Turite klausimų? Gerai. Paimkime 5 minučių pertrauką ir pergrupuoti. Gerai. Toliau pateikiamas pavyzdys, kuris buvo naudojamas prieš keletą metų, kai aš paėmė CS161, , kuri yra operacinių sistemų klasė kolegijoje , kuris yra žinomas už tai, kad nuostabi, bet crazy suma darbą, , dėmesys tikrai kai kurie žemo lygio problemas, kurios kyla iš operacinių sistemų , o taip pat net duomenų bazių pasaulyje. Istorija, kad buvo pasakyta, mano profesorius, Margo Seltzer, tais pačiais metais buvo taip. Tarkime, kad jūs turite šiek tiek bendrabučio šaldytuvą jums ir jūsų kambarioku ir jūs abu tikrai patinka pienas. Taigi, jūs grįžti namo iš klasės vieną dieną, savo kambarioku vis dar nėra, atidarote šaldytuvą, ir jūs suprasite, "Oh damn, mes iš pieno." Taigi, jūs uždaryti šaldytuvą, jūs einate per gatvę į CVS ir gauti vis ilgosiomis ūdomis nusipirkti pieną CVS. Tuo tarpu, savo kambarioku grįžta namo iš jo klasės, ateina į kambarį, atidaro šaldytuvas tikrai nori šiek tiek pieno, atidaro šaldytuvo ir "Velnias, be pieno". Kad jis arba ji užsidaro šaldytuvas, eina pro duris, ir eina į ABP ar kažkur, išskyrus, kur jūs nesiruošia guzas į vienas kitą CVS eikite gauti šiek tiek pieno. Žinoma, po kelių minučių, tiek jums grįžti namo ir dabar jūs turite du kartus daug pieno, kaip jūs iš tikrųjų norėjo. Ir yra pieno, dabar ji vyksta eiti blogai, nes jums patinka pienas bet jūs tikrai ne kaip pienas, todėl dabar jūs turite per daug pieno, todėl ketina rūgštus. Tai yra baisu, siaubinga situacija. Kas galėjo išspręsti šį kebli, jei būtum pirmas kambarioku namo? Taip. [Studentas] Jūs turėjo palikti pastabą. [Juokas] Geras. Jūs turėjo palikti pastabą. Jūs turėtumėte būti įdėti Post-it dėmesį, arba kaip sakydamas: "Gone už pieną" ir tada jūsų kambarioku konceptualiai būtų užblokuota iš tikrųjų daro, kad. Arba tu gali eiti 1 žingsnis toliau. Jūs galite tiesiog užrakinti šaldytuvą su kai kurių Spynos natūra, o dabar savo kambarioku bus tiesiog būti užrakintas iš šaldytuvo. Jei mes apibendrina atgal į programavimą, jūs galite beveik galvoti iš šaldytuvo kai keičiamos natūra arba struct, kažkoks konteineris informacijos. Problema iš esmės čia yra, kad jums abiems buvo leista tikrinti arba skaityti šį duomenų struktūros, bet peržiūrėjote skirtingu laiku ir dar tiek jums padarė sprendimą remiantis šių skirtingų laiko momentais pasaulio valstybės. Taigi, jei būtumėte užrakinta šaldytuvas, būtų bent išvengė savo kambarioku galėjo apžiūrėti padėtį pasaulyje, kad jis ar ji negalėjo tą patį sprendimą. Taigi, duomenų bazių, As it turns out, turi šią problemą nuolat. Leiskite pamatyti, jei mes galime statyti scenarijų. Tarkime, kad jūs tarsi blogiukas ir jūs einate į "Bank of America vieną ar kitose vietose aikštėje, kurios turi pora Bankomatai vienas šalia kito, ir kažkaip jūs suprato, kaip dviem egzemplioriais bankomatas kortelę - ne visi, kad sunku. Tai tiesiog Magnetinės juostelės. Ir kas norite pabandyti padaryti, tai žaisti šį žaidimą kuriuo jūs įtraukėte 1 kortelę į 1 mašina, kitą kortelę į kitą mašiną, ir jūs iš esmės nori pabandyti atsiimti pinigus tuo pačiu metu, nes įsivaizduoti, kad istorija eina taip. Kairėje mašina užima savo kortelę ir PIN kodą, ir tada jūs sakote, "Duok man 100 $". ATM yra užprogramuotas padaryti pasirinkite savo duomenų bazę ar lygiavertė tokia duomenų bazė, kuria jis naudoja - pamatyti tai vartotojas turi bent 100 $ jo sąskaitoje? Jei taip, tada išspjauti $ 100 ir atimti $ 100 iš balanso. Bet, žinoma, jei yra įvairių mašinų čia arba daug būdų, kaip tikrinti to pasaulio valstybės, banko požemis, norėdami pamatyti, kiek pinigų jūs turite, manyti, kad tik atsitiktinai MACHINE kairėje ir teisę užduoti šį klausimą maždaug tuo pačiu laiko momentu. Ir tai tikrai gali atsitikti. Bankomatų kompiuterių šių dienų. Taigi, jei kairėje mašina sako, "Taip, jūs turite ne mažiau kaip $ 100" tuo tarpu dešinėje mašina sako: "Taip, jūs turite ne mažiau kaip $ 100" tada jie abu pereiti prie pabaigos savo programas ir išspjauti $ 100 ir sako: "Anksčiau jums teko 200 JAV dolerių." "Leiskite man atnaujinti kintamąjį dabar gali būti $ 100 liko sąskaitoje. Bet jei abu jie patikrino savo sąskaitos likutį ir nustatė, kad $ 200 ir jie abu tada daryti matematikos ir pasakyti 200-100, mašinos gali išspjauti 100 $ sąskaitas kiekvieną mašiną, bet jie ką tik atnaujino savo suma sąskaitos likutį bus $ 100. Kitaip tariant, jūs $ 200, bet todėl, kad jie patikrino padėtį pasaulyje vienu metu ir tada priėmė sprendimą, remiantis tos vertės, jie gali padaryti matematikos galiausiai teisingai. Taigi banko situaciją tikrai norite turėti tam tikrą lokautas natūra taip, kad kuo greičiau jūs patikrinote kai kurių kintamojo būklę tai tikrai svarbu, kaip jūsų sąskaitos likutį, neleiskite, kad kas nors kitas priimti sprendimus, remiantis, kad tol, kol baigsite daryti jūsų dalykas, kai šiuo atveju jūs kairėje bankomatų. Užrakinti ir visi kiti. Jūs iš tikrųjų galite pasiekti šį poveikį įvairiais būdais pora. Paprasčiausias būdas MySQL SQL eilutė, kad mes davė jums problemą, specifikacija, kuri atrodo lygiai taip pat kaip tai. Įtraukti į stalo - kokia ji vadinama ID, simbolis, ir dalis, akcijų skaičius, šios vertės, pvz. Jei turite ne skaityti spec, tai yra pavyzdys, apimanti tai, kaip tu apie tai pirkti 10 akcijas šio Penny Stock prezidentui Skroob, kurio vartotojo ID atsitinka būti numeris 7? Tai sako INSERT INTO stalo taip id, simbolis, ir akcijų skaičių 7, "DVN.V", ir 10. Bet - bet, bet, bet - tai antroji linija yra svarbi. ANT Dublikatas raktas atnaujinimo akcijų = akcijos + VALUES (akcijos). Taip visiškai paslaptingas ieško iš pirmo žvilgsnio. Bet faktas, kad šis SQL užklausa, nors ji antklodės ant 2 eilučių, 1 ilgas užklausos, tai reiškia, kad jis atominis ta prasme, kad ši užklausa bus arba būti vykdomas visi kartu, ar ne. Ir iš esmės MySQL, tai kaip jie įgyvendino šią užklausą. Tai yra pagal apibrėžimą garantuoja, kad vykdyti visus iš karto arba ne visi vadove. Ši motyvacija yra taip. Jei šiuo atveju jūs bandote pirkti 10 "akcijų, tai tipo tos pačios istorijos, pieno, tai tipo tos pačios istorijos, ATM. Jei jūs padarote klaida ne naudojant šią sintaksę bet vietoj to pasirinkdami iš duomenų bazės Norėdami sužinoti, kiek akcijų šio Penny Stock Prezidentas Skroob, ir manau, jis turi 10 akcijų, ir tada kai sekundės vėliau atlikite UPDATE, , kuris yra dar vienas SQL, kad sako, kad eiti į priekį ir pridėti 10 daugiau akcijų jo 10, kad idealiu atveju iš viso yra 20, problema yra, nes šiandienos duomenų bazių sistemų ir dėl to, kad šiandienos kompiuteriai turite kelis procesorius, daug branduolių - Kitaip tariant, kompiuteriai gali tiesiog daryti daug dalykų vienu metu - nėra jokios garantijos, kad jūsų pasirinkti ir jūsų UPDATE šiuo atveju nutiks atgal atgal. Taigi blogas scenarijus būtų jums padaryti SELECT pamatyti, kiek akcijų šio Penny Stock Skroob turėti, ir tada tiesiog atsitiktinai kita duomenų bazės užklausa yra vykdoma gal jos Skroob kitame naršyklės lange bando pirkti 10 akcijas apskritai kitame lange, panašiai kaip ATM ir manau, kad kita užklausa patenka į pasirinkite ir atnaujinimas. Tai gali būti tuo atveju,, kad Skroob dabar praranda tam tikrą skaičių akcijų , nes kitas procesas patikrinti jo pasaulio būklę, ar jis gauna daugiau akcijų nei jis turėtų turėti. Mes negalime eiti į detales, ką tos konkrečios istorija linijos būtų bet esmė yra, jei jūs turite patikrinti kintamųjų vertę ir tada priimti sprendimą, jei ten kažkas daro kažką tarp šių 2 teiginių rizika, kaip gali atsitikti Daugiaprocesorinė sistemų, MULTICORE sistemų, kompiuteriai su galimybe daryti daug dalykų vienu metu, blogų dalykų gali atsitikti pavyzdžiui, banko sąskaitų debetuojama neteisingai, pirkti dvigubai daug pieno, ar šiuo atveju neteisingai akcijų skaičius. Tačiau yra paprastesnis būdas galvoti apie tai. It turns out, kad SQL taip pat palaiko, jei teisingai sukonfigūruoti savo stalo, kažkas vadinamas sandoriai, kuriuos aš norėčiau ginčytis iš tikrųjų yra dar lengviau suprasti nei šis, bet tai ne 1-įdėklas, todėl tai tikrai šiek tiek aktyviau dalyvauti. Yra pažodžiui vadinamas START SANDORIŲ SQL. Kaip ten SELECT, UPDATE, INSERT, DELETE, ir prisijungti, ir krūva kitų, yra raktažodžius, pavyzdžiui, START OPERACIJOS. Ir ką jūs tada atlikite į pset 7 - jūs neturite tai padaryti pset 7; ji aiškiai paneigė nebūtina, tačiau galutinių projektų, ji gali būti naudinga - , jei Jūs skambinate START SANDORĮ užklausą ir tada kitą užklausą ir tada kitą užklausos ir tada kitą, kitą, ir kitą, šios užklausos bus ne iš tikrųjų būti vykdomas, kol skambinti SQL ĮSIPAREIGOJAME, tuo momentu, ar tai yra 2 ataskaitos arba 20 pareiškimai, jie visi bus vykdomi vienu metu, , o tai reiškia, niekas kitas gali netyčia nusipirkti per daug pieno ar debetinę per daug pinigų arba pirkti per daug akcijų, nes visus jūsų klausimus, atliks atgal atgal atgal atgal. Ir tai yra itin svarbu, ypač kai jūs darote kažką panašaus į tai. Tai savavališkai pavyzdys, kad sako, kad tegul atnaujinti banko sąskaitą nustatant pusiausvyrą, kuri yra lygi balanso - $ 1000, kur sąskaitos numeris yra 2. Ir tada Antrasis pareiškimas dabar tegul deponuoti, kad $ 1000 į kito asmens banko sąskaitą, kurio sąskaitos numeris yra 1. Kitaip tariant, tai yra puikus pavyzdys, kur jūs norite įsitikinti, kad tiek iš šių teiginių atsitiks, arba ne visi nes priešingu atveju klientas ketina gauti prisukamas ir jūs ketinate imtis savo pinigus, o ne palikti jį kitur, ar bankas ketina Ululać, kur jūs einate deponuoti pinigus , bet ne faktiškai atimti iš vartotojo sąskaitos. Taigi jūs norite iš jų vykdyti kartu. Taigi patenka į pasaulio sandorius. , Kad kažkas išlaikyti savo proto atgal, ne tiek daug tik galutinį projektą, tačiau, jei norite imtis savo galutinį projektą kažkur, jei norite pradėti kai kompanija aplink jį, jei norite išspręsti kai kurių mokinių grupė problemą dėl kampusie ir iš tikrųjų turėti gyvą, aktyvią interneto svetainę, tai yra tarsi subtilus klaidų, kurios gali kilti jei jūs neturite pakankamai apgalvoti, kas gali atsitikti, jei 2 žmonės bando prisijungti prie savo svetainėje pažodžiui tuo pačiu momentu, kai savo užklausas kitu atveju galėtų gauti vienas kitam. Paruošta kai JavaScript, jų kibinimas? Tai mūsų paskutinė kalba už semestrą. Gerai. Laimei, "JavaScript" atrodo labai, labai, labai panašus į 2 kalbas, C ir PHP, mes padarėme iki šiol. Nėra jokios pset 7 "JavaScript", tačiau tai nepaprastai naudinga priemonė , kai kalbama apie tai žiniatinklio galutinius projektus, ar tikrai tik web programavimas apskritai. Taigi, trumpa apžvalga kažką vadinama DOM. Čia yra super paprasta interneto puslapį, tiesiog sako Hello, world tiek pavadinime ir organizme. Kaip įdubimas rodo tam tikrą laiką, iš tiesų egzistuoja hierarchija į interneto puslapius. Aš galėtų padaryti tą patį fragmentą HTML kaip medis, galvoti atgal į mūsų diskusijų duomenų struktūrų, C, kaip nurodyta toliau. Turiu tam tikras specialias šakninis mazgas, vadinamas dokumentas mazgas, ir mes pamatyti, tai analoginis JavaScript vos akimirką. Pirmasis vaikas ir tik vaikas, kad šiuo atveju yra HTML tegus. Negali būti jokio tiesioginio DOCTYPE kartografavimas. Tai ypatingas dalykas, todėl mes turime tiesiog ignoruoti jį, kai jis ateina į šį DOM, šiuo Document Object Model medis. Atkreipkite dėmesį, kad aš vaizduojamas savavališkai stačiakampio, HTML tegus turi 2 vaikus: galvos ir kūno. Panašiai parengtas kaip stačiakampių. Jis yra reikšmingas pictorially, kad galva yra kūno kairėje. Tai reiškia, kad galva ateina pirmiausia į medį. Taip yra iš tikrųjų užsisakyti į medį, kai piešiama kaip tai, nors forma ir Papuošalą yra savavališkas. Vadovas tuo tarpu turi vieną vaiką, pavadintą pavadinimas, ir pavadinimas iš tikrųjų turi savo vaiką, kuris yra "labas, pasauli", Aš sąmoningai padarė, kaip ovalo čia, kad ji šiek tiek skiriasi nuo stačiakampio. Šiuos stačiakampius, o hello, pasaulis yra tikrai tekstas mazgas. Todėl į medį mazgas, bet tai skirtingo tipo mazgas todėl aš patraukė savavališkai skirtingai. Panašiai institucija turi vaiką "Sveikas, pasauli, taip pat, taip skiriasi mazgas, nors jie atsitiktinai pats tekstas, bet aš sudarytas naudojant tą pačią formą. Taigi, who cares? Na, kas malonu apie HTML yra tas, kad turi šią hierarchinį pobūdį. Ir kas malonu apie "JavaScript" ir ypač bibliotekų, kurias galima laisvai ir labai populiarus, pavyzdžiui, JQuery, jūs galite naršyti medžio struktūra, taip nuostabiai lengvai. Bet kurių dalykų mes padarėme su nurodymus ir važiuojantiems medžių C ir recursing apie mazgų kairėje vaikas į dešinę vaiko, visi staiga mes galime rūšiuoti laiko savaime suprantamu dalyku kaip nuostabiai Paaiškinti, jei ne šiek tiek varginantis tačiau toli gražu ne efektyvus būdas eiti apie programavimą. Ir taip su šių aukštesnio lygio kalbų, pavyzdžiui, "JavaScript" mes galėsime daug daugiau intuityviai naršyti šį medį. Ir iš tiesų sintaksė bus gana gerai susipažinę. Jei jūs niekada JavaScript anksčiau, tai tikrai gražus nuoroda iš Mozilla žmonės, žmonės, kurie padaryti "Firefox", todėl nereikia jaustis laisvai naršyti, kad jums patogiu metu. Ką jūs rasite ir šias skaidres, yra identiški, ką mes naudojamas kitą dieną - panašiai, pagrindinis dingo. Taigi, kai jums reikia parašyti programą JavaScript, nėra pagrindinė funkcija. Jūs tiesiog pradėti rašyti kodą. Tačiau esminis skirtumas tarp JavaScript ir C ir PHP yra tas, kad C ir PHP šiol buvo vykdomi serverio pusėje prietaisą šiuo atveju, ar apskritai serverio, Paprastai vykdoma naršyklėje JavaScript pagal projektą. Kitaip tariant, jums gali rašyti "JavaScript" kodą, kaip mes apie tai, prietaisą serverio, bet įtraukti jį tarp savo HTML tarp jūsų CSS, tarp savo GIF ir savo PNG ir jūsų JPEG taip, kad, kai vartotojas apsilanko savo tinklalapį, jei jūs naudojate "JavaScript", , kad JavaScript kodas ateina iš serverio į naršyklę, ir tai yra naršyklė, kuri faktiškai vykdo. Taigi, tai turi reikšmingų pasekmių net ir intelektinės nuosavybės. Tai koks kvailas, kad net galvoti apie apsaugoti savo IP adresą, kai jis ateina į "JavaScript" kodo , nes kalbos pobūdį jis paleidžiama vykdyti paprastai naršyklės pusėje. Galite Zamglić, o tai reiškia, jūs galite padaryti, tai atrodo kvailai ir bjaurus be tarpų, siaubingi kintamųjų vardai, būtų sunkiau, kad žmonės galėtų pavogti jūsų IP bet svarbiausia yra tai, kad jis yra vykdomas naršyklės pusėje. Nors, kaip panaikinti "JavaScript" gali būti naudojama serverio pusėje, labiausiai paplitęs atvejis dabar yra vis dar savo naršyklėje. Ir štai, kaip jis atrodo. Čia yra if-else if-else statyti kaip ir C, kaip ir PHP. Čia yra Būlio išraiška, kai jūs "ar" 2 dalykų kartu. Čia yra, kai jūs "ir" 2 dalykų kartu. Čia yra jungiklis pareiškimas, kuris yra panašus į PHP tuo, kad galite perjungti įvairių tipų, dydžių. Kilpos panašiai kilpų čia, kuris yra struktūriškai vienodai, ką matėme prieš. O kilpos, mes turime padaryti, o kilpos. Kintamieji, vis tiek šiek tiek skiriasi. Jūs deklaruoti kintamuosius, kaip jūs tai darote PHP ir C, bet panašiai Javaskriptą, silpnai įvedėte. Jums nereikia nurodyti int arba lėšos arba eilutę ar ko nors panašaus, kad paprastai. Galite nurodyti var. Jūs neturite nurodyti var, bet jis turi įtakos, jei jūs neturite. Paprastai, jei jūs praleisti var, netyčia sukurti pasaulinį kintamąjį, o ne vietos. Taigi leiskite man pasiūlyti, kad jūs beveik visada tik pasakyti, var ir tada kintamojo pavadinimas. Tai ne tipo, tai tik var kintamasis. Tai būtų, pavyzdžiui, ar tai 123 ar "Hello, world". Matricos yra ir sintaksės panaši į PHP. Pasakysiu var numerius ir tada aš vėl naudoti skliaustus paskelbti kintamąjį kurio tipas yra masyvas, kuris turi šiuos numerius atskirdami juos kableliais. Ir tada galiausiai, tai yra tik viena, kad tikrai atrodo kitaip. Prisiminkite, kad PHP įgyvendino Association masyvas studentui kaip Zamyla, kad gali atrodyti, kurioje kintamasis yra vadinamas studentas. Laužtiniuose skliaustuose reiškia, čia ateina masyvas. Tas faktas, kad aš ne naudojant skaitinius indeksus, bet stygos - id, namas, vardas ir pavardė - reiškia, kad tai Association masyvas, ir šie strėlių, lygybės ženklą ir kampu skliaustelius reiškia, kad svarbiausia yra "id", vertė yra 1; Svarbiausia yra "namas", vertė yra Winthrop House; Svarbiausia yra "pavadinimas", vertė yra Zamyla Chan. Taigi yra 3 raktai viduje šio Association masyvas, iš kurių kiekvienas turi savo vertę. Mes matėme, kad pset 7, arba jūs netrukus JavaScript tą pačią idėją, bet jis ketina atrodyti. Taigi var studentas - ne dolerio ženklas ir neužsimenama tipo dar, bet var - lygus ir tada atidaryti garbanotieji petnešų, nes "JavaScript", kai jūs turite rakto reikšmė porų, jūs iš tikrųjų naudoti kažką vadinama objektas. Ir tie iš jūsų, kurie tikrai turėjo šarvuotis ar kaip tikriausiai pamenate, kad objektus iš Java arba panašios kalbos. "JavaScript" yra ne "Java", visų pirma. Tai buvo apgalvoto dizaino sprendimų metai prieš atkalti ką nors kita, kad buvo populiarus, jos pavadinimas, nors ji neturi esminį ryšį su "Java" pati. "JavaScript" objektus, ir jas kuriate garbanotas petnešomis žymėjimo būdu. JavaScript objektai beveik atitinka Association masyvai PHP kai kalbama saugoti duomenis, viduje iš jų. Bet dar stipriau "JavaScript" galite susieti labai lengvai funkcijas objekto viduje, ir nors jūs galite tai padaryti kitomis kalbomis, tai gana paplitusi paradigma, kaip matysime. Trumpai tariant, šis objektas yra studentas, kuris yra ypač Zamyla ir tai yra konceptualiai panašūs, tik sintaksiškai skiriasi nuo. Tegul iš tikrųjų naudoti "JavaScript" failą. Pasirodo, ten scenarijų tegus. Mes matėme stiliaus tegus ir mes matėme kitų HTML žymes. Tag scenarijų iš tikrųjų bus pateikiama šiek tiek "JavaScript" kodą. Leiskite man eiti į prietaiso, kur mes turime šiek tiek gatavų šaltinio kodą. Negali būti paskelbti jį dar į svetainę, bet aš padaryti, kad po klasę. Tegul atverti šią vieną, blink.html. Atgal 1990 metais, ten buvo tiesiog vadinamas Blink tegus HTML tegus ir tai buvo vienas iš labiausiai nuostabiai netinkamiausias žymes internete , pagal kurią norite aplankyti apie 1990-ųjų stiliaus tinklalapį ir pradėti matyti tekstas mirksi jums patinka tai, žymės markizas rezultatai tekstas, kuris, kaip šis. Vienas iš nedaugelio kartų, kai pasaulis iš tikrųjų sutartų dėl interneto standarto, visi visur žuvo Blink žymeklį prieš keletą metų. Tačiau mes galime prikelti su "JavaScript", kaip jūs turite galios demonstravimo kai jūs galite parašyti programą, viduje iš tinklalapio. Pirmiausia leiskite praleisti naujų dalykų ir sutelkti dėmesį tik į senas. Čia yra sendaikčiai šiame pavyzdyje. Turiu HTML tegus, galvos žymeles ir žymės pavadinimą. Tada aš turiu kūno tegus čia su div, išėmimas iš apyvartos yra tik stačiakampio formos puslapio padalinys , kad aš jam suteikiamas unikalus ID savavališkai "Pasisveikinimas", tiesiog taip turiu unikaliai jai kelią, kad turi keletą labai paprastą tekstą: Sveikas, pasauli. Dabar leiskite man slinkite iki viršaus šį failą ir pamatyti, kas naujo. Pirmas dalykas, kad naujo iki viršaus yra scenarijaus žymė, ir viduje pranešimo tag scenarijų aš paskelbė funkciją. Paskelbti, kai "JavaScript" funkciją, gana panašus į PHP, jūs tiesiog parašyti funkcija tada funkcijos pavadinimas, skliausteliuose, o gal kai kurie argumentai, jei ji mano, bet. Tada aš gavau mano garbanotas petnešomis, kaip įprasta, ir dabar mes turime šiek tiek šiek tiek naują kodą, bet pažiūrėkime, ką tai reiškia. Taigi var div, tai tiesiog reiškia, duok man kintamasis vadinamas div. Aš galėjo pavadino jį foo, bet aš norėjau, kad jis būtų vadinamas div priežasčių, kurios bus aiškiai per sekundę. Tada paaiškėja JavaScript - ir tai yra "JavaScript" kodo, įtraukti į savo tinklalapį - yra specialus pasaulio kintamasis dokumentu, pavadintu rūšių. JavaScript yra iš tikrųjų Objektinis kalba. Mes negalime eiti į smulkmenas 50, ką tai reiškia, , bet dabar žinau, kad objektas yra gana daug kaip struct. Kaip matėme kelią atgal, kai viena iš pirmųjų problemos nustato kur mes įdėjome daug informacijos į struct panašiai yra dokumentuoti ypatingą struct, kad ateina su naršykle, ateina su bet kurį tinklalapį. Tai nėra tai, ką aš sukūriau. Viduje šio dokumento struktūrą, nors, jūs turite ne tik duomenis , bet jūs taip pat turite funkcijas. Ir bet kada turite funkciją viduje statinio viduje objekto, jis vadinamas metodas. Bet tai tas pats. Metodas yra funkcija, kad tiesiog taip atsitinka, viduje apie ką nors kita. Taigi tai reiškia, kad ši speciali pasaulio kintamasis vadinamas dokumentą funkcija vadinama getElementById, kad pažodžiui Ar tai. Jis bus jums iš DOM elementas, Document Object Model medis, kurio ID yra šiuo atveju sveikinimo. Kitaip tariant, visą tą laiką, mes praleido apie duomenų struktūras ateina į žaidimą čia. Šis Dom nuotrauka, kad mes turėjome prieš akimirką, nors puslapis yra šiek tiek kitoks, jei aš turėjo div šioje nuotraukoje, ką document.getElementById sugrįš į mane būtų veiksmingai rodyklė medžio, nuoroda į medyje stačiakampio stačiakampio. Taip, kad tai, ką ji reiškia, kad iš tikrųjų skambinti vienu iš šių funkcijų. Šiuo atveju vėl div. Tai nėra įstaiga arba pavadinimas. Taigi pažiūrėkime, ką aš tada daryti dabar, kad aš jį viduje Šis kintamasis vadinamas div div. It turns out su JavaScript, jūs turite galimybę įgnybti savo puslapio CSS dinamiškai. Iki šiol visi CSS mes padarėme, nors ir ribotas, yra stiliaus atributais, ar kur kitur, mes įdėti CSS? I rūšies sugedęs, kad vienas. Stiliaus gairę failo viršuje. Arba trečioji vieta buvo? Išorinio failo, kažkas CSS. Taigi čia yra 3 vietos, CSS šiol mes padarėme, bet laimikis mes sunkiai koduojami viskas. Jūs nusprendėte, kaip jūs panėrė į pset 7, mes nusprendėme, prieš paskaitą, ką mūsų CSS būtų. Bet jei norite pakeisti savo CSS, jūs iš tikrųjų galite padaryti, kad kai turite faktinė programavimo kalbą. CSS, HTML - ne programavimo kalbų. JavaScript. Taigi paaiškėja, kad kuo greičiau turite vieną iš šių stačiakampių iš medžio vadinamas DOM, ji pati kai jame esantys duomenys. Taigi div, kad aš tiesiog įsikabinti iš medžio yra tai, ką mes vadiname turtą viduje vadinamas stilius ir stiliaus viešbutyje yra sau turtą, pavadintą matomumas. Aš žinau, tai tik ieškant CSS vartotojo vadove. Pasirodo, ten matomumas CSS nuosavybė, ką ji sako. Ji daro kažką matomas ar ne, matomas, ar ne. Ir kaip jūs darote, kad tai. Aš prašau programiškai, jei matomumas yra paslėpta šio div, ką man jį pasikeisti? Matoma. Else if šio puslapio matomumas nėra paslėptas, logiškai aš padaryti, kad tai yra paslėptas. Aš neįsivaizduoju, kodėl ji matoma ir paslėptas, o ne matoma ir nematoma. Tai buvo prastas dizainas sprendimas pakeliui. Bet tie, kurie iš tikrųjų priešingybės CSS: matoma ir paslėpta. Visa tai yra, tai reiškia, pakeisti mano bylą, CSS ir išjungti, įjungti ir išjungti tos konkrečios div. Bet vėl, tai yra funkcija, vadinama mirksėjimo. Kada mirksėjimo funkcija vadinama? Pasirodo, kad yra dar viena speciali pasaulio kintamasis vadinamas langas, panašus dvasia dokumento, bet kadangi dokumentas nuoroda į jūsų tinklalapį, kaip medį DOM, HTML siunčiami iš serverio, langas susijęs su aplink jį chromas, adresų juostoje, pavadinimo juostoje, ir tos aplink savo tinklalapį stuff. Ir paaiškėja, kad langas objektas yra specialios funkcijos viduje Ji paragino setInterval , kad tai, ką ji sako. Ja bus nustatyti intervalą, šiuo atveju - kas 500 milisekundžių - ir spėti, kas tai ketinate daryti kas 500 milisekundžių? Jis ketina vykdyti šią funkciją mirksi. Ir kas malonu čia, kad galėtume tai padarė C, nors mes niekada. C turi kažką vadinama funkcijos patarimų, kur galima perduoti funkcijas aplink argumentais. Panašiai "JavaScript" galite pereiti į kitos funkcijos funkcija pavadinimą. Ir pastebėti, ką aš darau. Aš ne tai daryti. , Jei aš įdėti skliausteliuose po Blink, tai reikštų, skambinti mirksėjimo funkcija. Jei aš juos praleisti, tai reiškia, kad čia yra mirksėjimo funkcija todėl kad setInterval gali kas 500 milisekundžių. Todėl galutinis rezultatas, žiaurią nors ji yra, kad jei aš einu į localhost ir eiti į blink.html Dabar aš turiu šito vėl ir vėl. Ir jei aš iš tikrųjų Apžiūrėkite elementą, galime pamatyti, jei mes galime pamatyti tai. Leiskite man Tikrinti elementą, leiskite man slinkite žemyn, tik šiek tiek, leiskite man pasirinkti elementus per čia, ir pastebėti DOM Chrome inspektoriaus viduje. Tai tiesiog pakeisti pirmyn ir atgal kas 500 milisekundžių. Jei mes einame į mūsų draugas Nate, , jei jūs kada nors susimąstėte, kaip tai dirba, panašią idėją su intervalu, bet Nate iš tiesų yra labai veiksmingai naudoti šiuo konkrečiu atveju, čia spalvos. Taigi, ką dar galime su tuo daryti? Tegul atverti dar vieną pavyzdį ir išbandyti ką nors tai programiškai dar labiau naudingas nei siekį mirksi. Leiskite man eiti į mūsų formų kataloge šiandien ir eiti į form0. Tai buvo ugliest, kad galėčiau sugalvoti, ir leiskite man tiesiog parodyti jums, kaip jis atrodo, kad naršyklėje. Leiskite man eiti į localhost / formos, ir tai yra form0. Tai super bjaurus HTML formą, kuri turi kelis laukus, Email, slaptažodžio, slaptažodį, ir tada šiek tiek žymės langelį sutikti su kai kuriais terminais ir sąlygomis. Laimikis yra, jei aš aplankyti šią formą ir aš nenoriu duoti jums mano elektroninio pašto adresą, Aš nenoriu sutikti su terminais ir sąlygomis gal galiu spauskite mygtuką "Registruotis ir tai leidžia man per vistiek. Tai atsitinka teikti kvailas PHP failą pavadinimu dump.php. Visi jame yra atsispausdinti turinį $ _GET tik diagnostikos tikslais. Tai buvo, kas buvo pateikti naudotojui tik dabar. Tačiau tarkime, mes iš tikrųjų norime patvirtinti vartotojo formą. Leiskite man eiti į 1 variantas. Tai form1.html. Atrodo estetiškai lygiai taip pat blogai, bet pastebėsite, kaip tai yra išgalvotas. Jei aš spustelėkite Registruotis be bendradarbiauja, man rėkė. "Jūs turite nurodyti savo elektroninio pašto adresą." Gerai. Taigi leiskite man pabandyti, kad. Taigi malan@harvard.edu. Man nereikia slaptažodį. Registruotis. "Jūs turite nurodyti slaptažodį." Gerai. Taigi aš pateikti raudonu slaptažodį. Registruotis. "Slaptažodžiai nesutampa". Turiu įvesti purpuras čia. Aš netyčia pažymėjote. Registruotis. "Jūs turite sutikti su terminais ir sąlygomis". Gerai. Sutinka, kad. Registruotis. Ir dabar jis man rodo diagnostikos produkcija per ten. Taigi, kas atsitiko? Mes turėjo šią galimybę patvirtinti formų pateikimą. Iš tiesų, jei jums pasinerti į pset 7, atsiprašyti funkcija kad daro tai gana lengva klykauti ne su pranešimu ekrane vartotojui. Aš naudoju šiek tiek kitokį mechanizmą, automatinio įspėjimo funkcija, kuris yra ne funkcija, kuri nusišypsojo to, nes jis daro labai negraži vartotojo pranešimus. Bet pažiūrėkime, ką aš darau čia. Tai form1.html, ir pastebėsite, kad turiu šiek tiek gana pažįstamas sintaksę: kūno tegus, forma tegus, ACTION atributas, metodas atributas. , Bet pastebėsite, aš mano forma unikalų identifikatorių patogumui. Tada aš gavau laišką lauką, kurio tipas yra tekstas, slaptažodžio lauką, kurio tipas yra slaptažodį, patvirtinimas laukas, kurio tipas yra slaptažodis, ir tada žymės langelį, kurio vardas yra susitarimas čia, tipo langelį. Ir tada aš turiu mygtuką "Siųsti". , Bet pastebėsite, viršuje, ką dar turiu. Visų pirma, yra dar vienas žymelės scenarijų naudojimas. Jei turite kokių nors "JavaScript" kodą į kitą failą, kaip su CSS, galite jį įtraukti. Ir jūs, kad su Scenarijaus šaltinio, ir tada pastebėsite, aš prijungti matyt labai ilgą kelią, bet kurio failo pavadinimas baigiasi googleapis.com į jquery.min minimumo. js. JQuery yra super populiarus biblioteka JavaScript, kad tiesiog daro "JavaScript" juo labiau, patogus naudoti. Jis tapo de facto standartas. Taigi, nors, ką jūs apie norėdami pamatyti nėra grynas Javaskriptą, savaime, tai ant JavaScript panašiai kaip CS50 bibliotekoje biblioteka yra sluoksnis ant žemo lygio C kodas; tikrovė yra tokia, beveik visi internete naudoja ją. Taigi tai yra ne mokymo ratai. Tai tik geriausią praktinę patirtį šių dienų. Dabar toliau pastebėsite, kad yra mano paties scenarijaus žymė, ir pastebėti, ką aš padariau čia. It turns out, kad JQuery ar kažkas šiek tiek išgalvotas. Javascript dolerio ženklai, tačiau jie yra bereikšmiai. Jie yra tarsi raide A arba B arba C. JQuery tiesiog priėmė konvenciją arba rūšiuoti laid reikalavimo į tai, kad $ bus jų ypatingą simbolis. Taigi, kai jūs įkelti šį pasaulinį "JavaScript" failą čia su žymelės scenarijų, turite prieigą į specialią pasaulinį kintamąjį, tai vadinama $. Tai daugiau tinkamai vadinamas JQuery, bet tai nereiškia, atrodo beveik kaip seksualus kaip $. Bet $ neturi ypatingą reikšmę. PHP turėjo ypatingą reikšmę. Jums teko turėti jį prieš kintamojo. Tai tik seksualus dalykas, kad jie paėmė. Kas čia vyksta? Atkreipkite dėmesį, aš pereiti į jQuery funkciją savo pasaulinį kintamąjį dokumentą ir tada aš skambina. pasiruošę. , Ką JQuery iš esmės nėra tai leidžia jums imtis šiek tiek vanilės "JavaScript" dalykų kaip dokumento objektas, langas objektas, ir jei pereisite į JQuery funkcija - ir vėl, kad būtų aiškus, tai funkcija vadinama JQuery ką ji daro, ji grąžina jums specialią versiją dokumento , kad turi daugiau funkcijų, su juo susijusios. Taigi žaliavinio JavaScript nėra pasirengęs funkcija, tačiau jei pereisite dokumentą JQuery funkcija, jis grįžta į specialią versiją dokumento objektas , kad turi daugiau pažangias funkcijas. Ir tai, kodėl žmonės mėgsta. Jis tiesiog leidžia lengviau padaryti, nes mes apie norėdami pamatyti. Taigi, ką tai kodo eilutę reiškia? Šis kodo eilutę čia reiškia, kai dokumentas yra parengtas Kitaip tariant, kai naršyklė yra skaitote šį failą viršaus į apačią - eiti į priekį ir vykdyti šią funkciją. Tai, kas tikrai įdomu, JavaScript ir PHP yra tai, kaip gerai - yra anoniminiai funkcijos. "JavaScript" galite paskelbti funkcijos, kurios neturi pavadinimo, bet jie turi kūną. Atkreipkite dėmesį, tai, kas vyksta čia. Tai funkcija, vadinama pasirengę, ir tai tik reiškia, atlikite šiuos veiksmus , kai viso tinklalapio yra pasirengusi, Kai viskas buvo skaitoma iš serverio. Ką norite daryti? Noriu vykdyti dalį kodo. Atkreipkite dėmesį, kad mes nenorime vykdyti šį kodą iškart. Jeigu aš praleisti šį, tai reikštų, nedelsiant pradėti vykdyti šias kodo eilutes. Bet tai, kad aš noriu pasakyti, ne, ne, ne, apvyniokite tai anonimiškai funkcijas, kaip šis priemonės negali paleisti jį dar; galiausiai jį pavadinti. Mes tai matėme momentas prieš mūsų ankstesnės formos pavyzdys. Kokią funkciją mes vadiname, galų gale, 500 milisekundžių vėliau? Mirksėti. Taigi tą pačią idėją. Vėlgi, net jei tai atrodo šiek tiek keistai, tiesiog dabar tikėjimu kad paskelbti anoniminis funkcija, kuri vadinama galiausiai, jūs tiesiog parašyti function () { Taigi, kokiu kodu mes ketiname vykdyti galų gale? Taip. Tai taip pat atrodo šiek tiek nauja, bet tai reiškia, kad čia yra JQuery funkcija, ir tai dabar yra trumpiausias. Šį HTML fragmentą, žinoma, ekrano apačioje šiek tiek medžio atstovavimą. Tai ne tai. Šis puslapis yra įdomesnis nei šis Hello, World pavyzdžiui. Bet ten kai medis, kuris atitinka šios HTML. Būtų kaklo skausmas turi įgyvendinti kažkokį rekursinis funkcija pradėti šakninis mazgas ir tada rasti mazgas, kurio ID yra registracija. Taigi, ką JQuery daro super lengva, mums yra pažodžiui tai. Eiti į priekį ir pasiimk mane, kokia div arba bet kokia forma, nepriklausomai nuo HTML elementas turi registracijos adresą. Tai prilygsta document.getElementById ("registracija"). Kodėl žmonės, pavyzdžiui, JQuery? , Nes jis trumpesnis įvesti. Bet, kad visa tai yra. Tai tą pačią idėją. "Leisk man žymą, kurio ID yra registracija. Ir kai yra tvirtinama, kad žyma, kuris atsitinka būti forma, eiti į priekį ir vykdyti šį kodą. Todėl galime imtis vienas ieškoti dabar, kaip mes darome, formos patvirtinimo. Komandos sintaksė yra tiesa paslaptingas per pirmąjį, tačiau tai, kas vyksta? Jei tai kodo eilutė yra teisinga, aš ruošiuosi šaukti, kad vartotojas galėtų pateikti savo elektroninio pašto adresą. Taigi, kas tai yra kodo eilutę? $ JQuery. Dabar pastebės. Tai natūra, pavyzdžiui, CSS. Jei jūs nėrė į CSS dar, jūs žinosite, kad tai reiškia, elementą, kurio ID yra registracija. Vietos tai rasti vaiką ar registracijos palikuonis, kurio pavadinimas yra įėjimas. Ir tada šis dalykas laužtiniuose skliaustuose yra šiek tiek filtras. Ir net jei tai atrodo paslaptingas, tai tiesiog reiškia, eiti į formą, kurio ID yra registracija, eikite į įvesties vidinis elementas, kurio vardas yra elektroninio pašto, ir tada gauti savo vertę, nesvarbu, kokia jo vertė būna, kad asdf jei tai viskas, ką aš spausdintas arba malan@harvard.edu, jei tai, ką aš įvedėte. Taigi,, jei formą elektroninio pašto srityje == jokia vertė, klykauti ne vartotojo. Else if slaptažodžio lauke vertė == nieko, klykauti ne vartotojo. Else if slaptažodžio lauke vertė nėra lygi patvirtinimo srityje vertę, , kuris buvo kitos formos elementas, klykauti ne vartotojo. Ir tada galiausiai - ir tai irgi turi tam tikrą naują sintaksę savo, bet kai tik jūs mačiau jį, tai bent šiek tiek labiau pagrįsta - else if forma, kurio ID yra registracija turi įvesties elementas, kurio pavadinimas yra susitarimas ir ji yra tikrinama, eiti į priekį ir klykauti ne vartotojo. Taigi, aš visiškai pripažinti, tai yra visiškai didžioji iš pirmo žvilgsnio. Tai naujos sintaksės daug. Bet visi JQuery šių modelių rūšių. Ir sąžiningai, aš net žinau, tai egzistavo tik kelias minutes. Aš googled "Kaip jums patikrinti, jei žymės langelį tikrinamas JQuery?" ir tai yra sintaksė, nes ten yra įvairių būdų tai daryti su realiais žaliavinio JavaScript kodą. Taigi, kaip pats pirmas puslapis problemą, 7 pabrėžia, pset 7 yra labai daug pratybų Bootstrap save kur mes su sąlyga, tikiuosi, koncepciją, su kuria spręsti pset. Bet kaip dažnai su web dizainas atveju, tai jums tikrai baksnoti aplink, įtraukti kodo fragmentų ir pavyzdžius iš interneto, taip ilgai, kaip jūs juos paminėti už dėl šio pirmojo lapo, ir suprasti, kad mokytis HTML, CSS, "JavaScript" ir net SQL iš tikrųjų reiškia būti tai at-home įgyvendinimas, kaip mes pradėsime priimti šias mokymo ratus. Ir suprasti, taip pat tiek daug daugiau dalykų, kuriuos galite padaryti su naršykle. Viduje dauguma iš šių elementų yra ir kitų dalykų, pavadinta įvykių tvarkytojai. Ir nors mes tik pažvelgė tie vadinami onsubmit ir onready jūs galite padaryti dalykų, pavyzdžiui, onkeydown, onkeyup, patinka, kai vartotojas paliečia raktą, galite klausytis, kad ir mygtuką į viršų. "Gmail" yra spartieji klavišai. Kaip "Google" sparčiuosius klavišus, pavyzdžiui, C rašyti? Jie klausosi įvykius, kaip jie vadinami, kaip onkeypress ar onkeyup ir onkeydown. Jeigu jūs kada nors svyruoti savo pele per tam tikrą meniu ir visi staiga, voila, pasirodys meniu, arba grafinis vaizdas keičia spalvą, kaip jie tai daro? O ne klausytis onready ar onsubmit, jūs klausytis onmouseover ar onmouseout. Taigi trumpai tariant, šių labai paprastas pagrindai, kad mes pradėjo subraižyti paviršių šiandien ir mes pasinerti toliau trečiadienį, jūs turite, vis dažniau galia įgyvendinti rūšių dalykų, kad jūs jau esate susipažinę su. Taigi, tegul nesibaigia, o mes ir toliau tai trečiadienį. [CS50.TV]