1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [Predvaja glasba] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Živjo, vsi. 5 00:00:12,700 --> 00:00:15,866 Hvala fantje toliko prišli ven v gnusno vremena za en kviz 6 00:00:15,866 --> 00:00:16,910 pregledati sejo. 7 00:00:16,910 --> 00:00:20,020 Kot veste, kviz eno je to sredo. 8 00:00:20,020 --> 00:00:22,209 Tako smo šli skozi kup temah. 9 00:00:22,209 --> 00:00:24,000 Davin: Hej, lahko rečem, nekaj resnično hitro? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Ja, Davin dogaja reči nekaj resnično hitro. 11 00:00:25,215 --> 00:00:25,780 Davin: Žal mi je. 12 00:00:25,780 --> 00:00:29,490 Samo resnično hitro, če imate vprašanja o kvizu, lahko greš na spletu. 13 00:00:29,490 --> 00:00:32,420 Pojdi na 2014 kvizu enega, o kvizu. 14 00:00:32,420 --> 00:00:34,680 Ima logistiko o kam iti, če bi šel. 15 00:00:34,680 --> 00:00:38,100 Če ste sočasno vpisanih, smo dogaja, da imajo ličila kviz ob 5:30. 16 00:00:38,100 --> 00:00:40,350 Ali pa, če mi je poslal vprašanje, imate kakšno drugo vprašanje. 17 00:00:40,350 --> 00:00:42,640 Vendar 05:30 je make-up čas v sredo. 18 00:00:42,640 --> 00:00:44,540 Ampak, če imate vprašanja, splošna vprašanja, 19 00:00:44,540 --> 00:00:45,748 na spletu je vse logistike. 20 00:00:45,748 --> 00:00:47,690 Zato preverite tam prvi. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Awesome. 22 00:00:49,070 --> 00:00:53,030 Torej, tukaj je velik seznam tem da bomo šli skozi danes. 23 00:00:53,030 --> 00:00:57,390 Jaz grem za kritje vseh C stvari, ki je prvi stolpec. 24 00:00:57,390 --> 00:01:00,710 Torej, C stvari, ki smo zajeti po kvizu ničelno. 25 00:01:00,710 --> 00:01:05,459 Začenši s povezani seznam, ki vključuje kazalce. 26 00:01:05,459 --> 00:01:07,668 >> Vse je v redu, tako da bomo to videli v zadnji seji pregledu, 27 00:01:07,668 --> 00:01:10,000 tako da sem šel skozi to je malo hitreje. 28 00:01:10,000 --> 00:01:13,500 Samo dvigni roko, če hočeš, da upočasni ali obravnavajo nekaj več. 29 00:01:13,500 --> 00:01:17,150 Ampak uporabljamo smo povezani seznamov, ker smo začeli v C z nizi. 30 00:01:17,150 --> 00:01:20,920 In nizi so super, ampak Problem je, da imajo fiksno velikost. 31 00:01:20,920 --> 00:01:24,925 Povezani seznami nam omogoča, da ustvarite dinamično velikosti podatkovne strukture. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> In imamo naše osnovne dejavnosti, vstavljanje, brisanje in iskanje. 34 00:01:32,320 --> 00:01:36,780 In ne moremo storiti vložek v v najslabšem primeru konstantna čas 35 00:01:36,780 --> 00:01:39,140 če smo pravkar dal na samem začetku. 36 00:01:39,140 --> 00:01:45,220 Brisanje in iskanje, najslabše Primer velik oh časa n. 37 00:01:45,220 --> 00:01:47,140 Torej še enkrat, samo da flip s pomočjo teh slik, 38 00:01:47,140 --> 00:01:50,860 Vem, da smo videli te zadnjič, vendar smo želite spremljati naše povezanega seznama 39 00:01:50,860 --> 00:01:53,440 jih sledenja glava našega povezani seznam. 40 00:01:53,440 --> 00:01:55,580 Saj vemo, da vsak od naših vozlišč 41 00:01:55,580 --> 00:01:58,610 je le, da bo točka za Naslednja vozlišče v našem povezani seznam. 42 00:01:58,610 --> 00:02:00,460 >> Torej, to je, kako vodimo. 43 00:02:00,460 --> 00:02:02,910 Čeprav to niso stalno kosov pomnilnika, 44 00:02:02,910 --> 00:02:07,410 jih lahko najdete s samo po različnih puščic. 45 00:02:07,410 --> 00:02:09,800 Tu je naša struktura za povezani seznam vozlišče. 46 00:02:09,800 --> 00:02:11,440 Videli smo to zadnjič. 47 00:02:11,440 --> 00:02:13,080 Imamo struct vozlišče. 48 00:02:13,080 --> 00:02:14,340 In ima dve lastnosti. 49 00:02:14,340 --> 00:02:17,020 Številka ena, dejanska Vrednost želimo shraniti. 50 00:02:17,020 --> 00:02:18,290 V tem primeru, je število. 51 00:02:18,290 --> 00:02:21,100 To je lahko niz, bi bilo biti char, karkoli želite. 52 00:02:21,100 --> 00:02:24,710 In potem moramo slediti levo vozlišče v našem povezani seznam. 53 00:02:24,710 --> 00:02:29,797 Tako, da se dogaja, da kazalec na naslednje vozlišče. 54 00:02:29,797 --> 00:02:31,880 Če ste bili samo delaš iskanje, tako kot sem rekel prej, 55 00:02:31,880 --> 00:02:34,900 bi si morali slediti puščice navzdol. 56 00:02:34,900 --> 00:02:40,720 Vstavljanje, bi si beležite kje je preostanek svojega seznama. 57 00:02:40,720 --> 00:02:44,150 In želite preusmeriti glavo poudariti, da naš nov element, ki 58 00:02:44,150 --> 00:02:46,640 V tem primeru je eden, in potem bo ena točka 59 00:02:46,640 --> 00:02:49,480 V preostalem povezanega seznama. 60 00:02:49,480 --> 00:02:52,996 Torej še enkrat, vem, da je to malo malo ponovitev iz kviza nične. 61 00:02:52,996 --> 00:02:55,370 Zato moramo biti zelo previdni O vrstnem redu, v katerem smo 62 00:02:55,370 --> 00:03:00,390 narediti te pointings zato ne zmanjkalo zadnji seznama. 63 00:03:00,390 --> 00:03:04,122 OK, na vsa vprašanja z Samo posamezno povezano sezname? 64 00:03:04,122 --> 00:03:06,060 Super, OK, kul. 65 00:03:06,060 --> 00:03:09,410 >> Torej, zdaj smo šli na nekaj le nekoliko bolj zapletena, 66 00:03:09,410 --> 00:03:10,920 dvojno povezani seznam. 67 00:03:10,920 --> 00:03:13,680 Torej poleg skladu tir naslednje vozlišče, 68 00:03:13,680 --> 00:03:16,220 želimo tudi, da bi spremljali predhodnega vozlišča. 69 00:03:16,220 --> 00:03:19,580 In to nam omogoča, da se, če smo na neki točki v našem povezani seznam, 70 00:03:19,580 --> 00:03:23,110 Ne samo iti naprej, vendar Ponovil je tudi nazaj. 71 00:03:23,110 --> 00:03:25,220 Saj, kot smo videli v posamič povezani seznam, 72 00:03:25,220 --> 00:03:27,980 Če smo bili v nekem vozlišču in Naenkrat smo se odločili, 73 00:03:27,980 --> 00:03:30,160 pravzaprav, hočem iti desno vozlišče pred menoj, 74 00:03:30,160 --> 00:03:32,034 da bi morali iti vse pot nazaj v glavo 75 00:03:32,034 --> 00:03:35,710 in Ponovil skozi, dokler ne boste našli vozlišče ste iskali. 76 00:03:35,710 --> 00:03:37,680 >> Tako da to naredi stvari nekoliko lažje, saj smo 77 00:03:37,680 --> 00:03:39,670 poskuša Ponovil preko našega povezani seznam. 78 00:03:39,670 --> 00:03:47,870 Ampak to od nas zahteva, da spremljate enega Več kazalec, tako da ena več vozlišče zvezda. 79 00:03:47,870 --> 00:03:50,830 Vse je v redu, tako da tukaj pride zabavni del. 80 00:03:50,830 --> 00:03:55,600 Bomo vaditi izvajanju odstrani za dvojno povezanih seznamov. 81 00:03:55,600 --> 00:03:58,660 Torej je to nekaj, kar je povsem pošteno igro za kviz. 82 00:03:58,660 --> 00:04:00,750 Je zbralo na preteklih kvizov. 83 00:04:00,750 --> 00:04:04,220 Torej je vsekakor pripravljena kodo malo v C. 84 00:04:04,220 --> 00:04:07,900 Ne pozabite, da z vsemi to zabavno PHP in JavaScript, 85 00:04:07,900 --> 00:04:10,560 imamo še vedno, da se spomnimo storiti C. Torej krtačo na da 86 00:04:10,560 --> 00:04:12,146 Če imate občutek, zarjavel. 87 00:04:12,146 --> 00:04:14,580 >> Vse je v redu, da vidimo, če to lahko naredimo. 88 00:04:14,580 --> 00:04:16,312 OK, v redu. 89 00:04:16,312 --> 00:04:18,600 Torej bomo poskušali urediti pravico tukaj, 90 00:04:18,600 --> 00:04:20,707 in upam, da to gre, kot je bilo načrtovano. 91 00:04:20,707 --> 00:04:23,915 Vse je v redu, ali kdo želijo, da bi me predlog, kako naj začnem? 92 00:04:23,915 --> 00:04:27,030 Edina predpostavka sem odločitev je, da sem že 93 00:04:27,030 --> 00:04:30,180 je struktura opredeljena, enega sem pokazal na zadnji strani, 94 00:04:30,180 --> 00:04:31,420 na zadnji diapozitiv. 95 00:04:31,420 --> 00:04:39,250 In sem shranjevanje vodja mojega povezana Seznam v neki kazalec imenuje seznam. 96 00:04:39,250 --> 00:04:42,190 Ali kdo želel, da me je začelo? 97 00:04:42,190 --> 00:04:45,410 >> OBČINSTVO: Ali lahko ustvarite novo vozlišče, da pokličete po seznamu? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Awesome, tako bomo ustvarili 99 00:04:46,410 --> 00:04:47,951 novo vozlišče plaziti po seznamu. 100 00:04:47,951 --> 00:04:48,570 Všeč mi je, da je. 101 00:04:48,570 --> 00:04:50,799 Bom ga imenujemo kazalec, če je to v redu. 102 00:04:50,799 --> 00:04:52,340 In kje naj bi prvotno začeti? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> OBČINSTVO: Verjetno na Vodja seznama. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Beautiful. 106 00:05:00,590 --> 00:05:03,670 Želimo, da začnete na čelu, ki je Sem rekel, se dogaja, da se shranijo v seznamu. 107 00:05:03,670 --> 00:05:04,170 Super. 108 00:05:04,170 --> 00:05:05,220 Doslej je tako dobro. 109 00:05:05,220 --> 00:05:08,260 In zdaj, naš cilj je, da Ponovil skozi seznam 110 00:05:08,260 --> 00:05:12,870 dokler ne najdemo vozlišče z vrednost n, ki ga želimo izbrisati. 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> Torej, zdaj je del, kjer želimo Ponovil skozi. 113 00:05:15,910 --> 00:05:19,488 Ali lahko kdorkoli predlagamo način za ponovitev prek? 114 00:05:19,488 --> 00:05:20,979 >> OBČINSTVO: zanka. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: zanka. 116 00:05:21,840 --> 00:05:22,620 Obožujem ga. 117 00:05:22,620 --> 00:05:25,550 Natančneje, lahko poskusite z while zanko. 118 00:05:25,550 --> 00:05:30,919 OK, in vemo, da smo dosegli konec našega seznama Kdaj Kaj? 119 00:05:30,919 --> 00:05:32,210 OBČINSTVO: Ko je kazalec null. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Ko je kazalec null. 121 00:05:33,418 --> 00:05:34,320 Lepo, mi je všeč. 122 00:05:34,320 --> 00:05:35,110 OK, v redu. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Tako mi je žal, če je moja bounding brace je vrsta padca zaslon. 125 00:05:43,190 --> 00:05:44,090 Smo ga prinesli nazaj. 126 00:05:44,090 --> 00:05:46,610 OK, v redu. 127 00:05:46,610 --> 00:05:48,690 Kaj je naslednje? 128 00:05:48,690 --> 00:05:51,950 >> Torej vemo, da želite izbrisati vozlišča, ki ima vrednost n. 129 00:05:51,950 --> 00:05:56,340 Torej, kaj je najti v primeru, ko smo dejansko našli naše vozlišče. 130 00:05:56,340 --> 00:05:57,840 Torej, kako bi jaz preverite, ali? 131 00:05:57,840 --> 00:06:02,210 Jaz bi samo rekel, če kazalec, in potem, če sem želijo, da bi dobili vrednosti od kazalca, 132 00:06:02,210 --> 00:06:08,940 Sploh arrow n, enaka n, parameter 133 00:06:08,940 --> 00:06:14,490 da je s to funkcijo, vozlišče, ki ga želimo dejansko izbrisati. 134 00:06:14,490 --> 00:06:17,090 Vsa vprašanja za obdobje do tu? 135 00:06:17,090 --> 00:06:18,360 Vse je v redu. 136 00:06:18,360 --> 00:06:24,140 OK, zdaj pa pripraviti na hitro sliko na ladji, da vizualizirati to. 137 00:06:24,140 --> 00:06:30,710 >> Torej, recimo, da je naša lepa vozlišče. 138 00:06:30,710 --> 00:06:34,480 In to ima svojo vrednost, bom samo rekel štiri. 139 00:06:34,480 --> 00:06:40,340 In to kaže na naslednji vozlišče v našem povezani seznam. 140 00:06:40,340 --> 00:06:42,220 In nič ni pred njim. 141 00:06:42,220 --> 00:06:45,800 Torej imamo Prejšnja kaže na nič. 142 00:06:45,800 --> 00:06:48,110 V tem primeru moramo poudariti nazaj. 143 00:06:48,110 --> 00:06:50,960 OK, samo ustanovitvijo my povezani seznam tukaj. 144 00:06:50,960 --> 00:06:53,630 In imamo seznam, ki kaže te strukture, da začnete s. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Bom pripraviti še eno za Zaradi popolnosti. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 OK. 149 00:07:06,117 --> 00:07:07,480 Jaz bom to točko naprej. 150 00:07:07,480 --> 00:07:09,550 In bom poudariti, da je eno nazaj. 151 00:07:09,550 --> 00:07:10,360 Ups, žal. 152 00:07:10,360 --> 00:07:12,710 Ja, dobil to nazaj. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Še enkrat. 155 00:07:16,967 --> 00:07:18,330 OK, pa gremo. 156 00:07:18,330 --> 00:07:19,910 Vse je v redu, je dobil. 157 00:07:19,910 --> 00:07:21,780 OK, tukaj je naša slika. 158 00:07:21,780 --> 00:07:24,860 >> V redu, zato smo želeli razmisliti dva primera. 159 00:07:24,860 --> 00:07:27,330 V prvem primeru je, če vozlišče želimo izbrisati 160 00:07:27,330 --> 00:07:29,420 je že na samem začetku našega seznama. 161 00:07:29,420 --> 00:07:34,070 In potem, drugi primer, da želimo treba upoštevati, je, če je kje drugje. 162 00:07:34,070 --> 00:07:37,660 Razumem, da je to popolnoma grdo risbo z vsem svojim brisanjem, 163 00:07:37,660 --> 00:07:40,400 vendar upam, da bomo poskušali to jasno z nekaj kode. 164 00:07:40,400 --> 00:07:45,450 >> OK, tako da je kritje primera kjer smo ugotovili, naše vozlišče, 165 00:07:45,450 --> 00:07:48,900 in to na zelo začetek našega povezani seznam. 166 00:07:48,900 --> 00:07:50,810 Kdo mi predlog tukaj, kaj 167 00:07:50,810 --> 00:07:54,684 Sem moral storiti, da dejansko odstraniti našo vozlišče? 168 00:07:54,684 --> 00:07:55,970 To je precej zapleteno. 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> OBČINSTVO: Moraš sprejeti vozlišče, da bi bili pred njim 171 00:07:59,628 --> 00:08:01,794 in bi bilo poudariti, da tisti, ki bi se po njej, 172 00:08:01,794 --> 00:08:03,004 in sprejeti vozlišče, ki bi po njem in bo 173 00:08:03,004 --> 00:08:04,554 to kaže na vozlišču pred njim. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Točno tako. 175 00:08:05,220 --> 00:08:10,640 OK, tako da je to res where-- imamo dva primera. 176 00:08:10,640 --> 00:08:14,100 Imamo primer, ko je vozlišča, ki iščeva 177 00:08:14,100 --> 00:08:18,270 je sprednji del seznama. 178 00:08:18,270 --> 00:08:23,110 OK, potem pa se zgodi, da vas opisana je drugače, kajne? 179 00:08:23,110 --> 00:08:24,500 To je nekje drugje v seznamu. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Torej, ste dejali, da moramo pogled na vozlišču prejšnjega, 182 00:08:32,840 --> 00:08:36,500 in da prejšnje vozlišče opozarjajo na naslednje vozlišče. 183 00:08:36,500 --> 00:08:40,510 Torej, recimo, da smo poskuša vzeti pet 184 00:08:40,510 --> 00:08:43,059 po mojem zelo grdo risbo nad tukaj. 185 00:08:43,059 --> 00:08:47,530 Želimo, da se prepričajte, da štiri zdaj opozarja na šest. 186 00:08:47,530 --> 00:08:49,590 Štiri v naslednji točki do šestih. 187 00:08:49,590 --> 00:08:52,150 In šest na prejšnje točke do štirih. 188 00:08:52,150 --> 00:08:53,960 To je naš cilj tukaj, kajne? 189 00:08:53,960 --> 00:08:56,150 To je tisto, kar sem ti misliš pravkar rekel tam. 190 00:08:56,150 --> 00:08:58,450 >> OK, kaj je dobil, da je prvi del. 191 00:08:58,450 --> 00:09:02,300 Naredimo še Prejšnja kazalec prejšnje. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Torej, štiri je zraven mora kazati na kaj? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Točno, v tem primeru, šest. 196 00:09:14,900 --> 00:09:18,470 Torej bi morali reči kazalec, naslednji. 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 Vse je v redu. 199 00:09:21,150 --> 00:09:24,870 Torej, dajmo se znebite tega grdo sliko in poskušali sestaviti nekoliko lepše enega. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Imamo seznam glavo tukaj. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 In ki kaže na prvo vozlišče v naša povezani seznam, kar smo rekli, je štiri. 204 00:09:42,740 --> 00:09:45,620 Tukaj je naš drugi vozel, pet. 205 00:09:45,620 --> 00:09:47,307 In naše tretje vozlišče, šest. 206 00:09:47,307 --> 00:09:50,265 Samo poskušam pripraviti točno isto slika, samo malo bolj gladko. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, tako da je poleg štirih prvotno opozarja na pet. 209 00:09:56,280 --> 00:09:58,620 Pet v naslednji točki do šestih. 210 00:09:58,620 --> 00:10:00,170 Šest je prejšnje točke na pet. 211 00:10:00,170 --> 00:10:02,470 In pet na prejšnje točke do štirih. 212 00:10:02,470 --> 00:10:03,360 Toliko lepše! 213 00:10:03,360 --> 00:10:04,530 OK, v redu. 214 00:10:04,530 --> 00:10:07,770 >> Torej sedaj, kaj smo naredili prav Tukaj, ta vrstica kode, 215 00:10:07,770 --> 00:10:12,680 ki pravi kazalec Prejšnja zraven, tako, kaj to pomeni? 216 00:10:12,680 --> 00:10:17,540 To pomeni, če gledamo na pet, pojdi na prejšnje vozlišče, 217 00:10:17,540 --> 00:10:21,970 in to je zraven bi zdaj točka do pet je naslednji. 218 00:10:21,970 --> 00:10:27,840 Torej v bistvu, kaj to delaš je, da je izbris puščico 219 00:10:27,840 --> 00:10:29,640 in zaradi česar je preskočite desno čez pet. 220 00:10:29,640 --> 00:10:31,360 Je to jasno? 221 00:10:31,360 --> 00:10:33,200 Vem, da se lahko malo nedorečena. 222 00:10:33,200 --> 00:10:34,480 Vidim nekaj pokima glave. 223 00:10:34,480 --> 00:10:35,390 To je dobro. 224 00:10:35,390 --> 00:10:36,670 OK, v redu. 225 00:10:36,670 --> 00:10:39,590 Zdaj, kaj je naslednji korak? 226 00:10:39,590 --> 00:10:42,060 >> Sem ponastavitev naslednjo. 227 00:10:42,060 --> 00:10:45,297 Zdaj, kar drugi arrow moram spremeniti? 228 00:10:45,297 --> 00:10:46,130 Tale tukaj. 229 00:10:46,130 --> 00:10:47,560 Šest je prejšnja. 230 00:10:47,560 --> 00:10:50,620 Nočemo, šest je prejšnja izpostaviti pet več. 231 00:10:50,620 --> 00:10:54,580 Želimo pa, da kaže na štiri. 232 00:10:54,580 --> 00:10:56,190 Ali to sliko smisla? 233 00:10:56,190 --> 00:10:58,370 Sedaj bomo lahko dejansko traja pet out. 234 00:10:58,370 --> 00:10:59,370 Torej, kaj je dobil ta kos. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Kaj naj storim, preden sem ponastavitev šest je prejšnja štiri? 237 00:11:11,180 --> 00:11:14,360 Morebitne tam ideje? 238 00:11:14,360 --> 00:11:17,369 >> OBČINSTVO: Osvobodite vozlišče med jim z določitvijo, da null? 239 00:11:17,369 --> 00:11:17,910 HANNAH: Cool. 240 00:11:17,910 --> 00:11:21,100 Definitivno, naš končni cilj je bo osvoboditi vozlišče. 241 00:11:21,100 --> 00:11:22,490 Tako smo lahko storite, da prav tukaj. 242 00:11:22,490 --> 00:11:23,540 Brezplačna kazalec. 243 00:11:23,540 --> 00:11:24,810 Absolutno. 244 00:11:24,810 --> 00:11:29,160 Vendar je še pred tem, dajmo just-- naš cilj pravico 245 00:11:29,160 --> 00:11:38,730 Tukaj je določiti kazalec prihodnjega Prejšnja enak kazalec prejšnje. 246 00:11:38,730 --> 00:11:40,760 Vem, da to postaja prekrita. 247 00:11:40,760 --> 00:11:45,440 OK, kaj je take-- kul. 248 00:11:45,440 --> 00:11:46,990 Lahko vsi videli to bottom line? 249 00:11:46,990 --> 00:11:47,840 Ali pa je to super majhen? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Torej, preden se izvrši ta vrstica tu, hočemo 252 00:11:54,300 --> 00:11:58,375 se prepričajte, da Naslednji kazalec ni nič. 253 00:11:58,375 --> 00:12:00,500 Ker če kazalec prihodnjega je null, kakšne napake 254 00:12:00,500 --> 00:12:02,727 bom dobil, ko sem poskušal reference null kazalec? 255 00:12:02,727 --> 00:12:03,560 OBČINSTVO: Seg napaka. 256 00:12:03,560 --> 00:12:05,660 HANNAH: napaka seg, lepo. 257 00:12:05,660 --> 00:12:09,690 OK, tako da, če to ni null, potem bomo mogoče ponastaviti. 258 00:12:09,690 --> 00:12:14,420 In imamo šest točko ponovno na štiri. 259 00:12:14,420 --> 00:12:17,440 Vprašanja do te točke? 260 00:12:17,440 --> 00:12:17,940 Ja? 261 00:12:17,940 --> 00:12:19,814 >> OBČINSTVO: Na vaše prvo če izjavi, kajne 262 00:12:19,814 --> 00:12:23,817 pomeni, da ima puščica Naslednji, ali [neslišno]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: Mislil sem pointer arrow n. 264 00:12:25,150 --> 00:12:30,270 Torej v bistvu, kaj sem poskušal narediti se pravi, je trenutno vozlišče, da sem 265 00:12:30,270 --> 00:12:34,100 ponavljanjem več, sedanja vozlišča, ki Gledam, sem shranjevanje v pointer. 266 00:12:34,100 --> 00:12:37,630 In želim vedeti, kazalec je Vrednost, ki se v tem primeru je n. 267 00:12:37,630 --> 00:12:39,500 In želim videti, je vozlišče Iščem 268 00:12:39,500 --> 00:12:42,790 za vozlišče sem cilj izbrisati? 269 00:12:42,790 --> 00:12:47,657 Torej, to je, zakaj imamo tukaj kazalec n. 270 00:12:47,657 --> 00:12:49,857 >> OBČINSTVO: Torej arrow dogaja vn, nastavite vrednost 271 00:12:49,857 --> 00:12:52,058 in ga shranite v vozlišču z imenom n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: Torej, to je kot, če sem Skozi ta povezan seznam 274 00:12:58,820 --> 00:13:00,310 in kaže na pet. 275 00:13:00,310 --> 00:13:03,600 Če želim, da bi dobili te vrednosti, če Želim, da bi dobili to število, 5, 276 00:13:03,600 --> 00:13:06,400 Moram kazalec puščico n. 277 00:13:06,400 --> 00:13:06,900 Cool? 278 00:13:06,900 --> 00:13:07,900 Ja. 279 00:13:07,900 --> 00:13:11,200 >> OBČINSTVO: je n ime spremenljivke? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Da. 281 00:13:11,700 --> 00:13:14,870 Torej, če bomo flip nazaj eno diapozitiv, n ime 282 00:13:14,870 --> 00:13:18,660 vrednosti notranjosti vozlišče v našem povezani seznam. 283 00:13:18,660 --> 00:13:21,510 In vem, da lahko dobite malo malo zmedeno, ker smo tudi 284 00:13:21,510 --> 00:13:24,680 kliče stvar da želimo izbrisati n. 285 00:13:24,680 --> 00:13:26,717 Torej, to je, če se to ena vrstica prihaja. 286 00:13:26,717 --> 00:13:27,671 Ja? 287 00:13:27,671 --> 00:13:31,010 >> OBČINSTVO: Kaj imaš [Neslišno], kako delujejo? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Kazalec [neslišno]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Seveda. 291 00:13:37,520 --> 00:13:40,027 Se pogovarjaš about-- ki črta? 292 00:13:40,027 --> 00:13:41,526 OBČINSTVO: zadnja vrstica [neslišno]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: Seveda, v redu. 295 00:13:45,250 --> 00:13:48,540 Torej, si oglejmo na sliki v Da, da poskusite to razložiti. 296 00:13:48,540 --> 00:13:51,030 Žal mi je, za kamero, je bilo vprašanje, 297 00:13:51,030 --> 00:13:54,580 moremo razložiti kazalec arrow Naslednji kazalec prejšnje. 298 00:13:54,580 --> 00:14:01,510 OK, recimo, da smo ob petih in naš cilj je, da se črta pet. 299 00:14:01,510 --> 00:14:07,240 Torej kazalec zraven, kateri od teh tri vozlišča nam to daje? 300 00:14:07,240 --> 00:14:10,840 To nas pripelje do šestega vozlišča, kajne? 301 00:14:10,840 --> 00:14:16,490 >> OK, zdaj smo prosi za šest je prejšnja. 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 In smo ponastavitvi to enaka do štiri, 304 00:14:20,210 --> 00:14:23,214 kar se je zgodilo, da se je pet prejšnje. 305 00:14:23,214 --> 00:14:25,180 Vem, da je super težko slediti. 306 00:14:25,180 --> 00:14:29,286 Res priporočam rišete slike če dobiš vprašanje, kot je ta. 307 00:14:29,286 --> 00:14:30,242 Ja? 308 00:14:30,242 --> 00:14:32,617 >> OBČINSTVO: Je razlog, da nimamo [neslišno]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Točno tako. 311 00:14:38,570 --> 00:14:44,800 Torej je vprašanje, zakaj ne potrebujemo tukaj preveriti? 312 00:14:44,800 --> 00:14:48,160 Zakaj ne moramo preveriti, kazalec prejšnja ni enaka NULL? 313 00:14:48,160 --> 00:14:50,070 In to zato, ker smo jih že izločiti 314 00:14:50,070 --> 00:14:52,490 v primeru, če je kazalec na samem začetku. 315 00:14:52,490 --> 00:14:54,060 Zelo dobro vprašanje. 316 00:14:54,060 --> 00:14:56,880 Karkoli drugega na tem? 317 00:14:56,880 --> 00:14:57,380 OK, v redu. 318 00:14:57,380 --> 00:14:58,360 Torej, kaj je tako končal. 319 00:14:58,360 --> 00:14:59,890 Mi smo skoraj tam. 320 00:14:59,890 --> 00:15:01,310 >> Pa kaj, če je to na glavi? 321 00:15:01,310 --> 00:15:03,360 Kaj če bi namesto poskuša izbrisati pet, 322 00:15:03,360 --> 00:15:06,240 smo dejansko želel črtati štiri? 323 00:15:06,240 --> 00:15:07,270 Kaj bi morali storiti? 324 00:15:07,270 --> 00:15:09,610 No, želim ponastaviti mojo glavo, kaj? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Je zakričal? 327 00:15:15,585 --> 00:15:16,710 OBČINSTVO: ena po njej. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Beautiful. 329 00:15:17,460 --> 00:15:26,430 OK, tako želijo smo seznam, ki se kaže da ne glede na naša pointer naslednji vozlišče. 330 00:15:26,430 --> 00:15:29,040 Dobro. 331 00:15:29,040 --> 00:15:30,810 In samo za popolnost ih sake, bi mi 332 00:15:30,810 --> 00:15:35,590 želeli preveriti, da tako dolgo, kot naš seznam ni nič, dokler je naš seznam ni 333 00:15:35,590 --> 00:15:42,730 prazno, nato pa želimo določiti naša prejšnja enaka null. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Vprašanje tako daleč? 336 00:15:50,230 --> 00:15:53,205 En korak stran from--? 337 00:15:53,205 --> 00:15:55,530 >> OBČINSTVO: Ali bi bilo, če Seznam ni enaka NULL? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Ja, ste popolnoma prav. 339 00:15:56,950 --> 00:15:58,130 Tako mi je žal. 340 00:15:58,130 --> 00:16:00,040 Je seznam ni enaka nič. 341 00:16:00,040 --> 00:16:01,915 Super. 342 00:16:01,915 --> 00:16:04,245 Poskus, da bi vse to na zaslonu. 343 00:16:04,245 --> 00:16:06,870 To je nekako padli. 344 00:16:06,870 --> 00:16:07,730 Oprostite, fantje. 345 00:16:07,730 --> 00:16:11,874 In nenazadnje, vsi moramo storiti, je donos. 346 00:16:11,874 --> 00:16:12,840 OK. 347 00:16:12,840 --> 00:16:15,400 To je bilo veliko gnetejo v res hitro. 348 00:16:15,400 --> 00:16:16,800 Vzemite si trenutek, da si tega konec. 349 00:16:16,800 --> 00:16:18,216 Povej mi, če imate kakršnakoli vprašanja. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Ja? 352 00:16:20,732 --> 00:16:26,940 >> OBČINSTVO: Če je na seznamu glava, then-- počakajte, nevermind. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, dobro. 354 00:16:27,700 --> 00:16:30,987 Torej, to je, če seznam je na glavi, ga odstranite, da karkoli bomo vstavljena. 355 00:16:30,987 --> 00:16:31,486 Ja? 356 00:16:31,486 --> 00:16:33,777 >> OBČINSTVO: Ali lahko pojasnite, Prvo, če še enkrat izjavo? 357 00:16:33,777 --> 00:16:36,149 Če kazalec n enak n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Seveda. 359 00:16:36,690 --> 00:16:42,780 Torej, naš cilj tega celotnega funkcije je izbrisati vozlišča, ki ima vrednost n. 360 00:16:42,780 --> 00:16:47,460 Torej, če bomo našli, saj smo ponavljanjem preko našega seznama, 361 00:16:47,460 --> 00:16:51,770 vozlišče z vrednostjo n, ki je ena želimo izbrisati. 362 00:16:51,770 --> 00:16:57,286 Torej vse brisanja zgodi znotraj tega veliko, če izjavo. 363 00:16:57,286 --> 00:16:58,593 Ali je to smiselno? 364 00:16:58,593 --> 00:16:59,480 Cool. 365 00:16:59,480 --> 00:16:59,990 Ja? 366 00:16:59,990 --> 00:17:02,864 >> OBČINSTVO: Mogoče si ne more videti da, vendar ne boste potrebovali tudi linijo 367 00:17:02,864 --> 00:17:06,024 za pomikate po seznamu? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Awesome. 369 00:17:06,690 --> 00:17:10,896 Oglejmo bi to gor malo, in bomo vrgli to pravico v dnu. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Mogoče bi svet imel bila nekoliko boljša ideja. 372 00:17:15,490 --> 00:17:17,829 Torej, kako bi jaz premakniti kazalec naprej? 373 00:17:17,829 --> 00:17:20,184 >> OBČINSTVO: Pointer enak kazalec plus ena. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Beautiful. 375 00:17:21,599 --> 00:17:25,050 Tako da nam omogoča, da Naprej ponavljanjem skozi. 376 00:17:25,050 --> 00:17:26,251 OK. 377 00:17:26,251 --> 00:17:27,750 OBČINSTVO: Ali ne bi bilo treba drugega? 378 00:17:27,750 --> 00:17:29,028 HANNAH: Še enkrat? 379 00:17:29,028 --> 00:17:32,444 OBČINSTVO: Ali ne bi bilo treba drugje po veliki stari če 380 00:17:32,444 --> 00:17:35,519 Izjava [neslišno]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: Kateri del? 382 00:17:36,310 --> 00:17:38,350 Žal mi je. 383 00:17:38,350 --> 00:17:41,800 >> OBČINSTVO: prečkanje, ne bi smelo biti tudi drugje? 384 00:17:41,800 --> 00:17:43,550 HANNAH: Absolutno bi lahko imeli drugega. 385 00:17:43,550 --> 00:17:46,930 Ker imam pravico do povratka tam, ne potrebujete drugega. 386 00:17:46,930 --> 00:17:48,760 Ampak ja, dobro vprašanje. 387 00:17:48,760 --> 00:17:50,170 OK, ja? 388 00:17:50,170 --> 00:17:52,878 OBČINSTVO: Lahko razmišljamo o kazalca da se premika skozi seznam 389 00:17:52,878 --> 00:17:56,610 kot pri na vrednosti vsako vozlišče v seznamu? 390 00:17:56,610 --> 00:18:00,650 Ali pa bi morali razmišljati o njem kot vrsta zunaj seznama? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: Bodisi eden je v redu, mislim. 392 00:18:02,350 --> 00:18:05,880 Tako sem jo predstavljate, je Rečem, OK, sem kazalec. 393 00:18:05,880 --> 00:18:06,520 In to sem jaz. 394 00:18:06,520 --> 00:18:07,150 To je moja roka. 395 00:18:07,150 --> 00:18:09,960 Grem, da kaže na drugačen stvari, ki jih želim Ponovil skozi. 396 00:18:09,960 --> 00:18:12,270 Najprej grem na točko z glavo seznama. 397 00:18:12,270 --> 00:18:14,144 In da me Jaz sem pravi dogaja, da kaže na štiri. 398 00:18:14,144 --> 00:18:18,060 In tako se mi, da je zunanja na seznam, Lahko kažejo na vsakega od teh elementov. 399 00:18:18,060 --> 00:18:19,520 Zato mislim, da sam od sebe kot kazalec. 400 00:18:19,520 --> 00:18:21,645 OBČINSTVO: Torej, če izbrišete eden od teh elementov, 401 00:18:21,645 --> 00:18:23,404 ste sami izbrišete, tako rekoč. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Točno tako. 403 00:18:24,070 --> 00:18:25,920 Tako da izbrišete stvar ste obrnjena na. 404 00:18:25,920 --> 00:18:28,340 Torej, v primeru, da smo videli, kje smo 405 00:18:28,340 --> 00:18:31,670 poskuša izbrisati pet, ko sem poudaril, da pet, 406 00:18:31,670 --> 00:18:34,200 Želim izbrisati stvar, ki sem poudaril, da. 407 00:18:34,200 --> 00:18:35,870 Ravno prav. 408 00:18:35,870 --> 00:18:36,577 Ja? 409 00:18:36,577 --> 00:18:39,410 OBČINSTVO: Ali smo poskrbeli primer, kjer je n ni na seznamu? 410 00:18:39,410 --> 00:18:40,460 HANNAH: Če n ni na seznamu? 411 00:18:40,460 --> 00:18:43,501 Vse, kar se bo zgodilo je, da ste bo ponovitev prek in izbirajte 412 00:18:43,501 --> 00:18:47,616 skozi, nato pa boste priti kazalec počutje null, 413 00:18:47,616 --> 00:18:48,990 in potem si bo treba storiti. 414 00:18:48,990 --> 00:18:50,812 >> OBČINSTVO: Torej imamo vrniti ničesar? 415 00:18:50,812 --> 00:18:51,520 HANNAH: Mi lahko. 416 00:18:51,520 --> 00:18:54,500 Tako, da če je definirano ta Funkcija, sem rekel, da se vrne 417 00:18:54,500 --> 00:18:55,770 nična glede na to. 418 00:18:55,770 --> 00:18:58,360 Vendar bi lahko imeli nekaj kot vračanje celo število, 419 00:18:58,360 --> 00:19:00,920 in so se vrnili negativna 1, če ne. 420 00:19:00,920 --> 00:19:03,070 Nekaj ​​takega. 421 00:19:03,070 --> 00:19:04,494 Vprašanja with-- ja? 422 00:19:04,494 --> 00:19:05,410 OBČINSTVO: [neslišno]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Oprostite? 424 00:19:05,993 --> 00:19:07,419 OBČINSTVO: [neslišno]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Seveda. 426 00:19:07,960 --> 00:19:11,730 Tako da je actual-- ko smo jih storiti vse to delo premikanje 427 00:19:11,730 --> 00:19:16,530 vse te puščice okoli, naša celotna Cilj je bil, da se znebite vozlišča 428 00:19:16,530 --> 00:19:18,230 da iščeva. 429 00:19:18,230 --> 00:19:21,610 Torej, v tem primeru, sprostitev pointer, če sem poudaril, da pet, 430 00:19:21,610 --> 00:19:24,670 to je kot izbris te srednji vozlišče. 431 00:19:24,670 --> 00:19:27,250 To je prost kazalec del. 432 00:19:27,250 --> 00:19:29,090 Da je smiselno? 433 00:19:29,090 --> 00:19:31,390 >> OBČINSTVO: Torej niti pomislil si ne [neslišno]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: Torej smo predpostavili na začetku smo imeli nekaj seznam, ki je bil already-- 435 00:19:36,060 --> 00:19:37,220 jim je dal to skupaj. 436 00:19:37,220 --> 00:19:39,761 Torej, da bi lahko zgradili to Seznam, sigurno so [neslišno]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Cool. 439 00:19:42,750 --> 00:19:44,490 Vse ostalo s tem? 440 00:19:44,490 --> 00:19:46,386 Ja? 441 00:19:46,386 --> 00:19:49,204 >> OBČINSTVO: Kaj pa, če seznam ni enako ničelno črto? 442 00:19:49,204 --> 00:19:49,704 [Neslišno]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH: Right here? 445 00:19:53,080 --> 00:19:53,840 OBČINSTVO: Ja. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, vse delam se bom samo pazite, 447 00:19:57,370 --> 00:20:03,250 da preden sem poskušal na seznam sledenja, preden sem poskušal dostopati do prejšnje, 448 00:20:03,250 --> 00:20:07,210 Želim, da se prepriča, da to ni null, da ne dobim napako SEG. 449 00:20:07,210 --> 00:20:08,400 Cool. 450 00:20:08,400 --> 00:20:10,820 >> OK, vem, da je to precej Veliko priti skozi. 451 00:20:10,820 --> 00:20:14,950 Torej bo to slide biti so na voljo za vas. 452 00:20:14,950 --> 00:20:17,341 Tako da lahko greš skozi njo podrobneje. 453 00:20:17,341 --> 00:20:17,841 Ja? 454 00:20:17,841 --> 00:20:19,749 >> OBČINSTVO: Zakaj seznam [neslišno]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Seveda. 457 00:20:24,670 --> 00:20:27,390 Torej seznam res kaže na Ta element tukaj, 458 00:20:27,390 --> 00:20:29,200 Prvi element v seznamu. 459 00:20:29,200 --> 00:20:30,748 Tako da ne more imeti prejšnje. 460 00:20:30,748 --> 00:20:31,736 Ja? 461 00:20:31,736 --> 00:20:35,194 >> OBČINSTVO: Ali kazalec točko Na istem naslovu v pomnilniku? 462 00:20:35,194 --> 00:20:38,404 Ali to kaže na enako Naslov v spominu kot vozlišče 463 00:20:38,404 --> 00:20:40,640 da je obrnjena k? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Ja, pa opozarja s tem vozlišču v pomnilniku. 465 00:20:43,865 --> 00:20:47,190 >> OBČINSTVO: Ja, tako ko [neslišno]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: V smislu, ja. 467 00:20:50,580 --> 00:20:51,280 OK. 468 00:20:51,280 --> 00:20:52,997 Dobro, pojdimo skupaj s tem. 469 00:20:52,997 --> 00:20:55,330 In če imate več vprašanj, ostani na koncu, 470 00:20:55,330 --> 00:20:57,130 in lahko gremo skozi to še enkrat. 471 00:20:57,130 --> 00:20:58,120 OK, v redu. 472 00:20:58,120 --> 00:21:00,490 Zdaj smo dobili, da se premaknete na da hash tabele, poizkusih 473 00:21:00,490 --> 00:21:04,940 in drevesa, ki imaš super poznajo in-p nastavite pet, Speller. 474 00:21:04,940 --> 00:21:11,020 >> Torej hash tabela je le matrika s posamezno povezanih seznamov 475 00:21:11,020 --> 00:21:14,050 ali dvojno povezani seznam, ki prihajajo izven nje. 476 00:21:14,050 --> 00:21:16,380 Torej imamo neko o asociativni array. 477 00:21:16,380 --> 00:21:21,280 In kako vemo, katere od teh nizi vedra, da bi dobili v, 478 00:21:21,280 --> 00:21:24,137 bomo uporabili funkcijo razpršitve. 479 00:21:24,137 --> 00:21:26,470 Torej, v tem primeru je lahko kdorkoli kdo bi si mislil, da funkcijo razpršitve 480 00:21:26,470 --> 00:21:28,636 bi zgolj na osnovi nekaterih za vhod in izhod? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> OBČINSTVO: Pismo število abecede. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Točno tako. 484 00:21:33,860 --> 00:21:36,160 To samo jih postavlja v abecednem vrstnem redu. 485 00:21:36,160 --> 00:21:39,280 Vse, ki se začne z Je dal v prvo vedro. 486 00:21:39,280 --> 00:21:43,340 Vse, kar je z B je dal v Drugi vedro, tako naprej, in tako naprej. 487 00:21:43,340 --> 00:21:45,620 Super, OK. 488 00:21:45,620 --> 00:21:48,980 In razpršilna funkcija je vsako funkcija, ki ima v besedi 489 00:21:48,980 --> 00:21:51,910 in vam bo povedal, kaj bucket spada v. 490 00:21:51,910 --> 00:21:55,150 Torej, katere vstop v našem Niz spada v. 491 00:21:55,150 --> 00:21:58,080 >> Torej, vsakič, ko dam hash funkcijo besedo, 492 00:21:58,080 --> 00:22:00,660 to naj bi mi povedal, enako postavite vsak čas. 493 00:22:00,660 --> 00:22:03,270 Torej, če bomo uporabili funkcijo razpršitve iz prejšnjega drsnika 494 00:22:03,270 --> 00:22:05,950 kjer smo razvrščanje po prva črka abecede, 495 00:22:05,950 --> 00:22:08,230 vsakič, ko sem dal moj hash funkcija "jabolko" 496 00:22:08,230 --> 00:22:10,180 mora vedno mi vrni 0. 497 00:22:10,180 --> 00:22:12,890 Torej, če imam jabolko postaviti v mojem hash tabele, 498 00:22:12,890 --> 00:22:17,700 če dam "jabolko" z mojo hash funkcijo, to bi rekel, pojdi ga dal v vedro 0. 499 00:22:17,700 --> 00:22:19,980 Če iščem jabolko v moji hash tabele 500 00:22:19,980 --> 00:22:24,340 in rečem, kjer bi jabolko v živo, prosite hash funkcijo. 501 00:22:24,340 --> 00:22:26,900 In pravi, pojdite na bucket 0. 502 00:22:26,900 --> 00:22:29,150 Vse v redu? 503 00:22:29,150 --> 00:22:32,660 Vprašanja z hash funkcije? 504 00:22:32,660 --> 00:22:34,570 Super. 505 00:22:34,570 --> 00:22:37,320 >> Tukaj je nekaj več Podrobna razlaga 506 00:22:37,320 --> 00:22:39,570 kaj lahko razpršilna funkcija izgledal. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Vse je v redu. 509 00:22:42,960 --> 00:22:45,960 Zdaj, problem z hash funkcije, je v idealnem svetu, 510 00:22:45,960 --> 00:22:48,870 bi imeli le eno stvar na posamezne segmente. 511 00:22:48,870 --> 00:22:50,900 Toda v resnici, tam je Ne samo ena beseda 512 00:22:50,900 --> 00:22:54,280 ki se začne z A. Tam ni samo ena beseda, ki se začne z B. Torej 513 00:22:54,280 --> 00:22:56,960 V tem primeru, če želimo nenadoma dobili "berry" 514 00:22:56,960 --> 00:22:58,710 in želimo, da ga v naši hash tabele, 515 00:22:58,710 --> 00:23:03,640 in vidimo, oh, ne, banana je že tam, kaj bomo storili? 516 00:23:03,640 --> 00:23:05,900 >> No, imamo dve možnosti. 517 00:23:05,900 --> 00:23:07,990 Prva možnost je, linearna sondiranje, ki 518 00:23:07,990 --> 00:23:11,100 pomeni le Poiščita Naslednji prazno vedro. 519 00:23:11,100 --> 00:23:14,100 Poiščita naslednjo prazno vnos niza. 520 00:23:14,100 --> 00:23:15,750 In samo da "berry" tam. 521 00:23:15,750 --> 00:23:18,880 Zato vem, da je moral iti z banano v vedro eno. 522 00:23:18,880 --> 00:23:22,155 Ampak ga samo dal v vedro tri, ker vedro tri je prazna. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Druga možnost je verjetno kaj si izvajala 525 00:23:26,680 --> 00:23:29,220 v p-set, kjer vas imeli ločeno veriženja. 526 00:23:29,220 --> 00:23:33,990 Tako da vsak od vaših vedra, vsako od vaših matrike elementov, 527 00:23:33,990 --> 00:23:38,410 ne le ima eno besede, ampak dejansko ima kazalec na seznam besed. 528 00:23:38,410 --> 00:23:41,880 Tako da, če boste imeli banana v hash tabele 529 00:23:41,880 --> 00:23:44,740 in nenadoma je želel dodati jagodami, ni problema. 530 00:23:44,740 --> 00:23:51,110 Samo dodamo jagodo na koncu, ali začetek, vašega povezani seznam. 531 00:23:51,110 --> 00:23:54,040 OK, super. 532 00:23:54,040 --> 00:23:58,490 Vprašanja z hash mize, preden gremo na? 533 00:23:58,490 --> 00:23:59,850 >> Vse je v redu. 534 00:23:59,850 --> 00:24:01,070 Drevesa in poskuša. 535 00:24:01,070 --> 00:24:07,980 OK, tako da je bila to ena možnost za izvajanje slovar. 536 00:24:07,980 --> 00:24:09,100 Lahko bi naredili poskus. 537 00:24:09,100 --> 00:24:13,420 Torej, to je posebna vrsta drevesa, ki obnaša kot hash tabele na več ravneh. 538 00:24:13,420 --> 00:24:16,862 Tako da boste videli sliko kjer imate nizom, ki 539 00:24:16,862 --> 00:24:19,320 opozarja na kup nizi ki kažejo na kup nizi 540 00:24:19,320 --> 00:24:20,390 ki kažejo na kup nizi. 541 00:24:20,390 --> 00:24:23,140 In bomo videli, kaj da bi izgledal na prihodnji stekelce. 542 00:24:23,140 --> 00:24:26,070 In bolj splošno, drevo je le vsaka struktura podatkov 543 00:24:26,070 --> 00:24:29,710 v katerem so podatki organizirano v neki hierarhiji. 544 00:24:29,710 --> 00:24:32,610 Torej, ko smo videli, imamo neke vrste razumevanja 545 00:24:32,610 --> 00:24:36,130 o najvišji ravni, naslednja stopnja, Naslednja stopnja, višji nivo. 546 00:24:36,130 --> 00:24:39,690 Torej, to je verjetno najbolj jasno z nekaterimi konkretnimi primeri. 547 00:24:39,690 --> 00:24:40,880 Torej, tukaj je naše drevo. 548 00:24:40,880 --> 00:24:42,970 Vidite lahko, da ji Ima posebne vrednosti 549 00:24:42,970 --> 00:24:45,480 da začnemo s tem korenskega vozlišča, ki je eno. 550 00:24:45,480 --> 00:24:47,640 In bomo lahko spustimo skozi naše drevo. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Binarno drevo zlasti vrsta drevesa. 553 00:24:53,910 --> 00:24:56,770 In samo specifikacija za binarno drevo 554 00:24:56,770 --> 00:25:01,130 je, da je vsako vozlišče največ dveh listih. 555 00:25:01,130 --> 00:25:03,960 Tako ne boste videli vse o imajo ti vozlišča tri ali štiri 556 00:25:03,960 --> 00:25:06,880 ali kakšno drugo število listov. 557 00:25:06,880 --> 00:25:11,310 In potem še bolj specifične je dvojiško iskalno drevo 558 00:25:11,310 --> 00:25:18,010 kjer je vsak vozel na levi vozlišče se dogaja, da imajo vrednost manjša. 559 00:25:18,010 --> 00:25:21,180 In vsaka vrednost Pravica se bo večji. 560 00:25:21,180 --> 00:25:26,900 Torej, če ste videli 44 je na naši korenu, levo, 11, 22 in 33 561 00:25:26,900 --> 00:25:28,940 vsi manj kot naše korenine. 562 00:25:28,940 --> 00:25:33,890 In na desni so vsi številke bigger-- 66, 55 in 77. 563 00:25:33,890 --> 00:25:37,380 In ta lastnost velja na vsaki ravni drevesa. 564 00:25:37,380 --> 00:25:42,690 >> Torej, ko gremo na 22, 11 in 33, še 11 565 00:25:42,690 --> 00:25:46,950 je manjši od 22 in 33 je večji od 22. 566 00:25:46,950 --> 00:25:50,160 In to omogoča lažje iskanje ker če iščemo več, 567 00:25:50,160 --> 00:25:53,877 vemo točno kateri podružnica slediti navzdol. 568 00:25:53,877 --> 00:25:56,210 Zato bi bilo treba to vas je spomnil, malo binarnega iskanja. 569 00:25:56,210 --> 00:25:56,967 Ja? 570 00:25:56,967 --> 00:25:58,835 >> OBČINSTVO: Torej, ko ste opisuje binarno, 571 00:25:58,835 --> 00:26:00,587 ste rekli, da ima največ dveh listih? 572 00:26:00,587 --> 00:26:01,170 HANNAH: Mm-hm. 573 00:26:01,170 --> 00:26:02,580 OBČINSTVO: Bi imel manj? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Ja. 575 00:26:03,121 --> 00:26:06,720 Torej, recimo, na primer, ni imela celo število stvari 576 00:26:06,720 --> 00:26:11,791 in ga ne bi napolnili vse vaše listi, to je v redu, če eden ima. 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 Super. 579 00:26:12,789 --> 00:26:15,930 Katera koli druga vprašanja na drevesih? 580 00:26:15,930 --> 00:26:16,670 OK. 581 00:26:16,670 --> 00:26:20,110 >> Nazaj na naših poskusih, kot sem govoril o tem malo prej, 582 00:26:20,110 --> 00:26:23,900 kako imamo te nize več ravneh. 583 00:26:23,900 --> 00:26:26,280 Torej, v tem primeru, bomo začeli na vrhu. 584 00:26:26,280 --> 00:26:29,030 In bomo lahko sledili vsako dano besedo dol. 585 00:26:29,030 --> 00:26:30,780 Torej, recimo, da smo želeli iskati Turing. 586 00:26:30,780 --> 00:26:34,380 Začnemo pri T, mu sledimo navzdol na matriko, ki vsebuje U, 587 00:26:34,380 --> 00:26:37,350 in ji sledimo navzdol, dokler ne bomo doseže to malo delto, ki 588 00:26:37,350 --> 00:26:39,060 pove nam, da si našel besedo. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Jasno o poskusih? 591 00:26:44,120 --> 00:26:48,138 Kaj bi hodil tja? 592 00:26:48,138 --> 00:26:48,908 Ja? 593 00:26:48,908 --> 00:26:51,866 OBČINSTVO: Ali simbol delta morali zasedajo prostor v poskusu? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Ja, tako pa ne nujno treba niti delta. 595 00:26:54,532 --> 00:26:57,760 Vendar moramo na nek način do Obvestite naše computer-- žal, 596 00:26:57,760 --> 00:27:01,130 tako da vemo, da je TUR ni beseda. 597 00:27:01,130 --> 00:27:04,180 Ker recimo, da nismo imeli Ta koncept delta, ta koncept 598 00:27:04,180 --> 00:27:09,850 za čestitke, ki jih je našel besedo, da bi šel skozi in Ponovil T-U-R, 599 00:27:09,850 --> 00:27:11,300 in potem pravijo, super, sem ga našel! 600 00:27:11,300 --> 00:27:12,670 To mora biti beseda. 601 00:27:12,670 --> 00:27:13,720 Ampak to je res ni. 602 00:27:13,720 --> 00:27:15,310 Želimo cel Turing biti beseda. 603 00:27:15,310 --> 00:27:17,760 Torej, moramo imeti nekaj v Konec, ki pravi, čestitke, 604 00:27:17,760 --> 00:27:19,051 ste ugotovili legitimno besedo. 605 00:27:19,051 --> 00:27:21,680 OBČINSTVO: Torej, če ste imeli kot 26 črk v abecedi, 606 00:27:21,680 --> 00:27:24,560 bi si dejansko morali 27 ključev v poskusu? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Awesome, ja. 608 00:27:26,010 --> 00:27:28,210 Torej v bistvu, mislim, da bo na naslednji diapozitiv. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Kje, če imate vozlišče v poskusu, da ste 611 00:27:32,880 --> 00:27:35,800 dogaja, da imajo 27 otrok namesto 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Vsa vprašanja s tem? 614 00:27:40,050 --> 00:27:40,550 Ja? 615 00:27:40,550 --> 00:27:44,569 OBČINSTVO: Zakaj poskuša prevzeti tako veliko prostora [neslišno], kakor greš? 616 00:27:44,569 --> 00:27:47,629 Zato se šteje, da je [neslišno]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Seveda. 618 00:27:48,170 --> 00:27:48,790 Pojdimo nazaj. 619 00:27:48,790 --> 00:27:52,350 Vprašanje je, zakaj se poskuša toliko večji 620 00:27:52,350 --> 00:27:54,620 kot nekaj podobnega hash tabele. 621 00:27:54,620 --> 00:27:57,790 Tako za vsako od teh stopenj, tudi če oni ne sestavijo tukaj, 622 00:27:57,790 --> 00:28:01,250 moraš imeti vseh 26 znakov. 623 00:28:01,250 --> 00:28:04,420 In razlog, da ne morete pravijo, oh, ampak kot za Turing, I 624 00:28:04,420 --> 00:28:07,570 ni treba, da imajo katerokoli od tistih, Iste stvari na ravni U. No, 625 00:28:07,570 --> 00:28:11,390 če nenadoma želel dodati nekaj, kar je bilo kot T-H, 626 00:28:11,390 --> 00:28:14,800 kar bi morali imeti Zmožnost dodajanja to besedo. 627 00:28:14,800 --> 00:28:17,330 Torej, za vsako posamezno črko, boste imeli 628 00:28:17,330 --> 00:28:19,730 da imajo kup nizi, ki prihajajo izven nje. 629 00:28:19,730 --> 00:28:24,060 Tako da lahko vidite, kako bi ga dobil res velika, zelo hitro. 630 00:28:24,060 --> 00:28:26,560 Katera koli druga vprašanja? 631 00:28:26,560 --> 00:28:28,980 Vse je v redu. 632 00:28:28,980 --> 00:28:29,832 Ja? 633 00:28:29,832 --> 00:28:33,210 >> OBČINSTVO: Ko se poskuša hitreje kot hash tabel? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Ko se poskuša hitreje kot hash tabel? 635 00:28:36,280 --> 00:28:39,120 Torej, če si imel res slab razpršilna funkcija. 636 00:28:39,120 --> 00:28:41,840 Torej, recimo, da sem bil všeč, tukaj je vaša hash funkcija. 637 00:28:41,840 --> 00:28:43,660 Ni važno, kaj beseda si mi dal, sem vedno 638 00:28:43,660 --> 00:28:47,740 dogaja, da ga v začetku polja 0. 639 00:28:47,740 --> 00:28:52,000 In tako smo na koncu s samo polaganje vse v enem velikem dolgo povezani seznam. 640 00:28:52,000 --> 00:28:58,740 In tako bi lookup čas sprejme v najslabšem n, če je na samem koncu našega seznama. 641 00:28:58,740 --> 00:29:03,150 S poskusi smo morali ponoviti skozi črk v besede. 642 00:29:03,150 --> 00:29:07,080 Torej, tudi če smo dodali kup več besed v našem poskusu, 643 00:29:07,080 --> 00:29:09,620 da nas ne bi več najti določeno besedo. 644 00:29:09,620 --> 00:29:11,750 >> Vse, kar moramo storiti, je, za Na primer, v tem primeru, 645 00:29:11,750 --> 00:29:17,170 recimo iščemo zoom, mi bi morali ponoviti čez 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, štiri črke. 647 00:29:19,840 --> 00:29:22,250 Tako, da je samo Dolžina besede zoom. 648 00:29:22,250 --> 00:29:25,400 Ni važno, koliko več besed smo se v tem poskusu. 649 00:29:25,400 --> 00:29:30,225 Mi lahko vedno dobite v teh štirih korakih. 650 00:29:30,225 --> 00:29:31,215 Super. 651 00:29:31,215 --> 00:29:32,205 Ja? 652 00:29:32,205 --> 00:29:34,185 >> OBČINSTVO: Torej [neslišno] je matrika, kajne? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 OBČINSTVO: Če ste išče [neslišno] 655 00:29:37,155 --> 00:29:40,929 bi morali iti skozi Vaše matrika najti [neslišno]? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Seveda. 657 00:29:41,470 --> 00:29:44,000 OBČINSTVO: Ali ni to trajalo več časa? 658 00:29:44,000 --> 00:29:46,370 HANNAH: Če bom pravijo, da je moje zaporedje vedno 659 00:29:46,370 --> 00:29:49,250 bo A, B, C, D, E, F, G, bla bla bla, 660 00:29:49,250 --> 00:29:51,630 tako da, če sem vedno vedel, da je V istem točno določenem vrstnem redu, 661 00:29:51,630 --> 00:29:53,880 če sem vedno vedel, da je po abecednem vrstnem redu, 662 00:29:53,880 --> 00:29:57,860 Jaz lahko samo povem, O je število tako in tako v abecedi. 663 00:29:57,860 --> 00:29:59,620 Samo skoči na to mesto. 664 00:29:59,620 --> 00:30:01,860 Saj se spomnite, z nizi, lahko dostopate 665 00:30:01,860 --> 00:30:06,590 vsak element tega polja v stalna čas, če vemo, kje smo iskali. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Ja? 668 00:30:09,580 --> 00:30:12,005 >> OBČINSTVO: Na prejšnji [neslišno] 27 drsi, 669 00:30:12,005 --> 00:30:14,430 ampak 26 za prvo. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Oprostite? 671 00:30:15,400 --> 00:30:18,800 >> OBČINSTVO: Ali ni prva ena 0, tako da ne bi bilo 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: Seveda, tako da, ko smo rekli, 27, ki je dogaja, da nam indeksi 0 do 26. 673 00:30:24,900 --> 00:30:28,220 Ampak, če ste dejansko računajo jih ven, da se dogaja, da je 27. 674 00:30:28,220 --> 00:30:30,007 Dobro vprašanje. 675 00:30:30,007 --> 00:30:30,590 Kaj drugega? 676 00:30:30,590 --> 00:30:31,200 Ja? 677 00:30:31,200 --> 00:30:34,420 >> OBČINSTVO: Torej se poskuša počasneje kot hash tabel? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: poskuša se bodo, v teorija, hitreje kot razpršene tabele 679 00:30:37,920 --> 00:30:39,760 ampak zasedejo več pomnilnika. 680 00:30:39,760 --> 00:30:40,534 Ja? 681 00:30:40,534 --> 00:30:41,450 OBČINSTVO: [neslišno]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Žal mi je, nisem vas slišala. 684 00:30:47,484 --> 00:30:48,400 OBČINSTVO: [neslišno]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0 do 25 vam 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: od 0 do 25, bi dam 26, desno. 688 00:30:56,958 --> 00:30:58,457 >> OBČINSTVO: In potem [neslišno]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Right. 690 00:30:59,040 --> 00:31:04,760 Tako se je število smo podrobno je Število stvari v naši matriki. 691 00:31:04,760 --> 00:31:07,260 Torej, če imamo 27, to je dogaja, da nam je 0 692 00:31:07,260 --> 00:31:10,620 preko 26, ki bo nam prostor za, v tem primeru, 693 00:31:10,620 --> 00:31:12,770 Ne bom tudi opuščaj. 694 00:31:12,770 --> 00:31:17,040 Tako smo dobili od 0 do 25 let, so prvih 26 črk abecede, 695 00:31:17,040 --> 00:31:18,990 ali vseh 26 črk abecede. 696 00:31:18,990 --> 00:31:21,190 In potem, da je zadnji stvar, na začetku 26., je 697 00:31:21,190 --> 00:31:24,598 bo poizvedba oznaka, ali delta. 698 00:31:24,598 --> 00:31:26,960 Kaj drugega? 699 00:31:26,960 --> 00:31:29,130 Super. 700 00:31:29,130 --> 00:31:30,020 Izgubil sem prostor. 701 00:31:30,020 --> 00:31:31,020 OK, v redu. 702 00:31:31,020 --> 00:31:33,240 >> Tako smo že dotaknil tega. 703 00:31:33,240 --> 00:31:37,430 Ampak velik kompromis med poskusih in hash tabel 704 00:31:37,430 --> 00:31:39,720 je, da se poskuša zagotoviti, da teorija, konstantno poglej gor 705 00:31:39,720 --> 00:31:42,890 krat pa uporabite cel kup spomin. 706 00:31:42,890 --> 00:31:46,495 Vse je v redu, zdaj pa imamo nekoliko manj zapletene strukture, 707 00:31:46,495 --> 00:31:49,640 in bomo storili s C, in bomo premakniti desno skupaj. 708 00:31:49,640 --> 00:31:51,930 >> Torej nizov, to smo videli V predavanju, kjer boste 709 00:31:51,930 --> 00:31:55,020 imajo nekaj podobnega skladovnica pladnjev kjer 710 00:31:55,020 --> 00:31:57,330 Zadnja stvar, ki si dal na sklad se dogaja 711 00:31:57,330 --> 00:31:59,500 da je prva stvar, ki jo snemite. 712 00:31:59,500 --> 00:32:02,880 Torej, to je tisto, kar v resnici definira kup je, da je zadnja stvar, ki si dal na 713 00:32:02,880 --> 00:32:06,080 se bo najprej stvar, ki jo snemite. 714 00:32:06,080 --> 00:32:09,279 In terminologija, ki jih uporabljamo če bomo dal nekaj, 715 00:32:09,279 --> 00:32:12,070 če bomo nekaj dodati naša stack, pravimo, da potiska. 716 00:32:12,070 --> 00:32:14,970 In če vzamemo nekaj off, ga imenujemo živahen. 717 00:32:14,970 --> 00:32:17,080 In če se bomo izvajati sveženj, smo 718 00:32:17,080 --> 00:32:20,660 morajo biti prepričani, da bi spremljali tako velikost in zmogljivost. 719 00:32:20,660 --> 00:32:24,940 Tako da se je skupno število elementov smo lahko držite in trenutno število elementov 720 00:32:24,940 --> 00:32:27,880 da smo gospodarstvo. 721 00:32:27,880 --> 00:32:29,885 >> In zelo podobno, imamo čakalne vrste. 722 00:32:29,885 --> 00:32:34,510 In edina razlika je namesto s nizov, 723 00:32:34,510 --> 00:32:37,630 smo rekli, zadnja stvar, ki jo dajo na je prva stvar, ki jo snemite. 724 00:32:37,630 --> 00:32:40,940 Torej s čakalnimi vrstami, Prva stvar, ki smo mu v 725 00:32:40,940 --> 00:32:43,129 se bo Prva stvar vzamemo ven. 726 00:32:43,129 --> 00:32:45,420 Torej, to je tako, kot če ste dejansko podloga ki gre gor v trgovini 727 00:32:45,420 --> 00:32:48,140 in ste se pomagal, potem prva oseba v skladu 728 00:32:48,140 --> 00:32:50,880 bi morala biti prva oseba, ki bo pomagal. 729 00:32:50,880 --> 00:32:52,220 Zato, da bi čakalna vrsta. 730 00:32:52,220 --> 00:32:55,880 >> Zato moramo slediti velikosti, zmogljivosti, in glavo, saj smo 731 00:32:55,880 --> 00:33:01,130 bo trajalo vse off spredaj seznama namesto hrbta. 732 00:33:01,130 --> 00:33:03,480 Vprašanja o tem? 733 00:33:03,480 --> 00:33:06,330 Vsa vprašanja C, ki so vas motijo? 734 00:33:06,330 --> 00:33:09,590 Podatkovne strukture, vsaka od tega zabavno stvari? 735 00:33:09,590 --> 00:33:10,530 Vse je v redu, v redu. 736 00:33:10,530 --> 00:33:14,120 Tako da bom jo izroči Alison do skok v nekaj več programov. 737 00:33:14,120 --> 00:33:15,965 >> ALISON: Oh, bomo videli. 738 00:33:15,965 --> 00:33:17,370 Bomo videli, kako dobro delam tukaj. 739 00:33:17,370 --> 00:33:21,410 OK, bom poskusil in letenje skozi te stvari, fantje. 740 00:33:21,410 --> 00:33:24,540 Hannah šlo zelo v Globina na vseh svojih stvari. 741 00:33:24,540 --> 00:33:26,900 Bom poskusil, da bi vam pregled hiter blast 742 00:33:26,900 --> 00:33:31,290 tako da bomo lahko prišli do Davin z vsemi Fun JavaScript in varnostne stvari 743 00:33:31,290 --> 00:33:33,380 da morda ste dejansko želijo slišati več o tem. 744 00:33:33,380 --> 00:33:36,600 >> OK, kot je dejal, Hannah, če imate vprašanja, 745 00:33:36,600 --> 00:33:39,170 Jaz grem prehitro, prosim, da mi sporočite. 746 00:33:39,170 --> 00:33:42,114 Bom odgovoriti na vprašanja, kot je potrebno. 747 00:33:42,114 --> 00:33:45,280 Torej, za začetek, bomo začeli z verjetno ena od prvih stvari, 748 00:33:45,280 --> 00:33:48,730 ste se naučili s spleta programiranje, dovoljenja. 749 00:33:48,730 --> 00:33:52,720 Torej chmod, vidva Moral bi bilo mojstri to z vsemi spletu 750 00:33:52,720 --> 00:33:54,870 programiranje, ki ste jih počel v zadnjem času. 751 00:33:54,870 --> 00:33:57,320 To je v bistvu samo ukaz da spremeni dovoljenja 752 00:33:57,320 --> 00:34:00,779 ali dovoljenja za dostop naših datotečnega sistema predmetov. 753 00:34:00,779 --> 00:34:02,570 Seveda, dejansko glej ti, če ste 754 00:34:02,570 --> 00:34:04,910 ki imajo kakršne koli težave z njimi Med vašimi problematičnih sklopov, 755 00:34:04,910 --> 00:34:11,460 ste morda uporabljajo ls -l, ki je dolgo, da bi dobili pogled nekako kot to, 756 00:34:11,460 --> 00:34:14,209 kjer ste dejansko videli vsi dovolilnice za datoteko. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> In res, smo le, da bo šel skozi zelo hitro samo lepa 759 00:34:20,732 --> 00:34:21,940 veliko, kaj vsak od njih pomeni. 760 00:34:21,940 --> 00:34:24,481 Tako smo dni tukaj, ki samo stoji za imenik. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Očitno je tukaj, smo videli rwx, ki je bralne, pisalne in izvršljiv. 763 00:34:31,739 --> 00:34:37,090 To bi lahko tudi zastopali bitov, kar bomo dobili v na naslednji strani. 764 00:34:37,090 --> 00:34:40,699 Torej vsak triad da smo videli tukaj, tako da je tri triade. 765 00:34:40,699 --> 00:34:48,120 Imamo rwx, r nič, X in R nič x za to prvo datoteko. 766 00:34:48,120 --> 00:34:49,690 To je to splošno strukturo. 767 00:34:49,690 --> 00:34:50,940 >> Torej, imamo nekaj imenik. 768 00:34:50,940 --> 00:34:53,999 Imamo nekaj skupino uporabnikov s temi dovoljenji. 769 00:34:53,999 --> 00:34:57,040 Nekateri skupina, ki ima te dovoljenja, in svet, ki ima dovoljenje. 770 00:34:57,040 --> 00:34:59,420 Lahko si misliš o njih kot triado. 771 00:34:59,420 --> 00:35:01,130 Lahko si misliš o teh kot treh bitov. 772 00:35:01,130 --> 00:35:04,060 Tako da lahko imajo vrednosti kjerkoli od 0 navzgor 773 00:35:04,060 --> 00:35:07,350 do 7, ki je zato včasih smo vam chmod 774 00:35:07,350 --> 00:35:17,510 600 namesto chmod rw karkoli. 775 00:35:17,510 --> 00:35:19,170 Bomo dobili na primer tam. 776 00:35:19,170 --> 00:35:24,260 Ampak v bistvu, lahko si misliš od teh bodisi kot samo rwx, 777 00:35:24,260 --> 00:35:28,520 ali si lahko misliš o njih, kot nekateri številko, kjer je to prva tukaj 778 00:35:28,520 --> 00:35:31,480 pomeni število med 0 in 7, ta druga 779 00:35:31,480 --> 00:35:33,970 pomeni število med 0 in 7, in tretji 780 00:35:33,970 --> 00:35:38,245 predstavlja število med 0 in 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r je vrednost 4. w ima vrednost 2, in x 782 00:35:42,700 --> 00:35:49,230 ima vrednost 1, zato je ta dovoljenje tu bi chmod 700. 783 00:35:49,230 --> 00:35:53,520 Ker v tem primeru tukaj, da pravi, da je prvi bit tam je obrnil na. 784 00:35:53,520 --> 00:35:55,380 Torej imamo 4 za branje. 785 00:35:55,380 --> 00:35:58,730 Drugi bit je zrcaljeno na za w, ki je 2, tako da imamo sedaj 6. 786 00:35:58,730 --> 00:36:02,070 In tretji bit zrcaljeno na za x, ki je 1, tako da smo dobili sedem. 787 00:36:02,070 --> 00:36:04,820 In seveda, naša skupina in naš svet sta vsak 0. 788 00:36:04,820 --> 00:36:07,770 Torej je to tudi ekvivalent chmod 700. 789 00:36:07,770 --> 00:36:12,081 In jaz bi vsekakor poskušali razumeti preslikavo med tistimi. 790 00:36:12,081 --> 00:36:14,080 Nisem prepričan, če ima prišel na kvizu prej, 791 00:36:14,080 --> 00:36:18,590 vendar bi bilo Vprašanje, ki se lahko vprašam. 792 00:36:18,590 --> 00:36:22,110 >> Samo malo se dogaja tudi nadalje v chmod tukaj, tukaj 793 00:36:22,110 --> 00:36:27,730 je zelo splošna struktura chmod klica. 794 00:36:27,730 --> 00:36:29,500 Torej, seveda, smo tu chmod. 795 00:36:29,500 --> 00:36:34,410 Reference, kaj se to nanaša, je ki jih dajemo teh dovoljenj za 796 00:36:34,410 --> 00:36:36,570 ali so se mi ob njih Dovoljenja stran od. 797 00:36:36,570 --> 00:36:44,330 Torej imamo tukaj v dovoljenja, kot smo vam dal chmod plus x, 798 00:36:44,330 --> 00:36:45,440 kot bomo kmalu videli. 799 00:36:45,440 --> 00:36:48,460 pomeni le, da so te specifične Dovoljenja za vsakogar. 800 00:36:48,460 --> 00:36:49,600 Daj jim za vse. 801 00:36:49,600 --> 00:36:55,370 Torej si lahko zelo dobro imeti u plus x ali g Plus X ali O Plus X ali večkratni 802 00:36:55,370 --> 00:36:55,870 teh. 803 00:36:55,870 --> 00:36:59,280 Tako, da je prvi del vedno bo reference. 804 00:36:59,280 --> 00:37:03,220 Kdo smo daje te pravice za, ali, ki smo jih vzeli od? 805 00:37:03,220 --> 00:37:04,850 >> Drugi je operater. 806 00:37:04,850 --> 00:37:07,350 Torej vidva večinoma obravnavajo plus. 807 00:37:07,350 --> 00:37:12,140 To daje dovoljenja za kdor si jih daje, 808 00:37:12,140 --> 00:37:14,840 ker je minusa, logično, jih odstrani. 809 00:37:14,840 --> 00:37:16,880 Torej, nič preveč grozno tam. 810 00:37:16,880 --> 00:37:23,060 In potem načini je tisto, kar smo se pogovarjali o z branjem, pisanjem, ali izvršitve. 811 00:37:23,060 --> 00:37:29,070 Torej plus x pomeni dati izvedljivo Dovoljenja za vsakogar. 812 00:37:29,070 --> 00:37:33,430 In potem, seveda, na katerem posebno datoteko ali imenik. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Vsakdo dobro z chmod? 815 00:37:36,010 --> 00:37:37,850 Ni slab? 816 00:37:37,850 --> 00:37:42,417 >> OK, tako HTML, vsak od vas dovolj star to-- MySpace starost? 817 00:37:42,417 --> 00:37:44,750 To sem poslal na moj oddelek, in dobesedno polovica ljudi 818 00:37:44,750 --> 00:37:45,790 me je pogledal, kot da sem nor. 819 00:37:45,790 --> 00:37:47,498 In sem si mislil, fantje, nismo, da je stara. 820 00:37:47,498 --> 00:37:48,910 Daj no. 821 00:37:48,910 --> 00:37:53,360 Torej HyperText Markup Language, to je pošteno samo način za vas 822 00:37:53,360 --> 00:37:57,990 prikazati nekatere stvari na spletu. 823 00:37:57,990 --> 00:37:59,210 Torej, to je označevalni jezik. 824 00:37:59,210 --> 00:38:00,640 To ni skriptni jezik. 825 00:38:00,640 --> 00:38:02,160 Ni logike v njem. 826 00:38:02,160 --> 00:38:05,710 To je preprosto spremeniti Prikaže se način nekaj. 827 00:38:05,710 --> 00:38:07,670 OK, tako da je pomembno razlikovanje, da bi. 828 00:38:07,670 --> 00:38:12,030 To velja označevalni jezik, ni skriptni jezik. 829 00:38:12,030 --> 00:38:15,100 >> Torej, tukaj imamo oznake HTML. 830 00:38:15,100 --> 00:38:20,390 Ta diapozitiv verjetno večina tisti, ki bi morali biti seznanjeni z 831 00:38:20,390 --> 00:38:22,390 in je res všeč. 832 00:38:22,390 --> 00:38:25,700 Torej je očitno, imamo naša HTML tag, ki 833 00:38:25,700 --> 00:38:29,930 označuje, da je vse, kar je v med tema dvema bo HTML. 834 00:38:29,930 --> 00:38:33,070 Imamo nekaj povezav, ki Očitno vam bo dal 835 00:38:33,070 --> 00:38:34,990 Povezava na zunanjo spletno stran. 836 00:38:34,990 --> 00:38:37,520 Nekateri naslov, v naši glavi tukaj. 837 00:38:37,520 --> 00:38:40,020 In imamo telo z H1, ki je glava, 838 00:38:40,020 --> 00:38:42,260 tako da bo to bi bilo lepo in drzna in večji. 839 00:38:42,260 --> 00:38:46,040 In potem imamo nekaj p, ki je točka. 840 00:38:46,040 --> 00:38:49,000 Verjetno morate vedeti in biti seznanjeni s stvarmi 841 00:38:49,000 --> 00:38:54,030 všeč, kako vstaviti sliko, so obstajajo drugi zbiralni razredi? 842 00:38:54,030 --> 00:38:57,240 Jaz bi zagotovo udobno z div. 843 00:38:57,240 --> 00:39:00,840 Torej, ti imajo večino oznak da bi morali biti seznanjeni z. 844 00:39:00,840 --> 00:39:04,370 Seveda, tako kot vse, kar je v CS 50, seznam ni izčrpen. 845 00:39:04,370 --> 00:39:08,200 Zato poskrbite, da krtačo na to. 846 00:39:08,200 --> 00:39:13,260 >> CSS, tako CSS, če kdo od vas gledal moj seminar iz pred dvema tednoma, 847 00:39:13,260 --> 00:39:16,250 je res samo način stil svojo spletno stran? 848 00:39:16,250 --> 00:39:18,950 OK, tako da imamo nekaj označevalni jezik. 849 00:39:18,950 --> 00:39:23,220 HTML, ki skrbi samo besedila in če bi bilo na strani. 850 00:39:23,220 --> 00:39:25,760 Ampak CSS je res tisto, kar je lepo. 851 00:39:25,760 --> 00:39:30,690 Lahko bi ti v HTML datotek, ampak bomo govorili o pozneje, 852 00:39:30,690 --> 00:39:32,660 Sem prepričan, da bi lahko bo naslednji diapozitiv, da 853 00:39:32,660 --> 00:39:35,620 je običajna praksa, in dejansko praksa, da smo v resnici spodbujajo, 854 00:39:35,620 --> 00:39:40,670 za vas, da jih loči, ko smo govorimo o MVC in to celotno paradigmo. 855 00:39:40,670 --> 00:39:42,490 To je res, kaj to povleče. 856 00:39:42,490 --> 00:39:46,110 >> Torej CSS samo način postavil lepa. 857 00:39:46,110 --> 00:39:50,500 Stvari tukaj, kot so telo in #title in .info, 858 00:39:50,500 --> 00:39:54,340 ti se imenujejo selektorje in kaj storiti je, da izberete določene stvari 859 00:39:54,340 --> 00:39:59,260 v HTML datoteki in se uporabljajo ne glede na slog, 860 00:39:59,260 --> 00:40:04,090 ne glede na neke stvari, ki jih želijo, na ta poseben element vašo spletno 861 00:40:04,090 --> 00:40:04,590 stran. 862 00:40:04,590 --> 00:40:08,820 Torej, tukaj imamo barva ozadja in barva 863 00:40:08,820 --> 00:40:12,450 in družino pisave, ki je pa uporablja za kar je v telesu. 864 00:40:12,450 --> 00:40:15,530 Torej, če bomo pogledal nazaj, je ne bi veljalo za naslov. 865 00:40:15,530 --> 00:40:22,340 To bi veljalo samo za tisto, kar je V teh telesnih selektorjev, OK? 866 00:40:22,340 --> 00:40:25,250 >> Z naslovom tukaj, to je bo ista stvar, 867 00:40:25,250 --> 00:40:28,410 Barva besedila pa modra je samo še 868 00:40:28,410 --> 00:40:33,870 vplivajo na tisto, kar je v Naslovne selektorji. 869 00:40:33,870 --> 00:40:36,580 Kakor tudi info tukaj, Besedilo bo rožnata, 870 00:40:36,580 --> 00:40:38,600 karkoli je info, ki je tukaj. 871 00:40:38,600 --> 00:40:40,860 Tako da je edina stvar, ki bi bilo roza na tej strani 872 00:40:40,860 --> 00:40:44,100 je datum, ponedeljek, 17. november, 2014. 873 00:40:44,100 --> 00:40:48,770 OK, tako CSS je samo način, da večji nadzor over-- ja? 874 00:40:48,770 --> 00:40:51,850 >> OBČINSTVO: Zakaj imate uporabiti hash z naslovom? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: Next slide, obljubim! 876 00:40:55,170 --> 00:40:56,810 Bomo tja. 877 00:40:56,810 --> 00:40:59,830 Torej, to je razlog, zakaj moramo uporabiti hašiš. 878 00:40:59,830 --> 00:41:03,429 Torej selektorji se na treh glavnih oblike, ki smo govoriti z vami fantje okoli. 879 00:41:03,429 --> 00:41:05,595 I fyou želite izvedeti več, tam je veliko tam. 880 00:41:05,595 --> 00:41:07,540 Obstaja velika CSS dokumentacijo. 881 00:41:07,540 --> 00:41:12,680 Tam je ime oznake, ki mora storiti s samo običajne oznake v HTML. 882 00:41:12,680 --> 00:41:17,210 Torej, h1, P, div, H2, te vrste stvari. 883 00:41:17,210 --> 00:41:20,320 In bomo lahko samo ime tiste, kot je. 884 00:41:20,320 --> 00:41:22,650 Torej, kot vidimo tukaj z telo, to je običajna oznaka. 885 00:41:22,650 --> 00:41:26,660 Tako smo lahko samo dal telo, ko govorimo v našem CSS datoteko. 886 00:41:26,660 --> 00:41:29,730 >> Z naslovom, celotno Zato smo ima ta hash je, da smo imeli kaj 887 00:41:29,730 --> 00:41:31,010 šteje ID. 888 00:41:31,010 --> 00:41:35,400 Torej ID vedno edinstvena v HTML stran 889 00:41:35,400 --> 00:41:37,930 tako da, če ste ki se nanaša nanjo, si 890 00:41:37,930 --> 00:41:41,990 vem, da ste se nanaša samo za eno določeno stvar. 891 00:41:41,990 --> 00:41:46,270 Torej, v tem primeru je tukaj, z našimi h1 tukaj, CS 50 Pregled zasedanje, 892 00:41:46,270 --> 00:41:47,810 imamo id naslova. 893 00:41:47,810 --> 00:41:54,280 Tako, da se samo sklicujejo na to kos naše HTML, bomo naslov hash. 894 00:41:54,280 --> 00:41:58,080 Samo s konvencijo, se imenuje ID z hash pred njimi. 895 00:41:58,080 --> 00:42:01,650 Na enak način, vidimo info tukaj je razred. 896 00:42:01,650 --> 00:42:06,070 In tako razred s CSS, je označi kot dot razred 897 00:42:06,070 --> 00:42:08,895 ali dot karkoli, da razred. 898 00:42:08,895 --> 00:42:10,850 Torej, v tem primeru tukaj, to je info. 899 00:42:10,850 --> 00:42:13,090 >> Zato sem ga vzel nazaj. 900 00:42:13,090 --> 00:42:16,200 Oba bi roza za naše CSS tukaj 901 00:42:16,200 --> 00:42:18,430 ker imata razred info. 902 00:42:18,430 --> 00:42:23,070 In v našem CSS datoteko, ki smo jih imenuje da karkoli z razredom info 903 00:42:23,070 --> 00:42:24,120 mora biti rožnate barve. 904 00:42:24,120 --> 00:42:25,968 Ali to smiselno? 905 00:42:25,968 --> 00:42:27,435 Ja? 906 00:42:27,435 --> 00:42:30,731 >> OBČINSTVO: Če ste bili, da bi vse, kar je v telesu belo, 907 00:42:30,731 --> 00:42:32,814 in potem ste poskušali narediti nekaj v njem modra, 908 00:42:32,814 --> 00:42:34,770 bi to povzročilo težave? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: Torej CSS kaskadnih slogov. 910 00:42:37,310 --> 00:42:40,730 Torej vse, kar je proti Dno bo prednost. 911 00:42:40,730 --> 00:42:44,080 Torej, če vam kaj s telesom, in vam bo vse belo, 912 00:42:44,080 --> 00:42:49,300 in potem kasneje spremenite naslov ali spremenite besedilo v telesu, 913 00:42:49,300 --> 00:42:50,560 prepiše da. 914 00:42:50,560 --> 00:42:55,360 Torej kaj proti Dno bo prednost. 915 00:42:55,360 --> 00:42:56,730 Ja? 916 00:42:56,730 --> 00:42:59,627 >> Občinstvu in ID-ji so edinstveni, vendar razredi lahko več? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Right. 918 00:43:00,210 --> 00:43:06,320 Torej bi moral biti edinstven ID, in razredi lahko se nanašajo na čim več stvari, kot bi si želeli. 919 00:43:06,320 --> 00:43:07,580 Katera koli druga vprašanja? 920 00:43:07,580 --> 00:43:09,800 Da. 921 00:43:09,800 --> 00:43:11,210 >> OBČINSTVO: [neslišno]. 922 00:43:11,210 --> 00:43:13,509 Jaz sem se spraševala, ali da naredi razliko. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Žal mi je, kaj je bilo vprašanje? 924 00:43:15,217 --> 00:43:18,960 OBČINSTVO: Obstaja majhna "F" in kapital "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: Torej razlika med majhno "f" in kapitala "F" 926 00:43:21,440 --> 00:43:22,606 ne bi smeli narediti razliko. 927 00:43:22,606 --> 00:43:26,330 Torej "f", bo 15 v katero koli smer. 928 00:43:26,330 --> 00:43:28,130 Cool, kaj drugega? 929 00:43:28,130 --> 00:43:29,930 Vsakdo dobro, CSS? 930 00:43:29,930 --> 00:43:30,850 Ja? 931 00:43:30,850 --> 00:43:31,790 >> OBČINSTVO: Žal mi je. 932 00:43:31,790 --> 00:43:35,550 Lahko imate razred in ID? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Da, lahko. 934 00:43:38,030 --> 00:43:40,420 Stvari se lahko tako razred in ID. 935 00:43:40,420 --> 00:43:44,670 In sem zelo priporočam testiranje ti na svoje. 936 00:43:44,670 --> 00:43:50,480 CSS boste najbolje učijo samo s tem, nekaj, zelo preprosta spletna stran, 937 00:43:50,480 --> 00:43:53,440 sestavljanju nekaj CSS, in samo vidim, kako med seboj sodelujejo. 938 00:43:53,440 --> 00:43:56,970 In boste pridobili zelo dober, intuitiven občutek za to, kako to deluje. 939 00:43:56,970 --> 00:43:58,810 >> OK, vsi dobro s CSS? 940 00:43:58,810 --> 00:44:01,280 Ste vse dogaja, da bi lepe spletne strani s CSS zdaj. 941 00:44:01,280 --> 00:44:05,460 OK, najboljše prakse, samo stvari, da v mislih Stvari 942 00:44:05,460 --> 00:44:09,810 that-- to je razlog, zakaj smo dock ste za oblikovalca in drugih malenkosti. 943 00:44:09,810 --> 00:44:11,820 Torej, zaprite vse oznake HTML. 944 00:44:11,820 --> 00:44:14,840 Torej, če imate odprto telo, ne bi smelo biti blizu telesa. 945 00:44:14,840 --> 00:44:18,180 Če imate odprt odstavek, ne bi smelo biti blizu odstavek. 946 00:44:18,180 --> 00:44:19,555 Preverite, ali vaša stran preveri. 947 00:44:19,555 --> 00:44:23,330 Vi bi morali biti zelo dobro seznanjeni s tem od-p nastavite sedem 948 00:44:23,330 --> 00:44:26,350 s CS 50 financ z W3 validator. 949 00:44:26,350 --> 00:44:28,340 In kot sem že prej povedal, ena od naših velikih paradigem 950 00:44:28,340 --> 00:44:33,780 se ločuje svoj slog z CSS iz svoje provizije, ki je HTML. 951 00:44:33,780 --> 00:44:36,900 In potem, seveda, imamo to super xkcd tukaj dol. 952 00:44:36,900 --> 00:44:38,280 Bravo, comic relief! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Med njimi in HTTP, v bistvu oni obeh protokolov. 955 00:44:44,650 --> 00:44:46,810 Torej si lahko samo mislite od njih kot sklop pravil 956 00:44:46,810 --> 00:44:50,110 ki urejajo, kako stvari premakniti preko interneta. 957 00:44:50,110 --> 00:44:53,410 Torej kontrola menjalnik protokol, ali internetnega protokola, 958 00:44:53,410 --> 00:44:57,280 je samo način, da se prepričajte, da so podatki, dobi, če se dogaja 959 00:44:57,280 --> 00:45:00,030 in da bomo vedeli, če smo doslej manjkajoče podatke. 960 00:45:00,030 --> 00:45:03,520 Torej, če mislita nazaj na predavanje nekaj tednov nazaj z Davidom 961 00:45:03,520 --> 00:45:06,980 kjer smo imeli štiri kuverte, ki jih so bili vsi oštevilčeni kot eden od štirih, 962 00:45:06,980 --> 00:45:11,300 dva od štirih, trije od štirih, štiri štiri, to je samo skupek pravil. 963 00:45:11,300 --> 00:45:13,830 Rekli smo, OK, vsakič, ko smo pošiljanje več kot en paket, 964 00:45:13,830 --> 00:45:16,610 bomo na številko je s tem, kaj število je 965 00:45:16,610 --> 00:45:19,040 in koliko je skupno, da Uporabnik mora priti. 966 00:45:19,040 --> 00:45:22,540 >> In to je samo povedal, kdor prejema podatke, ali 967 00:45:22,540 --> 00:45:26,120 gotten vse, ali če nekaj, kar se je izgubila na poti. 968 00:45:26,120 --> 00:45:28,840 In ki jih potrebujejo, da ponovno zaprosi za to. 969 00:45:28,840 --> 00:45:31,140 To je res samo skupek pravil. 970 00:45:31,140 --> 00:45:33,650 To je, kako lahko pomislim, OK? 971 00:45:33,650 --> 00:45:37,700 In tudi, da določa vrata, ki vidva can-- Vem med predavanjem, 972 00:45:37,700 --> 00:45:39,170 so imeli celoten seznam pristanišč. 973 00:45:39,170 --> 00:45:41,630 Vendar jih ne bomo imeli tukaj. 974 00:45:41,630 --> 00:45:45,290 >> Torej protokol za prenos hiperteksta je, še enkrat, to je še en protokol. 975 00:45:45,290 --> 00:45:48,630 Torej, to je še en niz pravil da ureja, v tem primeru, 976 00:45:48,630 --> 00:45:51,130 kako je hipertekst prenese. 977 00:45:51,130 --> 00:45:54,340 Tako da samo dovoljuje brskalnikov govoriti na spletnih strežnikih. 978 00:45:54,340 --> 00:45:56,910 In kot smo rekli tukaj, to je kot človeško rokovanjem. 979 00:45:56,910 --> 00:46:00,480 To je samo način za urejanje kako spletni strežnik 980 00:46:00,480 --> 00:46:02,690 gre za interakcijo z vašega brskalnika. 981 00:46:02,690 --> 00:46:05,660 In imamo le nekaj primerov. 982 00:46:05,660 --> 00:46:09,100 Imamo nekaj prošenj tukaj kjer je GET metoda. 983 00:46:09,100 --> 00:46:13,760 Imamo HTTP 1.1, ki je protokol verzija za nas. 984 00:46:13,760 --> 00:46:17,230 In potem, gostitelj, ki je kaj smo dejansko poskuša dostopati. 985 00:46:17,230 --> 00:46:21,800 In potem, kot vidite tu, dobili nekaj odziva s tem 200 986 00:46:21,800 --> 00:46:25,032 OK, kot je naš kodo odgovora HTTP. 987 00:46:25,032 --> 00:46:27,240 Imamo velik seznam Jaz grem dvigni se v eni sekundi 988 00:46:27,240 --> 00:46:29,430 da morajo biti fantje poznajo. 989 00:46:29,430 --> 00:46:35,750 In imamo to vrsto vsebine text / html, ki samo pravi, kakšna vrsta podatkov 990 00:46:35,750 --> 00:46:39,990 smo prejemali od strežnika, OK? 991 00:46:39,990 --> 00:46:44,230 Ponudnika gostinskih in ta vrsta vsebine del glave HTTP. 992 00:46:44,230 --> 00:46:49,610 Imate lahko kot malo ali tako malo, kot potrebni za okviru katere 993 00:46:49,610 --> 00:46:50,580 imaš opravka. 994 00:46:50,580 --> 00:46:53,371 Včasih boste imeli veliko Informacije, ki prihajajo iz vašega strežnika. 995 00:46:53,371 --> 00:46:56,040 Mogoče oni, ki zahteva veliko informacij, prejetih od uporabnika. 996 00:46:56,040 --> 00:46:57,600 To je odvisno od konteksta. 997 00:46:57,600 --> 00:47:01,144 Če pogledaš na CS 50 študiji, tam je veliko več o tem. 998 00:47:01,144 --> 00:47:03,060 Vendar imamo veliko, da bi dobili skozi, tako da bom 999 00:47:03,060 --> 00:47:05,760 da gredo naravnost naprej, če da je v redu z vami? 1000 00:47:05,760 --> 00:47:07,960 Cool. 1001 00:47:07,960 --> 00:47:08,460 Počakaj. 1002 00:47:08,460 --> 00:47:11,182 Jaz gotovo, da Celoten seznam of-- huh! 1003 00:47:11,182 --> 00:47:13,140 Ne vem, zakaj je to vso pot tukaj. 1004 00:47:13,140 --> 00:47:15,660 Mislil sem, da sem dobesedno preselil jo, ko sem bil sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> Davin: Ali jo želite naučiti? 1006 00:47:16,540 --> 00:47:17,420 Ali hočeš, da ga naučiti? 1007 00:47:17,420 --> 00:47:20,010 >> OBČINSTVO: Mislil sem, da smo lahko jih samo pokazati, da začnete s. 1008 00:47:20,010 --> 00:47:22,210 Mislim, da lahko gredo v jim še naprej, vendar sem 1009 00:47:22,210 --> 00:47:26,030 mislil, da je bolj smiselno, saj sem je samo govoril o HTTP statusov. 1010 00:47:26,030 --> 00:47:28,200 Torej, tukaj je celoten seznam. 1011 00:47:28,200 --> 00:47:31,730 Mislim, kaj se bo zgodilo, je Davin se dogaja, da gredo v njih kasneje. 1012 00:47:31,730 --> 00:47:35,330 Ampak tam je cel seznam, predogled okusa, da pridejo. 1013 00:47:35,330 --> 00:47:41,640 OK, bomo blow-- to se dogaja biti seveda PHP crash kot nobena druga. 1014 00:47:41,640 --> 00:47:44,874 >> Torej PHP Hypertext Preprocessor, je rekurzivna backronym, 1015 00:47:44,874 --> 00:47:46,540 kar pomeni, da je bil imenovan za nekaj drugega. 1016 00:47:46,540 --> 00:47:49,050 In potem so bili, kot je to v resnici ne smisla. 1017 00:47:49,050 --> 00:47:52,210 Tako so pravkar imenovan it-- in to je kratica, 1018 00:47:52,210 --> 00:47:54,840 tako da samo to PHP je Hypertext Preprocessor, ki 1019 00:47:54,840 --> 00:47:55,980 samo nima smisla. 1020 00:47:55,980 --> 00:47:57,714 Zabavna zgodba. 1021 00:47:57,714 --> 00:47:58,880 To je programski jezik. 1022 00:47:58,880 --> 00:48:02,360 Torej toliko, kot sem poudaril, da HTML ni programski jezik, 1023 00:48:02,360 --> 00:48:05,350 je označevalni jezik, PHP je programski jezik. 1024 00:48:05,350 --> 00:48:07,422 Kako veš, da je to ker je logika. 1025 00:48:07,422 --> 00:48:08,380 Obstajajo Pogojniki. 1026 00:48:08,380 --> 00:48:12,750 Imamo spremenljivke, medtem ko mi nimate nobene od teh stvari v HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Vse je v redu, potem imamo to malo bit tu, da je kot okus PHP. 1028 00:48:16,960 --> 00:48:20,510 Tako osnove, imeni spremenljivk začnete z znak za dolar. 1029 00:48:20,510 --> 00:48:21,500 Veliko ljudi, kot njej. 1030 00:48:21,500 --> 00:48:22,371 Spominja nas denar. 1031 00:48:22,371 --> 00:48:22,995 To je vse super. 1032 00:48:22,995 --> 00:48:25,280 Vsi si želimo, PHP. 1033 00:48:25,280 --> 00:48:28,020 Torej mi ne določajo tip spremenljivke je več. 1034 00:48:28,020 --> 00:48:29,995 To se določi ob času čas. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 Tolmač bo všeč, oh, bomo šele teči skozi, 1037 00:48:35,890 --> 00:48:39,565 in glede na kontekst, bomo videli, kakšne vrste tipov 1038 00:48:39,565 --> 00:48:41,560 Te spremenljivke morajo imeti. 1039 00:48:41,560 --> 00:48:42,815 Ni glavna funkcija. 1040 00:48:42,815 --> 00:48:43,690 Stvari se bodo šele teči. 1041 00:48:43,690 --> 00:48:47,851 Vidva z vašo uvoz v vaš last-p nastavite, boste to opazili. 1042 00:48:47,851 --> 00:48:49,350 Ni bilo res glavna funkcija. 1043 00:48:49,350 --> 00:48:52,070 Pravkar si napisal, kaj si je želel, da se zgodi. 1044 00:48:52,070 --> 00:48:53,280 In to samo nekako se je zgodilo. 1045 00:48:53,280 --> 00:48:56,760 Tako da je PHP za vas. 1046 00:48:56,760 --> 00:48:59,180 >> Polja so zelo podobni. 1047 00:48:59,180 --> 00:49:01,270 Še vedno imamo to konzolo. 1048 00:49:01,270 --> 00:49:05,940 Tukaj imamo nekaj spremenljivko imenovano arr, in to je enako 1049 00:49:05,940 --> 00:49:08,540 to-- imamo normalno Nosilec zapis. 1050 00:49:08,540 --> 00:49:10,630 In imamo nekaj ključnih vrednosti. 1051 00:49:10,630 --> 00:49:14,630 In velika razlika med nizi C in PHP 1052 00:49:14,630 --> 00:49:19,330 je, da imamo lahko to associate-- moremo povezati vrednosti ključev. 1053 00:49:19,330 --> 00:49:22,440 Torej, namesto da le imajo Niz, ki se indeksira 1054 00:49:22,440 --> 00:49:26,630 s številom ali položaj tega elementa v matriki, 1055 00:49:26,630 --> 00:49:29,060 bomo lahko dejansko poveže s ključem. 1056 00:49:29,060 --> 00:49:36,700 Kje bomo lahko rekli, v redu, želim karkoli Vrednost je povezana s sadjem. 1057 00:49:36,700 --> 00:49:39,280 In morda imamo sadje šla banana. 1058 00:49:39,280 --> 00:49:41,760 Torej bi ga vrnili banano za nas. 1059 00:49:41,760 --> 00:49:44,100 >> Ampak v bistvu, najbolj močna stvar, o tem 1060 00:49:44,100 --> 00:49:47,960 je, da če vi spomnite demo s predavanja, kjer smo v bistvu 1061 00:49:47,960 --> 00:49:53,050 novo napisal speller v PHP, in was-- lookup je res samo všeč, 1062 00:49:53,050 --> 00:49:55,007 da ta ključ obstaja? 1063 00:49:55,007 --> 00:49:56,590 To je res nekako močjo njo. 1064 00:49:56,590 --> 00:49:58,560 Vam ni treba ponoviti skozi paleto. 1065 00:49:58,560 --> 00:50:00,311 Vam ni treba vedeti, kaj prostora, da je v. 1066 00:50:00,311 --> 00:50:01,976 To je lahko na koncu ali na začetku. 1067 00:50:01,976 --> 00:50:04,790 Dokler veste ključ ki je povezana z vrednostjo, 1068 00:50:04,790 --> 00:50:09,740 PHP lahko pljuvaš, da je vrednost Pravica nazaj ven na vas, v redu? 1069 00:50:09,740 --> 00:50:12,960 >> In potem smo tudi samo imajo samo zato, ker mi 1070 00:50:12,960 --> 00:50:16,750 lahko parov vrednosti ključev ne pomeni, da moraš. 1071 00:50:16,750 --> 00:50:19,180 Lahko tudi samo ustvariti normalna matrika, kot tukaj, 1072 00:50:19,180 --> 00:50:21,540 na dnu, kjer je samo ena, dva, tri, štiri. 1073 00:50:21,540 --> 00:50:22,510 To so naše vrednote. 1074 00:50:22,510 --> 00:50:25,320 In v resnici, s ključi so indeksi. 1075 00:50:25,320 --> 00:50:26,830 Tako da bi ključ za eno nič. 1076 00:50:26,830 --> 00:50:28,610 Ključ za dve osebi bi bilo eno. 1077 00:50:28,610 --> 00:50:31,910 Tako naprej in tako naprej, razen če ste izrecno določiti ključ, 1078 00:50:31,910 --> 00:50:34,630 ste lahko predpostavimo, da vrednost je le njihov indeks. 1079 00:50:34,630 --> 00:50:37,290 Ali, da je smiselno, da se vsakogar? 1080 00:50:37,290 --> 00:50:38,070 Brez vprašanj! 1081 00:50:38,070 --> 00:50:38,930 Super. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach je način, da se Ponovil skozi vaše nizi. 1083 00:50:44,420 --> 00:50:47,490 Torej, imamo nekaj tukaj, samo splošno strukturo. 1084 00:50:47,490 --> 00:50:51,020 Torej foreach, ime naša matrika, kot karkoli 1085 00:50:51,020 --> 00:50:53,930 želite poklicati vsak element v polju, 1086 00:50:53,930 --> 00:50:57,270 in mi lahko storite z nekaj da je element ali te vrednosti. 1087 00:50:57,270 --> 00:50:58,680 Torej imamo primer tukaj. 1088 00:50:58,680 --> 00:51:05,770 Imamo asociativni Niz teh dveh vstopov 1089 00:51:05,770 --> 00:51:10,080 z barom, ki so povezana z foo in se qux povezana z Baz. 1090 00:51:10,080 --> 00:51:12,180 Tako tipke so foo in baz. 1091 00:51:12,180 --> 00:51:13,650 Vrednosti so bar in qux. 1092 00:51:13,650 --> 00:51:18,560 Torej foreach, imamo niz Tu, kot para ključev vrednosti. 1093 00:51:18,560 --> 00:51:21,560 To nam omogoča, da dostopa tako ključ in vrednost. 1094 00:51:21,560 --> 00:51:23,680 Mogoče si samo želim, vrednost, v tem primeru 1095 00:51:23,680 --> 00:51:27,640 si lahko samo všeč ARR kot $ vrednost, nato pa 1096 00:51:27,640 --> 00:51:30,640 so samo dostop do vrednosti kot ste Ponovil skozi. 1097 00:51:30,640 --> 00:51:32,600 Morda pa je za nekatere Razlog, ki ga želite tipko, 1098 00:51:32,600 --> 00:51:35,460 kar je razlog, zakaj sem se odločil, ta primer namesto tega. 1099 00:51:35,460 --> 00:51:40,240 Tako da lahko dejansko manipulira ključ in vrednost v tem primeru. 1100 00:51:40,240 --> 00:51:41,070 OK? 1101 00:51:41,070 --> 00:51:41,905 Vprašanje? 1102 00:51:41,905 --> 00:51:44,279 >> OBČINSTVO: Če boste želeli samo manipulirajo ključ, bi 1103 00:51:44,279 --> 00:51:45,910 kar morate storiti foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: Right. 1105 00:51:47,360 --> 00:51:50,560 Torej, če boste želeli manipulirati samo tipko, 1106 00:51:50,560 --> 00:51:53,680 bi še vedno morali to sintaksa, ker če vas prav 1107 00:51:53,680 --> 00:51:56,930 imajo arr kot nekaj, kot eno stvar, to je 1108 00:51:56,930 --> 00:52:00,070 predpostavljam, da želite vrednost, ne ključ. 1109 00:52:00,070 --> 00:52:06,780 Torej, če ste kdaj imeli prav tako kot arr as, morda je to všeč $ elementa, 1110 00:52:06,780 --> 00:52:11,670 to se dogaja, predvidevam, da ste sporočilo Za samo vrednost pri vsaki točki. 1111 00:52:11,670 --> 00:52:13,879 Če boste izrecno želeli storiti s ključem nekaj, 1112 00:52:13,879 --> 00:52:16,170 tudi če ne boš storiti ničesar, z vrednostjo, 1113 00:52:16,170 --> 00:52:18,430 morate to strukturo da imamo tukaj 1114 00:52:18,430 --> 00:52:22,330 kje ste izrecno prosi tako ključ in vrednost. 1115 00:52:22,330 --> 00:52:24,170 Super vprašanje. 1116 00:52:24,170 --> 00:52:25,940 Kaj drugega? 1117 00:52:25,940 --> 00:52:27,490 Cool. 1118 00:52:27,490 --> 00:52:29,911 >> Vse je v redu, PHP in HTML. 1119 00:52:29,911 --> 00:52:31,410 Oh, smo nazaj-p nastavite znova sedem. 1120 00:52:31,410 --> 00:52:35,380 Zato bi bilo treba to pogledati malo pozna. 1121 00:52:35,380 --> 00:52:41,760 Torej, to je nekaj preprostih HTML oblika da ima nekaj vhodni ime pozdrav. 1122 00:52:41,760 --> 00:52:43,820 In vidimo, imamo metodo GET. 1123 00:52:43,820 --> 00:52:47,430 In če se spomnimo iz naše p-set, ko se predloži ta obrazec, 1124 00:52:47,430 --> 00:52:58,130 ga pošlje niz z imenom $ _GET, ki ima vseh teh vložkov ali spremenljivk iz 1125 00:52:58,130 --> 00:53:00,490 obliko, da bi morala biti manipulira v našem PHP. 1126 00:53:00,490 --> 00:53:03,320 Torej, v tem primeru uporabnik bi dal v njihovem imenu. 1127 00:53:03,320 --> 00:53:04,370 Trdijo, da. 1128 00:53:04,370 --> 00:53:07,810 In vidimo, da smo dobili nekaj paleto tukaj. 1129 00:53:07,810 --> 00:53:09,080 Imamo GET array. 1130 00:53:09,080 --> 00:53:11,510 In mi smo dostop do imena. 1131 00:53:11,510 --> 00:53:15,070 >> Tako da pravi, OK, daj mi vrednost, ki je povezana z imenom, 1132 00:53:15,070 --> 00:53:16,550 ime je ključni tukaj. 1133 00:53:16,550 --> 00:53:21,400 In da se preslika neposredno v kaj mi je povedal naš vhod je ime. 1134 00:53:21,400 --> 00:53:28,960 Torej, to je, ki vam daje ključ do tega, kar se bo v vašem paleto tukaj. 1135 00:53:28,960 --> 00:53:31,220 Ali, da je smiselno, da se vsakogar? 1136 00:53:31,220 --> 00:53:32,070 Ja? 1137 00:53:32,070 --> 00:53:36,240 >> OBČINSTVO: Ali ime GET nanašajo z vijoličasto črto v [neslišno]? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: Nanaša se na to tukaj. 1139 00:53:37,740 --> 00:53:43,840 Torej, to polje tukaj, se nanaša na to ime. 1140 00:53:43,840 --> 00:53:47,800 Torej, to so lahko poimenovali kot telefonsko številko, ali karkoli. 1141 00:53:47,800 --> 00:53:51,790 To ime je dejansko pravi, kaj kličeš to polje? 1142 00:53:51,790 --> 00:53:53,600 Kako se boste sklicuje na tem področju? 1143 00:53:53,600 --> 00:53:57,670 In se to ime dejansko všeč, da smo rekel to polje se imenuje ime. 1144 00:53:57,670 --> 00:53:59,224 To je, kako bomo za dostop. 1145 00:53:59,224 --> 00:54:02,070 >> OBČINSTVO: Torej je to všeč, input ime enaka Bob, in-- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: desno, nato pa bi dobil Bob tam dol. 1147 00:54:04,380 --> 00:54:06,090 Točno tako. 1148 00:54:06,090 --> 00:54:07,800 Vsi kul? 1149 00:54:07,800 --> 00:54:10,990 Vse je v redu, tako da dobite versus POST, to sta dva glavna načina 1150 00:54:10,990 --> 00:54:14,880 da se peljemo podatkov v zahtevi HTTP. 1151 00:54:14,880 --> 00:54:17,370 Vi bi morali videti oba upajmo. 1152 00:54:17,370 --> 00:54:20,940 Torej z GET, informacije se skozi URL. 1153 00:54:20,940 --> 00:54:23,490 Torej, če ste kdaj naredil Google iskanja, YouTube, boste 1154 00:54:23,490 --> 00:54:25,130 verjetno opazili nekaj vprašaj. 1155 00:54:25,130 --> 00:54:28,230 In potem vse besede da si dal notri. 1156 00:54:28,230 --> 00:54:31,410 In POST prehaja podatke V telesu HTTP sporočila. 1157 00:54:31,410 --> 00:54:36,922 Torej za razliko od GET, si nekako upoštevati da se podatki, skrita od uporabnika. 1158 00:54:36,922 --> 00:54:38,630 Ampak kaj je res pomembno razumeti 1159 00:54:38,630 --> 00:54:44,040 je, da je to še prav tako negotov, kot je dobil. 1160 00:54:44,040 --> 00:54:48,780 Analogija rad uporabljam, je, če imate številko bančnega računa 1161 00:54:48,780 --> 00:54:52,795 in jo napišite na zunanji ovojnica, ki je zelo nevarna. 1162 00:54:52,795 --> 00:54:55,920 Če bi ga napisali na kos papir in ga dal notri kuverto, 1163 00:54:55,920 --> 00:54:58,850 je še vedno zelo nevaren, ker vse, kar morate storiti, je odpreti, da je do 1164 00:54:58,850 --> 00:55:03,480 in pogled na dejanske vsebine sporočila, da vidite, da je. 1165 00:55:03,480 --> 00:55:08,310 Torej, to je "skrita", in ljudje radi Mislim, da je varna, ampak to je res ni. 1166 00:55:08,310 --> 00:55:11,000 In prepričan sem, da bo Davin priti v, da je več, morda. 1167 00:55:11,000 --> 00:55:12,850 Vendar je pomembno, razlikovanje, da bi 1168 00:55:12,850 --> 00:55:15,820 in nekaj res dobro razumeti. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Vse stvari, ki smo videli, da v zadnjem času! 1171 00:55:22,220 --> 00:55:25,400 Torej, to je v bistvu samo zasnovani, seveda, za upravljanje podatkov. 1172 00:55:25,400 --> 00:55:30,560 Vidva imela veliko izkušenj z v vaših tabelah z PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 In tam so štirje skupni poizvedbe da želimo, da fantje vedo. 1174 00:55:34,100 --> 00:55:37,304 Tako da je posodobitev, vložek, izberete in izbrišete. 1175 00:55:37,304 --> 00:55:38,970 Zato poskrbite, da boste vedeli, tiste res dobro. 1176 00:55:38,970 --> 00:55:40,960 Bomo šli skozi njih zelo hitro. 1177 00:55:40,960 --> 00:55:44,340 >> Torej posodobiti, res, kot tisto, kar si morda mislite, da ne, 1178 00:55:44,340 --> 00:55:46,740 to samo posodobi podatke v bazi podatkov. 1179 00:55:46,740 --> 00:55:48,750 Torej, imamo nekaj primer tukaj. 1180 00:55:48,750 --> 00:55:53,310 To je splošno Ustroj posodobitev poizvedbo. 1181 00:55:53,310 --> 00:55:56,150 Tako smo posodobitev tabele da govorimo o tem. 1182 00:55:56,150 --> 00:56:00,520 In želimo določiti nekatere vrednosti, določene stolpce 1183 00:56:00,520 --> 00:56:02,600 enako posebne vrednosti. 1184 00:56:02,600 --> 00:56:07,500 Torej, to samo posodobi tabelo, spreminjanje vrednosti v vseh vrsticah v tem primeru. 1185 00:56:07,500 --> 00:56:13,690 Torej, v tem enem tukaj dol, dejansko Na primer, imamo insert-- žal. 1186 00:56:13,690 --> 00:56:17,630 Da slide napredno brez mene tega zavedali. 1187 00:56:17,630 --> 00:56:22,230 >> Torej, to posodobitve Tabela col1 enaka da VAL1 kjer hiša enaka "Kožar." 1188 00:56:22,230 --> 00:56:25,300 Kaj tale pa je da le spreminja, temveč le 1189 00:56:25,300 --> 00:56:28,130 posodobi te vrednosti v posameznih krajih. 1190 00:56:28,130 --> 00:56:32,300 Torej v tem prvem, spremeni ta vrednosti za vse, kar je v vaši mizi, 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 To se dogaja, da se to spremeni Kolona za vsak vstop, 1193 00:56:35,820 --> 00:56:37,020 za vsako posamezno vrsto. 1194 00:56:37,020 --> 00:56:40,840 Toda to, kjer bi si si o njej mislijo kot kvalifikator. 1195 00:56:40,840 --> 00:56:44,020 Torej, to je samo še spremeniti je v zelo specifičnih mestih. 1196 00:56:44,020 --> 00:56:47,840 Torej, v-p nastavite sedem, ko vas morda posodobiti znesek gotovine 1197 00:56:47,840 --> 00:56:53,050 da je tvoj uporabnik, ste verjetno imeli nekaj, kjer ID enak Session ID, kajne? 1198 00:56:53,050 --> 00:56:55,280 >> Zato, ker si niso želeli spremenite količino gotovine 1199 00:56:55,280 --> 00:56:57,630 za vsako osebo, ki je s pomočjo svoje spletne strani. 1200 00:56:57,630 --> 00:57:00,480 Želeli ste, da ga spremeni za eno specifična oseba, ta oseba pa 1201 00:57:00,480 --> 00:57:02,410 kdor je njegovo uporabo v tistem času. 1202 00:57:02,410 --> 00:57:04,320 Kajne? 1203 00:57:04,320 --> 00:57:07,510 OK, tako da vstavite, vložek določene vrednosti v tabelah. 1204 00:57:07,510 --> 00:57:11,650 To je tako, kot če ste ustvarja povsem nov uporabnik. 1205 00:57:11,650 --> 00:57:14,240 Splošna struktura tukaj je vstavite v kakršni koli mizo 1206 00:57:14,240 --> 00:57:15,680 govorimo o tem. 1207 00:57:15,680 --> 00:57:18,910 Vrednot, pri čemer so vrednote, ki dejansko želimo vstaviti. 1208 00:57:18,910 --> 00:57:23,060 OK, tako kot smo videli tu, so vstavite v tabeli. 1209 00:57:23,060 --> 00:57:27,790 To je posebna kolone njihove sovpadala vrednosti. 1210 00:57:27,790 --> 00:57:29,940 Torej, ta pravi, vložek nova vrstica vsebuje 1211 00:57:29,940 --> 00:57:33,660 Vrednosti VAL1 in VAL2 pod te posebne kolone. 1212 00:57:33,660 --> 00:57:39,240 >> Mogoče si samo želim, da izpolnite ven pol stvari v tej vrsti. 1213 00:57:39,240 --> 00:57:41,150 To je tisto, kar ta del tu lahko storite. 1214 00:57:41,150 --> 00:57:43,280 To vam omogoča, da dejansko ugotoviti, katere del je. 1215 00:57:43,280 --> 00:57:44,244 Ja? 1216 00:57:44,244 --> 00:57:52,150 >> OBČINSTVO: Ali lahko samo [neslišno] Celice v vrstici [neslišno]? 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: Če samo izpolnite nekateri deli vašega zapored, 1218 00:57:55,000 --> 00:57:57,480 Preostanek teh celic so samo prazne. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Dokler jih omogočajo prazno, to ni problem. 1221 00:58:05,660 --> 00:58:09,570 Če jih boste poskušali dostopati, je dogaja, da se vrnete nekaj praznega elementa. 1222 00:58:09,570 --> 00:58:13,850 Vendar pa je pomembno vedeti da v nekaterih tabelah, 1223 00:58:13,850 --> 00:58:16,690 so se, da je treba dovoliti, da je nična. 1224 00:58:16,690 --> 00:58:18,890 Morda ste zašli v problem v času vašega p-set 1225 00:58:18,890 --> 00:58:21,320 ker nismo dovolite od vaše vrednote, je nična. 1226 00:58:21,320 --> 00:58:26,110 Vendar pa lahko določite neobvezno vrednost v tabeli. 1227 00:58:26,110 --> 00:58:29,640 >> OK, da izberete, zato je to le način za pridobivanje 1228 00:58:29,640 --> 00:58:33,790 specifičnih podatkov iz tabele v nekateri identifikator, ki ga želite. 1229 00:58:33,790 --> 00:58:37,990 Torej izberite zvezda iz tabele, kjer je col enak nekaj pomeni le, 1230 00:58:37,990 --> 00:58:43,820 dajte mi vse podatke, povezane če je to res poseben stolpec. 1231 00:58:43,820 --> 00:58:49,020 Torej zvezda v tem primeru bo vrne celotno vrstico z vami, OK? 1232 00:58:49,020 --> 00:58:54,880 >> In potem, v tem primeru izberite zvezdo tabela vam samo daje celotno tabelo. 1233 00:58:54,880 --> 00:58:58,940 In potem, izbris očitno, da samo izbriše vrstico iz tabele. 1234 00:58:58,940 --> 00:59:01,320 Tako izbrisati iz tabele, karkoli miza smo 1235 00:59:01,320 --> 00:59:06,830 na to, v katerih nekatere posebne identifikator ali nekatere pogoj izpolnjen. 1236 00:59:06,830 --> 00:59:07,720 Ja? 1237 00:59:07,720 --> 00:59:08,700 >> OBČINSTVO: Vprašanje. 1238 00:59:08,700 --> 00:59:10,699 Zakaj uporabljate dvojna citati, in ali vas 1239 00:59:10,699 --> 00:59:13,600 narediti dvojne narekovaje ali single citati, ne da bi razliko? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: Dvojni narekovaji ali enojni narekovaji ne pomeni, da razlike v SQL. 1241 00:59:18,235 --> 00:59:19,610 Mislil sem, da sem videl še eno vprašanje. 1242 00:59:19,610 --> 00:59:20,814 Ja? 1243 00:59:20,814 --> 00:59:25,070 >> OBČINSTVO: Ali to ne vpliva na kaj gets pobegnil iz poizvedbe? 1244 00:59:25,070 --> 00:59:27,945 >> ALISON: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Kaj misliš s pobegnil iz poizvedbe? 1246 00:59:31,410 --> 00:59:36,870 >> OBČINSTVO: Če ima nekdo single poizvedbo v obliki of-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Če kdo so bili dal eno samo ponudbo v, 1248 00:59:39,862 --> 00:59:43,560 potem tako dolgo, kot ste sanirajo svoj vhod, potem ni važno. 1249 00:59:43,560 --> 00:59:46,205 Ampak, če boste uporabljali en sam quote in ste nepravilno 1250 00:59:46,205 --> 00:59:47,914 uhaja svoje vložke, potem ja, ki jih potrebujejo 1251 00:59:47,914 --> 00:59:51,079 postaviti eno ponudbo, da se prekine kodo. Če uporabljate dvojne kotacije, 1252 00:59:51,079 --> 00:59:53,580 so morali dati dvojni citiram, da bi prekinil svojo kodo. 1253 00:59:53,580 --> 00:59:56,163 Ampak tako dolgo, kot ste pobegniti stvari pravilno, to ni važno. 1254 00:59:56,163 --> 00:59:59,220 To je le, da bo treba prevesti na pravilno simbol nekako. 1255 00:59:59,220 --> 01:00:02,332 >> OBČINSTVO: Kaj pomeni pobeg? 1256 01:00:02,332 --> 01:00:04,040 ALISON: No, kot Sanirni in pobeg. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 Izpit, ki ga imamo, super xkcd stripov, ki jih potegnite navzgor, če imate, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: To je zadnji slide. 1261 01:00:16,670 --> 01:00:18,500 ALISON: To je zadnji slide, res? 1262 01:00:18,500 --> 01:00:20,200 Oh moj bog. 1263 01:00:20,200 --> 01:00:21,780 Tam gremo, popolna. 1264 01:00:21,780 --> 01:00:27,900 OK, tako da v bistvu, lahko injicirali nekaj v tem SQL poizvedbo 1265 01:00:27,900 --> 01:00:30,560 kjer se zlomi oznaka, ali je David pokazala 1266 01:00:30,560 --> 01:00:38,460 v razredu, če imamo nekaj single quote 1 je enaka 1, in če v našem kodeksu, 1267 01:00:38,460 --> 01:00:41,230 smo neposredno kopirati samo, da je v, in imamo izteče eno ponudbo, 1268 01:00:41,230 --> 01:00:44,740 kaj se zgodi, je, da smo dobili nekateri izraz, ki 1269 01:00:44,740 --> 01:00:48,680 ocenjuje, da drži, da bo Naj nekdo vstopijo v našo bazo podatkov 1270 01:00:48,680 --> 01:00:51,720 in dobili podatke, da bomo Ne želim, da bi dobili. 1271 01:00:51,720 --> 01:00:54,240 Tako sanirajo vhode pomeni le pazite, 1272 01:00:54,240 --> 01:00:57,680 da smo bežijo ti znaki in jih označuje 1273 01:00:57,680 --> 01:01:01,720 kot znakov in ne stvari da bi bilo treba dovoliti 1274 01:01:01,720 --> 01:01:04,990 ki jih je treba sprejeti dobesedno kot naše SQL izjavo. 1275 01:01:04,990 --> 01:01:09,980 >> Tako velika stvar, da smo rekli, da morajo biti fantje uporabo 1276 01:01:09,980 --> 01:01:13,650 bili HTML posebne znakov, kar je nekaj 1277 01:01:13,650 --> 01:01:15,730 da boste morda želeli, da pogled na. 1278 01:01:15,730 --> 01:01:17,240 OK, izbrisati. 1279 01:01:17,240 --> 01:01:19,450 Podatkovni tipi, to bo vse na spletu. 1280 01:01:19,450 --> 01:01:23,510 Ker smo 15 minut zapustil, sem le, da bo šel skozi to. 1281 01:01:23,510 --> 01:01:28,500 PHP in SQL, v bistvu je to Pravkar smo imeli funkcijo poizvedbe, ki 1282 01:01:28,500 --> 01:01:31,520 pomagal zaščititi pred Te zlonamerne napade. 1283 01:01:31,520 --> 01:01:33,970 Torej, ko boste uporabili poizvedbe, smo se prepričajte 1284 01:01:33,970 --> 01:01:36,560 da so stvari sanirati in malenkosti. 1285 01:01:36,560 --> 01:01:41,070 >> MVC je samo oblikovanje paradigma, tako Model, pogled, krmilnik. 1286 01:01:41,070 --> 01:01:44,200 To je samo način, da se stvari lepo in razdeliti na enak način 1287 01:01:44,200 --> 01:01:47,100 da smo nagnjeni k faktorju ven kodo v funkcijah. 1288 01:01:47,100 --> 01:01:53,390 To je samo okvirna web design ki vam omogoča, da storijo enako stvar. 1289 01:01:53,390 --> 01:01:54,760 Grem preskočiti to. 1290 01:01:54,760 --> 01:01:58,530 >> To je nekaj, kar sem bi bilo super udoben s. 1291 01:01:58,530 --> 01:02:01,132 To je zelo malo mizo tam. 1292 01:02:01,132 --> 01:02:03,090 To vam daje funkcijo Primer modela. 1293 01:02:03,090 --> 01:02:05,473 Jaz sem samo skozi to, ker I res želim Davin, da bi lahko govoril. 1294 01:02:05,473 --> 01:02:07,140 Če imate kakršnakoli vprašanja, vas prosimo. 1295 01:02:07,140 --> 01:02:07,931 Tukaj bom potem. 1296 01:02:07,931 --> 01:02:10,360 Samo to, govori z mano. 1297 01:02:10,360 --> 01:02:13,380 S tem imamo HTTP statuse. 1298 01:02:13,380 --> 01:02:16,270 In Davin dogaja, da bo razstrelil S tem v 15 minutah. 1299 01:02:16,270 --> 01:02:17,560 To se dogaja, da je super. 1300 01:02:17,560 --> 01:02:18,893 >> Davin: OK. 1301 01:02:18,893 --> 01:02:20,312 Uh, tvoj mikrofon? 1302 01:02:20,312 --> 01:02:22,210 Ja. 1303 01:02:22,210 --> 01:02:23,336 Žal mi je. 1304 01:02:23,336 --> 01:02:24,460 ALISON: Way je treba pripraviti. 1305 01:02:24,460 --> 01:02:25,335 Davin: Ne, jaz sem pripravljen. 1306 01:02:25,335 --> 01:02:25,860 Jaz sem pripravljen. 1307 01:02:25,860 --> 01:02:28,790 Naredimo to. 1308 01:02:28,790 --> 01:02:29,290 Je pripravljen. 1309 01:02:29,290 --> 01:02:30,041 OK. 1310 01:02:30,041 --> 01:02:30,540 Žal mi je. 1311 01:02:30,540 --> 01:02:31,664 Sem polila kavo na sebi. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Ne vem, če sem bolj razburjen, da sem videti neumno, 1314 01:02:38,210 --> 01:02:40,600 ali da nimam več kave. 1315 01:02:40,600 --> 01:02:44,480 Kakorkoli že, samo hiter napoved o ponjave vidva. 1316 01:02:44,480 --> 01:02:47,994 Tako da je ta list vi imate, ni uradnik, kaj je na kvizu. 1317 01:02:47,994 --> 01:02:49,660 To je uradna, kar je na kvizu. 1318 01:02:49,660 --> 01:02:52,520 Tudi na spletni strani, povemo ti, OK, to bo na kvizu. 1319 01:02:52,520 --> 01:02:55,020 Torej, v malo goljufija stanja imate, ne uradno. 1320 01:02:55,020 --> 01:02:56,690 In tam so napake na njem. 1321 01:02:56,690 --> 01:03:01,490 Torej najbolje, da ne le slepo ga uporabljate. 1322 01:03:01,490 --> 01:03:04,390 Torej, ja, to je to. 1323 01:03:04,390 --> 01:03:05,980 Torej, kaj je dobil v to resnično hitro. 1324 01:03:05,980 --> 01:03:07,420 >> Torej HTTP statusi. 1325 01:03:07,420 --> 01:03:10,430 Torej, kaj se zgodi, ko Spletna stran, je vse v redu. 1326 01:03:10,430 --> 01:03:11,144 Vse je OK. 1327 01:03:11,144 --> 01:03:13,310 Vse, kar prihaja nazaj ste tako, kot si želite. 1328 01:03:13,310 --> 01:03:15,370 Dobiš OK 200. 1329 01:03:15,370 --> 01:03:19,250 301, kjer smo videli, da je pred 301? 1330 01:03:19,250 --> 01:03:20,890 Čakati, kaj se dogaja? 1331 01:03:20,890 --> 01:03:23,250 Žal mi je. 1332 01:03:23,250 --> 01:03:24,980 Videli smo, i kositra predavanje v varnosti. 1333 01:03:24,980 --> 01:03:30,690 Torej med varnostjo, tako da, če David vnesli v http in nato poskušal iti v cs50.net, 1334 01:03:30,690 --> 01:03:31,940 boste videli 301 preselil. 1335 01:03:31,940 --> 01:03:32,440 Zakaj? 1336 01:03:32,440 --> 01:03:35,570 Saj se dogaja, da preusmeri samodejno boste na naši HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> Torej 301 preselil, le da je v bistvu preusmeritev. 1338 01:03:38,649 --> 01:03:40,190 In lahko si misliš o njem, kot je ta. 1339 01:03:40,190 --> 01:03:43,790 Katerega od statusov, ki se začnejo z 2-ih, tistih, ki so, kot so, v redu, vse je OK. 1340 01:03:43,790 --> 01:03:46,530 Katerega od statusov, ki se začnejo s 3, to so preusmeritev. 1341 01:03:46,530 --> 01:03:49,571 Statusi, ki se začnejo s 4, kar pomeni, tam je nekakšna napaka odjemalca. 1342 01:03:49,571 --> 01:03:52,440 Statusi, ki se začnejo s 5, to je neke vrste napake strežnika. 1343 01:03:52,440 --> 01:03:54,680 Torej si nekako razšla statuse, kot je ta. 1344 01:03:54,680 --> 01:03:59,120 Tako da 304 ne, ne spremenijo, tako da v vašem server.c p-sprejemnikov, tako da je te reči 1345 01:03:59,120 --> 01:04:00,600 naložen cat.html. 1346 01:04:00,600 --> 01:04:03,360 Vse se vrača, dobiš 200S, OK, super. 1347 01:04:03,360 --> 01:04:04,540 >> Recimo, da ste jo osveži. 1348 01:04:04,540 --> 01:04:07,310 No, v notranjosti, ki cat.html, imate JPEG. 1349 01:04:07,310 --> 01:04:09,520 No, JPEG ni dogaja se ponovno naloži. 1350 01:04:09,520 --> 01:04:12,140 Ne boš bi objavili drugo GET zahtevo strežniku, 1351 01:04:12,140 --> 01:04:13,980 nato pa dobil vse te podatke nazaj. 1352 01:04:13,980 --> 01:04:17,560 To se dogaja samo be-- da slika dogaja se v predpomnilniku na vašem računalniku. 1353 01:04:17,560 --> 01:04:19,540 In tako bo, da slika je 304. 1354 01:04:19,540 --> 01:04:20,720 Torej to ni bil spremenjen. 1355 01:04:20,720 --> 01:04:24,600 Če nato zaprite ven, jasno piškotki, nato osvežite 1356 01:04:24,600 --> 01:04:27,490 in poskusite naložiti to stran še enkrat, boste videli 200S. 1357 01:04:27,490 --> 01:04:28,910 Ne boš videl, da 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, slabo zahteva, pravi hitro, kot če vas 1359 01:04:32,340 --> 01:04:34,880 grejo poslati JSON objekt s strežnikom 1360 01:04:34,880 --> 01:04:38,090 in vaš JSON objekt je bil nepravilen, boste videli kaj takega. 1361 01:04:38,090 --> 01:04:39,000 403, prepovedano. 1362 01:04:39,000 --> 01:04:40,330 Ko bi videli prepovedano? 1363 01:04:40,330 --> 01:04:41,394 Verjetno Verjetno? 1364 01:04:41,394 --> 01:04:42,060 OBČINSTVO: Chmod. 1365 01:04:42,060 --> 01:04:42,950 Davin: Chmod, ja. 1366 01:04:42,950 --> 01:04:44,730 Torej niste nastavili Dovoljenja pravilno. 1367 01:04:44,730 --> 01:04:45,577 404, ni mogoče najti. 1368 01:04:45,577 --> 01:04:46,410 To preprosto ni tam. 1369 01:04:46,410 --> 01:04:48,670 Torej, če vtipkate v napačnem naslovu. 1370 01:04:48,670 --> 01:04:53,500 500, notranje napake na strežniku, strežnik Verjetno ni bil pravilno nastavljen. 1371 01:04:53,500 --> 01:04:56,260 Ni nekaj, na koncu, ampak Nekaj ​​na strani strežnika. 1372 01:04:56,260 --> 01:04:57,240 In 503? 1373 01:04:57,240 --> 01:04:59,502 Veliko ljudi videl 503s v zadnjem p-niza. 1374 01:04:59,502 --> 01:05:00,460 Ko bi se to zgodilo? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Slišal sem šepetanje. 1377 01:05:05,660 --> 01:05:07,767 >> OBČINSTVO: Ko Google se je odločil, da si robot. 1378 01:05:07,767 --> 01:05:10,350 Davin: Ja, ko je Google odločil si robot, dobiš 503s. 1379 01:05:10,350 --> 01:05:11,560 Tako da je preobremenitev. 1380 01:05:11,560 --> 01:05:14,620 Če ste zahtevali od strežnika preveč, je ponavadi začasno. 1381 01:05:14,620 --> 01:05:15,560 In večina od vas ni opazil. 1382 01:05:15,560 --> 01:05:16,185 Torej si videl 503. 1383 01:05:16,185 --> 01:05:19,282 Morda ste vzeti malo break, potem 503s odšel, 1384 01:05:19,282 --> 01:05:20,490 in vse je bilo v redu. 1385 01:05:20,490 --> 01:05:26,640 >> Gabe: Real hitro, ko se vidva dobili 500 v verjetno ta zadnji problem nastaviti? 1386 01:05:26,640 --> 01:05:27,954 Ja? 1387 01:05:27,954 --> 01:05:30,906 >> OBČINSTVO: Ponavadi, če Strežnik ima datoteko založili 1388 01:05:30,906 --> 01:05:34,650 ali [neslišno] njihovo stroj [neslišno]. 1389 01:05:34,650 --> 01:05:38,870 >> Gabe: Torej lahko konfiguracijo Vprašanje v vašem PHP na vašem strežniku. 1390 01:05:38,870 --> 01:05:42,250 Morda pa bi bilo samo nekaj, kot podpičjem da vaš pozabil. 1391 01:05:42,250 --> 01:05:44,130 Če tipkate PHP, nekatera napačna sintaksa 1392 01:05:44,130 --> 01:05:46,000 ti bi lahko dobil kaj takega. 1393 01:05:46,000 --> 01:05:46,960 OK? 1394 01:05:46,960 --> 01:05:48,610 >> Davin: Cool. 1395 01:05:48,610 --> 01:05:51,180 Hočeš, da ne samo do AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> Gabe: [neslišno]. 1397 01:05:52,950 --> 01:05:53,450 Davin: OK. 1398 01:05:53,450 --> 01:05:54,230 Torej, kaj je DOM? 1399 01:05:54,230 --> 01:05:55,290 Kaj DOM stati? 1400 01:05:55,290 --> 01:05:56,990 >> OBČINSTVO: Document objektni model. 1401 01:05:56,990 --> 01:05:57,490 Davin: Lepo. 1402 01:05:57,490 --> 01:06:00,775 In zakaj mi je všeč? 1403 01:06:00,775 --> 01:06:02,670 Super. 1404 01:06:02,670 --> 01:06:06,651 Desno, tako da samo nam omogoča, da dostopa HTML, si oglejte našo stran zelo hitro. 1405 01:06:06,651 --> 01:06:07,150 Zakaj? 1406 01:06:07,150 --> 01:06:09,980 Ker smo zdravljenje naše Stran, zdravljenje naše HTML oznake, 1407 01:06:09,980 --> 01:06:11,730 Vse zdravljenje kot če oni predmetov. 1408 01:06:11,730 --> 01:06:13,710 Če smo jih obravnava kot oni predmeti, potem kaj lahko storimo? 1409 01:06:13,710 --> 01:06:15,210 No, lahko rečemo funkcije na njih. 1410 01:06:15,210 --> 01:06:16,460 In to je pomembno zato? 1411 01:06:16,460 --> 01:06:19,200 No, saj bomo uporabili JavaScript posodobiti našo HTML, 1412 01:06:19,200 --> 01:06:20,500 posodobi te predmete. 1413 01:06:20,500 --> 01:06:23,869 Torej, če jih obravnavajo kot predmeti, potem lahko klic funkcije na njih. 1414 01:06:23,869 --> 01:06:26,660 Grem, da se v to malo bolj ko sem šel v JavaScript, 1415 01:06:26,660 --> 01:06:30,510 vendar ste vsi videli kot document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Torej je vaš dokument element, dobili element po ID, 1417 01:06:32,870 --> 01:06:35,087 tako da boste videti za nekatere ID v HTML tag. 1418 01:06:35,087 --> 01:06:36,920 In potem, lahko to storite nekaj drugega, da je. 1419 01:06:36,920 --> 01:06:40,089 Na primer, kot document.body, Nato lahko dodate otroka. 1420 01:06:40,089 --> 01:06:41,630 Tako boste našli dokument. 1421 01:06:41,630 --> 01:06:42,340 Imate dokument. 1422 01:06:42,340 --> 01:06:43,629 Boste našli truplo. 1423 01:06:43,629 --> 01:06:44,420 Si našel truplo. 1424 01:06:44,420 --> 01:06:46,545 In potem ste tekoč poklicati neko funkcijo na njem. 1425 01:06:46,545 --> 01:06:50,312 Torej dodajanje otroka in lahko dodate nekatere HTML na koncu v vašem telesu. 1426 01:06:50,312 --> 01:06:52,520 Torej v bistvu, ste pravkar obdelovanjem kot predmet. 1427 01:06:52,520 --> 01:06:54,515 Ste zdravljenje HTML oznake kot objekt. 1428 01:06:54,515 --> 01:06:57,071 In to je zelo enostavno in hitro, da gredo skozi njih. 1429 01:06:57,071 --> 01:06:59,070 Ampak tudi vam omogoča, poklicati funkcij na njih 1430 01:06:59,070 --> 01:07:04,410 tako da lahko manipulira in spremenite elemente. 1431 01:07:04,410 --> 01:07:10,162 >> Gabe: Glede na to, zakaj je takšna JavaScript lepo jezik za interakcijo s HTML? 1432 01:07:10,162 --> 01:07:12,870 Kvote so, ko so ljudje izbrali jezik za brskalnik, 1433 01:07:12,870 --> 01:07:14,990 za strani odjemalca, JavaScript je res lepo, 1434 01:07:14,990 --> 01:07:16,765 to je res dobra v ravnanje z objekti. 1435 01:07:16,765 --> 01:07:20,620 In predmeti so nekako všeč predmeti, ki se pojavljajo v HTML, 1436 01:07:20,620 --> 01:07:23,940 zato je zelo enostaven za JavaScript storiti to vrsto ravnanje. 1437 01:07:23,940 --> 01:07:24,440 Davin: Lepo. 1438 01:07:24,440 --> 01:07:25,670 Torej, tukaj je samo primer. 1439 01:07:25,670 --> 01:07:29,020 Zato mislim, da na lanskoletnem kvizu, ali morda pred dvema letoma smo 1440 01:07:29,020 --> 01:07:30,840 vas prosil, da ustvarite drevo. 1441 01:07:30,840 --> 01:07:32,660 Torej, to je točno tisto, kar želite narediti. 1442 01:07:32,660 --> 01:07:34,255 Torej ste začeli z dokumentom. 1443 01:07:34,255 --> 01:07:36,130 In potem ste v bistvu samo poglej oznak. 1444 01:07:36,130 --> 01:07:38,100 Torej, če pogledaš, smo Pričnemo s HTML tag. 1445 01:07:38,100 --> 01:07:41,660 In potem boste dobili namige o tem, kako To temelji na zarezi narediti. 1446 01:07:41,660 --> 01:07:43,870 Torej vodja vrsta odcepi. 1447 01:07:43,870 --> 01:07:46,242 V notranjosti glave, imamo drugo oznako za naslov. 1448 01:07:46,242 --> 01:07:47,450 Torej, imamo naslov tag. 1449 01:07:47,450 --> 01:07:49,760 In v notranjosti, da imamo nekaj niz. 1450 01:07:49,760 --> 01:07:52,210 In tako smo se predstavljajo niz v krogu. 1451 01:07:52,210 --> 01:07:54,010 In vse oznake so v kvadrate. 1452 01:07:54,010 --> 01:07:56,270 >> In če pogledaš, če bomo misliti, da je to drevo, 1453 01:07:56,270 --> 01:07:58,730 in recimo, da je HTML od staršev, nato pa glavo in telo 1454 01:07:58,730 --> 01:07:59,772 se bodo bratje in sestre. 1455 01:07:59,772 --> 01:08:01,813 Oni tako bo otroci starša. 1456 01:08:01,813 --> 01:08:03,620 Zato, ker oni oba brata in sestre, oni 1457 01:08:03,620 --> 01:08:06,590 bo nekako zraven seboj v našem modelu drevo. 1458 01:08:06,590 --> 01:08:08,590 In potem ste v bistvu narediti točno isto stvar. 1459 01:08:08,590 --> 01:08:13,512 Torej ni težko, vendar smo se vprašal Vprašanja, kot je ta pred na kvizu. 1460 01:08:13,512 --> 01:08:15,220 Gabe: Ali koga imate vprašanja doslej? 1461 01:08:15,220 --> 01:08:16,357 Ali je to dobro? 1462 01:08:16,357 --> 01:08:16,856 Davin: Cool. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript, OK, dobra stvar. 1465 01:08:21,600 --> 01:08:24,069 Torej JavaScript, kaj je JavaScript? 1466 01:08:24,069 --> 01:08:28,370 No, JavaScript is-- je zapleteno, vendar 1467 01:08:28,370 --> 01:08:30,727 so nekatere izmed vrhuncev ki jih morate imeti v mislih. 1468 01:08:30,727 --> 01:08:31,810 Najprej je to ohlapno tipkal. 1469 01:08:31,810 --> 01:08:33,529 Kaj to pomeni? 1470 01:08:33,529 --> 01:08:35,596 Torej PHP was-- ja, kaj se dogaja? 1471 01:08:35,596 --> 01:08:39,854 >> OBČINSTVO: Nimate izrecno stanje, kakšen tip spremenljivke je. 1472 01:08:39,854 --> 01:08:40,479 Davin: Popolna. 1473 01:08:40,479 --> 01:08:43,270 Zato je rekel, da ne bi bilo treba izrecno navesti vrsto spremenljivke. 1474 01:08:43,270 --> 01:08:44,160 To je ravno prav. 1475 01:08:44,160 --> 01:08:49,700 Torej, v C, če sem imel int i je enak 50, potem v PHP, to je tako kot je ta, $ i, 1476 01:08:49,700 --> 01:08:50,550 enaka 50. 1477 01:08:50,550 --> 01:08:54,319 Nato v JavaScript, kaj bi bilo klic? 1478 01:08:54,319 --> 01:08:55,260 Var, kajne? 1479 01:08:55,260 --> 01:08:56,566 To bi bilo, kot var i enaka 50. 1480 01:08:56,566 --> 01:08:58,649 Vendar vam ni treba biti kot, OK, to je int. 1481 01:08:58,649 --> 01:09:00,350 OK, to je niz. 1482 01:09:00,350 --> 01:09:01,731 Ni potrebe, da to storim. 1483 01:09:01,731 --> 01:09:02,939 To je razlaga jezik. 1484 01:09:02,939 --> 01:09:04,904 Torej, kaj to pomeni? 1485 01:09:04,904 --> 01:09:06,340 >> OBČINSTVO: Ni zbrati. 1486 01:09:06,340 --> 01:09:10,470 >> Davin: Kaj ne zbirajo pomeni? 1487 01:09:10,470 --> 01:09:11,392 Ja? 1488 01:09:11,392 --> 01:09:15,336 >> OBČINSTVO: Nimate prestrukturirati kodo 1489 01:09:15,336 --> 01:09:18,294 da se je pripravljena za računalnik, da ga vodijo. 1490 01:09:18,294 --> 01:09:23,144 To je samo sprejeti v času izvedba in računalnik [neslišno]. 1491 01:09:23,144 --> 01:09:25,560 Davin: Ja, to se dogaja, prenese s pomočjo tolmača. 1492 01:09:25,560 --> 01:09:26,750 Ampak ti si ravno prav. 1493 01:09:26,750 --> 01:09:28,319 Tako da vam nikoli ne bo za njihovo zbiranje, kajne? 1494 01:09:28,319 --> 01:09:30,399 Ko ste počeli vaš PHP in JavaScript kodo, 1495 01:09:30,399 --> 01:09:31,365 nikoli ne imenuje zbere. 1496 01:09:31,365 --> 01:09:33,779 Nikoli ne imenuje nekaj podobnega Znamka ali kaj podobnega. 1497 01:09:33,779 --> 01:09:34,800 To je zato, ker je razlaga. 1498 01:09:34,800 --> 01:09:37,319 Torej, vsakič, ko gre skozi brskalnika, gre s pomočjo tolmača. 1499 01:09:37,319 --> 01:09:40,370 In to se dogaja, da ga interpretirajo Samo v realnem času, takoj za vas. 1500 01:09:40,370 --> 01:09:43,770 Torej, kaj je nekaj pozitivnih in negativnih da ima razlaga jezik 1501 01:09:43,770 --> 01:09:45,258 in ima zbrati jezik? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Torej compiling-- ja, kaj se dogaja? 1504 01:09:50,540 --> 01:09:52,444 >> OBČINSTVO: razlaga je počasnejši. 1505 01:09:52,444 --> 01:09:53,319 Davin: V kakšnem smislu? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> OBČINSTVO: Ko vas zbere, nimate 1508 01:09:59,091 --> 01:10:04,400 storiti vse dodatne ukrepe za izvršitev ga, ker je ta [neslišno]. 1509 01:10:04,400 --> 01:10:05,570 >> Davin: Right, popolna. 1510 01:10:05,570 --> 01:10:08,386 Torej, kaj si rekel je, v bistvu, da je prevajanje, 1511 01:10:08,386 --> 01:10:10,760 ko zbere, imate Veliko začetnih stroškov, kajne? 1512 01:10:10,760 --> 01:10:11,760 Boš za njihovo zbiranje. 1513 01:10:11,760 --> 01:10:13,750 Ampak ko ga zbere, prevajalnik se dogaja, da ga optimizirati. 1514 01:10:13,750 --> 01:10:14,840 To se dogaja, da se hitro. 1515 01:10:14,840 --> 01:10:16,170 To se dogaja, da v bistvu se tako hitro, kot je mogoče. 1516 01:10:16,170 --> 01:10:18,830 S tolmačenjem, nikoli so, da je vnaprejšnje stroške. 1517 01:10:18,830 --> 01:10:22,260 Namesto, da se dogaja, da je nekoliko počasneje vsak čas jo razlagajo. 1518 01:10:22,260 --> 01:10:24,940 In boste morali to razlagajo vsak čas. 1519 01:10:24,940 --> 01:10:27,114 Torej, namesto da bi to enkratni strošek, zdaj si 1520 01:10:27,114 --> 01:10:29,530 bodo morali razlagati vsakič stran ometi. 1521 01:10:29,530 --> 01:10:31,890 >> Torej tolmači so dobri, saj nimate za njihovo zbiranje, 1522 01:10:31,890 --> 01:10:33,980 ampak oni so slaba, da je vsak Tokrat je na kupe strani, to je 1523 01:10:33,980 --> 01:10:35,771 bodo morali interpretirati ta JavaScript. 1524 01:10:35,771 --> 01:10:40,520 In to se dogaja, da teče nekoliko počasneje kot če ste bili, da ga pripravijo. 1525 01:10:40,520 --> 01:10:43,044 Vam omogoča, da communicate-- oh, čakaj. 1526 01:10:43,044 --> 01:10:44,960 Uporabi za manipulacijo vsebino in izgled. 1527 01:10:44,960 --> 01:10:46,043 Pravkar smo se pogovarjali o tem. 1528 01:10:46,043 --> 01:10:47,250 Uporablja DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, bomo dobili v AJAX v malo. 1530 01:10:49,930 --> 01:10:51,520 In potem, da je na strani odjemalca. 1531 01:10:51,520 --> 01:10:53,110 Torej PHP je server side. 1532 01:10:53,110 --> 01:10:54,360 JavaScript je odjemalca. 1533 01:10:54,360 --> 01:10:57,780 Katere so pozitivne na to? 1534 01:10:57,780 --> 01:10:58,280 To je pravi. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 To je hitrejši, prav? 1537 01:11:02,780 --> 01:11:05,282 Ker nimate to-- to hitreje. 1538 01:11:05,282 --> 01:11:07,490 Nimate komunicirati s kakšno drugo napravo. 1539 01:11:07,490 --> 01:11:08,790 Če ste le na vaš Stranka, si nikoli 1540 01:11:08,790 --> 01:11:11,280 bodo morali iti in videti, kaj je na strežniku 1541 01:11:11,280 --> 01:11:13,150 nato pa poroča ali nekaj takega. 1542 01:11:13,150 --> 01:11:15,410 Tako na strani odjemalca se nagiba k biti malo hitreje. 1543 01:11:15,410 --> 01:11:17,910 >> Gabe: Ja, ampak to ne pomeni, da je PHP 1544 01:11:17,910 --> 01:11:20,440 hitreje kot JavaScript ali kaj podobnega. 1545 01:11:20,440 --> 01:11:23,270 Vodijo vrste v isti Hitrost, ker oni so tako 1546 01:11:23,270 --> 01:11:24,490 razlagati jeziku. 1547 01:11:24,490 --> 01:11:26,680 Stvar, ki se je počasi Tukaj je zaprosilo. 1548 01:11:26,680 --> 01:11:28,870 Torej ste dejansko dogaja vso pot čez Brazilijo 1549 01:11:28,870 --> 01:11:31,460 da bi dobili nekaj informacij ki živi tam. 1550 01:11:31,460 --> 01:11:34,590 Vendar PHP in JavaScript, ki jih vrsta teče v isto hitrostjo. 1551 01:11:34,590 --> 01:11:37,930 Saj ne, da je ena hitreje kot drugi. 1552 01:11:37,930 --> 01:11:40,600 To pa je tudi, trik vprašanje tukaj. 1553 01:11:40,600 --> 01:11:47,338 Torej JavaScript nikoli postane strojni kodi, pravilna ali napačna? 1554 01:11:47,338 --> 01:11:48,590 >> OBČINSTVO: False. 1555 01:11:48,590 --> 01:11:49,090 Gabe: False. 1556 01:11:49,090 --> 01:11:51,298 To mora postati stroj koda ker stroj koda 1557 01:11:51,298 --> 01:11:53,210 Edina stvar, stroj razume. 1558 01:11:53,210 --> 01:11:55,800 Čeprav to ni zbrati, še vedno postane stroj koda 1559 01:11:55,800 --> 01:11:59,120 ker tolmač je pravkar Program, ki gre po vrsticah 1560 01:11:59,120 --> 01:12:02,170 in transformira to vrstico v nekaj računalnik razume. 1561 01:12:02,170 --> 01:12:02,825 OK? 1562 01:12:02,825 --> 01:12:03,325 Cool. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> Davin: Tukaj je le zelo osnovna Pozdravljen, svet JavaScript. 1565 01:12:12,890 --> 01:12:15,590 Tako da ne vem, if-- ste videli to. 1566 01:12:15,590 --> 01:12:17,630 Vendar boste morali HTML tukaj. 1567 01:12:17,630 --> 01:12:21,020 In namesto da bi dejansko dajanje JavaScript v scenariju oznake, 1568 01:12:21,020 --> 01:12:22,810 tako da bi normalno dal v glavo. 1569 01:12:22,810 --> 01:12:24,030 Imate skriptne oznake. 1570 01:12:24,030 --> 01:12:24,870 Lahko ga spustite tukaj. 1571 01:12:24,870 --> 01:12:28,350 Vsi smo tukaj storiti je, da smo povezani in-- tako da smo povezani v datoteki JavaScript 1572 01:12:28,350 --> 01:12:29,137 kot je ta. 1573 01:12:29,137 --> 01:12:30,470 In ste vse to storili, kajne? 1574 01:12:30,470 --> 01:12:34,740 Torej, ko ste bili z uporabo jQuery in underscore.js v zadnjem p-niza, 1575 01:12:34,740 --> 01:12:38,700 nimate ton kode up v vaš scenarij oznake, v tvoji glavi. 1576 01:12:38,700 --> 01:12:41,415 Lahko bi to naredil, ampak ste pravkar povezuje v. 1577 01:12:41,415 --> 01:12:43,540 In ste ga povezuje v Tako kot ste storili z CSS. 1578 01:12:43,540 --> 01:12:50,186 Torej je le olajša tako glasi koda ni všeč 1.000 vrstic 1579 01:12:50,186 --> 01:12:52,310 s ton funkcij, ki vam morda ne uporabljate. 1580 01:12:52,310 --> 01:12:53,518 >> Namesto tega, si ga poveže. 1581 01:12:53,518 --> 01:12:55,050 Jo compartmentalizes. 1582 01:12:55,050 --> 01:13:00,110 To je, kot je pisanje nekaj header datoteko in nato pa tudi te datoteke glave v C. 1583 01:13:00,110 --> 01:13:01,620 Pomislite na to, tako kot je ta. 1584 01:13:01,620 --> 01:13:02,680 Torej, kaj je to naredil? 1585 01:13:02,680 --> 01:13:04,560 No, to se dogaja, da teče. 1586 01:13:04,560 --> 01:13:05,410 To se dogaja, da se opozori. 1587 01:13:05,410 --> 01:13:08,020 Tako boste dobili malo pop up imenovano Hello World. 1588 01:13:08,020 --> 01:13:11,420 Hitro vprašanje, samo preverjanje sanity, tako da boste videli tukaj v telesu, 1589 01:13:11,420 --> 01:13:13,160 pravijo, telo, HTML tukaj. 1590 01:13:13,160 --> 01:13:14,080 Kaj je na prvem mestu? 1591 01:13:14,080 --> 01:13:16,864 Ali vidite telo, HTML tukaj, ali pa vidim opozorilo prvi? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> OBČINSTVO: Alert. 1594 01:13:20,820 --> 01:13:21,470 >> Davin: Right. 1595 01:13:21,470 --> 01:13:22,110 Pravi pozorni. 1596 01:13:22,110 --> 01:13:22,610 Zakaj? 1597 01:13:22,610 --> 01:13:24,470 >> OBČINSTVO: Ker vas gredo od vrha do dna. 1598 01:13:24,470 --> 01:13:25,600 >> Davin: Da. 1599 01:13:25,600 --> 01:13:26,100 Popolna. 1600 01:13:26,100 --> 01:13:29,207 Tako pravi, greš od vrha do dno, ki je popolnoma pravilna. 1601 01:13:29,207 --> 01:13:30,790 Ti boš šel od vrha do dna. 1602 01:13:30,790 --> 01:13:34,790 In v JavaScript, jQuery, imate funkcija, ki je kot onload ali pripravljen, 1603 01:13:34,790 --> 01:13:38,030 in ki pravi, OK, počakajte vse to HTML je naložen. 1604 01:13:38,030 --> 01:13:39,580 In potem, pokličite JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Ker nimamo, da je tu, Prva stvar, ki se bo zgodilo 1606 01:13:42,190 --> 01:13:43,920 se dogaja, da gredo od vrha do dna. 1607 01:13:43,920 --> 01:13:46,310 To se dogaja, da zadeti, da JS klic, da se dogaja, da se opozori. 1608 01:13:46,310 --> 01:13:49,510 Potem, da kliknete OK, da alert izgine. 1609 01:13:49,510 --> 01:13:53,600 Potem pa se dogaja, da pokažejo si telo HTML tukaj. 1610 01:13:53,600 --> 01:13:54,590 Lepo. 1611 01:13:54,590 --> 01:14:00,880 >> OK, tako da samo resnično hitro, pisanje v JavaScriptu je super hiter. 1612 01:14:00,880 --> 01:14:02,710 Da se razglasi spremenljivka, ime var. 1613 01:14:02,710 --> 01:14:07,070 Torej, v C, imate int i, imate da ugotovi, kakšne vrste je. 1614 01:14:07,070 --> 01:14:08,040 PHP, $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript, var. 1616 01:14:08,755 --> 01:14:09,630 Pogovarjali smo se o tem. 1617 01:14:09,630 --> 01:14:11,020 Dobro, pojdimo. 1618 01:14:11,020 --> 01:14:12,510 >> Zanke, ista stvar. 1619 01:14:12,510 --> 01:14:14,230 Ista stvar. 1620 01:14:14,230 --> 01:14:18,165 Izjave funkcija, zato tako kot ste jih videli v C. 1621 01:14:18,165 --> 01:14:21,290 Edina stvar, ki je tako drugačen, če prideš do drugih programskih jezikov, 1622 01:14:21,290 --> 01:14:24,780 kot takrat, ko ste vzeli 51 naslednji semester in delaš z ocaml, 1623 01:14:24,780 --> 01:14:26,690 lahko ukvarjajo z anonimnimi funkcij. 1624 01:14:26,690 --> 01:14:28,240 Torej, to je točno tisto, kar imamo tukaj. 1625 01:14:28,240 --> 01:14:31,560 Torej hočeš dati v znesku, nekakšen vrednosti zneska. 1626 01:14:31,560 --> 01:14:33,870 Lahko pa bi se to počne samo enkrat. 1627 01:14:33,870 --> 01:14:37,310 Torej si ne želite, da ga pokličete funkcijo Vsota, izročiti to izjavo funkcijo. 1628 01:14:37,310 --> 01:14:39,830 Namesto tega, si ga uporabljate kot anonimni funkcijo. 1629 01:14:39,830 --> 01:14:42,469 In ste videli to veliko. 1630 01:14:42,469 --> 01:14:44,510 Boste videli zgled ta v nekaj diapozitivov. 1631 01:14:44,510 --> 01:14:45,597 Ja, bomo videli. 1632 01:14:45,597 --> 01:14:46,430 Gabe: Dobro vprašanje. 1633 01:14:46,430 --> 01:14:50,660 Ko se boste morda želeli uporabiti anonimni funkcija tu? 1634 01:14:50,660 --> 01:14:54,111 V bistvu, če hočeš nekaj, kot na dogodek, da se zgodi. 1635 01:14:54,111 --> 01:14:55,860 Torej, ko je miš klikne, na primer, 1636 01:14:55,860 --> 01:14:57,790 hočeš nekatere funkcije, ki se imenuje. 1637 01:14:57,790 --> 01:15:00,570 Tako se boste peljali na dogodek trener, boste peljali na dogodek, 1638 01:15:00,570 --> 01:15:02,870 vrste, funkcija, želite, da se imenuje. 1639 01:15:02,870 --> 01:15:04,710 In kaj ste mimo je kot, na koncu 1640 01:15:04,710 --> 01:15:08,757 dneva, le kazalec da navodila, da funkcijo. 1641 01:15:08,757 --> 01:15:11,090 Torej to ni všeč, da ste mimo celotno kodo, prav tako 1642 01:15:11,090 --> 01:15:12,173 kazalec na funkcijo. 1643 01:15:12,173 --> 01:15:17,871 In potem, ko nekdo klikne miške, nato pa, da funkcija dobi imenovani. 1644 01:15:17,871 --> 01:15:22,340 >> Davin: Polja, zato vas pridobiti izjavo niza. 1645 01:15:22,340 --> 01:15:23,990 Potem, matrika postaviti stvari v. 1646 01:15:23,990 --> 01:15:25,769 Real hitro, kaj bo to izpisal? 1647 01:15:25,769 --> 01:15:27,060 Kaj bo Tretji element je? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> OBČINSTVO: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> Davin: Right, da bi bilo "JS". 1651 01:15:33,940 --> 01:15:35,760 Počakaj, pojdi nazaj. 1652 01:15:35,760 --> 01:15:37,100 Kakšna je dolžina? 1653 01:15:37,100 --> 01:15:38,117 >> OBČINSTVO: Tri. 1654 01:15:38,117 --> 01:15:38,950 Davin: Tri, kajne? 1655 01:15:38,950 --> 01:15:40,210 Točno to, kar misliš. 1656 01:15:40,210 --> 01:15:42,072 OK, zdaj gremo. 1657 01:15:42,072 --> 01:15:43,530 Nizi, lahko dodate stvari zanje. 1658 01:15:43,530 --> 01:15:45,395 Torej si lahko presegajo njihove začetne meje. 1659 01:15:45,395 --> 01:15:46,740 Samo nekaj, da v mislih. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, oni malo malo bolj tolerantna v smislu stvari 1661 01:15:49,760 --> 01:15:50,570 kot je ta. 1662 01:15:50,570 --> 01:15:54,260 Predmetov, zelo podobno kot konstruktov v C, zelo veliko 1663 01:15:54,260 --> 01:15:56,590 kot asociativne nize v PHP. 1664 01:15:56,590 --> 01:15:58,720 Vsi ste imeli izkušnje s tem. 1665 01:15:58,720 --> 01:16:01,880 Torej, JSON, če ste kratki JSON in nazaj v-p nastavljen osem, 1666 01:16:01,880 --> 01:16:03,260 to je vaša naloga. 1667 01:16:03,260 --> 01:16:06,290 >> Torej, ja, na primer, resnično hitro primer. 1668 01:16:06,290 --> 01:16:07,880 Tukaj je objekt. 1669 01:16:07,880 --> 01:16:12,700 Tako boste reference to objekt, tako da samo resnično hitro, 1670 01:16:12,700 --> 01:16:18,630 recimo, da sem želel, da bi našli ven, OK, kaj je tečaj? 1671 01:16:18,630 --> 01:16:20,681 In tako ime objekta je tu CS50. 1672 01:16:20,681 --> 01:16:23,180 In potem, če sem imel asociativni matrika, kako bi jaz to naredil? 1673 01:16:23,180 --> 01:16:24,580 Bom s ključem, kajne? 1674 01:16:24,580 --> 01:16:26,030 Tako da imam ime array. 1675 01:16:26,030 --> 01:16:30,160 Imam konzolo, ponudbe, ključ, končni citati, konec konzola, 1676 01:16:30,160 --> 01:16:33,610 in da se bodo reference, ki element v mojem asociativni array. 1677 01:16:33,610 --> 01:16:37,646 Kako se sklicuje Seveda v moji objekta? 1678 01:16:37,646 --> 01:16:39,170 Kdo ve? 1679 01:16:39,170 --> 01:16:40,622 >> OBČINSTVO: [neslišno]. 1680 01:16:40,622 --> 01:16:41,784 >> Davin: Kaj se dogaja? 1681 01:16:41,784 --> 01:16:42,700 OBČINSTVO: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 Davin: Ja, ja. 1683 01:16:43,510 --> 01:16:45,320 Torej CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Torej, kako si reference stvari znotraj JSON objekt je s piko. 1685 01:16:48,770 --> 01:16:53,114 >> OBČINSTVO: Lahko uporabite tudi nizi sintakso. 1686 01:16:53,114 --> 01:16:54,050 >> Davin: OK, v redu. 1687 01:16:54,050 --> 01:16:57,544 >> Gabe: Lahko uporabite tudi CS50 nosilec, niz, kot je v narekovajih. 1688 01:16:57,544 --> 01:16:59,210 OBČINSTVO: Mislim, da je enaka PHP. 1689 01:16:59,210 --> 01:17:00,293 Gabe: To je ista stvar. 1690 01:17:00,293 --> 01:17:02,487 Davin: Fino! 1691 01:17:02,487 --> 01:17:03,945 Vendar boste videli to na drugih mestih. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Ja, nadaljuj. 1694 01:17:10,480 --> 01:17:13,330 To je tisto, kar sem pravkar rekel. 1695 01:17:13,330 --> 01:17:17,840 Torej v JavaScript jQuery npr. 1696 01:17:17,840 --> 01:17:19,440 Torej je to moja DOM, kajne? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Real hitro, tako da imam glava, zdravo svet, body. 1699 01:17:25,410 --> 01:17:26,160 Imam gumb. 1700 01:17:26,160 --> 01:17:27,870 Piše "potiskanje me," tako rad, da ga potisnite. 1701 01:17:27,870 --> 01:17:29,745 In želim, da narediš nekaj ko ga kliknili. 1702 01:17:29,745 --> 01:17:31,220 Desno, naprej. 1703 01:17:31,220 --> 01:17:34,630 >> Desno, tako da je to moja JavaScript. 1704 01:17:34,630 --> 01:17:37,790 Torej jQuery je le lažje način za pisanje JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Torej je to, in kaj bom pokazati boste naslednjič, se bo jQuery, 1706 01:17:40,920 --> 01:17:41,930 so enaki. 1707 01:17:41,930 --> 01:17:43,990 Torej bodo naredili iste stvari. 1708 01:17:43,990 --> 01:17:45,974 Samo jQuery kaže, da je malo lažje. 1709 01:17:45,974 --> 01:17:47,140 Ljudje ponavadi všeč bolj. 1710 01:17:47,140 --> 01:17:48,390 To je veliko funkcionalnosti. 1711 01:17:48,390 --> 01:17:49,830 Torej, ljudje se nagibajo k uporabi jQuery. 1712 01:17:49,830 --> 01:17:53,270 Vi vsi uporabljajo jQuery v zadnjem p-set. 1713 01:17:53,270 --> 01:17:54,270 Torej, kaj bo to naredil? 1714 01:17:54,270 --> 01:17:56,580 Kaj bo to JavaScript-- tako To je samo navaden JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Kaj bo to? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Kaj bo naredil? 1718 01:18:03,450 --> 01:18:04,890 >> Torej, najprej, boste videli okno onload. 1719 01:18:04,890 --> 01:18:05,390 Kajne? 1720 01:18:05,390 --> 01:18:06,640 Zato nismo videli, da prej. 1721 01:18:06,640 --> 01:18:09,380 Torej, to se dogaja, da počakajte še celotno okno obremenitvah. 1722 01:18:09,380 --> 01:18:12,770 Tako se dogaja, da počakajte obremenitev HTML, vse slike 1723 01:18:12,770 --> 01:18:13,770 preden to počne ničesar. 1724 01:18:13,770 --> 01:18:16,050 Torej, recimo, da je naša DOM je naložen. 1725 01:18:16,050 --> 01:18:17,270 Vse, kar je tam. 1726 01:18:17,270 --> 01:18:19,080 Potem kaj se bo zgodilo? 1727 01:18:19,080 --> 01:18:19,922 Ja? 1728 01:18:19,922 --> 01:18:22,880 >> OBČINSTVO: prikaže Button. 1729 01:18:22,880 --> 01:18:25,201 >> Davin: Gumb je že tam. 1730 01:18:25,201 --> 01:18:26,700 Ja, gumb je že tam. 1731 01:18:26,700 --> 01:18:31,190 Toda to se dogaja, se pravi, OK, če sem kliknite gumb, 1732 01:18:31,190 --> 01:18:33,650 tako Gumb je že tam, kot to HTML tag. 1733 01:18:33,650 --> 01:18:35,980 Počakaj, pojdi nazaj resnično hitro. 1734 01:18:35,980 --> 01:18:39,470 Ta oznaka prav tukaj je bo gumb že. 1735 01:18:39,470 --> 01:18:40,810 Tam je že gumb. 1736 01:18:40,810 --> 01:18:44,120 Ampak potem, JavaScript tag, tukaj, 1737 01:18:44,120 --> 01:18:46,160 se pravi, v redu, želim da bi dobili element po ID, 1738 01:18:46,160 --> 01:18:50,300 zato gumb Iskanje samo pravi, OK, želim preslikati te spremenljivke na ta gumb. 1739 01:18:50,300 --> 01:18:53,120 Tako da spremenljivka je pravkar lažji način za dostop do ta gumb. 1740 01:18:53,120 --> 01:18:57,300 In sem rekel, v redu, če sem kliknite, da gumb, tako da, če sem kliknite ta element, 1741 01:18:57,300 --> 01:18:59,560 in ta element nanaša gumb, če sem ga kliknite, 1742 01:18:59,560 --> 01:19:00,875 potem hočem poklicati funkcijo. 1743 01:19:00,875 --> 01:19:03,500 Tukaj je eden od tistih, anonimna Naloge smo govorili o tem. 1744 01:19:03,500 --> 01:19:04,840 >> Samo poklicati nekatere funkcije. 1745 01:19:04,840 --> 01:19:08,840 V tej funkciji, v bistvu nekaj, kar smo videli veliko, opozorilo. 1746 01:19:08,840 --> 01:19:10,477 Kliknete gumb za iskanje. 1747 01:19:10,477 --> 01:19:12,060 To se dogaja, da imajo v bistvu na gumb. 1748 01:19:12,060 --> 01:19:13,040 Si ga kliknite. 1749 01:19:13,040 --> 01:19:14,040 Dobiš to opozorilo. 1750 01:19:14,040 --> 01:19:14,850 X ven. 1751 01:19:14,850 --> 01:19:15,754 To je to. 1752 01:19:15,754 --> 01:19:16,254 Ja? 1753 01:19:16,254 --> 01:19:21,980 >> OBČINSTVO: Torej, če si dal skript [Neslišno], script tag v HTML? 1754 01:19:21,980 --> 01:19:24,300 >> Davin: Lahko dal skript tag naravnost v glavo 1755 01:19:24,300 --> 01:19:30,667 ker imate to onload. 1756 01:19:30,667 --> 01:19:32,000 Je tudi, da imate klik. 1757 01:19:32,000 --> 01:19:34,166 Tako se dogaja, da počakajte kliknete nekaj. 1758 01:19:34,166 --> 01:19:37,470 Vendar onload je le, da je varno, da bi da vse obremenitve v HTML 1759 01:19:37,470 --> 01:19:38,170 vnaprej. 1760 01:19:38,170 --> 01:19:39,247 Ja? 1761 01:19:39,247 --> 01:19:40,330 Hočeš povedati kaj? 1762 01:19:40,330 --> 01:19:41,080 >> Gabe: [neslišno]. 1763 01:19:41,080 --> 01:19:42,485 Davin: Ja. 1764 01:19:42,485 --> 01:19:45,426 >> OBČINSTVO: Torej onload izogiba opredelitvi gumb spremenljivo iskanje 1765 01:19:45,426 --> 01:19:49,930 s samo rekel document.getElementById iskanje gumb dot [neslišno]. 1766 01:19:49,930 --> 01:19:52,320 >> Davin: Definitivno, potem pa Vaše niz pravkar dobil ogromno. 1767 01:19:52,320 --> 01:19:55,553 Točno, tako da je to samo zato, da da bi bilo lažje za vas, ja. 1768 01:19:55,553 --> 01:19:56,053 Ja? 1769 01:19:56,053 --> 01:19:57,886 >> OBČINSTVO: kje smo naredili ustvariti window.onload? 1770 01:19:57,886 --> 01:19:58,951 Ali document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> Davin: Ja, obstaja. 1772 01:20:00,590 --> 01:20:02,094 Ja, tam je, sem preveril. 1773 01:20:02,094 --> 01:20:03,710 >> Gabe: Ni jim treba skrbeti. 1774 01:20:03,710 --> 01:20:06,970 >> Davin: OK, tako da bom da vam povem, anyway. 1775 01:20:06,970 --> 01:20:11,005 Torej v bistvu, le na splošno, zato window.onload počaka, dokler vaš DOM, vse 1776 01:20:11,005 --> 01:20:12,180 Vaše HTML, obremenitve. 1777 01:20:12,180 --> 01:20:13,513 To počaka, dokler vaše slike obremenitvi. 1778 01:20:13,513 --> 01:20:14,930 To počaka, dokler ni vse obremenitve. 1779 01:20:14,930 --> 01:20:18,410 document.ready, samo počaka, dokler ne minejo DOM obremenitvah. 1780 01:20:18,410 --> 01:20:22,190 Ko HTML je vse tam, enkrat Vaše DOM je tam, začne teči. 1781 01:20:22,190 --> 01:20:23,400 To je edina razlika. 1782 01:20:23,400 --> 01:20:24,700 >> Gabe: preverite Quick sanity tukaj. 1783 01:20:24,700 --> 01:20:29,060 Torej je to razvidno vrste kot vrstico kode, kajne? 1784 01:20:29,060 --> 01:20:33,600 Ker je window.onload enaka kup stvari. 1785 01:20:33,600 --> 01:20:39,030 Ko JavaScript bere to res ali false, funkcija dobi izvrši. 1786 01:20:39,030 --> 01:20:40,020 False. 1787 01:20:40,020 --> 01:20:40,920 OK? 1788 01:20:40,920 --> 01:20:44,470 Kaj se dogaja tukaj, ste pravkar poteka ta funkcija kot anonimni funkcij 1789 01:20:44,470 --> 01:20:45,300 da window.onload. 1790 01:20:45,300 --> 01:20:48,480 In potem, ko je šlo da se dejansko izvajajo? 1791 01:20:48,480 --> 01:20:49,600 Ko so okna obremenitve. 1792 01:20:49,600 --> 01:20:50,420 To je dogodek. 1793 01:20:50,420 --> 01:20:52,460 Tako da je jus t stvar smo govorimo o že prej, kajne? 1794 01:20:52,460 --> 01:20:54,580 Torej, ko se dogodek zgodi, Funkcija zgodi. 1795 01:20:54,580 --> 01:20:55,746 Ista stvar z onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> Davin: OK, tako da je nekdo vzel stran document.ready. 1798 01:21:03,130 --> 01:21:04,698 Toda to bo točen nam je isti 1799 01:21:04,698 --> 01:21:06,864 OBČINSTVO: znak za dolar, da je document.ready. 1800 01:21:06,864 --> 01:21:07,710 To je bližnjica. 1801 01:21:07,710 --> 01:21:08,501 >> Davin: Oh, da je? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, to pomeni, document.ready, bližnjica. 1804 01:21:15,500 --> 01:21:19,660 Toda to je enako kot window.onload razen za to majhno razliko 1805 01:21:19,660 --> 01:21:20,680 Sem ti govoril. 1806 01:21:20,680 --> 01:21:21,870 In to je jQuery. 1807 01:21:21,870 --> 01:21:25,190 Torej je to popolnoma enaka thing-- to JavaScript. 1808 01:21:25,190 --> 01:21:29,500 To je just-- nekateri ljudje mislijo o njem kot bolj majhna teža, mehek različica 1809 01:21:29,500 --> 01:21:32,370 ki ima veliko funkcionalnosti da boste verjetno uporabljali. 1810 01:21:32,370 --> 01:21:34,500 Tako da to počne točno isto stvar. 1811 01:21:34,500 --> 01:21:37,110 >> Torej stvari, da nekako izpostaviti. 1812 01:21:37,110 --> 01:21:40,364 Tako v drugi primer, imela document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 tako da smo imeli tako dolgo Niz, ki se dogaja, da bi dobili 1814 01:21:42,280 --> 01:21:44,290 element, ki ga glede na ID ima. 1815 01:21:44,290 --> 01:21:46,470 Da se nadomesti s tem razpisu tukaj. 1816 01:21:46,470 --> 01:21:50,860 Torej vidite znak za dolar, potem vidiš, citiram, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag je vedno selektor. 1818 01:21:52,370 --> 01:21:54,730 To pravi, OK, to ima veze z ID. 1819 01:21:54,730 --> 01:21:56,120 Kaj je selektor za razred? 1820 01:21:56,120 --> 01:21:57,190 >> OBČINSTVO: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> Davin: Dot, desno. 1822 01:21:57,960 --> 01:22:01,950 Če ste šele tekoč izberite oznako, kaj je to? 1823 01:22:01,950 --> 01:22:03,310 To je samo oznaka, točno. 1824 01:22:03,310 --> 01:22:05,560 In lahko uporabite, da je tu, kot dobro. 1825 01:22:05,560 --> 01:22:08,560 >> Gabe: In po oznakah, mislimo kot div, na primer, ali glavo. 1826 01:22:08,560 --> 01:22:11,500 >> Davin: Ali telo ali p ali kaj takega, ja. 1827 01:22:11,500 --> 01:22:14,390 Torej, tukaj, OK, namesto da bi rekel document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 to je samo točno isto stvar. 1829 01:22:16,500 --> 01:22:17,990 Samo v jQuery, je krajši. 1830 01:22:17,990 --> 01:22:19,860 Torej, to je enostavnejši. 1831 01:22:19,860 --> 01:22:23,420 Torej, nič več onclick, kliknite. 1832 01:22:23,420 --> 01:22:26,320 Funkcija jQuery, pokličite to funkcijo. 1833 01:22:26,320 --> 01:22:27,580 Alert je popolnoma enak. 1834 01:22:27,580 --> 01:22:29,452 Torej, to je malo manjši ali malo 1835 01:22:29,452 --> 01:22:32,410 krajša, malo bit-- ljudje mislijo to je malo lažje pisati ven, 1836 01:22:32,410 --> 01:22:34,600 malo lažje razumeti. 1837 01:22:34,600 --> 01:22:35,640 Toda to je jQuery. 1838 01:22:35,640 --> 01:22:37,887 Veliko ljudi se malo malo zmeden in zaskrbljen, 1839 01:22:37,887 --> 01:22:40,220 in mislijo, OK, jQuery se razlikuje od JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Moram zapomniti ti dve različni stvari. 1841 01:22:42,136 --> 01:22:42,740 To ni. 1842 01:22:42,740 --> 01:22:45,315 Mislim, da je drugačna sintaksa. 1843 01:22:45,315 --> 01:22:46,970 Vendar je jQuery JavaScript. 1844 01:22:46,970 --> 01:22:50,050 To je samo na videz boljša različica, 1845 01:22:50,050 --> 01:22:51,967 lahko lažje razumem, da ljudje uporabljajo. 1846 01:22:51,967 --> 01:22:53,716 Gabe: Ja, biti pošten, da je znak za dolar 1847 01:22:53,716 --> 01:22:57,240 ki jih vidite v jQuery, da je samo ime funkcije, ki jQuery definira. 1848 01:22:57,240 --> 01:22:58,614 To nima nič posebnega. 1849 01:22:58,614 --> 01:23:03,140 Ali je to samo ime funkcije, samo rad, da bi lahko določite znak za dolar. 1850 01:23:03,140 --> 01:23:05,670 >> Davin: Ja, tako je govoril o tem. 1851 01:23:05,670 --> 01:23:06,680 Nekaj ​​koristnih stvari. 1852 01:23:06,680 --> 01:23:10,414 Iskal sem spet na starih kvizov. 1853 01:23:10,414 --> 01:23:13,080 V zadnjih nekaj kvizov, oni ' moral uporabiti stvari, kot je ta. 1854 01:23:13,080 --> 01:23:15,230 Torej document.ready, tako poskrbite, da je vse 1855 01:23:15,230 --> 01:23:17,410 naložen, preden začnete delati stvari. 1856 01:23:17,410 --> 01:23:20,120 Izberite ID, ali izberite razred, bi bilo prav 1857 01:23:20,120 --> 01:23:24,020 biti quote dot nekaj razreda, konec ponudbo. 1858 01:23:24,020 --> 01:23:26,580 Predloži, tako da, če ste pošilja obrazec in klic 1859 01:23:26,580 --> 01:23:28,830 ta funkcija po obrazcu navaja. 1860 01:23:28,830 --> 01:23:34,210 Vrednost, tako da recimo, da sem imel obliko Predložitev, kot uporabniško ime, e-pošta, 1861 01:23:34,210 --> 01:23:34,950 karkoli. 1862 01:23:34,950 --> 01:23:36,010 Imel sem besedilno polje. 1863 01:23:36,010 --> 01:23:37,670 Tako da sem vnesete v polje tega besedila. 1864 01:23:37,670 --> 01:23:42,170 No, če želite, da se vrednost iz škatle tem besedilom, uporabite dot val. 1865 01:23:42,170 --> 01:23:44,050 In potem, tu spodaj, pika HTML je enaka 1866 01:23:44,050 --> 01:23:47,710 je kot dokument piko getElementByID dot innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Tako, da se dogaja, da se vrnete vi HTML iz tega ID. 1868 01:23:50,890 --> 01:23:55,080 Tukaj, ki ste jo pravkar uporabljate nekatere ID ali karkoli pika HTML. 1869 01:23:55,080 --> 01:23:56,930 Da boste dobili HTML iz tega elementa. 1870 01:23:56,930 --> 01:24:00,130 Če bi želeli, da spremenite, da HTML, jo lahko prenese nekaj. 1871 01:24:00,130 --> 01:24:05,600 Torej bi morali biti kot dot HTML, nato pa notranjosti, citati, nova HTML ali nekaj takega. 1872 01:24:05,600 --> 01:24:07,490 >> Gabe: OK, tako AJAX. 1873 01:24:07,490 --> 01:24:10,347 Res mi je všeč, da razumejo AJAX res dobro. 1874 01:24:10,347 --> 01:24:12,430 Torej, jaz vam želim fantje razumeti AJAX res dobro. 1875 01:24:12,430 --> 01:24:14,221 Ker če boste to storili, ste precej tekoč 1876 01:24:14,221 --> 01:24:16,810 razumeti vse, ima opraviti s HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript zaradi vsega prihaja skupaj v AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX ni jezik. 1879 01:24:25,130 --> 01:24:27,000 AJAX je tehnika. 1880 01:24:27,000 --> 01:24:31,690 In ga uporablja veliko različnih orodij. 1881 01:24:31,690 --> 01:24:35,090 AJAX stoji za asinhroni JavaScript XML. 1882 01:24:35,090 --> 01:24:36,730 Tako metoda, jezik, podatki. 1883 01:24:36,730 --> 01:24:40,610 >> Torej, glavni jezik, ki ga uporabljamo v AJAX sprožiti vse 1884 01:24:40,610 --> 01:24:42,830 in ročaj vse kasneje je JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Zato se nanaša zelo blizu JavaScript. 1886 01:24:45,160 --> 01:24:49,810 In potem je asinhrona ker ne bomo storili 1887 01:24:49,810 --> 01:24:51,980 vse naenkrat, ko smo nalaganju strani. 1888 01:24:51,980 --> 01:24:57,190 To je stvar, ki jo lahko stvari nekako vzporedno. 1889 01:24:57,190 --> 01:24:59,725 Glavna ideja AJAX je, da želite 1890 01:24:59,725 --> 01:25:02,170 to, da bi dobili nekaj konkretnih informacij. 1891 01:25:02,170 --> 01:25:06,450 Na primer, ko ste tipkanje novo uporabniško ime, ko se registrirate uporabniško ime, 1892 01:25:06,450 --> 01:25:08,520 moje uporabniško ime je abc123. 1893 01:25:08,520 --> 01:25:11,671 In potem, na koncu obrazec, boste morali klikniti Pošlji. 1894 01:25:11,671 --> 01:25:14,420 In je moral iti na strežnik, in nato preverite, če v podatkovni bazi, 1895 01:25:14,420 --> 01:25:15,594 abc123 je že tam. 1896 01:25:15,594 --> 01:25:18,510 In če je že tam, pa pravi, uporabniško ime je že v bazi podatkov. 1897 01:25:18,510 --> 01:25:21,010 In ti, moraš izpolniti iz celotnega obliki ponovno. 1898 01:25:21,010 --> 01:25:23,110 In je bilo res, res slabo. 1899 01:25:23,110 --> 01:25:25,440 >> In potem pravijo, OK, zakaj ne moremo preprosto 1900 01:25:25,440 --> 01:25:29,560 narediti zahtevek majhen HTTP samo preveriti da vidim, če je ta uporabnik v bazi 1901 01:25:29,560 --> 01:25:32,080 Pred moral uporabnik predloži celotno obliko? 1902 01:25:32,080 --> 01:25:36,350 Tako na primer, ko uporabnik konča tipkanje abc123, 1903 01:25:36,350 --> 01:25:39,660 kaj je samo iti na strežnik malo bit in samo dobil true ali false 1904 01:25:39,660 --> 01:25:43,080 iz strežnika videli, če da je veljavno uporabniško ime ali ne. 1905 01:25:43,080 --> 01:25:49,250 OK, tako da je eden izmed glavnih uporablja AJAX danes še vedno. 1906 01:25:49,250 --> 01:25:52,130 >> Davin: Torej, resnično hitro, v Ajax klic v jQuery, 1907 01:25:52,130 --> 01:25:54,770 bi lahko pomenilo, da vas želim, da bi bilo sinhrono. 1908 01:25:54,770 --> 01:25:56,330 Vam ne bi bilo treba to storiti. 1909 01:25:56,330 --> 01:25:57,640 Vendar pa lahko to storite. 1910 01:25:57,640 --> 01:25:59,277 In če si to storil, kaj bi se zgodilo? 1911 01:25:59,277 --> 01:26:01,610 No, na primer, ko ste dobili novico ali karkoli, 1912 01:26:01,610 --> 01:26:05,464 Vaš brskalnik je le, da bo treba čakati dokler da celotna klic končan 1913 01:26:05,464 --> 01:26:08,130 namesto najemnin vam drugi stvari prav, ko ga kliknete. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> Gabe: To ne gre več. 1916 01:26:17,115 --> 01:26:19,681 Oh moj bog. 1917 01:26:19,681 --> 01:26:20,180 Žal nam je! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Yup. 1920 01:26:23,601 --> 01:26:25,350 "V preteklosti, Stranka je potrebno, da zahtevo 1921 01:26:25,350 --> 01:26:26,840 Celotna vsebina spletne strani. " 1922 01:26:26,840 --> 01:26:28,210 To je tisto, kar sem rekel. 1923 01:26:28,210 --> 01:26:30,070 To nam omogoča, da pošljete Dodatna GET ali POST 1924 01:26:30,070 --> 01:26:32,140 zahteve, ne da da osvežite svoj brskalnik. 1925 01:26:32,140 --> 01:26:34,806 Zato ob koncu dneva, smo dejansko Making zahteve HTTP 1926 01:26:34,806 --> 01:26:35,740 Tukaj uporabo JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Ker preden smo uporabili le JavaScript spremeniti HTML, ki so že prišli. 1928 01:26:39,700 --> 01:26:43,110 In zdaj, ga lahko uporabite za vmesnik s spletnih strežnikov, kot tudi. 1929 01:26:43,110 --> 01:26:46,140 Tako se to zgodi je imamo stranko. 1930 01:26:46,140 --> 01:26:47,340 Davin je odjemalec. 1931 01:26:47,340 --> 01:26:50,797 In ima vso JavaScript prikazovati, ker HTML je neumna. 1932 01:26:50,797 --> 01:26:51,630 JavaScript je pametna. 1933 01:26:51,630 --> 01:26:54,690 Torej Davin Davin ima njegova pametna del in njegov neumen del. 1934 01:26:54,690 --> 01:26:57,590 On se dogaja, da uporablja svoj pametni del zdaj. 1935 01:26:57,590 --> 01:27:00,860 On se dogaja za uporabo JavaScript na zahtevo, na primer, 1936 01:27:00,860 --> 01:27:04,340 ali je abc123 v baze podatkov ali ne. 1937 01:27:04,340 --> 01:27:08,450 >> Torej Davin, prosim, samo mi pošljete zahtevo HTTP. 1938 01:27:08,450 --> 01:27:09,197 Hvala. 1939 01:27:09,197 --> 01:27:10,530 Torej je pravkar poslal zahtevo HTTP. 1940 01:27:10,530 --> 01:27:11,270 Vidiš, da je? 1941 01:27:11,270 --> 01:27:14,700 In to je samo na enak način da je vsaka zahteva HTTP pošlje. 1942 01:27:14,700 --> 01:27:16,830 Brskalnik Google Krom ali kaj podobnega, je 1943 01:27:16,830 --> 01:27:19,570 bomo videli, da je Davin poskuša poslati zahtevo HTTP, 1944 01:27:19,570 --> 01:27:20,930 bo pomagalo hm malo. 1945 01:27:20,930 --> 01:27:23,950 In to se dogaja, da gredo vse do strežnika. 1946 01:27:23,950 --> 01:27:27,370 Sedaj strežnik se dogaja, da imajo PHP tukaj, ali kateri koli drug jezik. 1947 01:27:27,370 --> 01:27:29,990 Tako kot v normalnem zahtevo HTTP. 1948 01:27:29,990 --> 01:27:31,950 To je precej normalno Zahteva HTTP. 1949 01:27:31,950 --> 01:27:33,658 >> In potem, strežnik je reči, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin me želi preveriti, ali To abc123 je v bazi podatkov. 1951 01:27:37,270 --> 01:27:38,310 Pogovorit z modelom. 1952 01:27:38,310 --> 01:27:41,310 Model pravi, da je ni. abc123 je dobro uporabniško ime. 1953 01:27:41,310 --> 01:27:47,940 In potem, je spletni strežnik bo uporabljati PHP, da postane neke vrste datoteke. 1954 01:27:47,940 --> 01:27:52,280 To bi lahko dobesedno samo datoteko ki vsebuje "da" v njej, ali "ne, 1955 01:27:52,280 --> 01:27:53,315 ali nekaj takega. 1956 01:27:53,315 --> 01:27:54,190 To bi bilo vse datoteke. 1957 01:27:54,190 --> 01:27:57,080 >> To bi bilo, kot da bom pošljite Davin sliko raca 1958 01:27:57,080 --> 01:28:01,200 če je v bazi podatkov in pošljete sliko hrčka 1959 01:28:01,200 --> 01:28:02,420 če to ni v bazi. 1960 01:28:02,420 --> 01:28:04,294 To bi bilo nekako neumno, ampak to bo delovalo. 1961 01:28:04,294 --> 01:28:07,030 OK, tako da bom poslal raco do Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin dobil raco. 1963 01:28:08,150 --> 01:28:13,330 In zdaj, kdo bo za ravnanje z raco? 1964 01:28:13,330 --> 01:28:16,390 Davin je pametno del spet, tako JavaScript, kajne? 1965 01:28:16,390 --> 01:28:18,620 JavaScript poslano Zahteva in JavaScript 1966 01:28:18,620 --> 01:28:22,300 se dogaja, da prejmejo zahtevek in ga razlagajo v neki obliki. 1967 01:28:22,300 --> 01:28:26,630 >> In v tem smislu gre za reči, OK, če raco potem sem dober. 1968 01:28:26,630 --> 01:28:30,770 Če hrčka, potem jaz grem reči ne, uporabniško ime je že 1969 01:28:30,770 --> 01:28:31,970 obstaja v zbirki podatkov. 1970 01:28:31,970 --> 01:28:33,845 Ampak ponavadi, niste bomo poslali raco. 1971 01:28:33,845 --> 01:28:36,740 Boste poslali nekaj, kar je nekoliko pametnejši. 1972 01:28:36,740 --> 01:28:40,320 In kaj bomo uporabili, je XML. 1973 01:28:40,320 --> 01:28:42,690 In v zadnjem času, ki jih uporabljamo JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON je le JavaScript Object Notation, ki 1975 01:28:45,629 --> 01:28:47,670 je v bistvu dobiš Celoten objekt JavaScript. 1976 01:28:47,670 --> 01:28:50,820 In ga dal v datoteko, tako kot da CS50 predmet, vidva videla. 1977 01:28:50,820 --> 01:28:53,090 Ste jo dali v datoteki, in ga pošljete preko Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Torej, v tem primeru bi jaz narediti predmet JavaScript 1979 01:28:55,850 --> 01:28:59,570 in samo reči, uporabnik obstaja, ja. 1980 01:28:59,570 --> 01:29:01,630 Ali uporabnik obstaja, ni. 1981 01:29:01,630 --> 01:29:02,810 In ga pošlje nazaj k njemu. 1982 01:29:02,810 --> 01:29:03,830 In zakaj JSON? 1983 01:29:03,830 --> 01:29:07,330 Ker oseba kdo prejme to je 1984 01:29:07,330 --> 01:29:10,030 gre za uporabo JavaScript ravnati odgovor. 1985 01:29:10,030 --> 01:29:14,970 In JavaScript deluje tako dobro, ker to se imenuje JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Kajne? 1987 01:29:15,470 --> 01:29:19,660 Tako da lahko preprosto pokličete funkcijo in dobili ta lep objekt iz odziva. 1988 01:29:19,660 --> 01:29:22,890 In potem se dogaja, da vemo, ali da uporabnik v bazi podatkov ali ne. 1989 01:29:22,890 --> 01:29:25,230 >> Torej vidite, vse to prihaja skupaj v spletni strežnik, 1990 01:29:25,230 --> 01:29:28,450 in potem je tukaj še ena HTTP na zahtevo in en odgovor in vse HTTP. 1991 01:29:28,450 --> 01:29:30,600 Zato poskrbite, da fantje razumeti to AJAX klic 1992 01:29:30,600 --> 01:29:37,260 saj vam pomaga razumeti vse konceptov smo govoriš. 1993 01:29:37,260 --> 01:29:40,260 >> Torej, tukaj je primer AJAX s jQuery. 1994 01:29:40,260 --> 01:29:42,130 In tukaj imamo opraviti s get JSON. 1995 01:29:42,130 --> 01:29:45,660 Torej mi ne poskuša priti Podoba mačka tukaj, ali raca. 1996 01:29:45,660 --> 01:29:48,110 Poskušamo dobiti JSON datoteke. 1997 01:29:48,110 --> 01:29:51,184 In potem počakajte to je storil, dot storiti. 1998 01:29:51,184 --> 01:29:52,850 To pomeni, da sem čakal na odgovor. 1999 01:29:52,850 --> 01:29:54,180 To lahko traja nekaj časa. 2000 01:29:54,180 --> 01:29:56,360 Nato boste videli malo nakladanje. 2001 01:29:56,360 --> 01:29:59,340 Če želite, da to, da v vašo spletno stran. 2002 01:29:59,340 --> 01:30:01,440 Torej dot storiti, in kaj potem se zgodi, ko je to storil? 2003 01:30:01,440 --> 01:30:04,040 Podaš v anonimni funkcija, tako kot smo videli prej. 2004 01:30:04,040 --> 01:30:07,800 Ker je naredil, je dogodek, samo kot klikom miške ali karkoli, 2005 01:30:07,800 --> 01:30:08,710 za jQuery. 2006 01:30:08,710 --> 01:30:13,710 Tako se boste peljali v tej funkciji z podatkov, besedila, status, in jqXHR. 2007 01:30:13,710 --> 01:30:15,790 In v bistvu, da je le nekaj spremenljivk 2008 01:30:15,790 --> 01:30:22,160 ki jih lahko uporabite kasneje, da imajo status zahtevo HTTP, 2009 01:30:22,160 --> 01:30:24,470 Podatki, ki se dogaja poslati nazaj. 2010 01:30:24,470 --> 01:30:28,740 Tako da potem lahko kasneje razlagati in narediti nekaj smiselnega z njim. 2011 01:30:28,740 --> 01:30:30,240 In če to ne uspe, če bi propadel? 2012 01:30:30,240 --> 01:30:33,780 No, ko se zahteva HTTP daje si 500 ali nekaj takega. 2013 01:30:33,780 --> 01:30:37,420 Potem pa se dogaja, da vam povem, stanje, kakšne okvare, ki je bil, 2014 01:30:37,420 --> 01:30:38,420 in vse mogoče stvari. 2015 01:30:38,420 --> 01:30:40,630 Moraš se prepričajte, ravnati tako primere, 2016 01:30:40,630 --> 01:30:42,770 sicer se program ponori. 2017 01:30:42,770 --> 01:30:45,820 >> Davin: Torej, ja, to je točno kaj ste videli na zadnjem p-set. 2018 01:30:45,820 --> 01:30:49,720 Dejanska AJAX klic v get JSON. 2019 01:30:49,720 --> 01:30:50,587 To je klic. 2020 01:30:50,587 --> 01:30:52,920 In potem, dot storiti je všeč preveri, če je uspešen. 2021 01:30:52,920 --> 01:30:55,620 Če je uspešen, ki jih želite nekaj narediti s podatki. 2022 01:30:55,620 --> 01:30:59,290 Dobiš nazaj od Podatki Povpraševanje JSON. 2023 01:30:59,290 --> 01:31:00,600 To je tisto, kar boste dobili nazaj. 2024 01:31:00,600 --> 01:31:04,470 Torej, če se spomnite iz vašega p-set, Veliko vas je bilo všeč podatkovnega nosilca i 2025 01:31:04,470 --> 01:31:06,302 ali karkoli, pika povezavo ali naslov. 2026 01:31:06,302 --> 01:31:08,260 Karkoli se vrača od tega JSON, ne glede na 2027 01:31:08,260 --> 01:31:11,020 polja, so v tej JSON objekt, da je tisto, kar ste dobili nazaj. 2028 01:31:11,020 --> 01:31:12,394 Data je tisto, kar ste dobili nazaj. 2029 01:31:12,394 --> 01:31:15,510 Stanje besedila, nekaj, vam omogoča, da vedo, kaj se je zgodilo. 2030 01:31:15,510 --> 01:31:20,570 In potem, jqXHR, da je samo Zahteva XML HTTP jQuery. 2031 01:31:20,570 --> 01:31:21,990 To je tako kot objekt. 2032 01:31:21,990 --> 01:31:23,932 In potem ne, tako kot je povedal Gabe. 2033 01:31:23,932 --> 01:31:27,140 Gabe: V naši mali primer abc123 Samo za preverjanje, če je to v bazi 2034 01:31:27,140 --> 01:31:32,260 ali ne, bi bili podatki, nekaj, kar bi naredil, če podatki dot uporabniško ime ne obstaja, 2035 01:31:32,260 --> 01:31:37,720 ki je, kaj vaš PHP ustvarila za vam, če uporabnik podatki dot ime obstaja, potem 2036 01:31:37,720 --> 01:31:40,880 Jaz grem za opozarjanje, uporabnik ime že obstaja. 2037 01:31:40,880 --> 01:31:44,300 Drugega, sem le, da bo pustil uporabnik nadaljuje, da izpolnite obrazec. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, varnost, cool. 2040 01:31:50,820 --> 01:31:52,060 >> Davin: Želiš, da? 2041 01:31:52,060 --> 01:31:54,500 >> Gabe: Všeč mi je tale. 2042 01:31:54,500 --> 01:31:57,680 Torej nekaj, kar izgleda znano. 2043 01:31:57,680 --> 01:31:59,750 Smo že skoraj pri koncu. 2044 01:31:59,750 --> 01:32:02,670 Torej je to samo primer fantje videli v razredu. 2045 01:32:02,670 --> 01:32:04,860 Ste uporabljali argv1 tukaj. 2046 01:32:04,860 --> 01:32:06,460 To je kot argument ukazne vrstice. 2047 01:32:06,460 --> 01:32:09,270 In smo mem kopiranje da v pufru velikosti 12. 2048 01:32:09,270 --> 01:32:12,560 Kaj je tu problem? 2049 01:32:12,560 --> 01:32:13,660 Buffer overflow! 2050 01:32:13,660 --> 01:32:15,400 Ker imamo pufer velikosti 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 morda velikost dve milijardi. 2052 01:32:18,400 --> 01:32:19,960 Ne delamo nobene mejno kontrolo. 2053 01:32:19,960 --> 01:32:24,970 Tako bomo morda kopirati veliko pomnilnika. 2054 01:32:24,970 --> 01:32:28,630 In bomo še posebej slabega o tem. 2055 01:32:28,630 --> 01:32:32,600 Kaj lahko storimo, da je Zelo, zelo pomeni v tem primeru? 2056 01:32:32,600 --> 01:32:33,278 Ja? 2057 01:32:33,278 --> 01:32:36,528 OBČINSTVO: Del dve milijardi stvari vsebuje izvedljivo kodo, ki vrne 2058 01:32:36,528 --> 01:32:38,127 [Neslišno]. 2059 01:32:38,127 --> 01:32:38,710 Gabe: Točno tako. 2060 01:32:38,710 --> 01:32:41,110 Tako, da je vrsta stvar, ki jo ljudje uporabljajo 2061 01:32:41,110 --> 01:32:43,344 Bjekstvo iz zapora iPhone, na primer. 2062 01:32:43,344 --> 01:32:44,260 Tako da take stvari. 2063 01:32:44,260 --> 01:32:48,610 Saj lahko le, da napravo izvršiti nobenega kodeksa, ki ti je všeč. 2064 01:32:48,610 --> 01:32:50,247 Popraviti, tako da je popravek preprost. 2065 01:32:50,247 --> 01:32:51,330 Samo poglejte za meje. 2066 01:32:51,330 --> 01:32:53,455 Vi preverite null zato, ker smo vedno preverite null 2067 01:32:53,455 --> 01:32:54,940 ko imamo opravka s strunami. 2068 01:32:54,940 --> 01:32:57,840 In potem vzameš Dolžina niz prej. 2069 01:32:57,840 --> 01:33:00,150 In če niz dolžina je veljaven niz 2070 01:33:00,150 --> 01:33:03,700 dolžina, ki je v 0 in 12, potem smo dobri. 2071 01:33:03,700 --> 01:33:07,144 >> Davin: Če ne preveri null, resnično hitro, kaj se bo zgodilo? 2072 01:33:07,144 --> 01:33:07,810 To bo SEG napako. 2073 01:33:07,810 --> 01:33:10,850 Zato bo SEG je kriv? 2074 01:33:10,850 --> 01:33:12,510 Ker kličeš strlen na null. 2075 01:33:12,510 --> 01:33:13,010 Gabe: Ja. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Drži ali ne drži, z uporabo enega Geslo je dobra ideja. 2078 01:33:19,630 --> 01:33:20,430 >> OBČINSTVO: False. 2079 01:33:20,430 --> 01:33:21,150 >> Gabe: False. 2080 01:33:21,150 --> 01:33:23,870 Uporabite veliko gesel, in velik, dolg podjetja. 2081 01:33:23,870 --> 01:33:26,050 Ključavnico ikone zagotavljanje varnosti. 2082 01:33:26,050 --> 01:33:27,080 >> OBČINSTVO: False. 2083 01:33:27,080 --> 01:33:27,749 >> Gabe: False. 2084 01:33:27,749 --> 01:33:28,790 To ne pomeni ničesar. 2085 01:33:28,790 --> 01:33:30,480 To je samo ikona. 2086 01:33:30,480 --> 01:33:32,824 SSL varuje pred Človek v sredini napadu. 2087 01:33:32,824 --> 01:33:33,490 OBČINSTVO: False. 2088 01:33:33,490 --> 01:33:34,110 Gabe: False. 2089 01:33:34,110 --> 01:33:35,355 OK, torej vsi tisti, so napačne. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Lepo. 2092 01:33:39,490 --> 01:33:40,220 [Neslišno] 2093 01:33:40,220 --> 01:33:42,500 Želim govoriti o tem? 2094 01:33:42,500 --> 01:33:43,259 Ti si na vrsti. 2095 01:33:43,259 --> 01:33:45,050 Davin: Vrste napadov, Človek v sredini. 2096 01:33:45,050 --> 01:33:47,134 Kaj je človek v srednjem napadu? 2097 01:33:47,134 --> 01:33:48,050 OBČINSTVO: [neslišno]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 Davin: Če pošljete HTTP Zahteva, da bi to naredil, kajne? 2100 01:33:54,020 --> 01:33:57,890 Ampak, če ste pošiljanje HTTPS, ki jih verjetno ne bo mogel to storiti. 2101 01:33:57,890 --> 01:33:59,952 Obstaja veliko točk vzdolž vaše povezave. 2102 01:33:59,952 --> 01:34:00,660 Imate usmerjevalniki. 2103 01:34:00,660 --> 01:34:01,746 Imate DNS strežnikov. 2104 01:34:01,746 --> 01:34:04,120 Če je nekdo sposoben fizično videli, kaj ste poslali, 2105 01:34:04,120 --> 01:34:06,140 da je nekdo sposoben dejansko dobili med vami, 2106 01:34:06,140 --> 01:34:08,840 odjemalec in strežnik, in je lahko videli, kaj ste poslali, 2107 01:34:08,840 --> 01:34:10,298 To je človek v srednjem napadu. 2108 01:34:10,298 --> 01:34:14,287 Torej, da bi videli, kaj ste poskušali dobiti od strežnik, ali je sposoben see-- slabše, 2109 01:34:14,287 --> 01:34:16,620 boste morda lahko videli, piškote ali nekaj takega. 2110 01:34:16,620 --> 01:34:19,290 >> Tako na primer, če ne uporabljate SSL, je 2111 01:34:19,290 --> 01:34:21,900 Morda bi lahko videli Vaša seja ID piškotke. 2112 01:34:21,900 --> 01:34:25,460 In to se imenuje seja ugrabitve ker vidi svoje piškotke, 2113 01:34:25,460 --> 01:34:28,317 in potem je on sposoben iti, da Spletna stran in se pretvarjamo, da vas bo. 2114 01:34:28,317 --> 01:34:31,150 Ker tako kot v PHP, ne pozabite, ko smo prijavljeni, kaj naj naredimo? 2115 01:34:31,150 --> 01:34:33,340 Postavili smo Session ID, ki je enak ID. 2116 01:34:33,340 --> 01:34:34,810 Tako, da vas identificira. 2117 01:34:34,810 --> 01:34:38,300 Zato si lahko ogledate vaš portfelj in ne vsakdo drug portfelj. 2118 01:34:38,300 --> 01:34:42,320 >> No, če sem lahko dobil ta piškotek, Nato sem se lahko prijavite na tej strani. 2119 01:34:42,320 --> 01:34:45,380 In potem sem lahko samo videti svoje stvari in začeti nakup in prodajo stvari. 2120 01:34:45,380 --> 01:34:46,800 Tako da je seja ugrabitve. 2121 01:34:46,800 --> 01:34:50,810 Vendar si ne bi mogli to-- tako vas Uporabite lahko človek v srednji napad 2122 01:34:50,810 --> 01:34:52,290 tudi če ste z uporabo SSL. 2123 01:34:52,290 --> 01:34:53,520 Ampak vi ne bi mogli. 2124 01:34:53,520 --> 01:34:56,580 Če uporabljate SSL, ne moreš seja ugrabitvijo. 2125 01:34:56,580 --> 01:34:58,927 Zakaj? 2126 01:34:58,927 --> 01:35:01,135 Saj je vse šifrirane, kajne? če je to šifrirano, 2127 01:35:01,135 --> 01:35:03,509 in še vedno sem človek srednji, jaz še vedno dobite podatke. 2128 01:35:03,509 --> 01:35:04,279 To je v redu. 2129 01:35:04,279 --> 01:35:05,070 Ampak to je šifriran. 2130 01:35:05,070 --> 01:35:07,750 Torej ne morem uporabiti. 2131 01:35:07,750 --> 01:35:09,840 Tako da je dva. 2132 01:35:09,840 --> 01:35:11,544 >> Real hitro, cross site zahteva ponarejanje. 2133 01:35:11,544 --> 01:35:13,960 To je samo, če obstaja povezava in da je povezava naredi nekaj 2134 01:35:13,960 --> 01:35:14,890 da ne misliš, da bi morali storiti. 2135 01:35:14,890 --> 01:35:18,150 Tako na primer, če je povezava gre za nakup zalog ali prodati zaloge, 2136 01:35:18,150 --> 01:35:19,360 pa niste vedeli, da. 2137 01:35:19,360 --> 01:35:22,040 Ste kliknili na povezavo, poslal zahtevo, kupili 2138 01:35:22,040 --> 01:35:24,240 ali prodajajo nekaj, si ni mislil narediti. 2139 01:35:24,240 --> 01:35:25,120 To je to. 2140 01:35:25,120 --> 01:35:30,720 >> Cross site skriptno, zato je tu, ste, ki poteka v preko spremenljive q, 2141 01:35:30,720 --> 01:35:33,510 namesto da poteka v nekakšnem vrednosti, morda q je kot ime. 2142 01:35:33,510 --> 01:35:36,560 Torej, namesto da gre Q je enak Davin ali nekaj takega, 2143 01:35:36,560 --> 01:35:38,740 Če ne uporabljate HTML posebnih znakov, če vas 2144 01:35:38,740 --> 01:35:43,100 ne pobegniti to, da se prepričajte, da je OK, potem sem lahko potujejo v namesto, 2145 01:35:43,100 --> 01:35:46,910 recimo, da tukaj govorim tiskanja ali nekaj takega, 2146 01:35:46,910 --> 01:35:51,070 Nato sem mogel prenesti tukaj skript klic. 2147 01:35:51,070 --> 01:35:53,140 >> Torej, namesto ravno spremenljivko, 2148 01:35:53,140 --> 01:35:54,960 Jaz bi potem poženite ta skript klic. 2149 01:35:54,960 --> 01:35:57,065 Tako znotraj te skripte poklicati, kaj počne? 2150 01:35:57,065 --> 01:36:00,190 Dokument dot lokacija, da se dogaja, da spremeniti lokacijo dokumenta. 2151 01:36:00,190 --> 01:36:02,290 Tako da bom za preusmeritev nekje drugje. 2152 01:36:02,290 --> 01:36:08,170 Imenuje slab fant v ta primer, zelo dobro. 2153 01:36:08,170 --> 01:36:10,536 Ni mogel misliti besede. 2154 01:36:10,536 --> 01:36:12,410 In potem, kaj je še huje je, da grem 2155 01:36:12,410 --> 01:36:16,832 bi nato določil piškotek, ki je nekaj spremenljivka imam na tej spletni strani. 2156 01:36:16,832 --> 01:36:19,040 Grem, da določi, da je enaka na dokument dot piškotek. 2157 01:36:19,040 --> 01:36:20,660 Zato grem ukrasti piškotek. 2158 01:36:20,660 --> 01:36:22,951 In grem preusmeriti nekatere informacije na spletni strani 2159 01:36:22,951 --> 01:36:25,120 da ne bi smeli biti dostop do njih. 2160 01:36:25,120 --> 01:36:29,250 In vse to se zgodi zato, ker ste ne uhaja, kar ste videli. 2161 01:36:29,250 --> 01:36:29,910 Ja? 2162 01:36:29,910 --> 01:36:32,160 >> OBČINSTVO: Torej, samo da bi da to jasno, da je 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com da je občutljiva na to. 2164 01:36:37,550 --> 01:36:39,300 Tako da se lahko zdi, da povezava na nobeni strani. 2165 01:36:39,300 --> 01:36:42,200 Nekdo klikne na njo, gre za vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Imate piškotek vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Recimo, da je Facebook ranljivi, zato facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Imate Facebook piškotek. 2169 01:36:48,310 --> 01:36:50,925 Kaj počne to, da ste bo facebook.com, 2170 01:36:50,925 --> 01:36:53,990 to je takoj preusmeriti da badguy.com, 2171 01:36:53,990 --> 01:36:57,182 vendar vključno z vaše podatke piškotkov. 2172 01:36:57,182 --> 01:36:59,310 Torej, to je hitro preusmeritev, vendar vaš Facebook piškotek 2173 01:36:59,310 --> 01:37:02,572 je vključen v to preusmeritev, in to je, kako so [neslišno]. 2174 01:37:02,572 --> 01:37:04,280 Gabe: Ja, tam je nekaj zelo povprečne stvari 2175 01:37:04,280 --> 01:37:06,070 da lahko ljudje, če je to. 2176 01:37:06,070 --> 01:37:09,190 Na primer, če Facebook dovoljeno vsi, da spremenite svoje uporabniško ime 2177 01:37:09,190 --> 01:37:11,680 in niso storite Pregledi sanity, zato vas 2178 01:37:11,680 --> 01:37:16,810 lahko vstavite JavaScript stvar, ki spreminja svojo podobo na hrčka. 2179 01:37:16,810 --> 01:37:22,590 In da se vstavi enako JavaScript v vsem, ki vidi svojo stran. 2180 01:37:22,590 --> 01:37:26,400 Torej vsi, ki vidi svojo stran ima isto stvar v uporabniškim imenom. 2181 01:37:26,400 --> 01:37:30,104 In zato, ker je virus, se širi eksponentno. 2182 01:37:30,104 --> 01:37:32,270 Davin: Bomo preskočili zadnje ena, nato pa smo končali. 2183 01:37:32,270 --> 01:37:34,120 Torej je to samo en primer. 2184 01:37:34,120 --> 01:37:36,120 Torej, to je, oni ne pobeg svoj SQL tabelo. 2185 01:37:36,120 --> 01:37:37,090 Tako da lahko spusti. 2186 01:37:37,090 --> 01:37:38,805 Torej hočeš pobegniti stvari. 2187 01:37:38,805 --> 01:37:44,010 Da je bil prejšnji primer z navzkrižnim site skriptno. 2188 01:37:44,010 --> 01:37:45,430 Žal smo tekel malo pozno. 2189 01:37:45,430 --> 01:37:46,870 Jutri, žal! 2190 01:37:46,870 --> 01:37:48,560 Jutri bomo imeli uradnih ur. 2191 01:37:48,560 --> 01:37:50,870 Torej uradnih ur v Cabbot 8:00-11:00. 2192 01:37:50,870 --> 01:37:55,240 Pisarniške ure so strogo za kviz vprašanja. 2193 01:37:55,240 --> 01:37:56,587