1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> DAVID Malan V redu. 3 00:00:12,360 --> 00:00:15,970 To je CS50, in to konec devetih teden. 4 00:00:15,970 --> 00:00:18,560 Minilo je že več kot tornado v zadnjih nekaj dneh. 5 00:00:18,560 --> 00:00:21,580 In problem določiti sedem, če si koleno globoko v njej, zavedati, tam je precej 6 00:00:21,580 --> 00:00:23,340 bit nova, da je tam. 7 00:00:23,340 --> 00:00:26,660 Ampak poglejmo, če ne moremo kos Vse skupaj sem na kratko 8 00:00:26,660 --> 00:00:29,230 Pred nato zdrsnila v še drugo smer in videnje 9 00:00:29,230 --> 00:00:30,510 kam lahko gremo. 10 00:00:30,510 --> 00:00:32,630 >> Torej doslej, smo se pogovarjali o HTML. 11 00:00:32,630 --> 00:00:33,740 Smo se pogovarjali o CSS. 12 00:00:33,740 --> 00:00:34,705 Smo se pogovarjali o PHP. 13 00:00:34,705 --> 00:00:36,520 Začeli ste doživeli SQL. 14 00:00:36,520 --> 00:00:38,360 Danes bomo govorili malo O JavaScript. 15 00:00:38,360 --> 00:00:41,230 Kako pa vsi ti različni jeziki fit skupaj? 16 00:00:41,230 --> 00:00:44,970 >> Tako smo se pogovarjali prejšnji teden o Pojem ima strežnik. 17 00:00:44,970 --> 00:00:48,470 Zato naj samo pripravi ta pravokotnik kot spletni strežnik tukaj. 18 00:00:48,470 --> 00:00:52,200 In spletni strežnik služi zagotovo datotek. 19 00:00:52,200 --> 00:00:54,640 In nekateri izmed teh datotek lahko HTML datoteke. 20 00:00:54,640 --> 00:00:58,270 Torej ena od stvari, ki jih spletni strežnik Lahko izpljunili morda datoteka, ki 21 00:00:58,270 --> 00:01:01,290 bomo samo pripravi takole vsebuje nekaj HTML. 22 00:01:01,290 --> 00:01:04,786 Tako v smislu navadnega je, kaj ne HTML vam naredil? 23 00:01:04,786 --> 00:01:06,036 >> PUBLIKA: Page videti lepo. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> DAVID Malan: OK, bo stran videti lepo, čeprav mislim, da sem dokazala 26 00:01:12,310 --> 00:01:13,370 da drugače. 27 00:01:13,370 --> 00:01:18,250 Torej HTML ne dovolite si začrtate strani strukturno, in to vam omogoča, da 28 00:01:18,250 --> 00:01:22,410 nekako estetsko pribitek strani, pribitek statično vsebino, tako da si 29 00:01:22,410 --> 00:01:23,640 Lahko pa si jo ogledate s spletnim brskalnikom. 30 00:01:23,640 --> 00:01:24,690 >> Ampak to je ključnega pomena. 31 00:01:24,690 --> 00:01:26,130 To je statično vsebino. 32 00:01:26,130 --> 00:01:28,590 Ste ga napisali, ga shranite, in potem je ladja. 33 00:01:28,590 --> 00:01:31,130 In spletni strežnik, nato služi je do svoje obiskovalce. 34 00:01:31,130 --> 00:01:35,700 >> Vendar smo stilu stvari, ki uporabljajo drugačen jezik v celoti. 35 00:01:35,700 --> 00:01:40,150 Začeli smo uporabljati slog atribut o nekaterih oznak. 36 00:01:40,150 --> 00:01:43,400 In slog atribut nam določiti stvari, kot so velikost pisave in barve. 37 00:01:43,400 --> 00:01:46,460 In ste verjetno začeli odkrivati, ali pa bodo kmalu za končno 38 00:01:46,460 --> 00:01:50,160 Projekti potencialno še drugi lastnosti, ki jih lahko uporabite v CSS. 39 00:01:50,160 --> 00:01:54,710 In tako v smislu navadnega je, kaj res, potem ne CSS storiti? 40 00:01:54,710 --> 00:01:57,810 Tisti, ki so le njihovi primeri. 41 00:01:57,810 --> 00:02:00,730 Kaj pa naj si to naredil HTML ne zdi, da iz tega, kar 42 00:02:00,730 --> 00:02:02,606 smo videli doslej? 43 00:02:02,606 --> 00:02:04,850 >> PUBLIKA: Določite sloge, ki jih sami. 44 00:02:04,850 --> 00:02:06,700 >> DAVID Malan: Določite sloge sami. 45 00:02:06,700 --> 00:02:10,280 Torej opredeliti stvari, kot razrede, kot vas morda so se pojavile, ali edinstveno 46 00:02:10,280 --> 00:02:13,800 prepoznavanje vozlišč v dokumentu tako da jih lahko stilu. 47 00:02:13,800 --> 00:02:16,890 Ampak, še posebej, bi rekel, da CSS Res vam omogoča, da stvari 48 00:02:16,890 --> 00:02:20,790 zadnja milja in vam omogoča, da določite veliko natančneje estetika, 49 00:02:20,790 --> 00:02:24,340 ker HTML večinoma omogoča si strukturo vaše strani. 50 00:02:24,340 --> 00:02:27,310 >> In čeprav obstajajo nekatere privzete nastavitve, kot smo videli oznako za 51 00:02:27,310 --> 00:02:30,690 tarifno oznako, ki grobem so stvari veliko in krepko. 52 00:02:30,690 --> 00:02:34,250 To je precej splošne opredelitve z oznako - velik in krepko. 53 00:02:34,250 --> 00:02:35,260 Kaj velikost črk je to? 54 00:02:35,260 --> 00:02:36,080 Kakšne barve je to? 55 00:02:36,080 --> 00:02:36,890 Kako krepko je to? 56 00:02:36,890 --> 00:02:39,830 In CSS vam omogoča bolj fino tune take stvari. 57 00:02:39,830 --> 00:02:42,150 Kakor tudi postavitev, kot nekateri o ste videli. 58 00:02:42,150 --> 00:02:45,180 >> In odkrito povedano, CSS, je malce za grdo jeziku. 59 00:02:45,180 --> 00:02:48,370 To je zelo močna, da si lahko Dobesedno vse spletne strani, ki ste 60 00:02:48,370 --> 00:02:51,880 videl na spletu je danes z njim, vendar to je nekako bolečino v vratu. 61 00:02:51,880 --> 00:02:54,440 In nekateri od vas udaril v glavo proti stene že samo za početi 62 00:02:54,440 --> 00:02:58,560 kaj neumnega, kot centra menija na Problem nastavite sedem če ste gotten 63 00:02:58,560 --> 00:02:59,470 ta točka že. 64 00:02:59,470 --> 00:03:01,530 >> Vendar zavedaš, te stvari priti lažje skozi čas. 65 00:03:01,530 --> 00:03:02,820 Začnete opažati vzorce. 66 00:03:02,820 --> 00:03:06,020 In spet, bo Google tvoj prijatelj za različne načine, na katere lahko 67 00:03:06,020 --> 00:03:07,220 reševanje tovrstnih problemov. 68 00:03:07,220 --> 00:03:11,520 >> In upam si reči z CSS in HTML več na splošno, lahko reši težave v 69 00:03:11,520 --> 00:03:15,910 veliko več načinov, ki so vse bi lahko zelo dobro je pravilna, kot si lahko 70 00:03:15,910 --> 00:03:18,900 nekaj podobnega C, čeprav Zdaj PHP ali JavaScript. 71 00:03:18,900 --> 00:03:21,080 Obstaja le veliko različnih načinov za postavitev stvari. 72 00:03:21,080 --> 00:03:22,570 >> Toda ta začel, da bi dobili grdo, smo rekli. 73 00:03:22,570 --> 00:03:26,480 Nekako mešanje HTML in vaš CSS s stilom atribut je 74 00:03:26,480 --> 00:03:27,590 malo površen. 75 00:03:27,590 --> 00:03:31,460 In tako smo namesto tega je rekel, neke vrste abstraktno rečeno, da morate 76 00:03:31,460 --> 00:03:34,050 vsaj začeti faktor iz vašega CSS verjetno. 77 00:03:34,050 --> 00:03:37,430 Ni tvoj stil atribute, ampak vsaj uporabite slog oznako notranjosti, kar 78 00:03:37,430 --> 00:03:38,840 del spletne strani? 79 00:03:38,840 --> 00:03:39,560 >> PUBLIKA: Head. 80 00:03:39,560 --> 00:03:40,120 >> DAVID Malan: V glavo. 81 00:03:40,120 --> 00:03:43,270 Do zdaj smo imeli le naziv up tam, lahko pa dodate tudi slog 82 00:03:43,270 --> 00:03:47,230 označiti, in lahko dajo svoj CSS grobo gledano proti vrhu strani. 83 00:03:47,230 --> 00:03:52,550 Ampak potem smo vzeli stvari en korak naprej in smo jih vključiti, da izveste več 84 00:03:52,550 --> 00:03:54,130 v ločeno datoteko. 85 00:03:54,130 --> 00:03:57,240 >> In tako ti dve datoteki so nekako zdaj povezana. 86 00:03:57,240 --> 00:03:59,550 In res je bilo tag, ki je to naredil. 87 00:03:59,550 --> 00:04:02,920 In tisto, kar je bil eden od poglavitnih motivacije za faktoring našo CSS 88 00:04:02,920 --> 00:04:04,057 vse bolj? 89 00:04:04,057 --> 00:04:05,280 >> PUBLIKA: Ponovna. 90 00:04:05,280 --> 00:04:05,785 >> DAVID Malan: Ponovna. 91 00:04:05,785 --> 00:04:06,150 Kajne? 92 00:04:06,150 --> 00:04:09,470 Morda ste opazili na-p nastavite sedem že da je veliko strani, 93 00:04:09,470 --> 00:04:12,260 Odkupna stran, prodajna stran, Stran portfelj, so verjetno 94 00:04:12,260 --> 00:04:13,550 strukturirani nekoliko podobno. 95 00:04:13,550 --> 00:04:17,579 Tam finance CS50 logo na vrhu če ste se odločili, da ga spremeni. 96 00:04:17,579 --> 00:04:19,839 Tam je nogo na spodnji strani. 97 00:04:19,839 --> 00:04:24,315 In CSS vam jo potem faktor ven je v ločeno datoteko, tako da, če 98 00:04:24,315 --> 00:04:27,780 hočeš nekaj spremeniti na svetovni ravni čez vašo celotno spletno stran, lahko res 99 00:04:27,780 --> 00:04:29,390 samo spremenite na enem mestu. 100 00:04:29,390 --> 00:04:32,750 >> Vendar pa je cena, ki jo plača potencialno s tem da vračunati out 101 00:04:32,750 --> 00:04:38,380 CSS iz moje datoteke HTML v ločen datoteka je navajanje s 102 00:04:38,380 --> 00:04:40,650 tag, ki smo ga videli v ponedeljek. 103 00:04:40,650 --> 00:04:43,850 Kaj bi negativna biti to? 104 00:04:43,850 --> 00:04:48,830 Razmišljate nazaj, pred tednom dni, ko smo Govorimo o HTTP in TCP / IP in kako 105 00:04:48,830 --> 00:04:52,070 internet deluje. 106 00:04:52,070 --> 00:04:53,530 Nekaj ​​sem? 107 00:04:53,530 --> 00:04:54,730 >> PUBLIKA: traja dlje časa. 108 00:04:54,730 --> 00:04:55,470 >> DAVID Malan: traja dlje časa. 109 00:04:55,470 --> 00:04:56,750 Zakaj? 110 00:04:56,750 --> 00:04:59,450 >> PUBLIKA: [neslišno]. 111 00:04:59,450 --> 00:04:59,750 >> DAVID Malan: Ja. 112 00:04:59,750 --> 00:05:01,240 Torej je verjetno potrebno malo več časa. 113 00:05:01,240 --> 00:05:04,290 Ker ena, CSS, je očitno ne v isti datoteki. 114 00:05:04,290 --> 00:05:06,920 Torej, zdaj ste, da se ne eno, ampak dve zahtevi. 115 00:05:06,920 --> 00:05:11,230 In vsako od teh zahtev, kot smo videli v Krom v tako imenovanem inšpektorja 116 00:05:11,230 --> 00:05:15,740 in smo pogledal na kartici omrežja, vsak od teh datotek, zahteva en HTTP 117 00:05:15,740 --> 00:05:18,360 Zahteva, ki smo jih videli traja nekaj časa. 118 00:05:18,360 --> 00:05:19,290 Zdaj, morda to ni veliko. 119 00:05:19,290 --> 00:05:20,670 Mogoče je le 20 milisekund. 120 00:05:20,670 --> 00:05:22,260 Morda je 200 milisekund. 121 00:05:22,260 --> 00:05:25,530 >> Ampak pomislite strani, kot so Facebook, ali CNN ali Google, ki so veliko 122 00:05:25,530 --> 00:05:28,060 večji od primerov, ki smo jih pogledal tako daleč. 123 00:05:28,060 --> 00:05:32,070 Te strani bi lahko na ducate datotek, od katerih je lahko potrebna 124 00:05:32,070 --> 00:05:33,550 prenos neke datoteke. 125 00:05:33,550 --> 00:05:35,800 Torej stvari, ki lahko potencialno začne počasi navzdol. 126 00:05:35,800 --> 00:05:39,280 >> In še posebej v teh dneh, ko smo vsi imajo mobilne telefone v naših žepih in 127 00:05:39,280 --> 00:05:43,010 počasne internetne povezave, da bi počakajte še nekaj milisekund, nekaj 128 00:05:43,010 --> 00:05:46,110 več milisekund za dodatne Datoteke lahko dejansko počasi. 129 00:05:46,110 --> 00:05:50,430 Latence je beseda, ki opisuje nekako čakajo, da imate, da boste 130 00:05:50,430 --> 00:05:53,110 izkušnje, ko čakajo na nekatere informacija. 131 00:05:53,110 --> 00:05:54,430 >> Vendar pa je narobe. 132 00:05:54,430 --> 00:05:56,600 Torej to ni vse vrste - 133 00:05:56,600 --> 00:05:58,170 dejansko je malo seesaw tukaj. 134 00:05:58,170 --> 00:06:02,970 Negativna zdaj, ampak kaj brskalniki lahko storite če so pametni, da bi se izognili 135 00:06:02,970 --> 00:06:08,870 ob zahtevati enako styles.css Datoteka spet lahko kaj storil? 136 00:06:08,870 --> 00:06:09,390 >> Jo predpomnilnika. 137 00:06:09,390 --> 00:06:10,370 Torej predpomnjenje - 138 00:06:10,370 --> 00:06:11,690 C--C-H-E - 139 00:06:11,690 --> 00:06:15,810 splošno pomeni tu samo, da shranite vložiti ste zahtevali prvič, in 140 00:06:15,810 --> 00:06:17,440 Nato preverite predpomnilnika za to. 141 00:06:17,440 --> 00:06:20,400 Preverite, da ste nekako posodo za shranjevanje, in če že imate 142 00:06:20,400 --> 00:06:24,520 kopija styles.css, tudi če drug Stran v p-set, ali katere koli spletne strani, 143 00:06:24,520 --> 00:06:28,560 zahteva še enkrat, samo da bi Uporabnik isti shranjena kopija. 144 00:06:28,560 --> 00:06:30,140 Ne trudi se to zahteva. 145 00:06:30,140 --> 00:06:32,560 >> Slaba stran je, čeprav, kot nekateri od vas so se spotikali v p-set. 146 00:06:32,560 --> 00:06:35,870 Če bo sprememba na strežniku in greš nazaj v brskalnik in si 147 00:06:35,870 --> 00:06:39,250 osvežite, včasih brskalnik ne si uslugo in ne moti 148 00:06:39,250 --> 00:06:43,660 ponovno nalaganje vaš styles.css datoteke ker, no, kakšne so možnosti 149 00:06:43,660 --> 00:06:47,620 da ti slogi, da Facebook uporablja se bodo spremenile uro za uro ali 150 00:06:47,620 --> 00:06:48,140 iz dneva v dan? 151 00:06:48,140 --> 00:06:48,800 To je precej nizka. 152 00:06:48,800 --> 00:06:52,260 Zato so lahko v času spreminja, vendar ne na minuto ali na uro. 153 00:06:52,260 --> 00:06:55,810 >> Torej trik, samo v vednost, če delaš spletu razvoj, je pogosto držite 154 00:06:55,810 --> 00:06:59,500 premik ključ za primer, in nato kliknite osvežite v vašem brskalniku, in da bo 155 00:06:59,500 --> 00:07:03,280 ponavadi povem brskalnik reload Vse, tudi če že imate 156 00:07:03,280 --> 00:07:04,180 je v predpomnilniku. 157 00:07:04,180 --> 00:07:06,630 Torej še enkrat, upsides in slabosti, ampak vse od njih 158 00:07:06,630 --> 00:07:08,260 končno oblikovanje odločitve. 159 00:07:08,260 --> 00:07:11,520 >> Torej, zdaj, nismo samo končati zgodbo tukaj. 160 00:07:11,520 --> 00:07:15,790 Če bi zdaj šel nazaj in nazaj in nazaj in nazaj, smo začeli uvajati ne samo 161 00:07:15,790 --> 00:07:18,060 HTML, vendar PHP. 162 00:07:18,060 --> 00:07:20,786 Torej v smislu navadnega je, kaj ne PHP storimo? 163 00:07:20,786 --> 00:07:22,770 >> PUBLIKA: [neslišno]. 164 00:07:22,770 --> 00:07:24,258 >> DAVID Malan: Kaj je to? 165 00:07:24,258 --> 00:07:25,250 >> PUBLIKA: Uvesti logiko v kodi. 166 00:07:25,250 --> 00:07:26,620 >> DAVID Malan: Ja, uvesti Logika v svojo kodo. 167 00:07:26,620 --> 00:07:29,570 Torej je res, programski jezik z zankami, in spremenljivk in 168 00:07:29,570 --> 00:07:32,620 funkcije, in pogoje, ter vsi stvari, ki jih že uporabljajo pot nazaj 169 00:07:32,620 --> 00:07:33,780 ko od nič. 170 00:07:33,780 --> 00:07:36,780 In PHP, smo videli, se lahko uporablja bodisi v ukazni vrstici - to 171 00:07:36,780 --> 00:07:39,190 ni treba imeti opravka s spleta, čeprav je to 172 00:07:39,190 --> 00:07:43,150 res njen izvor in kaj se nagiba da se dobro in spodbuja - 173 00:07:43,150 --> 00:07:47,130 vendar lahko uporabite PHP zgolj z naravo dejstvo, da ima odtis () 174 00:07:47,130 --> 00:07:49,660 funkcije in printf () funkcija, ali echo () funkcijo. 175 00:07:49,660 --> 00:07:52,440 Tam je šopki načinov, kako lahko natisnete besedilo s PHP. 176 00:07:52,440 --> 00:07:56,540 >> Torej, lahko uporabite to programsko jezik natančno izhod 177 00:07:56,540 --> 00:07:58,460 kaj smo govorili prej. 178 00:07:58,460 --> 00:08:01,360 Lahko dinamično ustvari vaš HTML. 179 00:08:01,360 --> 00:08:02,300 Morda ni vse. 180 00:08:02,300 --> 00:08:06,460 Mogoče ste trde koda stvari, kot so Glava in noga in logotip, 181 00:08:06,460 --> 00:08:07,950 in vaše slogov, in vse to. 182 00:08:07,950 --> 00:08:11,190 Ampak za kaj takega p-set sedem, če ste manipuliranja zalog in 183 00:08:11,190 --> 00:08:14,690 prikazuje uporabnikovo portfelja, ki je bo dinamično spreminjanje, da bi lahko 184 00:08:14,690 --> 00:08:18,960 zagotovo uporabljate PHP in logiko, da daje ste kot programski jezik za 185 00:08:18,960 --> 00:08:22,320 izhodno dinamično podskupinah strani. 186 00:08:22,320 --> 00:08:25,900 >> Torej, ko govorimo o dinamičnih spletnih strani, ali spletno programiranje, ki je 187 00:08:25,900 --> 00:08:27,200 Kaj ste res govoriš. 188 00:08:27,200 --> 00:08:31,450 Z uporabo jezika, kot so PHP, ali stvari, ti Python ali Ruby, ali Java ali 189 00:08:31,450 --> 00:08:35,900 Še drugi jeziki, da se pozanima baze podatkov pogosto ali drug strežnik in 190 00:08:35,900 --> 00:08:38,580 Nato dinamično izpljunil HTML. 191 00:08:38,580 --> 00:08:42,470 >> Sedaj končni rezultat, kot prahi, je da HTML večine spletnih strani, 192 00:08:42,470 --> 00:08:45,970 vključno z vašo p-set sedem, je verjetno bo velika zmešnjava, če 193 00:08:45,970 --> 00:08:48,060 pogledate na viru koda v brskalniku. 194 00:08:48,060 --> 00:08:49,010 To ni nič takega. 195 00:08:49,010 --> 00:08:51,550 Na tej točki, ko skrbimo slog, skrbimo 196 00:08:51,550 --> 00:08:52,740 stvari, ki ste napisali. 197 00:08:52,740 --> 00:08:56,240 Mi ne bo mar za stvari da, kakšne so vaše koda izhodi. 198 00:08:56,240 --> 00:08:59,520 Torej, ne skrbite zamika Tukaj, če je PHP, ki je 199 00:08:59,520 --> 00:09:01,190 dejansko prikazovanje stvari. 200 00:09:01,190 --> 00:09:04,430 Navsezadnje brskalnik ne bo vseeno, in človek ne bo videti 201 00:09:04,430 --> 00:09:05,400 pri viru anyway. 202 00:09:05,400 --> 00:09:09,000 Mi osebje, na primer, bi treba videti v vašem PHP. 203 00:09:09,000 --> 00:09:13,440 >> Naj vam hitro primer zdaj zakaj drugega bi to lahko bilo koristno. 204 00:09:13,440 --> 00:09:18,620 Torej, odkrito povedano, ne morem se spomniti zadnja Tokrat sem uporabila C rešiti problem, v 205 00:09:18,620 --> 00:09:19,620 realnem svetu. 206 00:09:19,620 --> 00:09:22,330 To je bil verjetno v podiplomski šoli, ko Sem potreboval, da uporabljajo jezik, ki 207 00:09:22,330 --> 00:09:26,710 je bila precej nizka in mi je dal priložnost, da narediš nekaj zelo visok 208 00:09:26,710 --> 00:09:30,720 opravljanju res prihranili toliko CPU ciklov, kot sem lahko, v veliki meri 209 00:09:30,720 --> 00:09:33,990 ker sem bil z uporabo ogromnih podatkovnih zbirk, in vsak CPU cikel prešteti. 210 00:09:33,990 --> 00:09:37,750 In odkrito povedano, tudi v stvareh, kot so telefoni v teh dneh in druge naprave 211 00:09:37,750 --> 00:09:39,910 kjer vam ni povsem imajo toliko spomin in ne boste imeli čisto kot 212 00:09:39,910 --> 00:09:44,160 veliko CPU, z uporabo hitrejših jezikov je še vedno privlačna. 213 00:09:44,160 --> 00:09:47,290 >> Toda v resničnem svetu, ko si želijo, da bi vrgel nekaj programa skupaj 214 00:09:47,290 --> 00:09:50,340 analizirati nekatere podatke, ali ste zbrali Cel kup registracij za 215 00:09:50,340 --> 00:09:53,330 nekateri skupini študentov in želite, da zelo hitro avtomatizira pošiljanje e-pošte 216 00:09:53,330 --> 00:09:56,240 enega po enega za vsakega izmed tistih, registracijski, boste dosegli za 217 00:09:56,240 --> 00:09:59,240 jezik na višji ravni kot C, tako govoriti. 218 00:09:59,240 --> 00:10:04,060 Nekaj ​​podobnega PHP ali Python ali Ruby, ali pol ducata drugih, ki obstajajo 219 00:10:04,060 --> 00:10:04,550 v teh dneh. 220 00:10:04,550 --> 00:10:07,200 Toda tisti trije so verjetno najbolj trendy zdaj. 221 00:10:07,200 --> 00:10:10,840 >> In kaj to pomeni, da lahko odprete up urejevalnik besedila, kot gedit ali 222 00:10:10,840 --> 00:10:14,030 Najbolj karkoli drugega, nato pa šele začetek pisno kodo, brez skrbi 223 00:10:14,030 --> 00:10:17,800 o zbiranju, ne da bi res skrbeti za upravljanje pomnilnika, 224 00:10:17,800 --> 00:10:20,820 vodenje v mislih, čeprav, da je malo Aljkavost bo sčasoma prišel nazaj 225 00:10:20,820 --> 00:10:24,790 ugriznila, če zbirka podatkov dobi večja ali problem postane velik. 226 00:10:24,790 --> 00:10:27,230 Ampak kaj to pomeni za nam je naslednje. 227 00:10:27,230 --> 00:10:29,860 >> Dovolite mi, da gredo naprej in zagon speller od problem nastaviti šest. 228 00:10:29,860 --> 00:10:33,480 Torej je to moja izvedba temelji na Trie da sem na veliki 229 00:10:33,480 --> 00:10:35,500 svet, kjer ne poteka tako dobro. 230 00:10:35,500 --> 00:10:38,720 Vrnili se bomo čez en teden in ponovno tistih, ki se končajo na vrhu 231 00:10:38,720 --> 00:10:40,430 velika tabla na našem zadnjem predavanju. 232 00:10:40,430 --> 00:10:44,520 Ampak za zdaj, naj gredo naprej in samo vodim rešitev v besedilu, in bomo naredili 233 00:10:44,520 --> 00:10:48,460 King James Bible, in gremo. 234 00:10:48,460 --> 00:10:51,080 >> Torej tistih, ki so vse domnevno napačno črkovane besede iz 235 00:10:51,080 --> 00:10:52,240 King James Bible. 236 00:10:52,240 --> 00:10:55,560 In moja izvedba je pol sekunde v celoti. 237 00:10:55,560 --> 00:10:58,270 Tako da ni preveč slabo o tem Zlasti računalnik. 238 00:10:58,270 --> 00:11:01,540 Ampak mislim, koliko Šifra sem moral napisati. 239 00:11:01,540 --> 00:11:02,880 Pomislite, koliko kode si moral napisati. 240 00:11:02,880 --> 00:11:06,170 Pomislite, koliko ur ste porabili v D-dvorana ali vaš domu ali kjer koli 241 00:11:06,170 --> 00:11:07,890 dejansko kodiranje up to rešitev. 242 00:11:07,890 --> 00:11:11,850 >> No, če sem dejansko imajo višjo stopnjo jezik, kot so PHP, upoštevati 243 00:11:11,850 --> 00:11:13,350 kaj lahko storim tukaj. 244 00:11:13,350 --> 00:11:16,410 Prvič, domnevam, da je to namesto vaša distribucija številka. 245 00:11:16,410 --> 00:11:17,790 To je datoteka z imenom speller. 246 00:11:17,790 --> 00:11:20,220 To je na voljo kot del današnjih porazdelitev koda. 247 00:11:20,220 --> 00:11:22,670 In bom pomahala z roko v najbolj podrobnosti, ampak to je dejansko 248 00:11:22,670 --> 00:11:25,500 zanimiv primer, kako boste morda port jezik 249 00:11:25,500 --> 00:11:28,870 kot C nad PHP. 250 00:11:28,870 --> 00:11:33,420 Sem dobesedno odprla dva besedilna okna, ena z mojo C različico speller.c, 251 00:11:33,420 --> 00:11:36,960 in sem jo začel prevajati v moji glavo v PHP, in ga vnesete z uporabo 252 00:11:36,960 --> 00:11:38,840 Najbližji enakovrednih funkcij. 253 00:11:38,840 --> 00:11:40,100 >> Tako da nekatere od teh stvari so drugačne. 254 00:11:40,100 --> 00:11:43,730 Smo videli zadnji čas, da PHP ne uporablja vključujejo v čisto enak način. 255 00:11:43,730 --> 00:11:47,050 Uporablja zahtevajo običajno, čeprav vključujejo ne obstaja. 256 00:11:47,050 --> 00:11:50,330 Opredeliti je malo drugačna od # Define v C, ampak to je 257 00:11:50,330 --> 00:11:51,890 kako naredimo konstanto. 258 00:11:51,890 --> 00:11:55,860 $ Argc se izkaže, obstaja v PHP, Tako smo videli, da je pred. 259 00:11:55,860 --> 00:11:58,650 To so le spremenljivke, vse , ki se začnejo z dolarskih znakov. 260 00:11:58,650 --> 00:12:00,590 Spomnimo se, to so le kup plavajoče točke. 261 00:12:00,590 --> 00:12:03,970 >> Tako da skrajšam zgodbo, ste dobrodošli flip skozi to, če radoveden, to je 262 00:12:03,970 --> 00:12:10,010 Skoraj linija-za-line pretvorba Različica C speller.c v PHP. 263 00:12:10,010 --> 00:12:12,630 In ti bi to naredil še enkrat pol ducata drugih jezikih. 264 00:12:12,630 --> 00:12:14,910 >> Ampak kaj je zanimivo je to. 265 00:12:14,910 --> 00:12:16,910 Ali kaj je odkrito Rastužujući je to. 266 00:12:16,910 --> 00:12:20,790 Dovolite mi, da gredo naprej in tip o dictionary.php, in trdijo, da sem 267 00:12:20,790 --> 00:12:23,670 dogaja, da gredo naprej in ponovno izvajanje Problem nastavite šest tukaj. 268 00:12:23,670 --> 00:12:27,530 >> Tako da je predlagala, prvič, da v tem datoteke, ki se bo izvajal v 269 00:12:27,530 --> 00:12:30,550 PHP, zato naj odprem oznake, kot je ta. 270 00:12:30,550 --> 00:12:34,780 Naj vam dam globalni spremenljivka $ velikost dobi nič. 271 00:12:34,780 --> 00:12:36,710 In jaz bom dal Sam hash tabelo. 272 00:12:36,710 --> 00:12:38,110 Bom uporabo razpršene tabele za to stvar. 273 00:12:38,110 --> 00:12:42,070 Kako razglasi razpršene tabele v PHP? 274 00:12:42,070 --> 00:12:42,990 Končano. 275 00:12:42,990 --> 00:12:43,980 OK. 276 00:12:43,980 --> 00:12:48,870 >> Torej oklepaj zaklepaj predstavlja kaj v PHP, kot smo videli? 277 00:12:48,870 --> 00:12:51,850 Matrika, vendar matrika, ki bi lahko lahko asociativno paleto. 278 00:12:51,850 --> 00:12:54,320 Asociativno paleto je podatkovna struktura, ki 279 00:12:54,320 --> 00:12:55,860 sodelavci ključe z vrednostmi. 280 00:12:55,860 --> 00:12:59,430 >> Zdaj v najpreprostejši številčno indeksirajo matrika, te tipke so kaj? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 Nič, ena, dva, tri, prav? 283 00:13:03,960 --> 00:13:08,780 Stara šola stlačiti nazaj od C, vendar pa lahko tudi strune kot foo in bar, 284 00:13:08,780 --> 00:13:12,210 ali Maxwell, ali kakršnega koli niz. 285 00:13:12,210 --> 00:13:14,240 Tako da sem lahko vzvod, ki čez nekaj trenutkov. 286 00:13:14,240 --> 00:13:17,550 >> Dovolite mi, da gredo naprej in razglaša funkcije, kot so - 287 00:13:17,550 --> 00:13:19,020 Naredimo obremenitev (prvi). 288 00:13:19,020 --> 00:13:20,690 Torej funkcijo obremenitve (). 289 00:13:20,690 --> 00:13:23,440 In PHP je malo drugačna po tem, da ste dobesedno tip funkcije, ampak 290 00:13:23,440 --> 00:13:24,930 Ne vnesite vrsto donosa. 291 00:13:24,930 --> 00:13:28,760 Jaz grem naprej in rekli, da obremenitev (funkcija), naj se v 292 00:13:28,760 --> 00:13:31,000 argument $ slovar, samo kot različica C storil. 293 00:13:31,000 --> 00:13:32,510 Delam, da iz spomina. 294 00:13:32,510 --> 00:13:34,910 >> In predlagam, da sem dogaja, da to storijo. 295 00:13:34,910 --> 00:13:37,080 Bom enostavno narediti foreach. 296 00:13:37,080 --> 00:13:40,710 Bom pokličete funkcijo datoteko (), ki poteka na ime, ki 297 00:13:40,710 --> 00:13:44,990 datoteko, ki je spremenljiva $ Slovar kot $ besedo. 298 00:13:44,990 --> 00:13:49,410 In nato znotraj mojega zanke for tukaj sem, dogaja, da gredo naprej in shranite v moji 299 00:13:49,410 --> 00:13:57,440 $ Tabela, $ beseda postane resnica. 300 00:13:57,440 --> 00:13:57,918 Končano. 301 00:13:57,918 --> 00:14:01,264 Oh, čakaj. 302 00:14:01,264 --> 00:14:02,422 Končano. 303 00:14:02,422 --> 00:14:02,760 OK. 304 00:14:02,760 --> 00:14:04,970 >> Da je obremenitev () funkcija pravijo v PHP. 305 00:14:04,970 --> 00:14:05,865 Zdaj, zakaj to deluje? 306 00:14:05,865 --> 00:14:07,010 In sem nekako goljufanja tukaj. 307 00:14:07,010 --> 00:14:09,980 >> Torej, ena, foreach smo videli Na kratko zadnjič. 308 00:14:09,980 --> 00:14:13,680 To samo pomeni, da si lahko izbirate prek matrika ne moti, zi 309 00:14:13,680 --> 00:14:16,150 in n in plus plus, in vse to. 310 00:14:16,150 --> 00:14:21,350 Slovar je seveda ime datoteke, nekaj podobnega velika ali majhna, dva 311 00:14:21,350 --> 00:14:22,830 slovarji smo uporabili zadnjič. 312 00:14:22,830 --> 00:14:26,715 Datoteka je funkcija, ki odpira besedilo datoteko, jo prebere v vrsticah in 313 00:14:26,715 --> 00:14:29,840 Roke si nazaj širokim naborom, vsaka od katere elementi so 314 00:14:29,840 --> 00:14:31,340 črta iz te datoteke. 315 00:14:31,340 --> 00:14:36,040 Tako da je kombinacija fopen in fread, in medtem ko zanke in fclose, 316 00:14:36,040 --> 00:14:37,080 in vse to. 317 00:14:37,080 --> 00:14:40,150 Končno, beseda pomeni le, da je spremenljivka bom, da imajo dostop do 318 00:14:40,150 --> 00:14:41,890 na vsaki ponovitvi v to zanko. 319 00:14:41,890 --> 00:14:46,910 >> Torej na kratko, tale liner tu pomeni odpreti datoteko, katere ime je v 320 00:14:46,910 --> 00:14:50,750 slovar, spremenljivka, ponovitev čez je po vrsticah, in vsakič, ko prideš 321 00:14:50,750 --> 00:14:54,290 linija, trgovina s spremenljivim imenovano besedo, in naredite nekaj z besedo. 322 00:14:54,290 --> 00:14:55,280 Kaj hočem narediti? 323 00:14:55,280 --> 00:14:58,110 Rad bi dal besedo v mojo razpršene tabele. 324 00:14:58,110 --> 00:15:00,860 >> No, jaz lahko dal nekaj v moji hash tabelo tako kot v C 325 00:15:00,860 --> 00:15:02,140 uporabo oglatih oklepajev. 326 00:15:02,140 --> 00:15:03,660 To je ime moje razpršene tabele. 327 00:15:03,660 --> 00:15:07,180 Grem v indeksu, da je hašiš Tabela na tej lokaciji. 328 00:15:07,180 --> 00:15:08,920 Torej ni držalo nič, ne oklepaj ena. 329 00:15:08,920 --> 00:15:11,990 Nosilec quote citata nekaj, karkoli da beseda. 330 00:15:11,990 --> 00:15:15,200 In tako kot ste morda v vaši hash tabela delo Trie, ki ste jo pravkar shranjevanje 331 00:15:15,200 --> 00:15:17,650 dejansko logično, implicitno ali eksplicitno. 332 00:15:17,650 --> 00:15:18,260 Končano. 333 00:15:18,260 --> 00:15:20,000 Jaz shranjevanje vrednost true. 334 00:15:20,000 --> 00:15:23,150 >> Zdaj obstaja nekaj stvari, Jaz rezanje vogali tukaj. 335 00:15:23,150 --> 00:15:27,720 Tehnično pa se dogaja, da se nadležno novo vrstico, / n, na koncu 336 00:15:27,720 --> 00:15:28,820 vsaka od teh besed. 337 00:15:28,820 --> 00:15:31,770 Torej bi jaz verjetno pokličete funkcijo PHP imenovano chop (), ki bo 338 00:15:31,770 --> 00:15:33,460 dobesedno sesekljajte to dol. 339 00:15:33,460 --> 00:15:35,020 In sem pravzaprav morali naredite eno stvar. 340 00:15:35,020 --> 00:15:38,380 Verjetno bi moral prirastek velikosti na vsaki ponovitev, tako da sem sledenja 341 00:15:38,380 --> 00:15:39,560 globalno, kaj je to. 342 00:15:39,560 --> 00:15:43,180 In iskreno, in to je eden od vidiki neumni PHP, če ste 343 00:15:43,180 --> 00:15:46,950 z globalno spremenljivko, morate izrecno povedati, da ste. 344 00:15:46,950 --> 00:15:51,670 Torej bom dejansko tip v globalni $ Velikost, globalna $ mizo, in zdaj 345 00:15:51,670 --> 00:15:52,690 moj funkcija je končana. 346 00:15:52,690 --> 00:15:57,475 >> Torej ni tako enostavno, kot prej, vendar verjetno vzel manj časa kot C 347 00:15:57,475 --> 00:15:58,220 Različica, morda? 348 00:15:58,220 --> 00:15:58,730 OK. 349 00:15:58,730 --> 00:16:00,390 >> Tako da zdaj naredimo kljukico () funkcijo. 350 00:16:00,390 --> 00:16:04,300 Poglejmo, če je to vsaj vzel ur na koncu, da nas je vzel v C. Tako 351 00:16:04,300 --> 00:16:06,500 Naj gredo naprej in razglaša preveri, kot funkcijo. 352 00:16:06,500 --> 00:16:09,070 Traja v argumentu besedo, ki je bo prišel Speller. 353 00:16:09,070 --> 00:16:13,410 In grem preveriti, če po spremenljivi Isset, mizo 354 00:16:13,410 --> 00:16:18,400 Nosilec strtolower od ust - 355 00:16:18,400 --> 00:16:20,590 dajmo uravnotežiti vse moje oklepaji - 356 00:16:20,590 --> 00:16:24,275 nato vrne true. 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 Drugega - 359 00:16:28,460 --> 00:16:30,330 da je bilo res težko Del tega programa. 360 00:16:30,330 --> 00:16:31,940 Else, vrne false. 361 00:16:31,940 --> 00:16:32,630 Končano. 362 00:16:32,630 --> 00:16:33,460 To preverjanje (). 363 00:16:33,460 --> 00:16:34,520 >> Zdaj, zakaj to deluje? 364 00:16:34,520 --> 00:16:37,040 No, eno sem opravil v besedo, ki je niz. 365 00:16:37,040 --> 00:16:41,400 Dva, sem preverjanje znotraj hash Tabela, ki je pozval $ mizo. 366 00:16:41,400 --> 00:16:45,470 Jaz sem prisili, da male s klicem Funkcija precej podobna tolower () v 367 00:16:45,470 --> 00:16:48,580 C, vendar ne na cele besede ne sam znak. 368 00:16:48,580 --> 00:16:52,680 In če je ta določen, z drugimi besedami, obstaja je vrednost niz, z drugimi besedami, 369 00:16:52,680 --> 00:16:54,880 če je to res, potem je odgovor da, to je beseda. 370 00:16:54,880 --> 00:16:56,530 Ker sem ga tam z obremenitvijo (). 371 00:16:56,530 --> 00:16:59,100 In če ne, bom vrne false. 372 00:16:59,100 --> 00:17:00,090 >> Zdaj so drugi enostavno. 373 00:17:00,090 --> 00:17:03,570 Velikost function (), kako to storiti? 374 00:17:03,570 --> 00:17:05,230 V bistvu sem se vrnil $ velikost. 375 00:17:05,230 --> 00:17:07,770 Ampak jaz tehnično potrebno storite to nadležno stvar. 376 00:17:07,770 --> 00:17:10,640 In dejansko se sliši, sem bil rezanje en vogal preveč. 377 00:17:10,640 --> 00:17:12,920 Res moram narediti globalno $ mizo. 378 00:17:12,920 --> 00:17:16,260 >> Ampak to pa je dejal, razkladanje). 379 00:17:16,260 --> 00:17:17,380 Razkladanje () je neverjetno. 380 00:17:17,380 --> 00:17:20,500 Funkcija razkladanje (). 381 00:17:20,500 --> 00:17:23,990 Kako se želijo izvajati razkladanje ()? 382 00:17:23,990 --> 00:17:25,079 Končano. 383 00:17:25,079 --> 00:17:25,450 OK. 384 00:17:25,450 --> 00:17:28,900 >> Torej razkladanje (), upravljanje s pomnilnikom je v celoti poskrbljeno za vas 385 00:17:28,900 --> 00:17:31,800 nekaj podobnega PHP in veliko jezikov na višji ravni. 386 00:17:31,800 --> 00:17:32,600 Torej, to je neverjetno. 387 00:17:32,600 --> 00:17:36,080 Všeč mi je, zakaj za vraga smo preživeli preteklosti Osem plus tedna v C pisno 388 00:17:36,080 --> 00:17:41,030 očitno res počasi, res čas porabijo težave z deset ur 389 00:17:41,030 --> 00:17:42,530 dela v okviru naših pasov? 390 00:17:42,530 --> 00:17:46,110 >> No, za eno stvar, to lahko delajo globe za majhne programe. 391 00:17:46,110 --> 00:17:47,840 Prav gotovo pospešil moj čas razvoja. 392 00:17:47,840 --> 00:17:49,790 Ampak poglejmo, kaj se zgodi v resničnem svetu. 393 00:17:49,790 --> 00:17:52,370 >> Dovolite mi, da gredo v ta imenik v oknu terminala. 394 00:17:52,370 --> 00:17:53,370 Tam je speller. 395 00:17:53,370 --> 00:17:56,570 In opazil, kot prahi, in boste morda so se pojavile te težave v sklop 396 00:17:56,570 --> 00:17:58,190 šest ali sedem problem nastaviti. 397 00:17:58,190 --> 00:18:01,610 Vam ni treba strogo konec PHP datoteke s. php. 398 00:18:01,610 --> 00:18:05,250 Če si dal linijo, kot da je prvi na sam vrh, to je posebna linija 399 00:18:05,250 --> 00:18:10,980 skladnje, ki v bistvu pomeni najti Program se imenuje PHP, in jo uporabite za 400 00:18:10,980 --> 00:18:12,270 tolmačiti to datoteko. 401 00:18:12,270 --> 00:18:15,410 Tako da zdaj nihče zares ne ve, da Tečem PHP program. 402 00:18:15,410 --> 00:18:19,860 To lahko teče, kot da čeprav so bili pripravljeni v nekaj C. 403 00:18:19,860 --> 00:18:20,650 >> Ampak tukaj je stvar. 404 00:18:20,650 --> 00:18:21,600 Pravzaprav, naredimo to še enkrat. 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /. 406 00:18:23,530 --> 00:18:25,390 Tam je speller. 407 00:18:25,390 --> 00:18:26,720 OK, 0,44 sekunde. 408 00:18:26,720 --> 00:18:28,080 Hitrejši je dobil tokrat. 409 00:18:28,080 --> 00:18:29,745 >> Zdaj gremo v PHP različico. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 Lepo dotik. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 Ampak samo pomislite, koliko časa Rešil sem na uradnih ur. 414 00:18:53,285 --> 00:18:56,990 415 00:18:56,990 --> 00:18:57,790 OK. 416 00:18:57,790 --> 00:19:01,020 >> Torej 3,59 sekunde, kar je dejansko ne zveni natančno niti. 417 00:19:01,020 --> 00:19:03,710 Ampak to je zato, ker skrajšam zgodbo, ko ste tiskanje ogromne količine 418 00:19:03,710 --> 00:19:06,840 stvari na zaslonu, da sam zavira stvari navzdol. 419 00:19:06,840 --> 00:19:11,260 Kaj je res je CPU v Aparat je bil 3,59 sekunde, v 420 00:19:11,260 --> 00:19:15,260 V nasprotju z C, ki je 0,44 sekund pred kratkim. 421 00:19:15,260 --> 00:19:17,620 To je resnično red Obseg drugačna. 422 00:19:17,620 --> 00:19:20,280 >> Torej, če je to cena, ki prihajajo iz? 423 00:19:20,280 --> 00:19:21,790 Zakaj je tako veliko počasnejši? 424 00:19:21,790 --> 00:19:24,220 Zakaj PHP opravljajo tako slabo? 425 00:19:24,220 --> 00:19:25,242 Danielle? 426 00:19:25,242 --> 00:19:26,550 >> PUBLIKA: Saj ni res uporabite razpršene tabele. 427 00:19:26,550 --> 00:19:27,710 >> DAVID Malan: nisem zares uporabite razpršene tabele. 428 00:19:27,710 --> 00:19:28,760 Tako sem nekako naredil. 429 00:19:28,760 --> 00:19:29,870 Torej je asociativno paleto. 430 00:19:29,870 --> 00:19:33,650 Najverjetneje je, če ljudje v PHP so res pametno, se uporabljajo pod 431 00:19:33,650 --> 00:19:39,520 hood dejansko miza hash izvajati nekaj podobnega C ali C + +. 432 00:19:39,520 --> 00:19:41,290 Vendar. 433 00:19:41,290 --> 00:19:42,760 Ja. 434 00:19:42,760 --> 00:19:44,010 >> PUBLIKA: [neslišno]. 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> DAVID Malan: Ja. 437 00:19:47,080 --> 00:19:50,780 Tako da vsak izmed funkcij sem napisal zdaj - Pravzaprav lahko rečemo, da še enkrat 438 00:19:50,780 --> 00:19:51,480 malo glasneje? 439 00:19:51,480 --> 00:19:54,509 >> PUBLIKA: Vsak od funkcij, ki jih ste vključeni ima veliko bolj poln 440 00:19:54,509 --> 00:19:56,610 kapaciteta od - 441 00:19:56,610 --> 00:19:57,550 >> DAVID Malan: Torej, to je zelo res. 442 00:19:57,550 --> 00:20:01,490 Tam je veliko več režijske da smo ni res videl z osredotočanjem na samo 443 00:20:01,490 --> 00:20:03,730 dictionary.php, kar sem napisal. 444 00:20:03,730 --> 00:20:08,020 Nasprotno, obstaja cela tolmač dogaja v ozadju. 445 00:20:08,020 --> 00:20:12,040 Pravzaprav, ko sem tekel ta program, je ni bil zagnan prevedene ničel in enic 446 00:20:12,040 --> 00:20:14,290 zasnovan za moj Intel CPU. 447 00:20:14,290 --> 00:20:19,270 Namesto tega je bilo teče po vrsticah PHP kodo, ki je videti natanko 448 00:20:19,270 --> 00:20:20,350 kot smo jo vnesli. 449 00:20:20,350 --> 00:20:22,475 In tako, ko ga uporabljate razlaga jezik, si 450 00:20:22,475 --> 00:20:23,850 dejansko ne plača to ceno. 451 00:20:23,850 --> 00:20:27,010 To bo trajalo nekaj časa, da se glasi datoteka od zgoraj navzdol, levo 452 00:20:27,010 --> 00:20:30,740 desno, nato pa izvesti vsak linija znova in znova. 453 00:20:30,740 --> 00:20:34,250 >> Zdaj v resnici, še posebej na spletu, lahko dejansko pospeši ta proces 454 00:20:34,250 --> 00:20:38,660 z caching rezultate PHP code mogoče razlagati. 455 00:20:38,660 --> 00:20:41,640 In da je smiselno na spletu, saj Če ga še nimate enega uporabnika, kot 456 00:20:41,640 --> 00:20:46,300 jaz tukaj, ampak 1000 ali 10.000 uporabnikov, potem morda prvič datoteka 457 00:20:46,300 --> 00:20:49,050 pogledali, da je počasen, nato pa se to je veliko hitreje. 458 00:20:49,050 --> 00:20:51,000 >> Ampak tudi to, še enkrat, je kompromis. 459 00:20:51,000 --> 00:20:53,870 In nekaj podobnega podatkih raziskovalnega določiti, ali celo nekaj velikega, kot so 460 00:20:53,870 --> 00:20:58,330 tega bodo uporabniki na koncu začutite, da je upočasnitev. 461 00:20:58,330 --> 00:21:02,670 >> Torej na kratko, razlaga jeziki zelo v modi, zelo priljubljena, in 462 00:21:02,670 --> 00:21:06,710 Iskreno so verjetno ste jeziki morajo prispeti na pri reševanju problemov 463 00:21:06,710 --> 00:21:08,200 Po CS50. 464 00:21:08,200 --> 00:21:12,720 Vendar zavedaš, koliko ste zares ob samoumevnega pod pokrovom 465 00:21:12,720 --> 00:21:15,910 res ti zadnjih nekaj tednov v hash mize, in drevesa, in se trudi, 466 00:21:15,910 --> 00:21:20,770 , ki se uporabljajo na koncu dejansko izvajati stvari, kot oklepaj, 467 00:21:20,770 --> 00:21:24,200 oglati oklepaj, kar smo lahko zdaj hvaležno vzeti za samoumevno. 468 00:21:24,200 --> 00:21:26,360 >> Torej, kaj si poglejmo zdaj na tej spletni kontekst. 469 00:21:26,360 --> 00:21:29,890 In sem omenil zadnjič, da obstaja kup superglobals v PHP, da 470 00:21:29,890 --> 00:21:32,490 v resnici niso pomembni v ukazni vrstici. 471 00:21:32,490 --> 00:21:36,210 Oni so bolj pomembni v okviru z uporabo PHP v spletnem okolju. 472 00:21:36,210 --> 00:21:41,220 Torej teče PHP na spletni strežnik, da ustvariti stvari, kot so HTML. 473 00:21:41,220 --> 00:21:44,540 >> In smo pogledal $ _GET in $ _POST, in to je, če se samodejno uporabnikov 474 00:21:44,540 --> 00:21:49,100 vhod konča le, če predloži tvorijo v datoteko, ki se konča v. php na spletu 475 00:21:49,100 --> 00:21:50,460 strežnik kot aparata. 476 00:21:50,460 --> 00:21:53,310 Toda poglejmo na kratko na $ _COOKIE In $ _SESSION. 477 00:21:53,310 --> 00:21:56,670 >> Z vidika navadnega je, kaj je piškotek, kot si ga razumeti v kontekstu 478 00:21:56,670 --> 00:21:58,220 uporaba spleta? 479 00:21:58,220 --> 00:21:59,450 >> PUBLIKA: datoteke na računalniku. 480 00:21:59,450 --> 00:21:59,920 >> DAVID Malan: Ja. 481 00:21:59,920 --> 00:22:03,500 To je slika na uporabnikovem računalniku zasajene s katero koli spletno mesto 482 00:22:03,500 --> 00:22:04,410 se zgodi, da obiščete. 483 00:22:04,410 --> 00:22:07,334 Torej, ko greste na Facebooku, ko greš da bankofamerica.com, ko greš 484 00:22:07,334 --> 00:22:10,330 na google.com, ko greš na skoraj vse spletna stran na svetu v teh dneh, 485 00:22:10,330 --> 00:22:14,850 vključno cs50.net, se piškotek posadili na vašem računalniku, ki je 486 00:22:14,850 --> 00:22:19,800 bodisi vrednosti shranjene v RAM v vašem Računalnik v pomnilniku brskalnika ali 487 00:22:19,800 --> 00:22:22,800 včasih res datoteka shranjena na trdem disku. 488 00:22:22,800 --> 00:22:26,960 >> In kaj se ponavadi shranjene v tej datoteki ni vaše uporabniško ime, ni vaša 489 00:22:26,960 --> 00:22:31,060 geslo, običajno ni nekaj, občutljiv, če spletna stran ni tako 490 00:22:31,060 --> 00:22:35,040 dobro z njihove varnosti, temveč je velik edinstven identifikator med 491 00:22:35,040 --> 00:22:35,680 druge stvari. 492 00:22:35,680 --> 00:22:38,920 To je velika naključno število zasajene na vašem računalnik, vendar si lahko zamislite kot 493 00:22:38,920 --> 00:22:42,740 nekakšen virtualni žig roko, kot od klub ali nekaj zabaviščni park, ki 494 00:22:42,740 --> 00:22:47,160 dovoljuje osebje, lastniki, ki storitev, da se spomnimo, kdo ste. 495 00:22:47,160 --> 00:22:51,030 Torej, če je velika naključno število je všeč 12345678, čeprav je to očitno 496 00:22:51,030 --> 00:22:54,180 ne preveč naključno, pomislite, da je kot roko žig, da ko boste obiskali 497 00:22:54,180 --> 00:22:57,930 facebook.com prvič, se žig to številko na roko. 498 00:22:57,930 --> 00:23:01,510 In potem, ker ste govorili HTTP, si pri čemer je brskalnik, in ker Facebook 499 00:23:01,510 --> 00:23:06,440 očitno govori isto kot spletni strežnik, protokol HTTP pravi, da 500 00:23:06,440 --> 00:23:09,930 kadarkoli kasneje obiščete facebook.com, ali je to druga 501 00:23:09,930 --> 00:23:13,560 kasneje, uro kasneje, še naslednji dan tako dolgo, kot ste ni izrecno 502 00:23:13,560 --> 00:23:17,050 odjavili, ki učinkovito je kot umivanju rok. 503 00:23:17,050 --> 00:23:20,280 HTTP pravi, da bi morali predstaviti svoje roko žig vsakič, ko 504 00:23:20,280 --> 00:23:22,020 vrnitev na tej spletni strani. 505 00:23:22,020 --> 00:23:24,390 >> Kaj Facebook, nato pa je, da so poglej na tej strani žigom in 506 00:23:24,390 --> 00:23:26,850 pravijo, oh, 123456789. 507 00:23:26,850 --> 00:23:30,260 Ne vem, na prvi pogled, da je to David Malan v Cambridgeu, 508 00:23:30,260 --> 00:23:34,690 Massachusetts, vendar pa lahko preverijo svoje baze podatkov in reči, oh, oseba 509 00:23:34,690 --> 00:23:39,930 na katere računalniške smo posadili 123456789 David Malan iz Cambridgea, 510 00:23:39,930 --> 00:23:40,440 Massachusetts. 511 00:23:40,440 --> 00:23:46,000 Pokažimo, da uporabnik potem njegov profil stran ali njegov News Feed. 512 00:23:46,000 --> 00:23:49,660 >> Vendar pa je problem v tem, če je to je, kako web res deluje. 513 00:23:49,660 --> 00:23:51,390 Oglejmo si na hitro primer. 514 00:23:51,390 --> 00:23:55,190 Kaj je dejansko šel za povedati facebook.com. 515 00:23:55,190 --> 00:23:58,130 Toda preden lahko gremo tja, naj grem naprej in odprla Chrome 516 00:23:58,130 --> 00:23:59,790 Inšpektor tukaj. 517 00:23:59,790 --> 00:24:01,140 Naj pogledam na kartici omrežja. 518 00:24:01,140 --> 00:24:06,020 In zdaj gremo naprej in vnesite V https://facebook.com. 519 00:24:06,020 --> 00:24:09,410 In delam to tako, da ne vidimo vse te preusmeritev in odpadkov 520 00:24:09,410 --> 00:24:10,660 Čas je videti skozi njih. 521 00:24:10,660 --> 00:24:12,690 Dovolite mi, zadeti nastopiti. 522 00:24:12,690 --> 00:24:13,130 >> Vse je v redu. 523 00:24:13,130 --> 00:24:14,580 Bomo videli cel kup prošenj. 524 00:24:14,580 --> 00:24:15,640 Pride Facebook. 525 00:24:15,640 --> 00:24:16,930 Tam je cel kup datotek. 526 00:24:16,930 --> 00:24:19,290 In tu je po moje navedbe o latence zadnji čas, da se je 527 00:24:19,290 --> 00:24:21,240 Veliko zahtev HTTP. 528 00:24:21,240 --> 00:24:23,700 Toda prva je verjetno Najbolj zanimivo. 529 00:24:23,700 --> 00:24:26,420 >> Torej, dajmo se pomaknite dol, in Bom povečate v sekundi. 530 00:24:26,420 --> 00:24:29,090 To se dogaja, da je vrsta nered, ampak poglejmo. 531 00:24:29,090 --> 00:24:31,660 Facebook se nam pošljete cel kup stvari. 532 00:24:31,660 --> 00:24:33,490 >> Ampak hej, zanimivo. 533 00:24:33,490 --> 00:24:37,880 Oni sajenje in ne enega, ampak štiri ročni žigi na moji roki tukaj. 534 00:24:37,880 --> 00:24:40,400 Set-cookie, Set-piškotek, set-cookie, set-cookie. 535 00:24:40,400 --> 00:24:44,030 In obstaja nekaj funkcij tukaj. 536 00:24:44,030 --> 00:24:46,170 Vsi so omeniti nekaj nekako izteka. 537 00:24:46,170 --> 00:24:50,090 In izgleda, da Facebook je upal me spomnite šele leta 2015. 538 00:24:50,090 --> 00:24:53,670 Tako da je verjetno čas, v katerem Moram odjaviti ali jih bomo samo 539 00:24:53,670 --> 00:24:55,710 avtomatično domnevajo, da sem Ne bo se vrnil. 540 00:24:55,710 --> 00:24:57,840 Tako da je dejansko spodobno časa. 541 00:24:57,840 --> 00:24:59,170 >> In tam so nekateri drugi stvari se dogaja tukaj. 542 00:24:59,170 --> 00:25:03,036 Zdi se, da prisilno Ta piškotek črta z besedami, da potekel leta 1970 543 00:25:03,036 --> 00:25:04,460 Pred obstajala piškotki. 544 00:25:04,460 --> 00:25:06,510 Torej, brskalnik le, da bo domnevati, OK, to je kot 545 00:25:06,510 --> 00:25:07,910 umivanje rok žig. 546 00:25:07,910 --> 00:25:11,240 >> Toda zdaj, ko je moj brskalnik omogoča naknadna prošnja - 547 00:25:11,240 --> 00:25:14,340 Naj gredo naprej in to znova in znova naložite. 548 00:25:14,340 --> 00:25:18,170 Zdaj pa me pomaknete nazaj top zahtevo in dol 549 00:25:18,170 --> 00:25:20,760 tukaj, zahteva glave. 550 00:25:20,760 --> 00:25:21,390 Opazijo. 551 00:25:21,390 --> 00:25:25,280 Torej, zdaj sem pod glave ne odziva, Opazil pa pravi zahtevajte glave. 552 00:25:25,280 --> 00:25:29,220 In opazil, da je moj brskalnik kot del njen zahtevek po hitting reload ima 553 00:25:29,220 --> 00:25:32,780 pošlje vsaj informacije. 554 00:25:32,780 --> 00:25:34,670 Ne set-cookie, toda piškotek. 555 00:25:34,670 --> 00:25:38,750 Torej, to je linija, glava HTTP tako govoriti, kje je moj brskalnik je nekako 556 00:25:38,750 --> 00:25:43,340 da ne vedoč, da je moja predstavitev moja roka za pregled Facebook. 557 00:25:43,340 --> 00:25:46,020 >> Tako da lahko ti piškotki uporablja pa za kaj? 558 00:25:46,020 --> 00:25:49,420 Da se spomnimo, kdo ste, ali pa se spomnimo, kako veliko krat ste bili tam, ali 559 00:25:49,420 --> 00:25:50,280 res karkoli. 560 00:25:50,280 --> 00:25:52,742 >> Torej, tukaj je counter.php. 561 00:25:52,742 --> 00:25:53,780 In mi približati pisave. 562 00:25:53,780 --> 00:25:58,380 In vsakič, ko sem osvežite stran, opazili to je spomniti, kolikokrat 563 00:25:58,380 --> 00:25:59,250 Bil sem tam. 564 00:25:59,250 --> 00:26:00,570 No, to še ni vse, da je impresivna. 565 00:26:00,570 --> 00:26:03,140 Reciva, da zaprete zavihek, in zdaj se vrnimo k 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php. 567 00:26:07,860 --> 00:26:08,970 >> Oh, to je zanimivo. 568 00:26:08,970 --> 00:26:10,960 Še vedno spomnil, celo čeprav sem zaprt zavihek. 569 00:26:10,960 --> 00:26:14,010 In odkrito povedano, če zaprem brskalnik, če se izvaja na pravilen način, sem 570 00:26:14,010 --> 00:26:18,950 bi se še spomnite, da je ta uporabnik kdo je on ali ona je bila prvič, in 571 00:26:18,950 --> 00:26:22,840 Samo enkrat sem šel v meniju brskalnika Chrome, ki tukaj je tukaj in pojdite na 572 00:26:22,840 --> 00:26:25,990 Zgodovina in kliknite Počisti podatke brskanja, saj se nekateri od vas ima v 573 00:26:25,990 --> 00:26:33,050 preteklosti, šele potem se bo piškotki dejansko se črta v spletu 574 00:26:33,050 --> 00:26:33,970 razvoj. 575 00:26:33,970 --> 00:26:35,340 >> Torej, če gremo - 576 00:26:35,340 --> 00:26:37,080 dajmo blizu gedit tukaj. 577 00:26:37,080 --> 00:26:38,910 In če gremo zdaj v to datoteko. 578 00:26:38,910 --> 00:26:44,210 Dovolite mi, da gre v našem vhosts / localhost / javno, in mi to 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 Obvestilo, da je to precej preprost program. 581 00:26:48,350 --> 00:26:50,250 To je zelo preprosto spletno stran. 582 00:26:50,250 --> 00:26:51,770 >> Torej začetek datoteke je le nekaj komentarjev. 583 00:26:51,770 --> 00:26:54,930 Ampak tukaj je nova linija, ki jo lahko Videl že v p-set sedem, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 To je linija PHP kode, ki v bistvu pove, spletni strežnik, da 586 00:27:00,380 --> 00:27:03,400 prepričani, da žigosa roke in se preverite ročne žige. 587 00:27:03,400 --> 00:27:06,810 To je vse, kar počne linijo, in to pa vse to proces za nas. 588 00:27:06,810 --> 00:27:09,510 Nato opazil sem pravkar dobil dve veji tukaj. 589 00:27:09,510 --> 00:27:14,150 Če Counter znotraj tega posebna globalna spremenljivka imenuje 590 00:27:14,150 --> 00:27:18,010 $ _SESSION Se določi - z drugimi besedami, če obstaja nekaj vrednost tam - 591 00:27:18,010 --> 00:27:22,440 kaj je to dobil in ga shranite na lokalni spremenljivko z imenom $ števec. 592 00:27:22,440 --> 00:27:27,000 Drugega, recimo dodelite $ števec Privzeta vrednost 0. 593 00:27:27,000 --> 00:27:30,320 >> Zdaj tukaj je en vidik PHP, ki je hkrati blagoslov in prekletstvo. 594 00:27:30,320 --> 00:27:32,080 PHP je malo površen. 595 00:27:32,080 --> 00:27:35,160 Torej, medtem ko je v C, kaj bi Obseg pultu so bili 596 00:27:35,160 --> 00:27:36,725 bodisi tukaj ali tukaj? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> To bi bila omejena za tiste zavite oklepaje. 599 00:27:41,690 --> 00:27:42,090 Veš kaj? 600 00:27:42,090 --> 00:27:46,920 V PHP, obstaja tudi zunaj tistih zavitimi oklepaji, tukaj in tukaj, 601 00:27:46,920 --> 00:27:49,120 in tukaj in tukaj, in tudi spodaj. 602 00:27:49,120 --> 00:27:52,400 Zato pravim, da je to blagoslov v smislu da vam ni treba razmišljati, kot 603 00:27:52,400 --> 00:27:54,070 trd kot smo to storili tednoma. 604 00:27:54,070 --> 00:27:56,880 Ampak to je tako malo prekletstvo v da ni važno, če boste uporabili spremenljivko 605 00:27:56,880 --> 00:28:00,020 PHP, vsaj v programu, kot je ta, je globalno dostopne za 606 00:28:00,020 --> 00:28:01,170 boljše ali slabše. 607 00:28:01,170 --> 00:28:06,130 Torej, moraš imeti v mislih, da je zdaj vaše spremenljivke ne sme biti neopredeljenih. 608 00:28:06,130 --> 00:28:07,640 Morda ste jih opredeliti drugje. 609 00:28:07,640 --> 00:28:09,460 >> Ampak kaj bom končno naredil? 610 00:28:09,460 --> 00:28:13,160 Grem notri shranjevanje tega globalnega spremenljivi kot vrednota 611 00:28:13,160 --> 00:28:17,060 Števec ključni rezultat delaš števec plus 1. 612 00:28:17,060 --> 00:28:18,910 Torej je to le aritmetično da ne 613 00:28:18,910 --> 00:28:20,590 stopnjevanja tega števca. 614 00:28:20,590 --> 00:28:24,850 In dejstvo, da sem shranjevanje, da Vrednost nazaj sem se sredstva za 615 00:28:24,850 --> 00:28:29,970 v bistvu ažuriranje baze podatkov do vedeti, da je uporabnik 123456789 616 00:28:29,970 --> 00:28:31,010 Tukaj dvakrat. 617 00:28:31,010 --> 00:28:33,780 In ko sem to naredil še enkrat, naslednjič, ko sem osvežite stran, da se dogaja, da preverite 618 00:28:33,780 --> 00:28:36,710 moja roka žig in rekel, oh, Uporabnik 123456789 ima zdaj 619 00:28:36,710 --> 00:28:38,410 tu že trikrat. 620 00:28:38,410 --> 00:28:43,390 >> Pa kaj PHP in podobni jeziki delajo za nas so kipec 621 00:28:43,390 --> 00:28:47,720 izvedeti, kako in kje in kako dolgo Shranjevanje vrednosti v tej posebni 622 00:28:47,720 --> 00:28:48,830 superglobal. 623 00:28:48,830 --> 00:28:52,750 In to superglobal naslednjič, ko sem obiščite stran je nekako čudežno 624 00:28:52,750 --> 00:28:57,440 že poseljena, napolnjena z vrednostmi, ki bili tam zadnjič, ko ste obiskali, 625 00:28:57,440 --> 00:29:02,310 ali je bil to drugi nazaj, teden nazaj, ali pa v letu 2013 in smo zdaj govorimo 626 00:29:02,310 --> 00:29:03,790 okoli 2015. 627 00:29:03,790 --> 00:29:07,600 PHP in spletni strežnik poskrbel za vse to za vas. 628 00:29:07,600 --> 00:29:08,850 >> PUBLIKA: [neslišno]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> DAVID Malan: Spremenljivke v PHP, so v bistvu vedno globalni, razen tebe 631 00:29:15,760 --> 00:29:18,400 jih razglasi znotraj funkcije, in potem so lokalne do 632 00:29:18,400 --> 00:29:19,420 le funkcijo. 633 00:29:19,420 --> 00:29:22,300 Ampak zato, ker še nikoli nisem napisal vse funkcije, so sedaj učinkovito 634 00:29:22,300 --> 00:29:25,090 svetovni skozi celo mojo datoteko tukaj. 635 00:29:25,090 --> 00:29:26,040 >> PUBLIKA: Ali obstaja način, da bodo lokalne? 636 00:29:26,040 --> 00:29:28,470 >> DAVID Malan: Ali obstaja tako, da bodo lokalno? 637 00:29:28,470 --> 00:29:30,680 Samo če jih zavijanje v funkcijah. 638 00:29:30,680 --> 00:29:32,790 Ki je v zadnji različici PHP, lahko to storite z 639 00:29:32,790 --> 00:29:34,130 anonimno funkcijo. 640 00:29:34,130 --> 00:29:35,930 Ampak več o tem v kontekst JavaScript. 641 00:29:35,930 --> 00:29:37,260 Ampak kratek odgovor je ne. 642 00:29:37,260 --> 00:29:40,888 Daljši odgovor je pritrdilen. 643 00:29:40,888 --> 00:29:42,380 Lepo. 644 00:29:42,380 --> 00:29:43,380 Dobro kviz vprašanje. 645 00:29:43,380 --> 00:29:43,930 Vse je v redu. 646 00:29:43,930 --> 00:29:47,760 >> Torej nazadnje, stran sama pravzaprav zelo preprost. 647 00:29:47,760 --> 00:29:51,470 Opazil, da ko sem izhod PHP, odpoklic da so vse te stvari navzdol 648 00:29:51,470 --> 00:29:53,700 Spodaj je le, da bo dobil pljunek iz surovega v brskalniku. 649 00:29:53,700 --> 00:29:57,050 Kar je v redu, ker mi želite poslati Uporabnik nekatere HTML, ampak jaz želim 650 00:29:57,050 --> 00:29:59,140 dinamično posodobiti HTML. 651 00:29:59,140 --> 00:30:03,930 In eden od načinov, da lahko to storite, je, da razvrstite zelo hitro spusti nazaj v PHP 652 00:30:03,930 --> 00:30:07,730 Način, uporabite oklepaj vprašajem Znak enako, nato izhodna vrednost 653 00:30:07,730 --> 00:30:08,650 na pultu. 654 00:30:08,650 --> 00:30:12,360 >> Ali če to izgleda malce skrivnosten, to enačaj je pravzaprav le nekaj 655 00:30:12,360 --> 00:30:16,190 skladenjska sladkor za to printf ($ števec). 656 00:30:16,190 --> 00:30:19,160 Vendar odkrito povedano, to je samo malo grdo in malo siten, da tip. 657 00:30:19,160 --> 00:30:23,660 Torej PHP zelo lepo ponuja to funkcijo kjer si lahko samo reči več 658 00:30:23,660 --> 00:30:25,450 kratko na enak način. 659 00:30:25,450 --> 00:30:26,940 >> Torej, kaj se dogaja pod hood? 660 00:30:26,940 --> 00:30:31,210 Oglejmo hitro gledati v omrežje Kartica tukaj za counter.php. 661 00:30:31,210 --> 00:30:35,090 In mi gredo naprej in prvi dajmo počistiti piškotke. 662 00:30:35,090 --> 00:30:38,670 Jasne podatke brskanja dajmo od začetek časa. 663 00:30:38,670 --> 00:30:39,680 Zdaj pa se vrnimo tja. 664 00:30:39,680 --> 00:30:41,340 Zdaj pa si osvežite stran. 665 00:30:41,340 --> 00:30:42,170 In sem spet na ničli. 666 00:30:42,170 --> 00:30:44,810 Ker je bila moja roka žig oprati, Sem zdaj dobil nov piškotek. 667 00:30:44,810 --> 00:30:48,780 >> Pravzaprav, če gledam na kartici omrežja in pogled na glavah odzivanja obvestilo 668 00:30:48,780 --> 00:30:51,960 da se mi je naprava pošilja piškotek, čigar ime je nekoliko 669 00:30:51,960 --> 00:30:55,820 poljubno, vendar vrsta razumno, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 In to me pošilja to res velika naključno število. 671 00:30:58,440 --> 00:30:59,440 To ni čisto številko. 672 00:30:59,440 --> 00:31:00,390 To ni čisto šestnajstiški. 673 00:31:00,390 --> 00:31:03,600 To je neke vrste alfanumerično niza, ampak verjetno je naključno. 674 00:31:03,600 --> 00:31:06,830 In to je žig ročno, tako da govorijo, da sem se nanašajo. 675 00:31:06,830 --> 00:31:11,960 >> Medtem, če kliknem osvežite in nato pogled na ta drugi liniji za moj drugi 676 00:31:11,960 --> 00:31:17,600 Zahteva, da vidite zdaj, da moja prošnja Glave so PHPSESSID enaka tem, 677 00:31:17,600 --> 00:31:19,390 Ne set-cookie, ampak samo piškotek. 678 00:31:19,390 --> 00:31:22,950 In to je predstavitev mojega brskalnika moje strani žiga. 679 00:31:22,950 --> 00:31:28,820 >> Torej, zdaj kot teaser, pa se bova pogovorila več o tem v tednu ali tako, vendar 680 00:31:28,820 --> 00:31:31,590 na kakšen način se to da vas ranljivi, vaš Facebook račun 681 00:31:31,590 --> 00:31:34,137 ranljive, in druge take računi ranljive? 682 00:31:34,137 --> 00:31:35,510 >> PUBLIKA: Če ima nekdo svoj piškot. 683 00:31:35,510 --> 00:31:36,750 >> DAVID Malan: Ja, če nekdo ima svoj piškot. 684 00:31:36,750 --> 00:31:39,920 Mislim res, tako kot nekateri od vas Morda so poskušali na podobnega klubu ali 685 00:31:39,920 --> 00:31:44,030 zabaviščni park, če poskusite nekaj takole kopirati žig, čeprav 686 00:31:44,030 --> 00:31:47,560 nazaj na druge osebe pa in potem on ali ona predstavlja kot 687 00:31:47,560 --> 00:31:53,250 sami, če je dejansko ne pogledaš enaki, 123456789, nato spletni 688 00:31:53,250 --> 00:31:57,980 Strežnik je očitno šele tekoč Verjamemo, da je, da si ti. 689 00:31:57,980 --> 00:32:01,450 >> In to je res temeljna Grožnja kadarkoli uporabimo piškotke 690 00:32:01,450 --> 00:32:05,420 ker če je nekdo samo ponaredi tako govorijo svoje piškotke, slike, kaj je to 691 00:32:05,420 --> 00:32:08,660 je bodisi resnično kopirate jih je videti na računalniku 692 00:32:08,660 --> 00:32:09,890 in je tako kot, v redu. 693 00:32:09,890 --> 00:32:14,520 Davidov Piškotek je JJ3JIK in tako naprej, nato pa so si dovolj pameten, da veš 694 00:32:14,520 --> 00:32:18,080 kako rešiti z ročno poslati, da Piškotek iz brskalnika ali iz 695 00:32:18,080 --> 00:32:22,350 Program, ki so napisali, da bi lahko v celoti se prijavite na spletni strani, kot ti. 696 00:32:22,350 --> 00:32:28,560 To ni tako težko, da se pretvarjamo, da je nekdo drug, če ne bomo ponovno p-set 697 00:32:28,560 --> 00:32:30,790 dva, ki je uvedel kaj? 698 00:32:30,790 --> 00:32:32,065 >> PUBLIKA: kriptografija. 699 00:32:32,065 --> 00:32:33,860 >> DAVID Malan: malo malo kriptografije. 700 00:32:33,860 --> 00:32:36,550 Enostavno šifriranje, vsaj Standard Edition, vendar kripto 701 00:32:36,550 --> 00:32:36,870 vseeno. 702 00:32:36,870 --> 00:32:37,410 manj. 703 00:32:37,410 --> 00:32:41,440 Tako se izkaže, če šifriranje vse te glave, ki uporabljajo nekaj, kar 704 00:32:41,440 --> 00:32:48,770 Morda zdaj vem, bolj znana kot SSL, Secure Socket Layer, ali https:// URL, 705 00:32:48,770 --> 00:32:51,890 nato pa vse te stvari, ki smo jih bili Že pogled na dejansko šifrirano, 706 00:32:51,890 --> 00:32:54,800 kar pomeni, da je tako kot ti Ne morem prebrati žig roke. 707 00:32:54,800 --> 00:32:59,350 Samo facebook.com lahko, ali google.com, ali v tem primeru, lahko naprava 708 00:32:59,350 --> 00:33:00,550 prebral, da žig z roko. 709 00:33:00,550 --> 00:33:04,020 >> Žalost, čeprav, in še enkrat, to je vse preveč je to primerno z NSA stvari 710 00:33:04,020 --> 00:33:06,410 pozno, čeprav SSL je razbiti. 711 00:33:06,410 --> 00:33:09,850 In da je dejansko ni tako težko celo poči, da šifriranje. 712 00:33:09,850 --> 00:33:12,040 Ne toliko s krekingom šifriranje, ampak z zvijačo 713 00:33:12,040 --> 00:33:15,720 Brskalnik v dešifriranje podatki prezgodaj. 714 00:33:15,720 --> 00:33:17,880 Ampak še enkrat, bomo zafrkavali s tem kmalu. 715 00:33:17,880 --> 00:33:21,242 Za zdaj, samo treba bati. 716 00:33:21,242 --> 00:33:23,070 To je tragično nekako res. 717 00:33:23,070 --> 00:33:23,760 >> Vse je v redu. 718 00:33:23,760 --> 00:33:27,910 Torej, če to zdaj nas je zapustil? 719 00:33:27,910 --> 00:33:29,010 No, pa dajmo. 720 00:33:29,010 --> 00:33:31,790 Gremo naprej in se hitro teaser, preden smo vzeli odmor. 721 00:33:31,790 --> 00:33:33,790 In mislim, da bomo ostajal malo dlje danes, vendar bomo potopite v 722 00:33:33,790 --> 00:33:37,850 Nekaj ​​čisto nov in seksi, kar bo Brušenje vaš apetit za še več. 723 00:33:37,850 --> 00:33:38,950 Torej, to je teaser. 724 00:33:38,950 --> 00:33:41,520 >> Torej SQL, smo začeli govoriti o kdaj tako kratko zadnjič. 725 00:33:41,520 --> 00:33:44,670 Boste res dobili svoje roke umazane z nekaj pa v-p nastavljena sedem. 726 00:33:44,670 --> 00:33:46,480 In v smislu navadnega je, kaj počne SQL - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 stori za vas? 729 00:33:49,850 --> 00:33:50,310 Kaj je to? 730 00:33:50,310 --> 00:33:51,546 Ja. 731 00:33:51,546 --> 00:33:53,240 >> PUBLIKA: dajmo podatke imate dostop. 732 00:33:53,240 --> 00:33:53,360 >> DAVID Malan: Ja. 733 00:33:53,360 --> 00:33:55,120 To pa podatkov lahko dostopate v bazi podatkov. 734 00:33:55,120 --> 00:33:56,710 Strukturiran jezik poizvedb. 735 00:33:56,710 --> 00:33:59,890 In to je v bistvu programski jezik. 736 00:33:59,890 --> 00:34:03,400 Obstajajo sestavine, ki ne bomo uporabite tudi v razredu. 737 00:34:03,400 --> 00:34:04,710 Ampak si lahko učinkovito opredeljujejo naloge. 738 00:34:04,710 --> 00:34:06,870 Imenujejo se shranijo Postopki v SQL. 739 00:34:06,870 --> 00:34:09,860 Ampak ga bomo naprej dokaj preprosta in samo njegovo uporabo za nekatere osnovne operacije 740 00:34:09,860 --> 00:34:14,320 kot izbiro podatkov, vstavljanje podatkov, posodabljanje podatkov in brisanje podatkov. 741 00:34:14,320 --> 00:34:17,400 >> In lahko res misliš, podatkovne baze, kot zbirko podatkov SQL, kot je bilo pravkar 742 00:34:17,400 --> 00:34:18,800 da Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 Ker SQL nanaša na relacijski Podatkovna baza, kjer 744 00:34:21,989 --> 00:34:23,480 Odnos pomeni le tabel. 745 00:34:23,480 --> 00:34:24,739 Vrstice in stolpce. 746 00:34:24,739 --> 00:34:27,929 Torej, kaj lahko dajo v preglednici kot je ta ali Google Docs, 747 00:34:27,929 --> 00:34:32,460 bi si dal v bazo podatkov SQL z razglasitvijo mizo. 748 00:34:32,460 --> 00:34:34,800 >> Zdaj, kako ste dejansko dostop te informacije? 749 00:34:34,800 --> 00:34:38,239 No, z ukazi ali poizvedbe je to všeč. 750 00:34:38,239 --> 00:34:40,199 SELECT, INSERT, UPDATE in DELETE. 751 00:34:40,199 --> 00:34:44,489 In za večino del, to so Štiri samo sestavine, ki jih boste potrebovali, da 752 00:34:44,489 --> 00:34:47,370 nekaj narediti precej močno V problem določiti sedem. 753 00:34:47,370 --> 00:34:49,940 >> Zdaj pa nazaj v dan, bi si dejansko interakcijo z bazo podatkov v 754 00:34:49,940 --> 00:34:52,730 črni in beli okno terminal utripa poziv, kot je ta. 755 00:34:52,730 --> 00:34:56,370 In baza podatkov smo tekmovanje v teku na Naprava se imenuje MySQL, ki je 756 00:34:56,370 --> 00:34:58,560 brezplačen in open source motor baze podatkov. 757 00:34:58,560 --> 00:35:02,240 Če ste Google in branje Wikipedije članek, boste vedeli, da je ime 758 00:35:02,240 --> 00:35:05,060 bit prehoda za nekatere različic Linuxa. 759 00:35:05,060 --> 00:35:10,460 Maria baza podatkov je pravzaprav vilice tako rekoč MySQL. 760 00:35:10,460 --> 00:35:12,740 >> Skrajšam zgodbo, Oracle kupil MySQL. 761 00:35:12,740 --> 00:35:13,870 Oracle je veliko podjetje. 762 00:35:13,870 --> 00:35:17,010 Ljudje so bili zaskrbljeni, da bi še vedno ne čisto kot open source, 763 00:35:17,010 --> 00:35:20,930 tako da je to le kopija MySQL, ki je Še vedno zastonj, še open source, in 764 00:35:20,930 --> 00:35:23,550 nameščeni v Fedora Linux, ki ga privzeto. 765 00:35:23,550 --> 00:35:26,130 >> Ampak to je neke vrste bolečino v vratu, da se seznanijo z 766 00:35:26,130 --> 00:35:27,310 baze podatkov na ta način. 767 00:35:27,310 --> 00:35:30,560 Zato smo se vključujejo v CS50 naprave free open source orodje imenovano 768 00:35:30,560 --> 00:35:31,700 phpMyAdmin. 769 00:35:31,700 --> 00:35:33,940 Samo naključje, da to je napisano v PHP. 770 00:35:33,940 --> 00:35:36,450 Ni temeljno potrebujete za PHP tukaj. 771 00:35:36,450 --> 00:35:40,090 Toda to je šele spletno orodje, ki smo prenesli brezplačno, nameščene v 772 00:35:40,090 --> 00:35:43,850 Naprava, ki nam omogoča, da imajo grafični uporabniški vmesnik, s katerim 773 00:35:43,850 --> 00:35:48,610 raziskati-p nastavite sedem bazo podatkov z za ustvarjanje nove zbirke podatkov, 774 00:35:48,610 --> 00:35:51,980 reči za svoj končni projekt, če bi podobno in na koncu ustvariti 775 00:35:51,980 --> 00:35:55,900 dinamične spletne strani, kot CS50 finance , ki vam omogočajo, da se pozanima podatke in 776 00:35:55,900 --> 00:35:58,140 ažuriranje podatkov dinamično. 777 00:35:58,140 --> 00:36:01,420 >> Saj ne boste morali uporabiti samo besedilna datoteka ali CSV. 778 00:36:01,420 --> 00:36:05,950 Lahko dejansko uporabo pametne baze podatkov program, tako da lahko izvedete več 779 00:36:05,950 --> 00:36:10,240 sofisticirane poizvedbe kot samo branje skozi vse linearno. 780 00:36:10,240 --> 00:36:14,150 >> Torej, na primer, to je tisto, kar smo dali ste iz škatle za-p nastavite sedem. 781 00:36:14,150 --> 00:36:18,280 To je miza z očitno vsaj trije stolpci, od katerih je eden 782 00:36:18,280 --> 00:36:21,450 ime, od katerih je zgoščena in od tega drugo je ID. 783 00:36:21,450 --> 00:36:26,200 >> Ampak zanimiva stvar, in le na tease out eno misel tukaj, uporabniško ime 784 00:36:26,200 --> 00:36:29,270 je verjetno že edinstvena, kajne? 785 00:36:29,270 --> 00:36:31,190 Mislim, večina katero koli spletno stran, če imate uporabniško ime, se 786 00:36:31,190 --> 00:36:32,370 ne more biti dve Caesars. 787 00:36:32,370 --> 00:36:33,440 Ne more biti dve Malans. 788 00:36:33,440 --> 00:36:34,950 Ne more biti dve jharvards. 789 00:36:34,950 --> 00:36:35,600 Njegova edinstvena. 790 00:36:35,600 --> 00:36:38,610 Sicer pa ne vem, katera jharvard je v resnici. 791 00:36:38,610 --> 00:36:42,710 Torej, kaj bi lahko motivacija za tako ki ima tretjo kolono levo 792 00:36:42,710 --> 00:36:46,970 tam poklical ID, ki je videti kot Številka, ki je prav tako edinstven? 793 00:36:46,970 --> 00:36:51,300 Zdi se mi malo odveč se mi na prvi pogled. 794 00:36:51,300 --> 00:36:54,910 Zakaj bi moralo biti prepričljivi, da imajo ne le edinstveno uporabniška imena, 795 00:36:54,910 --> 00:36:56,837 ampak tudi edinstvene številke? 796 00:36:56,837 --> 00:36:59,460 >> PUBLIKA: Lahko bi imeli Enako geslo. 797 00:36:59,460 --> 00:37:01,720 >> DAVID Malan: Ljudje bi morali enako geslo, seveda. 798 00:37:01,720 --> 00:37:03,900 Da bi popolnoma zgodilo. 799 00:37:03,900 --> 00:37:08,270 Ampak, če imajo to edinstveno uporabniško ime, sem trdijo, da to sploh ni 800 00:37:08,270 --> 00:37:11,630 glede na to, ker če tip v svojih uporabniško ime, rabim samo za preverjanje njihove 801 00:37:11,630 --> 00:37:15,060 geslo, njihovi njihov hašiš. 802 00:37:15,060 --> 00:37:15,970 Zakaj pa? 803 00:37:15,970 --> 00:37:17,950 >> PUBLIKA: Hitrejše iskanje. 804 00:37:17,950 --> 00:37:18,680 >> DAVID Malan: Hitrejše iskanje. 805 00:37:18,680 --> 00:37:19,548 Zakaj? 806 00:37:19,548 --> 00:37:21,460 >> PUBLIKA: ID je samo ena. 807 00:37:21,460 --> 00:37:24,040 >> DAVID Malan: ID je samo en znak, ali natančneje, to je število, 808 00:37:24,040 --> 00:37:26,910 tako da je verjetno 32 bitov ali nekaj takega. 809 00:37:26,910 --> 00:37:30,270 Ker je ime, očitno Jason Up Hirschhorna se je nekako 810 00:37:30,270 --> 00:37:33,900 smešno dolgo, in da se bo da mi veliko več časa, da se niz 811 00:37:33,900 --> 00:37:40,910 jih primerjati H-I-R-S-Ci-H-H-O-R-N, in morda / 0 ali nekaj takega, da bi 812 00:37:40,910 --> 00:37:45,100 poiskati Jasona, v nasprotju s samo rekel mi uporabniško številko dve. 813 00:37:45,100 --> 00:37:46,510 To je 32 bitov. 814 00:37:46,510 --> 00:37:48,550 To je en sam INT, da boste morali primerjati. 815 00:37:48,550 --> 00:37:52,150 In res, to je točno, zakaj baze podatkov ponavadi dodelijo posebne identifikatorje za 816 00:37:52,150 --> 00:37:53,710 vrstice v njih. 817 00:37:53,710 --> 00:37:56,280 >> Zdaj, kaj drugi podatkovni tipi so tam poleg INT in očitno 818 00:37:56,280 --> 00:37:57,160 strune, kot je ta? 819 00:37:57,160 --> 00:37:59,700 No, da je bolj ustrezno, SQL baze podatkov, kot so 820 00:37:59,700 --> 00:38:02,060 MySQL, imajo CHAR polja. 821 00:38:02,060 --> 00:38:05,320 In Char malce zavajajoče ni enoten ZNAK. 822 00:38:05,320 --> 00:38:10,290 Polje CHAR v MySQL bazo podatkov, je enega ali več znakov, vendar je 823 00:38:10,290 --> 00:38:11,780 določeno število znakov. 824 00:38:11,780 --> 00:38:15,710 >> Torej za primer, če bom tja do phpMyAdmin, kot ste morda že, ali 825 00:38:15,710 --> 00:38:21,340 Kmalu bo problem določiti sedem, in sem šel na mojo zbirko podatkov, in samo za zabavo, 826 00:38:21,340 --> 00:38:25,700 pa ustvarite novo tabelo, imenovano test z le dvema stolpce. 827 00:38:25,700 --> 00:38:27,160 Jaz bom nato Pojdi. 828 00:38:27,160 --> 00:38:30,070 In to bo postalo precej pozna, še posebej, ko to vidijo 829 00:38:30,070 --> 00:38:31,130 okoli sami. 830 00:38:31,130 --> 00:38:34,140 Tukaj lahko vpišem ID za ustvarjanje nova tabela tipa INT. 831 00:38:34,140 --> 00:38:37,770 Ampak tukaj sem lahko vnesete uporabniško ime poustvariti to prej mizo. 832 00:38:37,770 --> 00:38:40,700 In opazil sem še cel kup vrst med katerimi lahko izbirate. 833 00:38:40,700 --> 00:38:43,610 >> In tudi to je razlog, zakaj phpMyAdmin je nekako lepo. 834 00:38:43,610 --> 00:38:46,770 To je nekako samo-učenja v tem vas Lahko samo vrsta točko in kliknite, in 835 00:38:46,770 --> 00:38:50,730 poglej dropdown menije, in sklepala da je tisto, kar vam daje pooblastila SQL. 836 00:38:50,730 --> 00:38:54,090 >> In res, če sem se odločil CHAR, nato pa sem navesti dolžino ali kako 837 00:38:54,090 --> 00:38:55,940 mnoge vrednote, koliko ožge. 838 00:38:55,940 --> 00:39:00,090 Tako zelo skupne vrednote so stvari, kot 255, ampak to je malo dolgo. 839 00:39:00,090 --> 00:39:02,250 Običajno je osem za uporabniško ime. 840 00:39:02,250 --> 00:39:03,590 Ampak to je malo majhen teh dneh. 841 00:39:03,590 --> 00:39:05,430 Tako da je ta odločitev dizajn. 842 00:39:05,430 --> 00:39:08,630 Je 8 znakov max, 32, 255, 1000? 843 00:39:08,630 --> 00:39:09,830 To je res odvisno od vas. 844 00:39:09,830 --> 00:39:12,350 Ampak polje CHAR je določeno število. 845 00:39:12,350 --> 00:39:16,420 Tako da izberejo premalo in si nekako zajebali, če želite, daljše ime. 846 00:39:16,420 --> 00:39:19,132 Izberite preveč in kaj je Slaba stran? 847 00:39:19,132 --> 00:39:20,820 >> PUBLIKA: [neslišno]. 848 00:39:20,820 --> 00:39:21,620 >> DAVID Malan: To je potratna. 849 00:39:21,620 --> 00:39:24,835 Tako kot v C, če imate večji kos pomnilnika, kot ga potrebujete, da si 850 00:39:24,835 --> 00:39:27,190 samo zapravljaš čas in izgubljamo prostor. 851 00:39:27,190 --> 00:39:31,430 Tako kot alternativa, obstaja VARCHAR, ki rešuje ta problem, ki ga 852 00:39:31,430 --> 00:39:36,390 zdravljenje dolžine kot fiksno dolžino, vendar kot največjo dolžino, in z uporabo 853 00:39:36,390 --> 00:39:40,990 spremenljivka število znakov, ki potem ponavadi uporabljajo le toliko, kot vas ožge 854 00:39:40,990 --> 00:39:42,710 dejansko potrebujejo. 855 00:39:42,710 --> 00:39:43,670 Sliši se odlično. 856 00:39:43,670 --> 00:39:45,640 >> Zakaj ne bomo znebili Podatkov CHAR tip potem? 857 00:39:45,640 --> 00:39:48,500 Kaj bi lahko slaba uporabo VARCHARs, ki zveni 858 00:39:48,500 --> 00:39:51,644 kot da je lepa zmaga? 859 00:39:51,644 --> 00:39:52,596 Ja? 860 00:39:52,596 --> 00:39:53,846 >> PUBLIKA: [neslišno]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> DAVID Malan: OK, dobro. 863 00:39:57,790 --> 00:40:01,101 Torej, če vse vaše podatke, je enaka dolžina, kaj skrbi? 864 00:40:01,101 --> 00:40:05,250 >> PUBLIKA: Ker ste zapravljaš podatke, ki jih vse povedal. 865 00:40:05,250 --> 00:40:09,060 >> DAVID Malan: Torej, če vse svoje podatke, je enake dolžine, čeprav bi trdili 866 00:40:09,060 --> 00:40:12,300 da se določi največje dolžine na VARCHAR se ne razlikuje od 867 00:40:12,300 --> 00:40:16,070 določitvijo fiksne dolžine na ZNAK če veste, da je število vnaprej. 868 00:40:16,070 --> 00:40:19,500 Vendar pa je res, in bom nekako izpisek iz tega odgovora realnost 869 00:40:19,500 --> 00:40:22,610 da je še vedno največ, kar lahko moteč, še posebej, če 870 00:40:22,610 --> 00:40:25,920 naleteli na ime osebe, ki je nenavadno dolgo, da niste 871 00:40:25,920 --> 00:40:26,860 predvideti. 872 00:40:26,860 --> 00:40:31,420 In to je tudi malo manj učinkovit dejansko iskati na VARCHARs kot 873 00:40:31,420 --> 00:40:35,620 nasprotuje iščejo ožge, zlasti za dolgo mizo, ki imajo veliko, in 874 00:40:35,620 --> 00:40:36,510 veliko podatkov. 875 00:40:36,510 --> 00:40:40,060 Torej tudi tu, tematsko spet ni očitna izbira. 876 00:40:40,060 --> 00:40:42,870 >> Torej, samo da vam občutek za druge vrste podatkov, ki bi bili lahko zanimivi 877 00:40:42,870 --> 00:40:45,400 bodisi za-p nastavljena sedem ali prihodnost, tam je INT. 878 00:40:45,400 --> 00:40:47,270 Tam je BIGINT, ki je kot dolgo dolgo. 879 00:40:47,270 --> 00:40:48,880 To kaže, da je 64 bitov. 880 00:40:48,880 --> 00:40:51,640 Tam je decimalni, kar boste videli v Problem set, ki je last 881 00:40:51,640 --> 00:40:55,300 čistilo odgovor na težave smo naletela s plovcem in plavajoče 882 00:40:55,300 --> 00:40:55,980 točka nenatančnost. 883 00:40:55,980 --> 00:40:57,390 In potem je tu še DATETIME. 884 00:40:57,390 --> 00:41:01,530 Obstaja dobesedno na vrsto podatkov, ki ima videti kot eno leto, mesec, dan, 885 00:41:01,530 --> 00:41:03,730 in ure, minute in sekunde. 886 00:41:03,730 --> 00:41:07,470 >> Ampak podatkovnih baz SQL tudi Stvari, ki jih bom kazal. 887 00:41:07,470 --> 00:41:11,630 In indeks je nekaj, kar določite pri ustvarjanju tabelo 888 00:41:11,630 --> 00:41:15,720 da išče in drugih dejavnosti bolj učinkovito. 889 00:41:15,720 --> 00:41:18,550 Natančneje, obstaja nekaj imenovanih OSNOVNA indeks, ki ga lahko 890 00:41:18,550 --> 00:41:19,440 razglasi kot sledi. 891 00:41:19,440 --> 00:41:22,330 >> To smo storili za vas z Uporabniki tabela vam dal. 892 00:41:22,330 --> 00:41:26,160 Ampak obvestilo, če bi bile ročno vnovično miza uporabniki tukaj daje 893 00:41:26,160 --> 00:41:27,110 je ime uporabnikov. 894 00:41:27,110 --> 00:41:28,125 Sem že določeno številko. 895 00:41:28,125 --> 00:41:29,330 Jaz določeno INT. 896 00:41:29,330 --> 00:41:32,000 I določeno ime z največ 32 znakov. 897 00:41:32,000 --> 00:41:36,140 Ampak, če smo ostali pomikanjem v to dokaj široko okno, obvestilo pa je 898 00:41:36,140 --> 00:41:38,260 kup drugih stvari, ki sem se lahko podate. 899 00:41:38,260 --> 00:41:40,950 >> Ena, sem lahko podate atribute saj veš, kaj je to 900 00:41:40,950 --> 00:41:42,190 INT mora biti nepodpisani. 901 00:41:42,190 --> 00:41:45,510 Nočem negativne številke, zato naj bi bilo nepodpisanih. 902 00:41:45,510 --> 00:41:48,660 Null tu ni pomembna, ker Jaz želim, da vsak uporabnik 903 00:41:48,660 --> 00:41:49,640 imeti enotno številko. 904 00:41:49,640 --> 00:41:50,830 Ne želim, da je nična. 905 00:41:50,830 --> 00:41:52,330 >> Ampak to je zanimivo. 906 00:41:52,330 --> 00:41:57,780 Lahko določite, da je ID bodisi Primarni ključ te baze podatkov, ali je 907 00:41:57,780 --> 00:42:00,620 edinstvena, ali pa je indeksirana ali celotno besedilo. 908 00:42:00,620 --> 00:42:05,630 Torej za današnje namene, dolga zgodba Skratka, primarna pomeni, da se to 909 00:42:05,630 --> 00:42:10,570 je konceptualno in tehnično Polje, ki ga uporabljamo za edinstveno 910 00:42:10,570 --> 00:42:12,140 identifikacijo uporabnikov. 911 00:42:12,140 --> 00:42:16,140 >> Torej, če pogledamo gor uporabnikom, to je nekako z obljubo, da jih pogledate večinoma 912 00:42:16,140 --> 00:42:17,370 da se posebni identifikator. 913 00:42:17,370 --> 00:42:21,930 In se bo baza podatkov zagotovi, da če vam ima število uporabnikov 3, ne morete 914 00:42:21,930 --> 00:42:25,400 fizično vstavite drug uporabnik s tem istim številom 3. 915 00:42:25,400 --> 00:42:28,380 Baza podatkov bo samo zavrne , da shranite spremembe. 916 00:42:28,380 --> 00:42:32,310 Kar je dobro, saj si lahko zaščitite pred sebe. samozaposlene 917 00:42:32,310 --> 00:42:34,270 >> Alternativno, za uporabniško ime. 918 00:42:34,270 --> 00:42:37,670 Torej, druga vrstica, odpoklic, je polje uporabniško ime. 919 00:42:37,670 --> 00:42:41,860 Torej, v drugi vrsti je tu uporabniško ime, kot smo to storili na daleč tam pustil. 920 00:42:41,860 --> 00:42:43,940 >> Torej, kaj še lahko želim opredeliti? 921 00:42:43,940 --> 00:42:47,840 Ne smem, v skladu z SQL, opredeliti dve primarne ključe. 922 00:42:47,840 --> 00:42:50,750 lahko določite skupno ključ, kjer ste pogled na obeh področjih, vendar pa ne more 923 00:42:50,750 --> 00:42:52,260 posamično biti primarni ključi. 924 00:42:52,260 --> 00:42:54,750 Tako da je ne pride v poštev. 925 00:42:54,750 --> 00:42:56,040 Torej, ki bi mi želeli izbrati? 926 00:42:56,040 --> 00:42:59,710 >> No, UNIQUE je podobno v duhu, da primarni ključ, kjer si to navede 927 00:42:59,710 --> 00:43:03,570 polja mora biti edinstvena, vendar je ne bo ena 928 00:43:03,570 --> 00:43:04,410 Uporabljam ves čas. 929 00:43:04,410 --> 00:43:08,450 In mi ne boš tega uporabil vse čas za kakšen razlog še enkrat? 930 00:43:08,450 --> 00:43:10,490 To je počasnejši potencialno če To je dolga uporabniško ime. 931 00:43:10,490 --> 00:43:11,740 To je samo izguba časa. 932 00:43:11,740 --> 00:43:16,140 >> INDEX, medtem, določa, da je ne bo edinstven, toda rad bi 933 00:43:16,140 --> 00:43:19,470 vam, da si svojo čarovnijo pod hood, da bi bilo hitreje, za mene, da 934 00:43:19,470 --> 00:43:21,420 iskati na tem področju. 935 00:43:21,420 --> 00:43:23,320 Torej, to verjetno ni pomembno tukaj. 936 00:43:23,320 --> 00:43:26,500 Za uporabniško ime, sem trdijo, da UNIQUE je dober odgovor. 937 00:43:26,500 --> 00:43:31,200 Recimo, da smo naredili uporabnikom več zanimivo kot samo uporabniška imena, 938 00:43:31,200 --> 00:43:32,430 hash in identifikacijske številke. 939 00:43:32,430 --> 00:43:33,860 Kaj pa, če bomo dali ljudem polna imena? 940 00:43:33,860 --> 00:43:37,700 Kaj pa, če jim bomo dali naslove in druge podatke o njih? 941 00:43:37,700 --> 00:43:43,360 >> No, če si določite, da stolpec Podatkovna baza se indeksira, to pomeni, da 942 00:43:43,360 --> 00:43:47,730 MySQL ali Oracle, ali karkoli baze podatkov boste uporabljali, bi morali delati svojo čarobno 943 00:43:47,730 --> 00:43:51,300 in uporaba neke vrste modno podatkov struktura kot drevo, ali Trsta, ali 944 00:43:51,300 --> 00:43:55,940 hash table, ali kaj, da se zagotovi da, ko iščete podatke s pomočjo 945 00:43:55,940 --> 00:43:58,150 izberete na posameznem področju - 946 00:43:58,150 --> 00:44:01,310 kot kažejo mi vsi, ki živi na ulici Oxford Street. 947 00:44:01,310 --> 00:44:02,540 Poizvedbe, kot je ta. 948 00:44:02,540 --> 00:44:06,250 Če ste določili vnaprej, da hočeš indeks na tem področju, 949 00:44:06,250 --> 00:44:09,050 iskanja bo veliko, veliko hitreje. 950 00:44:09,050 --> 00:44:12,090 >> Če ne določite indeks, ki najbolje lahko naredite, je linearna iskanje po 951 00:44:12,090 --> 00:44:13,030 to ni urejeno. 952 00:44:13,030 --> 00:44:16,220 Ampak, če si določite kazalo, pametna osebe, ki so do baze podatkov - 953 00:44:16,220 --> 00:44:19,340 Ljudje, kot ste vi, ki zdaj vedo drevesa in poskuša in razpršene tabele - 954 00:44:19,340 --> 00:44:23,220 samodejno zgraditi takšno podatke struktura v RAM se prepričajte, da 955 00:44:23,220 --> 00:44:26,050 ti iskanja so veliko hitreje. 956 00:44:26,050 --> 00:44:29,660 >> Polno besedilo medtem Podobno je tudi v duhu, ampak vam omogoča, da wildcard 957 00:44:29,660 --> 00:44:35,480 iskanja, kot kažejo mi vsi, ki živi na ulicah, ki se začnejo s 958 00:44:35,480 --> 00:44:36,960 črka O kakršnega koli razloga. 959 00:44:36,960 --> 00:44:38,850 To lahko storite iskanje nadomestnih tako. 960 00:44:38,850 --> 00:44:45,880 Ali, bolj prepričljivi stvari, kot kažejo me vsakdo, ki ima besedo - 961 00:44:45,880 --> 00:44:49,400 Pokaži mi Vsakdo, čigar ime se začne z določeno črko. 962 00:44:49,400 --> 00:44:51,880 Lahko iščejo ključne besede na ta način. 963 00:44:51,880 --> 00:44:52,630 Vse je v redu. 964 00:44:52,630 --> 00:44:55,760 >> Torej, oblikovalske možnosti obstaja potencialno. 965 00:44:55,760 --> 00:44:57,740 Obstajajo drugi, da bom val svoje roke na. 966 00:44:57,740 --> 00:45:00,530 Izkazalo se je, da lahko imajo različni motorji za shranjevanje. 967 00:45:00,530 --> 00:45:04,390 In to je več kot arcane moramo vsekakor za problem določiti sedem. 968 00:45:04,390 --> 00:45:06,920 Privzeto je, da vi uporabljate nekaj, kar se imenuje InnoDB. 969 00:45:06,920 --> 00:45:10,910 Videli boste omembo te nekje vmesnik phpMyAdmin najbolj verjetno. 970 00:45:10,910 --> 00:45:14,130 Ampak, veste, da obstaja drug načrt Odločitve, ki so lahko 971 00:45:14,130 --> 00:45:18,030 Obrestna pridejo končne projekte, če kaj storite prek spleta. 972 00:45:18,030 --> 00:45:19,330 >> Ampak kaj je to. 973 00:45:19,330 --> 00:45:23,130 Pojdimo naprej in dal to na Zaslon kot teaser za zgodbo 974 00:45:23,130 --> 00:45:26,330 vključuje vas, cimer, in kozarec mleka. 975 00:45:26,330 --> 00:45:28,240 Vzemimo dve minuti ali tako prekinil tukaj. 976 00:45:28,240 --> 00:45:31,060 In če lahko ostal, kaj je prišel nazaj, poglej malo bolj na SQL, in 977 00:45:31,060 --> 00:45:35,160 potem malo JavaScript z -p nastavite osem v mislih. 978 00:45:35,160 --> 00:45:36,120 >> Vse je v redu. 979 00:45:36,120 --> 00:45:40,420 Torej, kaj je dobil razmišljate o Kotiček za primer, da se lahko zelo hitro pojavijo 980 00:45:40,420 --> 00:45:44,240 v okviru uporabe baze podatkov, ali odkrito povedano, tudi z uporabo realnem svetu stvari 981 00:45:44,240 --> 00:45:46,280 kot so bankomati, da bi dobili denar. 982 00:45:46,280 --> 00:45:47,640 Torej, tukaj je hladilnik. 983 00:45:47,640 --> 00:45:50,040 Recimo, da imaš eno preveč v vaš domu ali vaša hiša. 984 00:45:50,040 --> 00:45:54,990 In imaš enega cimra, in oba ste res všeč mleka za primer. 985 00:45:54,990 --> 00:45:57,210 >> Torej prideš domov iz razreda en dan. 986 00:45:57,210 --> 00:45:58,490 On ali ona še ni vrnil. 987 00:45:58,490 --> 00:45:59,180 Odpreš hladilnik. 988 00:45:59,180 --> 00:46:00,870 Bi res rad velik kozarec mleka. 989 00:46:00,870 --> 00:46:01,820 Ni mleko. 990 00:46:01,820 --> 00:46:02,920 Torej, kaj storiti? 991 00:46:02,920 --> 00:46:03,840 Zapreš hladilnik. 992 00:46:03,840 --> 00:46:04,670 Ste zgrabi ključe. 993 00:46:04,670 --> 00:46:05,930 Greš ven na trgu. 994 00:46:05,930 --> 00:46:09,240 In dobiš v vrsti na CVS na tiste samo blagajniški stvari, ki vedno 995 00:46:09,240 --> 00:46:11,180 traja dlje, kot dejansko ob blagajnikov. 996 00:46:11,180 --> 00:46:11,820 Kakorkoli že. 997 00:46:11,820 --> 00:46:15,490 >> Torej, medtem, dot dot dot, vaš cimer pride domov in on ali ona 998 00:46:15,490 --> 00:46:17,440 Podobno je Žudnja Za malo mleka. 999 00:46:17,440 --> 00:46:20,380 Torej, on ali ona odpre hladilnik, zgleda notri in oh, prekleto. 1000 00:46:20,380 --> 00:46:21,160 Brez mleka. 1001 00:46:21,160 --> 00:46:24,750 Torej, on ali ona vodi ven, se zgodi, da gredo drugi CVS, ki je bila le 1002 00:46:24,750 --> 00:46:27,900 blok stran iz nekega razloga, in on ali ona dobi v vrsti za nakup malo mleka. 1003 00:46:27,900 --> 00:46:30,480 >> Medtem pa prideš domov, ali ona pride domov, in kaj storiti 1004 00:46:30,480 --> 00:46:31,980 boste na koncu imeli? 1005 00:46:31,980 --> 00:46:33,080 Dvakrat toliko mleka. 1006 00:46:33,080 --> 00:46:34,620 Vendar ne boste res všeč Mleko, da je veliko. 1007 00:46:34,620 --> 00:46:37,300 Torej, sedaj imate toliko mleka, da zdaj eden od njih je le, da bo šel kislo 1008 00:46:37,300 --> 00:46:37,820 sčasoma. 1009 00:46:37,820 --> 00:46:39,370 Torej je to res slabo problem. 1010 00:46:39,370 --> 00:46:39,900 Kajne? 1011 00:46:39,900 --> 00:46:41,990 >> Kaj se je tako zgodilo? 1012 00:46:41,990 --> 00:46:44,810 Torej v bistvu je to nekako A smešno npr. 1013 00:46:44,810 --> 00:46:48,580 Ampak pod pokrovom motorja, kar smo imeli zgodi, tukaj je tako za vas preveril 1014 00:46:48,580 --> 00:46:52,390 stanje nekaterih del pomnilnik, hladilnik. 1015 00:46:52,390 --> 00:46:54,420 Oba si preveril stanje neke spremenljivke. 1016 00:46:54,420 --> 00:46:57,360 Oba sta potegnila sklep, da si potem deloval naprej. 1017 00:46:57,360 --> 00:47:01,420 Ampak na žalost, medtem ko vaš sostanovalec bil v trgovini, stanje, ki 1018 00:47:01,420 --> 00:47:05,670 spremenljivka spremenila, on ali ona prišla nazaj in zdaj želi spremeniti stanje, vendar 1019 00:47:05,670 --> 00:47:07,480 to je že spremenilo na njega ali njo. 1020 00:47:07,480 --> 00:47:11,120 In seveda, on ali ona ne bi imela odšel v trgovino, če bi vedeli, 1021 00:47:11,120 --> 00:47:13,010 da ste bili že na poti. 1022 00:47:13,010 --> 00:47:16,430 >> Tako v realnem svetu, kako si lahko izognili tem problemom, ob predpostavki, da imate 1023 00:47:16,430 --> 00:47:18,940 hladilnik, imate sostanovalko, in si dejansko všeč mleko? 1024 00:47:18,940 --> 00:47:19,760 >> PUBLIKA: komuniciranje. 1025 00:47:19,760 --> 00:47:20,580 >> DAVID Malan: komuniciranje. 1026 00:47:20,580 --> 00:47:21,160 OK. 1027 00:47:21,160 --> 00:47:22,500 Ampak, kako bi vi komunicirati? 1028 00:47:22,500 --> 00:47:23,990 >> PUBLIKA: Pustite sporočilo. 1029 00:47:23,990 --> 00:47:25,480 >> DAVID Malan: Pustite seznanjen, kajne? 1030 00:47:25,480 --> 00:47:28,025 Vedno pustil sporočilo, na ljubitelji show. 1031 00:47:28,025 --> 00:47:31,580 Vse je v redu, tako da je vedno pustil sporočilo, ali mu resnično všeč ključavnico ali kaj podobnega 1032 00:47:31,580 --> 00:47:35,440 na hladilnik, da ohranja svoje cimer bo pregledal stanje 1033 00:47:35,440 --> 00:47:36,540 da spremenljiva. 1034 00:47:36,540 --> 00:47:40,800 >> Zdaj, zakaj bi to lahko bilo germane za Problem nastavite sedem ali na bankomatih. 1035 00:47:40,800 --> 00:47:46,780 No, predstavljajte si svet pri bankomatu, kjer boste morda lahko šel do bankomata 1036 00:47:46,780 --> 00:47:48,920 stroj tu, in še ATM tukaj. 1037 00:47:48,920 --> 00:47:50,680 In to se dogaja zelo pogosto. 1038 00:47:50,680 --> 00:47:54,150 In recimo, da je imel dva ATM kartice, ki je mogoče pridobiti. 1039 00:47:54,150 --> 00:47:57,420 In se prijavite v obeh strojev učinkovito hkrati, upajmo 1040 00:47:57,420 --> 00:47:58,660 nihče, medtem ko je iskal. 1041 00:47:58,660 --> 00:48:01,260 In potem vnesete v kodo PIN približno istočasno. 1042 00:48:01,260 --> 00:48:06,280 In potem narediš bilanco poizvedbo da vidim, koliko denarja imaš. 1043 00:48:06,280 --> 00:48:08,920 In recimo, da imaš 100 $ ostane v vašem računu. 1044 00:48:08,920 --> 00:48:13,310 Torej v bistvu hkrati, boste pravijo, ena, nič, nič, vpišete. 1045 00:48:13,310 --> 00:48:16,000 In upajmo dobili nazaj nekaj denarja. 1046 00:48:16,000 --> 00:48:18,440 >> Toda, koliko denarja bi dobili nazaj? 1047 00:48:18,440 --> 00:48:21,710 Sedaj računalnikov ob koncu dneva, še posebej, če ste v pogovoru z 1048 00:48:21,710 --> 00:48:27,360 strežniki, ni nujno, da počnejo stvari v vrstnem redu, ki je bilo pričakovano. 1049 00:48:27,360 --> 00:48:30,860 >> Torej, predvidevam, kaj se zgodi, ker ne glede na omrežje hitrost vprašanj tam 1050 00:48:30,860 --> 00:48:34,530 so ali vprašanja CPU obstajajo, ali kaj takega, domnevam, da 1051 00:48:34,530 --> 00:48:38,530 Prvi bankomat preveri svoje stanje in vidi, oh, ta oseba je 100 $. 1052 00:48:38,530 --> 00:48:41,840 Ampak potem postane raztresen, ker morda backup se dogaja, in zato je 1053 00:48:41,840 --> 00:48:42,500 upočasnjuje. 1054 00:48:42,500 --> 00:48:45,080 Ali pa morda med preverjanjem, omrežje povezava dobil malo počasneje, ker 1055 00:48:45,080 --> 00:48:45,910 To se ne zgodi. 1056 00:48:45,910 --> 00:48:47,100 Oni so fizične naprave. 1057 00:48:47,100 --> 00:48:49,330 Torej medtem, drugi ATM sprašuje isto vprašanje. 1058 00:48:49,330 --> 00:48:53,030 Koliko denarja imate David? 100 $ je odgovor. 1059 00:48:53,030 --> 00:48:58,930 Toda, ker ima prvi ATM še ni poslano sporočilo odštejemo $ 100, tako 1060 00:48:58,930 --> 00:49:03,000 Bankomati so pregledani trezorju banke, vidim tam je 100 $ tam, in zdaj 1061 00:49:03,000 --> 00:49:07,160 obe naprave so potencialno bo izpljunil odgovor. 1062 00:49:07,160 --> 00:49:12,240 >> No, to je super za vas, v nekem smislu če kakšna banka ne nazadnje 1063 00:49:12,240 --> 00:49:17,200 se spremenijo znesek minus 100, ki jo nastavitev spremenljivka enaka kot vaša 1064 00:49:17,200 --> 00:49:21,570 bančni račun enak 0, v nasprotju da delaš minus 100. 1065 00:49:21,570 --> 00:49:24,410 Zdaj, v najslabšem primeru za banko - 1066 00:49:24,410 --> 00:49:27,470 ali najboljše za banko, medtem, so vam $ 200, in 1067 00:49:27,470 --> 00:49:31,690 vaš bančni račun zdaj kaže negativen 100 $, ki res ne 1068 00:49:31,690 --> 00:49:32,950 vam koristi na vseh. 1069 00:49:32,950 --> 00:49:36,500 Ampak bistvo je, da je ta dirka Pogoj za dve sostanovalci pridobivanje 1070 00:49:36,500 --> 00:49:40,660 mleko ali dveh bankomatih, ki poskušajo dobiti denar in spremeniti stanje trezorju 1071 00:49:40,660 --> 00:49:44,510 istočasno obstaja kateremkoli Čas imate zbirko podatkov. 1072 00:49:44,510 --> 00:49:48,290 >> Zdaj problem določiti sedem to vprašanje Pojavljajo se v tem smislu, da če kupite 1073 00:49:48,290 --> 00:49:52,110 Delež Facebook zalogi, nato pa za primer kupite drugo delež 1074 00:49:52,110 --> 00:49:55,160 Facebook zalog, morate narediti Odločitev kot programer. 1075 00:49:55,160 --> 00:49:58,710 , Da se odloči, kako posodobiti baze podatkov, odds so boste 1076 00:49:58,710 --> 00:50:02,250 imajo eno vrstico za ta stalež, in to je eden od načinov za njeno izvajanje. 1077 00:50:02,250 --> 00:50:06,640 In ti boš moral eno delnico FB, ki je njihov simbol zalog ticker 1078 00:50:06,640 --> 00:50:10,120 za to ime, ali tega uporabnika ID, enotni identifikator. 1079 00:50:10,120 --> 00:50:12,340 >> Ampak ista zgodba se lahko zgodi tukaj. 1080 00:50:12,340 --> 00:50:15,800 Če boste to storili, izberite v SQL, kot boste videli V problem določiti sedem ko vidiš, 1081 00:50:15,800 --> 00:50:18,460 oh, David ima eno delnico od Facebook zalogi. 1082 00:50:18,460 --> 00:50:23,240 Dovolite mi, da zdaj to spremeniti, da bi dva delnic, ker hoče kupiti 1083 00:50:23,240 --> 00:50:24,120 Drugi delež. 1084 00:50:24,120 --> 00:50:27,860 Recimo David dejansko imela dva okna brskalnika odpreti, ali denimo, da 1085 00:50:27,860 --> 00:50:32,150 to je skupni račun z dvema zakoncema, in oba poskuša izvesti 1086 00:50:32,150 --> 00:50:36,770 Isti postopek, tudi tam, Potencial obstaja za odločitev, da bomo 1087 00:50:36,770 --> 00:50:39,670 ki temelji na predhodni stanje v svetu - 1088 00:50:39,670 --> 00:50:41,290 račun ima eno delnico - 1089 00:50:41,290 --> 00:50:45,630 in tako ljudje, ali oba strežniki, zdaj poskusite reči, da prirastek dveh delnic. 1090 00:50:45,630 --> 00:50:49,020 Toda v tem primeru, ste morda zaračuna mi denar za obe delnic, vendar 1091 00:50:49,020 --> 00:50:50,830 poveča samo za to čas. 1092 00:50:50,830 --> 00:50:54,730 >> Torej na kratko, temeljni problem tu, tako kot pri tistem vicu o odhodu 1093 00:50:54,730 --> 00:50:58,750 Upoštevajte ali dajanje ključavnico na njej, je če se dve osebi ali dveh niti - 1094 00:50:58,750 --> 00:50:59,930 pomislite na praske - 1095 00:50:59,930 --> 00:51:03,220 Lahko preverite stanje neke spremenljivke in nato poskusite spremeniti to spremenljivko, 1096 00:51:03,220 --> 00:51:07,950 ampak ti dve stvari ne dogajajo na istem času, vendar se lahko prekine 1097 00:51:07,950 --> 00:51:11,500 drugih stvari se dogaja, lahko podatki priti v zelo čudnem stanju. 1098 00:51:11,500 --> 00:51:15,450 In lahko koristi ali pa trpijo v smislu primer denarja. 1099 00:51:15,450 --> 00:51:18,110 >> Torej, problem je določeno sedem, smo vam ta vrstica kode, ki je dolgo 1100 00:51:18,110 --> 00:51:21,000 Skratka, rešuje to problem v MySQL. 1101 00:51:21,000 --> 00:51:24,950 To zelo dolgo navodila, da ne celo ustrezal eni vrstici 1102 00:51:24,950 --> 00:51:30,370 Zaslon tukaj zagotavlja, da vaš operacija je tisto, kar se imenuje atomski. 1103 00:51:30,370 --> 00:51:33,720 Vse se zgodi naenkrat, ali to ne bi zgodilo. 1104 00:51:33,720 --> 00:51:37,530 To zelo dolgo stavek ne more se delno prekine. 1105 00:51:37,530 --> 00:51:39,840 >> In kaj počne, je dobesedno kaj piše. 1106 00:51:39,840 --> 00:51:44,200 Vstavite v neki tabeli, ki sledi tri področja te posebne vrednosti, 1107 00:51:44,200 --> 00:51:47,280 ampak na dvojnik ključa, ne delaj vložek. 1108 00:51:47,280 --> 00:51:48,280 Narediti posodobitev. 1109 00:51:48,280 --> 00:51:52,450 Torej, to je tako kot počne SELECT in VNESITE tako rekoč istočasno. 1110 00:51:52,450 --> 00:51:55,150 In kaj je ključ, ki je verjetno se iz tukaj? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> Izkazalo se je, pa boste videli v Problem nastavite Sedem je spec, ker 1113 00:52:01,380 --> 00:52:06,040 smo tam razglašena za edinstven ključ o tem mizo tako, da 1114 00:52:06,040 --> 00:52:08,480 ne morete imeti več vrstic za isti uporabnik z 1115 00:52:08,480 --> 00:52:10,150 Enako penny stock simbol - 1116 00:52:10,150 --> 00:52:13,780 v tem primeru tukaj, DVN.V je neumno penny stock, da smo 1117 00:52:13,780 --> 00:52:14,980 nanašajo na spec. 1118 00:52:14,980 --> 00:52:17,860 Ker smo izjavila, da je edinstven, kaj to pomeni, da če vam 1119 00:52:17,860 --> 00:52:23,580 poskusite vstaviti podvojene vrstice, si namesto tega bo, da ga dopolni brez 1120 00:52:23,580 --> 00:52:27,020 kdorkoli drug, ki ima priložnost, da se spremeni stanje v svetu, bodisi. 1121 00:52:27,020 --> 00:52:29,400 Torej na kratko, to zagotavlja Stvari so atomic. 1122 00:52:29,400 --> 00:52:32,530 >> Bolj na splošno, čeprav, podatkovne baze kot MySQL - 1123 00:52:32,530 --> 00:52:35,460 in vam ni treba to funkcijo p-set sedem, a vseeno imejte v mislih za 1124 00:52:35,460 --> 00:52:36,200 prihodnost - 1125 00:52:36,200 --> 00:52:38,870 podpreti tisto, kar imenujemo transakcije, , kjer boste lahko rekli, 1126 00:52:38,870 --> 00:52:40,990 START TRANSAKCIJA dobesedno. 1127 00:52:40,990 --> 00:52:43,270 Nato lahko izvedete dve stavki SQL. 1128 00:52:43,270 --> 00:52:45,710 In izjavo SQL, kot boste videli v-p nastavite sedem, izgleda malo 1129 00:52:45,710 --> 00:52:46,750 kaj takega. 1130 00:52:46,750 --> 00:52:48,820 Posodobite tabelo imenovano račun. 1131 00:52:48,820 --> 00:52:52,550 Nastavite bilanco stolpec, ki je enaka ne glede na bilanca stolpec trenutno 1132 00:52:52,550 --> 00:52:57,280 je minus 1000, ko je število, številka računa, kot so ID uporabnika, 1133 00:52:57,280 --> 00:53:00,830 enak 2, in nato posodobi Račun dot dot dot. 1134 00:53:00,830 --> 00:53:04,350 >> Tako v smislu navadnega je, kaj ti dve Poizvedbe se zdi, da se delaš v 1135 00:53:04,350 --> 00:53:05,840 realnem svetu smisel za bančništvo? 1136 00:53:05,840 --> 00:53:07,440 >> PUBLIKA: Prenos prihrankov. 1137 00:53:07,440 --> 00:53:08,020 >> DAVID Malan: Točno tako. 1138 00:53:08,020 --> 00:53:10,470 Prenos sredstev iz enega računa na drugega. 1139 00:53:10,470 --> 00:53:14,400 In to je še en primer, kjer ste res želim ti dve stvari, da se zgodi 1140 00:53:14,400 --> 00:53:15,570 ali pa se ni zgodilo. 1141 00:53:15,570 --> 00:53:18,880 Vi ne želite, da bi dobili nekaj, kar v Sredi njih in potencialno nered 1142 00:53:18,880 --> 00:53:22,220 math, ali nered, koliko denarja imate, ali koliko 1143 00:53:22,220 --> 00:53:23,170 Denar ima banka. 1144 00:53:23,170 --> 00:53:26,890 Torej, kaj je res lepo o transakcijah MySQL je, da, in 1145 00:53:26,890 --> 00:53:30,160 baze podatkov bolj na splošno, je, da se in pametne ljudi, ki jih izvajajo 1146 00:53:30,160 --> 00:53:33,670 te funkcije ugotovimo, kako narediti prepričan, da sta od teh stvari se dogajajo 1147 00:53:33,670 --> 00:53:35,120 ali pa sploh ne. 1148 00:53:35,120 --> 00:53:38,580 >> In če ste resnično prizadevajo, da bi Spletna stran, ki se jih ljudje uporabljajo za 1149 00:53:38,580 --> 00:53:41,490 kampus, ljudje v resničnem svetu, delaš Nekaj ​​v zagonskem smislu, 1150 00:53:41,490 --> 00:53:43,300 to so vrste konstrukcijskih odločitev, da 1151 00:53:43,300 --> 00:53:45,020 postale vedno tako pomembna. 1152 00:53:45,020 --> 00:53:48,240 V nasprotnem primeru boste začeli izgubljati podatke, izgubijo Uporabniki, ali v najslabšem primeru kot 1153 00:53:48,240 --> 00:53:51,800 Videli smo tukaj, potencialno izgubili denar. 1154 00:53:51,800 --> 00:53:56,180 Torej še enkrat, več o tem v problem nastaviti sedem, kot tudi morda za nekatere 1155 00:53:56,180 --> 00:53:57,530 ste v končnih projektov. 1156 00:53:57,530 --> 00:54:01,870 >> Torej, kaj je spremenilo tisto sliko smo imeli pred nekaj trenutki samo na en način. 1157 00:54:01,870 --> 00:54:04,070 Torej, kaj mi dejansko videli, če bom lahko - 1158 00:54:04,070 --> 00:54:06,030 nope, da je šel. 1159 00:54:06,030 --> 00:54:06,690 Tukaj je. 1160 00:54:06,690 --> 00:54:09,020 >> Torej, to je, če smo zapustili zadnjič. 1161 00:54:09,020 --> 00:54:12,390 In se izkaže, da bomo kretnjo še ena stvar v mešanici tukaj - 1162 00:54:12,390 --> 00:54:14,510 jezik se imenuje JavaScript. 1163 00:54:14,510 --> 00:54:18,060 Torej JavaScript dejansko ustreza v tem kosu - 1164 00:54:18,060 --> 00:54:22,086 in nisem povsem pustiti dovolj prostora, tako da to ni zdaj v merilu. 1165 00:54:22,086 --> 00:54:23,900 OK, to je res patetično. 1166 00:54:23,900 --> 00:54:27,075 OK, tako da je JavaScript. 1167 00:54:27,075 --> 00:54:27,340 Vse je v redu. 1168 00:54:27,340 --> 00:54:28,760 Res sem to delaš medvedjo uslugo. 1169 00:54:28,760 --> 00:54:29,390 Vse je v redu. 1170 00:54:29,390 --> 00:54:34,790 >> Torej JavaScript je drugo programsko jezik, in naša zadnja, če to pomaga 1171 00:54:34,790 --> 00:54:37,770 pomiriti, da ni veliko več od požarnih hidrantov tukaj. 1172 00:54:37,770 --> 00:54:41,100 Torej JavaScript je tudi razlaga jezik, kar pomeni, da ne 1173 00:54:41,100 --> 00:54:42,670 prevedete v ničel in enic. 1174 00:54:42,670 --> 00:54:43,690 Pravkar ste ga zaženite. 1175 00:54:43,690 --> 00:54:47,680 Toda kaj je bistveno drugačen z JavaScript običajno je, da vam 1176 00:54:47,680 --> 00:54:49,815 ga ne predvajajo na svoj spletni strežnik. 1177 00:54:49,815 --> 00:54:52,570 To ne povozi v aparat po sebi. 1178 00:54:52,570 --> 00:54:57,490 Namesto, gets prenesli uporabnik preko HTTP v svojem brskalniku - 1179 00:54:57,490 --> 00:55:00,260 Chrome, Safari, Internet Explorer, Firefox, karkoli - 1180 00:55:00,260 --> 00:55:03,860 in to je brskalnik, ki izvaja to Zlasti programski jezik. 1181 00:55:03,860 --> 00:55:08,000 >> Torej, da bo jasno, PHP je bila doslej izvrši bodisi v ukazni vrstici v 1182 00:55:08,000 --> 00:55:11,290 Naša črno-belo okno, na strežniku podobno napravo, računalniško 1183 00:55:11,290 --> 00:55:14,490 všeč aparata, ali pa je bilo ki jih spletni strežnik izvede 1184 00:55:14,490 --> 00:55:15,860 teče na računalniku. 1185 00:55:15,860 --> 00:55:20,490 Ampak tema tukaj je, da PHP doslej je bil izvršen strani strežnika, tako 1186 00:55:20,490 --> 00:55:24,820 uporabnik in uporabnikov brskalnik nikoli ne vidi linijo PHP kode. 1187 00:55:24,820 --> 00:55:28,530 >> V bistvu, če ste kdaj odprete brskalnik za vaše spletne strani ali drugega in si 1188 00:55:28,530 --> 00:55:32,400 dejansko videli PHP kodo v vašem oknu nekdo je zamočil. 1189 00:55:32,400 --> 00:55:34,950 Ker to ni mišljeno, da bo poslati v brskalniku neposredno. 1190 00:55:34,950 --> 00:55:38,150 To naj bi se izvajale, in obrnil v nekaj podobnega HTML. 1191 00:55:38,150 --> 00:55:40,120 >> Vendar JavaScript je bistveno nasprotno. 1192 00:55:40,120 --> 00:55:44,350 To je pomenilo, da je treba zagnati navadno v notranjosti okna brskalnika uporabnika. 1193 00:55:44,350 --> 00:55:46,840 In katere vrste spletnih strani uporabite JavaScript nato pa v teh dneh? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> Všeč mi je dobesedno vsako priljubljeno spletno stran. 1196 00:55:52,180 --> 00:55:55,430 Vsak spletni strani, da se vidva uporabite dnevno uporabljajo JavaScript za 1197 00:55:55,430 --> 00:55:57,330 Najenostavnejši in celo najbolj seksi lastnosti. 1198 00:55:57,330 --> 00:55:59,800 >> Torej nekaj podobnega Facebooku Klepet, če boste uporabili to. 1199 00:55:59,800 --> 00:56:01,040 Kako se je to dejansko deluje? 1200 00:56:01,040 --> 00:56:05,090 No tako daleč, vse stvari ki smo jih narediti z HTML in PHP predpostavlja, da 1201 00:56:05,090 --> 00:56:08,750 si potegnite navzgor URL in ga pritisnite tipko Enter, in boste videli nekaj HTML vsebine. 1202 00:56:08,750 --> 00:56:11,970 In kliknete na povezavo, ki se spreminja URL, spremeni stran in osvežitev 1203 00:56:11,970 --> 00:56:12,740 nekatere nove vsebine. 1204 00:56:12,740 --> 00:56:16,340 Kliknite drug URL ali predložiti obrazec, se odnese na drugo stran in 1205 00:56:16,340 --> 00:56:17,420 boste videli nekaj novih vsebin. 1206 00:56:17,420 --> 00:56:22,710 >> Vendar z uporabo nekaj podobnega Facebook Chat, ali Gchat ali Google Maps, redko 1207 00:56:22,710 --> 00:56:27,350 se celotna stran osveži, tako da vidite beli zaslon za trenutek in 1208 00:56:27,350 --> 00:56:28,470 Nato novo vsebino. 1209 00:56:28,470 --> 00:56:32,610 Namesto, spletne strani so danes dinamično dobili spet posodobiti in 1210 00:56:32,610 --> 00:56:35,570 znova in znova vse vrste v ozadju. 1211 00:56:35,570 --> 00:56:38,560 In izkazalo se je, da ko gredo na nekaj takega kot so Facebook, ali Gchat, 1212 00:56:38,560 --> 00:56:43,050 ali Gmail in posodobitve stran samodejno, brez ponovnega 1213 00:56:43,050 --> 00:56:47,630 celoten zaslon, kaj se je zgodilo, je, da Vaš brskalnik je dosegla nekako na skrivaj 1214 00:56:47,630 --> 00:56:49,410 dodatne zahteve HTTP - 1215 00:56:49,410 --> 00:56:52,740 ne za vse spletne strani, vendar samo za majhne kose podatkov, kot so 1216 00:56:52,740 --> 00:56:55,740 hitra sporočila, da je tvoj prijatelj pravkar Vi ali posodobitev stanja poslal, da 1217 00:56:55,740 --> 00:56:58,210 nekdo vas, ali tweet pravkar poslal da je nekdo pravkar poslal. 1218 00:56:58,210 --> 00:57:02,120 To je samo tako malo prošenj za podatkov, nato pa z uporabo JavaScript, to 1219 00:57:02,120 --> 00:57:06,370 programski jezik, spremeniti kaj Spletna stran izgleda kot brez 1220 00:57:06,370 --> 00:57:09,860 Strežnik pomaga, brez strežnika ustvarjajo to HTML. 1221 00:57:09,860 --> 00:57:13,820 >> Torej na kratko, lahko JavaScript treba uporabiti, nato ne samo prinese nove podatke iz 1222 00:57:13,820 --> 00:57:16,750 strežnik, brez ponovnega celoto stran ali pa je predložil obrazec. 1223 00:57:16,750 --> 00:57:20,060 Lahko se uporablja tudi za spremembo tako imenovani DOM - 1224 00:57:20,060 --> 00:57:21,520 Dokument objektni model - 1225 00:57:21,520 --> 00:57:24,620 ki je samo fancy način pravijo drevo HTML 1226 00:57:24,620 --> 00:57:26,220 da smo videli zadnjič. 1227 00:57:26,220 --> 00:57:31,640 >> Torej, da bi pomirili, da je JavaScript skladenjsko tako podobna C, kot dobro. 1228 00:57:31,640 --> 00:57:32,820 Ni glavna funkcija. 1229 00:57:32,820 --> 00:57:35,430 Pravkar ste začeli pisati kodo in dobil bo izvršena, ali 1230 00:57:35,430 --> 00:57:36,900 razlagati bolj pravilno. 1231 00:57:36,900 --> 00:57:38,660 Pogoji, ki bo videti takole. 1232 00:57:38,660 --> 00:57:41,230 Ne razlikuje od C ali PHP za to zadevo. 1233 00:57:41,230 --> 00:57:43,890 Boolove izraze ali-ed skupaj bo videti takole. 1234 00:57:43,890 --> 00:57:45,590 Anded skupaj videti takole. 1235 00:57:45,590 --> 00:57:47,750 >> Stikala bo videti takole. 1236 00:57:47,750 --> 00:57:49,440 Kajti zanke izgledala takole. 1237 00:57:49,440 --> 00:57:51,060 Medtem ko bodo zanke izgledala takole. 1238 00:57:51,060 --> 00:57:53,316 Storiti, medtem ko bodo zanke izgledala takole. 1239 00:57:53,316 --> 00:57:54,780 >> To je nova. 1240 00:57:54,780 --> 00:57:58,753 Torej JavaScript ni še foreach konstrukt po sebi, ampak je to konstrukt 1241 00:57:58,753 --> 00:58:03,870 Za spremenljivka i v array, in sem v to Primer postane vrednost indeksa. 1242 00:58:03,870 --> 00:58:06,880 Tako da je malo drugačen od tistega, foreach, čeprav nove različice 1243 00:58:06,880 --> 00:58:10,280 JavaScript prihajajo ven ves čas, tako tudi te jezikovne značilnosti 1244 00:58:10,280 --> 00:58:10,880 se razvijajo. 1245 00:58:10,880 --> 00:58:16,920 >> In kot prahi, JavaScript teh dneh Lahko se uporablja tudi v strežniku tako kot 1246 00:58:16,920 --> 00:58:19,920 PHP uporabe okvira, imenovano Node.js. 1247 00:58:19,920 --> 00:58:24,670 Eden od CS50 je TF, Kevin, je pripeljala Seminar o Node.js ki je na voljo na spletni 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars. 1249 00:58:26,440 --> 00:58:28,830 Torej, če ste radovedni, veš, da ti To lahko uporabite na strani strežnika, kot 1250 00:58:28,830 --> 00:58:33,870 dobro, ampak to je dokaj nov trend, ampak močan ena na to. 1251 00:58:33,870 --> 00:58:35,270 >> To je nekoliko drugačna. 1252 00:58:35,270 --> 00:58:37,910 To je niz v JavaScript. 1253 00:58:37,910 --> 00:58:40,115 In kaj vas udari kot drugačna v primerjavi s C ali PHP? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 Obstaja nekaj hitrih zgodbe mi lahko poveste tukaj. 1256 00:58:47,420 --> 00:58:49,367 Kaj manjka v primerjavi z PHP? 1257 00:58:49,367 --> 00:58:51,652 >> PUBLIKA: [neslišno]. 1258 00:58:51,652 --> 00:58:52,110 >> DAVID Malan: Ja? 1259 00:58:52,110 --> 00:58:53,322 Žal mi je, še enkrat povedati? 1260 00:58:53,322 --> 00:58:54,740 >> PUBLIKA: Ne napovedujemo Vrsta spremenljivke. 1261 00:58:54,740 --> 00:58:56,390 >> DAVID Malan: Ne napovedujemo Vrsta spremenljivke. 1262 00:58:56,390 --> 00:58:59,630 Tako pravzaprav precej kot so PHP, nismo opredeljujejo vrste te spremenljivke. 1263 00:58:59,630 --> 00:59:02,670 Namesto tega smo bolj na splošno pravijo var za spremenljivko. 1264 00:59:02,670 --> 00:59:06,690 Nimamo PHP nadloga znak za dolar, ki je hkrati mučen 1265 00:59:06,690 --> 00:59:09,160 tipa, ne bolj jasno, da Nekaj ​​je spremenljiva. 1266 00:59:09,160 --> 00:59:11,830 Ker so tu, mi smo nekako nazaj Pristop C je s samo kliče 1267 00:59:11,830 --> 00:59:14,500 spremenljivka z imenom želimo dati, kot so številke. 1268 00:59:14,500 --> 00:59:17,170 In prav tako, kot so PHP, imamo oglati oklepaj za 1269 00:59:17,170 --> 00:59:19,170 Vrednosti znotraj te matrike. 1270 00:59:19,170 --> 00:59:22,490 >> Torej spremenljivk v JavaScriptu tudi lahko videti takole. 1271 00:59:22,490 --> 00:59:26,900 Opazil sem, da je to niz imenovan s, ampak prav tako imamo, ki niso navedeni 1272 00:59:26,900 --> 00:59:28,750 da je niz. 1273 00:59:28,750 --> 00:59:33,160 Tukaj, čeprav je funkcija, ki ne obstajajo na enak način v PHP, 1274 00:59:33,160 --> 00:59:34,460 vendar je malo podobno. 1275 00:59:34,460 --> 00:59:36,530 To je objekt v JavaScript. 1276 00:59:36,530 --> 00:59:42,110 In predmeti so nekako Swiss Army Nož strukture podatkov v ta vas 1277 00:59:42,110 --> 00:59:43,900 Uporabite jih lahko za poljubno število stvari. 1278 00:59:43,900 --> 00:59:46,860 >> Tukaj, na primer, smo razglasitvi spremenljivka se imenuje quote. 1279 00:59:46,860 --> 00:59:49,110 Vrsta spremenljivko je objekt. 1280 00:59:49,110 --> 00:59:53,550 Lahko si misliš, da je to C struct da ima ključe in vrednosti. 1281 00:59:53,550 --> 00:59:55,250 Simbol je ključ. 1282 00:59:55,250 --> 00:59:57,350 FB je vrednost, očitno Borzni simbol. 1283 00:59:57,350 --> 00:59:57,930 Vejica. 1284 00:59:57,930 --> 01:00:02,180 Cena je še en ključni, njena vrednost pa je očitno plavajočo vejico, ali 1285 01:00:02,180 --> 01:00:06,510 število bolj splošno v JavaScript, za 49,26 $. 1286 01:00:06,510 --> 01:00:09,030 >> Torej PHP nima - 1287 01:00:09,030 --> 01:00:12,980 nismo videli v PHP predmetov dokaj kot je ta, vendar nismo videli analogno, 1288 01:00:12,980 --> 01:00:14,093 , ki je bilo kaj? 1289 01:00:14,093 --> 01:00:14,980 >> PUBLIKA: [neslišno]. 1290 01:00:14,980 --> 01:00:16,110 >> DAVID Malan: Povezovalne matrike. 1291 01:00:16,110 --> 01:00:19,990 Zato ker ima PHP asociativne nize katerih sintaksa je vedno nekoliko tako 1292 01:00:19,990 --> 01:00:20,370 drugačna - 1293 01:00:20,370 --> 01:00:21,780 smo videli oglatih oklepajev. 1294 01:00:21,780 --> 01:00:23,860 Videli smo čudne simbole, puščice. 1295 01:00:23,860 --> 01:00:27,330 JavaScript ima predmetov, vendar je to predvsem pomenska razlika in 1296 01:00:27,330 --> 01:00:29,260 drugačna sinonim za zdaj. 1297 01:00:29,260 --> 01:00:35,060 Vendar pa, kot prahi, PHP ima tudi predmetov na način, ki Java in drugi 1298 01:00:35,060 --> 01:00:37,810 jeziki imajo predmetov objektno programiranje. 1299 01:00:37,810 --> 01:00:40,440 Ampak bomo uporabili to le za podatkovne tipe, za zdaj. 1300 01:00:40,440 --> 01:00:42,170 Predmeti in asociativne nize. 1301 01:00:42,170 --> 01:00:44,140 >> Ta je lahko bi bilo malo bolj jasno. 1302 01:00:44,140 --> 01:00:45,890 Evo zakaj je objekt uporaben. 1303 01:00:45,890 --> 01:00:48,760 Če želite, da ugotovi, študent, kot Zamyla, lahko dejansko 1304 01:00:48,760 --> 01:00:52,630 zaobjeti tako rekoč v notranjosti, ki nasprotuje uporabi zavite oklepaje, tako kot 1305 01:00:52,630 --> 01:00:55,060 Pred cel kup tipk in vrednote v tukaj. 1306 01:00:55,060 --> 01:00:59,150 Imamo ID, hišo, in ime Zamyla, ki mu sledi s podpičjem kot 1307 01:00:59,150 --> 01:01:00,690 običajno na koncu. 1308 01:01:00,690 --> 01:01:04,840 >> Navzdol tudi tu, je to nekoliko različni, vendar tudi zelo močna 1309 01:01:04,840 --> 01:01:05,690 v teh dneh. 1310 01:01:05,690 --> 01:01:08,780 Tukaj je matrika, in vem, da zato, ker tam je oglati oklepaj up 1311 01:01:08,780 --> 01:01:11,090 Zgornji in oglati oklepaj na dnu. 1312 01:01:11,090 --> 01:01:16,050 In to je matrika, katere podatke tip očitno v JavaScript? 1313 01:01:16,050 --> 01:01:21,260 To je niz je videti kot tri predmete. 1314 01:01:21,260 --> 01:01:24,580 In vem, da je le predmet zaradi zavite oklepaje. 1315 01:01:24,580 --> 01:01:28,760 In obvestilo, da je odprt curly brace, nekatere stvari, blizu kodrasti naramnicami, vejica, 1316 01:01:28,760 --> 01:01:31,180 nato pa nekaj več, vejica, in še nekaj več. 1317 01:01:31,180 --> 01:01:33,800 Torej, to je tri argumente ločeni z dvema vejice. 1318 01:01:33,800 --> 01:01:36,810 >> Torej, to je niz treh objektov. 1319 01:01:36,810 --> 01:01:39,940 In vsak od teh objektov se zdi študent ali uslužbenec nekaterih 1320 01:01:39,940 --> 01:01:42,370 sort, vsak z ID, hiša, in ime. 1321 01:01:42,370 --> 01:01:45,060 Ampak sem poklical tega, kaj imenovano JSON - 1322 01:01:45,060 --> 01:01:47,450 JavaScript Object Notation. 1323 01:01:47,450 --> 01:01:52,060 In to je format podatkov, ki dejansko je tako zelo priljubljen in v 1324 01:01:52,060 --> 01:01:55,100 modi v teh dneh, da če ste napisali aplikacija, ki uporablja Facebook 1325 01:01:55,100 --> 01:01:59,150 API, Twitter API, res skoraj vsaka API tam v teh dneh, 1326 01:01:59,150 --> 01:02:02,820 vključno z nekaterimi lastno CS50 je, Podatki, ki jih dobite nazaj, ni v 1327 01:02:02,820 --> 01:02:04,720 Stara šola v CSV formatu. 1328 01:02:04,720 --> 01:02:06,780 >> Saj opozarjajo, da CSV je zelo preprosta. 1329 01:02:06,780 --> 01:02:10,230 To je samo stolpci ločeni z vejicami. 1330 01:02:10,230 --> 01:02:13,190 JSON podatkov vam daje več metapodatkov. 1331 01:02:13,190 --> 01:02:17,800 Združuje ključ z vsako vrednostjo, tako nimajo samo domnevati, da 1332 01:02:17,800 --> 01:02:22,460 stolpec Ničti je ena vrednost stolpca ena je še en, dva stolpca je drugo. 1333 01:02:22,460 --> 01:02:26,790 Vse, kar je v JSON objekt tukaj je nekako self-opisovanje, ker vsak 1334 01:02:26,790 --> 01:02:30,940 eno od imen v tej datoteki je dobesedno ime pred njo kot 1335 01:02:30,940 --> 01:02:32,510 kotirajo niz. 1336 01:02:32,510 --> 01:02:34,950 >> Tako da je lahko pogled na Nekaj ​​primerov tukaj. 1337 01:02:34,950 --> 01:02:36,800 Naj grem v aparat. 1338 01:02:36,800 --> 01:02:41,000 In me spustili v našo vhost Imenik v javnosti. 1339 01:02:41,000 --> 01:02:45,590 In mi gredo v JavaScript imenik. 1340 01:02:45,590 --> 01:02:49,610 In gremo naprej in odpiranje dom-0.html, kjer DOM samo pomeni, 1341 01:02:49,610 --> 01:02:51,010 Dokument objektni model. 1342 01:02:51,010 --> 01:02:53,490 To je drevo stvari, za katere Sem jih prej omenil. 1343 01:02:53,490 --> 01:02:54,950 >> In mi predlagamo naslednje. 1344 01:02:54,950 --> 01:02:57,720 Tukaj je spletna stran, katere Telo je zelo preprosta. 1345 01:02:57,720 --> 01:03:00,170 Torej, tukaj na dnu, Opazil sem imela obliko. 1346 01:03:00,170 --> 01:03:01,500 Videli smo pred tistimi. 1347 01:03:01,500 --> 01:03:07,600 To ima dva vhoda, od katerih ima ena ID imena, od katerih ima en tip 1348 01:03:07,600 --> 01:03:09,830 predložijo, in prvi eden je vrsta besedila. 1349 01:03:09,830 --> 01:03:11,900 Torej je to dejansko zveni precej preprosta. 1350 01:03:11,900 --> 01:03:13,090 >> Greva tukaj. 1351 01:03:13,090 --> 01:03:15,390 Vrnimo se na to stran tukaj. 1352 01:03:15,390 --> 01:03:21,030 Pojdimo v localhost, in gredo v naš imenik JavaScript in pojdite na 1353 01:03:21,030 --> 01:03:24,640 dom-0, in tu imamo ta obrazec. 1354 01:03:24,640 --> 01:03:26,550 Tako da je očitno Vse to počne stran. 1355 01:03:26,550 --> 01:03:28,740 To je polje imena z gumb Pošlji. 1356 01:03:28,740 --> 01:03:30,340 Ampak ne bom uporabljati PHP tukaj. 1357 01:03:30,340 --> 01:03:34,310 Jaz bom naredil vse strani odjemalca tako rekoč v JavaScript takole. 1358 01:03:34,310 --> 01:03:39,100 >> Obvestilo, da sem res dobila ime Področje tega vhoda edinstven 1359 01:03:39,100 --> 01:03:42,350 identifikator, ki bo dejansko Reši me nekaj časa v trenutku. 1360 01:03:42,350 --> 01:03:45,480 In opazil sem predstavil novo tablico v glavi moji spletni strani, 1361 01:03:45,480 --> 01:03:46,565  tag. 1362 01:03:46,565 --> 01:03:50,120 >> Tako da je v tem smislu, da je JavaScript programski jezik na strani odjemalca. 1363 01:03:50,120 --> 01:03:55,020 V tem primeru, tako kot CSS, sem dal ravne znotraj mojega HTML. 1364 01:03:55,020 --> 01:03:58,810 Opazil sem razglasila funkcijo , ki izgleda malo všeč PHP 1365 01:03:58,810 --> 01:04:01,530 sintaktično, ampak to je dejansko JavaScript, ker še enkrat, to je 1366 01:04:01,530 --> 01:04:03,920 client-side v brskalniku. 1367 01:04:03,920 --> 01:04:07,590 In ugibati, kaj se to dogaja, da narediti, čeprav so nekatere od sintakse 1368 01:04:07,590 --> 01:04:09,338 Tukaj je nova. 1369 01:04:09,338 --> 01:04:11,760 >> PUBLIKA: Pozdravi kdorkoli. 1370 01:04:11,760 --> 01:04:14,020 >> DAVID Malan: To se dogaja, da se pozdravi da kdor obišče to stran. 1371 01:04:14,020 --> 01:04:15,120 Torej, kako? 1372 01:04:15,120 --> 01:04:18,070 >> Tako obvestilo, se izkaže v JavaScript tam je opozorilo (funkcija). 1373 01:04:18,070 --> 01:04:22,840 To je zelo nekako žalostno, da je funkcija res samo ponavadi nagajati uporabnike. 1374 01:04:22,840 --> 01:04:25,440 To ni tista, ki jo je treba res uporabiti Značilno je, ampak to je hiter in umazan 1375 01:04:25,440 --> 01:04:27,710 način nekako tiskanje nekaj za grafični uporabniški 1376 01:04:27,710 --> 01:04:29,180 vmesnik, kot brskalnik. 1377 01:04:29,180 --> 01:04:31,400 Opazil sem, da imam Niz v enojnih narekovajih. 1378 01:04:31,400 --> 01:04:36,010 Izkazalo se je, da za razliko od C, JavaScript lahko dejansko uporabljate single 1379 01:04:36,010 --> 01:04:38,730 citira, in odkrito povedano je to nekako stilistične konvencije med 1380 01:04:38,730 --> 01:04:41,180 JavaScript programerji uporabiti enojne narekovaje. 1381 01:04:41,180 --> 01:04:43,750 PHP, jih dejansko imajo nekoliko drugačen pomen. 1382 01:04:43,750 --> 01:04:45,810 Ampak za zdaj, samo vem, da To je edini razlog. 1383 01:04:45,810 --> 01:04:49,270 Konvencija v JavaScript je pogosto Uporabite enojne narekovaje, vendar smo lahko uporabili 1384 01:04:49,270 --> 01:04:50,950 narekovajih v obeh mestih, kot tudi. 1385 01:04:50,950 --> 01:04:52,610 >> Torej je to zanimivo. 1386 01:04:52,610 --> 01:04:56,430 Spomnimo, zadnji čas, da smo imeli, da slika na zaslonu, ki je oblikovala drevo 1387 01:04:56,430 --> 01:04:59,720 , kjer boste imeli HTML vozlišče in glavo vozlišče in telo vozlišče, 1388 01:04:59,720 --> 01:05:00,800 in potem nekaj besedila. 1389 01:05:00,800 --> 01:05:04,700 Vendar je bila ena posebna vozlišče na Zelo top, da sem poklical dokument. 1390 01:05:04,700 --> 01:05:08,260 No, izkazalo se je v JavaScript, vsak Ko boste napisati program v JavaScript 1391 01:05:08,260 --> 01:05:11,040 v brskalniku, morate imeti dostop do posebna globalna spremenljivka. 1392 01:05:11,040 --> 01:05:14,130 Pisane v duhu superglobals PHP, To se imenuje v 1393 01:05:14,130 --> 01:05:16,050 vse male črke dokument. 1394 01:05:16,050 --> 01:05:21,480 >> To je kot struct, ampak to struct Ima tudi funkcije znotraj njega. 1395 01:05:21,480 --> 01:05:23,790 Torej C struct ima samo podatke običajno. 1396 01:05:23,790 --> 01:05:29,060 Vendar JavaScript predmet, kot je to tehnično je tako ima funkcije, 1397 01:05:29,060 --> 01:05:31,830 sicer znan kot metode, v njem. 1398 01:05:31,830 --> 01:05:35,750 In lahko pokličete funkcijo znotraj Ta predmet dobesedno opravlja svoje 1399 01:05:35,750 --> 01:05:39,610 ime, pika, nato ime funkcijo, ali spet metoda. 1400 01:05:39,610 --> 01:05:41,160 To je samo sinonim, res. 1401 01:05:41,160 --> 01:05:42,450 >> In kaj je ta funkcija ne? 1402 01:05:42,450 --> 01:05:43,840 Lahko nekako ugibati z njenim imenom. 1403 01:05:43,840 --> 01:05:45,590 Get element z ID. 1404 01:05:45,590 --> 01:05:50,040 Torej, to se dogaja, da poiščete spletno stran, iskanje tisto drevo, ki išče 1405 01:05:50,040 --> 01:05:55,210 karkoli vozlišče, AKA element, ima edinstven ID citatom citata imena. 1406 01:05:55,210 --> 01:05:56,560 In potem, kaj bom naredil? 1407 01:05:56,560 --> 01:06:00,350 Jaz bom dobil vrednosti znotraj da vozlišče v drevesu, in bom 1408 01:06:00,350 --> 01:06:02,580 nekako pozdravit tem imenom. 1409 01:06:02,580 --> 01:06:05,360 >> Torej predvidevate, čeprav Nismo še videl, kaj storiti, plus 1410 01:06:05,360 --> 01:06:07,396 Simboli pomenijo tukaj in tukaj verjetno? 1411 01:06:07,396 --> 01:06:08,230 >> PUBLIKA: Concatenate. 1412 01:06:08,230 --> 01:06:09,220 >> DAVID Malan: Concatenate. 1413 01:06:09,220 --> 01:06:11,290 Prav, in to so le nekako oblikovati sklepe 1414 01:06:11,290 --> 01:06:12,280 ljudje so že pred leti. 1415 01:06:12,280 --> 01:06:15,190 V PHP, sestavite Stvari s pikami. 1416 01:06:15,190 --> 01:06:18,800 V C, ko skoči skozi več obroče in klic funkcije, kot strcopy () ali 1417 01:06:18,800 --> 01:06:20,600 strcat () ali druge takšne funkcije. 1418 01:06:20,600 --> 01:06:22,060 Ampak v JavaScript, uporabite pluse. 1419 01:06:22,060 --> 01:06:24,770 Torej, to je samo concatenating trije nizi - 1420 01:06:24,770 --> 01:06:27,850 Pozdravljeni, ime, nato pa klicaj. 1421 01:06:27,850 --> 01:06:30,390 >> Torej, kdaj in zakaj je ta funkcija pozval, čeprav? 1422 01:06:30,390 --> 01:06:33,150 No, ugibati iz HTML na dnu. 1423 01:06:33,150 --> 01:06:35,810 Zakaj se pozdravi () pozval, ali kdaj? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> Očitno, kot najbolje znam povedati, na predložiti ob predložitvi tega obrazca, 1426 01:06:44,030 --> 01:06:47,200 Jaz bom naredil vse, kar je znotraj teh ponudb. 1427 01:06:47,200 --> 01:06:50,900 In še posebej, bom poklicati pozdravi () in se nato vrne false. 1428 01:06:50,900 --> 01:06:53,090 >> No, pa poglejmo, kaj se je neto Učinek je tu prvi. 1429 01:06:53,090 --> 01:06:58,290 Naj gredo naprej in tip v, recimo, Loren, Submit. 1430 01:06:58,290 --> 01:06:59,440 Pozdravljeni Loren. 1431 01:06:59,440 --> 01:07:02,990 Poglejmo, če je to morda samo Srečo izvajanje. 1432 01:07:02,990 --> 01:07:03,200 Nope. 1433 01:07:03,200 --> 01:07:05,990 Tako da je tipkanje ven karkoli ime pravzaprav sem dal tam. 1434 01:07:05,990 --> 01:07:07,970 >> Ampak obvestilo, kaj se ne spreminja. 1435 01:07:07,970 --> 01:07:10,360 URL je še vedno dom-0.html. 1436 01:07:10,360 --> 01:07:11,820 Ni register.php. 1437 01:07:11,820 --> 01:07:13,110 Ni druge datoteke. 1438 01:07:13,110 --> 01:07:14,930 Ni dejanje atribut. 1439 01:07:14,930 --> 01:07:19,720 Torej, kaj je to vračanje false verjetno delaš? 1440 01:07:19,720 --> 01:07:23,660 Zato kličem pozdravim () in nato vračajo verjetno ne drži? 1441 01:07:23,660 --> 01:07:26,420 Kaj se ponavadi zgodi, ko boste kliknili Predložijo na obrazcu, ki še imamo 1442 01:07:26,420 --> 01:07:27,854 videli v preteklem tednu? 1443 01:07:27,854 --> 01:07:29,900 >> PUBLIKA: [neslišno]. 1444 01:07:29,900 --> 01:07:30,860 >> DAVID Malan: Gre nekje, kajne? 1445 01:07:30,860 --> 01:07:32,720 Gre za nek ciljni URL. 1446 01:07:32,720 --> 01:07:34,120 Vendar ne želim, da se to zgodi tukaj. 1447 01:07:34,120 --> 01:07:37,620 Želim moja spletna stran, ki je popolnoma dinamično, kot so Gmail, kjer je nekoč ste 1448 01:07:37,620 --> 01:07:38,650 tam, ostani tam. 1449 01:07:38,650 --> 01:07:42,900 URL ne spremeni na način, ki označuje celotna stran se ponovnega nakladanja. 1450 01:07:42,900 --> 01:07:46,680 Namesto, samo želim nekaj spremeniti kot je tiskanje nekaj 1451 01:07:46,680 --> 01:07:48,320 tu na zaslonu. 1452 01:07:48,320 --> 01:07:49,630 >> No povej mi čist to gor malo. 1453 01:07:49,630 --> 01:07:55,370 Dovolite mi, da odprejo ne Dom-0, vendar Naj odprejo Dom-2. 1454 01:07:55,370 --> 01:07:57,350 Samo, da ste videli nekaj sintakse tukaj. 1455 01:07:57,350 --> 01:08:02,080 >> Izkazalo se je, da tisto, kar smo pravkar Poskusil je z uporabo surovega JavaScript. 1456 01:08:02,080 --> 01:08:04,420 Torej, to je resnično jezik JavaScript. 1457 01:08:04,420 --> 01:08:07,340 Nekateri od vas morda poznate knjižnica se imenuje jQuery. 1458 01:08:07,340 --> 01:08:09,980 >> Torej jQuery ni enak stvar, kot je JavaScript. 1459 01:08:09,980 --> 01:08:14,110 To je samo knjižnica, ki res pametno fant napisal in populariziral kot 1460 01:08:14,110 --> 01:08:18,100 da skoraj vsi na svetu, zdaj uporablja jQuery pri uporabi JavaScript. 1461 01:08:18,100 --> 01:08:20,890 In na prvi pogled, pošteno, Izgleda malo bolj skrivnosten. 1462 01:08:20,890 --> 01:08:24,990 Vendar boste našli, še posebej, če greš tam za svoj končni projekt s spleta 1463 01:08:24,990 --> 01:08:29,029 razvoj, boste ugotovili, da je to očisti stvari in vam prihrani precej 1464 01:08:29,029 --> 01:08:30,229 nekaj vrstic kode. 1465 01:08:30,229 --> 01:08:33,189 >> Torej, kaj je samo pogled na kako ta oblika dela. 1466 01:08:33,189 --> 01:08:35,664 Obvestilo, kaj sem odstraniti navidezno iz mojega HTML? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 Ni na predložitev prekladanje tako rekoč. 1469 01:08:40,630 --> 01:08:41,470 Ni atribut. 1470 01:08:41,470 --> 01:08:43,359 Ker veste, kaj Res nisem všeč? 1471 01:08:43,359 --> 01:08:45,640 Počutil sem se, kot da so bile pada v stare navade tam. 1472 01:08:45,640 --> 01:08:49,340 Tako kot se je začelo, da se počutijo površni da se mešata tako CSS z 1473 01:08:49,340 --> 01:08:52,149 HTML, ker ste nekako metanje različnih jezikov po vsem 1474 01:08:52,149 --> 01:08:56,180 mesto, podobno kot je to začelo čutiti kot slabe ceste, da gredo dol, kjer 1475 01:08:56,180 --> 01:09:01,069 Jaz bom dal JavaScript kodo znotraj mojega HTML namesto da bi jo faktoring ven. 1476 01:09:01,069 --> 01:09:02,279 >> Torej, to je lekcija tukaj. 1477 01:09:02,279 --> 01:09:05,080 V Dom-2.html, jo bom faktoring ven. 1478 01:09:05,080 --> 01:09:07,399 In delam stvari nekoliko drugače. 1479 01:09:07,399 --> 01:09:09,630 Za zdaj bom val moje roke kaj je to res 1480 01:09:09,630 --> 01:09:10,590 Pod pokrovom. 1481 01:09:10,590 --> 01:09:14,210 Ampak samo za zdaj predpostavimo, da je prvi vrstica kode v tej knjižnici 1482 01:09:14,210 --> 01:09:18,170 imenovano jQuery pomeni le, ko Dokument je pripravljen, naredite naslednje. 1483 01:09:18,170 --> 01:09:20,080 >> Ker spletne strani lahko traja nekaj časa za nalaganje. 1484 01:09:20,080 --> 01:09:23,029 Lahko bi bil na počasnem internetu povezavo, in to bi lahko vrti 1485 01:09:23,029 --> 01:09:25,290 in ožemanje, in na koncu je nabita. 1486 01:09:25,290 --> 01:09:29,060 Ta vrstica kode samo pravi, počakajte celotna stran pripravljena, dokument 1487 01:09:29,060 --> 01:09:31,189 je pripravljen, pred izvršitvijo te kode. 1488 01:09:31,189 --> 01:09:34,390 >> In zdaj opazil, da je to verjetno Najbolj koristen prvi 1489 01:09:34,390 --> 01:09:36,189 vzeti jQuery. 1490 01:09:36,189 --> 01:09:42,140 Ta postavka tukaj je zelo podobna v duhu s tem precej daljše črte tukaj. 1491 01:09:42,140 --> 01:09:46,920 Ker je v surovem JavaScript kodo, tam obstaja celovit dokument globalne objekte, ki 1492 01:09:46,920 --> 01:09:50,460 Ima funkcijo imenovano getElementById () ljudje, ki so pisali 1493 01:09:50,460 --> 01:09:55,720 jQuery poenostaviti, da bi samo rekel, znak za dolar, in nato znotraj 1494 01:09:55,720 --> 01:10:00,250 oklepaje dal dve ponudbi, in nato dal simbol hash, ki mu sledi 1495 01:10:00,250 --> 01:10:02,250 edinstven ID želite, da zgrabite. 1496 01:10:02,250 --> 01:10:06,170 Torej je to enako document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> Medtem,. Predloži samo pomeni na predložitev ne glede na obliko, da ste 1498 01:10:11,090 --> 01:10:14,240 sklicuje na levo, pojdite naprej in izvršiti to. 1499 01:10:14,240 --> 01:10:16,600 Ampak to je zdaj radovednost preveč. 1500 01:10:16,600 --> 01:10:19,560 Kaj je čudno, kaj Tu sem izpostavila? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 Ne samo, da je vrsta skladenjsko novo, tam je tudi nekaj manjka. 1503 01:10:28,594 --> 01:10:29,558 >> PUBLIKA: To je pravkar klical funkcijo? 1504 01:10:29,558 --> 01:10:31,970 To se ne imenuje pozorni? 1505 01:10:31,970 --> 01:10:32,440 >> DAVID Malan: Ja. 1506 01:10:32,440 --> 01:10:35,450 No, tako alert () je navzdol sem, da bo pošteno. 1507 01:10:35,450 --> 01:10:39,520 Ampak ni omenjen ime, kot veste, foo ali 1508 01:10:39,520 --> 01:10:40,980 Nekaj ​​sem gor. 1509 01:10:40,980 --> 01:10:43,830 In res, to je ena od značilnosti JavaScript, ki je precej 1510 01:10:43,830 --> 01:10:45,370 zmogljiv, ampak tudi povsem novo. 1511 01:10:45,370 --> 01:10:47,460 In PHP dejansko ima tudi to. 1512 01:10:47,460 --> 01:10:49,500 >> Dovolite mi, da gredo naprej in narediti Nekaj ​​zelo hitro. 1513 01:10:49,500 --> 01:10:52,030 Dovolite mi, da gredo naprej in to dal ven. 1514 01:10:52,030 --> 01:10:52,600 Dovolite mi, da to storijo. 1515 01:10:52,600 --> 01:10:53,690 Funkcija. 1516 01:10:53,690 --> 01:10:56,455 Recimo tega vodnika (). 1517 01:10:56,455 --> 01:10:58,290 Funkcija za prekladanje tako rekoč. 1518 01:10:58,290 --> 01:11:00,110 Nekaj, kar se obravnava nekaj operacijo. 1519 01:11:00,110 --> 01:11:02,700 Dovolite mi, da počisti svoj zamik. 1520 01:11:02,700 --> 01:11:04,380 In to mu tukaj. 1521 01:11:04,380 --> 01:11:06,090 In dal, da je tukaj. 1522 01:11:06,090 --> 01:11:06,470 Jap. 1523 01:11:06,470 --> 01:11:07,060 OK. 1524 01:11:07,060 --> 01:11:10,300 >> Torej, zdaj imam funkcijo imenovano Vodnik (), da jaz ne vem 1525 01:11:10,300 --> 01:11:10,890 kaj počne še. 1526 01:11:10,890 --> 01:11:12,710 To je samo še te stvari. 1527 01:11:12,710 --> 01:11:13,900 Ops. 1528 01:11:13,900 --> 01:11:15,820 Je preveč. 1529 01:11:15,820 --> 01:11:18,490 Naredimo to. 1530 01:11:18,490 --> 01:11:18,990 Vse je v redu. 1531 01:11:18,990 --> 01:11:20,240 Žal mi je. 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 Vse je v redu. 1534 01:11:23,690 --> 01:11:24,720 Dovolite mi, da to storijo. 1535 01:11:24,720 --> 01:11:25,020 OK. 1536 01:11:25,020 --> 01:11:27,040 Da izgleda lepo in naravnost naj zdaj. 1537 01:11:27,040 --> 01:11:29,090 Dovolite mi, da to storijo. 1538 01:11:29,090 --> 01:11:29,860 Ali to. 1539 01:11:29,860 --> 01:11:30,950 In OK. 1540 01:11:30,950 --> 01:11:33,080 Torej, zdaj, kaj je dal to tukaj. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 Nič več programiranje na letenje. 1543 01:11:37,270 --> 01:11:37,900 OK. 1544 01:11:37,900 --> 01:11:40,000 >> Torej, zdaj, gremo nazaj kjer se je začela zgodba. 1545 01:11:40,000 --> 01:11:43,530 Prej sem rekel, da je ta linija tukaj pomeni, da ko je dokument pripravljen, greva 1546 01:11:43,530 --> 01:11:44,380 naprej in to. 1547 01:11:44,380 --> 01:11:45,660 Kaj hočem storiti? 1548 01:11:45,660 --> 01:11:49,070 No, posebej pa želim iti naprej in naredite naslednje. 1549 01:11:49,070 --> 01:11:53,700 Izvršiti to vrstico kode, nato pa Kaj hočem storiti, je to imenujemo 1550 01:11:53,700 --> 01:11:56,370 delovati, ko se predloži obrazec. 1551 01:11:56,370 --> 01:11:57,730 >> Zdaj je to tisto, kar je zanimivo. 1552 01:11:57,730 --> 01:11:59,170 To ni samo funkcija. 1553 01:11:59,170 --> 01:12:02,540 Opazil sem, nisem za oklepaje Tukaj na običajen način. 1554 01:12:02,540 --> 01:12:06,800 Jaz sem dobesedno mimo funkcijo imenovano Vodnik () na drugo delovno mesto 1555 01:12:06,800 --> 01:12:10,800 imenovano predložijo () kot argument kot čeprav je kot spremenljivko. 1556 01:12:10,800 --> 01:12:14,290 In to je eden od značilnosti JavaScript je Funkcije sami 1557 01:12:14,290 --> 01:12:15,710 so res samo predmeti. 1558 01:12:15,710 --> 01:12:18,350 Dejstvo je, da si res samo spremenljivke neke vrste. 1559 01:12:18,350 --> 01:12:21,340 In če je ime funkcije je Vodnik (), ni nobenega razloga, da ne morem 1560 01:12:21,340 --> 01:12:23,390 dajati v kot argument tukaj. 1561 01:12:23,390 --> 01:12:27,530 In to pomeni, da ko obliki z ID demo je 1562 01:12:27,530 --> 01:12:29,320 predložila, pokličite to funkcijo. 1563 01:12:29,320 --> 01:12:32,770 >> Ampak zdaj, če sem razveljavite vse to, zakaj potem sem morda naredil 1564 01:12:32,770 --> 01:12:34,850 To je pred nekaj trenutki? 1565 01:12:34,850 --> 01:12:36,840 No, to je anonimen funkcija. 1566 01:12:36,840 --> 01:12:41,080 Ker odkrito povedano, sem spoznal, zakaj sem moti, da izgubljati časa razglasitvi 1567 01:12:41,080 --> 01:12:45,540 Funkcija se imenuje trener (), samo, da pokličete se je v enega in edinega enem mestu? 1568 01:12:45,540 --> 01:12:48,640 Če ne rabim imena, in jaz ne morali poklicati več kot eno mesto, 1569 01:12:48,640 --> 01:12:51,200 kaj je samo izvajanje funkcije tam, kjer rabim ga. 1570 01:12:51,200 --> 01:12:55,190 In tako JavaScript in PHP podpirajo, kaj Imenujejo se anonimnih funkcije, ki 1571 01:12:55,190 --> 01:12:57,900 Dovolite mi, da stori točno to tukaj. 1572 01:12:57,900 --> 01:12:59,570 >> Vendar smo šele praskanja površine. 1573 01:12:59,570 --> 01:13:02,430 Oglejmo draži z le nekaj Končni primerov tukaj. 1574 01:13:02,430 --> 01:13:04,600 >> Če grem v quote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 Opazimo, da je to pravzaprav PHP Funkcija, PHP program, ki sem napisal 1577 01:13:11,870 --> 01:13:15,270 da pričakuje HTTP parameter se imenuje simbol, in sem lahko preide v 1578 01:13:15,270 --> 01:13:16,730 vrednost kot FB. 1579 01:13:16,730 --> 01:13:20,010 In če smo dejansko pogled na viru kodo, to je poizvedovanje brezplačno spletno mesto 1580 01:13:20,010 --> 01:13:23,680 imenovano Yahoo Finance, tako kot p-set sedem, in to je vračanje k meni 1581 01:13:23,680 --> 01:13:26,580 nekaj v navidezno format znano, je JSON - 1582 01:13:26,580 --> 01:13:28,010 JavaScript Object Notation. 1583 01:13:28,010 --> 01:13:28,810 To je samo predmet. 1584 01:13:28,810 --> 01:13:32,500 Opazili zavite oklepaje, citati, debelega črevesa, in vejice. 1585 01:13:32,500 --> 01:13:34,720 >> Zdaj medtem, to je zelo kul. 1586 01:13:34,720 --> 01:13:38,520 Ker sem verjetno lahko uporabite programiranje jezik za ustvarjanje URL-jev 1587 01:13:38,520 --> 01:13:40,370 da je videti takole dinamično, kajne? 1588 01:13:40,370 --> 01:13:43,340 To lahko spremenite v Googlu in se vrnem Googlov 1589 01:13:43,340 --> 01:13:47,930 stock ceno $ 1,017.55. 1590 01:13:47,930 --> 01:13:49,640 Torej, da vidimo, če tega ne moremo uporabljati zdaj. 1591 01:13:49,640 --> 01:13:56,590 >> Naj grem na Ajax 0 tu, ki Izgleda, da je naslednje. 1592 01:13:56,590 --> 01:13:59,750 To je samo spletna stran, ki ima obrazec z gumbom. 1593 01:13:59,750 --> 01:14:05,860 Dovolite mi, da sem šel naprej in tip v YHOO simbol Yahoo parka, kliknite Pridobi 1594 01:14:05,860 --> 01:14:10,530 Citat, in zdaj opazil sem prišel Opozarjanje z 32,86. 1595 01:14:10,530 --> 01:14:14,050 >> Dovolite mi, da dejansko šel na Ljubitelj različico za to stran, različica dva, in 1596 01:14:14,050 --> 01:14:17,530 vnesite recimo Microsoft, MSFT. 1597 01:14:17,530 --> 01:14:18,410 Get Quote. 1598 01:14:18,410 --> 01:14:19,850 In sedaj opazili, ni opozorilo. 1599 01:14:19,850 --> 01:14:22,770 Obvestilo, kjer piše cena določi? 1600 01:14:22,770 --> 01:14:27,060 Tukaj je najpreprostejši primerov, ki namiguje na kakšni Gchat in Facebook 1601 01:14:27,060 --> 01:14:30,070 Klepet in Gmail, in druge take spletne strani, ki delajo z dejansko 1602 01:14:30,070 --> 01:14:31,290 spreminjanje spletne strani. 1603 01:14:31,290 --> 01:14:31,800 >> Opazijo. 1604 01:14:31,800 --> 01:14:33,120 Dovolite mi, da osvežite stran. 1605 01:14:33,120 --> 01:14:35,080 Naj se odprejo inšpektor Chrome. 1606 01:14:35,080 --> 01:14:36,890 Naj grem na elemente Kartica tukaj. 1607 01:14:36,890 --> 01:14:42,310 Zdaj opazil, če sem povečate dol in odpre to gor, opazite, da je to moj 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - moj model dokument predmet. 1609 01:14:44,500 --> 01:14:45,920 To je moja HTML. 1610 01:14:45,920 --> 01:14:48,750 Toda zdaj opazil, čeprav se dogaja da bo malo težko, da ga vidim v obeh 1611 01:14:48,750 --> 01:14:52,080 mestih hkrati, če sem tip v FB tu gor, pazi na dno 1612 01:14:52,080 --> 01:14:54,110 zaslona samo. 1613 01:14:54,110 --> 01:14:57,720 >> To je dejansko spreminja Moj HTML na letenje. 1614 01:14:57,720 --> 01:15:01,670 In to je to početje preprosto s tem, kaj takega. 1615 01:15:01,670 --> 01:15:06,800 Če sem odprla Ajax 2, obvestilo o izvajanju nekaj tako seksi, kot je 1616 01:15:06,800 --> 01:15:09,560 da, čeprav je to precej grdo, ampak kot prefinjene, kot da 1617 01:15:09,560 --> 01:15:11,910 funkcionalno, da ima nekaj HTML na dnu. 1618 01:15:11,910 --> 01:15:13,810 Opazil sem rabil označiti. 1619 01:15:13,810 --> 01:15:16,640 To smo že ne uporablja, vendar je to kot, vendar ne prisili 1620 01:15:16,640 --> 01:15:17,840 vse na novo linijo. 1621 01:15:17,840 --> 01:15:20,830 Samo naredi pravokotno regijo na isti liniji v bistvu. 1622 01:15:20,830 --> 01:15:22,870 >> Obvestilo, da sem dal to je ID ceno. 1623 01:15:22,870 --> 01:15:26,800 In se izkaže z enako JavaScript knjižnico, imam funkcijo 1624 01:15:26,800 --> 01:15:30,440 imenovano quote (), ki se imenuje kadarkoli Obrazec je predloženi. 1625 01:15:30,440 --> 01:15:31,800 In kaj počnem to. 1626 01:15:31,800 --> 01:15:35,730 Jaz razglasitvi spremenljivke v JavaScript imenovano url, varčevanje vrednost 1627 01:15:35,730 --> 01:15:38,650 quote.php? simbol =. 1628 01:15:38,650 --> 01:15:44,220 Z drugimi besedami, sam sem že za pripravo zahtevo HTTP in nato 1629 01:15:44,220 --> 01:15:49,250 Jaz sem concatenating na da s plusom ne glede na element z ID 1630 01:15:49,250 --> 01:15:54,190 od simbola, ki je obvestilo, da tekstovno polje desno dol. 1631 01:15:54,190 --> 01:15:56,630 Torej, tako kot smo imeli obrazce v preteklosti. 1632 01:15:56,630 --> 01:16:01,450 >> In potem se je izkazalo v jQuery, če pokličite. val (), ki kliče iz val 1633 01:16:01,450 --> 01:16:05,900 funkcija, funkcija vrednosti, da dobi karkoli je uporabnik vtipka 1634 01:16:05,900 --> 01:16:08,920 In potem ves promet v omrežju da se zgodi, je to. 1635 01:16:08,920 --> 01:16:11,230 $. GetJSON. 1636 01:16:11,230 --> 01:16:13,720 >> In kot prahi, znak za dolar je samo okrajšava zapis. 1637 01:16:13,720 --> 01:16:16,860 To je res jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 Spravite me k JSON s tega naslova URL, in ko Zahteva pride nazaj, to imenujemo 1639 01:16:21,520 --> 01:16:26,550 funkcija in podajte kot argument karkoli se je vrnil iz strežnika. 1640 01:16:26,550 --> 01:16:31,205 >> Torej, z drugimi besedami, če se vrnem k brskalnik in grem nazaj na quote.php, 1641 01:16:31,205 --> 01:16:35,590 kaj je moja brskalnik počne, je pridobivanje ta kos podatkov. 1642 01:16:35,590 --> 01:16:38,930 In ko sem šel na tej spletni strani tukaj, opazili, če bomo namesto tega šel v omrežje 1643 01:16:38,930 --> 01:16:43,820 zavihek in ga počisti, in nato vnesite v nekaj podobnega GOOG za Google in Get 1644 01:16:43,820 --> 01:16:46,340 Citat, opazili stran ni spremenila. 1645 01:16:46,340 --> 01:16:50,990 Vendar je bila zahteva HTTP naredil in kaj prišel nazaj, če gledamo 1646 01:16:50,990 --> 01:16:56,130 Odziv je cel kup JSON da smo končno pogledali z 1647 01:16:56,130 --> 01:16:58,070 to preprosto linijo tukaj. 1648 01:16:58,070 --> 01:17:00,150 >> Podatke je tisto, kar je gotten od strežnika. 1649 01:17:00,150 --> 01:17:02,120 Cena je ime Ključ me skrbi. 1650 01:17:02,120 --> 01:17:05,230 Torej data.price mi daje to. 1651 01:17:05,230 --> 01:17:07,540 >> Sedaj Medtem, in to je zadnji primer. 1652 01:17:07,540 --> 01:17:09,280 Lahko naredite še več z strani. 1653 01:17:09,280 --> 01:17:12,440 Ena pravzaprav tudi dva. 1654 01:17:12,440 --> 01:17:14,780 Mi lahko prinese nazaj označiti, če se spomnite tega. 1655 01:17:14,780 --> 01:17:15,850 To JavaScript. 1656 01:17:15,850 --> 01:17:17,110 To lahko storimo. 1657 01:17:17,110 --> 01:17:17,690 Zelo razburljivo. 1658 01:17:17,690 --> 01:17:18,800 Bomo pustite, da kot Cliffhanger. 1659 01:17:18,800 --> 01:17:21,590 >> Toda še bolj vznemirljivo, lahko stvari, kot je ta. 1660 01:17:21,590 --> 01:17:25,940 Če grem na geolokacije-1, se izkaže, da Chrome ne ve, da smo v 1661 01:17:25,940 --> 01:17:30,672 zemljepisna dolžina 42.37. -71,10. 1662 01:17:30,672 --> 01:17:32,940 Tako da je še bolj tam na razpolago. 1663 01:17:32,940 --> 01:17:34,290 Vendar več o tem naslednji teden. 1664 01:17:34,290 --> 01:17:35,540 Se vidimo v ponedeljek. 1665 01:17:35,540 --> 01:17:37,558