1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Savaitė 9] 2 00:00:02,570 --> 00:00:04,740 [David J. Malan - Harvardo universiteto] 3 00:00:04,740 --> 00:00:07,170 [Tai CS50. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 Gerai. Sveiki sugrįžę. Tai CS50, o tai yra 9 savaitės pradžios. 5 00:00:12,350 --> 00:00:16,600 Šiandien mes turime sutelkti dėmesį visų pirma dėl dizaino, ne ilgiau C 6 00:00:16,600 --> 00:00:20,010 bet PHP ir SQL bitų ir Javascript, 7 00:00:20,010 --> 00:00:23,730 ypač į 7 pset tiek tikslu, taip pat jūsų galutinis projektas. 8 00:00:23,730 --> 00:00:26,310 Iš tiesų, jei jūs tuo momentu savo galutinį projektą 9 00:00:26,310 --> 00:00:30,100 kur matyt, bent valandą, arba tiek atgal pradėjo duoti šiek tiek minties 10 00:00:30,100 --> 00:00:33,730 į galutinį projektą ir jūs galvojate norite bendradarbiauti su 1 arba 2 klasiokais, 11 00:00:33,730 --> 00:00:36,150 jei jums kyla problemų jungiantis su klasės draugus, 12 00:00:36,150 --> 00:00:40,570 nedvejodami užpildyti formą, esančią cs50.net/partners/form. 13 00:00:40,570 --> 00:00:42,880 Jis tiesiog klausia, kas tu esi, kokios projekto galvojate apie 14 00:00:42,880 --> 00:00:44,870 kur jūs gyvenate tik dėl logistinių priežasčių. 15 00:00:44,870 --> 00:00:49,510 Ir tada, jei norite saugoti akis dėl per kitą savaitę arba tiek skaičiuoklės URL, 16 00:00:49,510 --> 00:00:53,520 galite matyti tik skaityti "Google" dok 17 00:00:53,520 --> 00:00:56,010 , kurią mes tokios informacijos rinkimo. 18 00:00:56,010 --> 00:00:58,930 Taigi, jei norite dirbti su kuo nors, visomis priemonėmis jaustis laisvai ištiesti pagalbos ranką žmonėms 19 00:00:58,930 --> 00:01:00,480 per tą mechanizmą. 20 00:01:00,480 --> 00:01:02,690 Bet dauguma žmonių daryti darbo solo. Tai visiškai baudą. 21 00:01:02,690 --> 00:01:06,120 Todėl nesijaučia, kad tai jokiu būdu privalomo. 22 00:01:06,120 --> 00:01:09,680 Penktadienį buvo tik man ir komandos čia, 23 00:01:09,680 --> 00:01:11,100 tuščias teatro didžiąja dalimi. 24 00:01:11,100 --> 00:01:14,600 Buvo 3 turistai sėdi ten, kad buvo šiek tiek nepatogu. 25 00:01:14,600 --> 00:01:18,970 Ką mes kalbėjome apie duomenų bazes ir mes kalbėjome apie 7 pset šiek tiek. 26 00:01:18,970 --> 00:01:22,200 Ir jei tu negali atsitikti taip, prašau, kad ant vaizdo, tik dar, kad gerai. 27 00:01:22,200 --> 00:01:26,770 Aš pabandysiu apibrėžia visas sąlygas, kad mums būtų kitaip laiko savaime suprantamu dalyku 28 00:01:26,770 --> 00:01:28,840 remiantis penktadienį savo paskaitoje. 29 00:01:28,840 --> 00:01:32,550 >> Tačiau šiandien mes ketiname išbandyti, kad jums iki taško, 30 00:01:32,550 --> 00:01:34,990 ne tik, kad galėtų padaryti kažką panašaus pset 7 31 00:01:34,990 --> 00:01:37,360 bet tikrai suprasti, kas vyksta po gaubtu, 32 00:01:37,360 --> 00:01:41,910 ypač kai iš abstrakcijų, kad mes įtraukti į functions.php failą 33 00:01:41,910 --> 00:01:45,780 kad jūsų gyvenimas šiek tiek lengviau, bet taip, kad jūs galų gale suprasti 34 00:01:45,780 --> 00:01:48,760 kad kai mokymo ratai nukristi po kelių savaičių, jūs galite vis dar išgyventi 35 00:01:48,760 --> 00:01:53,750 realiame pasaulyje, ir padaryti šią medžiagą be bet CS50 sistemos Jumis. 36 00:01:53,750 --> 00:01:57,500 Šis $ _SESSION, tiems iš jūsų, kurie yra susipažinę 37 00:01:57,500 --> 00:02:01,960 arba kurie jau pateko į vaizdo penktadienį, ką SESIJA darykime 38 00:02:01,960 --> 00:02:04,330 PHP, interneto taikymo? 39 00:02:04,330 --> 00:02:09,650 Tai superglobal kintamasis, o tai reiškia, jis panašus dvasia GET ir POST 40 00:02:09,650 --> 00:02:13,970 ir keletas kitų, bet kas yra tai, ką naudinga? 41 00:02:13,970 --> 00:02:18,320 >> Kas yra SESIJA naudojamas? Taip. [Studentas] Jungiamasi 42 00:02:18,320 --> 00:02:21,040 Sorry? [Studentas] Logging in Jungiamasi tiesų. 43 00:02:21,040 --> 00:02:25,100 Mes naudojame pset 7 Ši sesija superglobal palengvinti prisijungti. 44 00:02:25,100 --> 00:02:28,600 Ir ką malonu apie šį superglobal yra, kad jis masyvą. 45 00:02:28,600 --> 00:02:33,190 Asociatyvus masyvas, primenu, yra tik matrica, bet kurių indeksai nebeturi būti skaičiai 46 00:02:33,190 --> 00:02:37,670 kaip 012. Jie gali būti skaičiai arba jie gali būti net stygos. 47 00:02:37,670 --> 00:02:44,890 Ir todėl, jei jūs nėrė į pset 7 dar, jūs galite prisiminti, kad mes saugome pagrindinį, pavadintą ID 48 00:02:44,890 --> 00:02:50,330 viduje šio Association masyvas, kurio reikšmė yra kažkas panašaus į 123 - 49 00:02:50,330 --> 00:02:53,780 nesvarbu, kaip šiuo metu prisijungęs vartotojo ID. 50 00:02:53,780 --> 00:02:59,470 Tai motyvacija yra, kad net po to, kai vartotojas aplankė localhost 51 00:02:59,470 --> 00:03:02,720 ar mano svetainė apskritai ir tada jie jau prisijungęs, 52 00:03:02,720 --> 00:03:07,320 net jei jie ne spustelėkite nuorodą arba grįžti į savo interneto svetainėje 5 minutes 53 00:03:07,320 --> 00:03:10,730 ar net valandą ar net dieną, bet jie palieka savo naršyklės langą atvirą, 54 00:03:10,730 --> 00:03:14,370 per šį superglobal aš galiu prisiminti, kad jie prisijungęs. 55 00:03:14,370 --> 00:03:21,140 >> Kitaip tariant, jis leidžia man laikyti šiek tiek ilgalaikį, ką noriu apie klientą. 56 00:03:21,140 --> 00:03:24,390 Ir jūs galite galvoti apie tai tikrai kaip krepšelį įsikūnijimas. 57 00:03:24,390 --> 00:03:27,740 Vietų, pavyzdžiui, "Amazon" akivaizdžiai jums įdėti į krepšelį dalykų, 58 00:03:27,740 --> 00:03:32,230 bet HTTP protokolas, kad įgaliojimai internete, yra be pilietybės 59 00:03:32,230 --> 00:03:34,230 ta prasme, kad kai Jūs lankotės svetainėje, 60 00:03:34,230 --> 00:03:37,290 didžiąja dalimi jūs neturite tam tikrą pastovų ryšį su tinklu 61 00:03:37,290 --> 00:03:39,270 tarp Jūsų naršyklės ir serverio. 62 00:03:39,270 --> 00:03:42,190 Iš karto, kai jūs įkėlėte HTML ir formato JPEG ir GIF, ir visa tai, 63 00:03:42,190 --> 00:03:48,200 ryšys nueina, ir jūs tiesiog HTML ir Papuošalą kopiją iš serverio. 64 00:03:48,200 --> 00:03:53,000 Bet jei serveris nori prisiminti kažką apie jus, 65 00:03:53,000 --> 00:03:57,580 našta serveryje iš tikrųjų įrašyti šią informaciją. 66 00:03:57,580 --> 00:04:00,130 Ir tokiu būdu jūs programuotojas, kuris turi kontroliuoti serverio 67 00:04:00,130 --> 00:04:04,400 galite įdėti labiausiai, ką norite viduje šio superglobal Association masyvas 68 00:04:04,400 --> 00:04:06,850 ir ji ten bus kitą kartą, kai vartotojas grįžta, 69 00:04:06,850 --> 00:04:12,070 ar tai minučių arba net dienų, išskyrus atvejus, kai jie uždaryti savo naršyklės langą, 70 00:04:12,070 --> 00:04:14,360 tuo momentu SESIJA dingsta. 71 00:04:14,360 --> 00:04:17,779 Todėl efemeriška saugojimas, tai nepatvarus, ir tai reiškia, kad išeiti 72 00:04:17,779 --> 00:04:22,360 iš karto, kai naudotojas baigia savo naršyklę, - ne tik, kad skirtukas, dažnai visa naršyklė, 73 00:04:22,360 --> 00:04:24,930 tokiu būdu veiksmingai registruojant vartotoją. 74 00:04:24,930 --> 00:04:28,000 Taigi, kaip tai, ką iš tikrųjų įgyvendintas? 75 00:04:28,000 --> 00:04:31,360 Paimkime greitai pažvelgti į paprastą pavyzdį, mes pažvelgė penktadienį. 76 00:04:31,360 --> 00:04:33,340 Tiems, kurie susipažinę, tai buvo taip paprasta, kaip šis. 77 00:04:33,340 --> 00:04:35,910 Tai interneto puslapis, kurio vienintelis tikslas gyvenime yra man pasakyti 78 00:04:35,910 --> 00:04:38,000 kiek kartų aš aplankė šį puslapį. 79 00:04:38,000 --> 00:04:41,670 Tai čia pirmą kartą pirmadienį, kad aš ją aplankė, todėl ji sako 0 kartų. 80 00:04:41,670 --> 00:04:46,940 >> Bet jei aš pradedu iš naujo įkelti šį puslapį, ji sako, 1 kartą, 2, 3, 4, 5, 81 00:04:46,940 --> 00:04:49,800 ir tai galų gale tiesiog laikyti skaičiavimo iki, iki, iki, iki, iki 82 00:04:49,800 --> 00:04:53,130 kiekvieną kartą, kai aš iš tikrųjų spustelėkite Atnaujinti. 83 00:04:53,130 --> 00:04:58,830 Taigi, kaip šie darbo? Leiskite man eiti viduje šį failą, vadinamą counter.php. 84 00:04:58,830 --> 00:05:02,490 Viršutinė dalis yra visų Blue komentuoja, bet įdomiausia dalis yra čia. 85 00:05:02,490 --> 00:05:06,670 13 on-line mes vadiname šią funkciją session_start 86 00:05:06,670 --> 00:05:09,600 ir tai yra tiesiog viską, ką reikia daryti, jei jūs norite turėti prieigą 87 00:05:09,600 --> 00:05:13,610 šis specialusis superglobal vadinamas $ _SESSION. 88 00:05:13,610 --> 00:05:17,430 Kad daro tai įmanoma, ir mes pamatyti, metu, kaip kad viskas įmanoma. 89 00:05:17,430 --> 00:05:20,350 16 eilutėje pranešimo, ką aš darau. 90 00:05:20,350 --> 00:05:25,960 Jei raktas, vadinamas skaitiklis - kitaip tariant, indekso reikšmė - "skaitiklis" 91 00:05:25,960 --> 00:05:32,310 yra šio masyvo viduje, vadinamas sesija, tada, ką aš darau su juo žemiau linijos? 92 00:05:32,310 --> 00:05:36,650 Kas yra eilutė 18 daro? 93 00:05:36,650 --> 00:05:40,360 >> [Nesigirdi studentas atsakas] Kas tai? [Studentas] saugojimas vertę. Geras. 94 00:05:40,360 --> 00:05:45,800 Tai laikyti vertę, kad sesija dabar naujame vietos laikino kintamojo, 95 00:05:45,800 --> 00:05:48,250 $ Skaitiklis mažosiomis. 96 00:05:48,250 --> 00:05:50,770 Atkreipkite dėmesį, kad PHP jau yra šiek tiek tingus čia. 97 00:05:50,770 --> 00:05:55,550 Atkreipkite dėmesį, mes neturime bet paminėta int ar plūduriuoti ar siūlai ar ko nors panašaus, kad 98 00:05:55,550 --> 00:06:00,480 nes PHP yra silpnai įvedėte, kuriuo jūs neturite nurodyti kintamojo tipą, 99 00:06:00,480 --> 00:06:03,310 ir čia šiuo atveju aš net paskelbė jį dar. 100 00:06:03,310 --> 00:06:08,980 Aš nedeklaravę viduje šių klamrami ir skirtingai nei C, iš tikrųjų tai yra gerai. 101 00:06:08,980 --> 00:06:13,800 Nesvarbu, kaip giliai įdėtos kintamasis deklaraciją PHP - 102 00:06:13,800 --> 00:06:16,650 viduje garbanotas petnešomis, viduje garbanotas petnešomis ir panašios - 103 00:06:16,650 --> 00:06:21,230 ji tuo metu laiku yra Likusiam programos trukmės laikotarpiui, 104 00:06:21,230 --> 00:06:22,680 geriau ar blogiau. 105 00:06:22,680 --> 00:06:26,930 Taigi, jis iš karto tampa pasaulio kuo greičiau ją apibrėžti kaip mes darome, čia. 106 00:06:26,930 --> 00:06:31,620 >> Priešingu atveju, jei aš negali rasti, kad nėra nieko sesijos superglobal, 107 00:06:31,620 --> 00:06:34,680 Aš, matyt, Inicijuojama Šis kintamasis counter 0, 108 00:06:34,680 --> 00:06:37,580 taip tik darant prielaidą, kad vartotojas turi čia dar niekada nebuvau. 109 00:06:37,580 --> 00:06:40,030 Ir tada tai, žinoma, yra pokyčio skaitiklis kaip? 110 00:06:40,030 --> 00:06:44,480 Aš atnaujinti vertę, kuri yra viduje šio Association masyvas 111 00:06:44,480 --> 00:06:49,530 nustato, per kiek laiko ji lygi kokia skaitiklis šiuo metu yra + 1. 112 00:06:49,530 --> 00:06:53,520 Jei aš slinkti žemyn į puslapio HTML, tai tikrai gana paprasta. 113 00:06:53,520 --> 00:06:58,920 Turiu šio puslapio kūno "Jūs aplankė šią svetainę toks ir toks kartus." 114 00:06:58,920 --> 00:07:00,350 Ir tai yra PHP konstruktas. 115 00:07:00,350 --> 00:07:06,080 Jei tai padarysite <=, tai atitinka kokią funkciją? 116 00:07:07,920 --> 00:07:12,600 Tai tikrai atitinka kažką panašaus printf, mes matėme daug kartų, C, 117 00:07:12,600 --> 00:07:15,940 nors, kaip žinote jau iš spec pset 7, 118 00:07:15,940 --> 00:07:20,160 spausdinimo pat yra funkcija, kad tik spausdina kažką iš, jis nėra iš tikrųjų naudoti formato kodus, 119 00:07:20,160 --> 00:07:23,270 ir jūs iš tikrųjų galite pasakyti echo taip pat. 120 00:07:23,270 --> 00:07:27,460 Jie visi vis tiek šiek tiek kitoks, net jei grynasis poveikis yra galiausiai pats. 121 00:07:27,460 --> 00:07:31,270 Taigi šis lygybės ženklo yra tiesiog tarsi elegantiškas būdas tai daryti 122 00:07:31,270 --> 00:07:34,910 daugiau glaustai nei priešingu atveju galbūt būtų galima. 123 00:07:34,910 --> 00:07:38,370 Taigi, kad viskas šioje svetainėje. Jis spausdina skaitiklio vertę. 124 00:07:38,370 --> 00:07:40,550 Kaip visa tai iš tikrųjų vyksta? 125 00:07:40,550 --> 00:07:43,250 Jums gali prisiminti per savaitę arba tiek atgal mes pradėjome ieškoti po gaubtu 126 00:07:43,250 --> 00:07:47,910 , kaip interneto puslapis veikia naudojant šį inspektorius skirtuką. 127 00:07:47,910 --> 00:07:51,900 >> Chrome "yra tai tiek Mac versija, Windows versija, ir netgi Linux versija, 128 00:07:51,900 --> 00:07:59,510 ir Firefox ir IE turi panašius mechanizmus, kuriais turite šią built-in Debugger 129 00:07:59,510 --> 00:08:01,400 viduje naršyklėje. 130 00:08:01,400 --> 00:08:03,040 Paimkime bent šių išvaizdą. 131 00:08:03,040 --> 00:08:06,960 Mes turime visa krūva skirtukų čia ir priminti, kad kairiausias elementai, 132 00:08:06,960 --> 00:08:10,700 ir nesvarbu, kaip godawful HTML ir "JavaScript" yra į puslapį, 133 00:08:10,700 --> 00:08:15,710 Prisiminkite, kad elementai "iš tikrųjų gali naršyti HTML hierarchiškai 134 00:08:15,710 --> 00:08:17,050 ir gražus ir tvarkingai. 135 00:08:17,050 --> 00:08:19,370 Taigi, jei jūs bandote išmokti iš, pavyzdžiui, "Google" ar "Facebook" tinklalapyje 136 00:08:19,370 --> 00:08:22,370 ar tikrai bet kokios svetainės, suprantame, kad jūs tikriausiai geriau 137 00:08:22,370 --> 00:08:26,360 žiūri šaltinio kodą tokiu būdu, o ne peržiūrėti žaliavos šaltinį, 138 00:08:26,360 --> 00:08:29,580 kuris gali būti netvarka, kaip mes matėme ypač "Google" svetainėje. 139 00:08:29,580 --> 00:08:32,220 Taigi, jei aš vietoj spustelėkite skirtuką Network čia 140 00:08:32,220 --> 00:08:34,830 galime pamatyti, kas vyksta, kai aš aplankyti šį puslapį. 141 00:08:34,830 --> 00:08:38,669 Pirmiausia leiskite man išvalyti talpyklą. 142 00:08:38,669 --> 00:08:43,570 Aš ruošiuosi eiti į "Chrome" nustatymus ir tada pereiti į istorijos 143 00:08:43,570 --> 00:08:46,420 Išvalyti visus naršymo duomenis. 144 00:08:46,420 --> 00:08:48,170 Jums gali būti naudojama tai daryti kitiems tikslams, [juokas] 145 00:08:48,170 --> 00:08:51,990 bet kai jis ateina į besivystančių svetainių, tai tikrai naudinga - 146 00:08:51,990 --> 00:08:55,980 jei jūs juoktis žinote. [Juokas] 147 00:08:55,980 --> 00:08:59,310 Tai tikrai tikrai naudinga kuriant interneto svetaines, nes tikrovė yra 148 00:08:59,310 --> 00:09:04,100 dalykų, pavyzdžiui, slapukus ir dalykų, pavyzdžiui, talpyklą failus HTML, "JavaScript" failus iš podėlio 149 00:09:04,100 --> 00:09:06,390 iš tikrųjų gali tapti didelis galvos skausmas, nes jei dėl kokios nors priežasties 150 00:09:06,390 --> 00:09:11,500 naršyklę - nusprendžia į talpyklą kai kuriuos failus ir dar atlikote pakeitimus į šį failą į serverį 151 00:09:11,500 --> 00:09:14,670 bet naršyklė tikrai ne suprato, kad failas buvo pakeistas 152 00:09:14,670 --> 00:09:19,060 ir todėl nėra iš tikrųjų iš naujo atsisiųsti, net jei jūs paspauskite Reload 153 00:09:19,060 --> 00:09:23,210 vienas iš labiausiai Patikimas būdų, tiesiog įsitikinkite, kad kaltas būna ne su kodu, 154 00:09:23,210 --> 00:09:26,480 naršyklėje elgesį, yra eiti į čia, tai atlikti turite savo naršyklėje 155 00:09:26,480 --> 00:09:29,950 ir tiesiog išvalyti visą istoriją, kad nėra jokios painiavos. 156 00:09:29,950 --> 00:09:33,210 >> Ir tada, jei jūs tikrai norite būti paranojikas, mesti naršyklę, paleiskite ją iš naujo, 157 00:09:33,210 --> 00:09:35,660 ir tada įsitikinkite, kad viskas neveikia kaip tikėtasi. 158 00:09:35,660 --> 00:09:38,820 Taigi trumpai tariant, išvalius naršyklės talpyklą yra gera, kai darai plėtrą. 159 00:09:38,820 --> 00:09:40,690 Taigi čia mes turime skirtuką Network. 160 00:09:40,690 --> 00:09:46,020 Aš anksčiau lankėsi svetainėje 9 kartus, tačiau leiskite man eiti į priekį ir spustelėkite Atnaujinti. 161 00:09:46,020 --> 00:09:47,500 Ir aš atgal iki 0. 162 00:09:47,500 --> 00:09:52,100 Tegul iš tikrųjų matyti, kaip ji yra, kad šios sesijos superglobal yra įgyvendinamas. 163 00:09:52,100 --> 00:09:55,990 Aš ruošiuosi spustelėkite 1 HTTP užklausa, kad buvo padaryta, 164 00:09:55,990 --> 00:09:58,810 ir tai derinimo langas leidžia, man atrodo viduje. 165 00:09:58,810 --> 00:10:01,970 Čia aš matau tik iš serverio atsakymą, kuris nėra įdomus. 166 00:10:01,970 --> 00:10:04,030 Aš mačiau, bet keliais būdais. 167 00:10:04,030 --> 00:10:06,350 Bet tai, kas techniškai įdomi antraštės. 168 00:10:06,350 --> 00:10:11,770 Jei aš slinkti žemyn čia ir sutelkti dėmesį į antraštes užklausų ir spustelėkite Peržiūrėti šaltinį, 169 00:10:11,770 --> 00:10:14,400 ką aš norėčiau pamatyti, yra tiesiog HTTP užklausa 170 00:10:14,400 --> 00:10:17,250 , kad tiesiog nuėjo nuo savo naršyklėje į serverį, 171 00:10:17,250 --> 00:10:21,400 GET yra operacinis žodis ir tada / counter.php failo pavadinimas, 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1 tiesiog HTTP versija, kad mano naudojama naršyklė. 173 00:10:25,670 --> 00:10:31,070 Ši linija čia yra šiek tiek priminimas iš naršyklės į serverį, serverio vardas 174 00:10:31,070 --> 00:10:33,020 kad ji nori su kuo pasikalbėti. 175 00:10:33,020 --> 00:10:38,200 Ir tada tai likusi dalis yra kartais įdomus, tačiau nėra aktualus dabar. 176 00:10:38,200 --> 00:10:40,090 >> Tai tiesiog rūšies smalsumą. 177 00:10:40,090 --> 00:10:43,530 Paslaptingas, nors ši eilutė yra, bet kuriuo metu Jūsų naršyklė apsilanko svetainę 178 00:10:43,530 --> 00:10:47,110 ji informuoja serverį, kokią naršyklę jūs naudojate 179 00:10:47,110 --> 00:10:50,040 ir kokią operacinę sistemą jūs naudojate ir ką jos redakcija. 180 00:10:50,040 --> 00:10:52,650 Taigi, jei jūs kada nors susimąstėte, kaip tokios svetainės, kaip CNN ir Papuošalą 181 00:10:52,650 --> 00:10:56,860 žinoti, ką procentinė dalis, "Mac" vartotojams, internete, PC vartotojams, 182 00:10:56,860 --> 00:11:00,820 IE vartotojai, Chrome vartotojų ir panašūs, tai, nes visi mūsų naršyklėse 183 00:11:00,820 --> 00:11:04,300 sakote kiekvieną svetainę ten kas mes esame. 184 00:11:04,300 --> 00:11:07,410 Jis nebūtinai turi būti asmeniškai identifikuojančią informaciją, 185 00:11:07,410 --> 00:11:13,060 tačiau ji pasakyti serverį, ką jūsų IP adresas yra ir ką Naršyklė ir OS jūs naudojate. 186 00:11:13,060 --> 00:11:14,720 Taip, kad, kai tokia informacija yra. 187 00:11:14,720 --> 00:11:19,960 Bet kas įdomiau dabar, kai jis ateina į šių sesijų atsakymo antraštė. 188 00:11:19,960 --> 00:11:22,530 Leiskite man spustelėkite Peržiūrėti šaltinį šalia atsako. 189 00:11:22,530 --> 00:11:24,590 Kas įdomu, čia yra keletas dalykų. 190 00:11:24,590 --> 00:11:27,580 1, mes turime grįžti būsenos kodas 200. 191 00:11:27,580 --> 00:11:29,840 Mes niekada pamatyti šį kodą statuso, nes tai reiškia, kad viskas yra gerai. 192 00:11:29,840 --> 00:11:32,920 Tiesiogine prasme tai reiškia, kad gerai, priešingai nei ko nors kito. 193 00:11:32,920 --> 00:11:36,380 Kas yra skaičius, kartais matome, kad blogai? [Studentas] 404. 194 00:11:36,380 --> 00:11:39,860 404, failas nerastas, 403 jums gali būti suklupimo ant jau 195 00:11:39,860 --> 00:11:43,660 , kuri yra draudžiama, o tai reiškia, Jūs pamiršote chmod kažkas, labiausiai tikėtina. 196 00:11:43,660 --> 00:11:45,190 Ir ten yra krūva kitų. 197 00:11:45,190 --> 00:11:47,760 >> Žemyn čia, tai yra šiek tiek beprotiška. 198 00:11:47,760 --> 00:11:52,340 Aš tikrai tik kelias minutes parašė šį failą įdėti jį į gedit. 199 00:11:52,340 --> 00:11:57,100 Kodėl šį puslapį baigiasi 1981 m. Prieš ten tikrai buvo interneto? 200 00:11:58,010 --> 00:12:00,730 Kas vyksta? 201 00:12:00,730 --> 00:12:04,390 >> [Nesigirdi studentų požiūrio] laiko spaudu. Bet kodėl? 202 00:12:06,110 --> 00:12:09,120 Tai šiek tiek savavališkas, tačiau tai tikrai naudinga. 203 00:12:09,120 --> 00:12:15,500 Ką tai sako, kad savo naršyklėje, tai PHP failą, kurį ką tik paprašė, jau baigėsi. 204 00:12:15,500 --> 00:12:18,580 Tiesą sakant, jis nustojo galioti prieš 30 metų. 205 00:12:18,580 --> 00:12:20,260 Bet ką tai iš tikrųjų reiškia? 206 00:12:20,260 --> 00:12:22,500 Tai tiesiog reiškia, kitą kartą, kai vartotojas apsilanko šį puslapį, 207 00:12:22,500 --> 00:12:25,540 ar perkrovimą ar įvesti į adreso juostą URL, 208 00:12:25,540 --> 00:12:28,010 įsitikinkite, kad jūs einate ir atnešti naują kopiją. 209 00:12:28,010 --> 00:12:30,840 Tai yra, rūšies talpyklos Kovoje pavyzdžiui, 210 00:12:30,840 --> 00:12:33,790 kvailas žodis, kuris tiesiog reiškia, kad bando atgrasyti naršykles 211 00:12:33,790 --> 00:12:37,260 iš faktiškai spartinimo HTML, kad buvo siunčiami iš serverio 212 00:12:37,260 --> 00:12:41,490 , kad jūs ne atsitiktinai pataikyti iš naujo atidaryti ir matyti tą patį failo versiją. 213 00:12:41,490 --> 00:12:43,730 Jūs iš tikrųjų norite, kad serveris siųsti naują kopiją. 214 00:12:43,730 --> 00:12:47,440 Taigi tai, kad ji 1981 tiesiog reiškia, kad tai, ką prietaisas pasirinkti 215 00:12:47,440 --> 00:12:50,280 savavališkai dienos praeityje. 216 00:12:50,280 --> 00:12:53,380 Bet realus sultingas linija yra dabar šį vieną. 217 00:12:53,380 --> 00:12:57,550 Net prieš 50, jūs tikriausiai miglotai susipažinęs su slapukais. 218 00:12:57,550 --> 00:13:01,820 Kaip ir dabar, ypač tarp mažiau patogūs arba tarp 219 00:13:01,820 --> 00:13:04,120 kas yra jūsų supratimą slapukas dabar 220 00:13:04,120 --> 00:13:06,980 net jei mes apie tai, kad jūsų supratimą ir labiau techninio pobūdžio? 221 00:13:08,150 --> 00:13:10,070 Kas yra slapukas? Taip. 222 00:13:10,070 --> 00:13:13,890 [Studentas] Informacija apie vartotoją, pavyzdžiui, jei jie jau parašė savo vartotojo vardą ar kažką. 223 00:13:13,890 --> 00:13:17,370 >> Geras. Tai informacija apie vartotoją, nepriklausomai nuo to, ar įvedėte savo vartotojo vardą jau. 224 00:13:17,370 --> 00:13:21,190 Slapukai yra kelias, kuriuo serveriai gali prisiminti ką nors apie vartotoją. 225 00:13:21,190 --> 00:13:25,810 Ir ką slapukas tikrai yra tekstinis failas, arba kai baitų seka 226 00:13:25,810 --> 00:13:28,340 kad pasodinti viduje jūsų naršyklėje serveryje, 227 00:13:28,340 --> 00:13:31,960 ir viduje šio failo, arba tarp tų baitų yra kažkoks identifikatoriaus. 228 00:13:31,960 --> 00:13:35,640 Gal tai tiesiog jūsų vartotojo vardas, bet dažniau tai kažkas paslaptingas išvaizdos 229 00:13:35,640 --> 00:13:43,700 kaip šis dalykas čia - bo8dal3ct ir tt - tai tikrai didelis Skaitinė-raidinė seka 230 00:13:43,700 --> 00:13:47,050 tai tikrai tik reiškia būti unikalus identifikatorius jums. 231 00:13:47,050 --> 00:13:49,790 Arba galite galvoti apie tai, kaip rūšiuoti virtualios rankos antspaudu. 232 00:13:49,790 --> 00:13:53,020 Jeigu jūs einate į kai klubo arba pramogų parkui, prisiminti, kad jūs iš tikrųjų mokama 233 00:13:53,020 --> 00:13:55,850 ir praėjo, jie įdėti truputį raudonas lipdukas ant jūsų rankų yra tam tikros rūšies, 234 00:13:55,850 --> 00:13:59,270 ir kad primena žmones prekystalio, kad jūs jau sumokėtą 235 00:13:59,270 --> 00:14:01,340 ir jūs galite ateiti ir eiti, kaip jums patinka. 236 00:14:01,340 --> 00:14:04,250 Slapukai yra šiek tiek panašus dvasios. 237 00:14:04,250 --> 00:14:08,070 Aš pirmą kartą aplankė šią svetainę, kaip aš ką tik išvalius talpyklą, 238 00:14:08,070 --> 00:14:11,620 web serveris, šiuo atveju prietaisas, įdėti spaudą ant mano ranka 239 00:14:11,620 --> 00:14:15,030 kurio vardas PHPSESSID, sesijos ID, 240 00:14:15,030 --> 00:14:18,260 kurio vertė yra Skaitinė-raidinė seka tai tikrai ilgas. 241 00:14:18,260 --> 00:14:22,470 >> Taip, kad dabar tarsi papuoštas mano ranka taip, kad kitą kartą aš paspauskite Perkrauti 242 00:14:22,470 --> 00:14:25,230 arba rankiniu būdu aplankyti šį URL į naršyklę, 243 00:14:25,230 --> 00:14:29,230 mano apibrėžimą HTTP naršyklė ketina pateikti rankų spaudo 244 00:14:29,230 --> 00:14:31,940 vėl ir vėl ir vėl. 245 00:14:31,940 --> 00:14:34,550 Taigi, net jei serveris nėra visada žino, kas aš esu, 246 00:14:34,550 --> 00:14:39,610 jie bent jau žinau, kad aš esu tas pats vartotojas, ar bent jau, tiksliau, tą pačią naršyklę. 247 00:14:39,610 --> 00:14:45,660 Ir todėl iš esmės tai yra kaip SESIJA superglobal yra įgyvendinamas. 248 00:14:45,660 --> 00:14:51,200 Serveris neturi jokios idėjos, kas jūs esate, kai peržiūrėti svetainę antra ar trečią kartą 249 00:14:51,200 --> 00:14:53,410 nebent jums pristatyti šį rankų antspaudą. 250 00:14:53,410 --> 00:14:55,530 Ir kuo greičiau jums pristatyti, kad ranka spaudo, 251 00:14:55,530 --> 00:14:59,370 web serveris, iš esmės patenka į šiek tiek savo duomenų bazėje 252 00:14:59,370 --> 00:15:06,040 ir patikrinimus, gerai, aš ką tik matė rankų antspaudu vartotojo bo8dal3ct ir kt. 253 00:15:06,040 --> 00:15:09,850 Leiskite man pamatyti, kokia informacija programuotojas saugomi 254 00:15:09,850 --> 00:15:12,380 viduje apie šį klientą superglobal, 255 00:15:12,380 --> 00:15:17,000 ir tada leiskite man įsitikinti, kad tie duomenys yra vėl viduje superglobal sesijos 256 00:15:17,000 --> 00:15:19,830 taip, kad programuotojas gali vėl pasiekti, kad duomenys 257 00:15:19,830 --> 00:15:23,360 net jei ji buvo nustatyta prieš keletą minučių ar valandų. 258 00:15:23,360 --> 00:15:26,150 Taigi, kitaip tariant, sausainiai, kurie tam tikrą laiką gavo blogas repo 259 00:15:26,150 --> 00:15:29,990 dėl nesaugumo naršyklėse ir jie tikrai pažeidžia mūsų privatumą ir visa tai, 260 00:15:29,990 --> 00:15:31,900 jie iš tikrųjų turi daug naudos, nes be jų 261 00:15:31,900 --> 00:15:36,110 jūs nuolat reikia prisijungti prie kiekvieno "Facebook" puslapyje, Jūs lankotės 262 00:15:36,110 --> 00:15:40,680 arba kiekvienas "Gmail" elektroninio pašto adresą, skaityti, jei naršyklė neturėjo tam tikrą kelią prisimenant 263 00:15:40,680 --> 00:15:43,320 kad jūs jau patvirtintas. 264 00:15:43,320 --> 00:15:46,640 >> Taigi tokiu būdu slapukai bus siunčiami atgal ir atgal per vielos. 265 00:15:46,640 --> 00:15:52,470 Kitas smalsumas apie slapukus, ypač čia, kad tai yra visiškai paprasto teksto. 266 00:15:52,470 --> 00:15:54,930 Nėra jokios šifravimo, čia vyksta kokia, 267 00:15:54,930 --> 00:15:57,240 ir iš tiesų aš naudoju HTTP metu. 268 00:15:57,240 --> 00:16:00,890 Vienas iš mūsų mėgstamiausių akimirkų CS50, kuris dabar yra prieš 2 metus, 269 00:16:00,890 --> 00:16:04,750 buvo maždaug tuo metu, įrankis, vadinamas Firesheep išėjo. 270 00:16:04,750 --> 00:16:08,320 Tai buvo nemokama programinė įranga, kuri buvo padaryta "saugumo tyrėjas 271 00:16:08,320 --> 00:16:13,250 , kaip bendruomenei pažadino pasakyti, ar atrociously įgyvendinama 272 00:16:13,250 --> 00:16:17,900 buvo tam tikrų autentifikacijos mechanizmų, internete. 273 00:16:17,900 --> 00:16:22,880 Dar kurį laiką, "Facebook" buvo beveik visiškai per HTTP, ne HTTPS. 274 00:16:22,880 --> 00:16:25,640 Ir net jei jūs neturite idėjos, kaip kriptografija, S yra saugus 275 00:16:25,640 --> 00:16:27,950 todėl reiškia, kad bent kai kurie šifravimo dalyvauja. 276 00:16:27,950 --> 00:16:30,610 "Facebook" buvo naudojamas užšifruoti vartotojo vardus ir slaptažodžius, 277 00:16:30,610 --> 00:16:33,560 bet tuoj pat, kai pažvelgė į savo pokes arba jūsų pranešimus arba jūsų News Feed, 278 00:16:33,560 --> 00:16:35,360 visa tai buvo paprastasis. 279 00:16:35,360 --> 00:16:37,870 Taip buvo "Gmail", kol tik metus ar 2 prieš. 280 00:16:37,870 --> 00:16:41,100 Jums prisijungti bet kuriuo metu, taip, jie naudojami saugoma šifravimo, 281 00:16:41,100 --> 00:16:44,300 bet po to jie to nepadarė. Ir kodėl gali būti? 282 00:16:44,300 --> 00:16:49,210 Kodėl ne tik naudoti kriptografiją visą laiką naudojimo atvejais, kaip šis? 283 00:16:49,210 --> 00:16:53,700 Kas tai? Manau, kad girdėjau kažką. [Studentas] Greičio. 284 00:16:53,700 --> 00:16:56,250 Greitis, tiesa? Yra būdų, kaip apie tai. 285 00:16:56,250 --> 00:16:59,610 Bet jei jūs tiesiog rūšies galvoti apie tai logiška, kad jei jįužšifruosite kažką, 286 00:16:59,610 --> 00:17:01,820 ką jums reikia padaryti bent šiek tiek daugiau darbo. 287 00:17:01,820 --> 00:17:05,460 Pset 2, kai įgyvendinama Cezaris ar Vigenere ar net nulaužti, 288 00:17:05,460 --> 00:17:07,760 tiesiog spausdinti eilutę yra gana lengva. 289 00:17:07,760 --> 00:17:12,040 Šifravimo ir tada spausdinti eilutę minimaliai reikalauja šiek tiek daugiau darbo. 290 00:17:12,040 --> 00:17:14,520 >>  Super populiarių svetainių, tokių kaip "Google" ir "Facebook", 291 00:17:14,520 --> 00:17:18,839 , jei turite už kiekvieną tinklalapį jie lanko daugiau dirbti kiekvienam vartotojui, 292 00:17:18,839 --> 00:17:20,520 , kad tiesiog reikia daugiau CPU laiko. 293 00:17:20,520 --> 00:17:22,920 O jei jums reikia daugiau CPU laiko, jums gali tekti daugiau serverių, 294 00:17:22,920 --> 00:17:24,270 o tai reiškia, jums gali prireikti daugiau pinigų. 295 00:17:24,270 --> 00:17:27,579 Ir taip jau daugelį metų tai tiesiog tikrai nebuvo geriausia praktika. 296 00:17:27,579 --> 00:17:31,440 Žmonės turėtų naudoti SSL šifravimą, tik tada, kai jiems reikia. 297 00:17:31,440 --> 00:17:34,960 Tačiau paaiškėjo, ir šio Firesheep kolegos super aišku, 298 00:17:34,960 --> 00:17:37,920 kai jus vaikinai, kurie šiuo metu "Facebook" dabar - 299 00:17:37,920 --> 00:17:39,880 Iš smalsumo, galime pamatyti, jei jums prisipažinti. 300 00:17:39,880 --> 00:17:42,620 Jei esate "Facebook" dabar kai skirtuko, net jei ji nėra užimti, 301 00:17:42,620 --> 00:17:46,610 yra Jūsų URL HTTP ar HTTPS? 302 00:17:46,610 --> 00:17:50,560 [Daug studentams] S. S? [Juokas] 303 00:17:50,560 --> 00:17:55,510 Gerai. Bet koks HTTP? Tik 1? Gerai. 304 00:17:55,510 --> 00:17:58,940 Taigi, mums visiems, kad vaikinas gali nulaužti Facebook sąskaitą dabar. 305 00:17:58,940 --> 00:18:04,100 Nes didžioji dalis, tai tapo įjungtas pagal nutylėjimą, bent jau kai kurių svetainių. 306 00:18:04,100 --> 00:18:08,120 Ir ilga istorija trumpa, jei Jūsų interneto srauto nėra šifruojamas, 307 00:18:08,120 --> 00:18:12,960 ne tik HTML eiti pirmyn ir atgal visoje WiFis nekoduotus 308 00:18:12,960 --> 00:18:16,760 todėl nereikia dalykų, pavyzdžiui, slapukus, eiti į priekį ir atgal per orą 309 00:18:16,760 --> 00:18:18,940 be šifravimo. 310 00:18:18,940 --> 00:18:23,540 Taigi, jei turite tik šiek tiek programavimo išminties, ar šiek tiek "Google" paiešką įgūdžius 311 00:18:23,540 --> 00:18:27,410 rasti laisvą programinę įrangą, kuri daro tai, viskas, ką jums reikia padaryti, yra sėdėti "Starbucks" 312 00:18:27,410 --> 00:18:30,680 arba sėdėti oro uoste, kuriame ten paprastai paprastasis "Wi-Fi" 313 00:18:30,680 --> 00:18:36,070 ir tiesiog žiūrėti pagal raktinius žodžius, pavyzdžiui, Set-Cookie: ar PHPSESSID 314 00:18:36,070 --> 00:18:39,300 todėl, jei turite techninių išminties tiesiog žiūrėti WiFi 315 00:18:39,300 --> 00:18:43,010 visi bitai, kad per visą šio modelio oro srauto, 316 00:18:43,010 --> 00:18:50,840 tada galite pasakyti, kad vaikinas PHPSESSID atsitinka būti bo8dal ir pan. 317 00:18:50,840 --> 00:18:53,890 Ir tada vėl, jei esate pakankamai techniškai Atjautība arba turi tinkamą įrankį, 318 00:18:53,890 --> 00:18:58,890 tada galite tiesiog iš naujo sukonfigūruoti savo naršyklę pradėti, kad ranka, antspaudas 319 00:18:58,890 --> 00:19:05,030 Facebook.com, ir "Facebook" yra tik ketina manyti, kad esate, kad vaikinas 320 00:19:05,030 --> 00:19:09,880 nes visi jie žino, kas jūs esate, bet, kad jūs turite šį unikalų identifikatorių. 321 00:19:09,880 --> 00:19:14,650 Taigi, jei jūs pavogti, kad unikalų identifikatorių ir pateikia jį savo interneto serveriu, kaip, 322 00:19:14,650 --> 00:19:16,860 jie tiesiog ketinu parodyti jums to asmens naujienų 323 00:19:16,860 --> 00:19:18,980 arba tas asmuo pranešimai ar Pokes. 324 00:19:18,980 --> 00:19:23,190 >> Ir aš norėčiau "Google" dabar kaip įjungti HTTPS "Facebook" galbūt. 325 00:19:23,190 --> 00:19:25,150 Bet jis tikrai yra taip paprasta, kaip kad. 326 00:19:25,150 --> 00:19:27,660 Ir taip "Facebook" ir "Google" ir panašūs Dotarłeś tikrai gerai, 327 00:19:27,660 --> 00:19:31,870 tačiau saugoti akis už bet kokius aplankytus tinklalapius, kurie nenaudoja HTTP daugiau 328 00:19:31,870 --> 00:19:35,020 ir turi kažkokį konfidencialios informacijos, 329 00:19:35,020 --> 00:19:37,490 ar tai finansinės arba asmeninės ar pan. 330 00:19:37,490 --> 00:19:43,180 Jei jie nenaudoja, tai, turbūt, kaip tai slapukai gali būti lengvai pavogtas 331 00:19:43,180 --> 00:19:46,270 ir tada suklastoti, ir tai, ką Firesheep padarė. 332 00:19:46,270 --> 00:19:48,250 Jūs neturite būti programuotojas. 333 00:19:48,250 --> 00:19:51,680 Viskas, ką turėjo padaryti, turite prieigą prie interneto, atsisiųsti šį nemokamą įrankį, 334 00:19:51,680 --> 00:19:56,490 ir ką ji turėtų daryti reikia užsiregistruoti ir tada jis bus parodyti jums, "Facebook" vardus 335 00:19:56,490 --> 00:20:00,170 visi Sanders, šiuo konkrečiu demonstracijoje, aplink jus 336 00:20:00,170 --> 00:20:03,260 ir visa, ką turėjo padaryti, buvo spustelėkite savo pavadinimą ir programinė įranga automatizuoti procesą 337 00:20:03,260 --> 00:20:05,970 uostyti tą slapuką, pateikiant jį į "Facebook", kaip savo, 338 00:20:05,970 --> 00:20:07,990 ir, voila, jūs prisijungęs. 339 00:20:07,990 --> 00:20:11,190 Taigi tai yra dar vienas iš tų "nedaryk to" oficialiai. 340 00:20:11,190 --> 00:20:14,660 Jei turite savo namų tinklą ir norite Taisome, visomis priemonėmis, 341 00:20:14,660 --> 00:20:17,530 bet suprasti, tai nereiškia, kirsti liniją universitetinėje aplinkoje. 342 00:20:17,530 --> 00:20:20,030 >> Bet tikslas čia yra tikrai pabrėžti ne tai, kaip tai padaryti 343 00:20:20,030 --> 00:20:22,320 bet kaip apsiginti nuo šių dalykų rūšių. 344 00:20:22,320 --> 00:20:26,180 Ir trivialus sprendimas čia, nors ji pati yra ydinga, 345 00:20:26,180 --> 00:20:31,360 yra tikrai sumažinti bet kokių svetainių, kurios yra ne naudojant HTTPS nuolat. 346 00:20:31,360 --> 00:20:34,520 Taigi, svetainių, kaip "Facebook" ir "Google" vis labiau žymės langelius 347 00:20:34,520 --> 00:20:36,200 , kur Jūs galite pasirinkti, kad šis dalykas rūšiuoti, 348 00:20:36,200 --> 00:20:40,000 ir bankai turėjo šiuo metų dėl panašių priežasčių. 349 00:20:40,000 --> 00:20:43,580 Taigi, tik šiek tiek baimės faktorių, jei mes galime. Bet tai trumpai. 350 00:20:43,580 --> 00:20:46,420 Kad yra kaip serveris prisimena, kas jūs esate. 351 00:20:46,420 --> 00:20:50,760 Ir kuo greičiau, nes jie gali prisiminti, kas jūs esate, jie gali prisiminti ką nors apie jus 352 00:20:50,760 --> 00:20:56,140 kad programuotojas yra saugomi viduje šios specialios superglobal vadinamas $ _SESSION. 353 00:20:56,140 --> 00:20:59,750 Ir už 7 pset mes jį naudoti funkcionalumą lengvai tik prisiminti int, 354 00:20:59,750 --> 00:21:02,260 būtent unikalus ID, vartotojo, kuris yra prisijungęs, 355 00:21:02,260 --> 00:21:05,880 todėl, kad mes žinome, jie buvo ten anksčiau. 356 00:21:05,880 --> 00:21:12,450 Bet tada sesijų ar slapukus, arba, pavyzdžiui, klausimai? 357 00:21:12,450 --> 00:21:15,130 Firesheep neveikia, taip pat nebėra, 358 00:21:15,130 --> 00:21:18,310 ir jūs turite įdėti savo kompiuterį į specialią doroviškai režimu 359 00:21:18,310 --> 00:21:20,700 todėl jūs iš tikrųjų klausytis eismui neskaitant sau. 360 00:21:20,700 --> 00:21:23,940 Taigi, jei jūs šiuo metu atsisiųsti Firesheep, supranta, kad tai nėra taip paprasta, 361 00:21:23,940 --> 00:21:26,850 nes ji kažkada buvo įrodyti. 362 00:21:26,850 --> 00:21:29,070 Gerai. Ir nereikia daryti Sanders. Tai padaryti namie. 363 00:21:29,070 --> 00:21:30,890 Duomenų bazės. 364 00:21:30,890 --> 00:21:33,580 Vienas iš dalykų, mes padarėme labai sąmoningai pset 7 365 00:21:33,580 --> 00:21:37,780 buvo, mes suteikiame Jums pavyzdį, duomenų bazės lentelę vartotojams, kurie turi tam tikrą vartotojo ID, 366 00:21:37,780 --> 00:21:41,020 kai vartotojo vardai, ir kai jame yra užšifruoti slaptažodžiai. 367 00:21:41,020 --> 00:21:44,520 Ir kaip pamatysite, jei jūs neturite jau, jūs ketinate turi pakeisti A lentelėje šiek tiek. 368 00:21:44,520 --> 00:21:47,710 Jūs ketinate pridėti šiek tiek talpyklą kiekvieną iš šioje lentelėje vartotojams, 369 00:21:47,710 --> 00:21:51,130 ir jūs ketinate turi pridėti dar vieną istorijos lentelę, portfeliai stalo, 370 00:21:51,130 --> 00:21:53,310 arba galbūt tai kažkas kita. 371 00:21:53,310 --> 00:21:56,740 , Bet ir galvoti apie tai, kaip tai padaryti, tegul atverti šį įrankį 372 00:21:56,740 --> 00:22:00,570 kuriuos mes naudojome penktadienį, bet jei nepažįstamas, prietaisas ateina su įrankiu 373 00:22:00,570 --> 00:22:04,680 vadinamas phpMyAdmin, kuris atsitiktinai, parašyta PHP kodu, 374 00:22:04,680 --> 00:22:07,950 , tačiau jo gyvenimo tikslas, po to, kai aš prisijungti čia kaip jharvard su raudonu, 375 00:22:07,950 --> 00:22:15,160 yra suteikti man patogus būdas peržiūrėti ir pakeisti savo duomenų bazę. 376 00:22:15,160 --> 00:22:18,040 >> Duomenų bazę, kad aš bėgu ant prietaiso vadinamas MySQL. 377 00:22:18,040 --> 00:22:23,420 Tai yra labai populiarus, ir tai yra nemokama atviro kodo duomenų bazė, kuri yra nuostabiai paprastas naudoti, 378 00:22:23,420 --> 00:22:25,620 ypač su priekinių baigiasi, kaip šis. 379 00:22:25,620 --> 00:22:29,350 Tai, ką šis įrankis leidžia man daryti, pavyzdžiui, kišti aplink stalų. 380 00:22:29,350 --> 00:22:30,890 Leiskite man eiti į priekį ir tai padaryti. 381 00:22:30,890 --> 00:22:36,580 Penktadienį mes sukūrėme lentelę, pavadintą studentams, kad buvo super paprasta. 382 00:22:36,580 --> 00:22:41,680 Jis turėjo 3 stulpelius - id, vardas, pavardė ir elektroninio pašto - ir aš rankiniu būdu įtraukė keletą eilučių 383 00:22:41,680 --> 00:22:44,420 kaip Dovydas ir Mike Šiame konkrečiame pavyzdyje. 384 00:22:44,420 --> 00:22:47,290 Paimkime tai šiek tiek toliau, ir įsivaizduokime, kad mes norime prisiminti daugiau 385 00:22:47,290 --> 00:22:49,660 ne tik vardą ir elektroninio pašto apie klientą. 386 00:22:49,660 --> 00:22:53,090 Let me paspauskite struktūra čia viršuje. 387 00:22:53,090 --> 00:22:55,440 Ir vėl, pset walks jus per būtinų žingsnių čia, 388 00:22:55,440 --> 00:22:58,150 todėl nesijaudinkite, jei kai tai yra šiek tiek greitai. 389 00:22:58,150 --> 00:22:59,690 Tada aš spustelėkite čia. 390 00:22:59,690 --> 00:23:02,270 Aš ruošiuosi įdėti tam tikrą kolonėlės paštu 391 00:23:02,270 --> 00:23:04,130 nes aš noriu pridėti kažką panašaus namuose. 392 00:23:04,130 --> 00:23:06,640 Aš pamiršau įrašyti studento namus. 393 00:23:06,640 --> 00:23:11,400 Leiskite man spustelėkite Eiti, ir dabar mes turime šią formą, kurie, deja, yra šiek tiek plati, iš kairės į dešinę, 394 00:23:11,400 --> 00:23:13,710 bet aš ruošiuosi skambinti šioje srityje namo pavadinimą, 395 00:23:13,710 --> 00:23:16,050 ir tada tipo dabar aš turiu pasirinkti. 396 00:23:16,050 --> 00:23:18,870 Todėl galime turėti trumpą pokalbių apie įvairių tipų MySQL 397 00:23:18,870 --> 00:23:24,590 nes kadangi PHP yra silpnai atspausdinti ir ji tarsi atlieka greitai ir laisvi tipų, 398 00:23:24,590 --> 00:23:29,430 duomenų bazėje, ypač tai super svarbu, kad iš tikrųjų naudoti rašyti savo pranašumą 399 00:23:29,430 --> 00:23:33,260 , dėl to, kad vienas iš dalykų, MySQL ir kitų duomenų bazių variklių gali padaryti už jus 400 00:23:33,260 --> 00:23:37,910 yra užtikrinti, kad jums nereikia įdėti netikrą duomenis į savo duomenų bazę. 401 00:23:37,910 --> 00:23:41,850 Tai tarsi laisvo klaidų tikrinimo jums. 402 00:23:41,850 --> 00:23:46,250 >> Namų mes jokiu būdu nenorime, kad ji būtų int, kuris yra 32-bitų reikšmę MySQL. 403 00:23:46,250 --> 00:23:49,810 Mes padarėme kalbėti trumpai penktadienį apie varchar, kuris reiškia kintamo ilgio char. 404 00:23:49,810 --> 00:23:54,720 Kas tai yra? Tai leidžia jums nurodyti, kad norite, kad tai yra tam tikra eilutė. 405 00:23:54,720 --> 00:23:56,840 Jūs tikrai ne iš anksto žinoti, kiek laiko ji yra, 406 00:23:56,840 --> 00:24:00,100 todėl mes savavališkai pasakyti, namas pavadinimas gali būti 255 simbolių, 407 00:24:00,100 --> 00:24:04,190 , bet jūs galite eiti su 32, 64 - bet kurį skaičių iš tikrųjų. 408 00:24:04,190 --> 00:24:10,700 Bet naudojant varchar lauku vadinamas char privalumas yra tai, ką? 409 00:24:10,700 --> 00:24:15,110 Tiesiog intuityviai, jei aš slinkti žemyn čia, pastebėsite, kad char ir ten varchar. 410 00:24:15,110 --> 00:24:19,520 Varchar kintamo ilgio char char yra fiksuoto ilgio char. 411 00:24:19,520 --> 00:24:24,730 Taigi remiantis tik šio apibrėžimo, kas yra kiekvieno iš jų pranašumas ar trūkumas? 412 00:24:24,730 --> 00:24:30,490 Kitaip tariant, who cares apie skirtumą, arba kodėl tai turėtų rūpesčių Jums? 413 00:24:31,660 --> 00:24:35,750 >> Taip. [Studentas] varchar lanksčiau, bet užima daugiau atminties. 414 00:24:35,750 --> 00:24:40,730 Geras. Varchar užima daugiau - Pažiūrėkime. Aš nesu įsitikinęs, jei aš girdėjau šią teisę. 415 00:24:40,730 --> 00:24:42,360 Ar galite pasakyti, kad dar kartą? 416 00:24:42,360 --> 00:24:45,850 [Studentas] Aš pasakiau, varchar tikriausiai turi daugiau lankstumo, tačiau ji užima daugiau atminties. 417 00:24:45,850 --> 00:24:51,170 Įdomu. Gerai. Varchar tikriausiai suteikia jums daugiau lankstumo, bet užima daugiau atminties. 418 00:24:51,170 --> 00:24:53,220 Pastaroji yra nebūtinai tiesa. 419 00:24:53,220 --> 00:24:56,290 Tai priklauso nuo konteksto, bet galime grįžti, kad. 420 00:24:56,290 --> 00:25:03,230 >> [Nesigirdi studentas atsakas] Būtent. 421 00:25:03,230 --> 00:25:06,900 Jis iš tikrųjų tuo atveju,, kad char paprastai naudoja daugiau atminties 422 00:25:06,900 --> 00:25:10,950 nes char, kaip C, kaip eilutę, tai simbolių masyvas. 423 00:25:10,950 --> 00:25:13,690 Taigi, jei tu sakai char 255 ilgio lauką, 424 00:25:13,690 --> 00:25:16,910 duomenų bazė yra tiesiog ketina duoti jums 255 simbolių. 425 00:25:16,910 --> 00:25:22,290 Ir jei namas baigiasi Mather ir 6 simbolių, 426 00:25:22,290 --> 00:25:25,090 jūs eikvoti daugiau nei 200 simbolių. 427 00:25:25,090 --> 00:25:29,640 >> Taigi varchar efektyviai naudoja tik kaip daug ženklų, tai yra būtina, 428 00:25:29,640 --> 00:25:31,590 nustatytos didžiausios sumos. 429 00:25:31,590 --> 00:25:35,470 Bet kaina, kurią mokate iš tiesų yra kokybės, gali. 430 00:25:35,470 --> 00:25:39,740 Jei jūs iš anksto žinoti, kad visi jūsų stygos bus 8 simbolių - 431 00:25:39,740 --> 00:25:43,090 Pavyzdžiui, tarkime, kad jums reikia slaptažodžius 8 ilgis - 432 00:25:43,090 --> 00:25:47,350 naudojant char lauką kartais, bet ne dažnai aukštyn, 433 00:25:47,350 --> 00:25:51,100 yra nurodyti už ką nors, pavyzdžiui, fiksuoto ilgio slaptažodžiu 434 00:25:51,100 --> 00:25:53,300 nes dabar duomenų bazėje gali būti dar protingesni. 435 00:25:53,300 --> 00:25:58,160 Žino, kad kiekvieną char lauką, kiekvienas stulpelyje eilutė yra vienodo ilgio, 436 00:25:58,160 --> 00:26:00,780 jūs gaunate atgal laisvosios kreipties funkcija. 437 00:26:00,780 --> 00:26:05,110 Jūsų duomenų bazės lentelėje galite šokinėti tarp įvairių tekstinius laukus 438 00:26:05,110 --> 00:26:07,940 nes manau, su duomenų bazės duomenų eilučių ir stulpelių. 439 00:26:07,940 --> 00:26:11,670 Taigi, jei kiekvienas stygos yra tokio paties ilgio, 440 00:26:11,670 --> 00:26:17,820 žinote, kad pirmasis yra baitu 0, sekantis baitas yra 8 441 00:26:17,820 --> 00:26:20,240 ir tada 16 ir tada 24 ir pan. 442 00:26:20,240 --> 00:26:24,500 Taigi, jei visi stygos yra to paties ilgio, galite šokinėti daug efektyviau. 443 00:26:24,500 --> 00:26:26,710 Taip, kad gali būti atlikimo terminai nauda, 444 00:26:26,710 --> 00:26:29,420 bet paprastai jūs neturite iš anksto žinant, prabanga, 445 00:26:29,420 --> 00:26:32,170 varchar yra būdas eiti. 446 00:26:32,170 --> 00:26:36,030 Štai dar viena detalė, kad net ir "Facebook" įvažiavo į galų gale. 447 00:26:36,030 --> 00:26:39,670 Ints yra didelė, ir mes tarsi juos naudoti pagal nutylėjimą, bet kuriuo metu, kai norime numerį, 448 00:26:39,670 --> 00:26:41,750 bet tai tik 32 bitų. 449 00:26:41,750 --> 00:26:46,210 >> Ir nors "Facebook" nėra gana turėti 4 mlrd. Vartotojų, 450 00:26:46,210 --> 00:26:48,680 ten tikrai keletas ten žmonės su keliais sąskaitų 451 00:26:48,680 --> 00:26:50,960 ar sąskaitų buvo atidarytas ir tada uždarytas, 452 00:26:50,960 --> 00:26:55,130 ir todėl "Facebook" pati Manau, prieš keletą metų turėjo pereiti nuo int 453 00:26:55,130 --> 00:27:00,010 , kaip taikliai pavadino, bigint, kuris yra tik 64 bitų vietoj. 454 00:27:00,010 --> 00:27:02,230 Taigi tai taip pat yra dizaino sprendimas. 455 00:27:02,230 --> 00:27:06,570 Jums bus nuostabiai pasisekė, jei jūsų galutinis projektas tampa paleidimo, 456 00:27:06,570 --> 00:27:10,010 buvo 4 mlrd. ir 1 vartotojai, duoti ar priimti, 457 00:27:10,010 --> 00:27:13,200 tokiu atveju naudojant int gali būti šiek tiek trumparegis. 458 00:27:13,200 --> 00:27:16,230 Bet iš tikrųjų, jūsų Vartotojų lentelė yra tikriausiai gerai su int. 459 00:27:16,230 --> 00:27:19,340 Bet kažką panašaus pset 7, kaip jūsų istorijos lentelės 460 00:27:19,340 --> 00:27:23,700 galite turėti tūkstančius, milijonus vartotojų jei peraugs į etrade.com. 461 00:27:23,700 --> 00:27:26,020 Taigi, kadangi jūs negalite turėti daugiau nei 4 mlrd. Vartotojų, 462 00:27:26,020 --> 00:27:30,070 tie vartotojai, jūs turite, gali turėti daugiau nei 4 mlrd. sandorių laikui bėgant - 463 00:27:30,070 --> 00:27:33,200 perka ir parduoda ir dalykų per savo istoriją. 464 00:27:33,200 --> 00:27:38,090 Taigi, jei jūs numatyti - vėl, tai yra geri problemų turi, jei turite tai daug duomenis 465 00:27:38,090 --> 00:27:40,920 jei jūs numatyti duomenis, viršijančius int dydis, 466 00:27:40,920 --> 00:27:47,740 vyksta su kažką panašaus bigint yra kryptis, ne pakankamai dažnai priimta dizaineriai 467 00:27:47,740 --> 00:27:49,710 nes žmonių skaičius, kad nesiruošia būti problema, 468 00:27:49,710 --> 00:27:51,930 bet tai tik lengva pasirinkti kažką daugiau nei, kad. 469 00:27:51,930 --> 00:27:55,380 Dešimtainis mes naudojame 7 pset, kuris apibrėžia fiksuotą tikslumą 470 00:27:55,380 --> 00:27:59,840 todėl jūs galite išvengti klausimus, susijusius su float ir double ir realiju ir pan. 471 00:27:59,840 --> 00:28:02,440 >> Ir tada ten kai kurie kiti laukai. Mes pakylės mūsų rankas į juos tam tikru mastu. 472 00:28:02,440 --> 00:28:07,270 Bet datos, laikas, nustatytą formatą MySQL, 473 00:28:07,270 --> 00:28:10,830 ir saugoti datos, datą, o ne varchars privalumas 474 00:28:10,830 --> 00:28:15,730 reiškia, kad duomenų bazė iš tikrųjų gali juos performatuoti į įvairių formatų, 475 00:28:15,730 --> 00:28:18,800 ar JAV formatas arba Europos formatas arba kaip vis dėlto norite tai - 476 00:28:18,800 --> 00:28:22,700 daug efektyviau, nei tuo atveju, jei ji buvo tik keletas bendro pobūdžio varchar. 477 00:28:22,700 --> 00:28:25,150 Ir tada ten kai kurie kiti dvejetainiai, VARBINARY, BLOB. 478 00:28:25,150 --> 00:28:28,580 Tai yra dvejetainiai dideli objektai, ir jūs taip pat gali laikyti dvejetainiai duomenys 479 00:28:28,580 --> 00:28:30,750 taip pat geometrinių duomenis duomenų bazėje. 480 00:28:30,750 --> 00:28:34,350 Bet mums, mes paprastai rūpi Ints ir varchars ir pan. 481 00:28:34,350 --> 00:28:36,230 Leiskite baigti šį pavyzdį su namo. 482 00:28:36,230 --> 00:28:40,030 Namas, kuriame aš ruošiuosi savavališkai pasakyti bus 255 apdegina. 483 00:28:40,030 --> 00:28:42,850 Tada numatytoji reikšmė galėtume tai padaryti. 484 00:28:42,850 --> 00:28:47,440 Mes galime pagal nutylėjimą, visus Mather House, pavyzdžiui. 485 00:28:47,440 --> 00:28:49,710 Štai kaip mes galime nurodyti, kad duomenų bazė 486 00:28:49,710 --> 00:28:52,460 turėtų užtikrinti, kad kažkas visada turi vertę. Bet aš palikti, tai būtų. 487 00:28:52,460 --> 00:28:55,270 Tiesą sakant, žmonių, kurie gyvena miesteliu ir ne namuose, 488 00:28:55,270 --> 00:28:59,590 gal aš iš tikrųjų noriu patikslinti, kad numatytoji reikšmė namo yra NULL, 489 00:28:59,590 --> 00:29:04,890 ir tada man reikia pažymėti šį langelį ir pasakykite duomenų bazę, tai gerai,, jei vartotojas namas yra NULL. 490 00:29:04,890 --> 00:29:07,270 >> Vėlgi, tai yra dar vienas gynybos mechanizmas, galite įdėti vietoje 491 00:29:07,270 --> 00:29:10,590 taigi jums nereikės net įdėti ją į savo PHP kode, būtinai. 492 00:29:10,590 --> 00:29:14,630 Duomenų bazė bus užtikrinta, kad viskas yra arba yra ne NULL. 493 00:29:14,630 --> 00:29:17,310 Ir tada galiausiai, savybės. 494 00:29:17,310 --> 00:29:18,920 Nė vienas iš jų yra tikrai svarbi. 495 00:29:18,920 --> 00:29:22,880 Dvejetainis, nepasirašytos - nė vienas iš jų yra susiję su VARCHAR. 496 00:29:22,880 --> 00:29:24,220 Indeksas. 497 00:29:24,220 --> 00:29:27,320 Ar kas nors žino ar prisiminti ar turite atspėti, kas indeksas yra 498 00:29:27,320 --> 00:29:29,510 namo kažką panašaus? 499 00:29:29,510 --> 00:29:35,240 Tai taip pat yra tikrai svarbus ir gana lengva dizaino sprendimas. 500 00:29:35,240 --> 00:29:39,200 Tiems, kurie dar nematė jį, penktadienį mes kalbėjome trumpai apie pirminius raktus. 501 00:29:39,200 --> 00:29:43,240 Duomenų bazės lentelę, pirminis raktas yra laukas arba stulpelis 502 00:29:43,240 --> 00:29:46,270 , kuris vienareikšmiškai identifikuoja eilutes lentelėje. 503 00:29:46,270 --> 00:29:49,150 Taigi dabartinėje lentelėje turime ID, mes turime vardus ir elektroninius laiškus. 504 00:29:49,150 --> 00:29:52,050 Kuris iš jų yra geriausias kandidatas būti pirminis raktas, 505 00:29:52,050 --> 00:29:55,810 kurių vaidmuo yra unikaliai identifikuoti eilutes? 506 00:29:55,810 --> 00:29:57,530 Tikriausiai ID 507 00:29:57,530 --> 00:29:59,930 Be abejo, mes taip pat galėtų panaudoti tai, ką nors? 508 00:29:59,930 --> 00:30:02,860 Gal galite naudotis elektroniniu paštu, nes teoriškai tai unikalus 509 00:30:02,860 --> 00:30:05,380 išskyrus atvejus, kai žmonės dalinasi elektroninio pašto sąskaitas. 510 00:30:05,380 --> 00:30:09,980 Tačiau realybė yra ta, kad jei jūs naudojate skaitinį ID, kaip ir 1234, 511 00:30:09,980 --> 00:30:14,170 tai tik 32 bitų, o elektroninio pašto adresas gali būti taip daug baitai arba tai daug baitų. 512 00:30:14,170 --> 00:30:16,610 Taigi, kalbant apie efektyvumą unikalių identifikatorių, 513 00:30:16,610 --> 00:30:19,270 jis yra linkęs būti gera praktika, tiesiog naudoti int 514 00:30:19,270 --> 00:30:23,090 net jei jūs turite kokį nors tekstą, kandidatas, kad galėtumėte be abejo, naudotis. 515 00:30:23,090 --> 00:30:26,760 >> Namo kažką panašaus, tai neturėtų būti pirminis raktas 516 00:30:26,760 --> 00:30:30,770 nes tada tik 1 asmuo galėtų gyventi Mather ir 1 asmuo iš Kurier ir panašios. 517 00:30:30,770 --> 00:30:32,790 Be to, tai neturėtų būti unikalus. 518 00:30:32,790 --> 00:30:37,830 Skirtumas tarp pirminės ir unikalus yra tai, kad mūsų dabartinėje lentelėje, 519 00:30:37,830 --> 00:30:42,620 ID būtų pirminis bet elektroninis paštas nėra pirminės priežasties mes tik paminėta - 520 00:30:42,620 --> 00:30:44,740 spektaklis - tačiau ji vis tiek turėtų būti unikalus. 521 00:30:44,740 --> 00:30:47,200 Taigi, jūs vis dar galite užtikrinti unikalumą nedarant reikalavimą 522 00:30:47,200 --> 00:30:49,520 kad tai super svarbu pagrindinis laukas. 523 00:30:49,520 --> 00:30:52,610 , Tačiau tai yra gana naudinga: indeksas. 524 00:30:52,610 --> 00:30:56,180 Jei žinote, iš anksto savo galutinį projektą, 7 pset arba apskritai, 525 00:30:56,180 --> 00:30:59,480 kad ši sritis namas bus kažkas jums ieškoti daug 526 00:30:59,480 --> 00:31:01,910 Pasirinkite Raktinių žodžių ar kažkas kita, 527 00:31:01,910 --> 00:31:05,180 tada jūs galite pasakyti, kad duomenų bazę dirbti savo magija Preemptively 528 00:31:05,180 --> 00:31:10,510 ir įsitikinkite, kad ji sukuria atmintyje jokių išgalvotas duomenų struktūrų, būtinų 529 00:31:10,510 --> 00:31:13,770 paspartinti paiešką pagal į namus. 530 00:31:13,770 --> 00:31:17,860 Gal jis bus naudojamas maišos lentelę, gal tai bus susietą sąrašą. 531 00:31:17,860 --> 00:31:21,260 Iš tikrųjų, jis yra linkęs naudoti medį, dažnai struktūra vadinama B-medį - 532 00:31:21,260 --> 00:31:24,090 ne dvejetainis medis, o B-medis, kuris yra labai platus medis 533 00:31:24,090 --> 00:31:27,370 , kad jūs galite pamatyti kaip CS124, duomenų struktūros klasės į klasę. 534 00:31:27,370 --> 00:31:31,800 Bet trumpai tariant, jūs neturite nerimauti, kad, naudojant SMART duomenų bazės programinę įrangą. 535 00:31:31,800 --> 00:31:35,890 Jūs galite tiesiog pasakyti, "Rodyklė šį lauką, kad aš galiu ieškoti efektyviau." 536 00:31:35,890 --> 00:31:40,250 >> Jei paliksite šį parametrą ir bandysite ieškoti visiems duomenų bazės, kuris gyvena Mather, 537 00:31:40,250 --> 00:31:42,710 ji pereina į linijinių paieška. 538 00:31:42,710 --> 00:31:45,360 Ir jei jūs turite 6000 undergrads visą gyvenimo tam tikru namą 539 00:31:45,360 --> 00:31:47,900 jūs ketinate ieškoti visą lentelę rasti Matherites 540 00:31:47,900 --> 00:31:52,190 , kadangi jei pasakysi puslapis, tikiuosi, ji bus kažkas arti logaritminėje paieškos 541 00:31:52,190 --> 00:31:54,510 rasti tuos rūšių studentai. 542 00:31:54,510 --> 00:31:56,750 Tai tik nemokamai funkcija įjungti, 543 00:31:56,750 --> 00:31:59,530 nors ji ateina nors kiek vietos kaina. 544 00:31:59,530 --> 00:32:02,690 Galiausiai, auto prieaugis, tai AI laukas, 545 00:32:02,690 --> 00:32:05,830 , kuris tiesiog reiškia, kad, jei tai int ir nenorite rūpintis prieaugio patys 546 00:32:05,830 --> 00:32:07,570 kiekvieną kartą, kai naujas vartotojas, patikrinkite, ar 547 00:32:07,570 --> 00:32:11,910 ir kiekvienas vartotojas, kuris gauna įterpiamas automatiškai gaus naują vardą. 548 00:32:11,910 --> 00:32:15,620 Leiskite spustelėkite Įrašyti ir dabar galime rasti kaltės su šio dizaino. 549 00:32:15,620 --> 00:32:20,200 Jei aš einu į naršyti, praneša, kad ir Mike ir mano namas yra NULL. 550 00:32:20,200 --> 00:32:22,420 Aš galiu naudoti phpMyAdmin pakeisti rankiniu būdu. 551 00:32:22,420 --> 00:32:25,110 Aš galiu eiti čia ir įveskite Mather ir tada paspauskite Enter, 552 00:32:25,110 --> 00:32:27,740 ir dabar pastebėti, lentelėje yra skirtingas. 553 00:32:27,740 --> 00:32:29,270 Bet pastebėsite, aš galėjau daryti ką nors kita, taip pat. 554 00:32:29,270 --> 00:32:33,530 Dovydo ID yra 1, todėl phpMyAdmin vėl yra tik administracinė priemonė; 555 00:32:33,530 --> 00:32:35,970 tai nėra kažkas, jūsų vartotojai yra kada nors pamatyti. 556 00:32:35,970 --> 00:32:38,810 Taigi, jei aš vietoj to spustelėkite SQL skirtuką aukštyn viršuje - 557 00:32:38,810 --> 00:32:41,450 ir vėl, pset 7 supažindins jus daugiau šių užklausų 558 00:32:41,450 --> 00:32:45,260 Galiu rankiniu būdu įvykdyti SQL Structured Query Language komandą 559 00:32:45,260 --> 00:32:56,410 UPDATE vartotojai SET namo = 'Pfoho "WHERE id = 1. 560 00:32:56,410 --> 00:33:00,830 Šie SQL užklausų, gražiai pakankamai, gana skaitoma iš kairės į dešinę. 561 00:33:00,830 --> 00:33:04,350 Atnaujinti lentelę vartotojams, nustatyti lauką pavadinimu namas Pfoho 562 00:33:04,350 --> 00:33:06,830 , kur vartotojo ID yra 1. 563 00:33:06,830 --> 00:33:11,480 Arba aš netgi ten, kur email = 'malan@harvard.edu ". 564 00:33:11,480 --> 00:33:14,860 Tol, kol kuris vienareikšmiškai identifikuoja man, kad dirbti taip pat. 565 00:33:14,860 --> 00:33:18,810 Tačiau ID linkęs būti didesnis našumas, todėl galime tai padaryti. 566 00:33:18,810 --> 00:33:22,950 Leiskite spustelėkite Eiti. Gerai, lecture.users neegzistuoja. Koks mano klaida? 567 00:33:22,950 --> 00:33:26,220 Kas yra lentelė iš tikrųjų vadinamas čia? 568 00:33:26,220 --> 00:33:28,770 Tai vadinama studentų tik todėl, kad ką mes padarėme čia viršuje kairėje. 569 00:33:28,770 --> 00:33:31,860 Tai vadinama studentai, o ne vartotojų. Taigi spustelėkite Eiti. 570 00:33:31,860 --> 00:33:34,330 1 eilutė paveikta. Užklausa užtruko 0.01 sekundžių. 571 00:33:34,330 --> 00:33:38,010 Jeigu dabar aš spustelėkite Naršyti, dabar Malan gyvenimą Pfoho. 572 00:33:38,010 --> 00:33:42,070 Taigi, kad kitą SQL skonio, bet pset padės jums šiek tiek daugiau. 573 00:33:42,070 --> 00:33:44,710 >> Kvailas sprendimas aš jau čia. 574 00:33:44,710 --> 00:33:47,820 Norėčiau teigti, kad ši duomenų bazė dizainas yra neefektyvus 575 00:33:47,820 --> 00:33:51,650 nes kuo daugiau žmonių įtraukti į studentų stalo, 576 00:33:51,650 --> 00:33:54,730 kuo daugiau iš mūsų pradėti pridedant, TFS, aš pradėti pridedant daugiau, 577 00:33:54,730 --> 00:33:58,320 mes ketiname pradėti pamatyti, kas atleidimu iš darbo, šioje lentelėje? 578 00:34:00,840 --> 00:34:06,020 >> Taip. [Studentas] Matydamas, kad jis yra studentų, mes, naudojant tą patį [nesigirdi] 579 00:34:06,020 --> 00:34:07,360 Tas pats - Teisė, tiksliai. 580 00:34:07,360 --> 00:34:10,400 Taigi, jei 400 žmonių gyvena Mather, duoti ar priimti, 581 00:34:10,400 --> 00:34:15,000 galiausiai ši lentelė turi 400 eilutes, kad pasakyti "Mather", "Mather" 582 00:34:15,000 --> 00:34:16,590 "Mather," Mather, "Mather parengto". 583 00:34:16,590 --> 00:34:19,820 Mes eikvoti visų šių baitų, ir ten takeaways pora. 584 00:34:19,820 --> 00:34:23,080 1, yra crazy kampe, kur, jei kas nors moka daug pinigų 585 00:34:23,080 --> 00:34:25,949 ir pervadina Mather, dabar mes turime pakeisti visą mūsų duomenų bazės lentelę. 586 00:34:25,949 --> 00:34:29,730 Tai nesiruošia atsitikti dažnai, nors Pfoho kažkada buvo vadinamas North House prieš 15 metų, 587 00:34:29,730 --> 00:34:32,310 todėl atsitinka. Bet tai dar ne viskas, kad įtikinamų. 588 00:34:32,310 --> 00:34:36,000 Patrauklesni nei kampe atveju, kaip kad reikia atnaujinti duomenis urmu 589 00:34:36,000 --> 00:34:41,150 duomenų bazėje kodėl jūs saugoti Mather vėl ir vėl ir vėl ir vėl? 590 00:34:41,150 --> 00:34:43,020 Tai daug simbolių, 6 simbolių. 591 00:34:43,020 --> 00:34:45,500 Mes negalime padaryti, net geriau nei, ypač Pforzheimer? 592 00:34:45,500 --> 00:34:48,320 Žinoma, mes galime padaryti geriau nei tas, kuris daug simbolių. 593 00:34:48,320 --> 00:34:51,790 Kodėl gi ne tiesiog susieti su kiekvienam namui unikalų identifikatorių 594 00:34:51,790 --> 00:34:55,020 parduotuvė, kuri kiekvienam vartotojui? Taigi, pabandykime tai. 595 00:34:55,020 --> 00:35:00,610 , O ne tiesiog naudokite studentams lentelę, leiskite man eiti čia mano paskaitos duomenų bazės viršuje kairėje. 596 00:35:00,610 --> 00:35:02,600 Pastebėsite čia, ji sako Sukurti lentelę. 597 00:35:02,600 --> 00:35:04,550 Leiskite man sukurti naują lentelę, pavadintą namai. 598 00:35:04,550 --> 00:35:08,880 Stulpelių skaičius bus 2. Įveskite. 599 00:35:08,880 --> 00:35:11,200 Dabar turiu 2 laukus. 600 00:35:11,200 --> 00:35:14,600 Aš ruošiuosi skambinti pavadinimas, ir tai bus ilgis 255 varchar, 601 00:35:14,600 --> 00:35:18,770 >> bet tai gana savavališkas. Leiskite man įdėti žemyn čia pagal susitarimą. 602 00:35:18,770 --> 00:35:22,840 Taigi įdėti ID čia. Tegul kiekvienas namas unikalų identifikatorių. 603 00:35:22,840 --> 00:35:25,360 Tegul kiekvienas namas vardą. 604 00:35:25,360 --> 00:35:30,980 Tegul nurodo, kad identifikatorius, pagal susitarimą bus nepasirašytos naudoti tik teigiamus skaičius. 605 00:35:30,980 --> 00:35:35,020 Eikime į priekį ir suteikti šį auto prieaugio lauką dabar. 606 00:35:35,020 --> 00:35:38,160 Ir mums reikia, kad kas nors kitas? 607 00:35:38,160 --> 00:35:41,010 Eikime į priekį ir spustelėkite Įrašyti. 608 00:35:41,010 --> 00:35:42,480 Dabar turiu antrą lentelę. 609 00:35:42,480 --> 00:35:45,860 Atkreipkite dėmesį, panaikinti tai yra šiek tiek paslaptingas SQL komandą 610 00:35:45,860 --> 00:35:50,280 kad jums reikės įvesti rankiniu būdu, jei nenaudojate administracinė priemonė, pavyzdžiui, phpMyAdmin. 611 00:35:50,280 --> 00:35:51,990 Taigi dar viena priežastis, kodėl mes ją naudojame. 612 00:35:51,990 --> 00:35:55,480 Tai nuostabiai naudinga rūšiuoti pedagogiškai, nes jūs galite spustelėti aplink 613 00:35:55,480 --> 00:36:01,050 ir išsiaiškinti, kaip viskas veikia tiesiog nukopijuoti ir įklijuoti ką phpMyAdmin padarė. 614 00:36:01,050 --> 00:36:04,150 Bet CREATE TABLE komanda yra tai, ką tik buvo įvykdytas, ir čia yra mano stalo. 615 00:36:04,150 --> 00:36:11,370 Leiskite man eiti į priekį ir naudoti RAW SQL, o ne per daug supaprastinti spustelėdami skirtuką Įterpimas. 616 00:36:11,370 --> 00:36:15,040 Leiskite man INSERT INTO namų, 617 00:36:15,040 --> 00:36:22,230 ir aš norėčiau pasakyti iš namų pavadinimas teks Mather "vertės. 618 00:36:22,230 --> 00:36:24,790 Štai ir viskas. Šį sintaksė yra šiek tiek paslaptingas. 619 00:36:24,790 --> 00:36:26,660 Tai srityse mes norime įterpti vardas. 620 00:36:26,660 --> 00:36:30,390 Tai yra vertybės, norime įterpti į šiose srityse. Leiskite man spustelėkite Eiti. 621 00:36:30,390 --> 00:36:34,410 1 eilutė įterpiama užtruko 0.02 sekundžių. Man spustelėkite Naršyti dabar. 622 00:36:34,410 --> 00:36:42,020 >> Pastebėsite, jei aš spustelėkite Naršyti, yra Mather parengto pranešimo, kurio ID yra automatizuoti numeris 1. 623 00:36:42,020 --> 00:36:45,000 Duok man dar vieną. Leiskite man eiti į SQL skirtuką. 624 00:36:45,000 --> 00:36:52,950 INSERT INTO namų. Teks vertę Pfoho namuose pavadinimas ir kt. 625 00:36:52,950 --> 00:36:56,350 Eiti. Ir galiu laikyti tai daryti vėl ir vėl ir vėl. 626 00:36:56,350 --> 00:36:59,470 Arba, jei jums nuobodu, naudojant phpMyAdmin, galite tiesiog naudokite skirtuką Įterpimas 627 00:36:59,470 --> 00:37:01,000 ir neturi įveskite žaliavinio SQL. 628 00:37:01,000 --> 00:37:04,690 Jūs galite tiesiog sprogimo greitai rašyti, pavyzdžiui, Kurier, Enter, 629 00:37:04,690 --> 00:37:07,610 ir dabar, jei mes spustelėkite Naršyti, ten Kurier su 3 ID. 630 00:37:07,610 --> 00:37:09,920 Taigi, tai, ką mes vadiname auto prieaugio. 631 00:37:09,920 --> 00:37:12,280 Bet dabar mes turime nustatyti kažką studentams. 632 00:37:12,280 --> 00:37:16,240 Mokiniams, ką turėtų namo lauko duomenų tipas dabar bus? 633 00:37:16,240 --> 00:37:19,450 Ji turėtų būti int, tiesa? 634 00:37:19,450 --> 00:37:23,950 Taigi tikslas čia yra veiksnys, kitaip žinoma kaip normalizuoti, lenteles 635 00:37:23,950 --> 00:37:27,940 kad mes ne aukštesnėje informaciją Gausiai mano lentelių. 636 00:37:27,940 --> 00:37:31,130 Ir vėl, kelias, kurį mes buvome čia ketina pasakyti, Mather, Mather, 637 00:37:31,130 --> 00:37:34,220 Mather parengto pranešimo, Mather, Pfoho, Pfoho, Pfoho, Pfoho, kuris yra labai nereikalingas 638 00:37:34,220 --> 00:37:36,240 iš simbolių išlaidumas. 639 00:37:36,240 --> 00:37:40,820 Taigi leiskite man eiti į priekį ir tai pakeisti paspaudę struktūros, 640 00:37:40,820 --> 00:37:44,620 ir leiskite man eiti į priekį ir patikrinti namo lauką, spustelėkite Keisti, 641 00:37:44,620 --> 00:37:46,990 ir dabar aš ruošiuosi pakeisti į int. 642 00:37:46,990 --> 00:37:49,490 255 yra nebeaktualios. 643 00:37:49,490 --> 00:37:54,010 Leiskite man eiti į priekį ir pasakyti, kad gerai, jei jis vis dar yra NULL. Įrašyti. 644 00:37:54,010 --> 00:37:55,870 Dabar stalo studentai buvo pakeistas sėkmingai, 645 00:37:55,870 --> 00:37:59,090 ir vėl pastebėti namas yra int. 646 00:37:59,090 --> 00:38:02,220 Kaip panaikinti, ignoruoti Skaičius skliausteliuose, kai jis ateina į int. 647 00:38:02,220 --> 00:38:03,770 >> Tai yra palikimas priežasčių. 648 00:38:03,770 --> 00:38:06,920 Atgal į dieną, kai jūs neturite GUI, vietoj to turėjo komandinės eilutės aplinką, 649 00:38:06,920 --> 00:38:11,580 10 ir 11 straipsnius, nurodyti kiek simbolius, kuriuos turėtų parodyti 650 00:38:11,580 --> 00:38:13,950 terminalo lange iš tikro parodyti laukus. 651 00:38:13,950 --> 00:38:19,150 Tai neturi nieko daryti su faktinio srityje bitų ilgio, todėl mes tiesiog ignoruoti, kad dabar. 652 00:38:19,150 --> 00:38:20,990 Dabar aš turiu eiti į šioje lentelėje. 653 00:38:20,990 --> 00:38:24,610 Ir jei Davidas gyvena Mather, namas turi būti ne 0, 654 00:38:24,610 --> 00:38:27,350 kuri yra arčiausiai NULL nutylėjimą int vertė. 655 00:38:27,350 --> 00:38:29,810 Jis turėtų gyventi namas 1. 656 00:38:29,810 --> 00:38:36,870 Tegul savavališkai pasakyti, kad Mike gyvena mieste Pfoho, todėl namo numeris 2. 657 00:38:36,870 --> 00:38:40,160 Dabar mano lentelė atrodo šiek tiek paslaptingas. 658 00:38:40,160 --> 00:38:41,960 Tačiau mano, efektyvumą. 659 00:38:41,960 --> 00:38:44,860 Aš dabar tik 32 bitų nustatyti namą, 660 00:38:44,860 --> 00:38:49,530 kuris reiškia, kad yra tik 1 kanoninė mano namuose Mather ir Pfoho apibrėžimas 661 00:38:49,530 --> 00:38:52,090 ir kad namų lentelėje. 662 00:38:52,090 --> 00:38:55,880 Taigi, jei aš noriu vėl prisijungti prie šios lentelės, manau, apie tai šiuo būdu. 663 00:38:55,880 --> 00:39:01,980 Čia aš turiu savo studentams lentelę, ir dešinėje pusėje yra šie skaičiai, 1 ir 2. 664 00:39:01,980 --> 00:39:04,180 1 yra Mather, 2 yra Pfoho. 665 00:39:04,180 --> 00:39:08,580 Mes turime tuos pačius numerius šios kitos lentelės, kuri yra vadinama namai, 666 00:39:08,580 --> 00:39:11,020 1 ir 2 ir 3 šių 3 namų. 667 00:39:11,020 --> 00:39:14,990 Tai, ką mes dabar norime padaryti, PHP ir SQL kode galimybes, 668 00:39:14,990 --> 00:39:18,800 rūšiuoti vėl prisijungti šias lenteles, kur, jei jie yra studentai, ir tai yra namai, 669 00:39:18,800 --> 00:39:22,050 mes norime kažkaip sujungti juos taip, kad 1 linijos su 1, 670 00:39:22,050 --> 00:39:25,670 2 eilutės iki su 2, ir kad mes galime išsiaiškinti, kur Davidas 671 00:39:25,670 --> 00:39:28,000 Mike ir kur visi kiti gyvena. 672 00:39:28,000 --> 00:39:31,850 Norėdami tai padaryti, mes galime atlikti SQL užklausos, pavyzdžiui, šių. 673 00:39:31,850 --> 00:39:40,470 SELECT * FROM studentams JOIN namus - 674 00:39:40,470 --> 00:39:43,000 Ir dabar, kokius laukus mes norime prisijungti? 675 00:39:43,000 --> 00:39:49,520 Taigi students.house = houses.id. 676 00:39:49,520 --> 00:39:54,150 >> Šiek tiek paslaptingas, tačiau ši dalis reiškia tiesiog sukurti naują laikiną lentelę 677 00:39:54,150 --> 00:39:56,690 tai prisijungti prie studentų ir namų rezultatas. 678 00:39:56,690 --> 00:40:00,340 Ir kaip jūs norite sujungti mano pirštų patarimų čia? 679 00:40:00,340 --> 00:40:05,280 Nustatyti studentų namų Namai ID laukas, lygų lauką. 680 00:40:05,280 --> 00:40:10,220 Ir jei aš spustelėkite Eiti, aš grįšiu, ką aš tikėjosi. 681 00:40:10,220 --> 00:40:15,890 Dovydas yra Mather, Mike Pfoho, ir aš taip pat matau unikalius identifikatorius. 682 00:40:15,890 --> 00:40:18,640 Bet yra ta, dabar turiu visą lentelę. 683 00:40:18,640 --> 00:40:23,020 Ir taip išsinešimui čia pset 7, ar tikrai per galutinį projekto: 684 00:40:23,020 --> 00:40:25,830 Jei pastebėsite, kad jūs saugoti bet kokią informaciją gabalas Gausiai, 685 00:40:25,830 --> 00:40:28,850 ar tai būtų namas, gal tai miestas, valstija, ir ZIP 686 00:40:28,850 --> 00:40:32,050 kur ZIP paprastai, bet ne visada būti naudojamas kaip unikalus identifikatorius, 687 00:40:32,050 --> 00:40:35,810 eiti per naudojimosi psichiškai ir tada kažką panašaus į phpMyAdmin 688 00:40:35,810 --> 00:40:40,660 faktoringo, kad bendrų duomenų, nes, ypač, kaip jūsų svetainę gauna daugiau naudojami gerai 689 00:40:40,660 --> 00:40:45,440 ir labiau populiarėja, tai, kaip jūs įsitikinkite, kad viskas yra super greitai, 690 00:40:45,440 --> 00:40:51,930 suteikti duomenų bazei, kaip įmanoma tiek daug užuominų į unikalumą. 691 00:40:51,930 --> 00:40:53,860 Kuris buvo daug. 692 00:40:53,860 --> 00:40:59,010 Turite klausimų? Gerai. Paimkime 5 minučių pertrauką ir pergrupuoti. 693 00:41:01,600 --> 00:41:03,540 Gerai. 694 00:41:03,540 --> 00:41:08,680 Toliau pateikiamas pavyzdys, kuris buvo naudojamas prieš keletą metų, kai aš paėmė CS161, 695 00:41:08,680 --> 00:41:10,960 , kuri yra operacinių sistemų klasė kolegijoje 696 00:41:10,960 --> 00:41:15,160 , kuris yra žinomas už tai, kad nuostabi, bet crazy suma darbą, 697 00:41:15,160 --> 00:41:19,810 , dėmesys tikrai kai kurie žemo lygio problemas, kurios kyla iš operacinių sistemų 698 00:41:19,810 --> 00:41:22,700 , o taip pat net duomenų bazių pasaulyje. 699 00:41:22,700 --> 00:41:27,040 >> Istorija, kad buvo pasakyta, mano profesorius, Margo Seltzer, tais pačiais metais buvo taip. 700 00:41:27,040 --> 00:41:30,990 Tarkime, kad jūs turite šiek tiek bendrabučio šaldytuvą jums ir jūsų kambarioku 701 00:41:30,990 --> 00:41:34,030 ir jūs abu tikrai patinka pienas. 702 00:41:34,030 --> 00:41:36,360 Taigi, jūs grįžti namo iš klasės vieną dieną, savo kambarioku vis dar nėra, 703 00:41:36,360 --> 00:41:39,650 atidarote šaldytuvą, ir jūs suprasite, "Oh damn, mes iš pieno." 704 00:41:39,650 --> 00:41:42,070 Taigi, jūs uždaryti šaldytuvą, jūs einate per gatvę į CVS 705 00:41:42,070 --> 00:41:45,830 ir gauti vis ilgosiomis ūdomis nusipirkti pieną CVS. 706 00:41:45,830 --> 00:41:48,470 Tuo tarpu, savo kambarioku grįžta namo iš jo klasės, 707 00:41:48,470 --> 00:41:51,690 ateina į kambarį, atidaro šaldytuvas tikrai nori šiek tiek pieno, 708 00:41:51,690 --> 00:41:54,130 atidaro šaldytuvo ir "Velnias, be pieno". 709 00:41:54,130 --> 00:41:57,890 Kad jis arba ji užsidaro šaldytuvas, eina pro duris, ir eina į ABP 710 00:41:57,890 --> 00:42:00,910 ar kažkur, išskyrus, kur jūs nesiruošia guzas į vienas kitą CVS 711 00:42:00,910 --> 00:42:02,790 eikite gauti šiek tiek pieno. 712 00:42:02,790 --> 00:42:04,820 Žinoma, po kelių minučių, tiek jums grįžti namo 713 00:42:04,820 --> 00:42:07,740 ir dabar jūs turite du kartus daug pieno, kaip jūs iš tikrųjų norėjo. 714 00:42:07,740 --> 00:42:10,670 Ir yra pieno, dabar ji vyksta eiti blogai, nes jums patinka pienas 715 00:42:10,670 --> 00:42:14,200 bet jūs tikrai ne kaip pienas, todėl dabar jūs turite per daug pieno, todėl ketina rūgštus. 716 00:42:14,200 --> 00:42:16,830 Tai yra baisu, siaubinga situacija. 717 00:42:16,830 --> 00:42:22,920 Kas galėjo išspręsti šį kebli, jei būtum pirmas kambarioku namo? Taip. 718 00:42:22,920 --> 00:42:25,970 [Studentas] Jūs turėjo palikti pastabą. [Juokas] 719 00:42:25,970 --> 00:42:28,090 Geras. Jūs turėjo palikti pastabą. 720 00:42:28,090 --> 00:42:32,320 Jūs turėtumėte būti įdėti Post-it dėmesį, arba kaip sakydamas: "Gone už pieną" 721 00:42:32,320 --> 00:42:36,830 ir tada jūsų kambarioku konceptualiai būtų užblokuota iš tikrųjų daro, kad. 722 00:42:36,830 --> 00:42:38,010 Arba tu gali eiti 1 žingsnis toliau. 723 00:42:38,010 --> 00:42:41,060 Jūs galite tiesiog užrakinti šaldytuvą su kai kurių Spynos natūra, 724 00:42:41,060 --> 00:42:44,870 o dabar savo kambarioku bus tiesiog būti užrakintas iš šaldytuvo. 725 00:42:44,870 --> 00:42:48,520 Jei mes apibendrina atgal į programavimą, 726 00:42:48,520 --> 00:42:51,610 jūs galite beveik galvoti iš šaldytuvo kai keičiamos natūra arba struct, 727 00:42:51,610 --> 00:42:53,500 kažkoks konteineris informacijos. 728 00:42:53,500 --> 00:42:58,290 Problema iš esmės čia yra, kad jums abiems buvo leista tikrinti 729 00:42:58,290 --> 00:43:02,370 arba skaityti šį duomenų struktūros, 730 00:43:02,370 --> 00:43:08,050 bet peržiūrėjote skirtingu laiku ir dar tiek jums padarė sprendimą 731 00:43:08,050 --> 00:43:11,920 remiantis šių skirtingų laiko momentais pasaulio valstybės. 732 00:43:11,920 --> 00:43:15,570 Taigi, jei būtumėte užrakinta šaldytuvas, būtų bent išvengė savo kambarioku 733 00:43:15,570 --> 00:43:19,070 galėjo apžiūrėti padėtį pasaulyje, 734 00:43:19,070 --> 00:43:22,530 kad jis ar ji negalėjo tą patį sprendimą. 735 00:43:22,530 --> 00:43:25,780 Taigi, duomenų bazių, As it turns out, turi šią problemą nuolat. 736 00:43:25,780 --> 00:43:31,050 >> Leiskite pamatyti, jei mes galime statyti scenarijų. 737 00:43:31,050 --> 00:43:34,310 Tarkime, kad jūs tarsi blogiukas ir jūs einate į "Bank of America 738 00:43:34,310 --> 00:43:37,950 vieną ar kitose vietose aikštėje, kurios turi pora Bankomatai vienas šalia kito, 739 00:43:37,950 --> 00:43:41,200 ir kažkaip jūs suprato, kaip dviem egzemplioriais bankomatas kortelę - ne visi, kad sunku. 740 00:43:41,200 --> 00:43:42,730 Tai tiesiog Magnetinės juostelės. 741 00:43:42,730 --> 00:43:45,180 Ir kas norite pabandyti padaryti, tai žaisti šį žaidimą 742 00:43:45,180 --> 00:43:49,060 kuriuo jūs įtraukėte 1 kortelę į 1 mašina, kitą kortelę į kitą mašiną, 743 00:43:49,060 --> 00:43:51,980 ir jūs iš esmės nori pabandyti atsiimti pinigus tuo pačiu metu, 744 00:43:51,980 --> 00:43:54,930 nes įsivaizduoti, kad istorija eina taip. 745 00:43:54,930 --> 00:43:57,350 Kairėje mašina užima savo kortelę ir PIN kodą, 746 00:43:57,350 --> 00:44:00,240 ir tada jūs sakote, "Duok man 100 $". 747 00:44:00,240 --> 00:44:04,790 ATM yra užprogramuotas padaryti pasirinkite savo duomenų bazę ar lygiavertė 748 00:44:04,790 --> 00:44:10,780 tokia duomenų bazė, kuria jis naudoja - pamatyti tai vartotojas turi bent 100 $ jo sąskaitoje? 749 00:44:10,780 --> 00:44:16,180 Jei taip, tada išspjauti $ 100 ir atimti $ 100 iš balanso. 750 00:44:16,180 --> 00:44:20,470 Bet, žinoma, jei yra įvairių mašinų čia arba daug būdų, kaip tikrinti 751 00:44:20,470 --> 00:44:23,560 to pasaulio valstybės, banko požemis, norėdami pamatyti, kiek pinigų jūs turite, 752 00:44:23,560 --> 00:44:26,780 manyti, kad tik atsitiktinai MACHINE kairėje ir teisę 753 00:44:26,780 --> 00:44:30,140 užduoti šį klausimą maždaug tuo pačiu laiko momentu. 754 00:44:30,140 --> 00:44:34,160 >> Ir tai tikrai gali atsitikti. Bankomatų kompiuterių šių dienų. 755 00:44:34,160 --> 00:44:37,670 Taigi, jei kairėje mašina sako, "Taip, jūs turite ne mažiau kaip $ 100" 756 00:44:37,670 --> 00:44:42,150 tuo tarpu dešinėje mašina sako: "Taip, jūs turite ne mažiau kaip $ 100" 757 00:44:42,150 --> 00:44:47,420 tada jie abu pereiti prie pabaigos savo programas ir išspjauti $ 100 758 00:44:47,420 --> 00:44:50,820 ir sako: "Anksčiau jums teko 200 JAV dolerių." 759 00:44:50,820 --> 00:44:54,890 "Leiskite man atnaujinti kintamąjį dabar gali būti $ 100 liko sąskaitoje. 760 00:44:54,890 --> 00:44:58,780 Bet jei abu jie patikrino savo sąskaitos likutį ir nustatė, kad $ 200 761 00:44:58,780 --> 00:45:02,000 ir jie abu tada daryti matematikos ir pasakyti 200-100, 762 00:45:02,000 --> 00:45:06,990 mašinos gali išspjauti 100 $ sąskaitas kiekvieną mašiną, 763 00:45:06,990 --> 00:45:11,360 bet jie ką tik atnaujino savo suma sąskaitos likutį bus $ 100. 764 00:45:11,360 --> 00:45:15,130 Kitaip tariant, jūs $ 200, bet todėl, kad jie patikrino padėtį pasaulyje 765 00:45:15,130 --> 00:45:18,840 vienu metu ir tada priėmė sprendimą, remiantis tos vertės, 766 00:45:18,840 --> 00:45:21,930 jie gali padaryti matematikos galiausiai teisingai. 767 00:45:21,930 --> 00:45:25,520 Taigi banko situaciją tikrai norite turėti tam tikrą lokautas natūra 768 00:45:25,520 --> 00:45:28,450 taip, kad kuo greičiau jūs patikrinote kai kurių kintamojo būklę 769 00:45:28,450 --> 00:45:31,220 tai tikrai svarbu, kaip jūsų sąskaitos likutį, 770 00:45:31,220 --> 00:45:36,070 neleiskite, kad kas nors kitas priimti sprendimus, remiantis, kad tol, kol baigsite daryti jūsų dalykas, 771 00:45:36,070 --> 00:45:38,920 kai šiuo atveju jūs kairėje bankomatų. 772 00:45:38,920 --> 00:45:41,160 Užrakinti ir visi kiti. 773 00:45:41,160 --> 00:45:44,650 Jūs iš tikrųjų galite pasiekti šį poveikį įvairiais būdais pora. 774 00:45:44,650 --> 00:45:48,660 >> Paprasčiausias būdas MySQL SQL eilutė, kad mes davė jums 775 00:45:48,660 --> 00:45:52,030 problemą, specifikacija, kuri atrodo lygiai taip pat kaip tai. 776 00:45:52,030 --> 00:45:57,420 Įtraukti į stalo - kokia ji vadinama ID, simbolis, ir dalis, akcijų skaičius, 777 00:45:57,420 --> 00:45:59,660 šios vertės, pvz. 778 00:45:59,660 --> 00:46:03,370 Jei turite ne skaityti spec, tai yra pavyzdys, apimanti tai, kaip tu apie tai 779 00:46:03,370 --> 00:46:07,340 pirkti 10 akcijas šio Penny Stock prezidentui Skroob, 780 00:46:07,340 --> 00:46:10,340 kurio vartotojo ID atsitinka būti numeris 7? 781 00:46:10,340 --> 00:46:14,070 Tai sako INSERT INTO stalo taip id, simbolis, ir akcijų skaičių 782 00:46:14,070 --> 00:46:18,200 7, "DVN.V", ir 10. 783 00:46:18,200 --> 00:46:21,510 Bet - bet, bet, bet - tai antroji linija yra svarbi. 784 00:46:21,510 --> 00:46:26,310 ANT Dublikatas raktas atnaujinimo akcijų = akcijos + VALUES (akcijos). 785 00:46:26,310 --> 00:46:28,350 Taip visiškai paslaptingas ieško iš pirmo žvilgsnio. 786 00:46:28,350 --> 00:46:31,990 Bet faktas, kad šis SQL užklausa, nors ji antklodės ant 2 eilučių, 787 00:46:31,990 --> 00:46:35,920 1 ilgas užklausos, tai reiškia, kad jis atominis 788 00:46:35,920 --> 00:46:41,000 ta prasme, kad ši užklausa bus arba būti vykdomas visi kartu, ar ne. 789 00:46:41,000 --> 00:46:45,100 Ir iš esmės MySQL, tai kaip jie įgyvendino šią užklausą. 790 00:46:45,100 --> 00:46:51,010 Tai yra pagal apibrėžimą garantuoja, kad vykdyti visus iš karto arba ne visi vadove. 791 00:46:51,010 --> 00:46:54,020 Ši motyvacija yra taip. 792 00:46:54,020 --> 00:46:58,540 Jei šiuo atveju jūs bandote pirkti 10 "akcijų, 793 00:46:58,540 --> 00:47:02,260 tai tipo tos pačios istorijos, pieno, tai tipo tos pačios istorijos, ATM. 794 00:47:02,260 --> 00:47:04,970 >> Jei jūs padarote klaida ne naudojant šią sintaksę 795 00:47:04,970 --> 00:47:09,610 bet vietoj to pasirinkdami iš duomenų bazės Norėdami sužinoti, kiek akcijų šio Penny Stock 796 00:47:09,610 --> 00:47:13,750 Prezidentas Skroob, ir manau, jis turi 10 akcijų, 797 00:47:13,750 --> 00:47:19,330 ir tada kai sekundės vėliau atlikite UPDATE, 798 00:47:19,330 --> 00:47:24,810 , kuris yra dar vienas SQL, kad sako, kad eiti į priekį ir pridėti 10 daugiau akcijų 799 00:47:24,810 --> 00:47:28,700 jo 10, kad idealiu atveju iš viso yra 20, 800 00:47:28,700 --> 00:47:33,490 problema yra, nes šiandienos duomenų bazių sistemų ir dėl to, kad šiandienos kompiuteriai 801 00:47:33,490 --> 00:47:35,990 turite kelis procesorius, daug branduolių - 802 00:47:35,990 --> 00:47:38,920 Kitaip tariant, kompiuteriai gali tiesiog daryti daug dalykų vienu metu - 803 00:47:38,920 --> 00:47:44,270 nėra jokios garantijos, kad jūsų pasirinkti ir jūsų UPDATE šiuo atveju 804 00:47:44,270 --> 00:47:46,150 nutiks atgal atgal. 805 00:47:46,150 --> 00:47:49,140 Taigi blogas scenarijus būtų jums padaryti SELECT 806 00:47:49,140 --> 00:47:51,670 pamatyti, kiek akcijų šio Penny Stock Skroob turėti, 807 00:47:51,670 --> 00:47:54,710 ir tada tiesiog atsitiktinai kita duomenų bazės užklausa yra vykdoma 808 00:47:54,710 --> 00:47:57,740 gal jos Skroob kitame naršyklės lange bando pirkti 10 akcijas 809 00:47:57,740 --> 00:48:00,700 apskritai kitame lange, panašiai kaip ATM 810 00:48:00,700 --> 00:48:05,410 ir manau, kad kita užklausa patenka į pasirinkite ir atnaujinimas. 811 00:48:05,410 --> 00:48:10,210 Tai gali būti tuo atveju,, kad Skroob dabar praranda tam tikrą skaičių akcijų 812 00:48:10,210 --> 00:48:14,340 , nes kitas procesas patikrinti jo pasaulio būklę, 813 00:48:14,340 --> 00:48:17,800 ar jis gauna daugiau akcijų nei jis turėtų turėti. 814 00:48:17,800 --> 00:48:23,250 Mes negalime eiti į detales, ką tos konkrečios istorija linijos būtų 815 00:48:23,250 --> 00:48:28,380 bet esmė yra, jei jūs turite patikrinti kintamųjų vertę ir tada priimti sprendimą, 816 00:48:28,380 --> 00:48:32,500 jei ten kažkas daro kažką tarp šių 2 teiginių rizika, 817 00:48:32,500 --> 00:48:36,220 kaip gali atsitikti Daugiaprocesorinė sistemų, MULTICORE sistemų, 818 00:48:36,220 --> 00:48:41,220 kompiuteriai su galimybe daryti daug dalykų vienu metu, blogų dalykų gali atsitikti 819 00:48:41,220 --> 00:48:44,530 pavyzdžiui, banko sąskaitų debetuojama neteisingai, pirkti dvigubai daug pieno, 820 00:48:44,530 --> 00:48:46,730 ar šiuo atveju neteisingai akcijų skaičius. 821 00:48:46,730 --> 00:48:48,370 Tačiau yra paprastesnis būdas galvoti apie tai. 822 00:48:48,370 --> 00:48:53,290 >> It turns out, kad SQL taip pat palaiko, jei teisingai sukonfigūruoti savo stalo, 823 00:48:53,290 --> 00:48:56,920 kažkas vadinamas sandoriai, kuriuos aš norėčiau ginčytis iš tikrųjų yra dar lengviau suprasti 824 00:48:56,920 --> 00:49:00,650 nei šis, bet tai ne 1-įdėklas, todėl tai tikrai šiek tiek aktyviau dalyvauti. 825 00:49:00,650 --> 00:49:04,960 Yra pažodžiui vadinamas START SANDORIŲ SQL. 826 00:49:04,960 --> 00:49:08,300 Kaip ten SELECT, UPDATE, INSERT, DELETE, ir prisijungti, ir krūva kitų, 827 00:49:08,300 --> 00:49:10,970 yra raktažodžius, pavyzdžiui, START OPERACIJOS. 828 00:49:10,970 --> 00:49:13,560 Ir ką jūs tada atlikite į pset 7 - 829 00:49:13,560 --> 00:49:17,270 jūs neturite tai padaryti pset 7; ji aiškiai paneigė nebūtina, 830 00:49:17,270 --> 00:49:18,830 tačiau galutinių projektų, ji gali būti naudinga - 831 00:49:18,830 --> 00:49:22,820 , jei Jūs skambinate START SANDORĮ užklausą ir tada kitą užklausą 832 00:49:22,820 --> 00:49:25,620 ir tada kitą užklausos ir tada kitą, kitą, ir kitą, 833 00:49:25,620 --> 00:49:31,860 šios užklausos bus ne iš tikrųjų būti vykdomas, kol skambinti SQL ĮSIPAREIGOJAME, 834 00:49:31,860 --> 00:49:37,220 tuo momentu, ar tai yra 2 ataskaitos arba 20 pareiškimai, jie visi bus vykdomi vienu metu, 835 00:49:37,220 --> 00:49:42,770 , o tai reiškia, niekas kitas gali netyčia nusipirkti per daug pieno ar debetinę per daug pinigų 836 00:49:42,770 --> 00:49:46,340 arba pirkti per daug akcijų, nes visus jūsų klausimus, atliks 837 00:49:46,340 --> 00:49:48,410 atgal atgal atgal atgal. 838 00:49:48,410 --> 00:49:51,580 Ir tai yra itin svarbu, ypač kai jūs darote kažką panašaus į tai. 839 00:49:51,580 --> 00:49:54,900 Tai savavališkai pavyzdys, kad sako, kad tegul atnaujinti banko sąskaitą 840 00:49:54,900 --> 00:50:00,200 nustatant pusiausvyrą, kuri yra lygi balanso - $ 1000, kur sąskaitos numeris yra 2. 841 00:50:00,200 --> 00:50:04,260 Ir tada Antrasis pareiškimas dabar tegul deponuoti, kad $ 1000 842 00:50:04,260 --> 00:50:07,310 į kito asmens banko sąskaitą, kurio sąskaitos numeris yra 1. 843 00:50:07,310 --> 00:50:10,400 >> Kitaip tariant, tai yra puikus pavyzdys, kur jūs norite įsitikinti, 844 00:50:10,400 --> 00:50:13,590 kad tiek iš šių teiginių atsitiks, arba ne visi 845 00:50:13,590 --> 00:50:15,450 nes priešingu atveju klientas ketina gauti prisukamas 846 00:50:15,450 --> 00:50:17,670 ir jūs ketinate imtis savo pinigus, o ne palikti jį kitur, 847 00:50:17,670 --> 00:50:20,470 ar bankas ketina Ululać, kur jūs einate deponuoti pinigus 848 00:50:20,470 --> 00:50:23,140 , bet ne faktiškai atimti iš vartotojo sąskaitos. 849 00:50:23,140 --> 00:50:25,810 Taigi jūs norite iš jų vykdyti kartu. 850 00:50:25,810 --> 00:50:29,140 Taigi patenka į pasaulio sandorius. 851 00:50:29,140 --> 00:50:31,360 , Kad kažkas išlaikyti savo proto atgal, 852 00:50:31,360 --> 00:50:34,710 ne tiek daug tik galutinį projektą, 853 00:50:34,710 --> 00:50:36,700 tačiau, jei norite imtis savo galutinį projektą kažkur, 854 00:50:36,700 --> 00:50:39,040 jei norite pradėti kai kompanija aplink jį, 855 00:50:39,040 --> 00:50:41,270 jei norite išspręsti kai kurių mokinių grupė problemą dėl kampusie 856 00:50:41,270 --> 00:50:45,210 ir iš tikrųjų turėti gyvą, aktyvią interneto svetainę, tai yra tarsi subtilus klaidų, kurios gali kilti 857 00:50:45,210 --> 00:50:49,480 jei jūs neturite pakankamai apgalvoti, kas gali atsitikti, jei 2 žmonės 858 00:50:49,480 --> 00:50:54,190 bando prisijungti prie savo svetainėje pažodžiui tuo pačiu momentu, 859 00:50:54,190 --> 00:50:56,890 kai savo užklausas kitu atveju galėtų gauti vienas kitam. 860 00:50:58,840 --> 00:51:01,420 >> Paruošta kai JavaScript, jų kibinimas? 861 00:51:01,420 --> 00:51:04,320 Tai mūsų paskutinė kalba už semestrą. Gerai. 862 00:51:04,320 --> 00:51:09,940 Laimei, "JavaScript" atrodo labai, labai, labai panašus į 2 kalbas, C ir PHP, 863 00:51:09,940 --> 00:51:11,140 mes padarėme iki šiol. 864 00:51:11,140 --> 00:51:14,340 Nėra jokios pset 7 "JavaScript", tačiau tai nepaprastai naudinga priemonė 865 00:51:14,340 --> 00:51:18,840 , kai kalbama apie tai žiniatinklio galutinius projektus, ar tikrai tik web programavimas apskritai. 866 00:51:18,840 --> 00:51:20,950 Taigi, trumpa apžvalga kažką vadinama DOM. 867 00:51:20,950 --> 00:51:23,600 Čia yra super paprasta interneto puslapį, tiesiog sako Hello, world 868 00:51:23,600 --> 00:51:25,970 tiek pavadinime ir organizme. 869 00:51:25,970 --> 00:51:29,270 Kaip įdubimas rodo tam tikrą laiką, 870 00:51:29,270 --> 00:51:31,380 iš tiesų egzistuoja hierarchija į interneto puslapius. 871 00:51:31,380 --> 00:51:34,220 Aš galėtų padaryti tą patį fragmentą HTML kaip medis, 872 00:51:34,220 --> 00:51:37,470 galvoti atgal į mūsų diskusijų duomenų struktūrų, C, kaip nurodyta toliau. 873 00:51:37,470 --> 00:51:40,710 Turiu tam tikras specialias šakninis mazgas, vadinamas dokumentas mazgas, 874 00:51:40,710 --> 00:51:43,650 ir mes pamatyti, tai analoginis JavaScript vos akimirką. 875 00:51:43,650 --> 00:51:48,330 Pirmasis vaikas ir tik vaikas, kad šiuo atveju yra HTML tegus. 876 00:51:48,330 --> 00:51:49,880 Negali būti jokio tiesioginio DOCTYPE kartografavimas. 877 00:51:49,880 --> 00:51:53,170 Tai ypatingas dalykas, todėl mes turime tiesiog ignoruoti jį, kai jis ateina į šį DOM, 878 00:51:53,170 --> 00:51:55,810 šiuo Document Object Model medis. 879 00:51:55,810 --> 00:51:59,530 Atkreipkite dėmesį, kad aš vaizduojamas savavališkai stačiakampio, HTML tegus 880 00:51:59,530 --> 00:52:02,890 turi 2 vaikus: galvos ir kūno. 881 00:52:02,890 --> 00:52:04,840 >> Panašiai parengtas kaip stačiakampių. 882 00:52:04,840 --> 00:52:08,970 Jis yra reikšmingas pictorially, kad galva yra kūno kairėje. 883 00:52:08,970 --> 00:52:11,960 Tai reiškia, kad galva ateina pirmiausia į medį. 884 00:52:11,960 --> 00:52:14,910 Taip yra iš tikrųjų užsisakyti į medį, kai piešiama kaip tai, 885 00:52:14,910 --> 00:52:17,460 nors forma ir Papuošalą yra savavališkas. 886 00:52:17,460 --> 00:52:20,360 Vadovas tuo tarpu turi vieną vaiką, pavadintą pavadinimas, 887 00:52:20,360 --> 00:52:25,170 ir pavadinimas iš tikrųjų turi savo vaiką, kuris yra "labas, pasauli", 888 00:52:25,170 --> 00:52:32,210 Aš sąmoningai padarė, kaip ovalo čia, kad ji šiek tiek skiriasi nuo stačiakampio. 889 00:52:32,210 --> 00:52:37,420 Šiuos stačiakampius, o hello, pasaulis yra tikrai tekstas mazgas. 890 00:52:37,420 --> 00:52:39,850 Todėl į medį mazgas, bet tai skirtingo tipo mazgas 891 00:52:39,850 --> 00:52:41,730 todėl aš patraukė savavališkai skirtingai. 892 00:52:41,730 --> 00:52:45,000 Panašiai institucija turi vaiką "Sveikas, pasauli, taip pat, 893 00:52:45,000 --> 00:52:47,910 taip skiriasi mazgas, nors jie atsitiktinai pats tekstas, 894 00:52:47,910 --> 00:52:52,100 bet aš sudarytas naudojant tą pačią formą. Taigi, who cares? 895 00:52:52,100 --> 00:52:56,820 Na, kas malonu apie HTML yra tas, kad turi šią hierarchinį pobūdį. 896 00:52:56,820 --> 00:53:01,010 Ir kas malonu apie "JavaScript" ir ypač bibliotekų, kurias galima laisvai 897 00:53:01,010 --> 00:53:07,120 ir labai populiarus, pavyzdžiui, JQuery, jūs galite naršyti medžio struktūra, taip nuostabiai lengvai. 898 00:53:07,120 --> 00:53:11,790 Bet kurių dalykų mes padarėme su nurodymus ir važiuojantiems medžių C ir recursing apie mazgų 899 00:53:11,790 --> 00:53:15,300 kairėje vaikas į dešinę vaiko, visi staiga mes galime rūšiuoti laiko savaime suprantamu dalyku 900 00:53:15,300 --> 00:53:19,450 kaip nuostabiai Paaiškinti, jei ne šiek tiek varginantis 901 00:53:19,450 --> 00:53:22,470 tačiau toli gražu ne efektyvus būdas eiti apie programavimą. 902 00:53:22,470 --> 00:53:24,470 Ir taip su šių aukštesnio lygio kalbų, pavyzdžiui, "JavaScript" 903 00:53:24,470 --> 00:53:28,340 mes galėsime daug daugiau intuityviai naršyti šį medį. 904 00:53:28,340 --> 00:53:30,430 >> Ir iš tiesų sintaksė bus gana gerai susipažinę. 905 00:53:30,430 --> 00:53:32,950 Jei jūs niekada JavaScript anksčiau, tai tikrai gražus nuoroda 906 00:53:32,950 --> 00:53:35,910 iš Mozilla žmonės, žmonės, kurie padaryti "Firefox", 907 00:53:35,910 --> 00:53:38,370 todėl nereikia jaustis laisvai naršyti, kad jums patogiu metu. 908 00:53:38,370 --> 00:53:41,590 Ką jūs rasite ir šias skaidres, yra identiški, ką mes naudojamas kitą dieną - 909 00:53:41,590 --> 00:53:44,030 panašiai, pagrindinis dingo. 910 00:53:44,030 --> 00:53:47,010 Taigi, kai jums reikia parašyti programą JavaScript, nėra pagrindinė funkcija. 911 00:53:47,010 --> 00:53:48,690 Jūs tiesiog pradėti rašyti kodą. 912 00:53:48,690 --> 00:53:51,660 Tačiau esminis skirtumas tarp JavaScript ir C ir PHP 913 00:53:51,660 --> 00:53:55,890 yra tas, kad C ir PHP šiol buvo vykdomi serverio pusėje 914 00:53:55,890 --> 00:53:59,180 prietaisą šiuo atveju, ar apskritai serverio, 915 00:53:59,180 --> 00:54:04,270 Paprastai vykdoma naršyklėje JavaScript pagal projektą. 916 00:54:04,270 --> 00:54:08,440 Kitaip tariant, jums gali rašyti "JavaScript" kodą, kaip mes apie tai, 917 00:54:08,440 --> 00:54:13,080 prietaisą serverio, bet įtraukti jį tarp savo HTML tarp jūsų CSS, 918 00:54:13,080 --> 00:54:16,100 tarp savo GIF ir savo PNG ir jūsų JPEG 919 00:54:16,100 --> 00:54:19,170 taip, kad, kai vartotojas apsilanko savo tinklalapį, jei jūs naudojate "JavaScript", 920 00:54:19,170 --> 00:54:21,770 , kad JavaScript kodas ateina iš serverio į naršyklę, 921 00:54:21,770 --> 00:54:24,540 ir tai yra naršyklė, kuri faktiškai vykdo. 922 00:54:24,540 --> 00:54:27,960 Taigi, tai turi reikšmingų pasekmių net ir intelektinės nuosavybės. 923 00:54:27,960 --> 00:54:32,600 Tai koks kvailas, kad net galvoti apie apsaugoti savo IP adresą, kai jis ateina į "JavaScript" kodo 924 00:54:32,600 --> 00:54:37,560 , nes kalbos pobūdį jis paleidžiama vykdyti paprastai naršyklės pusėje. 925 00:54:37,560 --> 00:54:40,360 >> Galite Zamglić, o tai reiškia, jūs galite padaryti, tai atrodo kvailai ir bjaurus 926 00:54:40,360 --> 00:54:45,400 be tarpų, siaubingi kintamųjų vardai, būtų sunkiau, kad žmonės galėtų pavogti jūsų IP 927 00:54:45,400 --> 00:54:48,120 bet svarbiausia yra tai, kad jis yra vykdomas naršyklės pusėje. 928 00:54:48,120 --> 00:54:51,790 Nors, kaip panaikinti "JavaScript" gali būti naudojama serverio pusėje, 929 00:54:51,790 --> 00:54:54,480 labiausiai paplitęs atvejis dabar yra vis dar savo naršyklėje. 930 00:54:54,480 --> 00:54:59,800 Ir štai, kaip jis atrodo. Čia yra if-else if-else statyti kaip ir C, kaip ir PHP. 931 00:54:59,800 --> 00:55:02,420 Čia yra Būlio išraiška, kai jūs "ar" 2 dalykų kartu. 932 00:55:02,420 --> 00:55:04,330 Čia yra, kai jūs "ir" 2 dalykų kartu. 933 00:55:04,330 --> 00:55:08,300 Čia yra jungiklis pareiškimas, kuris yra panašus į PHP 934 00:55:08,300 --> 00:55:10,810 tuo, kad galite perjungti įvairių tipų, dydžių. 935 00:55:10,810 --> 00:55:15,180 Kilpos panašiai kilpų čia, kuris yra struktūriškai vienodai, ką matėme prieš. 936 00:55:15,180 --> 00:55:18,110 O kilpos, mes turime padaryti, o kilpos. 937 00:55:18,110 --> 00:55:20,290 Kintamieji, vis tiek šiek tiek skiriasi. 938 00:55:20,290 --> 00:55:24,560 Jūs deklaruoti kintamuosius, kaip jūs tai darote PHP ir C, 939 00:55:24,560 --> 00:55:27,860 bet panašiai Javaskriptą, silpnai įvedėte. 940 00:55:27,860 --> 00:55:32,730 Jums nereikia nurodyti int arba lėšos arba eilutę ar ko nors panašaus, kad paprastai. 941 00:55:32,730 --> 00:55:34,240 Galite nurodyti var. 942 00:55:34,240 --> 00:55:38,040 Jūs neturite nurodyti var, bet jis turi įtakos, jei jūs neturite. 943 00:55:38,040 --> 00:55:42,000 Paprastai, jei jūs praleisti var, netyčia sukurti pasaulinį kintamąjį, o ne vietos. 944 00:55:42,000 --> 00:55:46,420 Taigi leiskite man pasiūlyti, kad jūs beveik visada tik pasakyti, var ir tada kintamojo pavadinimas. 945 00:55:46,420 --> 00:55:48,740 Tai ne tipo, tai tik var kintamasis. 946 00:55:48,740 --> 00:55:52,930 Tai būtų, pavyzdžiui, ar tai 123 ar "Hello, world". 947 00:55:52,930 --> 00:55:58,910 Matricos yra ir sintaksės panaši į PHP. 948 00:55:58,910 --> 00:56:03,690 Pasakysiu var numerius ir tada aš vėl naudoti skliaustus paskelbti kintamąjį 949 00:56:03,690 --> 00:56:08,870 kurio tipas yra masyvas, kuris turi šiuos numerius atskirdami juos kableliais. 950 00:56:08,870 --> 00:56:11,740 Ir tada galiausiai, tai yra tik viena, kad tikrai atrodo kitaip. 951 00:56:11,740 --> 00:56:16,700 Prisiminkite, kad PHP įgyvendino Association masyvas studentui 952 00:56:16,700 --> 00:56:20,220 kaip Zamyla, kad gali atrodyti, kurioje kintamasis yra vadinamas studentas. 953 00:56:20,220 --> 00:56:23,370 Laužtiniuose skliaustuose reiškia, čia ateina masyvas. 954 00:56:23,370 --> 00:56:28,500 >> Tas faktas, kad aš ne naudojant skaitinius indeksus, bet stygos - id, namas, vardas ir pavardė - 955 00:56:28,500 --> 00:56:30,990 reiškia, kad tai Association masyvas, 956 00:56:30,990 --> 00:56:34,490 ir šie strėlių, lygybės ženklą ir kampu skliaustelius 957 00:56:34,490 --> 00:56:37,310 reiškia, kad svarbiausia yra "id", vertė yra 1; 958 00:56:37,310 --> 00:56:39,310 Svarbiausia yra "namas", vertė yra Winthrop House; 959 00:56:39,310 --> 00:56:41,800 Svarbiausia yra "pavadinimas", vertė yra Zamyla Chan. 960 00:56:41,800 --> 00:56:47,110 Taigi yra 3 raktai viduje šio Association masyvas, iš kurių kiekvienas turi savo vertę. 961 00:56:47,110 --> 00:56:52,880 Mes matėme, kad pset 7, arba jūs netrukus JavaScript tą pačią idėją, 962 00:56:52,880 --> 00:56:55,220 bet jis ketina atrodyti. 963 00:56:55,220 --> 00:57:00,070 Taigi var studentas - ne dolerio ženklas ir neužsimenama tipo dar, bet var - 964 00:57:00,070 --> 00:57:05,860 lygus ir tada atidaryti garbanotieji petnešų, nes "JavaScript", kai jūs turite rakto reikšmė porų, 965 00:57:05,860 --> 00:57:08,900 jūs iš tikrųjų naudoti kažką vadinama objektas. 966 00:57:08,900 --> 00:57:13,490 Ir tie iš jūsų, kurie tikrai turėjo šarvuotis ar kaip tikriausiai pamenate, kad objektus iš Java 967 00:57:13,490 --> 00:57:15,140 arba panašios kalbos. 968 00:57:15,140 --> 00:57:17,880 "JavaScript" yra ne "Java", visų pirma. 969 00:57:17,880 --> 00:57:21,600 Tai buvo apgalvoto dizaino sprendimų metai prieš atkalti ką nors kita, kad buvo populiarus, 970 00:57:21,600 --> 00:57:25,640 jos pavadinimas, nors ji neturi esminį ryšį su "Java" pati. 971 00:57:25,640 --> 00:57:31,490 "JavaScript" objektus, ir jas kuriate garbanotas petnešomis žymėjimo būdu. 972 00:57:31,490 --> 00:57:36,710 JavaScript objektai beveik atitinka Association masyvai PHP 973 00:57:36,710 --> 00:57:40,030 kai kalbama saugoti duomenis, viduje iš jų. 974 00:57:40,030 --> 00:57:44,100 >> Bet dar stipriau "JavaScript" galite susieti labai lengvai funkcijas 975 00:57:44,100 --> 00:57:48,040 objekto viduje, ir nors jūs galite tai padaryti kitomis kalbomis, 976 00:57:48,040 --> 00:57:50,040 tai gana paplitusi paradigma, kaip matysime. 977 00:57:50,040 --> 00:57:54,380 Trumpai tariant, šis objektas yra studentas, kuris yra ypač Zamyla 978 00:57:54,380 --> 00:58:00,380 ir tai yra konceptualiai panašūs, tik sintaksiškai skiriasi nuo. 979 00:58:00,380 --> 00:58:03,840 Tegul iš tikrųjų naudoti "JavaScript" failą. 980 00:58:03,840 --> 00:58:05,570 Pasirodo, ten scenarijų tegus. 981 00:58:05,570 --> 00:58:08,180 Mes matėme stiliaus tegus ir mes matėme kitų HTML žymes. 982 00:58:08,180 --> 00:58:11,510 Tag scenarijų iš tikrųjų bus pateikiama šiek tiek "JavaScript" kodą. 983 00:58:11,510 --> 00:58:15,500 Leiskite man eiti į prietaiso, kur mes turime šiek tiek gatavų šaltinio kodą. 984 00:58:15,500 --> 00:58:18,700 Negali būti paskelbti jį dar į svetainę, bet aš padaryti, kad po klasę. 985 00:58:18,700 --> 00:58:21,770 Tegul atverti šią vieną, blink.html. 986 00:58:21,770 --> 00:58:27,560 Atgal 1990 metais, ten buvo tiesiog vadinamas Blink tegus HTML tegus 987 00:58:27,560 --> 00:58:30,340 ir tai buvo vienas iš labiausiai nuostabiai netinkamiausias žymes internete 988 00:58:30,340 --> 00:58:36,140 , pagal kurią norite aplankyti apie 1990-ųjų stiliaus tinklalapį ir pradėti matyti tekstas mirksi jums patinka tai, 989 00:58:36,140 --> 00:58:39,810 žymės markizas rezultatai tekstas, kuris, kaip šis. 990 00:58:39,810 --> 00:58:45,070 Vienas iš nedaugelio kartų, kai pasaulis iš tikrųjų sutartų dėl interneto standarto, 991 00:58:45,070 --> 00:58:48,250 visi visur žuvo Blink žymeklį prieš keletą metų. 992 00:58:48,250 --> 00:58:52,860 Tačiau mes galime prikelti su "JavaScript", kaip jūs turite galios demonstravimo 993 00:58:52,860 --> 00:58:56,660 kai jūs galite parašyti programą, viduje iš tinklalapio. 994 00:58:56,660 --> 00:59:00,240 Pirmiausia leiskite praleisti naujų dalykų ir sutelkti dėmesį tik į senas. 995 00:59:00,240 --> 00:59:01,780 >> Čia yra sendaikčiai šiame pavyzdyje. 996 00:59:01,780 --> 00:59:06,350 Turiu HTML tegus, galvos žymeles ir žymės pavadinimą. 997 00:59:06,350 --> 00:59:11,210 Tada aš turiu kūno tegus čia su div, išėmimas iš apyvartos yra tik stačiakampio formos puslapio padalinys 998 00:59:11,210 --> 00:59:14,720 , kad aš jam suteikiamas unikalus ID savavališkai "Pasisveikinimas", 999 00:59:14,720 --> 00:59:18,320 tiesiog taip turiu unikaliai jai kelią, kad turi keletą labai paprastą tekstą: 1000 00:59:18,320 --> 00:59:20,220 Sveikas, pasauli. 1001 00:59:20,220 --> 00:59:23,940 Dabar leiskite man slinkite iki viršaus šį failą ir pamatyti, kas naujo. 1002 00:59:23,940 --> 00:59:27,710 Pirmas dalykas, kad naujo iki viršaus yra scenarijaus žymė, 1003 00:59:27,710 --> 00:59:31,280 ir viduje pranešimo tag scenarijų aš paskelbė funkciją. 1004 00:59:31,280 --> 00:59:34,610 Paskelbti, kai "JavaScript" funkciją, gana panašus į PHP, 1005 00:59:34,610 --> 00:59:37,930 jūs tiesiog parašyti funkcija tada funkcijos pavadinimas, skliausteliuose, 1006 00:59:37,930 --> 00:59:40,400 o gal kai kurie argumentai, jei ji mano, bet. 1007 00:59:40,400 --> 00:59:43,510 Tada aš gavau mano garbanotas petnešomis, kaip įprasta, ir dabar mes turime šiek tiek šiek tiek naują kodą, 1008 00:59:43,510 --> 00:59:45,230 bet pažiūrėkime, ką tai reiškia. 1009 00:59:45,230 --> 00:59:48,670 Taigi var div, tai tiesiog reiškia, duok man kintamasis vadinamas div. 1010 00:59:48,670 --> 00:59:50,530 Aš galėjo pavadino jį foo, bet aš norėjau, kad jis būtų vadinamas div 1011 00:59:50,530 --> 00:59:52,620 priežasčių, kurios bus aiškiai per sekundę. 1012 00:59:52,620 --> 00:59:57,480 Tada paaiškėja JavaScript - ir tai yra "JavaScript" kodo, įtraukti į savo tinklalapį - 1013 00:59:57,480 --> 01:00:01,760 yra specialus pasaulio kintamasis dokumentu, pavadintu rūšių. 1014 01:00:01,760 --> 01:00:04,780 JavaScript yra iš tikrųjų Objektinis kalba. 1015 01:00:04,780 --> 01:00:07,230 Mes negalime eiti į smulkmenas 50, ką tai reiškia, 1016 01:00:07,230 --> 01:00:11,180 , bet dabar žinau, kad objektas yra gana daug kaip struct. 1017 01:00:11,180 --> 01:00:14,740 Kaip matėme kelią atgal, kai viena iš pirmųjų problemos nustato 1018 01:00:14,740 --> 01:00:17,150 kur mes įdėjome daug informacijos į struct 1019 01:00:17,150 --> 01:00:21,330 panašiai yra dokumentuoti ypatingą struct, kad ateina su naršykle, 1020 01:00:21,330 --> 01:00:24,810 ateina su bet kurį tinklalapį. Tai nėra tai, ką aš sukūriau. 1021 01:00:24,810 --> 01:00:28,210 Viduje šio dokumento struktūrą, nors, jūs turite ne tik duomenis 1022 01:00:28,210 --> 01:00:30,010 , bet jūs taip pat turite funkcijas. 1023 01:00:30,010 --> 01:00:34,090 >> Ir bet kada turite funkciją viduje statinio viduje objekto, 1024 01:00:34,090 --> 01:00:36,490 jis vadinamas metodas. Bet tai tas pats. 1025 01:00:36,490 --> 01:00:40,110 Metodas yra funkcija, kad tiesiog taip atsitinka, viduje apie ką nors kita. 1026 01:00:40,110 --> 01:00:42,990 Taigi tai reiškia, kad ši speciali pasaulio kintamasis vadinamas dokumentą 1027 01:00:42,990 --> 01:00:47,690 funkcija vadinama getElementById, kad pažodžiui Ar tai. 1028 01:00:47,690 --> 01:00:52,460 Jis bus jums iš DOM elementas, Document Object Model medis, 1029 01:00:52,460 --> 01:00:55,520 kurio ID yra šiuo atveju sveikinimo. 1030 01:00:55,520 --> 01:00:59,200 Kitaip tariant, visą tą laiką, mes praleido apie duomenų struktūras ateina į žaidimą čia. 1031 01:00:59,200 --> 01:01:01,400 Šis Dom nuotrauka, kad mes turėjome prieš akimirką, 1032 01:01:01,400 --> 01:01:06,100 nors puslapis yra šiek tiek kitoks, jei aš turėjo div šioje nuotraukoje, 1033 01:01:06,100 --> 01:01:11,180 ką document.getElementById sugrįš į mane būtų veiksmingai rodyklė 1034 01:01:11,180 --> 01:01:15,440 medžio, nuoroda į medyje stačiakampio stačiakampio. 1035 01:01:15,440 --> 01:01:18,410 Taip, kad tai, ką ji reiškia, kad iš tikrųjų skambinti vienu iš šių funkcijų. 1036 01:01:18,410 --> 01:01:21,960 Šiuo atveju vėl div. Tai nėra įstaiga arba pavadinimas. 1037 01:01:21,960 --> 01:01:26,480 Taigi pažiūrėkime, ką aš tada daryti dabar, kad aš jį viduje Šis kintamasis vadinamas div div. 1038 01:01:26,480 --> 01:01:32,580 It turns out su JavaScript, jūs turite galimybę įgnybti savo puslapio CSS dinamiškai. 1039 01:01:32,580 --> 01:01:39,060 Iki šiol visi CSS mes padarėme, nors ir ribotas, yra stiliaus atributais, 1040 01:01:39,060 --> 01:01:41,730 ar kur kitur, mes įdėti CSS? 1041 01:01:42,730 --> 01:01:45,810 I rūšies sugedęs, kad vienas. Stiliaus gairę failo viršuje. 1042 01:01:45,810 --> 01:01:49,180 Arba trečioji vieta buvo? 1043 01:01:50,710 --> 01:01:54,590 >> Išorinio failo, kažkas CSS. 1044 01:01:54,590 --> 01:01:56,730 Taigi čia yra 3 vietos, CSS šiol mes padarėme, 1045 01:01:56,730 --> 01:01:59,310 bet laimikis mes sunkiai koduojami viskas. 1046 01:01:59,310 --> 01:02:04,060 Jūs nusprendėte, kaip jūs panėrė į pset 7, mes nusprendėme, prieš paskaitą, ką mūsų CSS būtų. 1047 01:02:04,060 --> 01:02:07,380 Bet jei norite pakeisti savo CSS, jūs iš tikrųjų galite padaryti, kad 1048 01:02:07,380 --> 01:02:09,370 kai turite faktinė programavimo kalbą. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - ne programavimo kalbų. JavaScript. 1050 01:02:13,910 --> 01:02:18,200 Taigi paaiškėja, kad kuo greičiau turite vieną iš šių stačiakampių iš medžio 1051 01:02:18,200 --> 01:02:23,050 vadinamas DOM, ji pati kai jame esantys duomenys. 1052 01:02:23,050 --> 01:02:27,820 Taigi div, kad aš tiesiog įsikabinti iš medžio yra tai, ką mes vadiname turtą viduje 1053 01:02:27,820 --> 01:02:34,390 vadinamas stilius ir stiliaus viešbutyje yra sau turtą, pavadintą matomumas. 1054 01:02:34,390 --> 01:02:37,330 Aš žinau, tai tik ieškant CSS vartotojo vadove. 1055 01:02:37,330 --> 01:02:41,160 Pasirodo, ten matomumas CSS nuosavybė, ką ji sako. 1056 01:02:41,160 --> 01:02:44,530 Ji daro kažką matomas ar ne, matomas, ar ne. 1057 01:02:44,530 --> 01:02:46,810 Ir kaip jūs darote, kad tai. 1058 01:02:46,810 --> 01:02:50,510 Aš prašau programiškai, jei matomumas yra paslėpta šio div, 1059 01:02:50,510 --> 01:02:53,390 ką man jį pasikeisti? Matoma. 1060 01:02:53,390 --> 01:02:58,840 Else if šio puslapio matomumas nėra paslėptas, logiškai aš padaryti, kad tai yra paslėptas. 1061 01:02:58,840 --> 01:03:04,070 Aš neįsivaizduoju, kodėl ji matoma ir paslėptas, o ne matoma ir nematoma. 1062 01:03:04,070 --> 01:03:06,000 Tai buvo prastas dizainas sprendimas pakeliui. 1063 01:03:06,000 --> 01:03:09,530 Bet tie, kurie iš tikrųjų priešingybės CSS: matoma ir paslėpta. 1064 01:03:09,530 --> 01:03:15,520 Visa tai yra, tai reiškia, pakeisti mano bylą, CSS ir išjungti, įjungti ir išjungti 1065 01:03:15,520 --> 01:03:16,870 tos konkrečios div. 1066 01:03:16,870 --> 01:03:20,630 Bet vėl, tai yra funkcija, vadinama mirksėjimo. Kada mirksėjimo funkcija vadinama? 1067 01:03:20,630 --> 01:03:24,080 Pasirodo, kad yra dar viena speciali pasaulio kintamasis vadinamas langas, 1068 01:03:24,080 --> 01:03:28,220 panašus dvasia dokumento, bet kadangi dokumentas nuoroda į jūsų tinklalapį, 1069 01:03:28,220 --> 01:03:31,700 kaip medį DOM, HTML siunčiami iš serverio, 1070 01:03:31,700 --> 01:03:35,250 langas susijęs su aplink jį chromas, adresų juostoje, pavadinimo juostoje, 1071 01:03:35,250 --> 01:03:37,880 ir tos aplink savo tinklalapį stuff. 1072 01:03:37,880 --> 01:03:42,800 >> Ir paaiškėja, kad langas objektas yra specialios funkcijos viduje Ji paragino setInterval 1073 01:03:42,800 --> 01:03:44,360 , kad tai, ką ji sako. 1074 01:03:44,360 --> 01:03:48,600 Ja bus nustatyti intervalą, šiuo atveju - kas 500 milisekundžių - 1075 01:03:48,600 --> 01:03:52,270 ir spėti, kas tai ketinate daryti kas 500 milisekundžių? 1076 01:03:52,270 --> 01:03:55,240 Jis ketina vykdyti šią funkciją mirksi. 1077 01:03:55,240 --> 01:03:58,560 Ir kas malonu čia, kad galėtume tai padarė C, nors mes niekada. 1078 01:03:58,560 --> 01:04:01,580 C turi kažką vadinama funkcijos patarimų, kur galima perduoti funkcijas aplink 1079 01:04:01,580 --> 01:04:03,140 argumentais. 1080 01:04:03,140 --> 01:04:07,620 Panašiai "JavaScript" galite pereiti į kitos funkcijos funkcija pavadinimą. 1081 01:04:07,620 --> 01:04:10,630 Ir pastebėti, ką aš darau. Aš ne tai daryti. 1082 01:04:10,630 --> 01:04:14,380 , Jei aš įdėti skliausteliuose po Blink, tai reikštų, skambinti mirksėjimo funkcija. 1083 01:04:14,380 --> 01:04:17,430 Jei aš juos praleisti, tai reiškia, kad čia yra mirksėjimo funkcija 1084 01:04:17,430 --> 01:04:21,330 todėl kad setInterval gali kas 500 milisekundžių. 1085 01:04:21,330 --> 01:04:28,200 Todėl galutinis rezultatas, žiaurią nors ji yra, kad jei aš einu į localhost ir eiti į blink.html 1086 01:04:28,200 --> 01:04:32,120 Dabar aš turiu šito vėl ir vėl. 1087 01:04:32,120 --> 01:04:34,950 Ir jei aš iš tikrųjų Apžiūrėkite elementą, galime pamatyti, jei mes galime pamatyti tai. 1088 01:04:34,950 --> 01:04:38,550 Leiskite man Tikrinti elementą, leiskite man slinkite žemyn, tik šiek tiek, 1089 01:04:38,550 --> 01:04:44,320 leiskite man pasirinkti elementus per čia, ir pastebėti DOM Chrome inspektoriaus viduje. 1090 01:04:44,320 --> 01:04:48,840 Tai tiesiog pakeisti pirmyn ir atgal kas 500 milisekundžių. 1091 01:04:48,840 --> 01:04:55,660 Jei mes einame į mūsų draugas Nate, 1092 01:04:55,660 --> 01:05:00,020 , jei jūs kada nors susimąstėte, kaip tai dirba, panašią idėją su intervalu, 1093 01:05:00,020 --> 01:05:04,810 bet Nate iš tiesų yra labai veiksmingai naudoti šiuo konkrečiu atveju, čia spalvos. 1094 01:05:04,810 --> 01:05:07,350 Taigi, ką dar galime su tuo daryti? 1095 01:05:07,350 --> 01:05:09,990 Tegul atverti dar vieną pavyzdį ir išbandyti ką nors 1096 01:05:09,990 --> 01:05:12,940 tai programiškai dar labiau naudingas nei siekį mirksi. 1097 01:05:12,940 --> 01:05:17,990 Leiskite man eiti į mūsų formų kataloge šiandien ir eiti į form0. 1098 01:05:17,990 --> 01:05:20,820 Tai buvo ugliest, kad galėčiau sugalvoti, 1099 01:05:20,820 --> 01:05:23,290 ir leiskite man tiesiog parodyti jums, kaip jis atrodo, kad naršyklėje. 1100 01:05:23,290 --> 01:05:28,960 >> Leiskite man eiti į localhost / formos, ir tai yra form0. 1101 01:05:28,960 --> 01:05:33,400 Tai super bjaurus HTML formą, kuri turi kelis laukus, Email, slaptažodžio, 1102 01:05:33,400 --> 01:05:37,190 slaptažodį, ir tada šiek tiek žymės langelį sutikti su kai kuriais terminais ir sąlygomis. 1103 01:05:37,190 --> 01:05:41,350 Laimikis yra, jei aš aplankyti šią formą ir aš nenoriu duoti jums mano elektroninio pašto adresą, 1104 01:05:41,350 --> 01:05:44,730 Aš nenoriu sutikti su terminais ir sąlygomis gal galiu spauskite mygtuką "Registruotis 1105 01:05:44,730 --> 01:05:46,920 ir tai leidžia man per vistiek. 1106 01:05:46,920 --> 01:05:50,800 Tai atsitinka teikti kvailas PHP failą pavadinimu dump.php. 1107 01:05:50,800 --> 01:05:58,420 Visi jame yra atsispausdinti turinį $ _GET tik diagnostikos tikslais. 1108 01:05:58,420 --> 01:06:01,580 Tai buvo, kas buvo pateikti naudotojui tik dabar. 1109 01:06:01,580 --> 01:06:05,010 Tačiau tarkime, mes iš tikrųjų norime patvirtinti vartotojo formą. 1110 01:06:05,010 --> 01:06:06,530 Leiskite man eiti į 1 variantas. 1111 01:06:06,530 --> 01:06:11,420 Tai form1.html. Atrodo estetiškai lygiai taip pat blogai, bet pastebėsite, kaip tai yra išgalvotas. 1112 01:06:11,420 --> 01:06:15,450 Jei aš spustelėkite Registruotis be bendradarbiauja, man rėkė. 1113 01:06:15,450 --> 01:06:17,320 "Jūs turite nurodyti savo elektroninio pašto adresą." 1114 01:06:17,320 --> 01:06:21,670 Gerai. Taigi leiskite man pabandyti, kad. Taigi malan@harvard.edu. Man nereikia slaptažodį. 1115 01:06:21,670 --> 01:06:25,100 Registruotis. "Jūs turite nurodyti slaptažodį." Gerai. 1116 01:06:25,100 --> 01:06:28,470 Taigi aš pateikti raudonu slaptažodį. Registruotis. 1117 01:06:28,470 --> 01:06:32,300 "Slaptažodžiai nesutampa". Turiu įvesti purpuras čia. 1118 01:06:32,300 --> 01:06:35,710 Aš netyčia pažymėjote. Registruotis. 1119 01:06:35,710 --> 01:06:39,860 "Jūs turite sutikti su terminais ir sąlygomis". Gerai. Sutinka, kad. Registruotis. 1120 01:06:39,860 --> 01:06:43,700 Ir dabar jis man rodo diagnostikos produkcija per ten. 1121 01:06:43,700 --> 01:06:45,630 >> Taigi, kas atsitiko? 1122 01:06:45,630 --> 01:06:48,330 Mes turėjo šią galimybę patvirtinti formų pateikimą. 1123 01:06:48,330 --> 01:06:51,420 Iš tiesų, jei jums pasinerti į pset 7, atsiprašyti funkcija 1124 01:06:51,420 --> 01:06:54,620 kad daro tai gana lengva klykauti ne su pranešimu ekrane vartotojui. 1125 01:06:54,620 --> 01:06:57,580 Aš naudoju šiek tiek kitokį mechanizmą, automatinio įspėjimo funkcija, 1126 01:06:57,580 --> 01:07:03,690 kuris yra ne funkcija, kuri nusišypsojo to, nes jis daro labai negraži vartotojo pranešimus. 1127 01:07:03,690 --> 01:07:05,710 Bet pažiūrėkime, ką aš darau čia. 1128 01:07:05,710 --> 01:07:09,620 Tai form1.html, ir pastebėsite, kad turiu šiek tiek gana pažįstamas sintaksę: 1129 01:07:09,620 --> 01:07:12,920 kūno tegus, forma tegus, ACTION atributas, metodas atributas. 1130 01:07:12,920 --> 01:07:17,050 , Bet pastebėsite, aš mano forma unikalų identifikatorių patogumui. 1131 01:07:17,050 --> 01:07:19,190 Tada aš gavau laišką lauką, kurio tipas yra tekstas, 1132 01:07:19,190 --> 01:07:23,780 slaptažodžio lauką, kurio tipas yra slaptažodį, patvirtinimas laukas, kurio tipas yra slaptažodis, 1133 01:07:23,780 --> 01:07:28,070 ir tada žymės langelį, kurio vardas yra susitarimas čia, tipo langelį. 1134 01:07:28,070 --> 01:07:30,380 Ir tada aš turiu mygtuką "Siųsti". 1135 01:07:30,380 --> 01:07:33,050 , Bet pastebėsite, viršuje, ką dar turiu. 1136 01:07:33,050 --> 01:07:35,810 Visų pirma, yra dar vienas žymelės scenarijų naudojimas. 1137 01:07:35,810 --> 01:07:40,520 Jei turite kokių nors "JavaScript" kodą į kitą failą, kaip su CSS, galite jį įtraukti. 1138 01:07:40,520 --> 01:07:44,530 Ir jūs, kad su Scenarijaus šaltinio, ir tada pastebėsite, aš prijungti matyt 1139 01:07:44,530 --> 01:07:50,349 labai ilgą kelią, bet kurio failo pavadinimas baigiasi googleapis.com į jquery.min 1140 01:07:50,349 --> 01:07:52,420 minimumo. js. 1141 01:07:52,420 --> 01:07:55,969 JQuery yra super populiarus biblioteka JavaScript, kad tiesiog daro "JavaScript" 1142 01:07:55,969 --> 01:07:58,230 juo labiau, patogus naudoti. 1143 01:07:58,230 --> 01:08:00,610 Jis tapo de facto standartas. 1144 01:08:00,610 --> 01:08:04,090 Taigi, nors, ką jūs apie norėdami pamatyti nėra grynas Javaskriptą, savaime, 1145 01:08:04,090 --> 01:08:09,340 tai ant JavaScript panašiai kaip CS50 bibliotekoje biblioteka yra sluoksnis 1146 01:08:09,340 --> 01:08:13,670 ant žemo lygio C kodas; tikrovė yra tokia, beveik visi internete naudoja ją. 1147 01:08:13,670 --> 01:08:18,030 Taigi tai yra ne mokymo ratai. Tai tik geriausią praktinę patirtį šių dienų. 1148 01:08:18,030 --> 01:08:22,830 Dabar toliau pastebėsite, kad yra mano paties scenarijaus žymė, ir pastebėti, ką aš padariau čia. 1149 01:08:22,830 --> 01:08:27,450 It turns out, kad JQuery ar kažkas šiek tiek išgalvotas. 1150 01:08:27,450 --> 01:08:29,660 Javascript dolerio ženklai, tačiau jie yra bereikšmiai. 1151 01:08:29,660 --> 01:08:32,870 >> Jie yra tarsi raide A arba B arba C. 1152 01:08:32,870 --> 01:08:36,670 JQuery tiesiog priėmė konvenciją arba rūšiuoti laid reikalavimo į tai, 1153 01:08:36,670 --> 01:08:40,280 kad $ bus jų ypatingą simbolis. 1154 01:08:40,280 --> 01:08:44,950 Taigi, kai jūs įkelti šį pasaulinį "JavaScript" failą čia su žymelės scenarijų, 1155 01:08:44,950 --> 01:08:49,080 turite prieigą į specialią pasaulinį kintamąjį, tai vadinama $. 1156 01:08:49,080 --> 01:08:53,009 Tai daugiau tinkamai vadinamas JQuery, bet tai nereiškia, atrodo beveik kaip seksualus kaip $. 1157 01:08:53,009 --> 01:08:56,250 Bet $ neturi ypatingą reikšmę. PHP turėjo ypatingą reikšmę. 1158 01:08:56,250 --> 01:08:58,440 Jums teko turėti jį prieš kintamojo. 1159 01:08:58,440 --> 01:09:01,670 Tai tik seksualus dalykas, kad jie paėmė. 1160 01:09:01,670 --> 01:09:03,389 Kas čia vyksta? 1161 01:09:03,389 --> 01:09:08,830 Atkreipkite dėmesį, aš pereiti į jQuery funkciją savo pasaulinį kintamąjį dokumentą 1162 01:09:08,830 --> 01:09:10,860 ir tada aš skambina. pasiruošę. 1163 01:09:10,860 --> 01:09:15,480 , Ką JQuery iš esmės nėra tai leidžia jums imtis šiek tiek vanilės "JavaScript" dalykų 1164 01:09:15,480 --> 01:09:17,889 kaip dokumento objektas, langas objektas, 1165 01:09:17,889 --> 01:09:20,790 ir jei pereisite į JQuery funkcija - 1166 01:09:20,790 --> 01:09:24,429 ir vėl, kad būtų aiškus, tai funkcija vadinama JQuery 1167 01:09:24,429 --> 01:09:28,240 ką ji daro, ji grąžina jums specialią versiją dokumento 1168 01:09:28,240 --> 01:09:30,700 , kad turi daugiau funkcijų, su juo susijusios. 1169 01:09:30,700 --> 01:09:34,760 Taigi žaliavinio JavaScript nėra pasirengęs funkcija, 1170 01:09:34,760 --> 01:09:37,810 tačiau jei pereisite dokumentą JQuery funkcija, 1171 01:09:37,810 --> 01:09:40,960 jis grįžta į specialią versiją dokumento objektas 1172 01:09:40,960 --> 01:09:43,030 , kad turi daugiau pažangias funkcijas. 1173 01:09:43,030 --> 01:09:48,230 Ir tai, kodėl žmonės mėgsta. Jis tiesiog leidžia lengviau padaryti, nes mes apie norėdami pamatyti. 1174 01:09:48,230 --> 01:09:49,820 Taigi, ką tai kodo eilutę reiškia? 1175 01:09:49,820 --> 01:09:52,690 Šis kodo eilutę čia reiškia, kai dokumentas yra parengtas 1176 01:09:52,690 --> 01:09:56,830 Kitaip tariant, kai naršyklė yra skaitote šį failą viršaus į apačią - 1177 01:09:56,830 --> 01:09:59,200 eiti į priekį ir vykdyti šią funkciją. 1178 01:09:59,200 --> 01:10:03,540 Tai, kas tikrai įdomu, JavaScript ir PHP yra tai, kaip gerai - 1179 01:10:03,540 --> 01:10:05,450 yra anoniminiai funkcijos. 1180 01:10:05,450 --> 01:10:10,560 "JavaScript" galite paskelbti funkcijos, kurios neturi pavadinimo, bet jie turi kūną. 1181 01:10:10,560 --> 01:10:12,570 Atkreipkite dėmesį, tai, kas vyksta čia. 1182 01:10:12,570 --> 01:10:16,220 >> Tai funkcija, vadinama pasirengę, ir tai tik reiškia, atlikite šiuos veiksmus 1183 01:10:16,220 --> 01:10:20,220 , kai viso tinklalapio yra pasirengusi, Kai viskas buvo skaitoma iš serverio. 1184 01:10:20,220 --> 01:10:23,090 Ką norite daryti? Noriu vykdyti dalį kodo. 1185 01:10:23,090 --> 01:10:27,120 Atkreipkite dėmesį, kad mes nenorime vykdyti šį kodą iškart. 1186 01:10:27,120 --> 01:10:34,350 Jeigu aš praleisti šį, tai reikštų, nedelsiant pradėti vykdyti šias kodo eilutes. 1187 01:10:34,350 --> 01:10:39,040 Bet tai, kad aš noriu pasakyti, ne, ne, ne, apvyniokite tai anonimiškai funkcijas, kaip šis 1188 01:10:39,040 --> 01:10:43,000 priemonės negali paleisti jį dar; galiausiai jį pavadinti. 1189 01:10:43,000 --> 01:10:45,430 Mes tai matėme momentas prieš mūsų ankstesnės formos pavyzdys. 1190 01:10:45,430 --> 01:10:49,990 Kokią funkciją mes vadiname, galų gale, 500 milisekundžių vėliau? Mirksėti. 1191 01:10:49,990 --> 01:10:51,480 Taigi tą pačią idėją. 1192 01:10:51,480 --> 01:10:53,950 Vėlgi, net jei tai atrodo šiek tiek keistai, tiesiog dabar tikėjimu 1193 01:10:53,950 --> 01:10:57,060 kad paskelbti anoniminis funkcija, kuri vadinama galiausiai, 1194 01:10:57,060 --> 01:11:01,720 jūs tiesiog parašyti function () { 1195 01:11:01,720 --> 01:11:05,380 Taigi, kokiu kodu mes ketiname vykdyti galų gale? Taip. 1196 01:11:05,380 --> 01:11:10,460 Tai taip pat atrodo šiek tiek nauja, bet tai reiškia, kad čia yra JQuery funkcija, 1197 01:11:10,460 --> 01:11:13,430 ir tai dabar yra trumpiausias. 1198 01:11:13,430 --> 01:11:18,830 Šį HTML fragmentą, žinoma, ekrano apačioje šiek tiek medžio atstovavimą. 1199 01:11:18,830 --> 01:11:21,730 Tai ne tai. Šis puslapis yra įdomesnis nei šis Hello, World pavyzdžiui. 1200 01:11:21,730 --> 01:11:25,210 Bet ten kai medis, kuris atitinka šios HTML. 1201 01:11:25,210 --> 01:11:28,910 Būtų kaklo skausmas turi įgyvendinti kažkokį rekursinis funkcija 1202 01:11:28,910 --> 01:11:34,380 pradėti šakninis mazgas ir tada rasti mazgas, kurio ID yra registracija. 1203 01:11:34,380 --> 01:11:38,340 Taigi, ką JQuery daro super lengva, mums yra pažodžiui tai. 1204 01:11:38,340 --> 01:11:43,000 Eiti į priekį ir pasiimk mane, kokia div arba bet kokia forma, nepriklausomai nuo HTML elementas 1205 01:11:43,000 --> 01:11:45,820 turi registracijos adresą. 1206 01:11:45,820 --> 01:11:52,440 Tai prilygsta document.getElementById ("registracija"). 1207 01:11:52,440 --> 01:11:54,170 >> Kodėl žmonės, pavyzdžiui, JQuery? 1208 01:11:54,170 --> 01:12:00,110 , Nes jis trumpesnis įvesti. Bet, kad visa tai yra. Tai tą pačią idėją. 1209 01:12:00,110 --> 01:12:02,630 "Leisk man žymą, kurio ID yra registracija. 1210 01:12:02,630 --> 01:12:06,300 Ir kai yra tvirtinama, kad žyma, kuris atsitinka būti forma, 1211 01:12:06,300 --> 01:12:08,300 eiti į priekį ir vykdyti šį kodą. 1212 01:12:08,300 --> 01:12:11,320 Todėl galime imtis vienas ieškoti dabar, kaip mes darome, formos patvirtinimo. 1213 01:12:11,320 --> 01:12:15,950 Komandos sintaksė yra tiesa paslaptingas per pirmąjį, tačiau tai, kas vyksta? 1214 01:12:15,950 --> 01:12:21,050 Jei tai kodo eilutė yra teisinga, aš ruošiuosi šaukti, kad vartotojas galėtų pateikti savo elektroninio pašto adresą. 1215 01:12:21,050 --> 01:12:22,970 Taigi, kas tai yra kodo eilutę? 1216 01:12:22,970 --> 01:12:25,560 $ JQuery. Dabar pastebės. 1217 01:12:25,560 --> 01:12:27,920 Tai natūra, pavyzdžiui, CSS. 1218 01:12:27,920 --> 01:12:33,370 Jei jūs nėrė į CSS dar, jūs žinosite, kad tai reiškia, elementą, kurio ID yra registracija. 1219 01:12:33,370 --> 01:12:39,840 Vietos tai rasti vaiką ar registracijos palikuonis, kurio pavadinimas yra įėjimas. 1220 01:12:39,840 --> 01:12:42,970 Ir tada šis dalykas laužtiniuose skliaustuose yra šiek tiek filtras. 1221 01:12:42,970 --> 01:12:47,010 Ir net jei tai atrodo paslaptingas, tai tiesiog reiškia, eiti į formą, kurio ID yra registracija, 1222 01:12:47,010 --> 01:12:51,230 eikite į įvesties vidinis elementas, kurio vardas yra elektroninio pašto, 1223 01:12:51,230 --> 01:12:55,440 ir tada gauti savo vertę, nesvarbu, kokia jo vertė būna, kad 1224 01:12:55,440 --> 01:12:59,670 asdf jei tai viskas, ką aš spausdintas arba malan@harvard.edu, jei tai, ką aš įvedėte. 1225 01:12:59,670 --> 01:13:05,250 Taigi,, jei formą elektroninio pašto srityje == jokia vertė, klykauti ne vartotojo. 1226 01:13:05,250 --> 01:13:09,700 Else if slaptažodžio lauke vertė == nieko, klykauti ne vartotojo. 1227 01:13:09,700 --> 01:13:19,520 >> Else if slaptažodžio lauke vertė nėra lygi patvirtinimo srityje vertę, 1228 01:13:19,520 --> 01:13:22,850 , kuris buvo kitos formos elementas, klykauti ne vartotojo. 1229 01:13:22,850 --> 01:13:25,680 Ir tada galiausiai - ir tai irgi turi tam tikrą naują sintaksę savo, 1230 01:13:25,680 --> 01:13:29,270 bet kai tik jūs mačiau jį, tai bent šiek tiek labiau pagrįsta - 1231 01:13:29,270 --> 01:13:34,060 else if forma, kurio ID yra registracija turi įvesties elementas, kurio pavadinimas yra susitarimas 1232 01:13:34,060 --> 01:13:39,720 ir ji yra tikrinama, eiti į priekį ir klykauti ne vartotojo. 1233 01:13:39,720 --> 01:13:42,520 Taigi, aš visiškai pripažinti, tai yra visiškai didžioji iš pirmo žvilgsnio. 1234 01:13:42,520 --> 01:13:46,530 Tai naujos sintaksės daug. Bet visi JQuery šių modelių rūšių. 1235 01:13:46,530 --> 01:13:49,880 Ir sąžiningai, aš net žinau, tai egzistavo tik kelias minutes. 1236 01:13:49,880 --> 01:13:53,640 Aš googled "Kaip jums patikrinti, jei žymės langelį tikrinamas JQuery?" 1237 01:13:53,640 --> 01:13:55,680 ir tai yra sintaksė, nes ten yra įvairių būdų tai daryti 1238 01:13:55,680 --> 01:13:58,010 su realiais žaliavinio JavaScript kodą. 1239 01:13:58,010 --> 01:14:01,030 Taigi, kaip pats pirmas puslapis problemą, 7 pabrėžia, 1240 01:14:01,030 --> 01:14:04,500 pset 7 yra labai daug pratybų Bootstrap save 1241 01:14:04,500 --> 01:14:08,650 kur mes su sąlyga, tikiuosi, koncepciją, su kuria spręsti pset. 1242 01:14:08,650 --> 01:14:12,280 >> Bet kaip dažnai su web dizainas atveju, tai jums tikrai baksnoti aplink, 1243 01:14:12,280 --> 01:14:16,680 įtraukti kodo fragmentų ir pavyzdžius iš interneto, taip ilgai, kaip jūs juos paminėti 1244 01:14:16,680 --> 01:14:17,960 už dėl šio pirmojo lapo, 1245 01:14:17,960 --> 01:14:21,460 ir suprasti, kad mokytis HTML, CSS, "JavaScript" ir net SQL 1246 01:14:21,460 --> 01:14:26,020 iš tikrųjų reiškia būti tai at-home įgyvendinimas, kaip mes pradėsime priimti šias mokymo ratus. 1247 01:14:26,020 --> 01:14:29,150 Ir suprasti, taip pat tiek daug daugiau dalykų, kuriuos galite padaryti su naršykle. 1248 01:14:29,150 --> 01:14:33,790 Viduje dauguma iš šių elementų yra ir kitų dalykų, pavadinta įvykių tvarkytojai. 1249 01:14:33,790 --> 01:14:37,140 Ir nors mes tik pažvelgė tie vadinami onsubmit ir onready 1250 01:14:37,140 --> 01:14:40,310 jūs galite padaryti dalykų, pavyzdžiui, onkeydown, onkeyup, 1251 01:14:40,310 --> 01:14:43,410 patinka, kai vartotojas paliečia raktą, galite klausytis, kad ir mygtuką į viršų. 1252 01:14:43,410 --> 01:14:45,940 "Gmail" yra spartieji klavišai. 1253 01:14:45,940 --> 01:14:49,490 Kaip "Google" sparčiuosius klavišus, pavyzdžiui, C rašyti? 1254 01:14:49,490 --> 01:14:54,120 Jie klausosi įvykius, kaip jie vadinami, kaip onkeypress ar onkeyup ir onkeydown. 1255 01:14:54,120 --> 01:14:56,360 Jeigu jūs kada nors svyruoti savo pele per tam tikrą meniu 1256 01:14:56,360 --> 01:15:00,180 ir visi staiga, voila, pasirodys meniu, arba grafinis vaizdas keičia spalvą, 1257 01:15:00,180 --> 01:15:01,920 kaip jie tai daro? 1258 01:15:01,920 --> 01:15:06,940 O ne klausytis onready ar onsubmit, jūs klausytis onmouseover ar onmouseout. 1259 01:15:06,940 --> 01:15:10,920 >> Taigi trumpai tariant, šių labai paprastas pagrindai, kad mes pradėjo subraižyti paviršių šiandien 1260 01:15:10,920 --> 01:15:13,940 ir mes pasinerti toliau trečiadienį, jūs turite, vis dažniau 1261 01:15:13,940 --> 01:15:17,530 galia įgyvendinti rūšių dalykų, kad jūs jau esate susipažinę su. 1262 01:15:17,530 --> 01:15:21,620 Taigi, tegul nesibaigia, o mes ir toliau tai trečiadienį. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]