1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Teden 9] 2 00:00:02,570 --> 00:00:04,740 [David J. Malan - Harvard University] 3 00:00:04,740 --> 00:00:07,170 [To je CS50. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 V redu. Dobrodošel nazaj. To je CS50, in to je začetek tedna 9. 5 00:00:12,350 --> 00:00:16,600 Danes smo se osredotočili predvsem na načrtovanje, ne več v okviru dela C 6 00:00:16,600 --> 00:00:20,010 vendar v okviru PHP in malo SQL in malo JavaScripta 7 00:00:20,010 --> 00:00:23,730 zlasti proti koncu leta je tako pset 7 in tudi vaš končni projekt. 8 00:00:23,730 --> 00:00:26,310 V bistvu, če ste na tej točki v svojem zadnjem projektu 9 00:00:26,310 --> 00:00:30,100 kjer je domnevno od eno uro ali tako pred vami vsaj začeli dati nekaj misli 10 00:00:30,100 --> 00:00:33,730 svoj končni projekt in misliš, da želite sodelovati z 1 ali 2 sošolci, 11 00:00:33,730 --> 00:00:36,150 Če imate težave pri povezovanju s sošolci dejal, 12 00:00:36,150 --> 00:00:40,570 vas prosimo, da izpolnite obrazec na cs50.net/partners/form. 13 00:00:40,570 --> 00:00:42,880 Prav tako vas vpraša, kdo ste, kakšen projekt razmišljate o tem, 14 00:00:42,880 --> 00:00:44,870 kje živiš le iz logističnih razlogov. 15 00:00:44,870 --> 00:00:49,510 In potem, če želite, da pazi na v naslednjem tednu ali tako preglednice URL tam, 16 00:00:49,510 --> 00:00:53,520 lahko nato videli samo za branje različico Google doc 17 00:00:53,520 --> 00:00:56,010 , v katerem smo zbiranje teh podatkov. 18 00:00:56,010 --> 00:00:58,930 Torej, če želite delati z nekom, z vsemi sredstvi, vas prosimo, da stik z ljudmi 19 00:00:58,930 --> 00:01:00,480 prek tega mehanizma. 20 00:01:00,480 --> 00:01:02,690 Vendar pa večina ljudi, ne dela sam. To je povsem v redu. 21 00:01:02,690 --> 00:01:06,120 Torej ne zdi, da je to na kakršen koli način obvezno. 22 00:01:06,120 --> 00:01:09,680 V petek je bila samo jaz in nekaj ekipo tukaj, 23 00:01:09,680 --> 00:01:11,100 prazna gledališče za večino del. 24 00:01:11,100 --> 00:01:14,600 Tukaj so 3 turisti sedel tam, tako da je bilo malo nerodno. 25 00:01:14,600 --> 00:01:18,970 Kaj sva govorila bila baze podatkov in smo se pogovarjali o pset 7 malo. 26 00:01:18,970 --> 00:01:22,200 In če niste slučajno ujeli na video, samo še, da je v redu. 27 00:01:22,200 --> 00:01:26,770 Bom poskusil opredeliti vse pristojnosti, ki bi jih sicer jemljemo za samoumevno 28 00:01:26,770 --> 00:01:28,840 temelji na predavanju v petek. 29 00:01:28,840 --> 00:01:32,550 >> Ampak danes bomo poskušali priti do točke 30 00:01:32,550 --> 00:01:34,990 ki ni samo, da lahko naredite nekaj takega pset 7 31 00:01:34,990 --> 00:01:37,360 ampak res razume, kaj se dogaja pod pokrovom motorja, 32 00:01:37,360 --> 00:01:41,910 še posebej nekaj abstrakcij, ki smo jih v mestu v datoteki functions.php 33 00:01:41,910 --> 00:01:45,780 da bo vaše življenje malo lažje, vendar tako, da boste na koncu razumeli 34 00:01:45,780 --> 00:01:48,760 tako da, če je usposabljanje kolesa sname v nekaj tednih lahko še vedno preživi 35 00:01:48,760 --> 00:01:53,750 v realnem svetu in ne te stvari brez CS50 okviru pod vami. 36 00:01:53,750 --> 00:01:57,500 Ta $ _SESSION, za tiste, ki so seznanjeni 37 00:01:57,500 --> 00:02:01,960 ali so že ujeli videoposnetek, v petek, kaj seji storimo 38 00:02:01,960 --> 00:02:04,330 v PHP temelji na spletni aplikaciji? 39 00:02:04,330 --> 00:02:09,650 To je superglobal spremenljivka, kar pomeni, da je podobno v duhu, da GET in POST 40 00:02:09,650 --> 00:02:13,970 in še nekaj drugih, ampak kaj je ta stvar koristna za? 41 00:02:13,970 --> 00:02:18,320 >> Kaj je SEJA uporablja? Ja. [Študent] Sečnja noter 42 00:02:18,320 --> 00:02:21,040 Prosim? [Študent] Sečnja noter Sečnja noter Res je. 43 00:02:21,040 --> 00:02:25,100 V pset 7 smo s tem zasedanju superglobal lažje uspešni prijavi 44 00:02:25,100 --> 00:02:28,600 In kaj lepega o tej superglobal je, da je asociativno polje. 45 00:02:28,600 --> 00:02:33,190 Asociativni array, odpoklic pa je le niz, vendar katerih indeks ni več treba biti številke 46 00:02:33,190 --> 00:02:37,670 kot 012. Lahko so številke ali pa jih celo strune. 47 00:02:37,670 --> 00:02:44,890 In tako, če ste vrgli v pset 7 še ni, se lahko spomnimo, da smo shranjevanje ključno imenovano ID 48 00:02:44,890 --> 00:02:50,330 znotraj te povezovalne matrike, katerih vrednost je nekaj takega kot 123 - 49 00:02:50,330 --> 00:02:53,780 ne glede na trenutno prijavljen ID uporabnika je. 50 00:02:53,780 --> 00:02:59,470 Motivacija za to je, da tudi po tem, ko je uporabnik obiskal localhost 51 00:02:59,470 --> 00:03:02,720 ali moje spletno mesto bolj na splošno, nato pa sem se prijavil, 52 00:03:02,720 --> 00:03:07,320 tudi če ne kliknete povezavo, ali vrnitev na moji spletni strani za 5 minut 53 00:03:07,320 --> 00:03:10,730 ali celo uro ali celo dan, vendar zapustiti svoje okno brskalnika odprto, 54 00:03:10,730 --> 00:03:14,370 prek tega superglobal se spomnim, da so prijavljeni 55 00:03:14,370 --> 00:03:21,140 >> Z drugimi besedami, to mi omogoča, da shranite malo dolgoročno karkoli hočem o uporabniku. 56 00:03:21,140 --> 00:03:24,390 In misliš, da res, kot utelešenje v košarici. 57 00:03:24,390 --> 00:03:27,740 Mesta, kot so Amazon očitno vam dal stvari v nakupovalnem vozičku, 58 00:03:27,740 --> 00:03:32,230 vendar HTTP protokol, ki poganja spletu, je brez državljanstva 59 00:03:32,230 --> 00:03:34,230 v smislu, da ko obiščete spletno stran, 60 00:03:34,230 --> 00:03:37,290 večinoma nimaš neke stalne omrežne povezave 61 00:03:37,290 --> 00:03:39,270 med brskalnikom in strežnikom. 62 00:03:39,270 --> 00:03:42,190 Takoj, ko ste prenesli HTML in JPEG in GIF in vse to, 63 00:03:42,190 --> 00:03:48,200 povezava izgine in moraš samo kopijo HTML in malenkosti iz strežnika. 64 00:03:48,200 --> 00:03:53,000 Ampak, če je strežnik želi spomniti kaj o tebi, 65 00:03:53,000 --> 00:03:57,580 obremenitev na strežniku dejansko zabeležiti te informacije. 66 00:03:57,580 --> 00:04:00,130 In tako programer, ki imajo nadzor nad strežnikom 67 00:04:00,130 --> 00:04:04,400 lahko postavite skoraj karkoli želite znotraj tega superglobal asociativni niz 68 00:04:04,400 --> 00:04:06,850 in bo tam naslednjič, ko se uporabnik vrne, 69 00:04:06,850 --> 00:04:12,070 ali je to minut ali celo dni, razen če se zaprejo svoje okno brskalnika 70 00:04:12,070 --> 00:04:14,360 Takrat seji izgine. 71 00:04:14,360 --> 00:04:17,779 Torej je minljiva skladiščenje, to je brez trajne in to je pomenilo, da gredo stran 72 00:04:17,779 --> 00:04:22,360 takoj, ko uporabnik zapre svoj brskalnik - ne samo, da je kartica, ki se pogosto celoten brskalnik, 73 00:04:22,360 --> 00:04:24,930 ter uspešno prijavo uporabnika ven. 74 00:04:24,930 --> 00:04:28,000 Torej, kako je ta stvar dejansko izvaja? 75 00:04:28,000 --> 00:04:31,360 Oglejmo hiter pogled na preprostem primeru smo iskali v petek. 76 00:04:31,360 --> 00:04:33,340 Za tiste, ki ne poznajo, je bilo tako enostavno, kot to. 77 00:04:33,340 --> 00:04:35,910 To je spletna stran, katere edini namen v življenju je, da mi poveš 78 00:04:35,910 --> 00:04:38,000 Kolikokrat sem obiskal te strani. 79 00:04:38,000 --> 00:04:41,670 To je prvič, da sem v ponedeljek, da sem jo obiskal, zato je pravi 0 krat. 80 00:04:41,670 --> 00:04:46,940 >> Ampak, če začnem znova naložite to stran, se pravi 1 uro, 2, 3, 4, 5, 81 00:04:46,940 --> 00:04:49,800 in bo to na koncu kar naprej štetje gor, gor, gor, gor, gor 82 00:04:49,800 --> 00:04:53,130 Za vsako časa sem kliknite Osveži dejansko na njej. 83 00:04:53,130 --> 00:04:58,830 Torej, kako je to dela? Spusti me noter to datoteko z imenom counter.php. 84 00:04:58,830 --> 00:05:02,490 Zgornji del je vse modro pripombe, vendar pa je zanimiv del je tukaj. 85 00:05:02,490 --> 00:05:06,670 V vrstici 13 pravimo to funkcijo session_start, 86 00:05:06,670 --> 00:05:09,600 in da se je dobesedno vse, kar morate storiti, če želite imeti dostop 87 00:05:09,600 --> 00:05:13,610 te posebne superglobal imenom $ _SESSION. 88 00:05:13,610 --> 00:05:17,430 To naredi vse mogoče, in bomo videli, kako se je v trenutku, ki je vse mogoče. 89 00:05:17,430 --> 00:05:20,350 V vrstici 16 obvestila, kaj delam. 90 00:05:20,350 --> 00:05:25,960 Če je ključ, ki se imenuje boj - z drugimi besedami, vrednost indeksa - "števec" 91 00:05:25,960 --> 00:05:32,310 obstaja znotraj te matrike se imenuje seji, potem, kaj delam z njim v spodnji vrstici? 92 00:05:32,310 --> 00:05:36,650 Kaj je vrstica 18 delaš? 93 00:05:36,650 --> 00:05:40,360 >> [Neslišno študentski odziv] Kaj je to? [Študent] Shranjevanje vrednosti. Dobro. 94 00:05:40,360 --> 00:05:45,800 To je shranjevanje vrednost, ki je v SESTANEK sedaj v novi lokalni začasne spremenljivke, 95 00:05:45,800 --> 00:05:48,250 $ Števec v vseh male. 96 00:05:48,250 --> 00:05:50,770 Obvestilo, da PHP se bo že malo leni tukaj. 97 00:05:50,770 --> 00:05:55,550 Obvestilo nimamo nobene omembe int ali float ali vrvico ali kaj podobnega 98 00:05:55,550 --> 00:06:00,480 ker je PHP slabo tipkajo, pri čemer vam ni treba določiti vrsto spremenljivke, 99 00:06:00,480 --> 00:06:03,310 in v tem primeru tukaj sem sploh je prijavil še. 100 00:06:03,310 --> 00:06:08,980 Jaz sem ga razglasi znotraj teh zavitih oklepajih in v nasprotju C, to je pravzaprav dobro. 101 00:06:08,980 --> 00:06:13,800 Ne glede na to, kako globoko ugnezdena z variabilno izjavo v PHP - 102 00:06:13,800 --> 00:06:16,650 znotraj oklepaja kodrasti, znotraj oklepaja kodraste in podobno - 103 00:06:16,650 --> 00:06:21,230 da bo v tistem trenutku v času, ko so za preostali del programa, 104 00:06:21,230 --> 00:06:22,680 za boljše ali slabše. 105 00:06:22,680 --> 00:06:26,930 Torej takoj postane svetovna takoj, ko jo opredeljuje kot delamo tukaj. 106 00:06:26,930 --> 00:06:31,620 >> Sicer pa, če se mi ne zdi, da je kaj v SESSION superglobal, 107 00:06:31,620 --> 00:06:34,680 Jaz sem očitno to inicializacijo spremenljivke števec na 0, 108 00:06:34,680 --> 00:06:37,580 s tem samo ob predpostavki, da si še nikoli ni bil tukaj. 109 00:06:37,580 --> 00:06:40,030 In potem je seveda povečevanje števec kako? 110 00:06:40,030 --> 00:06:44,480 Jaz sem posodabljanje vrednost, ki je znotraj te povezovalne matrike 111 00:06:44,480 --> 00:06:49,530 z določitvijo je enaka ne glede na števec trenutno + 1. 112 00:06:49,530 --> 00:06:53,520 Če bi se pomaknite tukaj za HTML strani, je pravzaprav zelo preprost. 113 00:06:53,520 --> 00:06:58,920 Vse, kar imam v telesu tej strani, "ste obiskali to stran, tako-in-tako-krat." 114 00:06:58,920 --> 00:07:00,350 In to je konstrukt PHP. 115 00:07:00,350 --> 00:07:06,080 Če boste to storili 00:07:12,600 Res je enaka ali kaj podobnega printf, ki smo jih videli že večkrat v C, 117 00:07:12,600 --> 00:07:15,940 čeprav, kot verjetno veste že od spec v pset 7, 118 00:07:15,940 --> 00:07:20,160 print je tudi funkcija, ki preprosto natisne nekaj ven, dejansko ne uporabljajo format kode 119 00:07:20,160 --> 00:07:23,270 in lahko dejansko rekli odmev, kot dobro. 120 00:07:23,270 --> 00:07:27,460 Vsi so vedno tako malo drugačna, čeprav je neto učinek na koncu enak. 121 00:07:27,460 --> 00:07:31,270 Torej, to uporabe enačaj je nekako na eleganten način za to početje 122 00:07:31,270 --> 00:07:34,910 več jedrnato, kot bi jih sicer lahko. 123 00:07:34,910 --> 00:07:38,370 Tako, da je vse to mesto ne. To natisne vrednost števca. 124 00:07:38,370 --> 00:07:40,550 Kako se je vse to dejansko dogaja? 125 00:07:40,550 --> 00:07:43,250 Morda se spomnite na teden ali tako nazaj smo začeli iskati pod pokrovom 126 00:07:43,250 --> 00:07:47,910 , kako spletna stran deluje s pomočjo tega inšpektorja kartico. 127 00:07:47,910 --> 00:07:51,900 >> Chrome je to tako v različici Mac različico operacijskega sistema Windows, Linux in celo različico, 128 00:07:51,900 --> 00:07:59,510 in Firefox in IE imata podobne mehanizme, s katerimi imate to vgrajeno v iskalnik napak 129 00:07:59,510 --> 00:08:01,400 znotraj brskalnika. 130 00:08:01,400 --> 00:08:03,040 Oglejmo si naslednje. 131 00:08:03,040 --> 00:08:06,960 Imamo cel kup kartic tukaj, in opozarjajo, da skrajno levo ena elementi, 132 00:08:06,960 --> 00:08:10,700 in ne glede na to, kako godawful HTML in JavaScript so na strani, 133 00:08:10,700 --> 00:08:15,710 opozarjajo, da s kartico Elementi lahko dejansko pluti HTML hierarhično 134 00:08:15,710 --> 00:08:17,050 ter lepo in urejeno. 135 00:08:17,050 --> 00:08:19,370 Torej, če ste poskušali naučiti iz spletne strani, kot so Google ali Facebook 136 00:08:19,370 --> 00:08:22,370 ali res vse spletne strani, spoznali, da ste verjetno bolje 137 00:08:22,370 --> 00:08:26,360 ki si ogleduje izvorne kode na ta način, v nasprotju z ogledom surovega vir, 138 00:08:26,360 --> 00:08:29,580 ki je lahko zmešnjava, kot smo videli predvsem na Googlu. 139 00:08:29,580 --> 00:08:32,220 Torej, če sem namesto kliknite na zavihek Network tukaj, 140 00:08:32,220 --> 00:08:34,830 Pa poglejmo, kaj se dogaja, ko obiščem to stran. 141 00:08:34,830 --> 00:08:38,669 Najprej naj jasno predpomnilnik. 142 00:08:38,669 --> 00:08:43,570 Jaz bom šel v nastavitve v brskalniku Chrome in pojdite na zgodovino 143 00:08:43,570 --> 00:08:46,420 in nato Počistite vse podatke brskanja. 144 00:08:46,420 --> 00:08:48,170 Ti bi se lahko uporabila za to za druge namene, [smeh] 145 00:08:48,170 --> 00:08:51,990 ampak, ko gre za razvoj spletnih strani, je dejansko koristno - 146 00:08:51,990 --> 00:08:55,980 če se smejite veš. [Smeh] 147 00:08:55,980 --> 00:08:59,310 To je pravzaprav zelo koristno pri oblikovanju spletnih strani, saj je realnost 148 00:08:59,310 --> 00:09:04,100 stvari, kot so piškotki in najdene stvari, kot so HTML datoteke, predpomnilnik datoteke JavaScript 149 00:09:04,100 --> 00:09:06,390 dejansko lahko postane velik glavobol, ker če iz kakršnega koli razloga 150 00:09:06,390 --> 00:09:11,500 brskalnik odloči, da bo nekaj predpomnilnik datoteke in še ste naredili spremembe v datoteki, na strežniku 151 00:09:11,500 --> 00:09:14,670 vendar je brskalnik ni res spoznal, da se je datoteka spremenila 152 00:09:14,670 --> 00:09:19,060 in zato dejansko ne ponovno prenesti tudi takrat, ko boste kliknili na gumb Reload 153 00:09:19,060 --> 00:09:23,210 eden od najbolj surefire načinov, da samo poskrbite, da napaka ni s kodo, 154 00:09:23,210 --> 00:09:26,480 da je z obnašanjem v brskalniku, je, da gre tukaj v vašem brskalniku 155 00:09:26,480 --> 00:09:29,950 in samo počistiti celotno zgodovino, tako da ni nejasnosti. 156 00:09:29,950 --> 00:09:33,210 >> In potem, če ste prepričani, da želite biti paranoičen, zaprite brskalnik in ga ponovno zagnati, 157 00:09:33,210 --> 00:09:35,660 in se prepričajte, da vse deluje, kot je bilo pričakovano. 158 00:09:35,660 --> 00:09:38,820 Torej na kratko, obračun predpomnilnika je dober pri tem razvoju. 159 00:09:38,820 --> 00:09:40,690 Torej, tukaj imamo zavihek Network. 160 00:09:40,690 --> 00:09:46,020 Imel sem že obiskal 9-krat, vendar naj gredo naprej in zdaj kliknite Osveži. 161 00:09:46,020 --> 00:09:47,500 In jaz sem nazaj na 0. 162 00:09:47,500 --> 00:09:52,100 Poglejmo dejansko videli, kako je, da se ta seji superglobal izvaja. 163 00:09:52,100 --> 00:09:55,990 Grem kliknite na zahtevo HTTP 1, ki je bil opravljen, 164 00:09:55,990 --> 00:09:58,810 in to mi omogoča odpravljanje napak okno poglej znotraj tega. 165 00:09:58,810 --> 00:10:01,970 Tu vidim samo odgovor od strežnika, ki ni zanimiv. 166 00:10:01,970 --> 00:10:04,030 Videl sem te v vsakem več načinov. 167 00:10:04,030 --> 00:10:06,350 Toda kaj je tehnično zanimiva so glave. 168 00:10:06,350 --> 00:10:11,770 Če bi se pomaknite dol in se osredotočiti na zahtevane naslove in kliknite pogled vira 169 00:10:11,770 --> 00:10:14,400 kaj bom videti je dobesedno zahteva HTTP 170 00:10:14,400 --> 00:10:17,250 da je šel iz mojega brskalnika v strežniku, 171 00:10:17,250 --> 00:10:21,400 GET pri čemer je ključna beseda in nato / counter.php čemer so ime datoteke, 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1 kot le različica HTTP, da moj brskalnik uporablja. 173 00:10:25,670 --> 00:10:31,070 Ta postavka tukaj je malo opozorilo od brskalnika do strežnika, kar je ime strežnika 174 00:10:31,070 --> 00:10:33,020 da želi govoriti. 175 00:10:33,020 --> 00:10:38,200 In potem ostali to je včasih zanimivo, vendar ni pomembno zdaj. 176 00:10:38,200 --> 00:10:40,090 >> To je le nekako radovednosti. 177 00:10:40,090 --> 00:10:43,530 Cryptic čeprav je ta niz je vsak čas vaš brskalnik obišče spletno stran 178 00:10:43,530 --> 00:10:47,110 je obvestil strežnik kaj brskalnik, ki ga uporabljate 179 00:10:47,110 --> 00:10:50,040 in kateri operacijski sistem, ki ga uporabljate in katero verzijo tega sklepa. 180 00:10:50,040 --> 00:10:52,650 Torej, če ste se kdaj spraševali, kako spletne strani, kot sta CNN in malenkosti 181 00:10:52,650 --> 00:10:56,860 vedo, kaj so odstotki uporabnikov Mac na spletu, PC uporabnike, 182 00:10:56,860 --> 00:11:00,820 Uporabniki IE, Chrome uporabnikov in podobno, je to zato, ker so vsi naši brskalnikov 183 00:11:00,820 --> 00:11:04,300 so povedali vse spletne strani, tam zunaj, kar smo. 184 00:11:04,300 --> 00:11:07,410 Ni nujno, da vsebujejo osebne podatke, 185 00:11:07,410 --> 00:11:13,060 vendar pa povej, kaj je tvoj strežnik IP naslov je in kaj brskalnika in operacijskega sistema, ki ga uporabljate. 186 00:11:13,060 --> 00:11:14,720 Torej, to je, če so te informacije. 187 00:11:14,720 --> 00:11:19,960 Ampak kaj je bolj zanimivo, zdaj, ko gre za te seje je odgovor glavo. 188 00:11:19,960 --> 00:11:22,530 Naj kliknite ogled vira zraven odgovora. 189 00:11:22,530 --> 00:11:24,590 Zanimivo, tukaj je nekaj stvari. 190 00:11:24,590 --> 00:11:27,580 1, smo se vrnili statusno kodo 200. 191 00:11:27,580 --> 00:11:29,840 Nikoli nismo videli to kodo stanja, saj to pomeni, da je vse v redu. 192 00:11:29,840 --> 00:11:32,920 To pomeni, da dobesedno prav v nasprotju z nečim drugim. 193 00:11:32,920 --> 00:11:36,380 Kaj je številka včasih vidimo, da je slabo? [Študent] 404. 194 00:11:36,380 --> 00:11:39,860 404, datoteke ni mogoče najti, morda 403 vas bo Spotikanju na že 195 00:11:39,860 --> 00:11:43,660 kar je prepovedano, kar pomeni, da si pozabil na nekaj, chmod, najbolj verjeten. 196 00:11:43,660 --> 00:11:45,190 In tam je kup drugih. 197 00:11:45,190 --> 00:11:47,760 >> Tukaj, to je malo noro. 198 00:11:47,760 --> 00:11:52,340 Jaz res samo napisal to sliko nekaj minutami, da ga prilepite v gedit. 199 00:11:52,340 --> 00:11:57,100 Zakaj ta stran izteče leta 1981, še preden je bil res Spletna? 200 00:11:58,010 --> 00:12:00,730 Kaj se dogaja tam? 201 00:12:00,730 --> 00:12:04,390 >> [Neslišno študentski odziv] časovni žig. Ampak zakaj? 202 00:12:06,110 --> 00:12:09,120 To je odvisno od naključja, ampak je celo uporabno. 203 00:12:09,120 --> 00:12:15,500 Kaj to je rekel, da je to moj brskalnik PHP datoteko, ki jo pravkar zahteval že potekla. 204 00:12:15,500 --> 00:12:18,580 Dejstvo je, da je iztekel pred 30 leti. 205 00:12:18,580 --> 00:12:20,260 Toda kaj to v resnici pomeni? 206 00:12:20,260 --> 00:12:22,500 To samo pomeni, da naslednjič, ko uporabnik obišče stran, 207 00:12:22,500 --> 00:12:25,540 bodisi ponovnega natovarjanja ali vnesete URL v naslovno vrstico, 208 00:12:25,540 --> 00:12:28,010 poskrbite, da greš in prinesi novo kopijo. 209 00:12:28,010 --> 00:12:30,840 To je neke vrste zgled prednjačijo predpomnilnika, 210 00:12:30,840 --> 00:12:33,790 neumna beseda, ki pomeni le poskuša odvrniti brskalnikov 211 00:12:33,790 --> 00:12:37,260 od dejansko caching HTML je bilo, da je pošiljanje s strežnika 212 00:12:37,260 --> 00:12:41,490 tako da ne boste po nesreči zadel reload in potem videli isto različico datoteke. 213 00:12:41,490 --> 00:12:43,730 Si dejansko želijo strežnik, da pošlje novo kopijo. 214 00:12:43,730 --> 00:12:47,440 Zato je dejstvo, da je 1981 pomeni le, da je tisto, kar je aparat izbiri 215 00:12:47,440 --> 00:12:50,280 kot samovoljno dan v preteklosti. 216 00:12:50,280 --> 00:12:53,380 Toda pravi sočno linija je zdaj tole. 217 00:12:53,380 --> 00:12:57,550 Že pred 50 ste verjetno vsaj bežno seznanjen s piškotki. 218 00:12:57,550 --> 00:13:01,820 Od sedaj, še posebej med tistimi, manj udobna, ali vmes, 219 00:13:01,820 --> 00:13:04,120 kaj je piškotek v vašem razumevanju zdaj 220 00:13:04,120 --> 00:13:06,980 Čeprav smo o tem, da bo vaše razumevanje bolj tehničen? 221 00:13:08,150 --> 00:13:10,070 Kaj je piškotek? Ja. 222 00:13:10,070 --> 00:13:13,890 [Študent] Informacije o uporabniku, kot če so napisali uporabniško ime ali kaj podobnega. 223 00:13:13,890 --> 00:13:17,370 >> Dobro. Te podatke o uporabniku, ali oni vnesli v svoje uporabniško ime že. 224 00:13:17,370 --> 00:13:21,190 Piškotki so način, s katerim lahko strežniki spomnim nekaj o uporabniku. 225 00:13:21,190 --> 00:13:25,810 In kaj piškotek res je besedilna datoteka ali nekaj zaporedje bajtov 226 00:13:25,810 --> 00:13:28,340 , ki je zasajena s strežnikom znotraj brskalnika, 227 00:13:28,340 --> 00:13:31,960 in znotraj te datoteke ali med tistimi bajtov je nekakšna identifikatorja. 228 00:13:31,960 --> 00:13:35,640 Mogoče je dobesedno vaše uporabniško ime, še pogosteje pa je nekaj več skrivnostnega videza 229 00:13:35,640 --> 00:13:43,700 kot je ta stvar tu - bo8dal3ct in tako naprej - je to res velik alfanumerični niz 230 00:13:43,700 --> 00:13:47,050 , ki je res samo pomeni, da je posebni identifikator za vas. 231 00:13:47,050 --> 00:13:49,790 Ali pa misliš, da je nekakšen virtualni žiga strani. 232 00:13:49,790 --> 00:13:53,020 Če greste na neki klub ali zabaviščni park, se spomnite, da ste dejansko plačana 233 00:13:53,020 --> 00:13:55,850 in odšel, zato so dal malo rdečo nalepko na roko neke vrste, 234 00:13:55,850 --> 00:13:59,270 in opozarja ljudi na pultu, ki ste jih že plačanega 235 00:13:59,270 --> 00:14:01,340 in lahko pridejo in gredo, kot vi prosim. 236 00:14:01,340 --> 00:14:04,250 Piškotki so malo pisane v duhu tega. 237 00:14:04,250 --> 00:14:08,070 Ko sem prvič obiskal to spletno stran, kot sem storil po odstranitvi predpomnilnik, 238 00:14:08,070 --> 00:14:11,620 spletni strežnik, naprava v tem primeru dal pečat na moji strani 239 00:14:11,620 --> 00:14:15,030 čigar ime je PHPSESSID, ID seje, 240 00:14:15,030 --> 00:14:18,260 katerih vrednost je to res dolgo alfanumerični niz. 241 00:14:18,260 --> 00:14:22,470 >> Tako da je zdaj nekako okrašen na roko, tako da naslednjič, ko bom zadel osvežite 242 00:14:22,470 --> 00:14:25,230 ali ročno obiščite ta spletni naslov v brskalniku 243 00:14:25,230 --> 00:14:29,230 moj brskalnik po definiciji HTTP se bo predstavil z roko žig 244 00:14:29,230 --> 00:14:31,940 spet in spet in spet. 245 00:14:31,940 --> 00:14:34,550 Torej, čeprav strežnik ne nujno vedeti, kdo sem, 246 00:14:34,550 --> 00:14:39,610 bodo vsaj vedeli, da sem jaz isti uporabnik ali vsaj natančneje, enako brskalnik. 247 00:14:39,610 --> 00:14:45,660 In tako je na koncu, kako se uresničuje seji superglobal. 248 00:14:45,660 --> 00:14:51,200 Strežnik nima pojma, kdo ste, ko boste ponovno spletno stran za drugo ali tretjo uro 249 00:14:51,200 --> 00:14:53,410 razen če predloži te roke žig. 250 00:14:53,410 --> 00:14:55,530 In takoj, ko se predloži, da se ročna žig, 251 00:14:55,530 --> 00:14:59,370 Spletni strežnik, v bistvu gre v malo bazo lastnih 252 00:14:59,370 --> 00:15:06,040 in preveri, v redu, pravkar sem videl roko žig bo8dal3ct uporabnikov in tako naprej. 253 00:15:06,040 --> 00:15:09,850 Da vidim, kaj je informacija shranjena programer 254 00:15:09,850 --> 00:15:12,380 Notranjost superglobal o tem uporabnika 255 00:15:12,380 --> 00:15:17,000 in potem mi zagotoviti, da so podatki enkrat notranjost SESTANEK superglobal 256 00:15:17,000 --> 00:15:19,830 tako da lahko programer znova dostop do teh podatkov 257 00:15:19,830 --> 00:15:23,360 tudi če je bila določena le nekaj minut ali ur nazaj. 258 00:15:23,360 --> 00:15:26,150 Torej, z drugimi besedami, piškotki, ki jih dobili na slabem glasu za nekaj časa 259 00:15:26,150 --> 00:15:29,990 Zaradi negotovosti v brskalnikih in lahko res kršijo našo zasebnost in vse to, 260 00:15:29,990 --> 00:15:31,900 jih dejansko imajo veliko korist, saj brez njih 261 00:15:31,900 --> 00:15:36,110 bi nenehno prijavi na vsaki strani, ki jih obiščete Facebook 262 00:15:36,110 --> 00:15:40,680 ali vsak Gmail e ste prebrali če brskalnik ni bilo na nek način spomina 263 00:15:40,680 --> 00:15:43,320 ki ste jih že potrjen. 264 00:15:43,320 --> 00:15:46,640 >> Torej, na ta način se piškotki poslani nazaj in naprej čez žico. 265 00:15:46,640 --> 00:15:52,470 Še ena zanimivost o piškotkih, še posebej tukaj, je, da je to povsem v obliki besedila. 266 00:15:52,470 --> 00:15:54,930 Ni šifriranje dogaja sploh, 267 00:15:54,930 --> 00:15:57,240 in res sem s pomočjo HTTP v tem trenutku. 268 00:15:57,240 --> 00:16:00,890 Eden od naših najljubših trenutkov v CS50, ki je sedaj 2 leti, 269 00:16:00,890 --> 00:16:04,750 je bilo v času, orodje, imenovano Firesheep prišel ven. 270 00:16:04,750 --> 00:16:08,320 To je brezplačno kos programske opreme, ki je bila izvedena v varnostni raziskovalec 271 00:16:08,320 --> 00:16:13,250 kot budnica za skupnost povedati, kako izvajati atrociously 272 00:16:13,250 --> 00:16:17,900 določeni mehanizmi za preverjanje pristnosti na spletu so. 273 00:16:17,900 --> 00:16:22,880 Torej že nekaj časa, Facebook je skoraj v celoti preko HTTP, HTTPS ne. 274 00:16:22,880 --> 00:16:25,640 In tudi, če nimate pojma, kako deluje kripto, S varna 275 00:16:25,640 --> 00:16:27,950 tako da to pomeni, da je vsaj nekaj šifriranje vključeni. 276 00:16:27,950 --> 00:16:30,610 Facebook pa za šifriranje uporabniških imen in gesel, 277 00:16:30,610 --> 00:16:33,560 toda kakor hitro pogledal na vaši pokes ali vaša sporočila ali vaš novice krme, 278 00:16:33,560 --> 00:16:35,360 Vse to je nekodirano. 279 00:16:35,360 --> 00:16:37,870 Tako je Gmail, dokler le leto ali 2 leti. 280 00:16:37,870 --> 00:16:41,100 Vsakič, ko se prijavili, da so uporabili varno šifriranje, 281 00:16:41,100 --> 00:16:44,300 nato pa se niso. In zakaj bi to lahko bilo? 282 00:16:44,300 --> 00:16:49,210 Zakaj ne samo uporabo kriptografije ves čas v uporabi primerih, kot je ta? 283 00:16:49,210 --> 00:16:53,700 Kaj je to? Mislim, da sem nekaj slišal. [Študent] Hitrost. 284 00:16:53,700 --> 00:16:56,250 Hitrost, kajne? Obstajajo načini, okoli tega. 285 00:16:56,250 --> 00:16:59,610 Ampak, če si nekako logično razmišljati o tem, kaj če šifriranje, 286 00:16:59,610 --> 00:17:01,820 kar morate storiti vsaj malo več dela. 287 00:17:01,820 --> 00:17:05,460 V pset 2, ko izvaja Cezarja ali Vigenere ali celo razpok, 288 00:17:05,460 --> 00:17:07,760 samo tiskanje niz je razmeroma enostavno. 289 00:17:07,760 --> 00:17:12,040 Šifriranje in nato tiskanje niz minimalno potrebno malo več dela. 290 00:17:12,040 --> 00:17:14,520 >>  Za super priljubljenih spletnih strani, kot so Google in Facebook, 291 00:17:14,520 --> 00:17:18,839 če boste morali narediti več za vsakega uporabnika, za vsako spletno stran, ki jih obiščete, 292 00:17:18,839 --> 00:17:20,520 da le traja več procesorskega časa. 293 00:17:20,520 --> 00:17:22,920 In če boste potrebovali več procesorskega časa, boste morda potrebovali več strežnikov, 294 00:17:22,920 --> 00:17:24,270 kar pomeni, da bi potrebovali več denarja. 295 00:17:24,270 --> 00:17:27,579 In tako je že vrsto let je to le res ni bilo najboljše prakse. 296 00:17:27,579 --> 00:17:31,440 Ljudje bi uporabili šifriranje SSL le, če so potrebne za. 297 00:17:31,440 --> 00:17:34,960 Toda izkazalo se je, in ker ta s kolegi Firesheep je super jasno, 298 00:17:34,960 --> 00:17:37,920 ko fantje, ki so trenutno na Facebooku zdaj - 299 00:17:37,920 --> 00:17:39,880 Iz radovednosti, da vidimo, če boš Umirite se. 300 00:17:39,880 --> 00:17:42,620 Če ste na Facebooku sedaj v neki kartici, tudi če to ni v ospredje, 301 00:17:42,620 --> 00:17:46,610 je vaš URL HTTP ali HTTPS? 302 00:17:46,610 --> 00:17:50,560 [Več] S. S študenti? [Smeh] 303 00:17:50,560 --> 00:17:55,510 Ok. Vsak HTTP? Samo 1? Ok. 304 00:17:55,510 --> 00:17:58,940 Tako lahko vsi tisti tip vdrl v Facebook račun zdaj. 305 00:17:58,940 --> 00:18:04,100 Za večino je to postalo privzeto vklopljena, vsaj v nekaterih spletnih strani. 306 00:18:04,100 --> 00:18:08,120 In Skratka, če je vaša spletna prometa ni šifrirana, 307 00:18:08,120 --> 00:18:12,960 ne samo, da HTML iti naprej in nazaj čez WiFis nešifrirani, 308 00:18:12,960 --> 00:18:16,760 tako da stvari, kot so piškotki iti naprej in nazaj po zraku 309 00:18:16,760 --> 00:18:18,940 brez kakršnega koli šifriranja. 310 00:18:18,940 --> 00:18:23,540 Torej, če imate le malo zdrava pamet programsko ali malo Googling sposobnosti 311 00:18:23,540 --> 00:18:27,410 da bi našli brezplačno programsko opremo, ki počne to, vse kar morate storiti, je sedel v Starbucks 312 00:18:27,410 --> 00:18:30,680 ali sedeti na letališču, kjer je na splošno nešifrirani WiFi 313 00:18:30,680 --> 00:18:36,070 in samo gledal za ključne besede, kot Set-Cookie: ali PHPSESSID 314 00:18:36,070 --> 00:18:39,300 ker če ste tehnično zdrava pamet, da samo gledam WiFi 315 00:18:39,300 --> 00:18:43,010 za vse bitov, da tok skozi zrak v tem vzorcu, 316 00:18:43,010 --> 00:18:50,840 potem lahko rečemo, da tip je PHPSESSID zgodi, da se bo8dal in tako naprej. 317 00:18:50,840 --> 00:18:53,890 In potem še enkrat, če ste dovolj tehnično zdrava pamet, ali imate pravo orodje, 318 00:18:53,890 --> 00:18:58,890 lahko nato preprosto preoblikovati svoje brskalnik, da začnete predstavitev, da se ročna žig 319 00:18:58,890 --> 00:19:05,030 na Facebook.com in Facebook je le, da bo Predvidevam, da ste tisti tip 320 00:19:05,030 --> 00:19:09,880 ker vsi vedo ne, kdo ste, ampak, da so to posebni identifikator. 321 00:19:09,880 --> 00:19:14,650 Torej, če kradeš, da je edinstven identifikator in ga predstaviti na spletni strežnik, kot svoje, 322 00:19:14,650 --> 00:19:16,860 so le, da bo prikazal te osebe vira novic 323 00:19:16,860 --> 00:19:18,980 ali te osebe, sporočila ali Pokes. 324 00:19:18,980 --> 00:19:23,190 >> In jaz bi Google zdaj, kako aktivirati za Facebook HTTPS mogoče. 325 00:19:23,190 --> 00:19:25,150 Ampak to je res tako enostavno, kot to. 326 00:19:25,150 --> 00:19:27,660 In tako so Facebook in Google in tako dobil res dober pri tem, 327 00:19:27,660 --> 00:19:31,870 ampak pazi toliko bolj za vse spletne strani, ki jih obiščete, ki ne uporabljajo HTTP 328 00:19:31,870 --> 00:19:35,020 in so neke vrste občutljivih informacij o njih, 329 00:19:35,020 --> 00:19:37,490 pa naj gre za finančni ali osebni ali podobno. 330 00:19:37,490 --> 00:19:43,180 Če jih ne uporabljate to zelo verjetno lahko piškotki, kot je ta zelo enostavno ukradeni 331 00:19:43,180 --> 00:19:46,270 in potem ponarejeni, in to je točno to, kar Firesheep storil. 332 00:19:46,270 --> 00:19:48,250 Nisi biti programer. 333 00:19:48,250 --> 00:19:51,680 Vse kar bi moral storiti je bilo se internetna povezava, prenesete brezplačno orodje, 334 00:19:51,680 --> 00:19:56,490 in kaj bi naredil, je, da se prijavite in potem bi vam pokazal Facebook imena 335 00:19:56,490 --> 00:20:00,170 za vse v Sandersa, v tem prikazom, okoli vas 336 00:20:00,170 --> 00:20:03,260 in vse, kar bi moral storiti je bil kliknite na svoje ime in programske opreme, avtomatizacijo procesa 337 00:20:03,260 --> 00:20:05,970 za njuhanje ta piškotek in ga predstavila na Facebooku, kot je vaša, 338 00:20:05,970 --> 00:20:07,990 in, voila, ste prijavljeni 339 00:20:07,990 --> 00:20:11,190 Torej, to je še eden od tistih "ne počni tega" uradno. 340 00:20:11,190 --> 00:20:14,660 Če imate svojo domačo mrežo in želite Lemiti z vsemi sredstvi, 341 00:20:14,660 --> 00:20:17,530 vendar to ne zavedaš, čez mejo na univerzitetnem okolju. 342 00:20:17,530 --> 00:20:20,030 >> Toda cilj tukaj je res poudariti, ne pa, kako to storiti 343 00:20:20,030 --> 00:20:22,320 ampak kako se braniti pred tovrstnimi stvarmi. 344 00:20:22,320 --> 00:20:26,180 In trivialno rešitev tukaj, čeprav je sama po sebi napačna, 345 00:20:26,180 --> 00:20:31,360 Res je, da zmanjšajo uporabo vseh območij, ki jih ne uporabljajo stalno HTTPS. 346 00:20:31,360 --> 00:20:34,520 Torej strani kot so Facebook in Google vse bolj polja 347 00:20:34,520 --> 00:20:36,200 kjer se lahko odločite za te stvari, 348 00:20:36,200 --> 00:20:40,000 in so morale banke za ta leta iz podobnih razlogov. 349 00:20:40,000 --> 00:20:43,580 Torej, samo malo v strahu faktor, če je to mogoče. Ampak to je to na kratko. 350 00:20:43,580 --> 00:20:46,420 Tako je strežnik zapomni, kdo si. 351 00:20:46,420 --> 00:20:50,760 In takoj, ko se lahko spomnite, kdo ste, lahko spomnite ničesar o tebi 352 00:20:50,760 --> 00:20:56,140 da je programer shranjeni v notranjosti te posebne superglobal pozval $ _SESSION. 353 00:20:56,140 --> 00:20:59,750 In pset 7 smo jo uporabljate le površno, da se spomnimo int, 354 00:20:59,750 --> 00:21:02,260 to je edinstven ID uporabnika, ki je prijavljen, 355 00:21:02,260 --> 00:21:05,880 tako da vemo, ste bili tam pred. 356 00:21:05,880 --> 00:21:12,450 Vsa vprašanja, nato na sejah ali piškote in podobno? 357 00:21:12,450 --> 00:21:15,130 Firesheep ne deluje več pravilno, 358 00:21:15,130 --> 00:21:18,310 in imate računalnik v posebnem promiskuitetni način 359 00:21:18,310 --> 00:21:20,700 tako da ste dejansko posluša za promet poleg sebe. 360 00:21:20,700 --> 00:21:23,940 Torej, če ste trenutno prenos Firesheep, spoznaš, da ni čisto tako preprosto 361 00:21:23,940 --> 00:21:26,850 kot je nekoč bil dokazati. 362 00:21:26,850 --> 00:21:29,070 V redu. In ne delaj v Sanders. Naredi doma. 363 00:21:29,070 --> 00:21:30,890 Baze podatkov. 364 00:21:30,890 --> 00:21:33,580 Ena od stvari, ki smo storili v pset 7 zelo premišljeno 365 00:21:33,580 --> 00:21:37,780 je smo vam mizo vzorčno zbirko podatkov za uporabnike, ki ima nekaj ID-jev uporabnikov, 366 00:21:37,780 --> 00:21:41,020 nekateri uporabniška imena, gesla in nekatere kodirane v njih. 367 00:21:41,020 --> 00:21:44,520 In kot boste videli, če tega še niste storili, boste morali spremeniti v tabeli malo. 368 00:21:44,520 --> 00:21:47,710 Vi boste morali dodati nekaj predpomnilnika za vsako od uporabnikov v tej tabeli, 369 00:21:47,710 --> 00:21:51,130 in ti boš moral dodati še eno Zgodovina mizo, mizo, portfelji 370 00:21:51,130 --> 00:21:53,310 ali morda rekli kaj drugega. 371 00:21:53,310 --> 00:21:56,740 Ampak glede na razmišljanje o tem, kako to storiti, kaj je odprla to orodje 372 00:21:56,740 --> 00:22:00,570 ki smo jo uporabili v petek, če pa ne poznajo, Aparat je opremljen z orodjem 373 00:22:00,570 --> 00:22:04,680 imenovano phpMyAdmin, ki je po naključju napisana v PHP, 374 00:22:04,680 --> 00:22:07,950 ampak je njen namen v življenju, ko sem se prijavite tukaj jharvard z škrlat, 375 00:22:07,950 --> 00:22:15,160 je, da me je uporabniku prijazen način gledanja in spreminja svoje baze podatkov. 376 00:22:15,160 --> 00:22:18,040 >> Baza podatkov, ki tečem na aparatu se imenuje MySQL. 377 00:22:18,040 --> 00:22:23,420 To je zelo priljubljen, in to brez odprtokodne podatkovne baze, ki je zelo enostaven za uporabo, 378 00:22:23,420 --> 00:22:25,620 zlasti spredaj konča takole. 379 00:22:25,620 --> 00:22:29,350 Kaj to orodje omogoča, da naredim, na primer, je suniti okrog mize. 380 00:22:29,350 --> 00:22:30,890 Naj gredo naprej in to je to. 381 00:22:30,890 --> 00:22:36,580 V petek smo ustvarili tabelo imenovano študente, da je bilo super enostavno. 382 00:22:36,580 --> 00:22:41,680 Imela je 3 stolpce - identifikacija, ime in e-pošte - in sem ročno doda nekaj vrstic 383 00:22:41,680 --> 00:22:44,420 kot David in Mike v tem konkretnem primeru. 384 00:22:44,420 --> 00:22:47,290 Vzemimo to malo dlje, in predpostavimo, da želimo, da se spomnimo več 385 00:22:47,290 --> 00:22:49,660 kot le ime in e-poštni o uporabniku. 386 00:22:49,660 --> 00:22:53,090 Naj kliknite tukaj strukture na vrhu. 387 00:22:53,090 --> 00:22:55,440 In spet, pset vas popelje skozi potrebne korake tu, 388 00:22:55,440 --> 00:22:58,150 zato ne skrbite, če nekateri to malo hitro. 389 00:22:58,150 --> 00:22:59,690 Potem bom kliknite tukaj. 390 00:22:59,690 --> 00:23:02,270 Jaz bom dodal nekaj več stolpcev po e-pošti 391 00:23:02,270 --> 00:23:04,130 ker želim dodati nekaj podobnega hiši. 392 00:23:04,130 --> 00:23:06,640 Pozabil sem zapisati študentovo hišo. 393 00:23:06,640 --> 00:23:11,400 Naj kliknite Pojdi, zdaj imamo ta obrazec, na žalost je malo širok od leve proti desni, 394 00:23:11,400 --> 00:23:13,710 ampak bom poklical po imenu te hiše na terenu, 395 00:23:13,710 --> 00:23:16,050 in potem tip sem zdaj izbrati. 396 00:23:16,050 --> 00:23:18,870 Torej imajo kratek pogovor o različnih vrstah v MySQL 397 00:23:18,870 --> 00:23:24,590 ker ker je PHP slabo tipkal in je neke vrste igra hitro in mehko z vrstami, 398 00:23:24,590 --> 00:23:29,430 v zbirki podatkov, še posebej je to super pomembno, da se dejansko uporabo tipkanje v svojo korist 399 00:23:29,430 --> 00:23:33,260 ker lahko ena od stvari, MySQL in drugih motorjev baze stori za vas 400 00:23:33,260 --> 00:23:37,910 se zagotovi, da ne boste dal lažne podatke v zbirki podatkov. 401 00:23:37,910 --> 00:23:41,850 To je neke vrste napake prosti preverjanja na voljo. 402 00:23:41,850 --> 00:23:46,250 >> Za hišo se seveda ne želimo, da bi bilo int, ki je 32-bitna vrednost v MySQL. 403 00:23:46,250 --> 00:23:49,810 Naredili smo govorili v petek na kratko o varchar, ki stoji za različno dolga char. 404 00:23:49,810 --> 00:23:54,720 Kaj je to? To vam omogoča, da določite, da želite, da je to neke vrste niz. 405 00:23:54,720 --> 00:23:56,840 Saj ni res vnaprej vedeti, kako dolgo je, 406 00:23:56,840 --> 00:24:00,100 tako da bomo poljubno rekli hiša Ime je lahko 255 znakov, 407 00:24:00,100 --> 00:24:04,190 vendar pa lahko greš s 32, 64 - poljubno število res. 408 00:24:04,190 --> 00:24:10,700 Toda prednost uporabe varchar čez polje, imenovano lastnost je, kaj? 409 00:24:10,700 --> 00:24:15,110 Samo intuitivno, če se pomaknite dol, da vidite tam znak in tam je varchar. 410 00:24:15,110 --> 00:24:19,520 Varchar je spremenljivo dolžino char, char je določena dolžina znak. 411 00:24:19,520 --> 00:24:24,730 Torej, temelji samo na tej opredelitvi, kaj je prednost ali slabost pri vsakem od njih? 412 00:24:24,730 --> 00:24:30,490 Z drugimi besedami, ki skrbi za razlikovanje, ali zakaj se to tiče? 413 00:24:31,660 --> 00:24:35,750 >> Ja. [Študent] varchar bolj prožno, vendar zavzame več prostora v pomnilniku. 414 00:24:35,750 --> 00:24:40,730 Dobro. Varchar zahteva več - Pa poglejmo. Nisem prepričan, če sem slišal prav. 415 00:24:40,730 --> 00:24:42,360 Lahko rečem, da še enkrat? 416 00:24:42,360 --> 00:24:45,850 [Študent] Rekel sem varchar ima verjetno več prožnosti, vendar je potrebno več prostora v pomnilniku. 417 00:24:45,850 --> 00:24:51,170 Zanimivo. Ok. Varchar Verjetno vam daje več fleksibilnosti, vendar zavzame več prostora v pomnilniku. 418 00:24:51,170 --> 00:24:53,220 Slednje ni nujno res. 419 00:24:53,220 --> 00:24:56,290 To je odvisno od konteksta, ampak kaj je prišel nazaj na to. 420 00:24:56,290 --> 00:25:03,230 >> [Neslišno študentski odziv] Točno tako. 421 00:25:03,230 --> 00:25:06,900 Pravzaprav je tako, da bo znak običajno porabi več pomnilnika 422 00:25:06,900 --> 00:25:10,950 ker je znak, podobno kot v C, je kot niz, je niz znakov. 423 00:25:10,950 --> 00:25:13,690 Torej, če ste recimo char polje dolžine 255, 424 00:25:13,690 --> 00:25:16,910 Podatkovna baza je dobesedno bo dal 255 znakov. 425 00:25:16,910 --> 00:25:22,290 In če je hiša konča pa Mather in 6 znakov skupaj, 426 00:25:22,290 --> 00:25:25,090 ste zapravljaš več kot 200 znakov. 427 00:25:25,090 --> 00:25:29,640 >> Torej varchar učinkovito uporablja le toliko znakov, kolikor je potrebno 428 00:25:29,640 --> 00:25:31,590 do najvišjega zneska. 429 00:25:31,590 --> 00:25:35,470 Toda cena, ki jo plačate, je dejansko uspešnost, potencialno. 430 00:25:35,470 --> 00:25:39,740 Če boste vnaprej vedeli, da so vse vaše nizov se bodo 8 znakov - 431 00:25:39,740 --> 00:25:43,090 Recimo, da potrebujete gesel dolžine 8 - 432 00:25:43,090 --> 00:25:47,350 glavo z uporabo char polje na priložnosti, vendar ne pogosto, 433 00:25:47,350 --> 00:25:51,100 je določiti fiksno dolžino za nekaj podobnega geslom 434 00:25:51,100 --> 00:25:53,300 ker zdaj lahko zbirka še pametnejši. 435 00:25:53,300 --> 00:25:58,160 Če se ve, da vsak char polje, vsak niz v koloni, je enako dolg, 436 00:25:58,160 --> 00:26:00,780 dobiš nazaj funkcijo naključnega dostopa. 437 00:26:00,780 --> 00:26:05,110 Lahko skok okoli med različnimi področji v vašem char tabelo zbirke podatkov 438 00:26:05,110 --> 00:26:07,940 ker mislim baze podatkov v vrstice in stolpce. 439 00:26:07,940 --> 00:26:11,670 Torej, če vsak od nizov je enako dolg, 440 00:26:11,670 --> 00:26:17,820 veste, da je prvi bajt je na 0, naslednje na bajt 8 441 00:26:17,820 --> 00:26:20,240 in nato 16, nato 24 in tako naprej. 442 00:26:20,240 --> 00:26:24,500 Torej, če so vse strune so enake dolžine, lahko skočite v okolici veliko bolj učinkovito. 443 00:26:24,500 --> 00:26:26,710 Torej je to lahko koristi v smislu izvedbe, 444 00:26:26,710 --> 00:26:29,420 vendar običajno nimate razkošje vedo vnaprej, 445 00:26:29,420 --> 00:26:32,170 Tako varchar je pot. 446 00:26:32,170 --> 00:26:36,030 Tu je še en detajl, da tudi Facebook naletela na koncu. 447 00:26:36,030 --> 00:26:39,670 Ints so super in mi nekako jih uporabiti privzeto kadarkoli si želimo več, 448 00:26:39,670 --> 00:26:41,750 ampak to je samo 32 bitov. 449 00:26:41,750 --> 00:26:46,210 >> In čeprav ne povsem Facebook ima 4 milijarde uporabnikov zdaj, 450 00:26:46,210 --> 00:26:48,680 tam je definitivno nekaj ljudi tam zunaj, z več računi 451 00:26:48,680 --> 00:26:50,960 ali so bili računi, ki odpre in nato zapre, 452 00:26:50,960 --> 00:26:55,130 Facebook in tako sam menim, pred nekaj leti je bilo na prehod iz int 453 00:26:55,130 --> 00:27:00,010 da, kot je aptly imenovan, bigint, ki je le 64 bitov namesto. 454 00:27:00,010 --> 00:27:02,230 Torej, tudi to je oblika odločitev. 455 00:27:02,230 --> 00:27:06,570 Saj bi bilo neverjetno srečo, če je vaš končni projekt postane zagon, 456 00:27:06,570 --> 00:27:10,010 je 4000000000 in 1 uporabniki, gor ali dol, 457 00:27:10,010 --> 00:27:13,200 v tem primeru se lahko uporabi ints je malo kratkovidno. 458 00:27:13,200 --> 00:27:16,230 Toda v resnici, tvoja uporabniki miza je verjetno v redu z ints. 459 00:27:16,230 --> 00:27:19,340 Ampak za kaj takega pset 7, na primer v zgodovini mizo, 460 00:27:19,340 --> 00:27:23,700 ste morda na tisoče, milijone uporabnikov, če se razvil v etrade.com. 461 00:27:23,700 --> 00:27:26,020 Torej, ker morda ne boste imeli več kot 4 milijarde uporabnikov, 462 00:27:26,020 --> 00:27:30,070 tiste uporabnike, imate morda več kot 4 milijarde transakcij v daljšem časovnem obdobju - 463 00:27:30,070 --> 00:27:33,200 kupuje in prodaja, in kaj v svoji zgodovini. 464 00:27:33,200 --> 00:27:38,090 Torej, če vam predvidevanje - še enkrat, to so dobri, da imajo težave, če imate to veliko podatkov - 465 00:27:38,090 --> 00:27:40,920 če ne predvidevajo podatke, ki presegajo velikost notr, 466 00:27:40,920 --> 00:27:47,740 dogaja nekaj podobnega BIGINT je smer, ne dovolj pogosto, ki ga oblikovalci 467 00:27:47,740 --> 00:27:49,710 ker ljudje podatek, da to ne bo problem, 468 00:27:49,710 --> 00:27:51,930 vendar je to težko izbrati nekaj večjega kot to. 469 00:27:51,930 --> 00:27:55,380 Decimalno smo z uporabo v pset 7, ki določa fiksno natančnost 470 00:27:55,380 --> 00:27:59,840 Tako se lahko izognete vprašanj, ki vključujejo boje in v dvojicah in reals in podobno. 471 00:27:59,840 --> 00:28:02,440 >> In potem je tu še nekaj drugih polj tukaj. Bomo mahal z rokami na njih do neke mere. 472 00:28:02,440 --> 00:28:07,270 Ampak datumi, čas imajo predpisano obliko v MySQL, 473 00:28:07,270 --> 00:28:10,830 in prednost shranjevanje datumov kot datumi in ne varchars 474 00:28:10,830 --> 00:28:15,730 pomeni, da lahko baza jih dejansko preoblikovanja v različnih oblikah, 475 00:28:15,730 --> 00:28:18,800 ali format ameriški ali evropski format ali podobno - vendar si ga želite - 476 00:28:18,800 --> 00:28:22,700 bolj učinkovito, kot če bi šlo samo nekaj splošnih varchar. 477 00:28:22,700 --> 00:28:25,150 In potem je tu še nekatere druge BINARY, VARBINARY kepe. 478 00:28:25,150 --> 00:28:28,580 To so velike binarnih predmetov, in lahko shranite tudi binarnih podatkov 479 00:28:28,580 --> 00:28:30,750 kot tudi geometrijskih podatkov v zbirki podatkov. 480 00:28:30,750 --> 00:28:34,350 Ampak za nas, bomo običajno skrbi ints in varchars in podobno. 481 00:28:34,350 --> 00:28:36,230 Končajmo to primer pri hiši. 482 00:28:36,230 --> 00:28:40,030 Hiša bom rekel samovoljno bo 255 znakov. 483 00:28:40,030 --> 00:28:42,850 Potem bi privzeta vrednost naredimo. 484 00:28:42,850 --> 00:28:47,440 Mi lahko privzeto dal vse v Mather hiši, na primer. 485 00:28:47,440 --> 00:28:49,710 Tako smo lahko določi, da je baza podatkov 486 00:28:49,710 --> 00:28:52,460 mora zagotoviti, da je nekdo vedno ima svojo vrednost. Ampak bom pustil, da bo. 487 00:28:52,460 --> 00:28:55,270 V bistvu, za ljudi, ki živijo izven kampusa, in ne v hiši, 488 00:28:55,270 --> 00:28:59,590 Mogoče sem dejansko želijo določiti, da je privzeta vrednost za hišo NULL, 489 00:28:59,590 --> 00:29:04,890 in potem moram preveriti to polje in povedal, baze podatkov je v redu, če uporabnikov hiša je NULL. 490 00:29:04,890 --> 00:29:07,270 >> Še enkrat, to je še en obrambni mehanizem, ki jih lahko vzpostavijo 491 00:29:07,270 --> 00:29:10,590 tako da vam ni treba niti da je v vašem PHP kode nujno. 492 00:29:10,590 --> 00:29:14,630 Podatkovna baza bo zagotovila, da stvari so ali niso NIČ. 493 00:29:14,630 --> 00:29:17,310 In potem končno, Lastnosti. 494 00:29:17,310 --> 00:29:18,920 Nobena od teh so res pomembne. 495 00:29:18,920 --> 00:29:22,880 Binary, nepodpisan - nobena od teh so pomembne za varchar. 496 00:29:22,880 --> 00:29:24,220 Indeks. 497 00:29:24,220 --> 00:29:27,320 Ali kdo ve, ali se spomnite, ali imate ugibati, kaj je indeks 498 00:29:27,320 --> 00:29:29,510 nekaj podobnega doma? 499 00:29:29,510 --> 00:29:35,240 Tudi to je dejansko pomembno in razmeroma enostavno oblikovanje odločitev. 500 00:29:35,240 --> 00:29:39,200 Za tiste, ki še niso videli, v petek, smo se pogovarjali o tem na kratko primarne ključe. 501 00:29:39,200 --> 00:29:43,240 V tabeli zbirke podatkov, primarni ključ polje ali stolpec 502 00:29:43,240 --> 00:29:46,270 , ki enolično določa vrstice v tabeli. 503 00:29:46,270 --> 00:29:49,150 Torej, v tej tabeli imamo ID, imamo imena in e-pošto. 504 00:29:49,150 --> 00:29:52,050 Katera od teh je najboljši kandidat za primarni ključ, 505 00:29:52,050 --> 00:29:55,810 katerih naloga je, da enolično identifikacijo vrstice? 506 00:29:55,810 --> 00:29:57,530 Verjetno ID. 507 00:29:57,530 --> 00:29:59,930 Možno je, da smo lahko uporabite tudi kaj, čeprav? 508 00:29:59,930 --> 00:30:02,860 Morda lahko uporabite e-pošto, saj v teoriji je edinstven 509 00:30:02,860 --> 00:30:05,380 če ljudje delijo e-poštnih računov. 510 00:30:05,380 --> 00:30:09,980 Ampak dejstvo je, da če boste uporabljali številski ID kot 1234, 511 00:30:09,980 --> 00:30:14,170 To je le 32 bitov, medtem ko bi lahko e-poštni naslov je to veliko bajtov ali je to veliko bajtov. 512 00:30:14,170 --> 00:30:16,610 Torej v smislu učinkovitosti za posebne identifikatorje, 513 00:30:16,610 --> 00:30:19,270 to kaže, da je dobra praksa samo za uporabo int 514 00:30:19,270 --> 00:30:23,090 tudi, če imate nekaj gesel kandidata, ki bi lahko verjetno uporabite. 515 00:30:23,090 --> 00:30:26,760 >> Za kaj takega doma, to ne bi smelo biti primarni ključ 516 00:30:26,760 --> 00:30:30,770 saj bi potem lahko samo 1 oseba, ki živi v Mather in 1 oseba Kožar in podobnega. 517 00:30:30,770 --> 00:30:32,790 Prav tako to ne bi smelo biti edinstvena. 518 00:30:32,790 --> 00:30:37,830 Razlika med primarnimi in edinstveno je, da v primeru naše trenutne tabele, 519 00:30:37,830 --> 00:30:42,620 ID bi bil primarni, vendar email ni glavni razlog za pravkar omenjeno - 520 00:30:42,620 --> 00:30:44,740 uspešnosti - vendar morajo še vedno edinstvena. 521 00:30:44,740 --> 00:30:47,200 Torej, še vedno lahko uveljavljajo edinstvenost, ne da bi zahtevek 522 00:30:47,200 --> 00:30:49,520 da je to zelo pomembno primarno polje. 523 00:30:49,520 --> 00:30:52,610 Ampak tale je zelo koristno: Indeks. 524 00:30:52,610 --> 00:30:56,180 Če veste vnaprej za vaš končni projekt za pset 7, ali na splošno, 525 00:30:56,180 --> 00:30:59,480 da je to polje hiša se bo nekaj poiščete na veliko 526 00:30:59,480 --> 00:31:01,910 z izbrano ključno besedo ali kaj drugega, 527 00:31:01,910 --> 00:31:05,180 potem lahko povem preemptively baze podatkov za delo svojo čarovnijo 528 00:31:05,180 --> 00:31:10,510 in se prepričajte, da se ustvari v spominu so mi vse potrebne podatkovne strukture 529 00:31:10,510 --> 00:31:13,770 za pospešitev iskanja, ki temeljijo na hišo. 530 00:31:13,770 --> 00:31:17,860 Mogoče se bo uporabila razpršene tabele, morda bo uporabila povezan seznam. 531 00:31:17,860 --> 00:31:21,260 V resnici, pa kaže, da uporabite drevo, pogosto strukturo, imenovano B-drevo - 532 00:31:21,260 --> 00:31:24,090 Ne binarno drevo, vendar B-drevo - kar je zelo široko drevo 533 00:31:24,090 --> 00:31:27,370 , ki jih lahko vidite v razredu, kot CS124, podatkovne strukture razreda. 534 00:31:27,370 --> 00:31:31,800 Ampak na kratko, vam ni treba skrbeti, da pri uporabi pametnih baze podatkov programske opreme. 535 00:31:31,800 --> 00:31:35,890 Lahko samo povem, "Kazalo to polje, da bom lahko poiščete na njej bolj učinkovito." 536 00:31:35,890 --> 00:31:40,250 >> Če tega dol in poskusite poiskati vse v bazi podatkov, ki prebiva v Mather, 537 00:31:40,250 --> 00:31:42,710 bo prenesejo v linearno iskanje. 538 00:31:42,710 --> 00:31:45,360 In če imaš 6000 undergrads vse, ki živijo v neki hiši, 539 00:31:45,360 --> 00:31:47,900 boš poiskati celo tabelo, da bi našli Matherites, 540 00:31:47,900 --> 00:31:52,190 ker če rečeš indeks, upam, da bo kaj blizu logaritemski iskanje 541 00:31:52,190 --> 00:31:54,510 da bi našli tiste vrste študentov. 542 00:31:54,510 --> 00:31:56,750 To je le brezplačna funkcija za vklop, 543 00:31:56,750 --> 00:31:59,530 čeprav ne prihajajo po ceni približno količino prostora. 544 00:31:59,530 --> 00:32:02,690 Končno, auto-increment to polje AI, 545 00:32:02,690 --> 00:32:05,830 kar pomeni samo, če je int in ne želite, da skrbi za prirastek sami 546 00:32:05,830 --> 00:32:07,570 vsakič, ko se je nov uporabnik, preverite, da je 547 00:32:07,570 --> 00:32:11,910 in bo vsak uporabnik, ki dobi doda samodejno dobili novo številko. 548 00:32:11,910 --> 00:32:15,620 Naj kliknite Shrani in zdaj gremo iskati napake tega modela. 549 00:32:15,620 --> 00:32:20,200 Če grem v Prebrskaj, obvešča, da je tako Mike in moja hiša NULL. 550 00:32:20,200 --> 00:32:22,420 Lahko uporabite phpMyAdmin urediti ročno. 551 00:32:22,420 --> 00:32:25,110 Lahko grem noter in tip v Mather in nato pritisnite tipko Enter, 552 00:32:25,110 --> 00:32:27,740 in zdaj opazil miza je drugačna. 553 00:32:27,740 --> 00:32:29,270 Opazil sem lahko storil kaj drugega, kot dobro. 554 00:32:29,270 --> 00:32:33,530 ID David je 1, tako da phpMyAdmin je spet samo administrativno orodje; 555 00:32:33,530 --> 00:32:35,970 To ni nekaj, kar vaši uporabniki sploh kdaj videli. 556 00:32:35,970 --> 00:32:38,810 Torej, če sem namesto kliknite jeziček SQL do vrha - 557 00:32:38,810 --> 00:32:41,450 in spet se bo pset 7 vam predstavil več takšnih vprašanj - 558 00:32:41,450 --> 00:32:45,260 Lahko ročno izvedbo SQL poizvedb ukaz strukturiran jezik 559 00:32:45,260 --> 00:32:56,410 UPDATE uporabniki SET hiša = 'Pfoho' WHERE id = 1. 560 00:32:56,410 --> 00:33:00,830 Te SQL poizvedb so lepo dovolj, precej berljiva od leve proti desni. 561 00:33:00,830 --> 00:33:04,350 Posodobiti uporabnikov tabelo, nastavite polje z imenom hišo Pfoho 562 00:33:04,350 --> 00:33:06,830 kjer uporabnika ID je 1. 563 00:33:06,830 --> 00:33:11,480 Ali sem lahko celo storiti, če email = 'malan@harvard.edu ". 564 00:33:11,480 --> 00:33:14,860 Tako dolgo, kot da me je edinstveno identificira, da bi delovala kot dobro. 565 00:33:14,860 --> 00:33:18,810 Ampak ID običajno višja zmogljivost, tako da je to naredil. 566 00:33:18,810 --> 00:33:22,950 Naj kliknite Pojdi. Ok, lecture.users ne obstaja. Kaj je moja napaka? 567 00:33:22,950 --> 00:33:26,220 Kaj je tabela dejansko klical? 568 00:33:26,220 --> 00:33:28,770 Imenuje se študentje samo zato, ker je to, kar smo naredili tu v zgornjem levem kotu. 569 00:33:28,770 --> 00:33:31,860 Imenuje se študentje, ki niso uporabniki. Torej, zdaj kliknite Pojdi. 570 00:33:31,860 --> 00:33:34,330 1 vrstica vpliva. Vprašanje je 0,01 sekunde. 571 00:33:34,330 --> 00:33:38,010 Če sem kliknite Prebrskaj zdaj, zdaj Malan življenje Pfoho. 572 00:33:38,010 --> 00:33:42,070 Torej, to je še en okus SQL, vendar pset vas bo vodil skozi več bit to. 573 00:33:42,070 --> 00:33:44,710 >> Tam je neumna odločitev sem že tukaj. 574 00:33:44,710 --> 00:33:47,820 Jaz trdim, da je to neučinkovito, načrtovanje podatkovne baze 575 00:33:47,820 --> 00:33:51,650 ker več ljudi dodam k mizi študentov, 576 00:33:51,650 --> 00:33:54,730 bolj nas začnem dodal, je več TF začnem dodal, 577 00:33:54,730 --> 00:33:58,320 bomo začeli videti, kaj presežnih delavcev v tej tabeli? 578 00:34:00,840 --> 00:34:06,020 >> Ja. [Študent] Vidim, da je pri dijakih, smo z enako [neslišno] 579 00:34:06,020 --> 00:34:07,360 Isto - Ja, točno. 580 00:34:07,360 --> 00:34:10,400 Torej, če 400 ljudi živi v Mather, gor ali dol, 581 00:34:10,400 --> 00:34:15,000 na koncu te tabele se dogaja, da imajo 400 vrstic, ki pravijo "Mather", "Mather," 582 00:34:15,000 --> 00:34:16,590 "Mather", "Mather", "Mather." 583 00:34:16,590 --> 00:34:19,820 Zapravljamo vse te bajte, pa še nekaj takeaways tam. 584 00:34:19,820 --> 00:34:23,080 1, tam je noro kotiček primeru, če bi nekdo plača veliko denarja 585 00:34:23,080 --> 00:34:25,949 in preimenuje Mather, moramo zdaj spremeniti našo celotno tabelo baze podatkov. 586 00:34:25,949 --> 00:34:29,730 To se ne bo zgodilo pogosto, čeprav je bil nekoč imenovan Pfoho North Hiša pred 15 leti, 587 00:34:29,730 --> 00:34:32,310 Tako se zgodi. Ampak to še ni vse, kar prepričljivi. 588 00:34:32,310 --> 00:34:36,000 Bolj prepričljiv kot kotno primeru, kot je primer da bi morali posodobiti podatke v razsutem stanju 589 00:34:36,000 --> 00:34:41,150 za podatkovno bazo, zakaj ste shranjevanje Mather znova in znova in znova in znova? 590 00:34:41,150 --> 00:34:43,020 To je veliko znakov, 6 znakov. 591 00:34:43,020 --> 00:34:45,500 Ne morem delamo celo bolje, kot da so zlasti za Pforzheimer? 592 00:34:45,500 --> 00:34:48,320 Zagotovo lahko storimo bolje, kot da je veliko znakov. 593 00:34:48,320 --> 00:34:51,790 Zakaj ne povezujejo z edinstveno oznako z vsako hišo 594 00:34:51,790 --> 00:34:55,020 in trgovina, ki za vsakega uporabnika? Torej, kaj je poskusiti. 595 00:34:55,020 --> 00:35:00,610 Namesto da samo uporabo študentov mizo, naj grem do mojega predavanja baze tu zgoraj levo. 596 00:35:00,610 --> 00:35:02,600 Obvestilo tukaj piše Ustvari tabelo. 597 00:35:02,600 --> 00:35:04,550 Naj ustvarite novo tabelo, imenovano hiše. 598 00:35:04,550 --> 00:35:08,880 Število stolpcev se bo 2. Enter. 599 00:35:08,880 --> 00:35:11,200 Zdaj imam 2 polj. 600 00:35:11,200 --> 00:35:14,600 Bom poklical to ime, in to se dogaja, da je varchar dolžine 255, 601 00:35:14,600 --> 00:35:18,770 >> ampak to je precej samovoljno. Naj to povem tukaj po dogovoru. 602 00:35:18,770 --> 00:35:22,840 Torej naj ID tukaj. Dajmo vsaki hiši z edinstveno oznako. 603 00:35:22,840 --> 00:35:25,360 Dajmo vsaki hiši ime. 604 00:35:25,360 --> 00:35:30,980 Naj določi, da bo identifikator nepodpisani samo po dogovoru uporabljajo le pozitivne številke. 605 00:35:30,980 --> 00:35:35,020 Gremo naprej in da to auto-prirastek polje za zdaj. 606 00:35:35,020 --> 00:35:38,160 In potrebujemo še kaj? 607 00:35:38,160 --> 00:35:41,010 Gremo naprej in kliknite Shrani. 608 00:35:41,010 --> 00:35:42,480 Zdaj imam še eno mizo. 609 00:35:42,480 --> 00:35:45,860 Obvestilo je razveljavilo to je nekoliko skrivnosten SQL ukaz 610 00:35:45,860 --> 00:35:50,280 ki bi jih morali ročno vnesti, če ne uporabljate upravno orodje, kot je phpMyAdmin. 611 00:35:50,280 --> 00:35:51,990 Torej še en razlog, da ga uporabljajo. 612 00:35:51,990 --> 00:35:55,480 To je čudovito koristno vrsta pedagoško, ker lahko kliknete okrog 613 00:35:55,480 --> 00:36:01,050 in ugotovimo, kako stvari delujejo tako, da preprosto kopiranje in lepljenje kaj phpMyAdmin storil. 614 00:36:01,050 --> 00:36:04,150 Ampak miza Ustvarjanje ukaz je, kaj se je pravkar izvaja, in tukaj je moja miza. 615 00:36:04,150 --> 00:36:11,370 Naj gredo naprej in zdaj uporabljajo surovo SQL namesto poenostavljam s klikom na zavihek Vstavljanje. 616 00:36:11,370 --> 00:36:15,040 Naj se INSERT INTO hiš, 617 00:36:15,040 --> 00:36:22,230 in bom povedal ime hiše se dogaja, da imajo vrednost "Mather". 618 00:36:22,230 --> 00:36:24,790 To je to. Ta besedna zveza je malo bolj skrivnosten. 619 00:36:24,790 --> 00:36:26,660 To je ime, od področij, ki jih želimo vstaviti. 620 00:36:26,660 --> 00:36:30,390 To so vrednote, ki jih želimo vstaviti v teh področjih. Naj kliknite Pojdi. 621 00:36:30,390 --> 00:36:34,410 1 vstavi vrstica je 0,02 sekunde. Naj zdaj kliknite Prebrskaj. 622 00:36:34,410 --> 00:36:42,020 >> Obvestilo, če sem kliknite Prebrskaj, da je Mather, ki je z avtomatizacijo ID številka 1. 623 00:36:42,020 --> 00:36:45,000 Jaz bom še enega. Naj gredo v zavihku SQL. 624 00:36:45,000 --> 00:36:52,950 INSERT INTO hiš. Ime hiše se dogaja, da imajo vrednost Pfoho in tako naprej. 625 00:36:52,950 --> 00:36:56,350 Pojdi. In jaz vztrajati početje to znova in znova in znova. 626 00:36:56,350 --> 00:36:59,470 Ali pa, če se boste naveličali uporabo phpMyAdmin, lahko preprosto uporabite kartico Vstavljanje 627 00:36:59,470 --> 00:37:01,000 in ne bo treba vnašati surovega SQL. 628 00:37:01,000 --> 00:37:04,690 Lahko samo poka hitrejšem natipkati, na primer, Kožar, Enter 629 00:37:04,690 --> 00:37:07,610 in zdaj, če kliknete Prebrskaj smo, da je Kožar z ID-jem 3. 630 00:37:07,610 --> 00:37:09,920 Torej, to je tisto, kar mislimo avtomatsko prirastek. 631 00:37:09,920 --> 00:37:12,280 Toda zdaj moramo popraviti nekaj v študente. 632 00:37:12,280 --> 00:37:16,240 V študentov, kaj naj Podatkovni tip hiše področju sedaj? 633 00:37:16,240 --> 00:37:19,450 To bi moralo biti int, kajne? 634 00:37:19,450 --> 00:37:23,950 Torej cilj tukaj je, da faktor ven, sicer znan kot normalizira, tabele 635 00:37:23,950 --> 00:37:27,940 tako, da ne shranjujejo informacije redundantly v kateri koli od mojih tabel. 636 00:37:27,940 --> 00:37:31,130 In spet je pot smo bili tu bo rekel Mather, Mather, 637 00:37:31,130 --> 00:37:34,220 Mather, Mather, Pfoho, Pfoho, Pfoho, Pfoho, ki je zelo odveč 638 00:37:34,220 --> 00:37:36,240 v smislu potratnosti od znakov. 639 00:37:36,240 --> 00:37:40,820 Torej, naj gredo naprej in spremeniti tako, da kliknete strukture, 640 00:37:40,820 --> 00:37:44,620 in mi gredo naprej in preverite off hiša polje, kliknite Spremeni 641 00:37:44,620 --> 00:37:46,990 in zdaj bom to spremenil, da je int. 642 00:37:46,990 --> 00:37:49,490 255, ni več pomembno. 643 00:37:49,490 --> 00:37:54,010 Naj gredo naprej in rekli, da je v redu, če je še vedno NULL. Shrani. 644 00:37:54,010 --> 00:37:55,870 Zdaj je miza študentov spremenila uspešno 645 00:37:55,870 --> 00:37:59,090 in opazil spet hiša je int. 646 00:37:59,090 --> 00:38:02,220 Naj omenim, da prezreti številko v oklepaju, ko gre za ints. 647 00:38:02,220 --> 00:38:03,770 >> To je za obstoječe razlogov. 648 00:38:03,770 --> 00:38:06,920 Nazaj na dan, ko nisi imel GUI, boste namesto tega imeli okolja ukazno vrstico, 649 00:38:06,920 --> 00:38:11,580 na 10 in 11 navedene koliko znakov morate Prikaži 650 00:38:11,580 --> 00:38:13,950 V terminalskem oknu dejansko prikazati polja. 651 00:38:13,950 --> 00:38:19,150 To nima nič opraviti z bitno dolžino dejanskega področju, tako da bomo šele prezreti, da za zdaj. 652 00:38:19,150 --> 00:38:20,990 Zdaj moram iti v tej tabeli. 653 00:38:20,990 --> 00:38:24,610 In če David živi v Mather, hiša ne sme biti 0, 654 00:38:24,610 --> 00:38:27,350 ki je privzeta vrednost int najbližje NULL. 655 00:38:27,350 --> 00:38:29,810 On bi moral živeti v hiši, 1. 656 00:38:29,810 --> 00:38:36,870 Naj povem, da samovoljno Mike živi v Pfoho, zato hišna številka 2. 657 00:38:36,870 --> 00:38:40,160 Zdaj je moja miza izgleda malo bolj skrivnosten. 658 00:38:40,160 --> 00:38:41,960 Toda upoštevati učinkovitost. 659 00:38:41,960 --> 00:38:44,860 Sedaj sem z uporabo samo 32 bitov za identifikacijo hišo, 660 00:38:44,860 --> 00:38:49,530 kar pomeni, da je samo 1 cerkvenih opredelitev moji hiši Mather in Pfoho 661 00:38:49,530 --> 00:38:52,090 in da je v tabeli hiš. 662 00:38:52,090 --> 00:38:55,880 Torej, če želim, da se zdaj ponoven teh tabel, mislim, da na ta način. 663 00:38:55,880 --> 00:39:01,980 Tukaj imam študentov mizo, na desni strani pa je te številke, 1 in 2. 664 00:39:01,980 --> 00:39:04,180 1 je Mather, 2 je Pfoho. 665 00:39:04,180 --> 00:39:08,580 Imamo te iste številke v tej drugi tabeli, ki se imenuje hiše, 666 00:39:08,580 --> 00:39:11,020 1 in 2 in 3, za tiste 3 hiš. 667 00:39:11,020 --> 00:39:14,990 Kaj bomo zdaj želeli storiti, je imeti sposobnost v kodi, PHP in SQL, 668 00:39:14,990 --> 00:39:18,800 razvrstiti na ponoven teh tabel, kjer, če so to študentje in to so hiše, 669 00:39:18,800 --> 00:39:22,050 želimo nekako jih združiti, da bi linije 1 z 1, 670 00:39:22,050 --> 00:39:25,670 2 vrstici z 2, in da bomo lahko ugotovili, če Davidu 671 00:39:25,670 --> 00:39:28,000 in kjer Mike in kadar vsi ostali živi. 672 00:39:28,000 --> 00:39:31,850 Če želite to narediti lahko izvrši SQL poizvedbo, kot sledi. 673 00:39:31,850 --> 00:39:40,470 SELECT * FROM dijaki JOIN hiše ON - 674 00:39:40,470 --> 00:39:43,000 In zdaj, kaj polj želimo, da se pridružijo na? 675 00:39:43,000 --> 00:39:49,520 Torej students.house = houses.id. 676 00:39:49,520 --> 00:39:54,150 >> Malo skrivnosten, vendar je ta del dobesedno pomeni ustvariti novo začasno tabelo 677 00:39:54,150 --> 00:39:56,690 To je posledica vključitve študentov in hiš. 678 00:39:56,690 --> 00:40:00,340 In kako želite združiti konice mojih prstov tukaj? 679 00:40:00,340 --> 00:40:05,280 Nastavite učencev hiša polja, ki je enaka hiš, "ID področju. 680 00:40:05,280 --> 00:40:10,220 In če sem kliknite Pojdi zdaj, sem dobil točno tisto, kar sem pričakoval. 681 00:40:10,220 --> 00:40:15,890 David je v Mather, Mike je v Pfoho, in vidim tudi edinstvene identifikatorje. 682 00:40:15,890 --> 00:40:18,640 Toda dejstvo je, zdaj imam celotno tabelo. 683 00:40:18,640 --> 00:40:23,020 In tako takeaway tukaj za pset 7, ali res za končni projekt: 684 00:40:23,020 --> 00:40:25,830 Če se vam zdi, da ste shranjevanje koli informacijo redundantly, 685 00:40:25,830 --> 00:40:28,850 pa naj bo to hiša, morda je to mesto, državo, in ZIP 686 00:40:28,850 --> 00:40:32,050 kjer ZIP ponavadi, vendar ne vedno uporablja kot posebno oznako, 687 00:40:32,050 --> 00:40:35,810 ne gredo skozi uresničevanje duševno in nato z nekaj podobnega phpMyAdmin 688 00:40:35,810 --> 00:40:40,660 faktoringa, da skupnih podatkov, saj zlasti v vašo spletno stran dobi več pa se uporablja 689 00:40:40,660 --> 00:40:45,440 in bolj priljubljena, je to, kako ste prepričani, da je vse super hitro, 690 00:40:45,440 --> 00:40:51,930 s tem, da zbirke podatkov čim več nasvetov o tem, edinstvenosti, kot je mogoče. 691 00:40:51,930 --> 00:40:53,860 To je bilo veliko. 692 00:40:53,860 --> 00:40:59,010 Kakšno vprašanje? V redu. Oglejmo 5-minutni odmor in se združil. 693 00:41:01,600 --> 00:41:03,540 V redu. 694 00:41:03,540 --> 00:41:08,680 Spodaj je primer, ki je bila uporabljena pred nekaj leti, ko sem CS161, 695 00:41:08,680 --> 00:41:10,960 ki je operacijski sistemi razreda na šoli 696 00:41:10,960 --> 00:41:15,160 , ki je znano, da se neverjetno, ampak noro količino dela, 697 00:41:15,160 --> 00:41:19,810 in se osredotoča na nekatere zelo nizko stopnjo težav, ki se pojavljajo v operacijskih sistemih 698 00:41:19,810 --> 00:41:22,700 ter tudi v svetu baz podatkov. 699 00:41:22,700 --> 00:41:27,040 >> Zgodba, ki je rekel moj profesor, Margo Seltzer, da je bilo leto, kot sledi. 700 00:41:27,040 --> 00:41:30,990 Recimo, da imate malo Dorm hladilnik za vas in vaš sostanovalec 701 00:41:30,990 --> 00:41:34,030 in oba zelo rad mleko. 702 00:41:34,030 --> 00:41:36,360 Torej, prideš domov iz razreda 1 dan, vaš sostanovalec še ni tam, 703 00:41:36,360 --> 00:41:39,650 odprete hladilnik, in se zavedaš, "Oh, vraga, mi je zmanjkalo mleka." 704 00:41:39,650 --> 00:41:42,070 Torej zapreš hladilnik, hodite čez cesto v CVS 705 00:41:42,070 --> 00:41:45,830 in se v vse bolj dolgih progah kupiti nekaj mleka v CVS. 706 00:41:45,830 --> 00:41:48,470 Medtem, tvoja cimra pride domov iz njegovega razreda, 707 00:41:48,470 --> 00:41:51,690 pride v sobo, odpre hladilnik res želi nekaj mleka, 708 00:41:51,690 --> 00:41:54,130 odpre hladilnik in "Prekleto, brez mleka." 709 00:41:54,130 --> 00:41:57,890 Torej, on ali ona zapre hladilnik, hodi ven, in gre za ŽSP 710 00:41:57,890 --> 00:42:00,910 ali nekje, razen če CVS ne boš, da udarec v drug drugega 711 00:42:00,910 --> 00:42:02,790 da pojdi malo mleka. 712 00:42:02,790 --> 00:42:04,820 Seveda je nekaj minut kasneje, oba se vrnem domov 713 00:42:04,820 --> 00:42:07,740 in zdaj imate dvakrat toliko mleka, kot ga dejansko želel. 714 00:42:07,740 --> 00:42:10,670 In ker mleko, zdaj pa bo šlo slabo, ker vam je všeč mleko 715 00:42:10,670 --> 00:42:14,200 vendar si v resnici ne kot mleko, sedaj imate preveč mleka, tako da se bo kisel. 716 00:42:14,200 --> 00:42:16,830 To je grozno, grozno situacijo. 717 00:42:16,830 --> 00:42:22,920 Kaj bi lahko rešili ta zmote, če so bili prvi cimra doma? Da. 718 00:42:22,920 --> 00:42:25,970 [Študent] Moral bi pustil sporočilo. [Smeh] 719 00:42:25,970 --> 00:42:28,090 Dobro. Moral bi pustil sporočilo. 720 00:42:28,090 --> 00:42:32,320 Morali bi postaviti Post-it seznanil ali, kot pravi, "Gone za mleko" 721 00:42:32,320 --> 00:42:36,830 in potem bi vaš sostanovalec konceptualno so bili izpasti dejansko počne. 722 00:42:36,830 --> 00:42:38,010 Ali lahko greš 1 korak naprej. 723 00:42:38,010 --> 00:42:41,060 Lahko dobesedno zaklene hladilnik z nekakšno ključavnico, 724 00:42:41,060 --> 00:42:44,870 in zdaj bo vaš sostanovalec dobesedno zaklenil iz hladilnika. 725 00:42:44,870 --> 00:42:48,520 Če se sploh vrnil k načrtovanju, 726 00:42:48,520 --> 00:42:51,610 lahko skoraj menite o hladilniku, kot neke vrste spremenljivko ali struct, 727 00:42:51,610 --> 00:42:53,500 neke vrste posode za informacije. 728 00:42:53,500 --> 00:42:58,290 Problem tu je bistveno, da so oba omogoči vpogled 729 00:42:58,290 --> 00:43:02,370 ali preberite stanje te strukture podatkov, 730 00:43:02,370 --> 00:43:08,050 vendar si ga ogledali v različnih časih in še vaju ne sprejme odločitve 731 00:43:08,050 --> 00:43:11,920 glede na stanje v svetu na teh različnih trenutkov. 732 00:43:11,920 --> 00:43:15,570 Torej si imel zaklenjeno hladilnik, bi se vsaj izogniti svojega cimra 733 00:43:15,570 --> 00:43:19,070 od ki so bili sposobni, da se preveri stanje sveta, 734 00:43:19,070 --> 00:43:22,530 tako on ali ona ne bi mogel to isto odločitev. 735 00:43:22,530 --> 00:43:25,780 Torej zbirk, saj se je izkazalo, da je to problem stalno. 736 00:43:25,780 --> 00:43:31,050 >> Bomo videli, če bomo lahko zgraditi scenarij. 737 00:43:31,050 --> 00:43:34,310 Recimo, da ste neke vrste slab človek in greš na Bank of America 738 00:43:34,310 --> 00:43:37,950 ali enega od drugih krajev na trgu, ki imajo drug par bankomatov po strani 739 00:43:37,950 --> 00:43:41,200 in nekako si pogruntal, kako dvojnik ATM kartico - ni vse tako težko. 740 00:43:41,200 --> 00:43:42,730 To je samo magnetni trak. 741 00:43:42,730 --> 00:43:45,180 In kaj si želeli poskusiti storiti, je igrati to igro 742 00:43:45,180 --> 00:43:49,060 pri čemer si dal 1 kartico v 1 stroj, drugo kartico v drugo napravo, 743 00:43:49,060 --> 00:43:51,980 in si v bistvu želim poskusiti, da dvig denarja hkrati, 744 00:43:51,980 --> 00:43:54,930 ker si predstavljam, da je zgodba gre takole. 745 00:43:54,930 --> 00:43:57,350 Stroj na levi vzame kartico in PIN, 746 00:43:57,350 --> 00:44:00,240 in potem rekel: "Daj mi 100 dolarjev." 747 00:44:00,240 --> 00:44:04,790 Bankomat je programiran tako, da najprej narediti izberite v svoji zbirki podatkov ali enakovredno - 748 00:44:04,790 --> 00:44:10,780 ne glede na to je baza podatkov z uporabo - za prikaz pa uporabnik lahko vsaj $ 100 v njegovem računu? 749 00:44:10,780 --> 00:44:16,180 Če je tako, potem pa izpljune 100 $ in 100 $ odšteje od njihove bilance. 750 00:44:16,180 --> 00:44:20,470 Ampak seveda, če obstaja več avtomati tukaj ali več načinov pregledovanja 751 00:44:20,470 --> 00:44:23,560 stanje tega sveta, banka obok, da bi videli, koliko denarja imate, 752 00:44:23,560 --> 00:44:26,780 Predvidevam, da je bil zgolj slučaj napravi na levi in ​​desni 753 00:44:26,780 --> 00:44:30,140 tako vprašal to vprašanje na približno enaki trenutku. 754 00:44:30,140 --> 00:44:34,160 >> In to zagotovo zgodilo. Bankomati so računalniki v teh dneh. 755 00:44:34,160 --> 00:44:37,670 Torej, če je naprava na levi strani piše: "Da, da imate vsaj 100 $," 756 00:44:37,670 --> 00:44:42,150 Medtem je naprava na desni strani pravi: "Da, da imate vsaj 100 $," 757 00:44:42,150 --> 00:44:47,420 Nato sta oba nadaljuje do konca svojih programov in dejansko izpljune 100 $ 758 00:44:47,420 --> 00:44:50,820 in rekel: »Prej si imel 200 $." 759 00:44:50,820 --> 00:44:54,890 "Dovolite mi, da posodobi spremenljivko sedaj 100 $ ostane na računu." 760 00:44:54,890 --> 00:44:58,780 Ampak, če sta oba preveriti stanje na računu in ugotovili, da je 200 $ 761 00:44:58,780 --> 00:45:02,000 in oba naredite matematike in povedati 200-100, 762 00:45:02,000 --> 00:45:06,990 stroji so lahko izpljunila 2 100 $ račune v vsakem stroju, 763 00:45:06,990 --> 00:45:11,360 ampak oni samo posodobili stanje kilometrov račun za 100 $. 764 00:45:11,360 --> 00:45:15,130 Z drugimi besedami, ko ste vzeli ven 200 $, ampak zato, ker so pregledale stanje na svetu 765 00:45:15,130 --> 00:45:18,840 hkrati in nato sprejeli odločitev, ki temelji na tej vrednosti, 766 00:45:18,840 --> 00:45:21,930 morda ne math končno pravilno. 767 00:45:21,930 --> 00:45:25,520 Tako na bančni položaj preveč zares želite imeti neke vrste izsekom 768 00:45:25,520 --> 00:45:28,450 tako, da takoj, ko ste pregledali stanje neke spremenljivke 769 00:45:28,450 --> 00:45:31,220 To je zelo pomembno, kot je na računu, 770 00:45:31,220 --> 00:45:36,070 Ne pustite, da bi kdo drug odločitve, ki temeljijo na tem, dokler ste končali delaš svoje stvari, 771 00:45:36,070 --> 00:45:38,920 če v tem primeru ste bankomat na levi strani. 772 00:45:38,920 --> 00:45:41,160 Zaklenite vse ostale ven. 773 00:45:41,160 --> 00:45:44,650 Lahko dejansko dosegli ta učinek v nekaj različnih načinov. 774 00:45:44,650 --> 00:45:48,660 >> Najenostavnejši način v MySQL je linija SQL, ki vam je dal 775 00:45:48,660 --> 00:45:52,030 V opredelitvi težave set, ki je videti natanko tako. 776 00:45:52,030 --> 00:45:57,420 Vstavljanje v tabelo - ne glede na to reče - id, simbol, in delež, število delnic, 777 00:45:57,420 --> 00:45:59,660 naslednje vrednosti, na primer. 778 00:45:59,660 --> 00:46:03,370 Če še niste prebrali še spec, to je primer, ki vključuje kako si šel o 779 00:46:03,370 --> 00:46:07,340 nakupom delnic 10 te peni zalogi za predsednika Skroob, 780 00:46:07,340 --> 00:46:10,340 katerih uporabniški ID zgodi, da bo številka 7? 781 00:46:10,340 --> 00:46:14,070 Ta pravi, da INSERT INTO mizo naslednji id, simbol in število delnic 782 00:46:14,070 --> 00:46:18,200 z dne 7. "DVN.V" in 10. 783 00:46:18,200 --> 00:46:21,510 Ampak - ampak, ampak, ampak - v drugi vrsti je pomembna. 784 00:46:21,510 --> 00:46:26,310 O dveh izvodih KLJUČNIH UPDATE delnic = delnice + VALUES (delnice). 785 00:46:26,310 --> 00:46:28,350 Torej, popolnoma skrit, ki si na prvi pogled. 786 00:46:28,350 --> 00:46:31,990 Toda dejstvo, da se ta poizvedba SQL, čeprav se prelomi na 2 progah, 787 00:46:31,990 --> 00:46:35,920 1 dolg je izraz, to pomeni, da je atomska 788 00:46:35,920 --> 00:46:41,000 v smislu, da se bo to vprašanje ali se izvajajo skupaj ali pa sploh ne. 789 00:46:41,000 --> 00:46:45,100 In po definiciji MySQL, to je, kako izvajati to vprašanje. 790 00:46:45,100 --> 00:46:51,010 To je po definiciji v priročniku jamči za izvršitev naenkrat ali pa sploh ne. 791 00:46:51,010 --> 00:46:54,020 Motivacija za to je, kot sledi. 792 00:46:54,020 --> 00:46:58,540 Če v tem primeru poskušate za nakup 10 delnic zalog, 793 00:46:58,540 --> 00:47:02,260 to je nekako isto zgodbo kot mleko, to je nekako isto zgodbo kot ATM. 794 00:47:02,260 --> 00:47:04,970 >> Če naredite napako, ker ne uporabljajo to sintakso 795 00:47:04,970 --> 00:47:09,610 temveč izbor iz zbirke podatkov za prikaz, koliko delnic tega peni parka 796 00:47:09,610 --> 00:47:13,750 Predsednik ne Skroob imajo, in domnevam, da ima 10 delnic, 797 00:47:13,750 --> 00:47:19,330 in še nekaj delček sekunde kasneje pa naredite nekaj za posodabljanje izjavo, 798 00:47:19,330 --> 00:47:24,810 kar je še ena izjava, ki pravi, da v SQL iti naprej in dodati še 10 delnic 799 00:47:24,810 --> 00:47:28,700 glede na svojo trenutno 10, tako da v najboljšem primeru skupaj jih je 20, 800 00:47:28,700 --> 00:47:33,490 Problem je, ker v današnjih sistemov baz podatkov in zato, ker v današnjih računalnikih 801 00:47:33,490 --> 00:47:35,990 imate več procesorjev, več jeder - 802 00:47:35,990 --> 00:47:38,920 Z drugimi besedami, lahko računalniki dobesedno delaš več stvari hkrati - 803 00:47:38,920 --> 00:47:44,270 ni zagotovila, da se vaša SELECT in posodabljanja v tem primeru 804 00:47:44,270 --> 00:47:46,150 se bo zgodilo na hrbtni strani. 805 00:47:46,150 --> 00:47:49,140 Zato bi bilo slabo, scenarij ti SELECT 806 00:47:49,140 --> 00:47:51,670 da vidim, koliko delnic tega staleža peni ne Skroob imajo 807 00:47:51,670 --> 00:47:54,710 in potem samo po naključju, se izvede drugo poizvedb - 808 00:47:54,710 --> 00:47:57,740 Mogoče njegova Skroob v drugem oknu brskalnika poskuša kupiti 10 delnic 809 00:47:57,740 --> 00:48:00,700 v drugem oknu skupaj, podobno kot ATM - 810 00:48:00,700 --> 00:48:05,410 in predvidevam, da je ena poizvedba v dobi med SELECT in posodobiti. 811 00:48:05,410 --> 00:48:10,210 To bi se lahko zgodilo, da Skroob zdaj izgubila nekaj več delnic 812 00:48:10,210 --> 00:48:14,340 ker je drug proces je preveriti stanje svojega sveta, 813 00:48:14,340 --> 00:48:17,800 ali bo dobil več delnic, kot bi ga morali. 814 00:48:17,800 --> 00:48:23,250 Ne bom se spuščal v podrobnosti o točno tisto, kar bi te posebne linije zgodba je, 815 00:48:23,250 --> 00:48:28,380 ampak dejstvo je, če imate, da preverite spremenljivke vrednost in nato odločitev, 816 00:48:28,380 --> 00:48:32,500 če obstaja nevarnost, nekdo počne nekaj med tema 2 izkazih, 817 00:48:32,500 --> 00:48:36,220 kot se lahko zgodi v sistemih z več v večjedrnih sistemov, 818 00:48:36,220 --> 00:48:41,220 računalniki, ki so sposobni narediti več stvari hkrati, lahko slabe stvari se dogajajo 819 00:48:41,220 --> 00:48:44,530 kot so bančni računi nepravilno obremenjen, nakup dvakrat toliko mleka, 820 00:48:44,530 --> 00:48:46,730 ali v tem primeru napačno število delnic. 821 00:48:46,730 --> 00:48:48,370 Ampak obstaja lažji način, da razmišljajo o tem. 822 00:48:48,370 --> 00:48:53,290 >> Izkazalo se je, da je SQL podpira tudi v primeru, da nastavite tabelo pravilno, 823 00:48:53,290 --> 00:48:56,920 nekaj, kar ti posli, ki bi lahko dejali, je v resnici še lažje razumeti 824 00:48:56,920 --> 00:49:00,650 kot to, vendar to ni 1-linijski, tako da je pravzaprav malo bolj vključeni. 825 00:49:00,650 --> 00:49:04,960 Obstaja dobesedno izjavo v SQL imenuje START posla. 826 00:49:04,960 --> 00:49:08,300 Tako kot obstaja SELECT, UPDATE, INSERT, DELETE, in se pridružijo in kup drugih, 827 00:49:08,300 --> 00:49:10,970 so ključne besede, kot TRANSAKCIJE START. 828 00:49:10,970 --> 00:49:13,560 In kaj si potem naredil v okviru pset 7 - 829 00:49:13,560 --> 00:49:17,270 vam ni treba, da to stori pset 7, to je izrecno zavrnjeni kot ni nujno, 830 00:49:17,270 --> 00:49:18,830 ampak za končnih projektov je lahko koristna - 831 00:49:18,830 --> 00:49:22,820 če pokličete poizvedbo posla Start in nato še poizvedbe 832 00:49:22,820 --> 00:49:25,620 , nato pa še poizvedbo, nato pa še, še, in še, 833 00:49:25,620 --> 00:49:31,860 ta vprašanja ne bodo dejansko izvajajo, dokler ne pokličete stavek SQL COMMIT 834 00:49:31,860 --> 00:49:37,220 na kateri točki se, ali je to 2 izjave ali izjave 20, bodo vsi lahko izvede enkrat 835 00:49:37,220 --> 00:49:42,770 kar pomeni, da nihče drug ne more po nesreči kupil preveč mleka ali debetne preveč denarja 836 00:49:42,770 --> 00:49:46,340 ali kupiti delnice preveč, saj bo vse vaše poizvedbe izvede 837 00:49:46,340 --> 00:49:48,410 back to back to back to back. 838 00:49:48,410 --> 00:49:51,580 In to je super pomembno, še posebej, če delaš kaj takega. 839 00:49:51,580 --> 00:49:54,900 To je samovoljno primer, ki pravi, lets 'posodobitev bančnega računa 840 00:49:54,900 --> 00:50:00,200 z vzpostavitvijo ravnovesja v višini razlike - 1.000 $, kjer je račun številka 2. 841 00:50:00,200 --> 00:50:04,260 In potem druga izjava se deponira zdaj pa, da je 1000 $ 842 00:50:04,260 --> 00:50:07,310 v nekoga drugega bančnega računa, katerega številko računa je 1. 843 00:50:07,310 --> 00:50:10,400 >> Z drugimi besedami, je to odličen primer, če želite, da se prepričajte, 844 00:50:10,400 --> 00:50:13,590 da sta od teh izjav zgodi, ali pa sploh ne 845 00:50:13,590 --> 00:50:15,450 ker drugače se bo kupec dobil zajebali 846 00:50:15,450 --> 00:50:17,670 in boš lahko svoj denar in ne deponira drugje, 847 00:50:17,670 --> 00:50:20,470 ali je banka bo dobil zajebali, kjer boste za deponiranje denarja 848 00:50:20,470 --> 00:50:23,140 vendar dejansko ne odšteje od računa uporabnika. 849 00:50:23,140 --> 00:50:25,810 Torej hočeš, oba izvesti skupaj. 850 00:50:25,810 --> 00:50:29,140 Tako vstopi v svet poslov. 851 00:50:29,140 --> 00:50:31,360 Torej, to je nekaj, da v ozadju vašega uma, 852 00:50:31,360 --> 00:50:34,710 ne toliko za samo končni projekt, 853 00:50:34,710 --> 00:50:36,700 Če pa želite, da vaš končni projekt nekje, 854 00:50:36,700 --> 00:50:39,040 če želijo ustanoviti podjetje, nekaj okoli njega, 855 00:50:39,040 --> 00:50:41,270 Če želite rešiti nekatere težave v skupini študentov na kampusu 856 00:50:41,270 --> 00:50:45,210 in dejansko so v živo, aktivno spletno stran, to so neke vrste subtilnih napak, ki lahko nastanejo 857 00:50:45,210 --> 00:50:49,480 če ne povsem premisli kaj lahko zgodi, če 2 osebi 858 00:50:49,480 --> 00:50:54,190 Poskušate dostopati do vaše spletne strani na dobesedno v istem trenutku, 859 00:50:54,190 --> 00:50:56,890 po kateri se lahko njihove poizvedbe drugače se prepletajo. 860 00:50:58,840 --> 00:51:01,420 >> Pripravljen za nekatere JavaScript, teaser Pogodbe? 861 00:51:01,420 --> 00:51:04,320 To je naša zadnja jezik za polovico. V redu. 862 00:51:04,320 --> 00:51:09,940 K sreči, JavaScript izgleda zelo, zelo, zelo podobni 2 jezikih, C in PHP, 863 00:51:09,940 --> 00:51:11,140 smo naredili doslej. 864 00:51:11,140 --> 00:51:14,340 Ni JavaScript v pset 7, vendar je zelo uporabno orodje 865 00:51:14,340 --> 00:51:18,840 ko gre za početje na spletu temelječih končnih projektov ali res samo spletno programiranje bolj na splošno. 866 00:51:18,840 --> 00:51:20,950 Tako hiter pregled nekaj, kar ti DOM. 867 00:51:20,950 --> 00:51:23,600 Tukaj je super enostavno spletno stran, ki res samo pozdravi, svet 868 00:51:23,600 --> 00:51:25,970 tako v naslovu in telesu. 869 00:51:25,970 --> 00:51:29,270 Kot kaže, je zamik za nekaj časa, 870 00:51:29,270 --> 00:51:31,380 dejansko obstaja hierarhija na spletnih straneh. 871 00:51:31,380 --> 00:51:34,220 Jaz bi lahko s to isto odrezek HTML kot drevo, 872 00:51:34,220 --> 00:51:37,470 razmišljanje nazaj na naših razpravah podatkovne strukture v C, kot sledi. 873 00:51:37,470 --> 00:51:40,710 Imam nekaj posebnega skrbnika vozlišče, imenovano dokument vozlišče, 874 00:51:40,710 --> 00:51:43,650 in bomo videli analogno o tem v JavaScriptu v trenutku. 875 00:51:43,650 --> 00:51:48,330 Prvi otrok in edini otrok, ki v tem primeru je oznaka HTML. 876 00:51:48,330 --> 00:51:49,880 Ni neposrednih kartiranje DocType. 877 00:51:49,880 --> 00:51:53,170 To je posebna stvar, zato bi šele prezreti, ko gre za te DOM, 878 00:51:53,170 --> 00:51:55,810 Ta dokument Object Model drevo. 879 00:51:55,810 --> 00:51:59,530 Obvestilo, da je oznaka HTML, ki sem jih prikazuje poljubno kot pravokotnik, 880 00:51:59,530 --> 00:52:02,890 Ima 2 otroka: glavo in telo. 881 00:52:02,890 --> 00:52:04,840 >> Tisti, ki so podobno sestavljen kot pravokotnike. 882 00:52:04,840 --> 00:52:08,970 Zato je pomembno, da slikovno glava je na levi strani telesa. 883 00:52:08,970 --> 00:52:11,960 Pomeni, da glava pride prvi na drevesu. 884 00:52:11,960 --> 00:52:14,910 Torej je dejansko naročanje na drevo, ko jo pripravi kot je ta, 885 00:52:14,910 --> 00:52:17,460 čeprav so oblike in malenkosti so poljubne. 886 00:52:17,460 --> 00:52:20,360 Vodja medtem ima enega otroka, imenovano naslov, 887 00:52:20,360 --> 00:52:25,170 in naziv dejansko ima svojega otroka, ki je "Pozdravljen svet", 888 00:52:25,170 --> 00:52:32,210 ki sem namenoma pripravila kot elipsi tukaj, da bi se nekoliko razlikuje od pravokotnika. 889 00:52:32,210 --> 00:52:37,420 Ta območja so elementi, ker je zdravo, svet je res besedilo vozlišče. 890 00:52:37,420 --> 00:52:39,850 Torej, to je vozlišče v drevesu, ampak to je drugačna vrsta vozlišča 891 00:52:39,850 --> 00:52:41,730 zato sem ga narisal samovoljno drugače. 892 00:52:41,730 --> 00:52:45,000 Podobno se telo ima otroka z imenom Zdravo, svet, kot tudi, 893 00:52:45,000 --> 00:52:47,910 tako različna vozlišča, čeprav so si po naključju enako besedilo, 894 00:52:47,910 --> 00:52:52,100 vendar sem ga sestavi z isto obliko. Torej, koga briga? 895 00:52:52,100 --> 00:52:56,820 No, kaj je lepo, o HTML, da pa je vseeno to hierarhično naravo. 896 00:52:56,820 --> 00:53:01,010 In kaj je lepo o JavaScriptu, in zlasti knjižnic, ki so na voljo 897 00:53:01,010 --> 00:53:07,120 in priljubljena, kot so jQuery, se lahko pomikate drevesno strukturo tako neverjetno preprosto. 898 00:53:07,120 --> 00:53:11,790 Vsak od stvari smo naredili v C s kazalci in vozijo dreves in rekurzivnem na vozliščih 899 00:53:11,790 --> 00:53:15,300 levo otrok na desni otroka, naenkrat lahko nekako samoumevno 900 00:53:15,300 --> 00:53:19,450 kot neverjetno prosveti, če ne bit frustrirajuće 901 00:53:19,450 --> 00:53:22,470 vendar še zdaleč ne učinkovit način, da gredo o programiranju. 902 00:53:22,470 --> 00:53:24,470 In tako pri višjih programskih jezikov, kot so JavaScript 903 00:53:24,470 --> 00:53:28,340 bomo mogli pluti to drevo veliko bolj intuitivno. 904 00:53:28,340 --> 00:53:30,430 >> In res sintaksa se bo dobro poznala. 905 00:53:30,430 --> 00:53:32,950 Če še niste videli, JavaScript prej, to je res lepo reference 906 00:53:32,950 --> 00:53:35,910 Iz Mozilla ljudje, ljudje, ki bi Firefox, 907 00:53:35,910 --> 00:53:38,370 zato vas prosimo, da pregledate, da na vaše udobje. 908 00:53:38,370 --> 00:53:41,590 Kaj boste našli - in ti preparati so enaki, kar smo drugi dan - 909 00:53:41,590 --> 00:53:44,030 prav tako ni več glavni. 910 00:53:44,030 --> 00:53:47,010 Torej, ko ste napisati program v JavaScriptu, ni glavna funkcija. 911 00:53:47,010 --> 00:53:48,690 Pravkar ste začeli pisati kodo. 912 00:53:48,690 --> 00:53:51,660 Toda ključna razlika med JavaScript in C in PHP 913 00:53:51,660 --> 00:53:55,890 je, da medtem C in PHP so bili doslej izvedena strani strežnika 914 00:53:55,890 --> 00:53:59,180 ga aparata je v tem primeru, ali bolj na splošno na strežniku, 915 00:53:59,180 --> 00:54:04,270 Javascript by design je običajno izvajajo z brskalnikom. 916 00:54:04,270 --> 00:54:08,440 Z drugimi besedami, lahko pišete JavaScript kodo, kot sva kmalu, 917 00:54:08,440 --> 00:54:13,080 na strežniku v aparatu, ampak ga vključuje med HTML, CSS, med svojim, 918 00:54:13,080 --> 00:54:16,100 med vašimi GIF in vaše PNGs in vaše JPEGs 919 00:54:16,100 --> 00:54:19,170 tako da, ko uporabnik obišče vašo spletno stran, če uporabljate JavaScript, 920 00:54:19,170 --> 00:54:21,770 kode JavaScript, ki prihaja iz strežnika v brskalniku 921 00:54:21,770 --> 00:54:24,540 in to je brskalnik, ki ga dejansko izvaja. 922 00:54:24,540 --> 00:54:27,960 Torej, to je smiselno posledice za celo intelektualne lastnine. 923 00:54:27,960 --> 00:54:32,600 To je nekako neumno, da niti razmišljati o zaščiti vaš IP naslov, ko gre za JavaScript kodo 924 00:54:32,600 --> 00:54:37,560 ker po naravi jezik postane to običajno izvajajo brskalnika strani. 925 00:54:37,560 --> 00:54:40,360 >> Lahko ga Pomutiti, kar pomeni, da lahko bi bilo videti noro in grda 926 00:54:40,360 --> 00:54:45,400 brez presledkov, grozne imeni spremenljivk, da bi bilo težje za ljudi, za krajo intelektualne lastnine, 927 00:54:45,400 --> 00:54:48,120 ampak ključno je, da se izvede brskalnika strani. 928 00:54:48,120 --> 00:54:51,790 Čeprav kot prahi se lahko uporablja Javascript strežniški strani, 929 00:54:51,790 --> 00:54:54,480 najpogostejši primer uporabe zdaj še v brskalniku. 930 00:54:54,480 --> 00:54:59,800 In tukaj je, kako izgleda. Tukaj je po-if-drug konstrukt, tako kot C, tako kot PHP. 931 00:54:59,800 --> 00:55:02,420 Tukaj je Logični izraz, ko "ali" 2 stvari skupaj. 932 00:55:02,420 --> 00:55:04,330 Tukaj je, ko "in" 2 stvari skupaj. 933 00:55:04,330 --> 00:55:08,300 Tukaj je stikalo za izjavo, ki je podobna PHP 934 00:55:08,300 --> 00:55:10,810 v tem, da lahko preklopite na različne vrste vrednosti. 935 00:55:10,810 --> 00:55:15,180 Loops podobno lahko for zanke tukaj, ki so enako strukturirani tako, da tisto, kar smo videli doslej. 936 00:55:15,180 --> 00:55:18,110 Medtem ko zanke, kar imamo, medtem ko je zank. 937 00:55:18,110 --> 00:55:20,290 Spremenljivke, kdaj tako nekoliko drugačna. 938 00:55:20,290 --> 00:55:24,560 Saj ugotovi, spremenljivke, kot si ti v PHP in C, 939 00:55:24,560 --> 00:55:27,860 vendar je prav tako šibko vnesli JavaScript. 940 00:55:27,860 --> 00:55:32,730 Vi ne določajo, int ali float ali niz ali kaj podobnega, ki ponavadi. 941 00:55:32,730 --> 00:55:34,240 Določite lahko var. 942 00:55:34,240 --> 00:55:38,040 Saj ni treba navesti var, vendar pa ima posledice, če ne boš. 943 00:55:38,040 --> 00:55:42,000 Ponavadi, če izpustite var, pomotoma ustvariti globalno spremenljivko namesto na lokalni ravni. 944 00:55:42,000 --> 00:55:46,420 Torej, kaj mi predlaga, da se skoraj vedno samo rečem var in nato ime spremenljivke. 945 00:55:46,420 --> 00:55:48,740 To ni tip, to je samo za var spremenljivko. 946 00:55:48,740 --> 00:55:52,930 To bi bilo na primer, ali je to 123 ali "Zdravo, svet". 947 00:55:52,930 --> 00:55:58,910 Polja so prisotne in sintaktično podobna PHP. 948 00:55:58,910 --> 00:56:03,690 Jaz bom rekel var številk in potem uporabite oglate oklepaje ponovno prijaviti spremenljivko 949 00:56:03,690 --> 00:56:08,870 katerih tip je matrika, ki ima te posebne številke v njej ločene z vejicami. 950 00:56:08,870 --> 00:56:11,740 In potem končno, to je edini, ki res izgleda drugače. 951 00:56:11,740 --> 00:56:16,700 Spomnimo se, da bi v PHP, ki smo jih implementirali asociativni niz za študenta 952 00:56:16,700 --> 00:56:20,220 Zamyla kot da bi izgledala takole, če je spremenljivka imenovan učenec. 953 00:56:20,220 --> 00:56:23,370 Oklepaju pomeni, prihaja niz. 954 00:56:23,370 --> 00:56:28,500 >> Dejstvo, da sem ne uporabljate številske indeksov, ampak strune - id, house, in ime - 955 00:56:28,500 --> 00:56:30,990 pomeni, da je to asociativni array, 956 00:56:30,990 --> 00:56:34,490 in te puščice z enačajem in kotni nosilec 957 00:56:34,490 --> 00:56:37,310 pomeni, da je ključ "id", vrednost 1; 958 00:56:37,310 --> 00:56:39,310 Ključ je "hiša" je vrednost Winthrop House; 959 00:56:39,310 --> 00:56:41,800 Ključ je "ime", je vrednost Zamyla Chan. 960 00:56:41,800 --> 00:56:47,110 Torej je 3 tipke v notranjosti te povezovalne matrike, od katerih vsak ima svojo vrednost. 961 00:56:47,110 --> 00:56:52,880 Videli smo, da je v pset 7, ali pa takoj, ko se bo v isti ideji JavaScript, 962 00:56:52,880 --> 00:56:55,220 ampak to bo videti takole. 963 00:56:55,220 --> 00:57:00,070 Torej var študent - ni znak za dolar in ne omenja, vendar še vrsto var - 964 00:57:00,070 --> 00:57:05,860 enaka in odprite zavitih oklepajih, ker v JavaScript, če imate parov ključev vrednost, 965 00:57:05,860 --> 00:57:08,900 boste dejansko uporabili nekaj, kar ti predmet. 966 00:57:08,900 --> 00:57:13,490 In morda tiste, ki si lahko APCS ali podobno, opozarjajo predmetov iz Java 967 00:57:13,490 --> 00:57:15,140 ali podobne jezike. 968 00:57:15,140 --> 00:57:17,880 JavaScript ni Java, najprej. 969 00:57:17,880 --> 00:57:21,600 Bilo je namerna odločitev leti nazaj oblikovanje knock off nekaj drugega, ki je bil priljubljen, 970 00:57:21,600 --> 00:57:25,640 njegovo ime, čeprav nima zveze bistveno, da se Java. 971 00:57:25,640 --> 00:57:31,490 Javascript mora predmetov in jih ustvarite s pomočjo za zapis oklepaja kodrasti. 972 00:57:31,490 --> 00:57:36,710 Skupaj objektov v JavaScriptu so precej enakovredne združevanja v PHP nizi 973 00:57:36,710 --> 00:57:40,030 ko gre za shranjevanje podatkov znotraj njih. 974 00:57:40,030 --> 00:57:44,100 >> Ampak še močneje v JavaScriptu lahko povežete zlahka funkcije 975 00:57:44,100 --> 00:57:48,040 znotraj objekta, in čeprav lahko to storite tudi v drugih jezikih, 976 00:57:48,040 --> 00:57:50,040 to je precej pogost vzorec, kot bomo videli. 977 00:57:50,040 --> 00:57:54,380 Skratka, ta predmet predstavlja študenta, ki je še posebej Zamyla, 978 00:57:54,380 --> 00:58:00,380 in to je podobno pojmovno, samo sintaktično drugačen od tega. 979 00:58:00,380 --> 00:58:03,840 Naj se dejansko uporabljajo JavaScript v datoteki. 980 00:58:03,840 --> 00:58:05,570 Izkazalo se je, da je scenarij tag. 981 00:58:05,570 --> 00:58:08,180 Videli smo slogovno oznako, in smo videli tudi druge oznake HTML. 982 00:58:08,180 --> 00:58:11,510 Skript tag bo dejansko vsebuje nekaj kode JavaScript. 983 00:58:11,510 --> 00:58:15,500 Naj gredo v napravo, kjer imamo nekaj izvorne kode preveri napredek. 984 00:58:15,500 --> 00:58:18,700 Nisem je objavljen na spletni strani, ampak bom naredil, da po pouku. 985 00:58:18,700 --> 00:58:21,770 Odprimo to eno, blink.html. 986 00:58:21,770 --> 00:58:27,560 Nazaj v 1990-ih, se je dobesedno oznaka HTML besedilu utripa tag, 987 00:58:27,560 --> 00:58:30,340 in to je bil eden od najbolj čudovito overused oznake na internetu 988 00:58:30,340 --> 00:58:36,140 , s katerim želite obiskati nekaj 1990 stran slog spletu in boste lahko videli besedilo, vam utripa, kot je ta, 989 00:58:36,140 --> 00:58:39,810 rezultati Marquis oznako, ki je besedilo gre takole. 990 00:58:39,810 --> 00:58:45,070 Eden izmed redkih trenutkov, ko je svet dejansko dogovoril o spletni standard, 991 00:58:45,070 --> 00:58:48,250 vsi čez krov ubil utripanja oznako izpred nekaj let. 992 00:58:48,250 --> 00:58:52,860 Lahko pa ga oživljati z JavaScriptom kot dokaz moči imate 993 00:58:52,860 --> 00:58:56,660 če lahko napišete program znotraj spletne strani. 994 00:58:56,660 --> 00:59:00,240 Najprej gremo preskočimo nove stvari in se osredotočite le na staro. 995 00:59:00,240 --> 00:59:01,780 >> Tukaj je stara stvar v tem primeru. 996 00:59:01,780 --> 00:59:06,350 Imam oznako HTML, glavo tag in naslovno tablico. 997 00:59:06,350 --> 00:59:11,210 Potem sem imel telesne oznako tukaj z div, ki odpoklic je le pravokotne delitev stran 998 00:59:11,210 --> 00:59:14,720 , ki sem jih dal edinstven ID samovoljno za "pozdrav", da, 999 00:59:14,720 --> 00:59:18,320 samo zato, da imam edinstveno način se nanaša na to, da je nekaj zelo preprostega besedila: 1000 00:59:18,320 --> 00:59:20,220 Zdravo, svet. 1001 00:59:20,220 --> 00:59:23,940 Zdaj pa me poiščite na vrh te datoteke in videti, kaj je novega. 1002 00:59:23,940 --> 00:59:27,710 Prva stvar, ki je novo, top je script tag, 1003 00:59:27,710 --> 00:59:31,280 in znotraj obvestila script tag sem razglasil funkcijo. 1004 00:59:31,280 --> 00:59:34,610 Za prijavo funkcijo v javascript, precej podobno PHP, 1005 00:59:34,610 --> 00:59:37,930 dobesedno napisati funkcijo, potem pa ime funkcije, oklepaji, 1006 00:59:37,930 --> 00:59:40,400 in morda nekaj argumentov, če se sploh. 1007 00:59:40,400 --> 00:59:43,510 Potem pa sem dobil opornico kodrasti kot običajno, in zdaj imamo nekaj nekoliko novo kodo, 1008 00:59:43,510 --> 00:59:45,230 pa poglejmo, kaj to pomeni. 1009 00:59:45,230 --> 00:59:48,670 Torej var div, to samo pomeni, da mi spremenljivo ti div. 1010 00:59:48,670 --> 00:59:50,530 Lahko bi ga imenovali foo, vendar sem želel, da se imenuje div 1011 00:59:50,530 --> 00:59:52,620 zaradi razlogov, ki bodo jasno sekundo. 1012 00:59:52,620 --> 00:59:57,480 Potem se je izkazalo v JavaScript - in to je JavaScript kodo vgrajeni v moji spletni strani - 1013 00:59:57,480 --> 01:00:01,760 obstaja posebna globalna spremenljivka sort, imenovanih dokument. 1014 01:00:01,760 --> 01:00:04,780 JavaScript je dejansko objektno usmerjen jezik. 1015 01:00:04,780 --> 01:00:07,230 Mi ne bo šel v podrobnosti pri 50, kaj to pomeni, 1016 01:00:07,230 --> 01:00:11,180 vendar za zdaj vemo, da je objekt precej kot struct. 1017 01:00:11,180 --> 01:00:14,740 Kot smo videli, daleč nazaj, ko se v eni izmed prvih problema postavlja 1018 01:00:14,740 --> 01:00:17,150 kjer smo pripravili veliko informacij v struct, 1019 01:00:17,150 --> 01:00:21,330 Podobno se dokumentira posebno struct, ki prihaja z brskalnikom, 1020 01:00:21,330 --> 01:00:24,810 prihaja s katero koli spletno stran. To ni nekaj, kar sem ustvaril. 1021 01:00:24,810 --> 01:00:28,210 Znotraj tega dokumenta strukture, čeprav niste samo podatke 1022 01:00:28,210 --> 01:00:30,010 vendar imate tudi funkcije. 1023 01:00:30,010 --> 01:00:34,090 >> In vsakič, ko ima funkcijo znotraj strukture, notranjost objekta, 1024 01:00:34,090 --> 01:00:36,490 to se imenuje metoda. Ampak to je isto. 1025 01:00:36,490 --> 01:00:40,110 Metoda je funkcija, ki prav tako se zgodi, da je notri kaj drugega. 1026 01:00:40,110 --> 01:00:42,990 Torej to pomeni, da ta posebna globalno spremenljivko, imenovano listino 1027 01:00:42,990 --> 01:00:47,690 je funkcijo imenovano getElementById, da dobesedno ne da. 1028 01:00:47,690 --> 01:00:52,460 To bodo dobili element iz DOM, Document Object Model drevo, 1029 01:00:52,460 --> 01:00:55,520 , katerega številka je v tem primeru pozdrav. 1030 01:00:55,520 --> 01:00:59,200 Z drugimi besedami, ves ta čas smo porabili za podatkovne strukture prihaja v igro tukaj. 1031 01:00:59,200 --> 01:01:01,400 Ta podoba DOM, da smo imeli pred nekaj trenutki, 1032 01:01:01,400 --> 01:01:06,100 čeprav je stran malo drugačna, če bi imel div na tej sliki, 1033 01:01:06,100 --> 01:01:11,180 kaj document.getElementById vrnil k meni, bi dejansko lahko kazalec 1034 01:01:11,180 --> 01:01:15,440 v pravokotniku v drevesu, sklicevanje na pravokotnik v drevesu. 1035 01:01:15,440 --> 01:01:18,410 Torej, to je tisto, kar pomeni, da dejansko poklicati eno od teh funkcij. 1036 01:01:18,410 --> 01:01:21,960 V tem primeru še enkrat, da je div. To ni telo ali naslov. 1037 01:01:21,960 --> 01:01:26,480 Torej, poglejmo, kaj sem potem naredil s tem div zdaj, da ga imam v notranjosti te spremenljivke imenovane div. 1038 01:01:26,480 --> 01:01:32,580 Izkazalo se je, z JavaScriptom imate možnost, da Primanjkuje CSS vaše strani dinamično. 1039 01:01:32,580 --> 01:01:39,060 Do sedaj so vsi SPD smo opravili, čeprav omejena, je v slogu atributi, 1040 01:01:39,060 --> 01:01:41,730 ali kje drugje smo pripravili CSS? 1041 01:01:42,730 --> 01:01:45,810 Nekako sem razvajen tem. V slogu oznako na vrhu datoteke. 1042 01:01:45,810 --> 01:01:49,180 Ali je bilo tretje mesto v? 1043 01:01:50,710 --> 01:01:54,590 >> Zunanja datoteka, nekaj. Css. 1044 01:01:54,590 --> 01:01:56,730 Torej, to so 3 mesta, ki smo jih naredili CSS doslej 1045 01:01:56,730 --> 01:01:59,310 vendar ulov je, da smo težko kodirane vse. 1046 01:01:59,310 --> 01:02:04,060 Odločili ste se, kot si skočil v pset 7, smo se odločili pred predavanje, kaj bi bilo naše CSS. 1047 01:02:04,060 --> 01:02:07,380 Toda, če želite spremeniti CSS, lahko dejansko narediti, da 1048 01:02:07,380 --> 01:02:09,370 ko ste dejansko programskega jezika. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - ni programski jeziki. JavaScript je. 1050 01:02:13,910 --> 01:02:18,200 Tako se izkaže, da takoj, ko imate eno od teh motivov iz drevesa 1051 01:02:18,200 --> 01:02:23,050 imenujemo DOM, ki jih je sam nekaj podatkov v njej. 1052 01:02:23,050 --> 01:02:27,820 Torej div, da sem zgrabil z drevesa, je tisto, kar bomo poklicali nepremičninah znotraj nje 1053 01:02:27,820 --> 01:02:34,390 imenuje slog in slog lastnost je sama lastnost imenovano vidljivost. 1054 01:02:34,390 --> 01:02:37,330 Rad bi vedel to samo z iskanjem uporabniškega CSS priročnik. 1055 01:02:37,330 --> 01:02:41,160 Izkazalo se je, da je vidljivost CSS lastnost, da ne, kaj piše. 1056 01:02:41,160 --> 01:02:44,530 To naredi nekaj vidni ali ne, vidna ali ne. 1057 01:02:44,530 --> 01:02:46,810 In kako to, da je to. 1058 01:02:46,810 --> 01:02:50,510 Jaz programsko sprašuje, če je skrit prepoznavnost tega div, 1059 01:02:50,510 --> 01:02:53,390 Kaj lahko spremenim, da? Vidno. 1060 01:02:53,390 --> 01:02:58,840 Drugače, če je vidljivost to stran ni skrito, logično mi bi bilo skrito. 1061 01:02:58,840 --> 01:03:04,070 Nimam pojma, zakaj je vidna in skrita in ni viden in neviden. 1062 01:03:04,070 --> 01:03:06,000 To je bila slaba odločitev, načrtovanje poti. 1063 01:03:06,000 --> 01:03:09,530 Ampak to so res nasprotja v CSS: vidna in skrita. 1064 01:03:09,530 --> 01:03:15,520 Vse to pa je, to pomeni spremembo CSS moje datoteke in tam, tu in tam 1065 01:03:15,520 --> 01:03:16,870 za to posebno div. 1066 01:03:16,870 --> 01:03:20,630 Ampak spet, to je funkcijo imenovano utripa. Ko je funkcija utripa poklical? 1067 01:03:20,630 --> 01:03:24,080 Izkazalo se je, da obstaja še ena posebna globalna spremenljivka se imenuje okno, 1068 01:03:24,080 --> 01:03:28,220 pisane v duhu dokumenta, vendar pa dokument, ki se nanaša na vašo spletno stran, 1069 01:03:28,220 --> 01:03:31,700 kot drevo DOM, HTML, ki ste ga poslali iz strežnika 1070 01:03:31,700 --> 01:03:35,250 Okno se nanaša na kroma okoli njega, naslov bar, naslov bar, 1071 01:03:35,250 --> 01:03:37,880 in vse te stvari okoli vaše spletne strani. 1072 01:03:37,880 --> 01:03:42,800 >> In izkazalo se je, da je okno objekt ima posebno funkcijo v njem pa se imenuje setInterval 1073 01:03:42,800 --> 01:03:44,360 da ne kaj piše. 1074 01:03:44,360 --> 01:03:48,600 Njegova naloga bo interval - v tem primeru vsakih 500 milisekund - 1075 01:03:48,600 --> 01:03:52,270 in predvidevati, kaj se bo naredil vsakih 500 milisekund? 1076 01:03:52,270 --> 01:03:55,240 To se dogaja, da je izvajanje funkcije utripa. 1077 01:03:55,240 --> 01:03:58,560 In kaj je lepo tukaj je, da bi jih lahko storili v C, čeprav nismo storili. 1078 01:03:58,560 --> 01:04:01,580 C ima nekaj, kar ti kazalci funkcijo, kjer lahko prenese naloge v okolici 1079 01:04:01,580 --> 01:04:03,140 kot argumente. 1080 01:04:03,140 --> 01:04:07,620 Podobno je v JavaScriptu lahko podaš ime funkcije v drugo funkcijo. 1081 01:04:07,620 --> 01:04:10,630 In opazil, kaj delam. Jaz ne delam tega. 1082 01:04:10,630 --> 01:04:14,380 Če sem dal oklepaje po trenutku, bi to pomenilo, pokličite utripanja funkcijo. 1083 01:04:14,380 --> 01:04:17,430 Če jih izpustite, kar pomeni, da je tukaj utripa funkcija 1084 01:04:17,430 --> 01:04:21,330 tako da lahko setInterval pravijo vsakih 500 milisekund. 1085 01:04:21,330 --> 01:04:28,200 Torej končni rezultat, krute čeprav je, da če grem na localhost in pojdite na blink.html, 1086 01:04:28,200 --> 01:04:32,120 Sedaj imam to dogaja znova in znova. 1087 01:04:32,120 --> 01:04:34,950 In če bi dejansko Preglejte Element, da vidimo, če lahko to vidimo. 1088 01:04:34,950 --> 01:04:38,550 Naj Preglejte element, naj se pomaknite navzdol samo malo, 1089 01:04:38,550 --> 01:04:44,320 Naj izberejo Elements več tukaj in si oglejte DOM notranjost inšpektorja Chrome. 1090 01:04:44,320 --> 01:04:48,840 To je dobesedno spreminja in nazaj na vsakih 500 milisekund. 1091 01:04:48,840 --> 01:04:55,660 Če gremo na naš prijatelj Nate, 1092 01:04:55,660 --> 01:05:00,020 Če ste se kdaj spraševali, kako to deluje, podobno idejo v intervalu, 1093 01:05:00,020 --> 01:05:04,810 Nate, ampak je dejansko tako zelo učinkovito uporabo barv v tem primeru tukaj. 1094 01:05:04,810 --> 01:05:07,350 Torej, kaj še lahko dejansko opraviti s tem? 1095 01:05:07,350 --> 01:05:09,990 Naj odprejo še en primer, in poskusite nekaj 1096 01:05:09,990 --> 01:05:12,940 to je programsko še bolj koristno kot bi se stvari začnejo utripati. 1097 01:05:12,940 --> 01:05:17,990 Naj gredo v našem oblike danes in šel v form0. 1098 01:05:17,990 --> 01:05:20,820 To je najgrša možna oblika, da sem lahko prišel do, 1099 01:05:20,820 --> 01:05:23,290 in mi dovolite, vam pokažem, kako izgleda v brskalniku. 1100 01:05:23,290 --> 01:05:28,960 >> Naj gredo v localhost / oblike, in to je form0. 1101 01:05:28,960 --> 01:05:33,400 To je super grda HTML obliki, ki je nekaj polja za e-pošto, za geslo, 1102 01:05:33,400 --> 01:05:37,190 geslo, nato pa malo polje, da se strinjajo nekateri pogoji. 1103 01:05:37,190 --> 01:05:41,350 Ulov je, če moram obiskati ta obrazec, in ne želim, da dam svoj e-poštni naslov, 1104 01:05:41,350 --> 01:05:44,730 Ne želim, da se strinjajo s pogoji morda lahko kliknem Registracija 1105 01:05:44,730 --> 01:05:46,920 in to mi omogoča, da s pomočjo anyway. 1106 01:05:46,920 --> 01:05:50,800 To se zgodi, da jih bo poslal neumno datoteko PHP pozval dump.php. 1107 01:05:50,800 --> 01:05:58,420 Vse to pa je izpisal vsebino $ _GET samo za diagnostične namene. 1108 01:05:58,420 --> 01:06:01,580 To je bilo tisto, kar je bilo predloženo uporabnik šele zdaj. 1109 01:06:01,580 --> 01:06:05,010 Ampak, da smo dejansko želijo potrditi uporabnika pošiljanje obrazca. 1110 01:06:05,010 --> 01:06:06,530 Naj gredo v različici 1. 1111 01:06:06,530 --> 01:06:11,420 To je form1.html. Zdi se, estetsko prav tako slabo, ampak obvestilo, kako fancy je. 1112 01:06:11,420 --> 01:06:15,450 Če sem kliknite Pridruži brez sodelovanja, dobim kričala. 1113 01:06:15,450 --> 01:06:17,320 "Moraš vnesti e-poštni naslov." 1114 01:06:17,320 --> 01:06:21,670 V redu. Torej, naj poskusim. Torej malan@harvard.edu. Jaz ne potrebujem geslo. 1115 01:06:21,670 --> 01:06:25,100 Registracija. "Morate zagotoviti geslo." V redu. 1116 01:06:25,100 --> 01:06:28,470 Torej bom zagotovil geslo škrlat. Registracija. 1117 01:06:28,470 --> 01:06:32,300 "Gesli se ne ujemata." Zdaj pa moram vnesti Crimson tukaj. 1118 01:06:32,300 --> 01:06:35,710 Po nesreči sem preveril to. Registracija. 1119 01:06:35,710 --> 01:06:39,860 "Moraš se strinjam s pogoji in določili." V redu. Strinjam se. Registracija. 1120 01:06:39,860 --> 01:06:43,700 In zdaj mi pokaže diagnostični izhod tam. 1121 01:06:43,700 --> 01:06:45,630 >> Torej, kaj se je pravkar zgodilo? 1122 01:06:45,630 --> 01:06:48,330 Mi smo imeli to možnost za potrditev obrazca vloge. 1123 01:06:48,330 --> 01:06:51,420 V bistvu, če si se potopite v pset 7, tam je funkcija opravičiti 1124 01:06:51,420 --> 01:06:54,620 , ki omogoča zelo enostavno kričati na uporabnika s sporočilom na zaslonu. 1125 01:06:54,620 --> 01:06:57,580 Jaz sem z nekoliko drugačno mehanizem opozarjanja funkcijo, 1126 01:06:57,580 --> 01:07:03,690 ki ni funkcija, ki se je nasmehnil ob ker je zaradi tega zelo grdo sporočil uporabnikov. 1127 01:07:03,690 --> 01:07:05,710 Ampak poglejmo, kaj delam tukaj. 1128 01:07:05,710 --> 01:07:09,620 To je form1.html, in opazil, da imam nekaj zelo znano sintakso: 1129 01:07:09,620 --> 01:07:12,920 telo tag, tag oblika, ukrepi lastnost, atribut metoda. 1130 01:07:12,920 --> 01:07:17,050 Ampak opazil sem dal svoj obrazec edinstven ID za udobje. 1131 01:07:17,050 --> 01:07:19,190 Potem pa sem dobil e-poštni polje, katerega tip je besedilo, 1132 01:07:19,190 --> 01:07:23,780 polje za geslo, katerega tip je geslo, potrditev polje, katerega tip je geslo, 1133 01:07:23,780 --> 01:07:28,070 in nato polje, katerega ime je dogovor tukaj, tip je potrditveno polje. 1134 01:07:28,070 --> 01:07:30,380 In potem imam gumb Pošlji. 1135 01:07:30,380 --> 01:07:33,050 Toda opazil na vrhu kaj več nimam. 1136 01:07:33,050 --> 01:07:35,810 Najprej, obstaja še druga uporaba scenarija oznako. 1137 01:07:35,810 --> 01:07:40,520 Če imate nekaj kode JavaScript v drugo datoteko, tako kot s CSS jo lahko vključite. 1138 01:07:40,520 --> 01:07:44,530 In to storite z virom scenarija, nato pa opazil, da sem očitno povezavo 1139 01:07:44,530 --> 01:07:50,349 da googleapis.com na zelo dolgi poti, vendar je njihovo ime datoteke se konča v jquery.min 1140 01:07:50,349 --> 01:07:52,420 za vsaj js.. 1141 01:07:52,420 --> 01:07:55,969 jQuery je super priljubljena knjižnica za JavaScript, da samo naredi JavaScript 1142 01:07:55,969 --> 01:07:58,230 Vse bolj prijazna za uporabo. 1143 01:07:58,230 --> 01:08:00,610 To je dejansko postal de facto standard. 1144 01:08:00,610 --> 01:08:04,090 Torej, čeprav je tisto, kar boste kmalu videli, ni čisto Javascript per se, 1145 01:08:04,090 --> 01:08:09,340 je knjižnica na vrhu JavaScript toliko, kot je CS50 knjižnice je plast 1146 01:08:09,340 --> 01:08:13,670 na vrhu nizko stopnjo oznako C, dejstvo pa je, skoraj vsakdo na internetu ne uporablja. 1147 01:08:13,670 --> 01:08:18,030 Torej ne gre za usposabljanje kolesa. To je samo najboljša praksa v teh dneh. 1148 01:08:18,030 --> 01:08:22,830 Zdaj opazil, da je pod mojo scenarij tag, in opazil, kaj sem naredil tukaj. 1149 01:08:22,830 --> 01:08:27,450 Izkazalo se je, da jQuery pa nekaj malo fancy. 1150 01:08:27,450 --> 01:08:29,660 Javascript mora dolar znake, vendar so brez pomena. 1151 01:08:29,660 --> 01:08:32,870 >> So kot črko A ali B ali C. 1152 01:08:32,870 --> 01:08:36,670 jQuery je le sprejela konvencijo ali vrsta položenega trdijo, da dejstvo, 1153 01:08:36,670 --> 01:08:40,280 da bo $ njihov poseben simbol. 1154 01:08:40,280 --> 01:08:44,950 Torej, ko boste naložili to globalno datoteko JavaScript tukaj z oznako skript, 1155 01:08:44,950 --> 01:08:49,080 imate dostop do posebnega globalne spremenljivke, ki se imenuje $. 1156 01:08:49,080 --> 01:08:53,009 To je bolj pravilno imenuje jQuery, vendar to ne izgleda približno tako seksi kot $. 1157 01:08:53,009 --> 01:08:56,250 Toda $ nima posebnega pomena. V PHP je imela poseben pomen. 1158 01:08:56,250 --> 01:08:58,440 Morali ste ga imeli pred spremenljivko. 1159 01:08:58,440 --> 01:09:01,670 To je le seksi stvar, ki se je naprej. 1160 01:09:01,670 --> 01:09:03,389 Kaj se dogaja tukaj? 1161 01:09:03,389 --> 01:09:08,830 Obvestilo sem mimo, da jQuery funkcije svojo globalno spremenljivko dokument 1162 01:09:08,830 --> 01:09:10,860 in potem bom poklical. pripravljena. 1163 01:09:10,860 --> 01:09:15,480 Kaj jQuery bistvu pa je to vam omogoča, da se nekatere stvari vanilije JavaScript 1164 01:09:15,480 --> 01:09:17,889 kot dokumentarno objekta, okna objekt, 1165 01:09:17,889 --> 01:09:20,790 in če ga prenese v na jQuery funkcije - 1166 01:09:20,790 --> 01:09:24,429 in spet, mora biti jasno, da je to funkcija je jQuery - 1167 01:09:24,429 --> 01:09:28,240 kaj počne, je, da se vrne v vas, posebno različico dokumenta 1168 01:09:28,240 --> 01:09:30,700 ki ima več funkcij, povezanih z njim. 1169 01:09:30,700 --> 01:09:34,760 Torej, v surovi JavaScript ni pripravljen funkcijo, 1170 01:09:34,760 --> 01:09:37,810 ampak, če se boste peljali dokument jQuery funkcije prvič, 1171 01:09:37,810 --> 01:09:40,960 se vrne v vas, posebno različico dokumenta predmeta 1172 01:09:40,960 --> 01:09:43,030 da ima več fancy funkcij. 1173 01:09:43,030 --> 01:09:48,230 In to je razlog, zakaj ljudje všeč. Samo naredi stvari lažje narediti, saj smo na tem, da vidim. 1174 01:09:48,230 --> 01:09:49,820 Torej, kaj to vrstico kode pomeni? 1175 01:09:49,820 --> 01:09:52,690 Ta vrstica kode tukaj pomeni, ko je dokument pripravljen - 1176 01:09:52,690 --> 01:09:56,830 z drugimi besedami, ko je brskalnik končali obravnavo te datoteke vrha do dna - 1177 01:09:56,830 --> 01:09:59,200 pojdi naprej in izvedite funkcijo. 1178 01:09:59,200 --> 01:10:03,540 Kaj je res zanimivo, v JavaScript - PHP in ima tudi to - 1179 01:10:03,540 --> 01:10:05,450 je anonimne funkcije. 1180 01:10:05,450 --> 01:10:10,560 V JavaScriptu lahko ugotovi funkcije, ki nimajo imena, vendar pa imajo telo. 1181 01:10:10,560 --> 01:10:12,570 Obvestilo, kaj se dogaja. 1182 01:10:12,570 --> 01:10:16,220 >> To je funkcija je pripravljen, in to samo pomeni, naredite naslednje 1183 01:10:16,220 --> 01:10:20,220 ko je celotna spletna stran pripravljena, ko ga je prebral od strežnika. 1184 01:10:20,220 --> 01:10:23,090 Kaj želite narediti? Rad bi izvršitev kos kode. 1185 01:10:23,090 --> 01:10:27,120 Obvestilo, da ne želimo, da zaženete to kodo takoj. 1186 01:10:27,120 --> 01:10:34,350 Če sem to izpustite, bi to pomenilo, takoj začne izvajati teh vrstic kode. 1187 01:10:34,350 --> 01:10:39,040 Toda dejstvo, da sem rekel, ne, ne, ne, to zaviti v anonimni funkcije, kot je ta 1188 01:10:39,040 --> 01:10:43,000 sredstvo ne izvede še, da pokličete na koncu. 1189 01:10:43,000 --> 01:10:45,430 To smo lahko videli pred nekaj trenutki v našem prejšnjem primeru obliki. 1190 01:10:45,430 --> 01:10:49,990 Kaj naj rečemo funkcija sčasoma 500 milisekund kasneje? Blink. 1191 01:10:49,990 --> 01:10:51,480 Torej, ista ideja. 1192 01:10:51,480 --> 01:10:53,950 Še enkrat, tudi če izgleda malo čudno, samo da za zdaj o veri 1193 01:10:53,950 --> 01:10:57,060 , ki jo bo razglasila za anonimno funkcijo, ki je na koncu z imenom, 1194 01:10:57,060 --> 01:11:01,720 preprosto napišite function () { 1195 01:11:01,720 --> 01:11:05,380 Torej, kaj koda bomo na koncu usmrtitev? Naslednji. 1196 01:11:05,380 --> 01:11:10,460 Tudi to izgleda malo novega, vendar to pomeni, da je tukaj jQuery funkcije, 1197 01:11:10,460 --> 01:11:13,430 in to sedaj je bližnjica. 1198 01:11:13,430 --> 01:11:18,830 Ta odlomek HTML na dnu zaslona seveda ima nekaj dreves zastopanje. 1199 01:11:18,830 --> 01:11:21,730 To ni to. Ta stran je bolj zanimivo kot to Pozdravljen svet npr. 1200 01:11:21,730 --> 01:11:25,210 Vendar pa obstaja nekaj dreves, ki ustreza tej HTML. 1201 01:11:25,210 --> 01:11:28,910 To bi bilo bolečine v vratu, da bodo morali izvajati neko rekurzivno funkcijo 1202 01:11:28,910 --> 01:11:34,380 začeti na korenski vozel, nato pa je bil vozlišče, katerega številka je registracija. 1203 01:11:34,380 --> 01:11:38,340 Torej, kaj naredi jQuery super enostavno za nas je dobesedno to. 1204 01:11:38,340 --> 01:11:43,000 Pojdi in me karkoli div ali kakršni koli obliki, ne glede na HTML element 1205 01:11:43,000 --> 01:11:45,820 ima ID registracijo. 1206 01:11:45,820 --> 01:11:52,440 To je enakovredno document.getElementById ("registracija"). 1207 01:11:52,440 --> 01:11:54,170 >> Zakaj ljudje radi jQuery? 1208 01:11:54,170 --> 01:12:00,110 Ker je krajša s tipom. Ampak to je vse kar je. To je ista ideja. 1209 01:12:00,110 --> 01:12:02,630 Dajte mi oznako, katere številka je registracija. 1210 01:12:02,630 --> 01:12:06,300 In ko je trdila, da oznaka, ki se zgodi, da je obrazec,, 1211 01:12:06,300 --> 01:12:08,300 iti naprej in zaženete to kodo. 1212 01:12:08,300 --> 01:12:11,320 Dajmo torej 1 glej zdaj, kako delamo obrazca potrditev. 1213 01:12:11,320 --> 01:12:15,950 Sintaksa je sicer skrivnosten na prvi, ampak kaj se dogaja? 1214 01:12:15,950 --> 01:12:21,050 Če ta vrstica kode je res, bom kričati na uporabnika, da zagotovi svoj e-poštni naslov. 1215 01:12:21,050 --> 01:12:22,970 Torej, kaj je to vrstico kode? 1216 01:12:22,970 --> 01:12:25,560 $ Pomeni jQuery. Zdaj opazil. 1217 01:12:25,560 --> 01:12:27,920 To je nekako tako kot CSS. 1218 01:12:27,920 --> 01:12:33,370 Če ste vrgli v CSS še, boste vedeli, da to pomeni element, katerega številka je registracija. 1219 01:12:33,370 --> 01:12:39,840 Prostor pomeni najti otroka ali potomec registracijo, katerega ime je vhod. 1220 01:12:39,840 --> 01:12:42,970 In potem ta stvar v kvadratnih oklepajih je malo filter. 1221 01:12:42,970 --> 01:12:47,010 In tudi če izgleda ta skrivnosten, to samo pomeni, pojdite na obrazcu, katerega številka je registracija 1222 01:12:47,010 --> 01:12:51,230 pojdi na notranji strani vhodnih elementov tistega, katerega ime je e-pošta, 1223 01:12:51,230 --> 01:12:55,440 in nato dobil svojo vrednost, ne glede na njegovo vrednost zgodi, da bo - 1224 01:12:55,440 --> 01:12:59,670 asdf, če je to vse, sem tipkal ali malan@harvard.edu, če je to tisto, kar sem tipkal. 1225 01:12:59,670 --> 01:13:05,250 Torej, če je vrednost e-obrazca področju == nič, kričati na uporabnika. 1226 01:13:05,250 --> 01:13:09,700 Drugače, če je vrednost v polje za geslo == nič, kričati na uporabnika. 1227 01:13:09,700 --> 01:13:19,520 >> Drugače, če je vrednost v polje za geslo ne enaka vrednosti za potrditev polja, 1228 01:13:19,520 --> 01:13:22,850 , ki je bila druga oblika element, kričati na uporabnika. 1229 01:13:22,850 --> 01:13:25,680 In potem na koncu - in to je tudi nekaj novih sintakso sama, 1230 01:13:25,680 --> 01:13:29,270 ampak, ko ste videli, da je vsaj malo bolj razumno - 1231 01:13:29,270 --> 01:13:34,060 if obrazec, katerega številka je registracija vhodni element, katerega ime je sporazum 1232 01:13:34,060 --> 01:13:39,720 in se preveri, da gredo naprej in kričati na uporabnika. 1233 01:13:39,720 --> 01:13:42,520 Zato sem popolnoma priznati da je to popolnoma prepričljivo na prvi pogled. 1234 01:13:42,520 --> 01:13:46,530 To je veliko novih sintakse. Ampak vse jQuery sledi tovrstnih vzorcev. 1235 01:13:46,530 --> 01:13:49,880 In po pravici povedano, nisem niti vedel, da to obstaja do pred nekaj minutami. 1236 01:13:49,880 --> 01:13:53,640 Jaz Googled: "Kako lahko preverite, ali je polje preveriti v jQuery?" 1237 01:13:53,640 --> 01:13:55,680 in to je sintaksa, ker obstaja več načinov za to početje 1238 01:13:55,680 --> 01:13:58,010 z dejanskim surovega kode JavaScript. 1239 01:13:58,010 --> 01:14:01,030 Tako kot prva stran Set Problem 7 poudarja, 1240 01:14:01,030 --> 01:14:04,500 pset 7 je zelo vaja v sami zaženejo 1241 01:14:04,500 --> 01:14:08,650 kjer smo za vas, upam, konceptualni okvir, s katerim bi odpravo pset. 1242 01:14:08,650 --> 01:14:12,280 >> Toda, kot se pogosto zgodi pri izdelavi spletnih strani, je odvisno od vas res na okoli suniti, 1243 01:14:12,280 --> 01:14:16,680 vključi dela kode in primere iz spleta, tako dolgo, kot ste jih navajajo 1244 01:14:16,680 --> 01:14:17,960 V skladu s pravili na tem prvem listu, 1245 01:14:17,960 --> 01:14:21,460 in spoznali, da je učenje HTML, CSS, JavaScript in celo SQL 1246 01:14:21,460 --> 01:14:26,020 je res mišljeno, da bo to na domu izvaja kot smo začeli, da se te vrste usposabljanja s ceste. 1247 01:14:26,020 --> 01:14:29,150 In spoznali tudi tam je toliko bolj stvari, ki jih lahko naredite s spletnim brskalnikom. 1248 01:14:29,150 --> 01:14:33,790 Notranjost je večina teh elementov obstajajo druge stvari, imenovane rutine za obravnavo dogodkov. 1249 01:14:33,790 --> 01:14:37,140 In čeprav smo samo pogledal tiste pozval onsubmit in onready, 1250 01:14:37,140 --> 01:14:40,310 lahko stvari kot onkeydown, onkeyup, 1251 01:14:40,310 --> 01:14:43,410 kot takrat, ko uporabnik dotakne na tipko lahko poslušate na to in navzgor. 1252 01:14:43,410 --> 01:14:45,940 Gmail ima bližnjice na tipkovnici. 1253 01:14:45,940 --> 01:14:49,490 Kako Google izvaja bližnjice na tipkovnici, kot C za sestavljanje? 1254 01:14:49,490 --> 01:14:54,120 Poslušajo za dogodke, kot se imenujejo, kot onkeypress ali onkeyup in onkeydown. 1255 01:14:54,120 --> 01:14:56,360 Če ste kdaj gibala miško čez nekaj možnosti menija 1256 01:14:56,360 --> 01:15:00,180 in kar naenkrat, voila, meni se zdi, ali grafiko spremeni barvo, 1257 01:15:00,180 --> 01:15:01,920 kako se to počne? 1258 01:15:01,920 --> 01:15:06,940 Namesto da bi poslušal onready ali onsubmit, poslušaj za onmouseover ali onmouseout. 1259 01:15:06,940 --> 01:15:10,920 >> Torej na kratko, s temi enostavnimi osnove, ki smo jih začeli praska površino danes 1260 01:15:10,920 --> 01:15:13,940 in bomo potopili še, da v sredo, imate vedno bolj 1261 01:15:13,940 --> 01:15:17,530 Pooblastilo za izvajanje vrste stvari, ki jih boste že seznanjeni. 1262 01:15:17,530 --> 01:15:21,620 Torej, kaj je tam konec, mi pa bomo še naprej to sredo. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]