1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH Blumberg: Pozdravljeni vsi. 3 00:00:07,030 --> 00:00:09,530 Bomo, da bi začeli le nekaj minut zgodaj 4 00:00:09,530 --> 00:00:11,738 saj imamo cel kup materiala priti skozi. 5 00:00:11,738 --> 00:00:12,790 Jaz sem Hannah. 6 00:00:12,790 --> 00:00:13,865 Sem TF. 7 00:00:13,865 --> 00:00:16,239 Maria se bo pridružil nas v samo nekaj minutah. 8 00:00:16,239 --> 00:00:17,560 Poučuje poglavje tik pred. 9 00:00:17,560 --> 00:00:19,351 Učim poglavje pravico ko, tako da gremo 10 00:00:19,351 --> 00:00:21,200 da ostane do uro in pol. 11 00:00:21,200 --> 00:00:25,490 >> Tako kot boste videli tu gor, imamo precej Nekaj ​​teme moramo priti skozi, 12 00:00:25,490 --> 00:00:27,200 tako da bomo šli malo hitro. 13 00:00:27,200 --> 00:00:31,140 Ampak, če na kateri koli točki smo rekli nekaj prehitro ali pa ne razumejo, 14 00:00:31,140 --> 00:00:33,170 vas prosimo, da prekinejo z vprašanji. 15 00:00:33,170 --> 00:00:36,610 Želimo, da bi lahko, da bi to pregledati sejo kot koristna za vse vas 16 00:00:36,610 --> 00:00:37,973 možnem času. 17 00:00:37,973 --> 00:00:38,920 Awesome. 18 00:00:38,920 --> 00:00:41,650 >> Torej, kaj je skok pravico z nekatere teme, ki smo dejansko 19 00:00:41,650 --> 00:00:46,980 Zelo, zelo na kratko zajeti za kviz 0 v pregledu zasedanja kviz 0. 20 00:00:46,980 --> 00:00:48,840 Torej, začenši s povezanimi seznamov. 21 00:00:48,840 --> 00:00:52,090 Tako da samo poskrbite, da imate nekaj osnovno znanje o povezanih seznamih 22 00:00:52,090 --> 00:00:55,110 in so udobne delaš nekaterih osnovnih operacij. 23 00:00:55,110 --> 00:00:58,560 >> Torej samo za pregled, ki je povezan Seznami so boljši kot nizi 24 00:00:58,560 --> 00:01:01,020 ker lahko rastejo dinamično. 25 00:01:01,020 --> 00:01:03,300 Torej imamo to veliko prednost. 26 00:01:03,300 --> 00:01:06,031 Videli smo jih uporabili v hash tabel, ko smo 27 00:01:06,031 --> 00:01:08,280 Ne vem točno, koliko Stvari bomo želeli 28 00:01:08,280 --> 00:01:10,900 vstaviti v našo strukturo podatkov. 29 00:01:10,900 --> 00:01:15,700 Na žalost imamo kosov povezano seznam vsega spomina, 30 00:01:15,700 --> 00:01:20,820 tako da ne bo nujno sposobni narediti stalen dostop čas 31 00:01:20,820 --> 00:01:22,502 za vsak element v povezanem seznamu. 32 00:01:22,502 --> 00:01:24,210 Da bi našli Zlasti element smo 33 00:01:24,210 --> 00:01:26,510 morali ponoviti vse pot od začetka. 34 00:01:26,510 --> 00:01:30,610 Torej, imejte v mislih, da je večina osnovne operacije so omega od 1. 35 00:01:30,610 --> 00:01:32,130 Torej, vložek je samo bo trajalo 1. 36 00:01:32,130 --> 00:01:37,520 Izbriši bo trajalo n, saj smo iti ga lahko najdete na seznamu. 37 00:01:37,520 --> 00:01:39,260 In search bi lahko, v najslabšem primeru, n. 38 00:01:39,260 --> 00:01:42,330 Ne moremo narediti nekaj podobnega dvojiško iskalno na povezanem seznamu 39 00:01:42,330 --> 00:01:45,101 saj ne moremo preprosto naključno skok na sredini. 40 00:01:45,101 --> 00:01:45,600 Cool. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Awesome. 43 00:01:48,960 --> 00:01:50,270 >> Malo nizov. 44 00:01:50,270 --> 00:01:53,980 To pa ponovno prišel na kvizu 0, zato vas mora biti zelo udobno z njim. 45 00:01:53,980 --> 00:01:57,210 Ampak za kupe, vas prosimo, zapomniti skladovnice pladnjev. 46 00:01:57,210 --> 00:01:59,940 In to se dogaja, da je prvi noter, zadnji ven. 47 00:01:59,940 --> 00:02:02,272 Tako smo kup stvari v plasteh, in nato 48 00:02:02,272 --> 00:02:04,980 če smo poskušali vzeti nekaj off-- ki smo jih poimenovali popping off 49 00:02:04,980 --> 00:02:06,581 stack-- pridemo off vrhu. 50 00:02:06,581 --> 00:02:09,289 In če želimo dati nekaj v plasteh, pravimo, da potiska. 51 00:02:09,289 --> 00:02:13,170 Torej, to je vedno dogaja, da se med odraščanjem iz dna kot skladovnice pladnjev. 52 00:02:13,170 --> 00:02:14,540 Awesome. 53 00:02:14,540 --> 00:02:17,607 >> Videli smo nizov izvajajo z obema povezanih seznamih in nizi. 54 00:02:17,607 --> 00:02:19,440 Če ste izvajanju z nizi, ki jih želite 55 00:02:19,440 --> 00:02:22,350 se prepričajte, da bi spremljali tako velikost in zmogljivost. 56 00:02:22,350 --> 00:02:27,540 Tako velikost se bo trenutna število stvari v vaših žetonov, 57 00:02:27,540 --> 00:02:32,900 ker so zmogljivosti je skupno število stvari, ki jih lahko shranite v dimnika. 58 00:02:32,900 --> 00:02:34,220 Cool. 59 00:02:34,220 --> 00:02:35,767 >> Zelo podobno, imamo čakalne vrste. 60 00:02:35,767 --> 00:02:38,850 V tem primeru je namesto razmišljanje o Sveženj pladnjev, pomislite črto. 61 00:02:38,850 --> 00:02:40,697 To bo prvi noter, prvi ven. 62 00:02:40,697 --> 00:02:42,780 Torej, če ste podloga ki gre gor za nekaj v trgovini, 63 00:02:42,780 --> 00:02:46,920 upamo, da se oseba prvič v linija se bo najprej pomagal. 64 00:02:46,920 --> 00:02:49,350 >> Namesto, da bi rekel Pritisni in pop, kot smo storili za dimnika, 65 00:02:49,350 --> 00:02:52,000 smo pravkar rekel enqueue in dequeue. 66 00:02:52,000 --> 00:02:54,970 In še enkrat, če ste izvajanju tega s paleto, 67 00:02:54,970 --> 00:02:56,720 moramo slediti ne le velikost 68 00:02:56,720 --> 00:03:02,390 in sposobnost, ampak tudi glava, ki je se bo prednji del naše vrste. 69 00:03:02,390 --> 00:03:03,010 Cool. 70 00:03:03,010 --> 00:03:05,770 Vsa vprašanja v zvezi kaj od tega? 71 00:03:05,770 --> 00:03:06,320 Awesome. 72 00:03:06,320 --> 00:03:07,640 Premikanje desno skupaj. 73 00:03:07,640 --> 00:03:08,564 >> OK, hash tabele. 74 00:03:08,564 --> 00:03:10,605 Tukaj je, kjer se začne zares zanimivo. 75 00:03:10,605 --> 00:03:14,150 Torej hash tabela je ena izvedba o asociativni array. 76 00:03:14,150 --> 00:03:16,700 Torej v bistvu, kaj se je zgodilo se imamo vse te prispevke, 77 00:03:16,700 --> 00:03:18,750 in mi ga dal na hash Funkcija, ki pravi, 78 00:03:18,750 --> 00:03:21,840 OK, to je, če v hash tabela spada. 79 00:03:21,840 --> 00:03:24,860 >> Torej najenostavnejši funkcije razpršitve da smo videli, je samo rekel, 80 00:03:24,860 --> 00:03:28,170 OK, recimo, želimo postaviti strune v naši hash tabele. 81 00:03:28,170 --> 00:03:30,870 In res preprosta ideja lahko bi rekli, v redu, 82 00:03:30,870 --> 00:03:34,350 kaj je samo rešiti z Prva črka besede. 83 00:03:34,350 --> 00:03:37,570 Tako si lahko ogledate tukaj, vzamemo banana, smo ga s pomočjo funkcije razpršitve, 84 00:03:37,570 --> 00:03:40,190 in pravi, hej, da bi morala iti na indeks 1. 85 00:03:40,190 --> 00:03:45,120 >> Tako bomo lahko v bistvu razmišljati o hash miza kot kup različnih vedri. 86 00:03:45,120 --> 00:03:49,880 In vsak od teh vedra se dogaja držati glavo povezanega seznama. 87 00:03:49,880 --> 00:03:55,030 In v tem povezan seznam je, če bomo lahko dejansko dal različnih kosov podatkov. 88 00:03:55,030 --> 00:03:57,820 >> Torej, potapljanje malo bolj v funkcijo razpršitve, tukaj je 89 00:03:57,820 --> 00:03:59,870 primer sem opisano kjer smo samo reči, 90 00:03:59,870 --> 00:04:02,460 OK, vzemite prvo črko besede in smo 91 00:04:02,460 --> 00:04:03,990 dogaja, da ga rešiti v vedra. 92 00:04:03,990 --> 00:04:08,490 Torej verjetno, bo prišlo do 26 vedra, ena za vsako črko abecede. 93 00:04:08,490 --> 00:04:10,090 Zakaj ni to super funkcija hash? 94 00:04:10,090 --> 00:04:13,461 Kaj je ta non-ideal? 95 00:04:13,461 --> 00:04:13,960 Ja. 96 00:04:13,960 --> 00:04:15,790 >> OBČINSTVO: Greš imeti trkov. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Ja, točno. 98 00:04:16,390 --> 00:04:18,000 Ti boš imel trčenja. 99 00:04:18,000 --> 00:04:18,954 Torej, to je ena stvar. 100 00:04:18,954 --> 00:04:21,620 In bomo govorili o tem, kako smo lahko popraviti trke v samo sekundo. 101 00:04:21,620 --> 00:04:23,980 Drug problem s tem zlasti funkcija razpršitve 102 00:04:23,980 --> 00:04:25,980 je, da je naša razlikuje vedra se bodo 103 00:04:25,980 --> 00:04:28,960 za precej drastično različnih velikosti. 104 00:04:28,960 --> 00:04:33,840 >> Vemo, da obstaja cel kup več besed, ki se začnejo z A kot X, 105 00:04:33,840 --> 00:04:38,980 tako da bomo imeli zelo neuravnoteženih vedra v naši hash tabele. 106 00:04:38,980 --> 00:04:40,050 Cool. 107 00:04:40,050 --> 00:04:41,340 Torej, ja, pojdimo nazaj točka trkov. 108 00:04:41,340 --> 00:04:42,900 Kaj naj naredimo, če obstaja trčenja? 109 00:04:42,900 --> 00:04:44,490 >> Imamo nekaj različnih možnosti. 110 00:04:44,490 --> 00:04:47,600 Torej ena, zato domnevam, poskušamo postaviti jagodami v naši hash tabelo. 111 00:04:47,600 --> 00:04:50,370 In vidimo, oh, smo želeli da ga v indeksu 1, 112 00:04:50,370 --> 00:04:52,070 ampak banana že živi tam. 113 00:04:52,070 --> 00:04:53,110 Kaj bomo storili? 114 00:04:53,110 --> 00:04:54,560 Imamo dve glavni možnosti. 115 00:04:54,560 --> 00:04:58,050 >> Številka ena je, lahko rečemo, OK, ni prostora v indeksu 1, 116 00:04:58,050 --> 00:05:03,210 ampak kaj je samo da je videti skozi dokler ne bomo našli drugo odprto mesto. 117 00:05:03,210 --> 00:05:08,490 Tako bomo rekli, v redu, dajmo ga dal v mestu 3. 118 00:05:08,490 --> 00:05:09,240 To je ena od možnosti. 119 00:05:09,240 --> 00:05:11,470 To se imenuje linearna sondiranje. 120 00:05:11,470 --> 00:05:15,500 >> In druga možnost je rekel, v redu, dobro, kaj je samo, da je vsak od teh vedri 121 00:05:15,500 --> 00:05:17,470 biti vodje povezanih seznamov. 122 00:05:17,470 --> 00:05:21,910 In to je v redu, če obstaja več kot eno stvar v vedro. 123 00:05:21,910 --> 00:05:23,820 Mi smo le, da bo ga dodajte na sprednji strani. 124 00:05:23,820 --> 00:05:26,032 Torej tu lahko vidite, OK, ko smo vstavi jagodami, smo 125 00:05:26,032 --> 00:05:28,240 pravkar vzel banano, vrsta jo potisnil čez malo 126 00:05:28,240 --> 00:05:29,842 in vrgel jagodami tam. 127 00:05:29,842 --> 00:05:31,050 In to je tudi povsem v redu. 128 00:05:31,050 --> 00:05:32,830 To se imenuje ločen veriženje. 129 00:05:32,830 --> 00:05:38,100 Si lahko zamislite, da je to nekako kot array glav povezanih seznamov. 130 00:05:38,100 --> 00:05:41,950 Vsa vprašanja v zvezi hash mize, hash funkcije? 131 00:05:41,950 --> 00:05:44,290 Awesome. 132 00:05:44,290 --> 00:05:45,470 >> Drevesa in poskuša. 133 00:05:45,470 --> 00:05:47,287 Tako drevo je kakršno koli strukture podatkov 134 00:05:47,287 --> 00:05:49,453 pri katerih obstaja nekakšen hierarhije ali neke vrste 135 00:05:49,453 --> 00:05:51,247 uvrstitve na vaše različne predmete. 136 00:05:51,247 --> 00:05:53,580 In to bo postala super jasno, ko smo videli zgled. 137 00:05:53,580 --> 00:05:56,960 In videli smo poizkusih skupaj s hash tabele, v pset5-- 138 00:05:56,960 --> 00:06:00,700 ki je, spet, povsem pošteno igro za to quiz-- kot drugi podatki 139 00:06:00,700 --> 00:06:03,110 strukture, da bomo lahko shranjevanje različnih stvari. 140 00:06:03,110 --> 00:06:06,782 Pri slovarju, imamo shranjene kup besed. 141 00:06:06,782 --> 00:06:08,240 Torej, dajmo si oglejte nekaj dreves. 142 00:06:08,240 --> 00:06:10,190 Torej, to je primer drevesa. 143 00:06:10,190 --> 00:06:13,105 Ima neko strukturo, da hierarhično strukturo, 144 00:06:13,105 --> 00:06:15,920 kjer lahko vidite, da To 1 vozlišče na vrhu 145 00:06:15,920 --> 00:06:20,750 ima neke vrste čin nad 2 in 3, ki so nad 4, 5 in 6 in 7, 146 00:06:20,750 --> 00:06:22,860 ki so nad 8 in 9. 147 00:06:22,860 --> 00:06:25,210 Tako, da je vse, kar pomeni, vloži drevo, tako da lahko samo vrste 148 00:06:25,210 --> 00:06:26,660 od predstavljam to v tvoji glavi. 149 00:06:26,660 --> 00:06:29,050 >> Zdaj imamo nekaj bolj specializirane drevesa. 150 00:06:29,050 --> 00:06:31,070 Torej, en primer je binarno drevo. 151 00:06:31,070 --> 00:06:33,290 In binarno drevo, Ponovno, samo bo 152 00:06:33,290 --> 00:06:37,040 podatkovna struktura z neke vrste hierarhija, toda vsaka od vozlišč 153 00:06:37,040 --> 00:06:38,650 ima lahko največ dva otroka. 154 00:06:38,650 --> 00:06:41,530 To je, kjer je beseda binarni prihaja. 155 00:06:41,530 --> 00:06:43,410 Torej je to primer binarnega drevesa. 156 00:06:43,410 --> 00:06:45,720 Tako da je manjša kategorija dreves. 157 00:06:45,720 --> 00:06:48,960 >> Sedaj pa se še bolj specifične in govorimo o binarni trees-- binarnem iskanju 158 00:06:48,960 --> 00:06:51,310 drevesa, ne. 159 00:06:51,310 --> 00:06:56,430 Torej, tukaj je ideja, ne samo vsako vozlišče ima največ dvema otrokoma, 160 00:06:56,430 --> 00:07:00,300 vendar pa so vsi otroci na levo se bodo manjši 161 00:07:00,300 --> 00:07:03,450 in vsi otroci do Pravica se bo večji. 162 00:07:03,450 --> 00:07:05,890 Torej opazili v samo naše binarno drevo, tam je 163 00:07:05,890 --> 00:07:08,650 no razmerje med številkami. 164 00:07:08,650 --> 00:07:12,990 Toda v našem binarnem iskanju drevo, vidimo, OK, tukaj je 44. 165 00:07:12,990 --> 00:07:17,080 In vsaka številka na levi strani 44 je manjši in vse na desni 166 00:07:17,080 --> 00:07:17,920 je večji. 167 00:07:17,920 --> 00:07:20,130 >> In da ima na vsakem stopnja drevesa. 168 00:07:20,130 --> 00:07:24,810 Torej tukaj, to je manjša od 22 in to je večja od 22. 169 00:07:24,810 --> 00:07:26,390 In to je dvojiško iskalno drevo. 170 00:07:26,390 --> 00:07:28,900 Zakaj mislimo, da se imenuje binarno iskalno drevo? 171 00:07:28,900 --> 00:07:30,651 Kaj algoritem ne vas spominja? 172 00:07:30,651 --> 00:07:31,650 OBČINSTVO: Binarni iskanje. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: Binarno iskanje. 174 00:07:32,480 --> 00:07:35,150 Ker če iščete Zlasti število v tem drevesu 175 00:07:35,150 --> 00:07:38,800 na vsaki točki, si lahko samo knock off polovica drevesa, kar je super. 176 00:07:38,800 --> 00:07:43,800 In tako, da se dogaja, da nam nekaj ki je videti zelo podobna binarnega iskanja. 177 00:07:43,800 --> 00:07:45,870 Kakšno vprašanje? 178 00:07:45,870 --> 00:07:47,570 V redu, v redu. 179 00:07:47,570 --> 00:07:48,560 >> Vredu, poskusi. 180 00:07:48,560 --> 00:07:49,657 Najljubša vsakogar. 181 00:07:49,657 --> 00:07:51,990 Torej, to je primer, ki smo videli kup v razredu. 182 00:07:51,990 --> 00:07:54,710 In še enkrat, to je samo še en Tako, da bomo lahko shranjevanje podatkov. 183 00:07:54,710 --> 00:07:57,530 Pri slovarju spet to je samo bo strune. 184 00:07:57,530 --> 00:08:00,870 Torej, poglejmo, kaj to dejansko Izgleda na nekoliko nižji ravni. 185 00:08:00,870 --> 00:08:03,690 >> Torej, vzemimo si oglejte na enem vozlišču v trie. 186 00:08:03,690 --> 00:08:07,532 In vidimo, OK, tam se dogaja biti logično in vozlišče, 187 00:08:07,532 --> 00:08:09,170 kazalec na vozlišče. 188 00:08:09,170 --> 00:08:11,400 In vidimo, da je Boolean se imenuje is_word. 189 00:08:11,400 --> 00:08:13,490 Torej v bistvu, da je dogaja, da ustrezajo 190 00:08:13,490 --> 00:08:16,750 na teh malih trikotnikov, ki pravi, če ste tukaj gotten, 191 00:08:16,750 --> 00:08:19,100 ste ugotovili popolno besedo. 192 00:08:19,100 --> 00:08:23,670 >> Vemo, da je "turing" nad Pred vami je beseda, 193 00:08:23,670 --> 00:08:28,030 ker le T-U-R ni beseda saj ne vidimo, da je malo delta. 194 00:08:28,030 --> 00:08:31,440 In da malo delta, še enkrat, ustreza tej is_word, 195 00:08:31,440 --> 00:08:34,480 to Boolean is_word. 196 00:08:34,480 --> 00:08:36,320 In potem imamo celo paleto otrok. 197 00:08:36,320 --> 00:08:39,860 Torej, na vsaki stopnji, boste imajo posebno vozlišča 198 00:08:39,860 --> 00:08:42,470 in to vozlišče kaže na Niz celotne abecede. 199 00:08:42,470 --> 00:08:44,346 >> Tako boste lahko videli, še enkrat, V tem picture-- sem 200 00:08:44,346 --> 00:08:48,170 dogaja, da skakanje nazaj in forth-- da ta niz na vrhu 201 00:08:48,170 --> 00:08:51,640 ima kup razlikuje vozlišča, ki prihajajo izven nje. 202 00:08:51,640 --> 00:08:57,140 Ima 26 ali 27, če hočeš da vključuje dodaten znak. 203 00:08:57,140 --> 00:09:01,320 In to nam tudi daje način za shranjevanje naših podatkov 204 00:09:01,320 --> 00:09:04,450 na način, da se lahko opazovali da si lahko ogledate do super hitro. 205 00:09:04,450 --> 00:09:06,650 Kaj je čas iskanje za trie? 206 00:09:06,650 --> 00:09:07,970 >> OBČINSTVO: [neslišno]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Ja. 208 00:09:08,300 --> 00:09:09,550 V teoriji, da je stalen čas. 209 00:09:09,550 --> 00:09:13,230 To je samo še, da je velikost beseda, ki jo želite pogledati. 210 00:09:13,230 --> 00:09:15,950 Tudi če dodamo Zillion več besed za naše Trie, 211 00:09:15,950 --> 00:09:18,160 to ne dogaja, da nas bo več določiti 212 00:09:18,160 --> 00:09:19,690 če neka beseda v Trie. 213 00:09:19,690 --> 00:09:21,412 Tako, da je res lepo. 214 00:09:21,412 --> 00:09:23,697 >> OBČINSTVO: Ste pravkar inicializacijo ta niz? 215 00:09:23,697 --> 00:09:24,780 Zamudili ste točko ali dve. 216 00:09:24,780 --> 00:09:26,130 Lahko samo govorimo o da za trenutek? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: Seveda, absolutno. 218 00:09:26,680 --> 00:09:27,590 Dobro vprašanje. 219 00:09:27,590 --> 00:09:31,140 Vprašanje je bilo, smo imajo niz, ki je 220 00:09:31,140 --> 00:09:34,180 dogaja, da imajo vozlišča zvezdo v nasprotju s samo vozlišče, kajne? 221 00:09:34,180 --> 00:09:35,180 Cool. 222 00:09:35,180 --> 00:09:37,990 Torej, tukaj kaj govoriš je naša matrika je samo 223 00:09:37,990 --> 00:09:40,035 bo kazalci na druge nizi. 224 00:09:40,035 --> 00:09:42,910 Torej, to je to essentially-- vrste počuti kot povezanega seznama, na ta način 225 00:09:42,910 --> 00:09:46,620 kjer je vsak od teh otrocih Samo opozarjajo na naslednje vozlišče. 226 00:09:46,620 --> 00:09:49,030 >> In tako, da smo dejansko ugotoviti, hej, OK, 227 00:09:49,030 --> 00:09:52,320 smo poudarili, skozi celotno beseda, je ta beseda v slovarju, 228 00:09:52,320 --> 00:09:54,476 smo pravkar preverite to is_word. 229 00:09:54,476 --> 00:09:55,100 Great vprašanje. 230 00:09:55,100 --> 00:09:55,675 Ja. 231 00:09:55,675 --> 00:09:56,216 OBČINSTVO: OK. 232 00:09:56,216 --> 00:09:57,470 Torej, kaj je bilo runtime za trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: Seveda. 234 00:09:58,386 --> 00:10:01,852 Torej, runtime za trie za Iskanje se bo konstantna čas. 235 00:10:01,852 --> 00:10:04,310 Torej, to je šele tekoč, da bo število črk v besede. 236 00:10:04,310 --> 00:10:06,310 To ni odvisna od Velikost slovarju 237 00:10:06,310 --> 00:10:09,510 ali velikost strukture podatkov. 238 00:10:09,510 --> 00:10:12,170 Torej, tukaj je nekoliko enostavnejši primer. 239 00:10:12,170 --> 00:10:15,430 >> V tem primeru, lahko vidite, da beseda bat je v slovarju 240 00:10:15,430 --> 00:10:18,900 in imate zoom, vendar boste nimajo kaj takega živalskem vrtu. 241 00:10:18,900 --> 00:10:20,050 Kako bi naredili živalski vrt? 242 00:10:20,050 --> 00:10:24,276 Kako dodati zoo za naše slovar, da naši trie? 243 00:10:24,276 --> 00:10:24,776 Ja. 244 00:10:24,776 --> 00:10:27,014 >> OBČINSTVO: Naredite is_word velja za [neslišno]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Dobro. 246 00:10:27,930 --> 00:10:31,731 Torej sva rekli Z-O-O, in potem sva želeli preveriti off to polje, kot dobro. 247 00:10:31,731 --> 00:10:32,230 Great. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Naj primerjajo zelo na kratko skuša versus hash tabel. 250 00:10:37,930 --> 00:10:39,770 Poskuša so res super saj, kot smo rekli, 251 00:10:39,770 --> 00:10:41,610 zagotavljajo konstantno časovno iskanje. 252 00:10:41,610 --> 00:10:44,285 Toda ogromno škodo je oni humongous. 253 00:10:44,285 --> 00:10:46,160 Lahko bi dobili občutek, čeprav jih gledaš na to, 254 00:10:46,160 --> 00:10:48,454 da bo trajalo ogromne količine pomnilnika. 255 00:10:48,454 --> 00:10:50,620 Torej, oni 'tekoč, da je veliko večji od hash tabele, 256 00:10:50,620 --> 00:10:52,270 ampak oni dogaja, da nam veliko hitreje lookup krat. 257 00:10:52,270 --> 00:10:54,478 Torej, to je nekako vaš kompromis, kaj vas skrbi, 258 00:10:54,478 --> 00:10:57,350 ali je hitrost ali spomin. 259 00:10:57,350 --> 00:11:02,251 Vsa vprašanja v zvezi kaj od tega, vse podatkovne C struktur. 260 00:11:02,251 --> 00:11:02,750 Lepa. 261 00:11:02,750 --> 00:11:03,250 V REDU. 262 00:11:03,250 --> 00:11:07,322 Bomo, da se premaknete na malo malo spletnega razvoja z Marijo. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 V REDU. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Lahko uporabite svoj laptop. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Lepo. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 OK kul. 269 00:11:14,912 --> 00:11:17,120 Kot gremo zdaj na spletu razvoj, smo se pogovarjali malo 270 00:11:17,120 --> 00:11:20,680 o spreminjajočih dovoljenj datotek in imenikov 271 00:11:20,680 --> 00:11:24,190 tako, da so lahko dostopne drugim uporabnikom, da svetu 272 00:11:24,190 --> 00:11:28,640 in da bomo lahko videli, kako v bistvu jih lahko posredujejo 273 00:11:28,640 --> 00:11:32,600 ko smo razviti stvari, kot so spletne strani da smo v glavnem počeli. 274 00:11:32,600 --> 00:11:36,400 >> Tako smo videli ukaz chmod, kar je način sprememba, v bistvu. 275 00:11:36,400 --> 00:11:39,300 To je ukaz Linux in se spreminja dovoljenja za dostop 276 00:11:39,300 --> 00:11:40,410 datotečnega sistema predmetov. 277 00:11:40,410 --> 00:11:43,370 In datotečni sistem objekt samo imenik, datoteka, 278 00:11:43,370 --> 00:11:46,810 vse, kar si lahko spremenite dovoljenja. 279 00:11:46,810 --> 00:11:53,750 >> Torej, da bi videli dovoljenja datotek, vpišemo ukaz ls, seznam, -l. 280 00:11:53,750 --> 00:11:56,500 In ko smo tipa, da smo ponavadi vidimo nekaj dovoljenja 281 00:11:56,500 --> 00:11:59,660 da je videti nekako takole pred imenom imenika. 282 00:11:59,660 --> 00:12:01,260 Torej, d se nanaša na imenik. 283 00:12:01,260 --> 00:12:05,930 In potem imamo tri triadi, ki v bistvu 284 00:12:05,930 --> 00:12:11,675 nanašajo na dovoljenj bodisi uporabnik, skupino ali svetu. 285 00:12:11,675 --> 00:12:16,490 >> Vrste dovoljenj, da smo lahko za te tri skupine ljudi 286 00:12:16,490 --> 00:12:20,830 sta bodisi r za branje, w za pisati in x za izvršitev. 287 00:12:20,830 --> 00:12:23,650 In lahko imamo tiste, za skupina in svetu, kot tudi. 288 00:12:23,650 --> 00:12:26,940 Rafiniran stvar je, da včasih ko smo vnesite ukaz chmod, 289 00:12:26,940 --> 00:12:32,960 želimo vnesti nekaj več da sestavljena iz treh bitov. 290 00:12:32,960 --> 00:12:36,990 Torej, kar lahko storimo, kot 777 in ki v bistvu 291 00:12:36,990 --> 00:12:40,450 skliceval na dodano vrednost vsakega od teh triad 292 00:12:40,450 --> 00:12:45,060 ker bi r nanašajo na 4, bi w nanaša na 2, in x opozarja na 1, 293 00:12:45,060 --> 00:12:50,020 tako da, ko se seštejejo, vsaka od številk bi prišel na skupno število 294 00:12:50,020 --> 00:12:52,750 kumulativno vrednost med 0 in 7. 295 00:12:52,750 --> 00:12:55,150 Tako smo lahko tudi 0 za brez dovoljenja sploh. 296 00:12:55,150 --> 00:12:58,200 In, da bi nas v bistvu dal dovoljenja za bodisi uporabnika, 297 00:12:58,200 --> 00:13:00,450 skupina, ali svet. 298 00:13:00,450 --> 00:13:02,620 Vsa vprašanja o tem tako daleč? 299 00:13:02,620 --> 00:13:05,331 >> OBČINSTVO: rekli ste prebrali bilo 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Da. 301 00:13:06,164 --> 00:13:07,568 OBČINSTVO: [neslišno]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Yup. 303 00:13:08,504 --> 00:13:11,790 OBČINSTVO: In potem z dodajanjem vse tiste, drugi bi navesti vašo številko. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Ja. 305 00:13:12,665 --> 00:13:14,970 Ja. 306 00:13:14,970 --> 00:13:17,810 To so veliki vprašanja. 307 00:13:17,810 --> 00:13:20,490 Lovely. 308 00:13:20,490 --> 00:13:25,340 Dalje smo skočil v HTML in a malo več o spletnem razvoju. 309 00:13:25,340 --> 00:13:27,990 Torej HTML samo pomeni, HyperText Markup Language. 310 00:13:27,990 --> 00:13:30,460 In da je označevalni jezik, ki je standardni 311 00:13:30,460 --> 00:13:32,720 ki je uporabljena za ustvarjanje spletnih strani. 312 00:13:32,720 --> 00:13:35,750 >> To se imenuje označevalni jezik ker je dejansko ne zbirajo. 313 00:13:35,750 --> 00:13:40,310 To ne pove, kako nekateri koda smeli izvrši ali kaj podobnega. 314 00:13:40,310 --> 00:13:44,800 Samo zarisuje in opisuje, kako je spletna 315 00:13:44,800 --> 00:13:46,840 Stran je treba vzpostaviti z vsakim izmed njegovih elementov 316 00:13:46,840 --> 00:13:48,460 in kako naj izgledajo na uporabnika. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Nekatere oznake HTML, ki smo šli čez, so naslednja. 319 00:13:57,110 --> 00:14:00,500 Vseh naših dokumentih HTML Začelo se je z DOCTYPE html. 320 00:14:00,500 --> 00:14:02,550 Potem imamo vedno html tag. 321 00:14:02,550 --> 00:14:03,930 Imamo glave in telesa. 322 00:14:03,930 --> 00:14:07,890 In to je pomembno, da ima HTML tovrstna ugnezdenih strukture 323 00:14:07,890 --> 00:14:09,280 ker je zelo jasno. 324 00:14:09,280 --> 00:14:13,200 In potem postane jasno, ko smo je treba odpreti in dejansko tesne oznake. 325 00:14:13,200 --> 00:14:18,400 In smo vedno morali zapreti oznake, ki smo jih odprli. 326 00:14:18,400 --> 00:14:23,170 >> In tukaj imamo nekatere vrste stvari so pred nami, ki jih želimo imeti. 327 00:14:23,170 --> 00:14:26,580 Torej imamo, na primer, naslov CS50. 328 00:14:26,580 --> 00:14:31,980 In potem smo dejansko lahko povežete slogi 329 00:14:31,980 --> 00:14:34,030 , ki določa, kako bomo stil našo spletno stran. 330 00:14:34,030 --> 00:14:35,650 To je CSS. 331 00:14:35,650 --> 00:14:39,320 Bomo šli nad njim v naslednjih nekaj diapozitivov, kot dobro. 332 00:14:39,320 --> 00:14:42,580 >> V telesu, smo postavili nekateri razredi in ID-ji. 333 00:14:42,580 --> 00:14:45,860 In kot opomnik, še enkrat, ID-ji so edinstveni in razredi 334 00:14:45,860 --> 00:14:47,390 se lahko dodeli več predmetov. 335 00:14:47,390 --> 00:14:52,110 In to samo pomeni, da moremo uporabiti razrede in ID 336 00:14:52,110 --> 00:14:55,860 v drugi structures-- Torej, za Na primer, v CSS datotek ali slog 337 00:14:55,860 --> 00:15:00,940 sheets-- se nanašajo na posamezne elemente in v bistvu pravijo, da želimo slog 338 00:15:00,940 --> 00:15:03,280 ali oblikovati nek element na nek določen način. 339 00:15:03,280 --> 00:15:06,440 In mislimo, da jim jih njihove ID-ji in razredi. 340 00:15:06,440 --> 00:15:09,870 In bomo lahko nanašajo tudi na različne stvari z oznakami, kot tudi, 341 00:15:09,870 --> 00:15:13,830 ampak ID in razredi nam samo dal nekaj Vsestranskost in kaj posebej smo 342 00:15:13,830 --> 00:15:15,850 želeli, da se nanašajo na. 343 00:15:15,850 --> 00:15:19,620 >> Torej samo primer. 344 00:15:19,620 --> 00:15:22,730 Mi lahko, še enkrat, v datoteka CSS, kjer smo 345 00:15:22,730 --> 00:15:25,770 želite določiti nekatere style-- tako barve, pisave, 346 00:15:25,770 --> 00:15:30,340 in stvari, kot that-- moremo opredeliti slog za telo. 347 00:15:30,340 --> 00:15:32,640 Tako da bi ga opredeljujejo za celotno telo oznako. 348 00:15:32,640 --> 00:15:36,160 Potem pa bomo lahko tudi določite stil za #title. 349 00:15:36,160 --> 00:15:40,390 In spet je hashtag nanaša na naše ID in pika nanaša na našem razredu. 350 00:15:40,390 --> 00:15:44,760 >> In potem za .info, smo lahko nastavite tudi nekatere atribute. 351 00:15:44,760 --> 00:15:49,750 In spet, ko bomo šli nazaj, smo imeli Razred poklical info in naša ID naslov. 352 00:15:49,750 --> 00:15:53,422 In vidimo, da se sklicujemo ki jim jih #title in .info. 353 00:15:53,422 --> 00:15:55,380 OBČINSTVO: Bi lahko rekli, lojtra [? me sprejme? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Oprostite? 355 00:15:55,725 --> 00:15:58,120 OBČINSTVO: Bi lahko rekli, lojtra [? me sprejme? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: hashtag pomeni imenom, zato #title 357 00:16:01,400 --> 00:16:07,890 nanaša na kakršenkoli elementov imajo ID imenovano naslov. 358 00:16:07,890 --> 00:16:10,735 In nato pika nanaša na razred. 359 00:16:10,735 --> 00:16:14,590 Torej Info nanaša na ta element ker ima informacije razred. 360 00:16:14,590 --> 00:16:15,090 Yup. 361 00:16:15,090 --> 00:16:17,905 >> OBČINSTVO: Zakaj ste storili jih loči v HTML? 362 00:16:17,905 --> 00:16:20,985 Zakaj praviš nekatere stvari, ki so ID-ji in nekatere stvari, ki so razred? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: To je samo do you-- 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: Ponovite vprašanje. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, oprostite. 366 00:16:25,370 --> 00:16:29,480 Zakaj ločimo nekatere elemente kot številke in drugi elementi, kot so razredi? 367 00:16:29,480 --> 00:16:34,760 To je samo zato, ker je res pogosto izbira dizajn. 368 00:16:34,760 --> 00:16:38,520 To vam daje veliko vsestranskost v tem, da 369 00:16:38,520 --> 00:16:43,250 mogli reči hočem to posebno postavko da ima ta ID, ker hočejo 370 00:16:43,250 --> 00:16:45,300 narediti veliko stvari z njo, in jaz samo 371 00:16:45,300 --> 00:16:50,010 želite definirati slog, nekateri slog ali barva karkoli za to postavko. 372 00:16:50,010 --> 00:16:52,630 In način, kako to storiti je samo ji daje ID. 373 00:16:52,630 --> 00:16:55,060 >> In potem, če želim imeti nekaj različnih predmetov 374 00:16:55,060 --> 00:16:58,940 ob da namesto dogaja in nastavitev their-- 375 00:16:58,940 --> 00:17:03,840 namesto da bi to počeli s tag, ker bi tag 376 00:17:03,840 --> 00:17:07,369 nastaviti celico za celotno tag za vsak čas se uporablja, da je oznaka, 377 00:17:07,369 --> 00:17:09,740 lahko nastavite razred več predmetov. 378 00:17:09,740 --> 00:17:15,109 In potem samo dostop do takega razreda in reči Hočem, da stil tem razredu na ta način. 379 00:17:15,109 --> 00:17:17,579 >> In spet, lahko razred biti več različnih predmetov 380 00:17:17,579 --> 00:17:21,150 in ID mora biti edinstvena. 381 00:17:21,150 --> 00:17:21,849 Velika vprašanja. 382 00:17:21,849 --> 00:17:25,339 Vsa druga vprašanja? 383 00:17:25,339 --> 00:17:26,220 OK, super. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Še enkrat, to je, kako ti selektorji so navedeni v CSS, s hashtag, 386 00:17:35,330 --> 00:17:40,031 s piko ali brez vsega za dodeljevanje slog neke tag, 387 00:17:40,031 --> 00:17:40,530 kot telo. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 In tukaj imamo splošno sintaksa, kako je to storjeno. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Če želite ponoviti nekatere najboljše prakse za HTML in CSS, 392 00:17:55,680 --> 00:17:59,170 moramo spet zaprite vse oznake HTML, ki jih odpirajo. 393 00:17:59,170 --> 00:18:03,950 In kaj vam priporoča, storiti za svoje končne projekte, 394 00:18:03,950 --> 00:18:10,560 kot tudi za CS50 finance, je, da bi prepričani, da vse vaše HTML potrdi. 395 00:18:10,560 --> 00:18:12,920 In to je naredil z W3 Validator. 396 00:18:12,920 --> 00:18:16,940 >> In potem, kaj smo naredili in kaj priporočamo počne 397 00:18:16,940 --> 00:18:19,790 je ločevanje slog, tako CSS od označevalni HTML. 398 00:18:19,790 --> 00:18:24,210 Torej vse, kar se nanaša na to, kako vaša stran bo vizualno pogledati 399 00:18:24,210 --> 00:18:27,330 in kako se dogaja, da je treba spremeniti bi morala iti v dokumentu CSS. 400 00:18:27,330 --> 00:18:33,880 In potem vaša označevalni rekel, kako stvari so v medsebojni povezavi HTML, 401 00:18:33,880 --> 00:18:37,550 in da je treba iti v notranjosti vaših dokumentov HTML. 402 00:18:37,550 --> 00:18:38,590 Kakšno vprašanje? 403 00:18:38,590 --> 00:18:39,226 Mhm. 404 00:18:39,226 --> 00:18:42,628 >> OBČINSTVO: Kaj točno se dogaja o s potrjevanjem stran 405 00:18:42,628 --> 00:18:47,945 ko smo validaciji HTML, da [neslišno] ustvaril? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Torej what-- ti misliš. 407 00:18:49,850 --> 00:18:53,020 Torej, kaj točno se dogaja o s potrjevanjem stran 408 00:18:53,020 --> 00:18:55,570 in zakaj moramo to storiti? 409 00:18:55,570 --> 00:18:59,180 V bistvu smo morali storiti, da ker veliko krat, brskalnik, 410 00:18:59,180 --> 00:19:01,390 če ne zaprete tag ali nekaj takega, 411 00:19:01,390 --> 00:19:05,680 Vaš brskalnik je še vedno dogaja, da render stran in morda še vedno deluje, 412 00:19:05,680 --> 00:19:10,840 ampak to je najboljša praksa, da se prepričajte, da da ste spet zapreti vse svoje oznake, 413 00:19:10,840 --> 00:19:13,190 da so vse vaše elemente način, da bi morali biti, 414 00:19:13,190 --> 00:19:18,470 in v bistvu, da je z konvencij, ki so prednastavljene. 415 00:19:18,470 --> 00:19:21,970 >> To je, še enkrat, samo stvar, ki jo morate 416 00:19:21,970 --> 00:19:24,040 učiti, da se delaš, v nasprotju z ob 417 00:19:24,040 --> 00:19:25,696 sloppier kodo in stvari, kot je ta. 418 00:19:25,696 --> 00:19:26,688 Ja. 419 00:19:26,688 --> 00:19:27,680 Oh, oprosti. 420 00:19:27,680 --> 00:19:29,221 Mislila sem, da dvignete roko. 421 00:19:29,221 --> 00:19:31,240 OBČINSTVO: Ne, bil sem [neslišno]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> OBČINSTVO: Hvala. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Seveda, hvala. 425 00:19:36,181 --> 00:19:41,680 Torej še enkrat, se dogaja v tem, kako Podatki se prenesejo 426 00:19:41,680 --> 00:19:44,630 in komunikacijski modeli za prenos podatkov. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP pomeni le Menjalnik Control Protocol in IP 429 00:19:48,600 --> 00:19:51,260 nanaša na internetnem protokolu. 430 00:19:51,260 --> 00:19:54,275 In to samo pomeni, da Podatki način dostavi. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Če imamo nekaj podatkov, ki mora dostaviti tako you-- 433 00:20:02,710 --> 00:20:06,770 naredite zahtevo za določen strežnik. 434 00:20:06,770 --> 00:20:09,800 Na primer, ko smo poskusite dostopati cs50.net, 435 00:20:09,800 --> 00:20:12,420 naredimo zahtevek strežnik CS50 in smo 436 00:20:12,420 --> 00:20:14,720 vidim, da si želimo, da bi dobili ta vrsta informacij. 437 00:20:14,720 --> 00:20:19,294 Nato pa temeljijo na tem protokolu za to, kako se izvaja ta informacija, 438 00:20:19,294 --> 00:20:21,460 strežnik daje informacije nazaj k nam, odjemalec. 439 00:20:21,460 --> 00:20:25,590 In potem smo sposobni, da si ogledate podatki za stran 440 00:20:25,590 --> 00:20:26,390 in jo nato uporabite. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Torej Hypertext Transfer Protocol je samo še en protokol ali nastavite 443 00:20:33,050 --> 00:20:37,470 konvencij, ki določa, kako spletni brskalnik in spletni strežnik 444 00:20:37,470 --> 00:20:38,890 morajo sporočiti. 445 00:20:38,890 --> 00:20:43,730 In dajanje vse to skupaj, HTTP, še enkrat, 446 00:20:43,730 --> 00:20:50,960 samo določa, kako je opredeljena to hypertext s HTML, ki smo se ga delajo, 447 00:20:50,960 --> 00:20:59,500 kako je treba dostaviti za vas in kako, da se podatki, ki se dostavijo vam 448 00:20:59,500 --> 00:21:00,540 pride do vas. 449 00:21:00,540 --> 00:21:05,990 >> In zato, če vidva ne pozabite iz razreda, smo imeli veliko prošenj 450 00:21:05,990 --> 00:21:08,970 in smo imeli veliko sintakse teh zahtev, da smo 451 00:21:08,970 --> 00:21:10,250 bo šel čez prav zdaj. 452 00:21:10,250 --> 00:21:13,270 Torej še enkrat, ko smo poslali zahtevek na strežnik, 453 00:21:13,270 --> 00:21:15,920 moramo oblikujeta par stvari. 454 00:21:15,920 --> 00:21:18,520 Torej moramo najti vrsto o zahtevi, da smo nastavitev. 455 00:21:18,520 --> 00:21:22,180 In spet imamo, na primer, GET ena vrsta metode 456 00:21:22,180 --> 00:21:25,290 da imamo v naši zahtevi. 457 00:21:25,290 --> 00:21:31,710 >> In potem je HTTP / 1.1 le Protokol, ki smo z uporabo trenutno. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Večino časa, da se dogaja protokolu, ki ga uporabljamo. 460 00:21:36,890 --> 00:21:40,290 Torej, če imate vprašanje kot da je na vašem kvizu. 461 00:21:40,290 --> 00:21:43,120 To je konvencijah da imamo tako daleč. 462 00:21:43,120 --> 00:21:46,580 >> Poševnica nazaj se nanaša na kakšno stvari smo prosilka. 463 00:21:46,580 --> 00:21:52,810 Potem, naš gostitelj je, na primer, v tem primera, smo poskušali iti v google.com. 464 00:21:52,810 --> 00:21:57,070 Torej je ta vrednost za gostitelja. 465 00:21:57,070 --> 00:21:59,330 To je vrsta zahtevo da lahko pošlje. 466 00:21:59,330 --> 00:22:02,890 >> In potem tip odziva, ki bi lahko se pošlje še enkrat, na podlagi tega protokola, 467 00:22:02,890 --> 00:22:05,190 je spet, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Torej, to je različica HTTP znova. 469 00:22:07,150 --> 00:22:09,730 200 OK je samo koda stanja. 470 00:22:09,730 --> 00:22:12,860 In to v redu je le fraza na podlagi tega zakonika stanja. 471 00:22:12,860 --> 00:22:15,520 >> In potem Content-Type Nanaša se na vrsto 472 00:22:15,520 --> 00:22:20,295 da se vrne v vas, ki je za to spletno stran, ki jo prejmete 473 00:22:20,295 --> 00:22:22,570 in da vaš brskalnik lahko postanejo kasneje. 474 00:22:22,570 --> 00:22:24,401 In to je text / html. 475 00:22:24,401 --> 00:22:26,660 >> OBČINSTVO: Kaj 1.1 pomeni? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: To je samo Različica of-- oh, kaj 1.1 pomeni? 477 00:22:29,910 --> 00:22:37,075 To je le različica, HTTP Različica protokola, ki ga uporabljamo. 478 00:22:37,075 --> 00:22:37,700 Great vprašanje. 479 00:22:37,700 --> 00:22:38,366 Druga vprašanja? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> OBČINSTVO: Bi lahko povzamemo Content-Type resnično hitro? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Da je tisto, kar strežnik. 483 00:22:48,150 --> 00:22:51,020 tip information-- kaj je Vrsta vsebine bilo vprašanja. 484 00:22:51,020 --> 00:22:53,400 Tako da je bila vrsta informacije, ki jih boste dobili nazaj 485 00:22:53,400 --> 00:22:58,200 od strežnika, na vrsto Podatki, ki jih brskalnik lahko potem 486 00:22:58,200 --> 00:23:00,604 render, ki ga uporabljate. 487 00:23:00,604 --> 00:23:03,020 OBČINSTVO: Je to tisto, kar ta Protokol je povedal, da naredim? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Oprostite? 489 00:23:03,390 --> 00:23:05,380 OBČINSTVO: Je to kaj protokol rečem? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: The protocol-- 491 00:23:05,915 --> 00:23:07,940 OBČINSTVO: --what Content-Type je ali what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: Protokol temelji on-- kaj je protokol ti povem? 493 00:23:12,040 --> 00:23:16,070 To je samo način da te informacije 494 00:23:16,070 --> 00:23:18,610 je bilo podano, da vas na na kakšno protokola 495 00:23:18,610 --> 00:23:21,830 je bil ta podatek dobil pripeljali nazaj k tebi. 496 00:23:21,830 --> 00:23:23,500 Ali to smisla vrste? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: You lahko zamislite protokola 499 00:23:30,070 --> 00:23:33,300 kot a-- Mislim, profesor Malan ga je opisal 500 00:23:33,300 --> 00:23:36,910 v razredu, kot je nekako kot a-- je všeč ekvivalent človeškega Vod. 501 00:23:36,910 --> 00:23:44,930 Reči, kot so, hej, jaz sem zahtevo in jaz vedo, kako ravnati HTTP verzije 1.1. 502 00:23:44,930 --> 00:23:48,770 In potem strežnik pravi, oh, OK, I-- in tako obstaja. 503 00:23:48,770 --> 00:23:51,337 Vem tudi, kako ravnati s HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 In bom dal ste varnostno nekaj vsebine. 505 00:23:53,170 --> 00:23:56,230 V tem primeru, da se dogaja biti tipa text / html. 506 00:23:56,230 --> 00:23:58,480 Torej, to je nekako le način od njih za communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: To je samo potrjuje, da ste 508 00:24:00,480 --> 00:24:03,290 tako po isti protokol in da oba 509 00:24:03,290 --> 00:24:06,620 naročnik in server-- tako Vaš brskalnik in server-- 510 00:24:06,620 --> 00:24:09,280 nekako vem, kaj ste govoriš in imajo 511 00:24:09,280 --> 00:24:12,557 konvencija za prenos v podatkih. 512 00:24:12,557 --> 00:24:17,022 >> OBČINSTVO: Torej Content-Type part-- Content-Type besedilo / html-- da je 513 00:24:17,022 --> 00:24:18,521 ločen del istega sporočila? 514 00:24:18,521 --> 00:24:20,509 Ali je to del, recimo, 200? 515 00:24:20,509 --> 00:24:22,010 Ali 200 jim povem, da ali is-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 pravi, da je šlo vse v redu. 517 00:24:23,770 --> 00:24:27,900 In potem tip vsebina je neke vrste ločen del istega sporočila, 518 00:24:27,900 --> 00:24:34,274 in pravijo, da stvar, ki sem Vrnjeno je ta tip text / html. 519 00:24:34,274 --> 00:24:35,690 To je samo daje več informacij. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Imate kaj za dodati? 522 00:24:39,995 --> 00:24:40,495 V REDU. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Vsa ostala vprašanja o tem? 525 00:24:46,530 --> 00:24:48,370 Awesome. 526 00:24:48,370 --> 00:24:54,070 Torej nekatere druge HTTP statusi, ki bi lahko dobili poleg 200 OK, 527 00:24:54,070 --> 00:24:59,500 tisti, ki smo videli morda možnosti je veliko, so 403 in 404. 528 00:24:59,500 --> 00:25:05,190 Torej 404, če bi poskušali Dostop do nekaj, kar ne obstaja. 529 00:25:05,190 --> 00:25:10,460 Tako, na primer, v vašem CS50 Finance psets, 530 00:25:10,460 --> 00:25:15,640 če bi bili vi upodabljanje quote.html in niste imeli te datoteke, 531 00:25:15,640 --> 00:25:19,740 ampak ste imeli quote.php, da bi povzročila 404 Not Found 532 00:25:19,740 --> 00:25:21,600 ker je datoteka morda ne obstaja. 533 00:25:21,600 --> 00:25:25,690 >> Za 403 prepovedano, da se nanaša na dovoljenja. 534 00:25:25,690 --> 00:25:31,150 Torej, če je nekaj datoteka ni berljiva z svet, boste morda dobili 403 vrnil. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Nekateri drugi, da boste morda get-- 301, preselil trajno; 537 00:25:37,810 --> 00:25:41,300 302, ugotovljeno; 304, spremeniti; 400, Bad Request; 538 00:25:41,300 --> 00:25:47,330 in nato Notranja napaka strežnika za 500 in 503, storitev ni na voljo. 539 00:25:47,330 --> 00:25:48,140 Da. 540 00:25:48,140 --> 00:25:51,490 >> OBČINSTVO: Bomo po pričakovanjih zapomniti vse te statuse? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: Jaz bi imel jim na vaš goljufija stanja. 542 00:25:53,739 --> 00:25:55,146 [Smeh] 543 00:25:55,146 --> 00:25:59,954 OBČINSTVO: Ali smo pričakovali, da se vem, kaj sproži vsak eno? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: So? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: Za tiste, ki smo jih teči into-- Torej vprašanje was-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Ali se pričakuje, da vem, kaj vsak od teh statusa 547 00:26:08,010 --> 00:26:09,330 Kode se lahko sprožijo? 548 00:26:09,330 --> 00:26:13,240 Torej za tiste, ki smo jih uporabljajo in tekel v, bi rekel, ja. 549 00:26:13,240 --> 00:26:16,610 Zato smo zagotovo videli 200 OK in predaval v psets. 550 00:26:16,610 --> 00:26:19,071 Smo videli 403, 404. 551 00:26:19,071 --> 00:26:20,550 Za druge narave? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: Jaz bi pravijo 500 zdi pošteno igro. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, ja. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH Blumberg: Ja. 555 00:26:24,246 --> 00:26:27,006 Samo imajo splošen občutek o tem, kaj jih povzroča. 556 00:26:27,006 --> 00:26:28,880 In tudi samo z njimi Imena, lahko nekako 557 00:26:28,880 --> 00:26:32,890 kot da izobraženi ugibati kot za kaj jih dejansko povzročil. 558 00:26:32,890 --> 00:26:36,919 Na primer, premaknite trajno, verjetno datoteka se je preselila za stalno. 559 00:26:36,919 --> 00:26:39,328 >> OBČINSTVO: Ampak na prejšnji izpit, je bil tako 560 00:26:39,328 --> 00:26:41,050 kako si nas pričakujejo, da bodo odgovorili na to? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: That bil vreden nič točk. 562 00:26:42,883 --> 00:26:45,870 Vprašanje o 418 na čajnik je tehnično stanje HTTP, 563 00:26:45,870 --> 00:26:47,090 vendar je bilo vredno nič točk. 564 00:26:47,090 --> 00:26:48,320 Očitno je, da nisi Pričakuje se, da jih poznam. 565 00:26:48,320 --> 00:26:49,670 >> OBČINSTVO: Je to pravi ena? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: To je resnična ena, vendar to ne pomeni ničesar. 567 00:26:51,970 --> 00:26:52,700 To je samo šala. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Internet ljudje so smešni. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: Veliko vprašanj, fantje. 571 00:26:59,680 --> 00:27:01,452 Vsa druga vprašanja? 572 00:27:01,452 --> 00:27:04,891 >> OBČINSTVO: Kaj je notranja napaka strežnika? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: notranji Napaka strežnika samo 574 00:27:06,640 --> 00:27:10,050 pomeni, da ste bili ne morejo komunicirati 575 00:27:10,050 --> 00:27:13,400 s strežnikom za nekega razloga. 576 00:27:13,400 --> 00:27:15,400 Torej, to ni nujno nekaj, kar mora storiti 577 00:27:15,400 --> 00:27:19,170 s stranko ali kaj podobnega. 578 00:27:19,170 --> 00:27:22,170 Ne vem, o vsakem konkretnem primeru da smo šli čez razložiti, 579 00:27:22,170 --> 00:27:23,000 ampak ja. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: Seveda. 581 00:27:23,250 --> 00:27:25,625 Tako, na primer, kot dovolimo rekli ste delali Mashup 582 00:27:25,625 --> 00:27:30,440 in Google strežnik znižale za nekatere Razlog, izpada elektrike, recimo. 583 00:27:30,440 --> 00:27:33,400 Da bi notranji strežnik napaka ali neka vam of-- všeč 584 00:27:33,400 --> 00:27:34,630 ne bi dobil odgovor nazaj. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Ja. 586 00:27:35,260 --> 00:27:37,050 To je samo, ko ste ne morejo komunicirati 587 00:27:37,050 --> 00:27:40,299 s strežnikom za neznanega razloga zato ker o gre navzdol ali iz kakšnega drugega razloga. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Torej, skakanje v PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, za razliko od HTML, je programski jezik. 591 00:27:49,930 --> 00:27:54,820 In smo ga začeli uporabljati, ker je zelo koristno za razvoj spletnih strani. 592 00:27:54,820 --> 00:27:56,940 >> Najprej smo ga uporabili v CS50 finance. 593 00:27:56,940 --> 00:28:02,240 In to je v bistvu nam pomaga prinesti skupaj to markup, oblikovanje, 594 00:28:02,240 --> 00:28:07,460 in kako smo dejansko uporabili podatke prikazati stvari na spletni strani. 595 00:28:07,460 --> 00:28:11,870 Torej PHP pomeni sam PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 tako da je rekurzivna backnorym sama. 597 00:28:15,360 --> 00:28:22,330 In odpiranje oznake za PHP smo leva in desno puščice z vprašanjem znamk 598 00:28:22,330 --> 00:28:23,060 in php. 599 00:28:23,060 --> 00:28:25,890 >> Torej smo že videli kup njej. 600 00:28:25,890 --> 00:28:29,150 Zdaj smo le, da bo šel čez nekaj osnovnih stvari o njej. 601 00:28:29,150 --> 00:28:32,280 Torej s PHP, spremenljivke imena začnejo z znak za dolar. 602 00:28:32,280 --> 00:28:35,660 Mi ne določite, še enkrat, spremenljivka tipa anymore. 603 00:28:35,660 --> 00:28:38,450 Tako kot smo to storili s C, nam ni treba storiti. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Mi lahko naredimo kup razlikuje stvari s spremenljivkami. 606 00:28:44,490 --> 00:28:47,750 Mi jih lahko skupaj da jih concatenating 607 00:28:47,750 --> 00:28:52,900 z dot zapis, ki nismo mogli storiti v C znova. 608 00:28:52,900 --> 00:28:57,490 Spet smo imeli malo več vsestranskost s PHP v smislu spremenljivk. 609 00:28:57,490 --> 00:29:00,080 Še enkrat, ne bomo imeli glavno funkcijo. 610 00:29:00,080 --> 00:29:03,370 >> In PHP razlaga v nasprotju z zbrati, 611 00:29:03,370 --> 00:29:09,970 Torej, kako mi je, da za datoteke C, ne bomo morali storiti, da za PHP. 612 00:29:09,970 --> 00:29:15,440 Ampak, tako da jeziku se vodijo po sebi, je razlaga. 613 00:29:15,440 --> 00:29:18,550 In potem ohlapno tipkal samo pomeni, da smo 614 00:29:18,550 --> 00:29:22,490 ne bi bilo treba določiti spremenljivke tip in spremenljivka vrste 615 00:29:22,490 --> 00:29:25,415 se razume na runtime. 616 00:29:25,415 --> 00:29:29,185 >> OBČINSTVO: Ampak kaj ste pomeni ga dot spoj? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Seveda. 618 00:29:30,060 --> 00:29:37,660 Ko smo želeli postaviti stvari together-- tako da, če bomo imeli nekaj spremenljivko, ki 619 00:29:37,660 --> 00:29:41,500 imela vrednost 3 in smo imeli drugo spremenljivka, ki je imela vrednost niza, 620 00:29:41,500 --> 00:29:45,920 lahko bi dal spremenljivke skupaj z uvedbo piko med njimi 621 00:29:45,920 --> 00:29:46,970 in jih združite. 622 00:29:46,970 --> 00:29:52,670 Ali pa bi lahko ustvarili spremenljivka imenuje ime 623 00:29:52,670 --> 00:29:56,900 in ga skupaj s povezovanjem dveh nizov. 624 00:29:56,900 --> 00:30:00,680 >> Torej, če smo imeli niz v dvojni quotes in mi dal piko po njej, 625 00:30:00,680 --> 00:30:03,660 nato pa smo imeli še en niz, da bi ustvarili niz v celoti. 626 00:30:03,660 --> 00:30:05,242 >> OBČINSTVO: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA LATVIJA: Je bilo to jasno? 628 00:30:06,450 --> 00:30:07,099 OBČINSTVO: Ja. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Da. 631 00:30:08,766 --> 00:30:11,146 >> OBČINSTVO: Ko rečeš razlagati namesto zbrati, 632 00:30:11,146 --> 00:30:14,160 govoriš Nimate morajo biti kot posebno ko 633 00:30:14,160 --> 00:30:15,906 gre za PHP primerjavi C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Ko rečemo, razlagati tako, da nasprotuje zbrati, 636 00:30:20,710 --> 00:30:21,850 kaj mislimo? 637 00:30:21,850 --> 00:30:26,220 Torej to pomeni, da ne potrebujemo izvedljive datoteke teči PHP. 638 00:30:26,220 --> 00:30:29,870 To pomeni, da ta deluje kot gre. 639 00:30:29,870 --> 00:30:31,650 Ali to smiselno? 640 00:30:31,650 --> 00:30:32,495 Malo več. 641 00:30:32,495 --> 00:30:34,620 HANNAH Blumberg: Torej si lahko zamislite tolmača 642 00:30:34,620 --> 00:30:38,980 kot drug program, ki je odgovoren za odhod po vrsticah preko PHP 643 00:30:38,980 --> 00:30:42,745 in dejansko izvršitve, v nasprotju da je vse pripravo navzdol binarno. 644 00:30:42,745 --> 00:30:46,050 To ne dejansko pomeni nič o tem, kako specifični moramo biti. 645 00:30:46,050 --> 00:30:49,470 Mi še vedno morali biti natančni, in ne pozabite podpičjem in se prepričajte, 646 00:30:49,470 --> 00:30:51,470 imate znak za dolar, in take stvari. 647 00:30:51,470 --> 00:30:52,240 Dobro vprašanje. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Ja. 649 00:30:53,115 --> 00:30:55,590 Torej, po vrsticah, kot nasprotuje z datotekami C, 650 00:30:55,590 --> 00:30:59,100 moramo narediti celotno konč preden lahko dejansko vodijo. 651 00:30:59,100 --> 00:31:00,360 To je glavna razlika. 652 00:31:00,360 --> 00:31:02,655 Ampak še enkrat, ne moremo res manj natančna. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Torej nizi v PHP predstavljajo dejansko naloži zemljevid. 655 00:31:13,950 --> 00:31:17,550 >> Torej nizi pridruženih vrednostmi do ključev. 656 00:31:17,550 --> 00:31:23,350 Dva načina, da razglasi matrika, ki temelji na tej sintaksi, 657 00:31:23,350 --> 00:31:26,380 smo lahko bolj eksplicitno V rekoč imamo niz 658 00:31:26,380 --> 00:31:31,010 in imamo to key1, ki se preslika to value1, key2 ki preslika VALUE2. 659 00:31:31,010 --> 00:31:34,660 Ali mi lahko samo ustvariti niz ki vsebuje sama vrednosti 660 00:31:34,660 --> 00:31:38,360 in potem tipke so razumeti na način. 661 00:31:38,360 --> 00:31:40,000 Vsa vprašanja o tem? 662 00:31:40,000 --> 00:31:42,500 >> Publika: Kaj bi ključe v drugem primeru? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: Na primer, to je samo ključi v to ne nujno 667 00:31:55,780 --> 00:31:56,550 Naredi spremembo. 668 00:31:56,550 --> 00:32:01,720 Samo določite, kako si lahko uporablja vrednosti znotraj njega. 669 00:32:01,720 --> 00:32:08,660 Torej, če bomo imeli foreach zanke v PHP, ki bi 670 00:32:08,660 --> 00:32:14,760 nam omogočajo, da gredo skozi vseh vrednot, moremo iti skozi vseh vrednot, 671 00:32:14,760 --> 00:32:19,570 čeprav smo imeli ali še ni definirana poseben ključ v mesto je 672 00:32:19,570 --> 00:32:20,820 Prejšnja sintaksa. 673 00:32:20,820 --> 00:32:23,460 >> Tako da tudi s to vrsto od array, smo lahko še vedno 674 00:32:23,460 --> 00:32:26,260 imajo foreach zanke ki gre skozi vsako 675 00:32:26,260 --> 00:32:31,240 vrednosti v ključu v matriki. 676 00:32:31,240 --> 00:32:36,180 Torej sintakso za foreach zanka, začnemo s paleto. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Ta $ arr spremenljivka je naša dejanska matrika da smo definirali v prejšnjem stekelce 679 00:32:43,900 --> 00:32:47,550 kot vrednost, ki dobesedno gre skozi vsako od vrednosti, 680 00:32:47,550 --> 00:32:50,122 ne glede na to, ali smo imeli ključ ali ne. 681 00:32:50,122 --> 00:32:53,080 In potem bomo lahko storite z nekaj vrednost notranjost foreach zanke. 682 00:32:53,080 --> 00:32:57,730 Torej še enkrat, če bi imeli niz kot je ta tukaj created-- 683 00:32:57,730 --> 00:33:03,270 tako da imamo ključ foo in vrednosti bar, ključni Baz in vrednost qux-- 684 00:33:03,270 --> 00:33:09,730 lahko imamo foreach zanke, ki gre skozi paleto kot ključna vrednota 685 00:33:09,730 --> 00:33:11,900 nato pa naredite nekaj s ključem in / ali vrednost. 686 00:33:11,900 --> 00:33:15,980 Ampak mi ni nujno vedno imeti foreach zanke, ki 687 00:33:15,980 --> 00:33:19,410 gre skozi paleto kot ključnem zemljevidu na vrednosti. 688 00:33:19,410 --> 00:33:26,060 Lahko gremo skozi foreach zanke matrika kot vrednost. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: In mislim, to-- je bilo vaše vprašanje, kaj 690 00:33:28,990 --> 00:33:31,229 je implicitni indeks? 691 00:33:31,229 --> 00:33:31,895 OBČINSTVO: Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH Blumberg: Ja, ja. 694 00:33:33,406 --> 00:33:36,150 Torej v bistvu, če ne določite ključno, da se dogaja, da bo 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Ja. 696 00:33:37,140 --> 00:33:41,718 Tako kot pri C, to je nič indeksirane, če ne določite ključ. 697 00:33:41,718 --> 00:33:42,384 OBČINSTVO: Žal mi je. 698 00:33:42,384 --> 00:33:43,827 Lahko poskusite gledano malo glasneje? 699 00:33:43,827 --> 00:33:45,270 Imam malo Težava vse zaslišanje. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: Tako mi je žal. 701 00:33:46,478 --> 00:33:48,439 Ja seveda. 702 00:33:48,439 --> 00:33:50,230 Torej hočeš, da me iti čez to še enkrat? 703 00:33:50,230 --> 00:33:51,680 Ali je this-- 704 00:33:51,680 --> 00:33:54,930 OBČINSTVO: Torej, glede na predhodno slide-- če si lahko samo vrniti za eno sekundo. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Seveda, žal. 706 00:33:57,313 --> 00:33:59,237 OBČINSTVO: Torej drugi Niz tukaj ne 707 00:33:59,237 --> 00:34:04,135 Zdi se, da imajo vrednosti vpisati, nekako [? vzročno zvezo. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Dobro, dobro. 709 00:34:05,343 --> 00:34:07,608 OBČINSTVO: Torej, kako to delo ko ste rekli, da je vse ali nič. 710 00:34:07,608 --> 00:34:08,969 Za mene, ki je videti kot [£ foo?] že. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Ja, ja. 712 00:34:10,093 --> 00:34:12,969 Torej še enkrat, to je naloži zemljevid v tem smislu 713 00:34:12,969 --> 00:34:15,639 da so tam razume, na primer, indeksi 714 00:34:15,639 --> 00:34:20,159 Tukaj lahko razumemo kot 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Še enkrat, to je tistih, ki imajo indeksi je naš ekvivalent 716 00:34:25,929 --> 00:34:28,980 imajo ključe preslikanih na vrednosti. 717 00:34:28,980 --> 00:34:34,710 Torej, če je naš ključni bil 0-- žal. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: Ne, tam je kreda tukaj. 719 00:34:36,524 --> 00:34:36,929 To je pravzaprav res lepo. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: To je super. 721 00:34:37,460 --> 00:34:38,260 V REDU. 722 00:34:38,260 --> 00:34:49,489 Torej še enkrat, bi $ arr 0 biti tipko za vrednost 1. 723 00:34:49,489 --> 00:34:51,138 0 bi ključ za vrednost 1. 724 00:34:51,138 --> 00:34:51,971 OBČINSTVO: Žal mi je. 725 00:34:51,971 --> 00:34:53,190 To je neviden. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: V redu, nevermind. 727 00:34:53,659 --> 00:34:54,980 Kreda je bila slaba ideja. 728 00:34:54,980 --> 00:34:58,030 Vzamem nazaj. 729 00:34:58,030 --> 00:35:01,425 Si lahko zamislite ključev kot 0 kart z vrednostjo 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Ja. 731 00:35:02,300 --> 00:35:04,630 To je torej 0, to je 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Ti so lahko vaši ključi. 733 00:35:05,760 --> 00:35:10,020 Lahko misliš o njih as-- ja. 734 00:35:10,020 --> 00:35:12,740 Torej, namesto da eksplicitne ključi, oni 735 00:35:12,740 --> 00:35:17,180 nekako razumeti kot indeksi se začne pri 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 Kreda ni pomagalo. 738 00:35:24,820 --> 00:35:25,722 Ja. 739 00:35:25,722 --> 00:35:30,914 >> OBČINSTVO: Za foreach zanke, če bi želeli, da se prikaže kot vrednost, 740 00:35:30,914 --> 00:35:33,245 Treba bi bilo samo avtomatsko indeks na 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Ja. 742 00:35:34,120 --> 00:35:35,745 Bilo bi šel skozi vsako od vrednosti. 743 00:35:35,745 --> 00:35:39,130 OBČINSTVO: [neslišno] kot 0 ali bi to pač 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Vi bi morali reči kot znak za dolar in potem 745 00:35:43,710 --> 00:35:46,266 nekateri ime spremenljivke, vrednost. 746 00:35:46,266 --> 00:35:47,182 OBČINSTVO: [neslišno]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Oprostite? 749 00:35:50,964 --> 00:35:52,839 OBČINSTVO: Žal mi je, da sem samo poskušam zapomniti. 750 00:35:52,839 --> 00:35:57,190 Kako bi vam, da če lahko to storite avtomatično indeksiranje je samo 0 od? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Torej, kako bi to naredil Če niste imeli posebne ključne imena? 752 00:36:00,780 --> 00:36:01,710 >> OBČINSTVO: Ja. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: Vi bi samo define-- samo reči sebe kot neke imenom. 754 00:36:07,820 --> 00:36:17,950 Torej v vašem psets, vidva morda zapomni si foreach $ vrstico kot $ vrstice, 755 00:36:17,950 --> 00:36:24,610 smo Sebe ustvarili to $ vrstico rek želimo, da gredo skozi vrsto kot $ vrstic. 756 00:36:24,610 --> 00:36:28,360 Čeprav nismo imeli to izrecno $ vrstice opredeljena, 757 00:36:28,360 --> 00:36:31,990 smo lahko samo pojdi in pravijo, je to lahko naša ključna, 758 00:36:31,990 --> 00:36:33,615 in samo skozi vsako od vrednosti. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> OBČINSTVO: Torej je vrednost novo spremenljivko smo ustvariti za shranjevanje [neslišno]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Torej to ni po sebi novo spremenljivko. 763 00:36:49,990 --> 00:37:00,310 To je spremenljivka, ki se nanaša na znotraj polja vsako od njih. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: To je novo ime spremenljivke. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Ja, to je nova spremenljivka ime, 766 00:37:04,018 --> 00:37:06,680 vendar to ni inherently-- ja. 767 00:37:06,680 --> 00:37:08,950 To je samo novo spremenljivko da lahko to storite. 768 00:37:08,950 --> 00:37:12,680 Torej, kako bomo naredili $ vrstici kot $ vrstice, vrstice 769 00:37:12,680 --> 00:37:17,980 je novo ime spremenljivke, ki smo lahko ustvarite v našem foreach zanke. 770 00:37:17,980 --> 00:37:22,065 To ni nujno, da preexist pred tem. 771 00:37:22,065 --> 00:37:25,777 >> OBČINSTVO: Lahko greš skozi logika za vsako uporabo primer tam? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: Mhm. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Oh, oprosti. 775 00:37:32,080 --> 00:37:33,780 Tukaj je primer. 776 00:37:33,780 --> 00:37:34,280 Sure. 777 00:37:34,280 --> 00:37:38,950 Torej za vsak array-- tako to pomeni, da gredo v ta sklop 778 00:37:38,950 --> 00:37:43,930 kot ključ value--, ki se dogaja iti skozi ta niz 779 00:37:43,930 --> 00:37:49,480 in prvič pojdi in dobili foo je Ključ foo in bar vrednost. 780 00:37:49,480 --> 00:37:51,570 In potem na drugi ponovitvi zanke, 781 00:37:51,570 --> 00:37:55,090 to se dogaja, da gredo skozi in sprejeti ključ baz in qux vrednost. 782 00:37:55,090 --> 00:38:00,512 In potem lahko to storite z nekaj enega od njiju ali oba. 783 00:38:00,512 --> 00:38:03,488 >> OBČINSTVO: Torej ideja ima ključno točko na vrednost, 784 00:38:03,488 --> 00:38:07,470 Kaj boste na koncu dostopu? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: Kaj je ideja imajo ključno kazalno ceniti? 786 00:38:10,680 --> 00:38:16,400 To je samo še en dogovor, drugo pot skozi polja 787 00:38:16,400 --> 00:38:22,600 in je omogočen dostop bodisi ključ ali vrednost ali oboje, in jih uporabljati. 788 00:38:22,600 --> 00:38:27,100 >> OBČINSTVO: Kakšna je vloga za odredi, da se foreach teče v? 789 00:38:27,100 --> 00:38:29,250 Torej, če smo bili, da dodate elementi matrike kasneje 790 00:38:29,250 --> 00:38:32,140 bi tisti, biti prvi, poklical v foreach array, 791 00:38:32,140 --> 00:38:33,750 ali bi bilo kasneje? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Torej, kaj je sklep, da se foreach 793 00:38:37,770 --> 00:38:39,210 zanka gre skozi niz v? 794 00:38:39,210 --> 00:38:42,220 Gre skozi prvo element za zadnji element, 795 00:38:42,220 --> 00:38:43,400 na zadnji dodani element. 796 00:38:43,400 --> 00:38:48,020 Če dodate elemente kasneje, bi jih se accessed-- prvi elementi bi 797 00:38:48,020 --> 00:38:51,410 je dostopna kot prvi elementi matrike, 798 00:38:51,410 --> 00:38:57,620 in potem bi šel skozi vsako od elementi, kot neke vrste ordered-- 799 00:38:57,620 --> 00:39:02,930 ni urejeno, vendar je način, da so bili dani v array. 800 00:39:02,930 --> 00:39:06,855 >> OBČINSTVO: Torej novi elementi dodajo kasneje? 801 00:39:06,855 --> 00:39:10,680 Torej oni added-- oni biti Slednjih v [? ponovitev. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: Novi elementi can-- v bistvu, ko se novi elementi, 803 00:39:14,280 --> 00:39:16,520 se doda na koncu polja? 804 00:39:16,520 --> 00:39:17,632 >> OBČINSTVO: Ja. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Verjamem, da. 806 00:39:18,840 --> 00:39:20,850 Da. 807 00:39:20,850 --> 00:39:24,330 In potem s svojim foreach zanke, po tem, ko ste dodali nove elemente 808 00:39:24,330 --> 00:39:26,790 in greš skozi njih, novi elementi bi 809 00:39:26,790 --> 00:39:30,930 biti accessed-- novim elementom, če je Dodana zadnja, bi bilo mogoče dostopati zadnji. 810 00:39:30,930 --> 00:39:34,416 >> OBČINSTVO: Lahko daš primer nečesa, kar bi [neslišno] 811 00:39:34,416 --> 00:39:37,404 z nečim z vrednostjo kot [neslišno] ali vrednosti, 812 00:39:37,404 --> 00:39:38,910 všeč, kako boš formatirati to? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Seveda. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Lahko dam primer, kaj mi bi naredil z vrednostjo? 816 00:39:46,410 --> 00:39:52,440 Torej, kaj vidva bi biti seznanjeni z je, da smo šli skozi niz 817 00:39:52,440 --> 00:39:55,380 in v bistvu tiskani vsakega izmed elementov, 818 00:39:55,380 --> 00:40:00,910 na primer kot del urejen seznam, ali nekaj, kar. 819 00:40:00,910 --> 00:40:02,674 Ali to smisel ali pa želimo to-- 820 00:40:02,674 --> 00:40:04,340 OBČINSTVO: Ali lahko natisnete te vrednote ven? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Ja, smo lahko natisnete in nato v bistvu $ vrednost, saj na 822 00:40:13,220 --> 00:40:16,570 da je posebna vrednost, bi morali biti tiskanje vrednost znotraj njega. 823 00:40:16,570 --> 00:40:20,150 Torej, če smo bili na naši prvi ponovitvi nje in natisnili smo $ vrednost, 824 00:40:20,150 --> 00:40:23,775 mi bi se bar tiskanje. 825 00:40:23,775 --> 00:40:27,020 >> OBČINSTVO: Ali obstajajo tudi za zanke v PHP ali samo foreach zanke? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: Obstaja tudi zanke v PHP. 827 00:40:30,430 --> 00:40:33,399 In njihova logika je predvsem enako kot tisto, kar ste bili vajeni. 828 00:40:33,399 --> 00:40:34,690 OBČINSTVO: Torej je njegova vrednost null. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: To je všeč isto. 830 00:40:35,090 --> 00:40:35,590 Ja. 831 00:40:35,590 --> 00:40:37,747 OBČINSTVO: Jaz sem le, da bo vprašal. 832 00:40:37,747 --> 00:40:39,695 Torej, ko razglasi matrika, ki jih ne potrebujete 833 00:40:39,695 --> 00:40:42,617 povedati, kaj velikost, da se dogaja, da biti, kar pomeni, da si lahko samo 834 00:40:42,617 --> 00:40:44,417 dodajanje in odnese elementov [neslišno]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Yup. 836 00:40:45,250 --> 00:40:45,750 Yup. 837 00:40:45,750 --> 00:40:46,251 Točno tako. 838 00:40:46,251 --> 00:40:48,875 Ko izjavljamo matriko, smo ni treba povedati, kaj velikost je, 839 00:40:48,875 --> 00:40:51,022 tako da bomo lahko le dodamo elemente na pozneje, kot dobro. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Več vprašanj? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Torej prinaša PHP in HTML skupaj, kar smo seen-- dobro, 844 00:41:05,950 --> 00:41:15,130 na primer, v tem primeru imamo HTML obliko, ki ima vnosno polje. 845 00:41:15,130 --> 00:41:18,830 >> In polje za vnos je le ime in potem ima Oddajte gumb. 846 00:41:18,830 --> 00:41:26,040 In ko pritisnete Potrdi Gumb, v našem hello.php datoteki, 847 00:41:26,040 --> 00:41:32,130 ker metoda za obliko je dobili smo lahko dostopate kar je v imenu 848 00:41:32,130 --> 00:41:40,360 s tem dobili globalno spremenljivko, ki is-- skladnjo za to je $ _GET. 849 00:41:40,360 --> 00:41:44,520 In potem bomo lahko dostopate ne glede na Uporabnik vhod znotraj tega obrazca za imenom 850 00:41:44,520 --> 00:41:47,410 z navedbo imena tem področju. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Vsa druga vprašanja ali katerega koli Vprašanja o tem konkretnem primeru? 853 00:41:55,060 --> 00:41:58,275 >> OBČINSTVO: Kje je PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Tukaj. 855 00:41:59,150 --> 00:42:01,150 Torej je to naša otvoritev tag za PHP. 856 00:42:01,150 --> 00:42:01,530 >> OBČINSTVO: Oh, v redu. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Da. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH Blumberg:? = Je okrajšava za to je PHP in samo odmev. 860 00:42:09,609 --> 00:42:10,150 OBČINSTVO: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Ja, žal. 862 00:42:10,720 --> 00:42:12,040 Imam treba, da je jasno. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: Print. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: To je samo funkcija ki nam omogoča, da natisnete nekaj. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Great vprašanje. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Torej going-- ja. 869 00:42:25,495 --> 00:42:31,940 >> OBČINSTVO: Je tam dogaja, da je precej malo ročno kodiranje PHP in HTML 870 00:42:31,940 --> 00:42:33,450 na kvizu 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: Ne more biti Poštena vrednost razlage 873 00:42:38,810 --> 00:42:43,330 PHP in HTML, ni nujno, da kot ogromne količine kodiranja, 874 00:42:43,330 --> 00:42:46,960 čeprav boste morda morali napisati foreach zanke, čeprav za zanke. 875 00:42:46,960 --> 00:42:49,790 Koli izmed zank, da smo zajemajo tukaj je pošteno igro. 876 00:42:49,790 --> 00:42:51,889 In to je v glavnem to. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: Jaz bi bil pripravljen. 878 00:42:53,430 --> 00:42:57,010 Na enak način, da smo vas prosili, da napišite kup funkcij C na kvizu 0, 879 00:42:57,010 --> 00:42:59,766 Jaz bi bila pripravljena storiti Enako v PHP in JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Ja. 881 00:43:00,640 --> 00:43:03,210 HANNAH Blumberg: Jaz bi rekel, little--, kot da smo ne 882 00:43:03,210 --> 00:43:06,251 dogaja, da napišete ogromen HTML stran samo zato, ker da je malo 883 00:43:06,251 --> 00:43:08,240 dolgočasno, vendar boste morda morali dele. 884 00:43:08,240 --> 00:43:09,310 To je povsem pošteno igro. 885 00:43:09,310 --> 00:43:11,082 Tako kot majhen HTML strani, popolnoma pravičen. 886 00:43:11,082 --> 00:43:11,623 OBČINSTVO: OK. 887 00:43:11,623 --> 00:43:13,814 Kaj pa v JavaScriptu, kot tudi? 888 00:43:13,814 --> 00:43:14,730 HANNAH Blumberg: Ja. 889 00:43:14,730 --> 00:43:15,250 Pošteno igro Javascript. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Ja. 891 00:43:15,635 --> 00:43:16,801 To je povsem pošteno igro. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Bomo dobili tistemu v kot 10 minut. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, še enkrat, Structured Query Language. 894 00:43:23,750 --> 00:43:28,651 To v bistvu nam omogoča upravljanje podatkov v upravljanje relacijskih baz podatkov 895 00:43:28,651 --> 00:43:29,150 sistem. 896 00:43:29,150 --> 00:43:31,149 To samo v bistvu pomeni, da imamo nekje 897 00:43:31,149 --> 00:43:37,980 za shranjevanje nekaj podatkov, ki bi lahko želimo uporabite na spletni strani ali v neki drugi obliki. 898 00:43:37,980 --> 00:43:42,190 In potem imamo poizvedbe, da bi dobili informacije iz naše podatkovne baze, 899 00:43:42,190 --> 00:43:44,320 ali vstaviti podatke v njih. 900 00:43:44,320 --> 00:43:47,560 Veliko skupnega ones-- UPDATE, INSERT SELECT in DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Torej za UPDATE, to je sintaksa za posodobitev podatkov v podatkovni bazi. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Posodabljanje to tabelo imenovano miza z besedami SET, 904 00:43:57,340 --> 00:44:04,170 moremo postaviti nekaj vrednosti v vseh vrstice do enakega nekaj drugega. 905 00:44:04,170 --> 00:44:09,410 Tako bomo lahko določite tudi nekatere posebne vnosov, ki jih želimo spremeniti 906 00:44:09,410 --> 00:44:11,240 in da se lahko uporabi, kadar. 907 00:44:11,240 --> 00:44:16,380 In mi lahko določite, da želimo le, da se spremeniti nekaj vrstic, kjer je hiša za, 908 00:44:16,380 --> 00:44:19,830 če bi imeli tabelo študentov in vsi študenti imeli hišo, 909 00:44:19,830 --> 00:44:24,890 tako da bi spremenil le nekatere vrednote kjer hiša enaka Kožar, 910 00:44:24,890 --> 00:44:25,430 npr. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Za INSERT, lahko vstavite določene vrednosti v tabeli. 913 00:44:31,800 --> 00:44:35,150 Torej INSERT INTO mizo, nato se vrednosti 914 00:44:35,150 --> 00:44:39,080 in nato v oklepaju smo določiti katere vrednosti želite vstaviti. 915 00:44:39,080 --> 00:44:43,220 Torej INSERT INTO mizo, COL1 in col2, je vrednost VAL1 in VAL2. 916 00:44:43,220 --> 00:44:48,930 Torej je to v bistvu vstavi novo vrstico v tabelo, ki vsebuje vrednost 1 in 2 917 00:44:48,930 --> 00:44:50,850 v stolpcih 1 in 2. 918 00:44:50,850 --> 00:44:54,760 >> In potem smo šli čez hiter primer, kako to izgleda 919 00:44:54,760 --> 00:44:56,310 kot v naši bazi podatkov malo. 920 00:44:56,310 --> 00:44:58,685 Ampak to končno vprašanje, ki sem Mislimo, da smo šli čez, 921 00:44:58,685 --> 00:45:01,450 SELECT, samo nam omogoča, tako da izbira podatke iz tabele 922 00:45:01,450 --> 00:45:03,080 da ga morda uporabili kasneje. 923 00:45:03,080 --> 00:45:05,830 In način, kako to storiti, je, da smo samo ga shranite v neki spremenljivki. 924 00:45:05,830 --> 00:45:07,780 In potem bomo lahko morebiti ponovno uporabiti. 925 00:45:07,780 --> 00:45:10,260 >> Torej SELECT zvezda pomeni izberite vse. 926 00:45:10,260 --> 00:45:13,280 To je samo okrajšava za izbiro vse. 927 00:45:13,280 --> 00:45:19,760 FROM tabela WHERE, iščemo za nekatere posebne pogoje, 928 00:45:19,760 --> 00:45:22,290 tako da kadar je v stolpcu enaka nekaj, npr. 929 00:45:22,290 --> 00:45:24,410 Če bomo samo hotel izberi vse iz tabele, 930 00:45:24,410 --> 00:45:28,400 to samo izbere vse stolpce in vse vrstice iz tabele. 931 00:45:28,400 --> 00:45:32,040 >> In potem DELETE FROM tabela KJE col enak nekaj, 932 00:45:32,040 --> 00:45:36,440 to samo izbriše nekatere veslati iz naše tabele 933 00:45:36,440 --> 00:45:38,860 kjer imamo nekatere posebne pogoje. 934 00:45:38,860 --> 00:45:41,870 V tem primeru pogoji so stolpec enak nekaj. 935 00:45:41,870 --> 00:45:43,460 Torej, samo na hitro primer tega. 936 00:45:43,460 --> 00:45:49,100 Če imamo to mizo tukaj in mi jo vstavite v tabeli, te vrednosti, 937 00:45:49,100 --> 00:45:50,400 da vstavite novo vrstico. 938 00:45:50,400 --> 00:45:56,380 In če bomo imeli avto-prirastek, bi to Samo prirastek našo ID od 0 do 1 do 2. 939 00:45:56,380 --> 00:46:00,010 >> Če smo izbrali vse od študentov je, samo vrne vsa področja in vse vrstice. 940 00:46:00,010 --> 00:46:02,430 Kadar leto večja ali enako 2016 941 00:46:02,430 --> 00:46:04,390 da bi samo vrnitev Hannah in jaz. 942 00:46:04,390 --> 00:46:08,360 In potem, če smo le izbrana leto id in leto IZ študentov 943 00:46:08,360 --> 00:46:11,710 kjer je hiša Cabot House, ki bi spet vrne Hannah in jaz. 944 00:46:11,710 --> 00:46:14,430 >> Potem, če smo izbrisani iz študentov kjer je ime enako Rob, 945 00:46:14,430 --> 00:46:16,760 da izbrišete celotno vrstico. 946 00:46:16,760 --> 00:46:19,696 In potem, če smo nastavite ime, UPDATE študente 947 00:46:19,696 --> 00:46:21,570 SET ime enak Daven KJE hiša je enaka 948 00:46:21,570 --> 00:46:27,010 Cabot House, ki je šel na te vrstice in nato posodobite ime. 949 00:46:27,010 --> 00:46:31,470 >> In potem še nekaj podatkov SQL tipi so CHAR, VARCHAR, INT, in FLOAT. 950 00:46:31,470 --> 00:46:32,760 To so pošteno igro. 951 00:46:32,760 --> 00:46:36,740 Jaz bi šel znova in poskrbite, da boste vedeli, 952 00:46:36,740 --> 00:46:40,930 in jih imajo na vaši goljufija stanja, kaj vsak od teh likov 953 00:46:40,930 --> 00:46:44,140 so bili uporabljeni za, kaj ste jih uporabljali na vaše psets, 954 00:46:44,140 --> 00:46:48,050 in se prepričajte, da ste seznanjeni in udobno morali izbrati 955 00:46:48,050 --> 00:46:51,450 iz različnih podatkovnih tipov v vašem pset. 956 00:46:51,450 --> 00:46:51,950 Da. 957 00:46:51,950 --> 00:46:54,300 >> OBČINSTVO: Kaj je bila ta tabela shranjena? 958 00:46:54,300 --> 00:46:57,119 Ja, če je ta tabela shranjena? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: No, zdaj, to ni shranjeno. 960 00:46:59,160 --> 00:47:00,700 Kakorkoli že, če je ta tabela shranjena? 961 00:47:00,700 --> 00:47:04,503 Vendar se lahko shranijo v podatkovni bazi SQL. 962 00:47:04,503 --> 00:47:07,330 >> OBČINSTVO: In kje je zbirka podatkov SQL? 963 00:47:07,330 --> 00:47:11,200 V računalniku, na spletu nekje, strežnik? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: To je lahko število različnih stvari. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: Smo povezan z SQL tabele predvsem s phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Tako smo lahko vprašali strežnik da jih shranite za nas. 967 00:47:22,060 --> 00:47:23,830 Lahko jih shranite na lastnem računalniku. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: To je samo odvisno od kako želite, da to storite sami. 969 00:47:27,950 --> 00:47:30,075 Vendar smo bili shranjevanje njih, kot je omenjeno Hannah, 970 00:47:30,075 --> 00:47:31,755 na phpMyAdmin, ki je na spletu. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 In potem je pot, ki jih uporabljamo PHP in SQL, smo ga shranite 973 00:47:39,280 --> 00:47:43,450 v neki spremenljivki kaj smo poizveduje za. 974 00:47:43,450 --> 00:47:48,370 >> Torej, če bomo Izberite vse iz zgodovine kjer USER_ID enaka Session ID, 975 00:47:48,370 --> 00:47:53,900 da bi izbrali vse vrstice za določeno osebo, ki 976 00:47:53,900 --> 00:47:58,327 zabeležita iz zgodovine miza in jih razvrstite v vrste. 977 00:47:58,327 --> 00:48:00,410 Kul stvar, ki vedo da funkciji poizvedbe CS50 je 978 00:48:00,410 --> 00:48:02,180 ščiti pred tags SQL injection. 979 00:48:02,180 --> 00:48:07,420 To samo pomeni, da omogoča, da vhod, ki je vpisana pravilna 980 00:48:07,420 --> 00:48:09,920 in da je oseba, ki vstopa v vložek 981 00:48:09,920 --> 00:48:15,100 ne poskuša vhod nekateri zlonamerno koda bodisi padec naše mize 982 00:48:15,100 --> 00:48:17,305 ali izbrišete vse Notranjost naši bazi podatkov. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Hiter pregled Model View Controller model 985 00:48:23,400 --> 00:48:27,360 to je samo način organiziranja in razmišljam o zakoniku. 986 00:48:27,360 --> 00:48:29,100 To je spet, design paradigma. 987 00:48:29,100 --> 00:48:33,380 Kaj to pomeni, da smo can-- in to je dobra praksa 988 00:48:33,380 --> 00:48:37,790 za ločevanje različnih delov naše kodo in kaj so 989 00:48:37,790 --> 00:48:40,530 nadzor v teh treh paradigem. 990 00:48:40,530 --> 00:48:46,700 >> Torej, naš pogled je najbolj pogosto naša Predloge, naša postavitev, način 991 00:48:46,700 --> 00:48:48,260 da smo si zastavili, kako naša koda izgleda. 992 00:48:48,260 --> 00:48:55,190 To je predvsem naša CSS datoteke in pot da smo opredelili zasnovo našega kodeksa, 993 00:48:55,190 --> 00:48:55,710 v bistvu. 994 00:48:55,710 --> 00:48:59,280 Naš krmilnik je večinoma kaj smo počeli z PHP datotek. 995 00:48:59,280 --> 00:49:03,030 Torej še enkrat, ki delajo z Podatki, ki smo 996 00:49:03,030 --> 00:49:06,700 in opredeljuje, kako da podatki se uporabljajo, 997 00:49:06,700 --> 00:49:10,660 nato pa mimo, da so informacije bodisi na pogled ali modelu. 998 00:49:10,660 --> 00:49:13,880 In model, tako da smo jih bila uporabljate, je bila naša baza podatkov, 999 00:49:13,880 --> 00:49:17,510 Torej, kje je naše informacije shranjeni tako da ima nekje 1000 00:49:17,510 --> 00:49:21,490 za življenje, s katero koli od kodo, ki se nanaša na način 1001 00:49:21,490 --> 00:49:25,410 da bomo dobili te informacije ali Tako, da smo te podatke posodobiti. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Torej v modelu MVC, HTTP zahtevki se pošljejo na spletni strežnik. 1004 00:49:33,200 --> 00:49:36,220 Nato interpretira krmilnik zahteva od uporabnika 1005 00:49:36,220 --> 00:49:38,260 in potem potrdi vnos uporabnika. 1006 00:49:38,260 --> 00:49:41,580 To je neobvezno, da imamo upravljavec sporoči 1007 00:49:41,580 --> 00:49:44,000 z modelom, tako da nekaj kot naši podatkovni bazi 1008 00:49:44,000 --> 00:49:47,500 ali kakšno drugo funkcionalnost ki bo posredovala informacije. 1009 00:49:47,500 --> 00:49:50,340 In potem končno, regulator prehaja informacije na pogled 1010 00:49:50,340 --> 00:49:52,090 tako da je lahko opravljene in da je lahko 1011 00:49:52,090 --> 00:49:55,860 postanejo vidni za vse osebe, dostop do spletne strani. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Kakšno vprašanje? 1014 00:50:01,340 --> 00:50:01,840 Awesome. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Torej še enkrat, model, njena funkcija, še enkrat, 1017 00:50:08,469 --> 00:50:11,260 je obstojna shranjevanje podatkov, vodenje in organiziranje podatkov. 1018 00:50:11,260 --> 00:50:13,890 In tisto, kar smo videli, da če je zbirka podatkov MySQL 1019 00:50:13,890 --> 00:50:16,200 in vse podatkovne datoteke, ki se lahko uporabljajo. 1020 00:50:16,200 --> 00:50:20,580 >> Poglej, predstavitev informacij uporabnik, IU ali uporabniški vmesnik. 1021 00:50:20,580 --> 00:50:22,350 In primer tega je HTML. 1022 00:50:22,350 --> 00:50:23,950 In potem bomo morda imeli minimalno PHP. 1023 00:50:23,950 --> 00:50:28,360 Torej za zanko, ki se ponovi več podatkov, ki se natisne 1024 00:50:28,360 --> 00:50:30,720 je del pogleda, kakor nasprotju s krmilnikom. 1025 00:50:30,720 --> 00:50:35,660 In potem je veliko naših PHP datotek spadajo v kategorijo krmilnika. 1026 00:50:35,660 --> 00:50:38,410 Samo ročaji uporabniške zahteve in dobi podatke od modela. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Skakanje v dokumentu Object Model, to samo 1029 00:50:45,590 --> 00:50:47,700 se nanaša na način HTML dokumenti so organizirani. 1030 00:50:47,700 --> 00:50:51,600 In oni so organizirana v drevo objekt, ki ima hierarhijo. 1031 00:50:51,600 --> 00:50:56,720 Torej, če imamo dostop do [neslišno] predstavitev dokumenta, 1032 00:50:56,720 --> 00:51:02,750 lahko delamo z dokumentom, kot smo manipulirati predmete v bistvu. 1033 00:51:02,750 --> 00:51:06,630 >> In da bi to malo bolj jasno, ko 1034 00:51:06,630 --> 00:51:10,540 imamo veliko naših različne oznake odzvati 1035 00:51:10,540 --> 00:51:12,590 na različne poti v našem drevesu. 1036 00:51:12,590 --> 00:51:17,070 In nato za ta primer, še izhodiščni dokument vozlišče. 1037 00:51:17,070 --> 00:51:20,010 Imamo torej, naša HTML vozlišče da razdeli v glavi in ​​telesu. 1038 00:51:20,010 --> 00:51:22,810 Vodja ima naziv in nato naslov vsebuje zdravo, svet. 1039 00:51:22,810 --> 00:51:24,860 In naše telo samo vsebuje zdravo, svet kot dobro. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Tako da kakršna koli vprašanja o katero koli od stvari, ki jih doslej zajete? 1042 00:51:31,900 --> 00:51:35,891 In če ne, bo Hannah prevzame z JavaScriptom. 1043 00:51:35,891 --> 00:51:36,390 Awesome. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, kul. 1045 00:51:37,473 --> 00:51:40,980 Če se kaj zgodi z PHP ali HTML, ali katero od stvari Maria pokriva, 1046 00:51:40,980 --> 00:51:42,700 smo lahko vedno ustavite. 1047 00:51:42,700 --> 00:51:46,430 Delamo bolje znova, tako super. 1048 00:51:46,430 --> 00:51:48,770 In samo, da se vrnete Res hitro k temu, 1049 00:51:48,770 --> 00:51:51,010 če pogledaš na vsak Preteklo leto je izpit, to 1050 00:51:51,010 --> 00:51:54,120 prihaja do either-- tukaj nekaj HTML, da ta diagram. 1051 00:51:54,120 --> 00:51:58,380 Ali tukaj je ta diagram, da so nekateri HTML, tako da zagotovo prakso, ki. 1052 00:51:58,380 --> 00:52:01,500 In potem je to ena zagotovljena Vprašanje, ki ga lahko dobite v redu. 1053 00:52:01,500 --> 00:52:02,000 Cool. 1054 00:52:02,000 --> 00:52:04,510 Torej, kaj je govoril o JavaScriptu in kako se je malo 1055 00:52:04,510 --> 00:52:09,130 razlikuje od jezikov, kot so PHP in C, dveh jezikov, ki jih prej videla. 1056 00:52:09,130 --> 00:52:10,780 Torej številka ena, je to ohlapno tipkal. 1057 00:52:10,780 --> 00:52:14,630 To je, kot so PHP, vendar za razliko od C 1058 00:52:14,630 --> 00:52:15,890 >> To je razlaga jezik. 1059 00:52:15,890 --> 00:52:19,870 Še enkrat, da je kot PHP, za razliko od C in to 1060 00:52:19,870 --> 00:52:24,630 se dogaja, da nam omogočajo, da ga use-- Deluje zelo lepo s spletnih strani. 1061 00:52:24,630 --> 00:52:28,350 To se dogaja, da nam omogočajo, da manipulira vsebina in kako izgleda 1062 00:52:28,350 --> 00:52:30,300 in kaj počne. 1063 00:52:30,300 --> 00:52:32,330 >> Bomo videli malo Ajax. 1064 00:52:32,330 --> 00:52:36,140 To nam omogoča, da komunicirajo asinhrono z različnih strežnikih 1065 00:52:36,140 --> 00:52:37,950 in dobili informacije. 1066 00:52:37,950 --> 00:52:42,820 In to je stvar, ki je res loči JavaScript od PHP in C 1067 00:52:42,820 --> 00:52:45,590 je, da je na strani odjemalca. 1068 00:52:45,590 --> 00:52:49,860 Oba PHP in C sta običajno na strani strežnika. 1069 00:52:49,860 --> 00:52:51,960 >> Za večino del in skoraj v celoti, kar 1070 00:52:51,960 --> 00:52:53,900 smo videli, vsaj v ta razred, JavaScript 1071 00:52:53,900 --> 00:52:57,040 deluje na strani odjemalca, kar pomeni, da brskalnik je dejansko 1072 00:52:57,040 --> 00:52:58,597 odgovoren za njeno vodenje. 1073 00:52:58,597 --> 00:53:01,180 In to pomeni, da ne bomo potrebujejo za interakcijo s strežnikom. 1074 00:53:01,180 --> 00:53:04,380 Torej to pomeni, da je lahko veliko hitreje ker je dejansko samo to je Chrome, 1075 00:53:04,380 --> 00:53:10,420 je Safari, je Firefox, kar vas uporabiti dejansko teče vaše JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> OBČINSTVO: Kaj asinhrona pomeni? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ah, kaj ne asinhrono pomeni? 1078 00:53:13,620 --> 00:53:14,250 Great vprašanje. 1079 00:53:14,250 --> 00:53:17,890 Asinhrono means-- dobro, vsebnost v kateri 1080 00:53:17,890 --> 00:53:22,140 bomo uporabili, da je v redu, smo Ustvarjamo spletne strani 1081 00:53:22,140 --> 00:53:23,860 in smo morali dobiti nekaj informacij. 1082 00:53:23,860 --> 00:53:28,250 Torej s primerom Mashup, nekatere informacije, ki bi lahko želimo 1083 00:53:28,250 --> 00:53:30,580 je članek naslovov. 1084 00:53:30,580 --> 00:53:33,330 Zdaj smo could-- eno možnost je, da to storite sinhrono 1085 00:53:33,330 --> 00:53:37,940 in to pomeni, da Oglejmo ustavi, pojdi članek, 1086 00:53:37,940 --> 00:53:41,275 dobili članka nazaj, in potem render, ampak da bi bilo res počasi. 1087 00:53:41,275 --> 00:53:44,150 Da bi bila slaba uporabniška izkušnja ker bi se samo sedel 1088 00:53:44,150 --> 00:53:46,630 tam čaka nekaj, da se odzove. 1089 00:53:46,630 --> 00:53:50,020 >> Asinhrono pomeni, da bomo še naprej bo o našem poslovanju, 1090 00:53:50,020 --> 00:53:52,529 upodabljanje strani, in vam bomo poslali off zahtevo 1091 00:53:52,529 --> 00:53:54,570 to je nekako dogaja, da dogajajo v ozadju. 1092 00:53:54,570 --> 00:53:57,610 Mislim, da smo uporabili primer v predavanje kliče Rob in rekel, 1093 00:53:57,610 --> 00:53:59,980 hej, lahko to pogledate za mene in priti nazaj k meni, 1094 00:53:59,980 --> 00:54:02,870 v nasprotju s samo zame čakanje na telefonu. 1095 00:54:02,870 --> 00:54:07,020 Torej asinhrono pomeni, da se zgodi v ozadju stran od nas 1096 00:54:07,020 --> 00:54:08,676 vzporedno. 1097 00:54:08,676 --> 00:54:10,400 >> Great vprašanje. 1098 00:54:10,400 --> 00:54:11,830 Karkoli drugega? 1099 00:54:11,830 --> 00:54:12,330 Great. 1100 00:54:12,330 --> 00:54:15,020 Bomo skoči veliko več v asinhroni prijave z Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> OBČINSTVO: Ali JavaScript-- kjer ne pade z vzorcem-pogled-krmilnik? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: Velika vprašanje. 1103 00:54:19,620 --> 00:54:23,320 Kje JavaScript padec z vzorcem-pogled-krmilnik? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Mislim, da lahko fall-- tako da ne bomo ponavadi 1106 00:54:28,350 --> 00:54:31,340 radi Mljackati v to paradigma, ampak mislim, da bi rekel, 1107 00:54:31,340 --> 00:54:34,280 OK, tako da je JavaScript dejansko se dogaja, da se omogoči 1108 00:54:34,280 --> 00:54:37,587 nam za zbiranje podatkov, razlago podatkov, dejansko ne 1109 00:54:37,587 --> 00:54:38,920 Pomembnih stvari s podatki. 1110 00:54:38,920 --> 00:54:41,100 Na ta način, da je zelo nadzor podobno. 1111 00:54:41,100 --> 00:54:43,900 >> Ampak to tudi dogaja, da nam omogočajo, da prikazati stvari in tiskanja stvari. 1112 00:54:43,900 --> 00:54:47,021 Na ta način, da je zelo pogled podobno. 1113 00:54:47,021 --> 00:54:47,520 Ja. 1114 00:54:47,520 --> 00:54:51,710 Torej, to je nekako kot PHP v kjer je mogoče nekako biti oboje. 1115 00:54:51,710 --> 00:54:53,330 Dobro vprašanje. 1116 00:54:53,330 --> 00:54:55,209 Karkoli drugega? 1117 00:54:55,209 --> 00:54:56,000 V redu, super. 1118 00:54:56,000 --> 00:54:57,120 Premikanje desno skupaj. 1119 00:54:57,120 --> 00:54:59,110 >> Torej, poglejmo primer kako lahko uporabimo 1120 00:54:59,110 --> 00:55:02,250 JavaScript v enem od naših spletnih programov. 1121 00:55:02,250 --> 00:55:05,680 Tako da bom to upoštevati index.html s kupom HTML. 1122 00:55:05,680 --> 00:55:08,800 In stvar, ki sem vam želim osredotočiti na ta scenarij tag. 1123 00:55:08,800 --> 00:55:13,280 In to pravi, OK, želim teči nekaj JavaScript in tukaj je, kjer živi. 1124 00:55:13,280 --> 00:55:15,400 Živi v hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> In zelo podobno kot CSS, smo lahko dal JavaScript v HTML. 1126 00:55:21,120 --> 00:55:24,000 Zakaj bi mi želeli izločiti? 1127 00:55:24,000 --> 00:55:24,500 Ja. 1128 00:55:24,500 --> 00:55:25,486 >> OBČINSTVO: Lažje reportaža? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Ja. 1130 00:55:26,402 --> 00:55:28,450 To je lažje za uporabo po vsej različnih spletnih straneh. 1131 00:55:28,450 --> 00:55:29,980 To ohranja stvari čistejši. 1132 00:55:29,980 --> 00:55:32,090 To je samo dobra praksa. 1133 00:55:32,090 --> 00:55:32,590 Awesome. 1134 00:55:32,590 --> 00:55:33,930 Dober odgovor. 1135 00:55:33,930 --> 00:55:36,690 Tako dober, da se to dogaja biti naš index.html. 1136 00:55:36,690 --> 00:55:39,430 In potem je tukaj dol je Nostra mali JavaScript datotek. 1137 00:55:39,430 --> 00:55:42,410 >> In vse to pravi, je opozorilo Pozdravljen, svet. 1138 00:55:42,410 --> 00:55:46,040 Torej, kaj se zgodi, ko ta stran renders-- 1139 00:55:46,040 --> 00:55:49,680 tako da če greš v kakršni koli spletno stran to is-- vse, kar se bo zgodilo 1140 00:55:49,680 --> 00:55:53,330 se dogaja, da reči, OK, sem tekoč teči to kodo JavaScript. 1141 00:55:53,330 --> 00:55:56,370 In to kodo JavaScript Samo pravi alert Pozdravljen, svet. 1142 00:55:56,370 --> 00:55:59,090 Torej bom dobil to prijazno malo pop-up. 1143 00:55:59,090 --> 00:56:00,360 >> Cool? 1144 00:56:00,360 --> 00:56:04,746 To je nekako kot naš prvi JavaScript programa, naše Pozdravljen, svet. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Oglejmo si malo več o tem, kaj sintaksa JavaScript izgleda. 1147 00:56:12,190 --> 00:56:16,330 In še posebej, kaj je to primerjati z C in PHP, ki smo ga videli prej. 1148 00:56:16,330 --> 00:56:20,610 >> V JavaScript, da bomo imeli var, ime spremenljivke, in nato 1149 00:56:20,610 --> 00:56:21,690 njegova dejanska vrednost. 1150 00:56:21,690 --> 00:56:26,170 In mi ne določite vrsto, samo kot v PHP, vendar zelo drugače kot v C. 1151 00:56:26,170 --> 00:56:28,850 Torej, za primer, če smo želeli za shranjevanje vrednosti 50, 1152 00:56:28,850 --> 00:56:32,490 v C, bi morali reči, hej, C, hočem celo število, 1153 00:56:32,490 --> 00:56:35,076 Jaz grem, da ga pokličete i, in njegova vrednost je 50. 1154 00:56:35,076 --> 00:56:36,450 V PHP, je malo lažje. 1155 00:56:36,450 --> 00:56:41,880 Pravimo, hej, hočem spremenljivko Poklical sem in njegova vrednost je 50. 1156 00:56:41,880 --> 00:56:45,890 Zelo podobno, v JavaScript, smo reči, hej, hočem spremenljivka sem poklical, 1157 00:56:45,890 --> 00:56:47,080 njegova vrednost je 50. 1158 00:56:47,080 --> 00:56:52,140 Vsak poznejši čas, ki ga uporabljam i, ne rabim pisati var. 1159 00:56:52,140 --> 00:56:53,810 To je samo i od te točke naprej. 1160 00:56:53,810 --> 00:56:58,660 Na enak način, pri C, pri čemer ko rečemo int i, bomo šele raba i. 1161 00:56:58,660 --> 00:57:00,340 Cool? 1162 00:57:00,340 --> 00:57:01,800 V redu. 1163 00:57:01,800 --> 00:57:03,710 >> Selitev na zank, Na srečo, to je skoraj 1164 00:57:03,710 --> 00:57:06,720 poglej exactly-- Mislim, da oni povsem enako kot kaj 1165 00:57:06,720 --> 00:57:09,799 zanke se bo izgledal v nekaj podobnega C, kjer vaš zanke 1166 00:57:09,799 --> 00:57:11,840 se dogaja, da imajo tri parts-- za inicializacijo, 1167 00:57:11,840 --> 00:57:13,640 pogoj, in posodobitev. 1168 00:57:13,640 --> 00:57:15,340 Nekaj ​​časa zanka, je videti točno isto. 1169 00:57:15,340 --> 00:57:16,390 Pravkar smo izročiti to stanje. 1170 00:57:16,390 --> 00:57:18,264 >> In storila, medtem ko zanke, spet povsem enako. 1171 00:57:18,264 --> 00:57:20,190 Dajemo pa pogoj. 1172 00:57:20,190 --> 00:57:24,510 Recimo, da sem želel ponoviti over-- Želel sem narediti nekaj petkrat. 1173 00:57:24,510 --> 00:57:27,840 V C, lahko pišemo za init i enak 0. 1174 00:57:27,840 --> 00:57:30,480 i je manj kot 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 Edina razlika je v JavaScriptu, namesto da bi rekel int i enak 0, 1176 00:57:34,240 --> 00:57:36,820 rečemo var i enak 0. 1177 00:57:36,820 --> 00:57:38,370 Lepa. 1178 00:57:38,370 --> 00:57:41,320 To je edina razlika. 1179 00:57:41,320 --> 00:57:43,200 Vsa vprašanja v zvezi kaj od tega? 1180 00:57:43,200 --> 00:57:44,160 Da. 1181 00:57:44,160 --> 00:57:48,480 >> OBČINSTVO: Torej v PHP, je isto stvar, razen ampak kot spremenljivko? 1182 00:57:48,480 --> 00:57:49,564 Ali pa je bil, da na primer var? 1183 00:57:49,564 --> 00:57:50,480 HANNAH Blumberg: Ja. 1184 00:57:50,480 --> 00:57:52,310 Torej v PHP, da se dogaja da je znak za dolar. 1185 00:57:52,310 --> 00:57:59,450 Tako se dogaja, da $ i enakopravnimi 0, $ i je manj kot 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Great vprašanje. 1187 00:58:02,490 --> 00:58:04,570 >> Zdaj pa govoriti o Izjave funkcijo. 1188 00:58:04,570 --> 00:58:07,010 V C, ko smo razglašena za Funkcija, smo mu dali ime 1189 00:58:07,010 --> 00:58:08,490 in smo ji dali nekaj parametrov. 1190 00:58:08,490 --> 00:58:10,670 In na začetku, smo pisali vrsto. 1191 00:58:10,670 --> 00:58:12,440 V JavaScript, vse, kar smo morate storiti, je napisati 1192 00:58:12,440 --> 00:58:15,080 funkcija ključna beseda, ki pravi, hej, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Jaz sem na tem, da se opredeli funkcijo. 1194 00:58:16,570 --> 00:58:18,520 >> V tem primeru je ime vsoto. 1195 00:58:18,520 --> 00:58:20,820 In to traja dva argumenta, X in Y. 1196 00:58:20,820 --> 00:58:23,280 Opazimo, da nam ni mar o vrstah x in y. 1197 00:58:23,280 --> 00:58:26,280 In tako kot C, imamo ta vrnitev ključnih besed, 1198 00:58:26,280 --> 00:58:29,140 tako da lahko naredimo nekaj kot povratno x in y. 1199 00:58:29,140 --> 00:58:32,540 >> In zdaj, ko smo že napisal to prvo funkcija, lahko uporabite vsoto kjerkoli. 1200 00:58:32,540 --> 00:58:34,740 In to je povsem v redu. 1201 00:58:34,740 --> 00:58:37,530 Ena res kul stvar JavaScript, da je zelo razliko C 1202 00:58:37,530 --> 00:58:40,770 je, da lahko deluje se obravnavajo kot vrednosti. 1203 00:58:40,770 --> 00:58:43,895 Tako da lahko naredimo nekaj podobnega tukaj kjer mislim, da to zajema up-- 1204 00:58:43,895 --> 00:58:46,400 Jaz prikrili var vsoto part-- in smo pravkar rekel 1205 00:58:46,400 --> 00:58:49,850 Funkcija xy enaka povratni x plus y. 1206 00:58:49,850 --> 00:58:52,140 >> To je tisto, kar bi lahko imenovali anonimni funkcija. 1207 00:58:52,140 --> 00:58:53,920 To je funkcija brez imena. 1208 00:58:53,920 --> 00:58:56,290 Ker ta pravi funkcija Vsota, bla, bla, bla, 1209 00:58:56,290 --> 00:58:59,340 to bi šele rekli funkcijo. 1210 00:58:59,340 --> 00:59:02,020 Toda zdaj, čeprav imam ta anonimna funkcija, 1211 00:59:02,020 --> 00:59:03,630 da funkcija je res samo vrednost. 1212 00:59:03,630 --> 00:59:05,160 Mi lahko obravnavajo kot vrednoto. 1213 00:59:05,160 --> 00:59:10,180 >> Tako bomo lahko shranite v spremenljivko istega Tako bomo lahko shranite 50 v spremenljivko. 1214 00:59:10,180 --> 00:59:13,870 Tako lahko rečemo, OK, sem se želijo spremenljivka, se imenuje vsota, 1215 00:59:13,870 --> 00:59:16,011 in to je ta funkcija. 1216 00:59:16,011 --> 00:59:18,760 Torej ti dve stvari so dejansko boš naredil točno isto stvar, 1217 00:59:18,760 --> 00:59:21,576 ampak sintaksa je malo drugačna in vrsta zabavno noto. 1218 00:59:21,576 --> 00:59:22,076 Ja. 1219 00:59:22,076 --> 00:59:25,548 >> OBČINSTVO: Torej lahko pokličete funkcija, ki je bila anonimna z besedami, 1220 00:59:25,548 --> 00:59:28,244 vsota nosilci 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Ja. 1222 00:59:29,160 --> 00:59:32,280 Pokličete lahko to anonimni deluje na isti način. 1223 00:59:32,280 --> 00:59:33,350 Vi bi naredil vsoto (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 To bi bilo povsem v redu. 1226 00:59:38,200 --> 00:59:41,575 >> Če nisem naredil var vsota enaka funkcija, če sem izbrisan 1227 00:59:41,575 --> 00:59:45,480 this-- Vem, da je na moji strani, ampak se pretvarjamo, sem izbrisal this-- nato 1228 00:59:45,480 --> 00:59:46,964 to funkcijo je nekako le šlo. 1229 00:59:46,964 --> 00:59:49,630 Nikoli ne moreš uporabiti še enkrat, ker nimate ime za to. 1230 00:59:49,630 --> 00:59:53,497 Težko je, da se nanašajo na nekaj Če ne veste, kaj bi poklicati. 1231 00:59:53,497 --> 00:59:54,080 Dobro vprašanje. 1232 00:59:54,080 --> 00:59:54,580 Ja. 1233 00:59:54,580 --> 00:59:59,580 >> OBČINSTVO: Lahko reference vsoto v drugih krajev z vrednostjo x plus y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Lahko referenčna vsota v drugih krajih 1235 01:00:01,940 --> 01:00:03,360 z vrednostjo x plus y? 1236 01:00:03,360 --> 01:00:05,130 Nisem povsem prepričan, kaj misliš. 1237 01:00:05,130 --> 01:00:10,582 >> OBČINSTVO: Torej vaš mimo semi-anonimen funkcija je vsota je enaka to 1238 01:00:10,582 --> 01:00:14,452 Funkcija anonimna, zato vsota je Sedaj spremenljivka, ki ste can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: Right. 1240 01:00:15,410 --> 01:00:18,980 Torej vsota je spremenljivka, ampak to je actually-- 1241 01:00:18,980 --> 01:00:23,770 tako da vsota je spremenljivka, katere vrednost je funkcija. 1242 01:00:23,770 --> 01:00:27,030 Tako da je funkcija, ki je nekako čudna stvar, da zaviti svojo glavo okoli 1243 01:00:27,030 --> 01:00:29,880 saj smo se igrali z C in ne morete narediti v C. 1244 01:00:29,880 --> 01:00:32,679 Zdaj pa lahko rečemo sešteti enak način smo lahko pokličete vsoto tukaj. 1245 01:00:32,679 --> 01:00:33,220 OBČINSTVO: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Ja. 1247 01:00:33,970 --> 01:00:34,553 Dobro vprašanje. 1248 01:00:34,553 --> 01:00:35,438 Ja. 1249 01:00:35,438 --> 01:00:39,862 >> OBČINSTVO: Torej mi ne uporabljajte prototipe v PHP ali JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: Ne, ne potrebujejo za uporabo prototipov, 1251 01:00:42,070 --> 01:00:43,880 še posebej v JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Torej ena slaba praksa stvar, ki sem reči, ki jih ne bi smeli početi 1253 01:00:49,380 --> 01:00:52,620 je nimate pisati var i = 50. 1254 01:00:52,620 --> 01:00:54,840 Lahko samo začeti početje i = 50. 1255 01:00:54,840 --> 01:00:57,490 In bi samo, da i globalna spremenljivka. 1256 01:00:57,490 --> 01:01:00,550 >> To je zelo slaba praksa, da nikoli ne reci to izrecno var i, 1257 01:01:00,550 --> 01:01:01,800 ampak to je nekaj, kar lahko storite. 1258 01:01:01,800 --> 01:01:03,591 Tolmač ni bo kričati na vas. 1259 01:01:03,591 --> 01:01:05,920 JavaScript je precej podobno, lahko narediš, kar hočeš. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Oh, oprosti. 1262 01:01:09,800 --> 01:01:10,300 Tam je dva. 1263 01:01:10,300 --> 01:01:12,150 V oranžnih hlačah. 1264 01:01:12,150 --> 01:01:13,190 Kar daj. 1265 01:01:13,190 --> 01:01:14,390 >> OBČINSTVO: Ne, greš prvi. 1266 01:01:14,390 --> 01:01:16,765 >> OBČINSTVO: Ne, jaz sem samo rekel, Nisem imel mojo roko. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 V REDU. 1269 01:01:20,748 --> 01:01:26,604 Torej, če ste bili, da pokličete da prvič, zdaj povzamemo, 1270 01:01:26,604 --> 01:01:29,864 pravimo, da na enak način, x, y, tako kot vsak čas? 1271 01:01:29,864 --> 01:01:30,780 HANNAH Blumberg: Ja. 1272 01:01:30,780 --> 01:01:32,572 Torej ti dve v bistvu narediti isto stvar. 1273 01:01:32,572 --> 01:01:35,113 OBČINSTVO: In kakšna je prednost z uporabo enega ali drugega? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg: Ne prednost z uporabo ene ali druge. 1275 01:01:37,500 --> 01:01:40,080 Želela sem, da vam pokažem dva Različni kosi sintakse. 1276 01:01:40,080 --> 01:01:42,770 Veliko krat, kjer anonimna Funkcije imajo svoj namen 1277 01:01:42,770 --> 01:01:48,220 je, če je argument v drugo Funkcija mora biti funkcija. 1278 01:01:48,220 --> 01:01:50,600 In bomo videli, da je v samo druga z Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Torej, če to ni nobenega smisla, ga shranite v zadnji del glave. 1280 01:01:53,577 --> 01:01:55,660 To je, če anonimni Funkcija lahko koristno 1281 01:01:55,660 --> 01:01:58,284 ker to ni res vredno ji daje ime, saj smo pravkar 1282 01:01:58,284 --> 01:01:59,443 tekoč, da ga uporabite enkrat. 1283 01:01:59,443 --> 01:02:00,370 Ja. 1284 01:02:00,370 --> 01:02:03,635 >> OBČINSTVO: Če sta x in y sprememba kasneje dalje bo povzamemo spremenijo tudi? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: Če sta x in y sprememba kasneje, bo povzamemo spremenijo tudi? 1286 01:02:06,510 --> 01:02:08,840 Torej, to je pravzaprav sem mislim, nekaj, kar je, 1287 01:02:08,840 --> 01:02:12,260 še enkrat, samo počuti zelo razlikuje iz C. To ni vrednost. 1288 01:02:12,260 --> 01:02:13,620 To ni 5. 1289 01:02:13,620 --> 01:02:15,550 To je samo funkcija sama. 1290 01:02:15,550 --> 01:02:19,110 Torej, takoj, ko se jim zdi, da parametri, potem boste dejansko izračunati vrednost. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: In potem lahko pokličete funkcijo 1292 01:02:21,193 --> 01:02:23,272 in jo uporabite, da bi dobili nekaj vrednosti. 1293 01:02:23,272 --> 01:02:24,230 HANNAH Blumberg: Right. 1294 01:02:24,230 --> 01:02:25,250 Točno tako. 1295 01:02:25,250 --> 01:02:25,863 Ja. 1296 01:02:25,863 --> 01:02:27,946 >> OBČINSTVO: Torej, če vas le ga shranite v spremenljivko, 1297 01:02:27,946 --> 01:02:31,430 kot var x enaka vsoti dveh values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH Blumberg: Ja. 1299 01:02:32,420 --> 01:02:35,320 Torej si lahko samo naredil var vsoto enaka vsoti dveh vrednosti. 1300 01:02:35,320 --> 01:02:37,670 Ja. 1301 01:02:37,670 --> 01:02:38,680 Vsa druga vprašanja? 1302 01:02:38,680 --> 01:02:39,642 Ja. 1303 01:02:39,642 --> 01:02:42,047 >> OBČINSTVO: Ampak bi, da je zmesti vsoto in vsoto? 1304 01:02:42,047 --> 01:02:45,062 Všeč, če pokličete svojo spremenljivo vsoto, bi pokličete funkcijo vsoto? 1305 01:02:45,062 --> 01:02:45,895 HANNAH Blumberg: Mm. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Če ste naredili nekaj podobno, vsota enaka vsota 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> OBČINSTVO: Ja. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: Verjamem, da bi prepiše vrednost vsote. 1310 01:02:56,465 --> 01:02:59,290 Torej, še ena zanimiva stvar JavaScript 1311 01:02:59,290 --> 01:03:02,950 je, da lahko posamezno variabilno sprejmejo na kup različnih vrst. 1312 01:03:02,950 --> 01:03:03,790 Slaba praksa. 1313 01:03:03,790 --> 01:03:06,280 Vam ni treba storiti nekaj všeč, kar ste pravkar povedali. 1314 01:03:06,280 --> 01:03:10,240 >> Toda v C, če se i nastavljena enaka celo število, 1315 01:03:10,240 --> 01:03:13,570 vemo, da je nikoli ne bo postal niz. 1316 01:03:13,570 --> 01:03:15,670 To pa ne velja v JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Ja, dobro vprašanje. 1318 01:03:17,770 --> 01:03:20,151 Karkoli drugega? 1319 01:03:20,151 --> 01:03:20,650 V redu. 1320 01:03:20,650 --> 01:03:21,850 Narediti vse ravno ob pravem času. 1321 01:03:21,850 --> 01:03:23,050 Vodenje dogaja. 1322 01:03:23,050 --> 01:03:25,200 V redu. 1323 01:03:25,200 --> 01:03:27,780 >> Če pogledamo niz v JavaScript, tukaj je 1324 01:03:27,780 --> 01:03:30,250 hiter primer niz nizov. 1325 01:03:30,250 --> 01:03:31,967 In nizi lahko rastejo dinamično. 1326 01:03:31,967 --> 01:03:33,675 Oni nimajo fiksna velikost enak način 1327 01:03:33,675 --> 01:03:37,990 da delajo v C. Mi lahko dostop do elementi s samo oglatem oklepaju. 1328 01:03:37,990 --> 01:03:41,720 >> Ki je videti zelo podobna PHP in veliko kot C, kjer bomo lahko rekli, v tem primeru, 1329 01:03:41,720 --> 01:03:48,360 če sem hotel besedo JavaScript, jaz bi ne arr oglate oklepaje z 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 In potem, če se spomnite, v C, ko smo je želel, da bi dobili dolžina array, 1332 01:03:55,390 --> 01:03:56,820 je bilo res nadležno. 1333 01:03:56,820 --> 01:03:58,460 Toda v JavaScript, super enostavno. 1334 01:03:58,460 --> 01:03:59,910 Vse, kar delamo, .length. 1335 01:03:59,910 --> 01:04:01,120 Daje dolžin. 1336 01:04:01,120 --> 01:04:01,892 To je to. 1337 01:04:01,892 --> 01:04:03,140 >> OBČINSTVO: To je preprosta. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Ja, naredi vaše življenje veliko lažje. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, object-- ni. 1341 01:04:11,560 --> 01:04:15,480 Objekti v JavaScript občutek veliko, kot konstruktov v C 1342 01:04:15,480 --> 01:04:18,280 in asociativne nize v PHP. 1343 01:04:18,280 --> 01:04:20,270 Torej, kaj smo videla Veliko je JSON, ki 1344 01:04:20,270 --> 01:04:23,150 stojala za JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 In to je v bistvu način strukturiranja naše podatke. 1346 01:04:25,550 --> 01:04:27,880 >> Torej, poglejmo primer, verjetno najlažji. 1347 01:04:27,880 --> 01:04:32,540 Torej, tukaj je primer predmeta ki shranjuje razred, CS50. 1348 01:04:32,540 --> 01:04:37,790 In ko rečem razred, mislim seveda, ne like-- ja, seveda, CS50. 1349 01:04:37,790 --> 01:04:40,730 In videli boste, da Vse v predmetu 1350 01:04:40,730 --> 01:04:43,526 se bo vsebovala V zavitimi oklepaji. 1351 01:04:43,526 --> 01:04:48,260 >> In začnemo povezati imena polj ali tipke z različnimi vrednostmi. 1352 01:04:48,260 --> 01:04:52,920 Tako da lahko začnete, da vidite, kako ta vrsta počuti kot asociativni niz v PHP. 1353 01:04:52,920 --> 01:04:57,450 Torej bomo povezali polja ali Ime ključa, seveda z nizom, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Bomo imeli inštruktorja. 1356 01:04:59,940 --> 01:05:00,940 Bomo imeli TFS. 1357 01:05:00,940 --> 01:05:05,240 Bomo morali število psets in bomo zabeležili. 1358 01:05:05,240 --> 01:05:10,720 In ena kul stvar je tudi omeniti vse Te stvari imajo različne vrste, 1359 01:05:10,720 --> 01:05:12,020 in to je popolnoma v redu. 1360 01:05:12,020 --> 01:05:15,330 >> To je v redu za objekt, v resnici, to je verjetno pričakovati za objekt 1361 01:05:15,330 --> 01:05:19,620 da imajo kombinacijo strun in številke in Booleans in nizi 1362 01:05:19,620 --> 01:05:23,420 in karkoli drugega, boste morda želite imeti v vašem objektu. 1363 01:05:23,420 --> 01:05:28,570 In ugotavljajo, da se ti bo imena ali ključe, nato pa smo pravkar 1364 01:05:28,570 --> 01:05:30,300 nastavljen je enaka z malo debelo črevo. 1365 01:05:30,300 --> 01:05:32,015 >> OBČINSTVO: Kaj pravzaprav JSON pomeni? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: Kaj pravzaprav JSON pomeni? 1367 01:05:33,890 --> 01:05:36,470 JSON samo stoji za JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 To je samo način oblikovanja. 1369 01:05:38,430 --> 01:05:40,040 Ja. 1370 01:05:40,040 --> 01:05:41,800 To je način za oblikovanje naše podatke. 1371 01:05:41,800 --> 01:05:43,620 >> V C, je konstruktov. 1372 01:05:43,620 --> 01:05:45,800 V PHP, je asociativne nize. 1373 01:05:45,800 --> 01:05:47,120 V JavaScript, imamo predmete. 1374 01:05:47,120 --> 01:05:48,969 >> OBČINSTVO: Torej CS50 je objekt? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 je predmet v tem primeru. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Zdaj, kaj počnemo pravzaprav dostop ta polja ali spremeniti ta polja. 1378 01:05:57,880 --> 01:06:03,920 Recimo, da smo se odločili, da si želel eno manj pset ta semester. 1379 01:06:03,920 --> 01:06:06,300 Namesto devetih, smo pravkar dogaja, da imajo osem. 1380 01:06:06,300 --> 01:06:08,240 Kako bi spremenili to? 1381 01:06:08,240 --> 01:06:09,436 >> Oh, napačen način. 1382 01:06:09,436 --> 01:06:11,060 Obstajata dva načina, da to lahko storimo. 1383 01:06:11,060 --> 01:06:13,490 Številka ena je s piko zapis in številka dve 1384 01:06:13,490 --> 01:06:15,750 je z oglati oklepaj zapisu. 1385 01:06:15,750 --> 01:06:19,720 Tako, na primer, če je I želel spremeniti ali dostopa 1386 01:06:19,720 --> 01:06:26,820 polje psets v našem CS50 objekta, kaj bi naredil, je CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 tako ime objekta piko ime polja ali ključa. 1388 01:06:30,770 --> 01:06:37,120 >> Zelo podobno, to je točno ekvivalent narediti CS50, in nato 1389 01:06:37,120 --> 01:06:42,050 z oglatimi oklepaji, psets. 1390 01:06:42,050 --> 01:06:42,837 Cool? 1391 01:06:42,837 --> 01:06:44,298 Ja. 1392 01:06:44,298 --> 01:06:47,707 >> OBČINSTVO: Torej je JSON tehnično JavaScript vedno, 1393 01:06:47,707 --> 01:06:51,814 čeprav v psets smo ga izločiti [neslišno]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: Seveda. 1395 01:06:52,730 --> 01:06:56,290 Torej, vprašanje je, ali JavaScript in JSON enakovredni? 1396 01:06:56,290 --> 01:07:00,750 Torej JSON je zapis, v bistvu način, da smo napisali 1397 01:07:00,750 --> 01:07:02,700 predmet iz JavaScriptom. 1398 01:07:02,700 --> 01:07:05,190 Torej oni niso povsem enaka. 1399 01:07:05,190 --> 01:07:08,950 >> Jaz bi rekel, JavaScript, tam so predmeti v JavaScriptu. 1400 01:07:08,950 --> 01:07:12,590 JSON traja tiste predmete in jih natisne in jih prikaže 1401 01:07:12,590 --> 01:07:15,160 ali jih shranjuje na lep način. 1402 01:07:15,160 --> 01:07:18,110 Torej JSON ni programski jezik, tako, da je JavaScript. 1403 01:07:18,110 --> 01:07:20,900 To je samo zapis za naši predmeti v JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Ja. 1405 01:07:21,400 --> 01:07:24,144 >> OBČINSTVO: Torej, kaj točno [Neslišno] dokončati? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: Seveda. 1407 01:07:25,060 --> 01:07:27,727 Torej, to dejansko ne naredi ničesar. 1408 01:07:27,727 --> 01:07:28,935 To je samo način za dostop. 1409 01:07:28,935 --> 01:07:31,393 Torej, recimo, da smo želeli spremeniti število problematičnih sklopov 1410 01:07:31,393 --> 01:07:32,450 od devet do osem. 1411 01:07:32,450 --> 01:07:34,383 Kaj moramo storiti, je narediti nekaj kot CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Ja, veliko vprašanje. 1414 01:07:39,400 --> 01:07:40,733 To je samo, da vam pokaže, sintakso. 1415 01:07:40,733 --> 01:07:43,620 Dejansko ne storiti ničesar koristnega. 1416 01:07:43,620 --> 01:07:46,085 Kakšno vprašanje? 1417 01:07:46,085 --> 01:07:48,210 Premikanje desno skupaj. 1418 01:07:48,210 --> 01:07:51,960 >> Zato si oglejmo hitro primer, kako JavaScript deluje, ker sem ti rekel, da 1419 01:07:51,960 --> 01:07:55,170 počne vse te kul stvari in nam omogoča, da spremenite spletne strani. 1420 01:07:55,170 --> 01:07:56,970 Naj jo dejansko videli v akciji. 1421 01:07:56,970 --> 01:07:59,850 Torej bi, na primer, to datoteko HTML. 1422 01:07:59,850 --> 01:08:04,350 >> In stvar, želim si, da se osredotoči na je to posebno oznako, ki je gumb, 1423 01:08:04,350 --> 01:08:06,182 z id search_button. 1424 01:08:06,182 --> 01:08:08,670 To je samo na strani. 1425 01:08:08,670 --> 01:08:10,690 Zdaj pa poglejmo, kaj bomo lahko dejansko narediti. 1426 01:08:10,690 --> 01:08:12,560 >> No, recimo, ko kliknete ta gumb, 1427 01:08:12,560 --> 01:08:16,010 želimo narediti alert-- boste kliknili na gumb. 1428 01:08:16,010 --> 01:08:17,840 Pa poglejmo, kako lahko to storim. 1429 01:08:17,840 --> 01:08:23,869 Torej window.onload-- to ni nekaj, ki ste jih videli v razredu, zato 1430 01:08:23,869 --> 01:08:26,180 ne bo treba, da ga pozna za kviz. 1431 01:08:26,180 --> 01:08:33,660 Ampak to v bistvu pravi, OK, call Ta funkcija, ko je okno obremenitve. 1432 01:08:33,660 --> 01:08:35,080 >> Torej, to je le nekako nastavitvenem kode. 1433 01:08:35,080 --> 01:08:36,390 Ne skrbi toliko o tem. 1434 01:08:36,390 --> 01:08:39,170 Kaj hočem, da se osredotoči na, je tu. 1435 01:08:39,170 --> 01:08:44,020 Pravimo var Searchbutton enaka document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Torej, kot ste lahko uganiti, kaj to počne je pravi, 1437 01:08:46,450 --> 01:08:50,920 OK, pojdite poiščite element z ID search_button. 1438 01:08:50,920 --> 01:08:52,790 In zdaj imamo, da Dejanski element in sem 1439 01:08:52,790 --> 01:08:56,279 tekoč, da ga shranite v spremenljivka Searchbutton. 1440 01:08:56,279 --> 01:09:00,651 In zdaj bomo lahko dejansko uporablja ta element in ga spremeniti ali dostop do svojih vrednot, 1441 01:09:00,651 --> 01:09:01,359 stvari, kot da. 1442 01:09:01,359 --> 01:09:04,649 Mi lahko dejansko začeli sodelovati s spletno stranjo. 1443 01:09:04,649 --> 01:09:10,330 >> Torej, tukaj sem rekel, v redu, sedaj, ko imam da gumb, ko je kliknil, 1444 01:09:10,330 --> 01:09:12,859 pokličite to anonimno funkcijo. 1445 01:09:12,859 --> 01:09:16,811 Torej, to je, če anonimni Funkcije postal koristen. 1446 01:09:16,811 --> 01:09:18,060 In kaj je funkcija storiti? 1447 01:09:18,060 --> 01:09:20,529 No, to samo zahteva ta Funkcija opozarjanja in pravi, 1448 01:09:20,529 --> 01:09:22,910 boste kliknili na gumb Iskanje. 1449 01:09:22,910 --> 01:09:29,670 >> Torej, kaj se bo zgodilo, če grem kamorkoli to HTML živi in ​​sem kliknite gumb, 1450 01:09:29,670 --> 01:09:33,729 Jaz bom dobil fancy malo opozorilo ki pravi, da ste kliknili na gumb. 1451 01:09:33,729 --> 01:09:40,710 Torej stvari, da se osredotoči na here-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 dobi posebno HTML element z navedenim ID-jem. 1453 01:09:44,960 --> 01:09:48,529 In zdaj smo lahko nastavite kaj bi se zgodilo, če 1454 01:09:48,529 --> 01:09:50,702 da zlasti element je kliknil. 1455 01:09:50,702 --> 01:09:52,670 >> OBČINSTVO: Moramo dati vse, da se? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg: Oprostite? 1457 01:09:53,162 --> 01:09:55,130 >> OBČINSTVO: Ali moramo fizično kodo vse to? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: Ali moramo fizično kodo vse to? 1459 01:09:56,340 --> 01:09:56,839 Da. 1460 01:09:56,839 --> 01:09:58,120 Ali ni ta vrsta siten? 1461 01:09:58,120 --> 01:10:00,032 To je veliko kode. 1462 01:10:00,032 --> 01:10:01,574 >> OBČINSTVO: Lahko uvozite nekaj. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: Right. 1464 01:10:02,532 --> 01:10:03,610 Mi lahko uporabite nekaj. 1465 01:10:03,610 --> 01:10:08,140 In v particular-- oh, to je mi pravi, moram naučiti poglavje. 1466 01:10:08,140 --> 01:10:11,061 Še zlasti, kaj je uporabite knjižnico jQuery, 1467 01:10:11,061 --> 01:10:13,060 ker je to res dolgo in zelo nadležno 1468 01:10:13,060 --> 01:10:16,860 in želim, da bi lahko poenostavili in da bo krajše in lažje pisati. 1469 01:10:16,860 --> 01:10:19,810 >> Torej jQuery je knjižnica JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Torej JavaScript je programiranje jezik; jQuery je knjižnica. 1471 01:10:24,930 --> 01:10:27,190 In to naredi kup lažje stvari. 1472 01:10:27,190 --> 01:10:33,230 To naredi spreminjajo in gredo čez HTML dokument, veliko lažje. 1473 01:10:33,230 --> 01:10:35,030 >> To naredi dogodkov ravnanje lažje. 1474 01:10:35,030 --> 01:10:37,580 To naredi animacijo lažje in ga naredi Ajax lažje. 1475 01:10:37,580 --> 01:10:40,140 Torej, kaj je skočiti v dveh te stvari zdaj. 1476 01:10:40,140 --> 01:10:40,900 Oprostite. 1477 01:10:40,900 --> 01:10:42,620 Preden smo storili, nekateri osnovno sintakso. 1478 01:10:42,620 --> 01:10:46,870 >> To je tisto, kar najbolj klice knjižnica jQuery izgledal. 1479 01:10:46,870 --> 01:10:50,520 Mi uporabljamo to dolar sign-- ni povezave znamenje PHP, 1480 01:10:50,520 --> 01:10:56,030 Samo inconvenient-- ime selektor, pika, nato pa dejanje. 1481 01:10:56,030 --> 01:10:58,860 Torej, poglejmo nekaj konkretni primeri, da je. 1482 01:10:58,860 --> 01:11:02,980 >> Torej, to je pravzaprav enaka koda iz dogodka diapozitiva. 1483 01:11:02,980 --> 01:11:08,740 Torej to dolgo, grda stvar postane to veliko lepše, manjša stvar. 1484 01:11:08,740 --> 01:11:10,370 Torej, poskusimo, da bi prekinil to dol. 1485 01:11:10,370 --> 01:11:17,090 Ta pravi, OK, jQuery-- to dolarja sign-- jQuery, najti mi okno. 1486 01:11:17,090 --> 01:11:18,480 Tako da je selektor. 1487 01:11:18,480 --> 01:11:21,800 >> Ko to obilje, pokličite to funkcijo. 1488 01:11:21,800 --> 01:11:23,880 Torej, to je vse, kar je notri. 1489 01:11:23,880 --> 01:11:24,380 V REDU. 1490 01:11:24,380 --> 01:11:25,740 Doslej je tako dobro? 1491 01:11:25,740 --> 01:11:26,750 V redu. 1492 01:11:26,750 --> 01:11:32,970 >> Zdaj, jQuery, najti me je stvar z ID search_button. 1493 01:11:32,970 --> 01:11:36,090 In kaj je kliknil, pokličite to funkcijo. 1494 01:11:36,090 --> 01:11:37,900 In potem ta funkcija je povsem enako. 1495 01:11:37,900 --> 01:11:41,052 Pač malo opozorila, boste kliknili na gumb Iskanje. 1496 01:11:41,052 --> 01:11:42,650 >> Torej, to je res lepo. 1497 01:11:42,650 --> 01:11:46,260 Res kondenzira in poenostavlja našo kodo. 1498 01:11:46,260 --> 01:11:49,030 Kako sem vedel, da je to je ID search_button 1499 01:11:49,030 --> 01:11:50,960 in ne kot razred search_button? 1500 01:11:50,960 --> 01:11:52,024 >> OBČINSTVO: hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Ja. 1502 01:11:52,940 --> 01:11:56,450 Ta simbol hash, to je tako kot CSS. 1503 01:11:56,450 --> 01:12:00,080 Torej, ne pozabite, s CSS, ko smo je želel, da izberete nekaj po ID, 1504 01:12:00,080 --> 01:12:01,590 smo uporabili znak za funt. 1505 01:12:01,590 --> 01:12:05,400 In ko smo želeli, da izberete Nekaj ​​po razredu, ki jih uporabljamo na piko. 1506 01:12:05,400 --> 01:12:06,870 Great. 1507 01:12:06,870 --> 01:12:08,230 Ima smisel? 1508 01:12:08,230 --> 01:12:11,500 Torej je jQuery naj bi samo, da naše življenje lažje. 1509 01:12:11,500 --> 01:12:12,000 Ja. 1510 01:12:12,000 --> 01:12:15,660 >> OBČINSTVO: Torej sem malo zmeden kako je anonimna funkcija deluje. 1511 01:12:15,660 --> 01:12:19,027 Ali ste poimenovati anonymouse funkcija deluje? 1512 01:12:19,027 --> 01:12:20,594 Kako se imenuje? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: Seveda. 1514 01:12:21,510 --> 01:12:25,812 Torej funkcija je le ključna beseda, ki pravi, da sem o tem, da se opredeli funkcijo. 1515 01:12:25,812 --> 01:12:26,520 OBČINSTVO: Oh, v redu. 1516 01:12:26,520 --> 01:12:27,353 HANNAH Blumberg: OK? 1517 01:12:27,353 --> 01:12:32,120 In potem smo jo prenese kot argument to-- vzemimo 1518 01:12:32,120 --> 01:12:37,040 Ta notranja one-- funkcijo klik. 1519 01:12:37,040 --> 01:12:39,420 Torej, ja, da te funkcije, ta anonimna funkcija, 1520 01:12:39,420 --> 01:12:40,910 postane dejanski argument. 1521 01:12:40,910 --> 01:12:43,632 Torej, ne pozabite, v JavaScript, smo lahko zdravi funkcij kot vrednote. 1522 01:12:43,632 --> 01:12:44,340 OBČINSTVO: Oh, v redu. 1523 01:12:44,340 --> 01:12:45,256 HANNAH Blumberg: Ja. 1524 01:12:45,256 --> 01:12:46,035 Všeč mi je, da je "oh". 1525 01:12:46,035 --> 01:12:47,490 Lepo. 1526 01:12:47,490 --> 01:12:49,915 Druga vprašanja? 1527 01:12:49,915 --> 01:12:50,505 Čas? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Dobro. 1529 01:12:51,380 --> 01:12:52,760 Dobro. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Nekateri hitro uporabno jQuery. 1532 01:12:55,720 --> 01:12:57,559 Jaz ne bom šel skozi vse to. 1533 01:12:57,559 --> 01:12:59,350 Ti preparati bodo do spletnega malo 1534 01:12:59,350 --> 01:13:02,040 kasneje, tako da lahko preverite ven malo kasneje. 1535 01:13:02,040 --> 01:13:07,120 Ampak v bistvu, splošno Vzorec ima, kjer smo rekli, 1536 01:13:07,120 --> 01:13:11,510 OK, hej, jQuery, tukaj je moj selektor, potem tukaj je dejanje. 1537 01:13:11,510 --> 01:13:15,940 In lahko narediš stvari, kot so dostop na Vrednost obliki, dostop do nekaj HTML, 1538 01:13:15,940 --> 01:13:19,195 nadzor, kaj se zgodi, ko uporabnik predloži obrazec, takšne stvari. 1539 01:13:19,195 --> 01:13:20,106 Da. 1540 01:13:20,106 --> 01:13:22,090 >> OBČINSTVO: Torej, v izpit, bomo potrebovali 1541 01:13:22,090 --> 01:13:25,066 vedeti zelo veliko iz dokumentacija jQuery. 1542 01:13:25,066 --> 01:13:31,018 Torej, glede na to, smo se copy / paste jQuery Dokumentacija za naše goljufija stanja, 1543 01:13:31,018 --> 01:13:32,506 Kje je črta? 1544 01:13:32,506 --> 01:13:33,957 Like koliko jih moramo vedeti? 1545 01:13:33,957 --> 01:13:35,290 HANNAH Blumberg: Velika vprašanje. 1546 01:13:35,290 --> 01:13:37,765 Vprašanje je, v bistvu saj vas 1547 01:13:37,765 --> 01:13:41,330 ne morejo dostopati do dokumentacije jQuery med preskusom, koliko jih je treba 1548 01:13:41,330 --> 01:13:41,830 vedeli? 1549 01:13:41,830 --> 01:13:45,540 Mi ne bi pričakoval, da pridejo z nekaj naključno funkcijo 1550 01:13:45,540 --> 01:13:47,240 da bi vas pričakujemo na Googlu. 1551 01:13:47,240 --> 01:13:52,930 >> Stvari, ki so pošteno igro so Jaz bi pravijo le nekakšno splošno sintakso, 1552 01:13:52,930 --> 01:13:58,310 da lahko izbere po ID in ga class-- zato tako kot CSS. 1553 01:13:58,310 --> 01:14:01,876 In potem dejanske funkcije themself, bomo verjetno vam povem. 1554 01:14:01,876 --> 01:14:02,376 Ja. 1555 01:14:02,376 --> 01:14:05,591 >> OBČINSTVO: Torej, če izberete po razredu bi pomenilo piko. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Ja, točno. 1557 01:14:06,840 --> 01:14:07,340 Dobro. 1558 01:14:07,340 --> 01:14:10,461 Ko izberete glede na razred, da se dogaja se dot namesto funta znaka. 1559 01:14:10,461 --> 01:14:10,960 Da. 1560 01:14:10,960 --> 01:14:12,710 >> OBČINSTVO: Bi si iti čez razlike 1561 01:14:12,710 --> 01:14:14,310 med izbiro po ID in po razredu? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: Seveda. 1563 01:14:14,560 --> 01:14:17,510 Razlika med selekcionira ID in izbiranje po razredu. 1564 01:14:17,510 --> 01:14:20,685 Tako kot je dejal Maria malo prej, obstaja 1565 01:14:20,685 --> 01:14:26,280 lahko samo eden HTML element z navedenim ID-jem, medtem ko razred, 1566 01:14:26,280 --> 01:14:29,740 nam omogoča, da skupina kup različnih elementov skupaj, 1567 01:14:29,740 --> 01:14:34,300 tako stvari, ki so povezane, vendar ne povsem enako. 1568 01:14:34,300 --> 01:14:35,685 Ali, da je odgovor na vprašanje? 1569 01:14:35,685 --> 01:14:36,200 Awesome. 1570 01:14:36,200 --> 01:14:37,194 Da. 1571 01:14:37,194 --> 01:14:40,680 >> OBČINSTVO: Kaj pa, če imate več stvari, ki so v istem razredu? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Kaj se zgodi, Če imate več stvari, ki 1573 01:14:42,150 --> 01:14:43,280 sta enaka razred? 1574 01:14:43,280 --> 01:14:45,829 Tako, na primer, če smo samo z uporabo čistega JavaScript, 1575 01:14:45,829 --> 01:14:48,120 želimo narediti nekaj podobnega document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 In potem, kaj to dejansko počne se vrne niz elementov. 1578 01:14:56,320 --> 01:14:59,517 >> In boste morali bodisi ponoviti čez jih ali najti katero želite. 1579 01:14:59,517 --> 01:15:01,350 To se ne dogaja, da si en sam element. 1580 01:15:01,350 --> 01:15:03,450 To se dogaja, da vam array elementov. 1581 01:15:03,450 --> 01:15:05,280 Great vprašanje. 1582 01:15:05,280 --> 01:15:07,700 Karkoli drugega? 1583 01:15:07,700 --> 01:15:09,520 Awesome. 1584 01:15:09,520 --> 01:15:12,860 >> Zato mislim, če ste seznanjeni z vsaka jQuery ste videli v pset, 1585 01:15:12,860 --> 01:15:15,600 bi morali biti na dobri poti. 1586 01:15:15,600 --> 01:15:16,325 Vprašanje? 1587 01:15:16,325 --> 01:15:17,610 Oh, ne. 1588 01:15:17,610 --> 01:15:18,859 Res moram naučiti. 1589 01:15:18,859 --> 01:15:19,358 Sprostite se. 1590 01:15:19,358 --> 01:15:20,035 To bo v redu. 1591 01:15:20,035 --> 01:15:20,660 Jaz bom tam. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Spregovorimo o Ajax. 1594 01:15:26,870 --> 01:15:31,350 Torej Ajax se bo a-- dobro, Začnimo s tem, kar je kratica za. 1595 01:15:31,350 --> 01:15:32,350 To je kratica. 1596 01:15:32,350 --> 01:15:35,855 To pomeni asinhroni JavaScript in XML. 1597 01:15:35,855 --> 01:15:39,800 In XML je v bistvu se bo [Neslišno] z vrsto naših podatkov. 1598 01:15:39,800 --> 01:15:42,100 Vendar smo dejansko ne uporablja XML. 1599 01:15:42,100 --> 01:15:43,430 Namesto tega smo šele raba JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Torej v bistvu, to je nekaj data-- asinhroni, JavaScript, in podatki, 1601 01:15:48,350 --> 01:15:50,040 V tem primeru, JSON. 1602 01:15:50,040 --> 01:15:52,820 In naš cilj, kot smo omenili malo prej, 1603 01:15:52,820 --> 01:15:56,880 je, da se lahko vložijo zahteva, da se prošnja storiti 1604 01:15:56,880 --> 01:16:00,700 njegova stvar v ozadju, vendar še naprej 1605 01:16:00,700 --> 01:16:02,550 storiti vse, kar smo se nameravajo storiti. 1606 01:16:02,550 --> 01:16:06,650 In potem, ko je ta informacija pripravljen, potem bomo to vključiti. 1607 01:16:06,650 --> 01:16:08,470 >> Torej, poglejmo, kaj je to dejansko izgleda. 1608 01:16:08,470 --> 01:16:11,210 In to, morate biti malo pozna 1609 01:16:11,210 --> 01:16:13,680 od pset8, tista, ki ste jo pravkar obrnil. 1610 01:16:13,680 --> 01:16:16,200 Torej, tukaj je veljavna jQuery Funkcija, ki smo morda 1611 01:16:16,200 --> 01:16:18,250 želeli vedeti about-- to znak za dolar. 1612 01:16:18,250 --> 01:16:21,500 Torej je pravi funkcija jQuery, .getJson. 1613 01:16:21,500 --> 01:16:25,020 >> In kaj ta funkcija pa je, da traja URL in nekaj parameters-- 1614 01:16:25,020 --> 01:16:28,000 tako da mislim, da v primeru od pset8, je bilo všeč, 1615 01:16:28,000 --> 01:16:33,520 URL je articles.php in Parametri bilo iti = nekaj poštno številko. 1616 01:16:33,520 --> 01:16:41,580 In pravi, OK, da zahtevek ta URL z danimi parametri. 1617 01:16:41,580 --> 01:16:43,480 In to samo zgodi. 1618 01:16:43,480 --> 01:16:47,730 >> Ko se konča, to je bodisi bo uspešno končana 1619 01:16:47,730 --> 01:16:49,370 ali pa se dogaja, da ne. 1620 01:16:49,370 --> 01:16:53,480 Torej je to enakovredno postanka Rob in ga prosi, da narediš nekaj. 1621 01:16:53,480 --> 01:17:00,260 In potem, ko se pokliče nazaj, on je bodisi reči da sem storil, ali mi ni uspelo. 1622 01:17:00,260 --> 01:17:04,030 >> Torej v primeru, ko ste ga storili, ste rekli, v redu, bom končal. 1623 01:17:04,030 --> 01:17:05,980 In potem pokličete to funkcijo. 1624 01:17:05,980 --> 01:17:08,915 V tem primeru, da se dogaja, da je Funkcija, ki traja nekaj informacij. 1625 01:17:08,915 --> 01:17:12,890 Tista, smo ponavadi skrbi so podatki, Podatki, ki smo dejansko vrne 1626 01:17:12,890 --> 01:17:15,900 kot posledica kliče .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> In lahko narediš nekaj z njo. 1628 01:17:17,470 --> 01:17:23,670 Torej, v primeru pset8, jo prikaže v obliki seznama. 1629 01:17:23,670 --> 01:17:29,050 Fail se bo funkcija ki se imenuje, če se zahteva ne 1630 01:17:29,050 --> 01:17:30,450 ne glede na razlog. 1631 01:17:30,450 --> 01:17:35,104 In v primeru pset8, smo ga pravkar console.log. 1632 01:17:35,104 --> 01:17:36,020 Vsa vprašanja glede tega? 1633 01:17:36,020 --> 01:17:36,300 Ja. 1634 01:17:36,300 --> 01:17:39,633 >> OBČINSTVO: Lahko smo samo uporabiti funkcijo theta namesto funkcije textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: Seveda. 1637 01:17:44,380 --> 01:17:46,713 Torej, ja, mislim, da v pset, smo pravkar videli podatke funkcijo. 1638 01:17:46,713 --> 01:17:48,700 Torej, to je samo the-- ja, v redu. 1639 01:17:48,700 --> 01:17:50,510 To je tisto, kar smo videli v pset. 1640 01:17:50,510 --> 01:17:51,480 To je povsem v redu. 1641 01:17:51,480 --> 01:17:54,210 >> To so le, če si hotel izvleči več informacij, 1642 01:17:54,210 --> 01:17:57,190 To so stvari, ki jih boste lahko dobili od .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Dobro vprašanje. 1644 01:17:59,040 --> 01:17:59,706 Karkoli drugega? 1645 01:17:59,706 --> 01:18:00,206 Ja. 1646 01:18:00,206 --> 01:18:01,787 >> OBČINSTVO: Torej .getJSON je Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH Blumberg: OK. 1648 01:18:02,620 --> 01:18:05,700 Torej je to neke vrste rafiniran del. 1649 01:18:05,700 --> 01:18:12,390 To je funkcija jQuery ki omogoča da narediš asinhrone klice. 1650 01:18:12,390 --> 01:18:16,080 In ti asinhroni klici, da je kar smo se nanašajo na kot Ajax. 1651 01:18:16,080 --> 01:18:16,850 Ja. 1652 01:18:16,850 --> 01:18:20,185 To mi je res dolgo časa, da se potegnite narazen, ko sem bil še študent. 1653 01:18:20,185 --> 01:18:21,560 OBČINSTVO: Lahko ponoviš? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Ja. 1655 01:18:22,476 --> 01:18:23,630 Lahko rečem, da je spet? 1656 01:18:23,630 --> 01:18:29,010 Ta funkcija .getJSON, je funkcija jQuery. 1657 01:18:29,010 --> 01:18:31,970 In to se dogaja, da asinhroni klic. 1658 01:18:31,970 --> 01:18:35,700 In ti asinhroni klici, ki smo jih so namenjene tistim, kot Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Vsa druga vprašanja? 1661 01:18:41,872 --> 01:18:43,330 Imamo samo nekaj minut tekme. 1662 01:18:43,330 --> 01:18:45,080 In Maria se dogaja, da zaviti z varnostjo 1663 01:18:45,080 --> 01:18:47,464 in potem gremo se skoraj končali. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Awesome, OK. 1665 01:18:48,630 --> 01:18:54,030 Torej, to is-- vzemite par sekund, da si več kot to. 1666 01:18:54,030 --> 01:18:56,750 In to ni nekaj res super. 1667 01:18:56,750 --> 01:18:59,430 In mi lahko nekdo pove, zakaj? 1668 01:18:59,430 --> 01:19:05,650 Kaj se dogaja v foo in lahko bi potencialno povzroči nekaj slabega, 1669 01:19:05,650 --> 01:19:06,770 in kaj, da se imenuje? 1670 01:19:06,770 --> 01:19:07,270 Ja. 1671 01:19:07,270 --> 01:19:10,391 OBČINSTVO: Če je argument, da je opravili v več kot 12 znakov, 1672 01:19:10,391 --> 01:19:11,454 da bi lahko preliva. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Right. 1674 01:19:12,370 --> 01:19:14,180 Popolna. 1675 01:19:14,180 --> 01:19:15,384 Kako se imenuje? 1676 01:19:15,384 --> 01:19:16,300 Pravkar si ga omenil. 1677 01:19:16,300 --> 01:19:16,840 >> OBČINSTVO: Buffer overflow. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Yup, buffer overflow. 1679 01:19:18,381 --> 01:19:21,230 Torej, to je nekaj, kar smo glejte kot buffer overflow. 1680 01:19:21,230 --> 01:19:25,500 In vidimo, da je notranjost foo, smo opredeljevali naše buffer, c, 1681 01:19:25,500 --> 01:19:27,240 z velikostjo 12. 1682 01:19:27,240 --> 01:19:32,680 Vendar pa se v glavnem ne bomo preverjanje kakorkoli sploh 1683 01:19:32,680 --> 01:19:36,480 ali argv1-- da je bil drugi argument. 1684 01:19:36,480 --> 01:19:39,630 Mi ne preveri, ali je Velikost je primerno. 1685 01:19:39,630 --> 01:19:43,380 >> Torej, če smo imeli predvsem zlonamerni uporabnik 1686 01:19:43,380 --> 01:19:47,170 ki je postavil v nekaterih trditev, da je bila več kot 12, nato pa potencialno 1687 01:19:47,170 --> 01:19:50,850 onkraj meja, ki argument, je imel nekaj izvedljivo kodo 1688 01:19:50,850 --> 01:19:55,570 da je poskušal narediti kaj slabega z njim; potem je to, kaj bi se zgodilo, 1689 01:19:55,570 --> 01:19:59,310 bi preglasijo vrnitev naslov funkcije foo, 1690 01:19:59,310 --> 01:20:04,370 povzroča funkcijo ko vrnitvi izvršiti to kodo. 1691 01:20:04,370 --> 01:20:07,540 In potem slabe stvari se lahko zgodi. 1692 01:20:07,540 --> 01:20:09,850 Ali je to smiselno za vsakogar? 1693 01:20:09,850 --> 01:20:12,424 >> In kako se lahko zaščiti pred tem? 1694 01:20:12,424 --> 01:20:13,090 Vsi predlogi? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 V bistvu, notranjost potencialno foo, kako 1697 01:20:21,890 --> 01:20:28,294 bomo lahko preverite, da to ne more zgoditi? 1698 01:20:28,294 --> 01:20:33,879 >> OBČINSTVO: Če je velikost 12 presežene, bi dodeliti dodaten pomnilnik? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Pobuda je dodelila dodatni spomin velikosti presežena. 1700 01:20:37,170 --> 01:20:39,800 Pravzaprav, lahko naredimo nekaj, kar veliko lažje kot to, kot dobro. 1701 01:20:39,800 --> 01:20:44,870 Mi lahko samo dobil dolžino niza z argumentom, da se je začel, 1702 01:20:44,870 --> 01:20:48,590 preverite, če je manj ali enako 12-- 1703 01:20:48,590 --> 01:20:50,790 ki je tisto, kar smo želeli da zato, ker ne želimo, 1704 01:20:50,790 --> 01:20:52,373 to presega meje naše pufra. 1705 01:20:52,373 --> 01:20:55,690 In potem, če se to ne zgodi, smo lahko delajo z argumentom. 1706 01:20:55,690 --> 01:21:00,296 In potem, če se to zgodi, dejansko želimo potencialno Yello na uporabnika. 1707 01:21:00,296 --> 01:21:01,670 Ampak to je, kako bi to naredil. 1708 01:21:01,670 --> 01:21:02,443 Da. 1709 01:21:02,443 --> 01:21:04,360 >> OBČINSTVO: Bi lahko razložiti memcpy resnično hitro? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, oprostite. 1711 01:21:05,443 --> 01:21:06,040 Da. 1712 01:21:06,040 --> 01:21:11,290 Memcpy traja karkoli is-- žal, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy je vse, kar je V baru, kar je minilo 1714 01:21:15,850 --> 01:21:18,050 na foo kot argument ukazne vrstice. 1715 01:21:18,050 --> 01:21:19,440 Tako se dogaja, da sprejmejo argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 se imenuje bar tukaj. 1717 01:21:21,420 --> 01:21:24,453 Tako se dogaja, da sprejmejo bar in to se dogaja, da ga kopirajte v c. 1718 01:21:24,453 --> 01:21:25,402 >> OBČINSTVO: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: In to se dogaja, copy-- tretji argument samo sklicuje 1720 01:21:28,360 --> 01:21:30,601 za koliko se bo skopirala v c. 1721 01:21:30,601 --> 01:21:31,142 OBČINSTVO: Ah. 1722 01:21:31,142 --> 01:21:33,030 Torej, tale je kopiranje vse to takrat. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Ja, to je kopiranje vse to. 1724 01:21:34,310 --> 01:21:34,810 Ja. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 Najprej se prepričajte, da bar ni enaka NULL, ker je kazalec. 1727 01:21:41,910 --> 01:21:44,680 Potem smo dobili dolžino niza bara. 1728 01:21:44,680 --> 01:21:47,530 Poskrbimo, da je manjša ali enaka 12. 1729 01:21:47,530 --> 01:21:50,070 In potem, ker smo jih je prepričan, lahko smo dejansko 1730 01:21:50,070 --> 01:21:53,122 memcpy in se prepričajte, da je to v redu. 1731 01:21:53,122 --> 01:21:53,705 Kakšno vprašanje? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Great. 1734 01:21:58,690 --> 01:22:00,400 Imam dva pravilna ali napačna vprašanja. 1735 01:22:00,400 --> 01:22:05,470 Mi lahko kdo pove takoj če so to drži ali ne? 1736 01:22:05,470 --> 01:22:07,460 Ja, to je napačen. 1737 01:22:07,460 --> 01:22:07,960 Točno tako. 1738 01:22:07,960 --> 01:22:09,330 Oba sta napačni. 1739 01:22:09,330 --> 01:22:12,682 Torej z uporabo enega samega geslo ni nikoli res dobra ideja 1740 01:22:12,682 --> 01:22:14,890 ker če kdo ve gesla, ki jih lahko samo 1741 01:22:14,890 --> 01:22:16,260 dostop do vseh vaših druge račune. 1742 01:22:16,260 --> 01:22:19,260 In potem ikone ni da se zagotovi varnost. 1743 01:22:19,260 --> 01:22:24,900 Morali bi običajno iskati HTTPS namesto HTTP in URL. 1744 01:22:24,900 --> 01:22:28,560 >> In nekatere druge vrste Napadi, ki smo navedeni, 1745 01:22:28,560 --> 01:22:31,390 da je David omenjeno v predavanje, napadov SQL injection. 1746 01:22:31,390 --> 01:22:37,310 Smo že videli, da če bomo don't-- Funkcija CS50 poizvedba poskrbi, da SQL 1747 01:22:37,310 --> 01:22:39,530 napadi injekcija ne more nastati. 1748 01:22:39,530 --> 01:22:42,640 Ampak, če ne bomo uporabljali CS50, citiram, konec citata "v poizvedbi" 1749 01:22:42,640 --> 01:22:46,830 mi bi morali zagotoviti, da vhod uporabnik dejansko ni nekaj SQL 1750 01:22:46,830 --> 01:22:49,670 izraz, ki bo povzročila vse naše mize se znižale 1751 01:22:49,670 --> 01:22:54,070 ali kaj slabega zgodilo z našo bazo podatkov. 1752 01:22:54,070 --> 01:22:56,790 >> Ugrabitve seja druga vrsta očitno 1753 01:22:56,790 --> 01:23:05,940 da se zgodi, ko nekaj slabega oseba, ki uporablja sejo nekaterih žrtvino 1754 01:23:05,940 --> 01:23:08,740 ID za dostop do informacij za prijavo. 1755 01:23:08,740 --> 01:23:13,620 Torej zelo trivialno primer, da je kot če imamo javni računalnik, 1756 01:23:13,620 --> 01:23:21,120 potem je slaba oseba prijavi v sistem in nato so piškotki, ki so shranjene. 1757 01:23:21,120 --> 01:23:23,380 In piškotki ne spreminjajo za sejo. 1758 01:23:23,380 --> 01:23:27,620 >> Potem smo žrtev iti v in potem se prijavite na spletni strani. 1759 01:23:27,620 --> 01:23:30,290 Piškotki ne spreminjajo za določeno sejo. 1760 01:23:30,290 --> 01:23:33,060 In potem je žrtev prijavi v spletna stran, nato pa zapusti. 1761 01:23:33,060 --> 01:23:36,190 In potem je oseba, ki sega lahko potem še vedno uporabljajo svojo Session ID 1762 01:23:36,190 --> 01:23:37,430 dostop do svojih podatkov. 1763 01:23:37,430 --> 01:23:40,050 Torej, to je en primer kako bi se to zgodilo. 1764 01:23:40,050 --> 01:23:45,570 >> In potem jaz ne bi skrbite preveč o posebno kodo ali karkoli 1765 01:23:45,570 --> 01:23:49,270 kot da bi to lahko povzročilo to, vendar imajo neko idejo, kaj 1766 01:23:49,270 --> 01:23:51,400 spremenljivke, vključene v to so. 1767 01:23:51,400 --> 01:23:53,897 In potem manipulirajo glave podatkov je druga vrsta napada 1768 01:23:53,897 --> 01:23:55,230 da ima David je govoril. 1769 01:23:55,230 --> 01:23:59,730 In to samo pomeni, da kaj se lahko zgodi, ko 1770 01:23:59,730 --> 01:24:04,300 odgovor, HTTP Odziv znotraj naše glave 1771 01:24:04,300 --> 01:24:05,720 ni sanirati pravilno. 1772 01:24:05,720 --> 01:24:14,340 >> In vsaka od fields-- za primer, če nekdo prepiše eno glavi 1773 01:24:14,340 --> 01:24:18,860 Vrednosti vsebovati kaj več kot kaj naj contain-- in dejansko 1774 01:24:18,860 --> 01:24:22,720 vsebujejo, na primer, 200 OK koda stanja, nato pa so 1775 01:24:22,720 --> 01:24:26,890 bi lahko naredil zlonamerno Stvari, če oni ne bi smel. 1776 01:24:26,890 --> 01:24:30,815 Ampak jaz ne bi skrbite preveč veliko o posebno kodo 1777 01:24:30,815 --> 01:24:34,110 ki lahko povzroči to, le neke vrste razumevanja 1778 01:24:34,110 --> 01:24:37,290 Stvari na visoki ravni, kot je ta. 1779 01:24:37,290 --> 01:24:39,570 >> Mislim, da je to vse da moramo za pokritje. 1780 01:24:39,570 --> 01:24:40,090 Neverjeten. 1781 01:24:40,090 --> 01:24:43,310 Kdo kakršna koli vprašanja o katerikoli od stvari, ki jih zajema? 1782 01:24:43,310 --> 01:24:44,213 Da. 1783 01:24:44,213 --> 01:24:48,077 >> OBČINSTVO: Torej, ena vrsta več logistično vprašanje. 1784 01:24:48,077 --> 01:24:53,400 Je vsebina osredotočena predvsem na stvari, po kvizu 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: Torej Vprašanje je, ali je vsebina 1786 01:24:55,730 --> 01:24:59,720 osredotočila predvsem na stvari, po kvizu 1? 1787 01:24:59,720 --> 01:25:06,070 Torej je poudarek na po kviz 1, z izjemo 1788 01:25:06,070 --> 01:25:10,914 da se moramo osredotočiti na stvari, pset5 in veliko podatkovnih struktur 1789 01:25:10,914 --> 01:25:11,580 da smo pokrili. 1790 01:25:11,580 --> 01:25:14,300 In ne moremo reči, da smo mogoče prezreti ničesar pred 1791 01:25:14,300 --> 01:25:17,120 da zato, ker temelji na njej pa tudi. 1792 01:25:17,120 --> 01:25:21,845 >> Tako osredotočiti na to, plus pset5 materiala kot tudi povezane sezname, nizov, 1793 01:25:21,845 --> 01:25:23,720 čakalne vrste, in vse, kar je da Hannah šli čez. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: Right. 1795 01:25:24,050 --> 01:25:27,450 Ja, smo šli preko vseh C tvar na samem začetku zelo hitro. 1796 01:25:27,450 --> 01:25:29,090 Vendar se prepričajte, da pregleda to. 1797 01:25:29,090 --> 01:25:32,700 Pojdi nazaj in gledal kviz 0 pregleda. 1798 01:25:32,700 --> 01:25:36,110 >> Nekaj ​​več logistične ugotavlja, samo, ko imamo svojo pozornost. 1799 01:25:36,110 --> 01:25:39,100 Bomo imeli uradnih ur tako v ponedeljek in torek zvečer. 1800 01:25:39,100 --> 01:25:41,540 Oni bo v MD 119. 1801 01:25:41,540 --> 01:25:44,220 To je vse na spletni strani, tako da Če ga ne, brez skrbi slišati. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA: 08:30 do 11:00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH Blumberg: Ja, 08:30 do 11:00. 1804 01:25:46,260 --> 01:25:46,910 Mi bomo tam. 1805 01:25:46,910 --> 01:25:48,368 Mi bomo tam, da odgovori na vprašanja. 1806 01:25:48,368 --> 01:25:49,480 To je zelo mrzel in zabavno. 1807 01:25:49,480 --> 01:25:53,240 Vidva lahko zaprosijo katerega koli vprašanja da imate na kvizu 1. 1808 01:25:53,240 --> 01:25:55,740 In kviz 1 je na Sreda, tako srečno. 1809 01:25:55,740 --> 01:25:59,770 Če imate kakršnakoli vprašanja, morda pridejo Pogovorite se z nami tukaj ena na ena. 1810 01:25:59,770 --> 01:26:00,880 Cool. 1811 01:26:00,880 --> 01:26:01,630 Hvala zelo. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Najlepša hvala, fantje. 1813 01:26:02,880 --> 01:26:03,480 >> OBČINSTVO: Bravo. 1814 01:26:03,480 --> 01:26:05,930 >> [Aplavz] 1815 01:26:05,930 --> 01:26:07,530