1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [Muziciranja] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 Hannah: Bok, svima. 5 00:00:12,700 --> 00:00:15,866 Hvala vam dečki toliko za izlazak u odvratnom vremenu za kviz jedan 6 00:00:15,866 --> 00:00:16,910 pregled sjednicu. 7 00:00:16,910 --> 00:00:20,020 Kao što znate, dečki kviz on je u srijedu. 8 00:00:20,020 --> 00:00:22,209 Tako ćemo ići kroz hrpa tema. 9 00:00:22,209 --> 00:00:24,000 DAVIN: Hej, mogu reći nešto jako brzo? 10 00:00:24,000 --> 00:00:25,215 Hannah: Da, Davin događa reći nešto vrlo brzo. 11 00:00:25,215 --> 00:00:25,780 DAVIN: Žao mi je. 12 00:00:25,780 --> 00:00:29,490 Samo jako brzo, ako imate pitanja o kvizu, možete otići online. 13 00:00:29,490 --> 00:00:32,420 Idi na 2014. kviz jedan, o kvizu. 14 00:00:32,420 --> 00:00:34,680 To je dobio logistiku o gdje ići, kad se ide. 15 00:00:34,680 --> 00:00:38,100 Ako istovremeno ste upisani, da smo će imati šminka kviz u 5:30. 16 00:00:38,100 --> 00:00:40,350 Ili ako mi je poslao pitanje, imate neki drugi problem. 17 00:00:40,350 --> 00:00:42,640 No, 05:30 je make-up Vrijeme u srijedu. 18 00:00:42,640 --> 00:00:44,540 Ali, ako imate pitanja, opća pitanja, 19 00:00:44,540 --> 00:00:45,748 online ima sve logistiku. 20 00:00:45,748 --> 00:00:47,690 Dakle, provjerite postoji prvi put. 21 00:00:47,690 --> 00:00:49,070 >> Hannah: Awesome. 22 00:00:49,070 --> 00:00:53,030 Dakle, ovdje je veliki popis tema da ćemo proći danas. 23 00:00:53,030 --> 00:00:57,390 Ja ću pokriti sve C stvari, a to je da prvi stupac. 24 00:00:57,390 --> 00:01:00,710 Dakle C stvari koje smo pokrivena nakon kviza nula. 25 00:01:00,710 --> 00:01:05,459 Počevši s popisa povezane, koji uključuje pokazivače. 26 00:01:05,459 --> 00:01:07,668 >> U redu, tako da smo to vidjeli U posljednjem pregled sjednici, 27 00:01:07,668 --> 00:01:10,000 pa ću proći to je malo brže. 28 00:01:10,000 --> 00:01:13,500 Samo podići ruku ako me želite usporiti ili rješavanje nešto dalje. 29 00:01:13,500 --> 00:01:17,150 No, mi koristimo povezane liste, jer smo započeli u C s polja. 30 00:01:17,150 --> 00:01:20,920 A polja su super, ali Problem je u tome što ima fiksnu veličinu. 31 00:01:20,920 --> 00:01:24,925 Povezani popisi omogućuju nam stvaranje dinamički veličine strukture podataka. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> I mi imamo svoje osnovne funkcije, umetanje, brisanje i pretraživanje. 34 00:01:32,320 --> 00:01:36,780 I što možemo učiniti umetak u najgori slučaj konstanta vrijeme 35 00:01:36,780 --> 00:01:39,140 Ako smo samo ga stavite na samom početku. 36 00:01:39,140 --> 00:01:45,220 Brisanje i traži, najgore Slučaj veliki oh n vremena. 37 00:01:45,220 --> 00:01:47,140 Pa opet, samo za okretanje kroz ove slike, 38 00:01:47,140 --> 00:01:50,860 Znam da smo vidjeli ove posljednje vrijeme, ali smo želite pratiti naše liste povezan 39 00:01:50,860 --> 00:01:53,440 Do praćenje voditelj naše liste povezane. 40 00:01:53,440 --> 00:01:55,580 Jer znamo da je svaki od naših čvorova 41 00:01:55,580 --> 00:01:58,610 je samo ide da se ukazati na Sljedeći čvor u našem popisu povezane. 42 00:01:58,610 --> 00:02:00,460 >> Dakle, to je kako smo pratiti. 43 00:02:00,460 --> 00:02:02,910 Iako to nisu kontinuirano komada memorije, 44 00:02:02,910 --> 00:02:07,410 možemo ih naći po samo Sljedeći različite strelice. 45 00:02:07,410 --> 00:02:09,800 Ovdje je naša struktura za povezane popis čvora. 46 00:02:09,800 --> 00:02:11,440 Vidjeli smo to zadnji put. 47 00:02:11,440 --> 00:02:13,080 Mi imamo struct čvor. 48 00:02:13,080 --> 00:02:14,340 A ima dva svojstva. 49 00:02:14,340 --> 00:02:17,020 Broj jedan, stvarna Vrijednost želimo pohraniti. 50 00:02:17,020 --> 00:02:18,290 U ovom slučaju, to je cijeli broj. 51 00:02:18,290 --> 00:02:21,100 To bi moglo biti niz, što bi biti char, što god želite. 52 00:02:21,100 --> 00:02:24,710 A onda, moramo pratiti Sljedeći čvor u našem popisu povezane. 53 00:02:24,710 --> 00:02:29,797 Tako da će biti pokazivač na sljedeći čvor. 54 00:02:29,797 --> 00:02:31,880 Ako ste bili samo radi pretraživanje, kao što sam rekao prije, 55 00:02:31,880 --> 00:02:34,900 ne bi se slijediti svoje strelice prema dolje. 56 00:02:34,900 --> 00:02:40,720 Ubacivanje, što će pratiti gdje ostatak svog popisa je. 57 00:02:40,720 --> 00:02:44,150 A želite preusmjeriti glavu ukazati na našoj novi element koji 58 00:02:44,150 --> 00:02:46,640 U tom slučaju je jedan, a onda će se ukazati 59 00:02:46,640 --> 00:02:49,480 na ostatak popisa povezane. 60 00:02:49,480 --> 00:02:52,996 Pa opet, znam da je ovo malo malo ponavljanja iz kviza nula. 61 00:02:52,996 --> 00:02:55,370 Dakle, moramo biti vrlo oprezni O redoslijedu u kojem smo 62 00:02:55,370 --> 00:03:00,390 to ti pointings pa mi ne Zaboravite na stražnjoj strani popisa. 63 00:03:00,390 --> 00:03:04,122 OK, bilo kakva pitanja s Samo pojedinačno povezane liste? 64 00:03:04,122 --> 00:03:06,060 Strašan, OK, super. 65 00:03:06,060 --> 00:03:09,410 >> Pa sad, idemo ići na nešto Samo malo više komplicirano, 66 00:03:09,410 --> 00:03:10,920 dvostruko povezane liste. 67 00:03:10,920 --> 00:03:13,680 Dakle, uz zadržavanje Staza u sljedećem čvoru, 68 00:03:13,680 --> 00:03:16,220 želimo pratiti prethodnog čvora. 69 00:03:16,220 --> 00:03:19,580 I to nam omogućuje da, ako smo u nekom trenutku u našem popisu povezani, 70 00:03:19,580 --> 00:03:23,110 Ne samo da ide naprijed, ali Također ponoviti unatrag. 71 00:03:23,110 --> 00:03:25,220 Jer kao što smo vidjeli u Popis pojedinačno povezani, 72 00:03:25,220 --> 00:03:27,980 Ako smo bili u nekom čvoru, a odjednom, odlučili smo, 73 00:03:27,980 --> 00:03:30,160 Zapravo, želim ići čvor neposredno prije mene, 74 00:03:30,160 --> 00:03:32,034 ne bi se ići sve put natrag u glavu 75 00:03:32,034 --> 00:03:35,710 i ponoviti kroz sve ste pronašli čvor ste bili u potrazi za. 76 00:03:35,710 --> 00:03:37,680 >> Dakle, to čini stvari malo lakše jer smo 77 00:03:37,680 --> 00:03:39,670 pokušava ponoviti kroz naše liste povezane. 78 00:03:39,670 --> 00:03:47,870 No, to zahtijeva od nas da pratimo jedan više pokazivač, pa još jedan čvor zvijezda. 79 00:03:47,870 --> 00:03:50,830 U redu, tako da ovdje dolazi zabavan dio. 80 00:03:50,830 --> 00:03:55,600 Idemo u praksi provedbe ukloniti za dvostruko povezane liste. 81 00:03:55,600 --> 00:03:58,660 Dakle, to je nešto što je potpuno fer igra za kviz. 82 00:03:58,660 --> 00:04:00,750 Ona se pojavila na prošlim kvizova. 83 00:04:00,750 --> 00:04:04,220 Dakle, definitivno se pripremiti da kod malo u C 84 00:04:04,220 --> 00:04:07,900 Ne zaboravite da uz sve to zabavno PHP i JavaScript, 85 00:04:07,900 --> 00:04:10,560 još uvijek imati na umu učiniti C. Dakle podsjete na to 86 00:04:10,560 --> 00:04:12,146 Ako ste osjećaj zapušten. 87 00:04:12,146 --> 00:04:14,580 >> U redu, da vidimo možemo li to učiniti. 88 00:04:14,580 --> 00:04:16,312 OK, super. 89 00:04:16,312 --> 00:04:18,600 Tako ćemo pokušati urediti pravo na ovamo, 90 00:04:18,600 --> 00:04:20,707 i nadamo se da ide prema planu. 91 00:04:20,707 --> 00:04:23,915 U redu, ne bilo tko želi da mi daju prijedlog kako bih trebao početi? 92 00:04:23,915 --> 00:04:27,030 Samo pretpostavka sam odluka je da sam već 93 00:04:27,030 --> 00:04:30,180 su struktura definirana, on je pokazao da se na posljednjoj stranici, 94 00:04:30,180 --> 00:04:31,420 Na posljednjem slajdu. 95 00:04:31,420 --> 00:04:39,250 I ja sam pohranu glave moj povezan Popis u nekom pokazivač zove popis. 96 00:04:39,250 --> 00:04:42,190 Da li netko želi da se ja počeo? 97 00:04:42,190 --> 00:04:45,410 >> PUBLIKA: Može li stvoriti novi čvor nazvati po popisu? 98 00:04:45,410 --> 00:04:46,410 >> Hannah: Awesome, tako ćemo stvoriti 99 00:04:46,410 --> 00:04:47,951 Novi čvor puzati kroz popis. 100 00:04:47,951 --> 00:04:48,570 Volim to. 101 00:04:48,570 --> 00:04:50,799 Samo ću ga nazvati pointer, ako je to u redu. 102 00:04:50,799 --> 00:04:52,340 A gdje bi to izvorno početi? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> PUBLIKA: Vjerojatno na voditelj popisa. 105 00:04:59,840 --> 00:05:00,590 Hannah: Lijepa. 106 00:05:00,590 --> 00:05:03,670 Želimo početi na glavi, koji je I rekao je će biti pohranjen u popisu. 107 00:05:03,670 --> 00:05:04,170 Awesome. 108 00:05:04,170 --> 00:05:05,220 Do sada, tako dobro. 109 00:05:05,220 --> 00:05:08,260 A sada, naš je cilj ponoviti kroz popis 110 00:05:08,260 --> 00:05:12,870 dok ne nađemo čvor s vrijednost n koju želite izbrisati. 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> Dakle, sada je dio u kojem želimo ponoviti kroz. 113 00:05:15,910 --> 00:05:19,488 Može li itko sugeriraju način da se ponoviti kroz? 114 00:05:19,488 --> 00:05:20,979 >> PUBLIKA: petlje. 115 00:05:20,979 --> 00:05:21,840 >> Hannah: loop. 116 00:05:21,840 --> 00:05:22,620 Ja ga volim. 117 00:05:22,620 --> 00:05:25,550 Naime, možemo pokušati while petlja. 118 00:05:25,550 --> 00:05:30,919 OK, a mi znamo da smo postigli kraj našeg popisa, kada ono? 119 00:05:30,919 --> 00:05:32,210 PUBLIKA: Ako se kazaljka je null. 120 00:05:32,210 --> 00:05:33,418 Hannah: Ako se kazaljka je null. 121 00:05:33,418 --> 00:05:34,320 Lijepa, ja ga volim. 122 00:05:34,320 --> 00:05:35,110 OK, super. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Dakle, ispričavam se ako je moj granični Brace je vrsta pada off zaslonu. 125 00:05:43,190 --> 00:05:44,090 Ga donijeli smo natrag. 126 00:05:44,090 --> 00:05:46,610 OK, super. 127 00:05:46,610 --> 00:05:48,690 Što je sljedeće? 128 00:05:48,690 --> 00:05:51,950 >> Dakle, mi znamo što želimo izbrisati čvor koji ima vrijednost n. 129 00:05:51,950 --> 00:05:56,340 Tako ćemo naći slučaju kada mi zapravo naći naše čvor. 130 00:05:56,340 --> 00:05:57,840 Pa kako bih provjeriti? 131 00:05:57,840 --> 00:06:02,210 Ja bih samo reći, ako pokazivač, a zatim, ako sam Želite da biste dobili vrijednost od pokazivača, 132 00:06:02,210 --> 00:06:08,940 Ja samo ne arrow n, jednak n, parametar 133 00:06:08,940 --> 00:06:14,490 da mi je dao ovu funkciju, čvor koji želimo da se zapravo izbrisati. 134 00:06:14,490 --> 00:06:17,090 Bilo kakva pitanja do ovdje? 135 00:06:17,090 --> 00:06:18,360 U redu. 136 00:06:18,360 --> 00:06:24,140 U redu, tako da sada ćemo izvući brzo sliku na brodu, kako bi se vizualizirati to. 137 00:06:24,140 --> 00:06:30,710 >> Dakle, recimo da je naša lijepa čvor. 138 00:06:30,710 --> 00:06:34,480 I to ima vrijednost, samo ću reći četiri. 139 00:06:34,480 --> 00:06:40,340 A to ukazuje na sljedeća čvor u našem popisu povezane. 140 00:06:40,340 --> 00:06:42,220 I nema ništa prije njega. 141 00:06:42,220 --> 00:06:45,800 Dakle, mi imamo prethodna ukazujući na ništa. 142 00:06:45,800 --> 00:06:48,110 U ovom slučaju, mi ukazati unatrag. 143 00:06:48,110 --> 00:06:50,960 OK, samo postavljanje moj povezani popis ovdje. 144 00:06:50,960 --> 00:06:53,630 I mi imamo popis koji pokazuje na ove strukture za početak. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Ja ću izvući još jedan za Zbog potpunosti. 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 Ja ću naglasiti ovo naprijed. 150 00:07:07,480 --> 00:07:09,550 I ja ću istaknuti da je jedan natrag. 151 00:07:09,550 --> 00:07:10,360 Ups, ispričavam se. 152 00:07:10,360 --> 00:07:12,710 Da, dobio to unatrag. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Učinite to opet. 155 00:07:16,967 --> 00:07:18,330 OK, tamo idemo. 156 00:07:18,330 --> 00:07:19,910 U redu, nema ga. 157 00:07:19,910 --> 00:07:21,780 OK, ovdje je naš sliku. 158 00:07:21,780 --> 00:07:24,860 >> U redu, tako da želimo razmotriti dva slučaja. 159 00:07:24,860 --> 00:07:27,330 Prvi slučaj ako čvor želimo obrisati 160 00:07:27,330 --> 00:07:29,420 je na samom početku našeg popisa. 161 00:07:29,420 --> 00:07:34,070 A onda, drugi slučaj da želimo razmotriti je li to bilo gdje drugdje. 162 00:07:34,070 --> 00:07:37,660 Ja razumijem da je to potpuno messy crtanje sa svim mojim brisanje, 163 00:07:37,660 --> 00:07:40,400 ali nadam se da ćemo pokušati to jasno s nekim kodom. 164 00:07:40,400 --> 00:07:45,450 >> U redu, pa ćemo pokriti slučaj gdje smo pronašli naš čvor, 165 00:07:45,450 --> 00:07:48,900 i to na vrlo početak našeg popisa povezane. 166 00:07:48,900 --> 00:07:50,810 Svatko će mi dati prijedlog ovdje o tome što 167 00:07:50,810 --> 00:07:54,684 Trebam učiniti kako bi zapravo ukloniti našu čvor? 168 00:07:54,684 --> 00:07:55,970 To je malo lukav. 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> PUBLIKA: Morate uzeti čvor koji bi se pred njim 171 00:07:59,628 --> 00:08:01,794 a čine ga točku za onaj koji bi se nakon toga, 172 00:08:01,794 --> 00:08:03,004 i uzeti čvor koji bi se nakon njega i napraviti 173 00:08:03,004 --> 00:08:04,554 što ukazuje na čvoru prije njega. 174 00:08:04,554 --> 00:08:05,220 Hannah: Točno. 175 00:08:05,220 --> 00:08:10,640 U redu, tako da je to slučaj where-- imamo dva slučaja. 176 00:08:10,640 --> 00:08:14,100 Imamo slučaj u kojem se čvor koji tražimo 177 00:08:14,100 --> 00:08:18,270 je prednji dio popisa. 178 00:08:18,270 --> 00:08:23,110 OK, a zatim slučaj da vas opisao je drugačije, zar ne? 179 00:08:23,110 --> 00:08:24,500 To je negdje drugdje na popisu. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Tako si rekao, trebamo pogledajte čvor prethodne, 182 00:08:32,840 --> 00:08:36,500 i učiniti prethodni čvor ukazuju na sljedeći čvor. 183 00:08:36,500 --> 00:08:40,510 Dakle, recimo da smo pokušava uzeti pet 184 00:08:40,510 --> 00:08:43,059 U mom vrlo neuredan crtež ovdje. 185 00:08:43,059 --> 00:08:47,530 Želimo biti sigurni da četiri sada ukazuje na šest. 186 00:08:47,530 --> 00:08:49,590 Četiri je sljedeće točke na šest. 187 00:08:49,590 --> 00:08:52,150 A šest je ostale točke na četiri. 188 00:08:52,150 --> 00:08:53,960 To je naš cilj ovdje, u redu? 189 00:08:53,960 --> 00:08:56,150 To je ono što ja mislim da ti Samo je rekao tamo. 190 00:08:56,150 --> 00:08:58,450 >> U redu, tako da ćemo dobiti taj prvi dio. 191 00:08:58,450 --> 00:09:02,300 Učinimo ima Prethodna Prethodna pokazivač. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Dakle, četiri je pored trebalo ukazati na što? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Točno, u ovom slučaju, šest. 196 00:09:14,900 --> 00:09:18,470 Zato bismo trebali reći pokazivača, sljedeći. 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 U redu. 199 00:09:21,150 --> 00:09:24,870 Tako ćemo se riješiti ove ružne slike i pokušati izvući nešto ljepši jedan. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Mi imamo popis glavu ovdje. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 A to ukazuje na prvi čvor u naš list povezani, što mi je rekao je četiri. 204 00:09:42,740 --> 00:09:45,620 Ovo je naš drugi čvor, pet. 205 00:09:45,620 --> 00:09:47,307 I naš treći čvor, šest. 206 00:09:47,307 --> 00:09:50,265 Samo pokušavam izvući isti slika, samo malo više glatko. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 U redu, tako da je četiri sljedeća izvorno upućuje na pet. 209 00:09:56,280 --> 00:09:58,620 Pet je sljedeće točke na šest. 210 00:09:58,620 --> 00:10:00,170 Šest je ostale točke na pet. 211 00:10:00,170 --> 00:10:02,470 I pet prethodnih ukazuje na četiri. 212 00:10:02,470 --> 00:10:03,360 Toliko ljepše! 213 00:10:03,360 --> 00:10:04,530 OK, super. 214 00:10:04,530 --> 00:10:07,770 >> Pa sad, ono što smo učinili upravo Ovdje, ova linija koda, 215 00:10:07,770 --> 00:10:12,680 koji kaže pokazivač prethodna Sljedeći, pa što to znači? 216 00:10:12,680 --> 00:10:17,540 To znači da, ako gledamo pet, idite na prethodni čvor, 217 00:10:17,540 --> 00:10:21,970 i to pored sad trebaju točka za pet je sljedeći. 218 00:10:21,970 --> 00:10:27,840 Pa u biti, što to radiš je da je brisanje ove strelicu 219 00:10:27,840 --> 00:10:29,640 a što ga preskočiti pravo nad pet. 220 00:10:29,640 --> 00:10:31,360 Je li to jasno? 221 00:10:31,360 --> 00:10:33,200 Znam da mogu biti malo nedorečena. 222 00:10:33,200 --> 00:10:34,480 Vidim neke glave nominacije. 223 00:10:34,480 --> 00:10:35,390 To je dobro. 224 00:10:35,390 --> 00:10:36,670 OK, super. 225 00:10:36,670 --> 00:10:39,590 Sad, što je sljedeći korak? 226 00:10:39,590 --> 00:10:42,060 >> Ja sam reset sljedeći. 227 00:10:42,060 --> 00:10:45,297 Sada, što drugo strelica trebam promijeniti? 228 00:10:45,297 --> 00:10:46,130 To je jedan ovdje. 229 00:10:46,130 --> 00:10:47,560 Šest prethodni. 230 00:10:47,560 --> 00:10:50,620 Mi ne želimo šest prethodnih ukazati na pet više. 231 00:10:50,620 --> 00:10:54,580 Želimo da se ukazati na četiri. 232 00:10:54,580 --> 00:10:56,190 Da li je ta slika smisla? 233 00:10:56,190 --> 00:10:58,370 Dakle, sada smo zapravo može potrajati pet od. 234 00:10:58,370 --> 00:10:59,370 Tako ćemo dobiti taj komad. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Što trebam učiniti prije nego što sam reset šest je prije četiri? 237 00:11:11,180 --> 00:11:14,360 Bilo koji ideja tamo? 238 00:11:14,360 --> 00:11:17,369 >> PUBLIKA: Oslobodite čvor između ih postavljanjem to null? 239 00:11:17,369 --> 00:11:17,910 Hannah: Cool. 240 00:11:17,910 --> 00:11:21,100 Definitivno, naš krajnji cilj je će se osloboditi čvor. 241 00:11:21,100 --> 00:11:22,490 Dakle, možemo to učiniti upravo ovdje. 242 00:11:22,490 --> 00:11:23,540 Besplatno pokazivač. 243 00:11:23,540 --> 00:11:24,810 Apsolutno. 244 00:11:24,810 --> 00:11:29,160 No, i prije toga, neka je just-- naš cilj pravo 245 00:11:29,160 --> 00:11:38,730 Ovdje je postaviti pokazivač sljedeći Prethodna jednak pokazivač prethodne. 246 00:11:38,730 --> 00:11:40,760 Znam da je ovo je dobivanje prikrivali. 247 00:11:40,760 --> 00:11:45,440 OK, neka je take-- kul. 248 00:11:45,440 --> 00:11:46,990 Može li svatko vidi ovo dno crta? 249 00:11:46,990 --> 00:11:47,840 Ili je to super maleni? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Dakle, prije nego što izvršite Ova linija ovdje, želimo 252 00:11:54,300 --> 00:11:58,375 kako bi bili sigurni da je Pokazivač pored nije null. 253 00:11:58,375 --> 00:12:00,500 Jer ako je pokazivač sljedeći je null, kakvu pogreške 254 00:12:00,500 --> 00:12:02,727 ja ću doći kad pokušam referenca null pointer? 255 00:12:02,727 --> 00:12:03,560 PUBLIKA: SEG kriv. 256 00:12:03,560 --> 00:12:05,660 Hannah: SEG kriv, lijepo. 257 00:12:05,660 --> 00:12:09,690 U redu, pa ako to nije null, onda možemo resetirati. 258 00:12:09,690 --> 00:12:14,420 I mi imamo šest točku ponovno na četiri. 259 00:12:14,420 --> 00:12:17,440 Pitanja do ove točke? 260 00:12:17,440 --> 00:12:17,940 Da? 261 00:12:17,940 --> 00:12:19,814 >> PUBLIKA: U prva ako izjavi, jeste li 262 00:12:19,814 --> 00:12:23,817 znači da ima strelicu Sljedeći, ili [nečujan]? 263 00:12:23,817 --> 00:12:25,150 Hannah: mislio sam pointer strelica n. 264 00:12:25,150 --> 00:12:30,270 Tako je u osnovi, ono što ja pokušavam učiniti je rekao, trenutni čvor koji sam ja 265 00:12:30,270 --> 00:12:34,100 iterating više, trenutni čvor koji Gledam, ja spremanje u pokazivača. 266 00:12:34,100 --> 00:12:37,630 I ja želim znati strelice vrijednost, što je u ovom slučaju n. 267 00:12:37,630 --> 00:12:39,500 I ja želim vidjeti, čvor tražim 268 00:12:39,500 --> 00:12:42,790 za čvor sam cilj izbrisati? 269 00:12:42,790 --> 00:12:47,657 Dakle, to je razlog zašto smo ovdje pokazivač n. 270 00:12:47,657 --> 00:12:49,857 >> PUBLIKA: Dakle strelica ide na n, postavite vrijednost 271 00:12:49,857 --> 00:12:52,058 i pohraniti ga u čvor zvan n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> Hannah: Pa to je kao da sam ja prolazi kroz ovaj popis povezanih 274 00:12:58,820 --> 00:13:00,310 i ukazuje na pet. 275 00:13:00,310 --> 00:13:03,600 Ako želim da se tu vrijednost, ako Želim da se taj broj, 5, 276 00:13:03,600 --> 00:13:06,400 Moram napraviti pokazivača strelica n. 277 00:13:06,400 --> 00:13:06,900 Cool? 278 00:13:06,900 --> 00:13:07,900 Da. 279 00:13:07,900 --> 00:13:11,200 >> PUBLIKA: Je n ime varijable? 280 00:13:11,200 --> 00:13:11,700 Hannah: Da. 281 00:13:11,700 --> 00:13:14,870 Dakle, ako smo okrenuti leđa jedno slide, n je ime 282 00:13:14,870 --> 00:13:18,660 vrijednosti unutar mjesta čvor u našem popisu povezane. 283 00:13:18,660 --> 00:13:21,510 I znam da mogu dobiti nešto malo zbunjujuće, jer mi također 284 00:13:21,510 --> 00:13:24,680 zovete stvar koje želimo izbrisati n. 285 00:13:24,680 --> 00:13:26,717 Dakle, to je gdje je to jedan redak dolazi. 286 00:13:26,717 --> 00:13:27,671 Da? 287 00:13:27,671 --> 00:13:31,010 >> PUBLIKA: Što ste [Nečujan] kako oni rade? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Kazaljka [nečujan]? 290 00:13:35,780 --> 00:13:37,520 >> Hannah: Naravno. 291 00:13:37,520 --> 00:13:40,027 Jeste li razgovarali koji crta about--? 292 00:13:40,027 --> 00:13:41,526 PUBLIKA: zadnji redak [nečujan]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> Hannah: Naravno, OK. 295 00:13:45,250 --> 00:13:48,540 Pa pogledajmo sliku u Kako bi se pokušati objasniti. 296 00:13:48,540 --> 00:13:51,030 Žao mi je, za kamera, pitanje je 297 00:13:51,030 --> 00:13:54,580 možemo objasniti pokazivač strelicu uz pokazivač prethodne. 298 00:13:54,580 --> 00:14:01,510 OK, pa recimo da smo u pet a naš je cilj brisanje pet. 299 00:14:01,510 --> 00:14:07,240 Dakle pokazivač sljedeći, koji od tih Tri čvorovi to nam daje? 300 00:14:07,240 --> 00:14:10,840 To nas dovodi do šestog čvor, zar ne? 301 00:14:10,840 --> 00:14:16,490 >> U redu, tako da sada tražimo za šest prethodni. 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 I mi smo to resetiranja biti jednak četiri, 304 00:14:20,210 --> 00:14:23,214 što se dogodilo da se pet prethodni. 305 00:14:23,214 --> 00:14:25,180 Znam, to je super teško pratiti. 306 00:14:25,180 --> 00:14:29,286 Ja stvarno preporučiti crtate slike Ako ste dobili pitanje kao što je ovaj. 307 00:14:29,286 --> 00:14:30,242 Da? 308 00:14:30,242 --> 00:14:32,617 >> PUBLIKA: Je li razlog da nemamo [nečujan]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> Hannah: Točno. 311 00:14:38,570 --> 00:14:44,800 Dakle, pitanje je, zašto ne ne trebaju provjeriti ovdje? 312 00:14:44,800 --> 00:14:48,160 Zašto se ne trebamo provjeriti Pokazivač prethodna nije jednaka null? 313 00:14:48,160 --> 00:14:50,070 A to je zato što smo Već odvoji 314 00:14:50,070 --> 00:14:52,490 slučaj strelice na samom početku. 315 00:14:52,490 --> 00:14:54,060 Vrlo dobro pitanje. 316 00:14:54,060 --> 00:14:56,880 Sve ostalo na tome? 317 00:14:56,880 --> 00:14:57,380 OK, super. 318 00:14:57,380 --> 00:14:58,360 Tako ćemo ga završiti. 319 00:14:58,360 --> 00:14:59,890 Mi smo skoro tamo. 320 00:14:59,890 --> 00:15:01,310 >> Pa što ako je u glavi? 321 00:15:01,310 --> 00:15:03,360 Što ako umjesto pokušava izbrisati pet, 322 00:15:03,360 --> 00:15:06,240 smo zapravo htjeli izbrisati četiri? 323 00:15:06,240 --> 00:15:07,270 Ono što bih ja moram napraviti? 324 00:15:07,270 --> 00:15:09,610 Pa, želim poništiti moju glavu na što? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Shout it out? 327 00:15:15,585 --> 00:15:16,710 PUBLIKA: jedna za njega. 328 00:15:16,710 --> 00:15:17,460 Hannah: Lijepa. 329 00:15:17,460 --> 00:15:26,430 U redu, tako da želimo navesti da se upućuju za sve što nam se kazaljka sljedeći čvor. 330 00:15:26,430 --> 00:15:29,040 Dobro. 331 00:15:29,040 --> 00:15:30,810 I samo za potpunost godina sake, da bi 332 00:15:30,810 --> 00:15:35,590 želite provjeriti da sve dok naš popis nulta, tako dugo dok je naš popis nije 333 00:15:35,590 --> 00:15:42,730 prazna, onda želimo postaviti naša prethodna jednaka nuli. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Pitanje do sada? 336 00:15:50,230 --> 00:15:53,205 Jedan korak from--? 337 00:15:53,205 --> 00:15:55,530 >> PUBLIKA: Biste li se, ako popis nije jednaka null? 338 00:15:55,530 --> 00:15:56,950 >> Hannah: Da, ti si potpuno u pravu. 339 00:15:56,950 --> 00:15:58,130 Žao mi je. 340 00:15:58,130 --> 00:16:00,040 Je li popis nije jednaka nuli. 341 00:16:00,040 --> 00:16:01,915 Awesome. 342 00:16:01,915 --> 00:16:04,245 Pokušavajući da bi to sve na zaslonu. 343 00:16:04,245 --> 00:16:06,870 To je vrsta pada off. 344 00:16:06,870 --> 00:16:07,730 Žao nam je, momci. 345 00:16:07,730 --> 00:16:11,874 I na kraju, ali ne manje važno, sve moramo učiniti je povratak. 346 00:16:11,874 --> 00:16:12,840 OK. 347 00:16:12,840 --> 00:16:15,400 To je puno naguranih u jako brzo. 348 00:16:15,400 --> 00:16:16,800 Uzmite trenutak da pogledate ovaj over. 349 00:16:16,800 --> 00:16:18,216 Recite mi, ako imate bilo kakvih pitanja. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Da? 352 00:16:20,732 --> 00:16:26,940 >> PUBLIKA: Ako popis na Glava, then-- čekati, nevermind. 353 00:16:26,940 --> 00:16:27,700 >> Hannah: U redu, dobro. 354 00:16:27,700 --> 00:16:30,987 Dakle, to je, ako je popis u glavi, ćemo ga ukloniti na sve što smo umetnuta. 355 00:16:30,987 --> 00:16:31,486 Da? 356 00:16:31,486 --> 00:16:33,777 >> PUBLIKA: Možete li objasniti Prvo, ako izjava opet? 357 00:16:33,777 --> 00:16:36,149 Ako pokazivač n jednak n? 358 00:16:36,149 --> 00:16:36,690 Hannah: Naravno. 359 00:16:36,690 --> 00:16:42,780 Dakle, naš je cilj cijele ove funkcije izbrisati čvor koji ima vrijednost n. 360 00:16:42,780 --> 00:16:47,460 Dakle, ako nađemo, što smo iterating kroz naše liste, 361 00:16:47,460 --> 00:16:51,770 čvor u vrijednosti n, to je jedna želimo izbrisati. 362 00:16:51,770 --> 00:16:57,286 Dakle, sve se događa brisanje unutar tog veliko ako izjavi. 363 00:16:57,286 --> 00:16:58,593 Da li to smisla? 364 00:16:58,593 --> 00:16:59,480 Cool. 365 00:16:59,480 --> 00:16:59,990 Da? 366 00:16:59,990 --> 00:17:02,864 >> PUBLIKA: Možda jednostavno ne mogu vidjeti da, ali ne i vi trebate liniju 367 00:17:02,864 --> 00:17:06,024 za pomicanje po popisu? 368 00:17:06,024 --> 00:17:06,690 Hannah: Awesome. 369 00:17:06,690 --> 00:17:10,896 Vratimo ovaj gore malo, a ćemo baciti to pravo na dnu. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Možda odbor bi ste bila nešto bolja ideja. 372 00:17:15,490 --> 00:17:17,829 Pa kako bih pomaknuti pokazivač prema naprijed? 373 00:17:17,829 --> 00:17:20,184 >> PUBLIKA: Pointer jednako pokazivač plus jedan. 374 00:17:20,184 --> 00:17:21,599 >> Hannah: Lijepa. 375 00:17:21,599 --> 00:17:25,050 Tako da nam omogućuje da nastaviti Ponavljanje kroz. 376 00:17:25,050 --> 00:17:26,251 OK. 377 00:17:26,251 --> 00:17:27,750 PUBLIKA: Ne bi li se još? 378 00:17:27,750 --> 00:17:29,028 Hannah: Još jednom? 379 00:17:29,028 --> 00:17:32,444 PUBLIKA: Ne bi tu bilo drugo, nakon velika stara, ako 380 00:17:32,444 --> 00:17:35,519 Izjava [nečujan]? 381 00:17:35,519 --> 00:17:36,310 Hannah: Koji dio? 382 00:17:36,310 --> 00:17:38,350 Žao mi je. 383 00:17:38,350 --> 00:17:41,800 >> PUBLIKA: obuhvaćanje, Ne bi trebalo biti drukčije? 384 00:17:41,800 --> 00:17:43,550 Hannah: Apsolutno može imati drugo. 385 00:17:43,550 --> 00:17:46,930 Budući da imam pravo povratka tamo, ne morate se drugdje. 386 00:17:46,930 --> 00:17:48,760 Ali da, dobro pitanje. 387 00:17:48,760 --> 00:17:50,170 OK, zar ne? 388 00:17:50,170 --> 00:17:52,878 PUBLIKA: Možemo li se sjetiti pokazivača koji se kreće kroz popis 389 00:17:52,878 --> 00:17:56,610 kao da na vrijednosti svakog čvora na popisu? 390 00:17:56,610 --> 00:18:00,650 Ili bismo trebali razmišljati o tome kako je vrsta izvan popisa? 391 00:18:00,650 --> 00:18:02,350 >> Hannah: Ili jedno je u redu, mislim. 392 00:18:02,350 --> 00:18:05,880 Način na koji sam ga zamisliti se Ja kažem, u redu, ja sam pointer. 393 00:18:05,880 --> 00:18:06,520 A ovo sam ja. 394 00:18:06,520 --> 00:18:07,150 Ovo je moja ruka. 395 00:18:07,150 --> 00:18:09,960 Ja ću ukazati na različite stvari koje želim ponoviti kroz. 396 00:18:09,960 --> 00:18:12,270 Prvo, ja ću istaknuti na čelu liste. 397 00:18:12,270 --> 00:18:14,144 I to mi je ja sam govori će ukazati na četiri. 398 00:18:14,144 --> 00:18:18,060 I tako ja, što je izvan popisa, Mogu istaknuti da je svaki od tih elemenata. 399 00:18:18,060 --> 00:18:19,520 Zato mislim o sebi kao pokazivač. 400 00:18:19,520 --> 00:18:21,645 PUBLIKA: Dakle, kada ste izbrisali jedan od tih elemenata, 401 00:18:21,645 --> 00:18:23,404 što se izbrisati, da se tako izrazim. 402 00:18:23,404 --> 00:18:24,070 Hannah: Točno. 403 00:18:24,070 --> 00:18:25,920 Znači li izbrisati stvar što pokazuje da. 404 00:18:25,920 --> 00:18:28,340 Tako u primjeru da je Vidjeli smo gdje smo 405 00:18:28,340 --> 00:18:31,670 pokušava izbrisati pet, kad sam pokazujući na pet, 406 00:18:31,670 --> 00:18:34,200 Želim izbrisati što sam pokazujući. 407 00:18:34,200 --> 00:18:35,870 Točno u pravu. 408 00:18:35,870 --> 00:18:36,577 Da? 409 00:18:36,577 --> 00:18:39,410 PUBLIKA: Jesmo zbrinuta slučaj gdje n nije na popisu? 410 00:18:39,410 --> 00:18:40,460 Hannah: Ako n nije na popisu? 411 00:18:40,460 --> 00:18:43,501 Sve što će se dogoditi je da si će ponoviti kroz te ponoviti 412 00:18:43,501 --> 00:18:47,616 putem, a onda, idete doći do pokazivač biće nula, 413 00:18:47,616 --> 00:18:48,990 i onda ćeš biti učinjeno. 414 00:18:48,990 --> 00:18:50,812 >> PUBLIKA: Dakle, imamo za povratak ništa? 415 00:18:50,812 --> 00:18:51,520 Hannah: Mogli smo. 416 00:18:51,520 --> 00:18:54,500 Način da ako definirane funkcija, ja samo kažem da se vraća 417 00:18:54,500 --> 00:18:55,770 poništiti bez obzira. 418 00:18:55,770 --> 00:18:58,360 Ali ti bi mogao imati nešto kao povratak prirodni broj, 419 00:18:58,360 --> 00:19:00,920 te su se vratili negativna 1, ako to ne uspije. 420 00:19:00,920 --> 00:19:03,070 Nešto kao što je to. 421 00:19:03,070 --> 00:19:04,494 Pitanja with-- Da? 422 00:19:04,494 --> 00:19:05,410 PUBLIKA: [nečujan]? 423 00:19:05,410 --> 00:19:05,993 Hannah: Žao nam je? 424 00:19:05,993 --> 00:19:07,419 PUBLIKA: [nečujan]? 425 00:19:07,419 --> 00:19:07,960 Hannah: Naravno. 426 00:19:07,960 --> 00:19:11,730 Dakle, to je actual-- nakon što ste učinio sve ovo djelo kreće 427 00:19:11,730 --> 00:19:16,530 Sve ove strijele oko, naš cijeli Cilj je bio da se riješi čvor 428 00:19:16,530 --> 00:19:18,230 da tražimo. 429 00:19:18,230 --> 00:19:21,610 Dakle, u ovom slučaju, oslobađajući pointer, ako sam pokazujući na pet, 430 00:19:21,610 --> 00:19:24,670 to je kao brisanje ovaj srednji čvor. 431 00:19:24,670 --> 00:19:27,250 To je slobodan kazaljka dio. 432 00:19:27,250 --> 00:19:29,090 Koje imaju smisla? 433 00:19:29,090 --> 00:19:31,390 >> PUBLIKA: Pa čak i pomislio nisi [nečujan]? 434 00:19:31,390 --> 00:19:36,060 >> Hannah: Tako smo pretpostavili na početku smo imali neki popis koji je bio already-- 435 00:19:36,060 --> 00:19:37,220 oni su stavili to zajedno. 436 00:19:37,220 --> 00:19:39,761 Dakle, kako bi se uredila ova Popis, oni sigurno [nečujan]. 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 Sve drugo s tim? 440 00:19:44,490 --> 00:19:46,386 Da? 441 00:19:46,386 --> 00:19:49,204 >> PUBLIKA: Što ako popis ne jednak nul liniju? 442 00:19:49,204 --> 00:19:49,704 [Nečujan]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 Hannah: Upravo ovdje? 445 00:19:53,080 --> 00:19:53,840 PUBLIKA: Da. 446 00:19:53,840 --> 00:19:57,370 Hannah: OK, sve što radim je ja sam samo pazeći 447 00:19:57,370 --> 00:20:03,250 da prije nego što sam pokušati popisu dereference, Prije nego sam pokušati pristupiti prethodne, 448 00:20:03,250 --> 00:20:07,210 Želim da biste bili sigurni da to nije null tako da ne dobijete grešku SEG. 449 00:20:07,210 --> 00:20:08,400 Cool. 450 00:20:08,400 --> 00:20:10,820 >> OK, znam da je to bilo sasvim Mnogo bi se kroz. 451 00:20:10,820 --> 00:20:14,950 Dakle, to će biti slide dostupne za vas. 452 00:20:14,950 --> 00:20:17,341 Dakle, možete proći kroz njega detaljnije. 453 00:20:17,341 --> 00:20:17,841 Da? 454 00:20:17,841 --> 00:20:19,749 >> PUBLIKA: Zašto lista [nečujan]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 Hannah: Naravno. 457 00:20:24,670 --> 00:20:27,390 Dakle, popis uistinu ukazuje na Ovaj element upravo ovdje, 458 00:20:27,390 --> 00:20:29,200 prvi element u popisu. 459 00:20:29,200 --> 00:20:30,748 Tako da se ne može imati prethodna. 460 00:20:30,748 --> 00:20:31,736 Da? 461 00:20:31,736 --> 00:20:35,194 >> PUBLIKA: Da li pokazivač točku na istoj adresi u memoriji? 462 00:20:35,194 --> 00:20:38,404 Da li je to točka na isto adresa u memoriji kao čvor 463 00:20:38,404 --> 00:20:40,640 kako to pokazuje da? 464 00:20:40,640 --> 00:20:43,865 >> Hannah: Da, to ukazuje na tom čvoru u memoriji. 465 00:20:43,865 --> 00:20:47,190 >> PUBLIKA: Dobro, tako kada [nečujan]? 466 00:20:47,190 --> 00:20:50,580 >> Hannah: U smislu, da. 467 00:20:50,580 --> 00:20:51,280 OK. 468 00:20:51,280 --> 00:20:52,997 U redu, krenimo zajedno s tim. 469 00:20:52,997 --> 00:20:55,330 A ako imate još pitanja, držati oko na kraju, 470 00:20:55,330 --> 00:20:57,130 i možemo proći kroz to opet. 471 00:20:57,130 --> 00:20:58,120 OK, super. 472 00:20:58,120 --> 00:21:00,490 Sada smo dobili da se presele na to hash tablica, pokušava, 473 00:21:00,490 --> 00:21:04,940 i drveće, što imaš super upoznate sa p-set pet, Speller. 474 00:21:04,940 --> 00:21:11,020 >> Dakle, hash tablica je jednostavno Niz s pojedinačno povezanim popisima 475 00:21:11,020 --> 00:21:14,050 ili dvostruko povezane liste dolaze izvan nje. 476 00:21:14,050 --> 00:21:16,380 Dakle, imamo nekakvu asocijativnog niza. 477 00:21:16,380 --> 00:21:21,280 A kako ćemo znati koji od njih polja kante ući, 478 00:21:21,280 --> 00:21:24,137 koristimo hash funkcije. 479 00:21:24,137 --> 00:21:26,470 Dakle, u ovom slučaju, može bilo tko pogodite što hash funkcije 480 00:21:26,470 --> 00:21:28,636 će se samo na temelju nekih od ulaza i izlaza? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> PUBLIKA: Pismo broj abecede. 483 00:21:33,194 --> 00:21:33,860 Hannah: Točno. 484 00:21:33,860 --> 00:21:36,160 To ih stavlja samo po abecednom redu. 485 00:21:36,160 --> 00:21:39,280 Sve što počinje s Je stavio u prvi kantu. 486 00:21:39,280 --> 00:21:43,340 Sve sa B se staviti u Druga kanta, tako dalje, i tako dalje. 487 00:21:43,340 --> 00:21:45,620 Strašan, OK. 488 00:21:45,620 --> 00:21:48,980 I funkcija raspršivanja je svaki funkcija koja vodi u riječi 489 00:21:48,980 --> 00:21:51,910 i da će vam reći što Bucket spada u. 490 00:21:51,910 --> 00:21:55,150 Pa što ulazak u našem Niz spada u. 491 00:21:55,150 --> 00:21:58,080 >> Dakle, svaki put dajem hash funkcije riječ, 492 00:21:58,080 --> 00:22:00,660 to bi trebao reći mene ista staviti svaki put. 493 00:22:00,660 --> 00:22:03,270 Dakle, ako ćemo koristiti hash funkcije iz prethodnog slajda 494 00:22:03,270 --> 00:22:05,950 gdje smo sortiranje Prvo slovo abecede, 495 00:22:05,950 --> 00:22:08,230 svaki put predam hash funkcija "Apple" 496 00:22:08,230 --> 00:22:10,180 to uvijek treba dati mi vratiti 0. 497 00:22:10,180 --> 00:22:12,890 Dakle, ako imam jabuka staviti u moje hash tablici, 498 00:22:12,890 --> 00:22:17,700 Ako sam dati "jabuku" na moj hash funkcije, to bi trebao reći, ići stavite ga u kantu 0. 499 00:22:17,700 --> 00:22:19,980 Ako sam u potrazi za Apple je u mom hash tablici 500 00:22:19,980 --> 00:22:24,340 i ja kažem, gdje je moć jabuka uživo, pitaš svoju hash funkcije. 501 00:22:24,340 --> 00:22:26,900 A ona kaže, ići na kantu 0. 502 00:22:26,900 --> 00:22:29,150 U redu? 503 00:22:29,150 --> 00:22:32,660 Pitanja s hash funkcija? 504 00:22:32,660 --> 00:22:34,570 Awesome. 505 00:22:34,570 --> 00:22:37,320 >> Ovdje je nešto više detaljno objašnjenje 506 00:22:37,320 --> 00:22:39,570 onoga hash funkcija mogla izgledati. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 U redu. 509 00:22:42,960 --> 00:22:45,960 Sada, problem s hash Funkcije je u idealnom svijetu, 510 00:22:45,960 --> 00:22:48,870 bismo imati samo jedan stvar je u svakoj ćeliji. 511 00:22:48,870 --> 00:22:50,900 No, u stvarnosti, postoji Ne samo jednu riječ 512 00:22:50,900 --> 00:22:54,280 koja počinje s A. Nema samo jedna riječ koja počinje sa B. So 513 00:22:54,280 --> 00:22:56,960 U tom slučaju, ako iznenada dobiti "bobica" 514 00:22:56,960 --> 00:22:58,710 i želimo ga staviti u našu hash tablici, 515 00:22:58,710 --> 00:23:03,640 i vidimo, oh, ne, banana već postoji, što ćemo učiniti? 516 00:23:03,640 --> 00:23:05,900 >> Pa, imamo dvije mogućnosti. 517 00:23:05,900 --> 00:23:07,990 Prva mogućnost je linearno sondiranja, koja 518 00:23:07,990 --> 00:23:11,100 samo znači ići pronaći Sljedeći prazna kanta. 519 00:23:11,100 --> 00:23:14,100 Idi naći sljedeći praznog unosa polje. 520 00:23:14,100 --> 00:23:15,750 I samo staviti "bobica" tamo. 521 00:23:15,750 --> 00:23:18,880 Dakle, ja znam što je trebao ići s bananom u kantu jednom. 522 00:23:18,880 --> 00:23:22,155 No, samo ga stavite u kantu tri, jer kantu tri je prazna. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Druga mogućnost je vjerojatno ono što implementirati 525 00:23:26,680 --> 00:23:29,220 U Vašem p-set, u kojem vas imala poseban ulančavanje. 526 00:23:29,220 --> 00:23:33,990 Dakle, svaki od vaših kante, svaki od vaših nizova elemenata, 527 00:23:33,990 --> 00:23:38,410 Ne samo da drži jednu riječ, ali zapravo drži pokazivač na popisu riječi. 528 00:23:38,410 --> 00:23:41,880 Tako da ako ste imali banana u vašem hash tablici 529 00:23:41,880 --> 00:23:44,740 i odjednom htjeli dodati Berry, nema problema. 530 00:23:44,740 --> 00:23:51,110 Samo dodajte bobica na kraju, ili početak, svoje liste povezane. 531 00:23:51,110 --> 00:23:54,040 OK, super. 532 00:23:54,040 --> 00:23:58,490 Pitanja s hash tablice prije nego što dalje? 533 00:23:58,490 --> 00:23:59,850 >> U redu. 534 00:23:59,850 --> 00:24:01,070 Drveće i napad. 535 00:24:01,070 --> 00:24:07,980 U redu, tako da je ovo bio drugi izbor za provedbu rječnika. 536 00:24:07,980 --> 00:24:09,100 Mogli ste napravili probati. 537 00:24:09,100 --> 00:24:13,420 Dakle, to je posebna vrsta stabla koja ponaša se kao multi-level hash tablici. 538 00:24:13,420 --> 00:24:16,862 Tako ćete vidjeti sliku gdje imate niz koji 539 00:24:16,862 --> 00:24:19,320 ukazuje na hrpu polja koji ukazuju na hrpu polja 540 00:24:19,320 --> 00:24:20,390 koji ukazuju na hrpu polja. 541 00:24:20,390 --> 00:24:23,140 A mi ćemo vidjeti točno što je to će izgledati na buduće slajd. 542 00:24:23,140 --> 00:24:26,070 I općenito, drvo je samo bilo struktura podataka 543 00:24:26,070 --> 00:24:29,710 u kojem su podaci organiziran u nekom hijerarhiji. 544 00:24:29,710 --> 00:24:32,610 Dakle, gdje smo vidjeli imamo neka vrsta razumijevanja 545 00:24:32,610 --> 00:24:36,130 o najvišoj razini, sljedeći nivo, višu razinu, višu razinu. 546 00:24:36,130 --> 00:24:39,690 Dakle, to je vjerojatno većina jasna neke specifične primjere. 547 00:24:39,690 --> 00:24:40,880 Dakle, ovdje je naša stabla. 548 00:24:40,880 --> 00:24:42,970 Možete vidjeti da je to ima određene razine 549 00:24:42,970 --> 00:24:45,480 da počnemo s tim korijena čvora, jedan. 550 00:24:45,480 --> 00:24:47,640 A možemo ići kroz naše stablo. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Binarno stablo je Posebno vrsta drveta. 553 00:24:53,910 --> 00:24:56,770 I samo specifikacija za binarnog stabla 554 00:24:56,770 --> 00:25:01,130 je da svaki čvor ima najviše dva lista. 555 00:25:01,130 --> 00:25:03,960 Tako nećeš vidjeti bilo od ove čvorovi imaju tri ili četiri 556 00:25:03,960 --> 00:25:06,880 ili neki drugi broj listova. 557 00:25:06,880 --> 00:25:11,310 I onda još određeniji je binarno pretraživanje stablo 558 00:25:11,310 --> 00:25:18,010 gdje je svaki čvor na lijevoj strani čvor će imati vrijednost manja. 559 00:25:18,010 --> 00:25:21,180 I svaki vrijednost Pravo će biti veća. 560 00:25:21,180 --> 00:25:26,900 Dakle, ako vidite 44 je u našem korijenu, na lijevoj strani, 11, 22, i 33 561 00:25:26,900 --> 00:25:28,940 sve su manje od naših korijena. 562 00:25:28,940 --> 00:25:33,890 A na desnoj strani su svi Brojevi bigger-- 66, 55, i 77. 563 00:25:33,890 --> 00:25:37,380 I ova nekretnina vrijedi na svakoj razini stabla. 564 00:25:37,380 --> 00:25:42,690 >> Dakle, kada idemo dolje 22, 11, i 33, i dalje 11 565 00:25:42,690 --> 00:25:46,950 manji od 22 i 33 je veći od 22. 566 00:25:46,950 --> 00:25:50,160 I to ga čini lakšim za pretragu jer ako smo u potrazi za brojem, 567 00:25:50,160 --> 00:25:53,877 znamo točno što Podružnica slijediti dolje. 568 00:25:53,877 --> 00:25:56,210 Dakle, to bi vam se podsjetiti Malo binarnog pretraživanja. 569 00:25:56,210 --> 00:25:56,967 Da? 570 00:25:56,967 --> 00:25:58,835 >> PUBLIKA: Dakle, kada ste opisuje binarni, 571 00:25:58,835 --> 00:26:00,587 što je rekao da ima najviše dva lista? 572 00:26:00,587 --> 00:26:01,170 Hannah: Mm-hm. 573 00:26:01,170 --> 00:26:02,580 PUBLIKA: Može li se manje? 574 00:26:02,580 --> 00:26:03,121 Hannah: Da. 575 00:26:03,121 --> 00:26:06,720 Tako recimo, na primjer, vi nisu imali jednak broj stvari 576 00:26:06,720 --> 00:26:11,791 i ne može ispuniti sve svoje Lišće, to je u redu, ako netko ima jednu. 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 Awesome. 579 00:26:12,789 --> 00:26:15,930 Ima li još pitanja na drveću? 580 00:26:15,930 --> 00:26:16,670 OK. 581 00:26:16,670 --> 00:26:20,110 >> Povratak na našim pokušaja što sam govorio O malo ranije, 582 00:26:20,110 --> 00:26:23,900 Kako smo ove polja na više razina. 583 00:26:23,900 --> 00:26:26,280 Dakle, u ovom slučaju, možemo početi na vrhu. 584 00:26:26,280 --> 00:26:29,030 I mi možemo slijediti bilo koju danu riječ dolje. 585 00:26:29,030 --> 00:26:30,780 Recimo smo htjeli tražiti Turinga. 586 00:26:30,780 --> 00:26:34,380 Krećemo na T, slijedite ga na niz koji sadrži U, 587 00:26:34,380 --> 00:26:37,350 i slijedite ga dok ne do ove malo Delta koja 588 00:26:37,350 --> 00:26:39,060 govori nam da, da, da ste našli riječ. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Jasno pokušaja? 591 00:26:44,120 --> 00:26:48,138 Sve to ide tamo? 592 00:26:48,138 --> 00:26:48,908 Da? 593 00:26:48,908 --> 00:26:51,866 PUBLIKA: Da li simbol delte moraju zauzimati prostor unutar probati? 594 00:26:51,866 --> 00:26:54,532 Hannah: Da, pa to ne nužno i moraju biti Delta. 595 00:26:54,532 --> 00:26:57,760 No, moramo na neki način Reci našem computer-- sorry, 596 00:26:57,760 --> 00:27:01,130 tako da smo znali da TUR nije riječ. 597 00:27:01,130 --> 00:27:04,180 Jer recimo nismo imali ovaj koncept delte, ovaj koncept 598 00:27:04,180 --> 00:27:09,850 čestitke, koju je pronašao riječ, to će proći i ponoviti T-U-R, 599 00:27:09,850 --> 00:27:11,300 i onda kažu, strašan, pronašao sam! 600 00:27:11,300 --> 00:27:12,670 To mora biti riječ. 601 00:27:12,670 --> 00:27:13,720 No, to stvarno nije. 602 00:27:13,720 --> 00:27:15,310 Želimo cijeli Turing biti riječi. 603 00:27:15,310 --> 00:27:17,760 Dakle, moramo imati nešto na kraj koji govori, čestitke, 604 00:27:17,760 --> 00:27:19,051 našli ste legitiman riječ. 605 00:27:19,051 --> 00:27:21,680 PUBLIKA: Dakle, ako ste imali slično 26 slova abecede, 606 00:27:21,680 --> 00:27:24,560 bi li zapravo 27 ključeva u vašem probati? 607 00:27:24,560 --> 00:27:26,010 >> Hannah: Awesome, da. 608 00:27:26,010 --> 00:27:28,210 Pa zapravo, mislim da je će se na sljedeći slajd. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Gdje ako imate čvor u svom pokušaju, ti si 611 00:27:32,880 --> 00:27:35,800 će imati 27 djece umjesto 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Bilo kakva pitanja s tim? 614 00:27:40,050 --> 00:27:40,550 Da? 615 00:27:40,550 --> 00:27:44,569 PUBLIKA: Zašto pokušava zauzeti tako puno prostora [nečujan] kao što ide? 616 00:27:44,569 --> 00:27:47,629 Zašto se to smatra [nečujan]? 617 00:27:47,629 --> 00:27:48,170 Hannah: Naravno. 618 00:27:48,170 --> 00:27:48,790 Idemo natrag. 619 00:27:48,790 --> 00:27:52,350 Pitanje je, zašto su pokušaji toliko veći 620 00:27:52,350 --> 00:27:54,620 nego nešto poput hash tablici. 621 00:27:54,620 --> 00:27:57,790 Dakle, za svaku od tih razina, čak i ako oni ne ovdje nacrtana, 622 00:27:57,790 --> 00:28:01,250 morate imati svih 26 znakova. 623 00:28:01,250 --> 00:28:04,420 A razlog zbog kojeg se ne može kažu, oh, ali kao i za Turinga, ja 624 00:28:04,420 --> 00:28:07,570 ne trebaju imati bilo koji od onih iste stvari na razini U. Pa, 625 00:28:07,570 --> 00:28:11,390 Ako odjednom ste htjeli dodati nešto što je bilo poput T-H, 626 00:28:11,390 --> 00:28:14,800 bi nam trebao imati Mogućnost dodavanja tu riječ. 627 00:28:14,800 --> 00:28:17,330 Dakle, za svaku riječ, ti si idući u morati 628 00:28:17,330 --> 00:28:19,730 da imaju hrpu nizovi koji dolaze izvan nje. 629 00:28:19,730 --> 00:28:24,060 Tako možete vidjeti kako to bih dobiti stvarno velik, jako brzo. 630 00:28:24,060 --> 00:28:26,560 Ima li još pitanja? 631 00:28:26,560 --> 00:28:28,980 U redu. 632 00:28:28,980 --> 00:28:29,832 Da? 633 00:28:29,832 --> 00:28:33,210 >> PUBLIKA: Kad se pokušava brže od hash tablica? 634 00:28:33,210 --> 00:28:36,280 >> Hannah: Kada su nastojali brže od hash tablica? 635 00:28:36,280 --> 00:28:39,120 Dakle, ako ste imali stvarno loše hash funkcija. 636 00:28:39,120 --> 00:28:41,840 Pa recimo da sam poput, Ovdje je tvoj hash funkcija. 637 00:28:41,840 --> 00:28:43,660 Bez obzira na to što je riječ Možete li mi dati, ja sam uvijek 638 00:28:43,660 --> 00:28:47,740 će ga staviti u ulasku polja 0. 639 00:28:47,740 --> 00:28:52,000 I tako smo završili sa samo stavljanjem sve na jednom velikom popisu dugo povezani. 640 00:28:52,000 --> 00:28:58,740 I tako Potraži put bi u najgorem slučaju n ako je na samom kraju našeg popisa. 641 00:28:58,740 --> 00:29:03,150 Uz probati, samo moramo ponoviti kroz slova u riječi. 642 00:29:03,150 --> 00:29:07,080 Dakle, čak i ako se doda gomilu više riječi našeg pokušaja, 643 00:29:07,080 --> 00:29:09,620 to nas ne bi bilo više pronaći određenu riječ. 644 00:29:09,620 --> 00:29:11,750 >> Sve što trebate učiniti je, za Primjerice, u ovom slučaju, 645 00:29:11,750 --> 00:29:17,170 recimo mi smo u potrazi za zumiranje, bismo samo da ponoviti više 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, četiri slova. 647 00:29:19,840 --> 00:29:22,250 Dakle, to je samo Duljina zoom riječi. 648 00:29:22,250 --> 00:29:25,400 Nije važno koliko je više riječi stavimo u tom pokušaju. 649 00:29:25,400 --> 00:29:30,225 Uvijek možete ga dobiti U ova četiri koraka. 650 00:29:30,225 --> 00:29:31,215 Awesome. 651 00:29:31,215 --> 00:29:32,205 Da? 652 00:29:32,205 --> 00:29:34,185 >> PUBLIKA: Pa [nečujan] je niz, zar ne? 653 00:29:34,185 --> 00:29:35,322 >> Hannah: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 PUBLIKA: Ako ste u potrazi za [nečujan], 655 00:29:37,155 --> 00:29:40,929 bi li morati proći kroz Vaš polje pronaći [nečujan]? 656 00:29:40,929 --> 00:29:41,470 Hannah: Naravno. 657 00:29:41,470 --> 00:29:44,000 PUBLIKA: Ne da se više vremena? 658 00:29:44,000 --> 00:29:46,370 Hannah: Ako idem kažu da je moj polje je uvijek 659 00:29:46,370 --> 00:29:49,250 će biti, B, C, D, E, F, G, bla bla bla, 660 00:29:49,250 --> 00:29:51,630 pa ako ja uvijek znam da je U istom točnim redoslijedom, 661 00:29:51,630 --> 00:29:53,880 Ako sam uvijek znao da je po abecednom redu, 662 00:29:53,880 --> 00:29:57,860 Ja samo mogu reći je O broj tako i tako u abecedi. 663 00:29:57,860 --> 00:29:59,620 Samo skočiti na tom mjestu. 664 00:29:59,620 --> 00:30:01,860 Jer ne zaboravite, sa polja, možemo pristupiti 665 00:30:01,860 --> 00:30:06,590 bilo element tog niza u konstantnom Vrijeme ako znamo gdje smo u potrazi. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Da? 668 00:30:09,580 --> 00:30:12,005 >> PUBLIKA: Na prethodna slajd [nečujan] 27, 669 00:30:12,005 --> 00:30:14,430 ali 26 za prve. 670 00:30:14,430 --> 00:30:15,400 >> Hannah: Žao nam je? 671 00:30:15,400 --> 00:30:18,800 >> PUBLIKA: Nije prvi put jedna 0, tako da ne bi bilo 26? 672 00:30:18,800 --> 00:30:24,900 >> Hannah: Naravno, pa kad kažemo 27, to je će dati nam indeksi 0 do 26 godina. 673 00:30:24,900 --> 00:30:28,220 Ali, ako ste stvarno računati one se, da će to biti 27. 674 00:30:28,220 --> 00:30:30,007 Dobro pitanje. 675 00:30:30,007 --> 00:30:30,590 Bilo što drugo? 676 00:30:30,590 --> 00:30:31,200 Da? 677 00:30:31,200 --> 00:30:34,420 >> PUBLIKA: Tako se pokušava sporije od hash tablica? 678 00:30:34,420 --> 00:30:37,920 >> Hannah: Pokušava se događa da se, u teorija, brže nego hash tablice 679 00:30:37,920 --> 00:30:39,760 ali zauzimaju više memorije. 680 00:30:39,760 --> 00:30:40,534 Da? 681 00:30:40,534 --> 00:30:41,450 PUBLIKA: [nečujan]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> Hannah: Žao mi je, nisam vas čuo. 684 00:30:47,484 --> 00:30:48,400 PUBLIKA: [nečujan]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0-25 vam daje 26. 687 00:30:54,100 --> 00:30:56,958 >> Hannah: 0-25 bi dati 26, zar ne. 688 00:30:56,958 --> 00:30:58,457 >> PUBLIKA: I onda [nečujan]. 689 00:30:58,457 --> 00:30:59,040 Hannah: Tako je. 690 00:30:59,040 --> 00:31:04,760 Dakle, broj mi je navodeći broj stvari u našem polje. 691 00:31:04,760 --> 00:31:07,260 Dakle, ako ćemo imati 27, što je će nam dati 0 692 00:31:07,260 --> 00:31:10,620 preko 26 godina, koji će dati nam prostora za, u ovom slučaju, 693 00:31:10,620 --> 00:31:12,770 Ja ne uključujući apostrof. 694 00:31:12,770 --> 00:31:17,040 Dakle, mi smo dobivanje 0 do 25 su Prvih 26 slova abecede, 695 00:31:17,040 --> 00:31:18,990 ili svih 26 slova abecede. 696 00:31:18,990 --> 00:31:21,190 A onda je prošle stvar, na ulasku 26, je 697 00:31:21,190 --> 00:31:24,598 će biti provjera Mark, ili Delta. 698 00:31:24,598 --> 00:31:26,960 Bilo što drugo? 699 00:31:26,960 --> 00:31:29,130 Awesome. 700 00:31:29,130 --> 00:31:30,020 Izgubili moj prostor. 701 00:31:30,020 --> 00:31:31,020 OK, super. 702 00:31:31,020 --> 00:31:33,240 >> Tako smo već dotaknuli ovo. 703 00:31:33,240 --> 00:31:37,430 No, veliki trgovački off između pokušaja i hash tablica 704 00:31:37,430 --> 00:31:39,720 je da pokušava osigurati, u teorija, stalna pogledati 705 00:31:39,720 --> 00:31:42,890 puta, ali koristiti puno memorije. 706 00:31:42,890 --> 00:31:46,495 U redu, sad imamo nešto manje komplicirane strukture, 707 00:31:46,495 --> 00:31:49,640 i mi ćemo biti učinjeno s C, a mi ćemo premjestiti pravo zajedno. 708 00:31:49,640 --> 00:31:51,930 >> Dakle dimnjaka, vidjeli smo to U predavanju gdje ste 709 00:31:51,930 --> 00:31:55,020 nešto poput snop ladice gdje 710 00:31:55,020 --> 00:31:57,330 posljednja stvar koju ste stavili na stog se događa 711 00:31:57,330 --> 00:31:59,500 da bude prva stvar koju skinu. 712 00:31:59,500 --> 00:32:02,880 Dakle, to je ono što zapravo definira snop je da je posljednja stvar koju ste stavili na 713 00:32:02,880 --> 00:32:06,080 će biti prvi stvar koju skinu. 714 00:32:06,080 --> 00:32:09,279 A terminologija koje koriste Ako ćemo staviti nešto, 715 00:32:09,279 --> 00:32:12,070 Ako ćemo dodati nešto naš stack, zovemo to gura. 716 00:32:12,070 --> 00:32:14,970 A ako uzmemo nešto off, mi to zovemo iskakanje. 717 00:32:14,970 --> 00:32:17,080 A ako ćemo provesti hrpu, mi 718 00:32:17,080 --> 00:32:20,660 Morate biti sigurni da pratimo i veličinu i kapacitet. 719 00:32:20,660 --> 00:32:24,940 Dakle, ukupan broj elemenata možemo držite i trenutni broj elemenata 720 00:32:24,940 --> 00:32:27,880 da se drži. 721 00:32:27,880 --> 00:32:29,885 >> I vrlo slično, imamo redove. 722 00:32:29,885 --> 00:32:34,510 A jedina razlika je, umjesto s hrpama, 723 00:32:34,510 --> 00:32:37,630 mi je rekao posljednja stvar koju smo stavili na je prva stvar koju smo poletjeti. 724 00:32:37,630 --> 00:32:40,940 Tako je s redovima, Prva stvar koju smo stavili u 725 00:32:40,940 --> 00:32:43,129 će biti Prva stvar koju uzeti. 726 00:32:43,129 --> 00:32:45,420 Dakle, to je kao da ste zapravo podstava gore u trgovini 727 00:32:45,420 --> 00:32:48,140 i ti si se pomoglo, onda prva osoba u redu 728 00:32:48,140 --> 00:32:50,880 trebala biti prva osoba koja treba pomoći. 729 00:32:50,880 --> 00:32:52,220 Dakle, to bi bio red. 730 00:32:52,220 --> 00:32:55,880 >> Dakle, moramo pratiti veličina, kapacitet, a glava jer smo 731 00:32:55,880 --> 00:33:01,130 će poduzeti sve off sprijeda popisa umjesto leđa. 732 00:33:01,130 --> 00:33:03,480 Pitanja o tome? 733 00:33:03,480 --> 00:33:06,330 Bilo C pitanja koja su vas muči? 734 00:33:06,330 --> 00:33:09,590 Strukture podataka, bilo koji od zabave stvari? 735 00:33:09,590 --> 00:33:10,530 U redu, super. 736 00:33:10,530 --> 00:33:14,120 Dakle, ja ću ga predati Alison se skočiti u neko više programiranja. 737 00:33:14,120 --> 00:33:15,965 >> ALISON: Oh, vidjet ćemo. 738 00:33:15,965 --> 00:33:17,370 Vidjet ćemo koliko radim ovdje. 739 00:33:17,370 --> 00:33:21,410 OK, ja ću pokušati letjeti kroz ove stvari, dečki. 740 00:33:21,410 --> 00:33:24,540 Hannah je otišao vrlo u Dubina na sve njezine stvari. 741 00:33:24,540 --> 00:33:26,900 Ja ću pokušati dati ste brzi pregled eksplozije 742 00:33:26,900 --> 00:33:31,290 tako da možemo doći do Davin sa svim Zabavan JavaScript i sigurnosne stvari 743 00:33:31,290 --> 00:33:33,380 da možda zaista želim čuti više o tome. 744 00:33:33,380 --> 00:33:36,600 >> OK, što je Hannah rekla, ako imate bilo kakvih pitanja, 745 00:33:36,600 --> 00:33:39,170 Idem prebrzo, molim, javite mi. 746 00:33:39,170 --> 00:33:42,114 Ja ću odgovoriti na pitanja što je to potrebno. 747 00:33:42,114 --> 00:33:45,280 Pa za početak, mi ćemo početi s Vjerojatno jedna od prvih stvari 748 00:33:45,280 --> 00:33:48,730 ste naučili s weba programiranje, dozvole. 749 00:33:48,730 --> 00:33:52,720 Dakle, chmod, ti dečki bi trebali ste bili majstori u tome sa svim webu 750 00:33:52,720 --> 00:33:54,870 programiranje koje ste radili u zadnje vrijeme. 751 00:33:54,870 --> 00:33:57,320 To je zapravo samo naredbe koja mijenja dozvole 752 00:33:57,320 --> 00:34:00,779 ili pristup dozvole naših datotečni sustav objekata. 753 00:34:00,779 --> 00:34:02,570 Naravno, to je zapravo vidim to, ako ste 754 00:34:02,570 --> 00:34:04,910 ima bilo kakvih problema s tim Tijekom tvoj problem seta, 755 00:34:04,910 --> 00:34:11,460 možda ste koristili ls -l, koja je dugo, dobiti pogled vrsta kao što su to, 756 00:34:11,460 --> 00:34:14,209 gdje se zapravo vidi sve dozvole za datoteku. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> I doista, samo mi ćemo ići kroz vrlo brzo samo lijepa 759 00:34:20,732 --> 00:34:21,940 koliko ono što svaki od njih znači. 760 00:34:21,940 --> 00:34:24,481 Tako smo d ovdje, što samo stoji za imenik. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Očito ovdje, vidimo rwx, koji čitati, dijeljenim resursima, i izvršna. 763 00:34:31,739 --> 00:34:37,090 To također može biti prikazan kao bitova, što ćemo ući na sljedećoj stranici. 764 00:34:37,090 --> 00:34:40,699 Tako je svaki trijada koje smo vidjeli ovdje, tako da je tri trijade. 765 00:34:40,699 --> 00:34:48,120 Mi smo rwx, r ništa X i R ništa x za ovu prvu datoteku. 766 00:34:48,120 --> 00:34:49,690 To je to opća struktura. 767 00:34:49,690 --> 00:34:50,940 >> Dakle, imamo neke imenik. 768 00:34:50,940 --> 00:34:53,999 Imamo neke skupina korisnika s tim dozvolama. 769 00:34:53,999 --> 00:34:57,040 Neki grupa koja ima ove ovlasti, i svijet koji ima dozvolu. 770 00:34:57,040 --> 00:34:59,420 Možete razmišljati o ovome kao trijade. 771 00:34:59,420 --> 00:35:01,130 Možete misliti na to što su tri bita. 772 00:35:01,130 --> 00:35:04,060 Dakle, oni mogu držati vrijednosti bilo od 0 sve 773 00:35:04,060 --> 00:35:07,350 do 7, što je razlog zašto se ponekad imali smo vi chmod 774 00:35:07,350 --> 00:35:17,510 600 umjesto chmod RW god. 775 00:35:17,510 --> 00:35:19,170 Mi ćemo doći na primjer tamo. 776 00:35:19,170 --> 00:35:24,260 Ali zapravo, možete misliti od njih, kao ni samo rwx, 777 00:35:24,260 --> 00:35:28,520 ili možete razmišljati o njima kao neki Broj gdje je to prvi ovdje 778 00:35:28,520 --> 00:35:31,480 predstavlja broj između 0 i 7, ovaj drugi 779 00:35:31,480 --> 00:35:33,970 predstavlja broj između 0 i 7, a treći 780 00:35:33,970 --> 00:35:38,245 predstavlja broj između 0 i 7, u redu? 781 00:35:38,245 --> 00:35:42,700 >> r ima vrijednost 4. w ima vrijednost 2, a X 782 00:35:42,700 --> 00:35:49,230 ima vrijednost 1, što je razlog zašto ova dopuštenje ovdje će biti chmod 700. 783 00:35:49,230 --> 00:35:53,520 Budući da je u ovom slučaju ovdje, to mi govori su najprije malo tamo se upalio. 784 00:35:53,520 --> 00:35:55,380 Dakle, imamo 4 za čitanje. 785 00:35:55,380 --> 00:35:58,730 Druga bitna je upalio za W, što je 2, tako da sada imamo 6. 786 00:35:58,730 --> 00:36:02,070 I treća bitna je upalila za x, što je 1, tako da smo dobili sedam. 787 00:36:02,070 --> 00:36:04,820 I naravno, naša grupa i naš svijet svaki 0. 788 00:36:04,820 --> 00:36:07,770 Dakle, to je također ekvivalent chmod 700. 789 00:36:07,770 --> 00:36:12,081 I ja bi svakako pokušati razumjeti mapiranje između njih. 790 00:36:12,081 --> 00:36:14,080 Nisam siguran je li to ima doći na kviz prije, 791 00:36:14,080 --> 00:36:18,590 ali to će biti Pitanje koje sam mogao pitati. 792 00:36:18,590 --> 00:36:22,110 >> Samo malo ide čak dalje u chmod ovdje, ovdje 793 00:36:22,110 --> 00:36:27,730 je vrlo općenito struktura chmod poziva. 794 00:36:27,730 --> 00:36:29,500 Pa naravno, mi smo chmod ovdje. 795 00:36:29,500 --> 00:36:34,410 Reference, ono to se odnosi na to Tko smo mi daje te dozvole 796 00:36:34,410 --> 00:36:36,570 ili koji su mi da to Dozvole daleko od. 797 00:36:36,570 --> 00:36:44,330 Tako imamo ovdje u dozvolama, kao što smo dali ste chmod plus x, 798 00:36:44,330 --> 00:36:45,440 kao što ćemo uskoro vidjeti. 799 00:36:45,440 --> 00:36:48,460 samo znači daje to specifična Dozvole za sve. 800 00:36:48,460 --> 00:36:49,600 Dajte ih svima. 801 00:36:49,600 --> 00:36:55,370 Tako da bi mogao vrlo dobro u imati plus x ili g plus x ili o plus x ili višestruki 802 00:36:55,370 --> 00:36:55,870 istih. 803 00:36:55,870 --> 00:36:59,280 Tako da je prvi dio uvijek će biti reference. 804 00:36:59,280 --> 00:37:03,220 Tko smo mi daje te dozvole za, ili koji su mi ih oduzeti? 805 00:37:03,220 --> 00:37:04,850 >> Drugi je operater. 806 00:37:04,850 --> 00:37:07,350 Dakle, ti dečki su se uglavnom bavila plus. 807 00:37:07,350 --> 00:37:12,140 To daje dozvole tko ste ih daje, 808 00:37:12,140 --> 00:37:14,840 dok je minus, logično, uklanja ih. 809 00:37:14,840 --> 00:37:16,880 Dakle, ništa previše strašno tamo. 810 00:37:16,880 --> 00:37:23,060 A onda načina je ono što smo razgovarali o tome s čitanjem, pisanjem, odnosno izvršenja. 811 00:37:23,060 --> 00:37:29,070 Dakle, plus x znači dati izvršnu Dozvole za sve. 812 00:37:29,070 --> 00:37:33,430 I onda, naravno, na kojem posebna datoteka ili mapa. 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 Svatko dobar s chmod? 815 00:37:36,010 --> 00:37:37,850 Nije loše? 816 00:37:37,850 --> 00:37:42,417 >> U redu, tako da HTML, tko od vas su dovoljno stara to-- MySpace dob? 817 00:37:42,417 --> 00:37:44,750 Poslao sam to na moj dio, i doslovno pola ljudi 818 00:37:44,750 --> 00:37:45,790 Pogledao me kao da sam luda. 819 00:37:45,790 --> 00:37:47,498 I ja sam bio kao, dečki, nismo tako star. 820 00:37:47,498 --> 00:37:48,910 Hajde. 821 00:37:48,910 --> 00:37:53,360 Dakle HyperText Markup Language, to je iskreno samo način za vas 822 00:37:53,360 --> 00:37:57,990 prikazati neke stvari na webu. 823 00:37:57,990 --> 00:37:59,210 Dakle, to je jezik za označavanje. 824 00:37:59,210 --> 00:38:00,640 To nije skriptni jezik. 825 00:38:00,640 --> 00:38:02,160 Nema logike u njemu. 826 00:38:02,160 --> 00:38:05,710 To je jednostavno promijeniti Prikazuje se način nešto. 827 00:38:05,710 --> 00:38:07,670 U redu, tako da je važno Razlika napraviti. 828 00:38:07,670 --> 00:38:12,030 To se smatra Markup Language, Ne skriptni jezik. 829 00:38:12,030 --> 00:38:15,100 >> Dakle, ovdje imamo HTML tagove. 830 00:38:15,100 --> 00:38:20,390 Na ovom slajdu su vjerojatno većina oni koji bi trebali biti upoznati s 831 00:38:20,390 --> 00:38:22,390 i biti jako zadovoljni. 832 00:38:22,390 --> 00:38:25,700 Dakle, očito, imamo naša HTML tag, koji 833 00:38:25,700 --> 00:38:29,930 označava da je sve u Između ta dva će biti HTML. 834 00:38:29,930 --> 00:38:33,070 Imamo neku vezu koja Očito će vam dati 835 00:38:33,070 --> 00:38:34,990 link na vanjskim web stranice. 836 00:38:34,990 --> 00:38:37,520 Neki naslov, u našoj glavi ovdje. 837 00:38:37,520 --> 00:38:40,020 I mi imamo tijelo H1, što je zaglavlje, 838 00:38:40,020 --> 00:38:42,260 tako da ću to lijepo i hrabar i veći. 839 00:38:42,260 --> 00:38:46,040 A onda, imamo neke p, što je točka. 840 00:38:46,040 --> 00:38:49,000 Vjerojatno bi trebao znati i biti upoznati sa stvarima 841 00:38:49,000 --> 00:38:54,030 kao i kako ste umetnuli sliku, su Ima li kakvih drugih sabirnih klase? 842 00:38:54,030 --> 00:38:57,240 Ja bi svakako bilo ugodno div. 843 00:38:57,240 --> 00:39:00,840 Dakle, oni imaju većinu oznake koji bi trebali biti upoznati s. 844 00:39:00,840 --> 00:39:04,370 Ali, naravno, kao i sa svime što je u CS 50, popis nije konačan. 845 00:39:04,370 --> 00:39:08,200 Dakle, pazite da podsjete na to. 846 00:39:08,200 --> 00:39:13,260 >> CSS, pa CSS, ako bilo koji od vas gledati moj seminar od prije dva tjedna, 847 00:39:13,260 --> 00:39:16,250 je zapravo samo način stil svoje web stranice? 848 00:39:16,250 --> 00:39:18,950 U redu, tako da imamo neke markup jezik. 849 00:39:18,950 --> 00:39:23,220 HTML, koji vodi brigu o samo tekst i gdje bi to moglo biti na stranici. 850 00:39:23,220 --> 00:39:25,760 Ali CSS stvarno ono što ga čini prilično. 851 00:39:25,760 --> 00:39:30,690 Mogli su to u HTML datoteka, ali mi ćemo govoriti o kasnije, 852 00:39:30,690 --> 00:39:32,660 Prilično sam siguran da bi moglo se sljedeći slajd, to 853 00:39:32,660 --> 00:39:35,620 je uobičajena praksa, a zapravo praksa da smo stvarno potaknuti, 854 00:39:35,620 --> 00:39:40,670 za vas da bi ih razdvojili, kada smo govoriti o MVC i da cijeli paradigme. 855 00:39:40,670 --> 00:39:42,490 To je stvarno ono što ovaj uvlači. 856 00:39:42,490 --> 00:39:46,110 >> Dakle, CSS je samo način da se stvari izgledaju lijepo. 857 00:39:46,110 --> 00:39:50,500 Stvari su ovdje, kao što su Tijelo i #title i info, 858 00:39:50,500 --> 00:39:54,340 to se zove selektora i što oni se biraju određene stvari 859 00:39:54,340 --> 00:39:59,260 u HTML datoteke a primjenjuje se bez obzira na stil, 860 00:39:59,260 --> 00:40:04,090 god vrsta stvari koje želite, na taj određeni element vašeg web 861 00:40:04,090 --> 00:40:04,590 stranica. 862 00:40:04,590 --> 00:40:08,820 Dakle ovdje imamo boja pozadine i boja 863 00:40:08,820 --> 00:40:12,450 i font obitelj koja je se primjenjuje na sve što je u tijelu. 864 00:40:12,450 --> 00:40:15,530 Dakle, ako smo gledali ovamo, to ne bi se primjenjivala na naslov. 865 00:40:15,530 --> 00:40:22,340 To bi se primjenjivati ​​samo na ono što je u tim tjelesnim selektora, u redu? 866 00:40:22,340 --> 00:40:25,250 >> Uz naslov ovdje, ovo je će biti ista stvar, 867 00:40:25,250 --> 00:40:28,410 Boja teksta biti plava ide samo 868 00:40:28,410 --> 00:40:33,870 utjecati na ono što je unutar Naslovne selektora. 869 00:40:33,870 --> 00:40:36,580 Kao i info ovdje, Tekst će biti ružičasta, 870 00:40:36,580 --> 00:40:38,600 bilo je info, što je upravo ovdje. 871 00:40:38,600 --> 00:40:40,860 Dakle, jedina stvar koja će biti ružičasta na ovoj stranici 872 00:40:40,860 --> 00:40:44,100 je datum, ponedjeljak, 17. studeni, 2014. 873 00:40:44,100 --> 00:40:48,770 U redu, tako da CSS je samo način da se imaju veću kontrolu over-- Da? 874 00:40:48,770 --> 00:40:51,850 >> PUBLIKA: Zašto ste upotrijebite mljeveno meso s naslovom? 875 00:40:51,850 --> 00:40:55,170 >> Hannah: Sljedeći Slide, obećavam! 876 00:40:55,170 --> 00:40:56,810 Mi ćemo doći. 877 00:40:56,810 --> 00:40:59,830 Dakle, to je razlog zašto moramo koristiti mljeveno meso. 878 00:40:59,830 --> 00:41:03,429 Dakle, selektori se na tri glavna forme koje smo razgovarati s vama momci oko. 879 00:41:03,429 --> 00:41:05,595 I fyou želite saznati više, ima dosta vani. 880 00:41:05,595 --> 00:41:07,540 Postoji velika CSS dokumentaciju. 881 00:41:07,540 --> 00:41:12,680 Tu je naziv oznake, što mora učiniti samo s normalnim oznake u HTML. 882 00:41:12,680 --> 00:41:17,210 Dakle, H1, p, DIV, H2, ti svašta. 883 00:41:17,210 --> 00:41:20,320 A mi samo možemo nazvati one što je. 884 00:41:20,320 --> 00:41:22,650 Dakle, kao što vidimo ovdje Tijelo, to je normalno oznaka. 885 00:41:22,650 --> 00:41:26,660 Dakle, možemo samo staviti tijelo kada govorimo u našoj CSS datoteci. 886 00:41:26,660 --> 00:41:29,730 >> Uz naslov, cijeli razloga smo ima to mljeveno meso je imamo ono što je 887 00:41:29,730 --> 00:41:31,010 smatra ID. 888 00:41:31,010 --> 00:41:35,400 Dakle, ID je uvijek trebao biti Jedinstvena unutar HTML stranice 889 00:41:35,400 --> 00:41:37,930 tako da kada ste koji se odnosi na njega, što 890 00:41:37,930 --> 00:41:41,990 znam da ste samo govori na jednu određenu stvar. 891 00:41:41,990 --> 00:41:46,270 Dakle, u ovom slučaju ovdje, s našim H1 ovdje, CS 50 pregleda sjednici, 892 00:41:46,270 --> 00:41:47,810 imamo ID naslov. 893 00:41:47,810 --> 00:41:54,280 Dakle, da bi se samo odnosi na to dio našeg HTML, mi hash naslov. 894 00:41:54,280 --> 00:41:58,080 Samo konvenciji, iskaznice su označeni s hash ispred njih. 895 00:41:58,080 --> 00:42:01,650 Na isti način, možemo vidjeti info ovdje klase. 896 00:42:01,650 --> 00:42:06,070 I tako klase s CSS označen je kao dot klasu 897 00:42:06,070 --> 00:42:08,895 ili dot god da je klasa. 898 00:42:08,895 --> 00:42:10,850 Dakle, u ovom slučaju ovdje, to je info. 899 00:42:10,850 --> 00:42:13,090 >> Zato sam ga uzeti natrag. 900 00:42:13,090 --> 00:42:16,200 Oba ova bi pink naše CSS ovdje 901 00:42:16,200 --> 00:42:18,430 jer obojica imaju klasu info. 902 00:42:18,430 --> 00:42:23,070 I u našem CSS datoteku, imamo određen da je sve u klasi info 903 00:42:23,070 --> 00:42:24,120 mora biti ružičasta. 904 00:42:24,120 --> 00:42:25,968 Je li to smisla? 905 00:42:25,968 --> 00:42:27,435 Da? 906 00:42:27,435 --> 00:42:30,731 >> PUBLIKA: Ako ste bili napraviti sve u tijelu bijela, 907 00:42:30,731 --> 00:42:32,814 i onda pokušati napraviti nešto u njemu plavo, 908 00:42:32,814 --> 00:42:34,770 bi da je uzrok problema? 909 00:42:34,770 --> 00:42:37,310 >> Hannah: Pa CSS kaskadno style sheets. 910 00:42:37,310 --> 00:42:40,730 Dakle, ono što je prema Dno će imati prednost. 911 00:42:40,730 --> 00:42:44,080 Dakle, ako ste učiniti nešto sa tijelom, i učiniti sve što je bijelo, 912 00:42:44,080 --> 00:42:49,300 a onda kasnije promijenite naslov ili promijenite tekst u tijelu, 913 00:42:49,300 --> 00:42:50,560 prebrisati to. 914 00:42:50,560 --> 00:42:55,360 Dakle, ništa prema Dno će imati prednost. 915 00:42:55,360 --> 00:42:56,730 Da? 916 00:42:56,730 --> 00:42:59,627 >> Publika: i IDS su jedinstveni, ali nastava može biti više? 917 00:42:59,627 --> 00:43:00,210 Hannah: Tako je. 918 00:43:00,210 --> 00:43:06,320 Dakle iskaznice trebaju biti jedinstveni, a nastava može odnose se na što više stvari kao što želite. 919 00:43:06,320 --> 00:43:07,580 Ima li još pitanja? 920 00:43:07,580 --> 00:43:09,800 Da. 921 00:43:09,800 --> 00:43:11,210 >> PUBLIKA: [nečujan]. 922 00:43:11,210 --> 00:43:13,509 Pitam se je li koji čini razliku. 923 00:43:13,509 --> 00:43:15,217 Hannah: Žao mi je, ono što je bilo pitanje? 924 00:43:15,217 --> 00:43:18,960 PUBLIKA: Postoji mala "F" i kapitalne "F." 925 00:43:18,960 --> 00:43:21,440 Hannah: Pa razlika između malog "F" i kapitala "F" 926 00:43:21,440 --> 00:43:22,606 Ne bi trebalo napraviti razliku. 927 00:43:22,606 --> 00:43:26,330 Dakle, "F" će biti 15 ili način. 928 00:43:26,330 --> 00:43:28,130 Cool, bilo što drugo? 929 00:43:28,130 --> 00:43:29,930 Svatko dobro, CSS? 930 00:43:29,930 --> 00:43:30,850 Da? 931 00:43:30,850 --> 00:43:31,790 >> PUBLIKA: Žao mi je. 932 00:43:31,790 --> 00:43:35,550 Mogu li imati klasu i ID? 933 00:43:35,550 --> 00:43:38,030 >> Hannah: Da, možete. 934 00:43:38,030 --> 00:43:40,420 Stvari mogu imati i klasa i ID. 935 00:43:40,420 --> 00:43:44,670 I ja visoko preporučiti testiranje to na svoju vlastitu. 936 00:43:44,670 --> 00:43:50,480 CSS ćete najbolje uče samo što nešto, vrlo jednostavna web stranica, 937 00:43:50,480 --> 00:43:53,440 izrada neke CSS, i jednostavno vidim kako su u interakciji. 938 00:43:53,440 --> 00:43:56,970 A vi ćete dobiti vrlo dobar, intuitivan osjećaj za to kako se to radi. 939 00:43:56,970 --> 00:43:58,810 >> OK, svi su dobri s CSS? 940 00:43:58,810 --> 00:44:01,280 Ti si sve ide kako bi prekrasne web stranice s CSS sada. 941 00:44:01,280 --> 00:44:05,460 OK, najbolje prakse, upravo stvari koje treba imati na umu, stvari 942 00:44:05,460 --> 00:44:09,810 that-- to je razlog zašto smo pristati što za dizajnera i sitnica. 943 00:44:09,810 --> 00:44:11,820 Dakle, zatvoriti sve svoje HTML tagove. 944 00:44:11,820 --> 00:44:14,840 Dakle, ako ste na tijelo, Tu bi trebao biti blizu tijela. 945 00:44:14,840 --> 00:44:18,180 Ako imate otvorenu stavku, Tu bi trebao biti blizu stav. 946 00:44:18,180 --> 00:44:19,555 Provjerite je li stranica potvrđuje. 947 00:44:19,555 --> 00:44:23,330 Vi dečki trebali biti dobro upoznati s tim od p-set sedam 948 00:44:23,330 --> 00:44:26,350 s CS 50 financije s W3 validator. 949 00:44:26,350 --> 00:44:28,340 I kao što sam rekao prije, jedan od naših velikih paradigmi 950 00:44:28,340 --> 00:44:33,780 je odvajanje svoj stil sa CSS iz svog maržu, što je HTML. 951 00:44:33,780 --> 00:44:36,900 I onda, naravno, imamo Ovaj veliki xkcd ovdje. 952 00:44:36,900 --> 00:44:38,280 Yay, strip olakšanje! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Između njih i HTTP, zapravo su oba protokola. 955 00:44:44,650 --> 00:44:46,810 Dakle, vi samo mogao misliti od njih kao skup pravila 956 00:44:46,810 --> 00:44:50,110 koji upravlja načinom stvari kretati preko interneta. 957 00:44:50,110 --> 00:44:53,410 Dakle, kontrola mjenjača Protokol, ili internet protokol, 958 00:44:53,410 --> 00:44:57,280 je samo način kako bi bili sigurni da su podaci dobiva gdje će 959 00:44:57,280 --> 00:45:00,030 i da znamo, ako smo ikada nedostaju podaci. 960 00:45:00,030 --> 00:45:03,520 Dakle, ako vi mislite natrag na predavanje Prije nekoliko tjedana s Davidom 961 00:45:03,520 --> 00:45:06,980 gdje smo imali četiri koverte, oni Svi su bili numerirani kao jedan od četiri, 962 00:45:06,980 --> 00:45:11,300 dva od četiri, tri od četiri, četiri četiri, to je samo skup pravila. 963 00:45:11,300 --> 00:45:13,830 Rekli smo, u redu, kad god smo slanje više od jednog paketa, 964 00:45:13,830 --> 00:45:16,610 idemo na broj je s onim što je broj 965 00:45:16,610 --> 00:45:19,040 i koliko ukupno da Korisnik trebao dobiti. 966 00:45:19,040 --> 00:45:22,540 >> I to samo govori tko prima podatke da li su 967 00:45:22,540 --> 00:45:26,120 dobivši sve ili ako nešto izgubio na putu. 968 00:45:26,120 --> 00:45:28,840 A što im je potrebno da se ponovno pitati za to. 969 00:45:28,840 --> 00:45:31,140 To je zapravo samo skup pravila. 970 00:45:31,140 --> 00:45:33,650 Tako možete misliti na to, u redu? 971 00:45:33,650 --> 00:45:37,700 I također, to navodi u luku, što vi can-- Znam tijekom predavanja, 972 00:45:37,700 --> 00:45:39,170 imali su cijeli popis luka. 973 00:45:39,170 --> 00:45:41,630 Ali mi ih ne morate ovdje upravo sada. 974 00:45:41,630 --> 00:45:45,290 >> Dakle, hipertekst protokol za prijenos je, opet, to je još jedan protokol. 975 00:45:45,290 --> 00:45:48,630 Dakle, to je još jedan skup pravila da upravlja, u ovom slučaju, 976 00:45:48,630 --> 00:45:51,130 Kako hipertekst se prenosi. 977 00:45:51,130 --> 00:45:54,340 Dakle, to je samo omogućuje preglednike razgovarati s web poslužitelja. 978 00:45:54,340 --> 00:45:56,910 I kao što smo rekli ovdje, to je kao što je ljudsko rukovanjem. 979 00:45:56,910 --> 00:46:00,480 To je samo način da se upravlja Kako web poslužitelj 980 00:46:00,480 --> 00:46:02,690 ide za interakciju s preglednikom. 981 00:46:02,690 --> 00:46:05,660 I mi smo samo nekoliko primjera. 982 00:46:05,660 --> 00:46:09,100 Mi imamo neke zahtjeve ovdje gdje dobili je metoda. 983 00:46:09,100 --> 00:46:13,760 Imamo HTTP 1.1, što je protokol verzija za nas. 984 00:46:13,760 --> 00:46:17,230 A onda, domaćin, koji je ono mi zapravo pokušavamo pristupiti. 985 00:46:17,230 --> 00:46:21,800 A onda, kao što vidite ovdje, mi dobiti neki odgovor s ovim 200 986 00:46:21,800 --> 00:46:25,032 OK, kao naš HTTP odgovora koda. 987 00:46:25,032 --> 00:46:27,240 Imamo veliki popis idem povući se u jednoj sekundi 988 00:46:27,240 --> 00:46:29,430 da ti dečki bi trebali biti upoznati s. 989 00:46:29,430 --> 00:46:35,750 I mi imamo tu vrstu sadržaja tekst / HTML, koji je samo rekao ono što tip podataka 990 00:46:35,750 --> 00:46:39,990 su mi primanja od poslužitelja, u redu? 991 00:46:39,990 --> 00:46:44,230 To domaćin i ovu vrstu sadržaja su dio HTTP zaglavlja. 992 00:46:44,230 --> 00:46:49,610 Možete imati malo ili onoliko malo koliko potrebne za kontekstu što 993 00:46:49,610 --> 00:46:50,580 ste se bave. 994 00:46:50,580 --> 00:46:53,371 Ponekad ćete imati puno Informacije dolaze iz vašeg poslužitelja. 995 00:46:53,371 --> 00:46:56,040 Možda oni traži puno informacija od korisnika. 996 00:46:56,040 --> 00:46:57,600 To varira ovisno o kontekstu. 997 00:46:57,600 --> 00:47:01,144 Ako pogledate CS 50 studija, Tu je mnogo više o tome. 998 00:47:01,144 --> 00:47:03,060 No, imamo puno dobiti putem, tako da idem 999 00:47:03,060 --> 00:47:05,760 ići naprijed, ako to je u redu s vama? 1000 00:47:05,760 --> 00:47:07,960 Cool. 1001 00:47:07,960 --> 00:47:08,460 Držite se. 1002 00:47:08,460 --> 00:47:11,182 I svakako se da je Cijeli popis of-- ha! 1003 00:47:11,182 --> 00:47:13,140 Ne znam zašto je to sve ovdje. 1004 00:47:13,140 --> 00:47:15,660 Mislio sam da sam doslovno preselio ga dok sam bio sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> DAVIN: Želite li ga podučavati? 1006 00:47:16,540 --> 00:47:17,420 Ili želiš da ga naučiti? 1007 00:47:17,420 --> 00:47:20,010 >> PUBLIKA: Mislio sam da bismo mogli ih samo pokazati za početak. 1008 00:47:20,010 --> 00:47:22,210 Mislim, možete otići u ih još, ali ja 1009 00:47:22,210 --> 00:47:26,030 Mislio je napravio više smisla, jer ja bio samo govori o HTTP statusa. 1010 00:47:26,030 --> 00:47:28,200 Dakle, ovdje je cijeli popis. 1011 00:47:28,200 --> 00:47:31,730 Mislim da ono što će se dogoditi je Davin će ići u njih kasnije. 1012 00:47:31,730 --> 00:47:35,330 No, tu je cijeli popis, Pregled okusa koje dolaze. 1013 00:47:35,330 --> 00:47:41,640 OK, idemo blow-- to ide da se PHP ubrzani tečaj kao nitko drugi. 1014 00:47:41,640 --> 00:47:44,874 >> Dakle PHP, hipertekst Preprocessor, to je rekurzivna backronym, 1015 00:47:44,874 --> 00:47:46,540 što znači da se zove nešto drugo. 1016 00:47:46,540 --> 00:47:49,050 A onda su bili kao, to zapravo ne smisla. 1017 00:47:49,050 --> 00:47:52,210 Dakle, oni jednostavno nazvali it-- i to je skraćenica, 1018 00:47:52,210 --> 00:47:54,840 tako da samo to PHP napravio Hypertext Preprocessor, koji 1019 00:47:54,840 --> 00:47:55,980 Samo nema smisla. 1020 00:47:55,980 --> 00:47:57,714 Zabava priča. 1021 00:47:57,714 --> 00:47:58,880 To je programski jezik. 1022 00:47:58,880 --> 00:48:02,360 Dakle, koliko sam naglasiti da HTML nije programski jezik, 1023 00:48:02,360 --> 00:48:05,350 to je jezik za označavanje, PHP je programski jezik. 1024 00:48:05,350 --> 00:48:07,422 Kako znaš ovo jer nema logike. 1025 00:48:07,422 --> 00:48:08,380 Postoji uvjetne. 1026 00:48:08,380 --> 00:48:12,750 Imamo varijable, dok smo mi nemaju ništa od tih stvari u HTML. 1027 00:48:12,750 --> 00:48:16,960 >> U redu, onda imamo ovo malo malo ovdje da je kao okus PHP. 1028 00:48:16,960 --> 00:48:20,510 Tako osnove, varijabilni imena početi s znak za dolar. 1029 00:48:20,510 --> 00:48:21,500 Mnogo ljudi poput njega. 1030 00:48:21,500 --> 00:48:22,371 Podsjeća od nas novac. 1031 00:48:22,371 --> 00:48:22,995 To je sve super. 1032 00:48:22,995 --> 00:48:25,280 Svi mi želimo PHP. 1033 00:48:25,280 --> 00:48:28,020 Dakle, mi ne odredite varijable tipa više. 1034 00:48:28,020 --> 00:48:29,995 To se određuje vrijeme izvođenja. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 Tumač će biti kao što je, Oh, samo ćemo pokrenuti kroz, 1037 00:48:35,890 --> 00:48:39,565 i ovisno o kontekstu, Vidjet ćemo što vrste tipova 1038 00:48:39,565 --> 00:48:41,560 te varijable moraju imati. 1039 00:48:41,560 --> 00:48:42,815 Nema glavna funkcija. 1040 00:48:42,815 --> 00:48:43,690 Stvari će se samo pokrenuti. 1041 00:48:43,690 --> 00:48:47,851 Vi dečki sa svojim uvoz u svoje Posljednji p-set, vi ćete primijetiti. 1042 00:48:47,851 --> 00:48:49,350 Nije bilo zapravo glavna funkcija. 1043 00:48:49,350 --> 00:48:52,070 Vi samo napisao ono ste htjeli da se dogodi. 1044 00:48:52,070 --> 00:48:53,280 I to samo vrsta dogodilo. 1045 00:48:53,280 --> 00:48:56,760 Dakle, to je PHP za vas. 1046 00:48:56,760 --> 00:48:59,180 >> Nizovi su vrlo slični. 1047 00:48:59,180 --> 00:49:01,270 Mi još uvijek imamo ovaj nosač. 1048 00:49:01,270 --> 00:49:05,940 Evo, imamo neke varijable zove ARR, a to je jednako 1049 00:49:05,940 --> 00:49:08,540 to-- mi imamo normalno Nosač zapis. 1050 00:49:08,540 --> 00:49:10,630 I mi imamo neke ključne vrijednosti. 1051 00:49:10,630 --> 00:49:14,630 A velika razlika između C i PHP polja 1052 00:49:14,630 --> 00:49:19,330 je da možemo imati taj associate-- možemo povezati vrijednosti ključeva. 1053 00:49:19,330 --> 00:49:22,440 Dakle, umjesto da samo ima niz koji je indeksiran 1054 00:49:22,440 --> 00:49:26,630 od broja ili pozicije tog elementa u nizu, 1055 00:49:26,630 --> 00:49:29,060 zapravo možemo ga povezati s ključem. 1056 00:49:29,060 --> 00:49:36,700 Gdje možemo reći, u redu, želim god vrijednost povezana s voćem. 1057 00:49:36,700 --> 00:49:39,280 A možda smo voća otišao u banani. 1058 00:49:39,280 --> 00:49:41,760 Tako da bih se vratiti bananu na nas. 1059 00:49:41,760 --> 00:49:44,100 >> No, u osnovi, većina moćna stvar o tome 1060 00:49:44,100 --> 00:49:47,960 je da, ako ti dečki ne zaboravite DEMO od predavanja gdje smo zapravo 1061 00:49:47,960 --> 00:49:53,050 ispočetka napisao bukvar u PHP-u, i to was-- pretraživanje je zapravo samo htjeli, 1062 00:49:53,050 --> 00:49:55,007 to ključ postoji? 1063 00:49:55,007 --> 00:49:56,590 To je zapravo vrsta moći njega. 1064 00:49:56,590 --> 00:49:58,560 Vi ne morate ponoviti kroz niz. 1065 00:49:58,560 --> 00:50:00,311 Ne trebate znati ono Prostor je u. 1066 00:50:00,311 --> 00:50:01,976 To bi moglo biti na kraju ili na početku. 1067 00:50:01,976 --> 00:50:04,790 Dokle god znate ključ koja je povezana s vrijednošću, 1068 00:50:04,790 --> 00:50:09,740 PHP mogu samo pljuvati tu vrijednost vraćam se na tebe, u redu? 1069 00:50:09,740 --> 00:50:12,960 >> A onda, također samo imaju samo zato što 1070 00:50:12,960 --> 00:50:16,750 može imati ključne parova vrijednosti ne znači da morate. 1071 00:50:16,750 --> 00:50:19,180 Također možete jednostavno stvoriti Normalno niz kao ovdje, 1072 00:50:19,180 --> 00:50:21,540 pri dnu, u kojem je Samo jedan, dva, tri, četiri. 1073 00:50:21,540 --> 00:50:22,510 Oni su naše vrijednosti. 1074 00:50:22,510 --> 00:50:25,320 A u stvari, njihove tipke su indeksi. 1075 00:50:25,320 --> 00:50:26,830 Dakle, ključ za jedan će biti nula. 1076 00:50:26,830 --> 00:50:28,610 Ključ za dvoje će biti jedno. 1077 00:50:28,610 --> 00:50:31,910 Tako dalje i tako dalje, osim ako što izričito dodijeliti ključ, 1078 00:50:31,910 --> 00:50:34,630 možete pretpostaviti da Vrijednost je samo njihov indeks. 1079 00:50:34,630 --> 00:50:37,290 Znači li to da smisla svima? 1080 00:50:37,290 --> 00:50:38,070 Nema pitanja? 1081 00:50:38,070 --> 00:50:38,930 Awesome. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach je način ponoviti kroz polja. 1083 00:50:44,420 --> 00:50:47,490 Dakle, imamo nešto ovdje, Samo opća struktura. 1084 00:50:47,490 --> 00:50:51,020 Dakle foreach, naziv naš niz, kao što je bilo 1085 00:50:51,020 --> 00:50:53,930 želite nazvati svaki element u svom polju, 1086 00:50:53,930 --> 00:50:57,270 i možemo napraviti nešto s taj element ili s tom vrijednošću. 1087 00:50:57,270 --> 00:50:58,680 Tako imamo primjer ovdje. 1088 00:50:58,680 --> 00:51:05,770 Imamo asocijativne Niz s ove dvije stavke 1089 00:51:05,770 --> 00:51:10,080 s bar se povezuje s foo i qux se povezuje s Baz. 1090 00:51:10,080 --> 00:51:12,180 Dakle, tipke su foo i Baz. 1091 00:51:12,180 --> 00:51:13,650 Vrijednosti su bar i qux. 1092 00:51:13,650 --> 00:51:18,560 Dakle foreach, imamo niz Ovdje, kao temeljna vrijednost paru. 1093 00:51:18,560 --> 00:51:21,560 To nam omogućuje da pristup i ključ i vrijednost. 1094 00:51:21,560 --> 00:51:23,680 Možda samo želite vrijednosti, u kojem slučaju 1095 00:51:23,680 --> 00:51:27,640 možete jednostavno napraviti kao ARR kao $ vrijednost, a onda 1096 00:51:27,640 --> 00:51:30,640 samo pristup vrijednost kao što ponoviti kroz. 1097 00:51:30,640 --> 00:51:32,600 No, možda, za neke Razlog, što želite ključ, 1098 00:51:32,600 --> 00:51:35,460 što je razlog zašto sam izabrao ovaj primjer, umjesto. 1099 00:51:35,460 --> 00:51:40,240 Dakle, što zapravo može manipulirati ključ i vrijednost u ovom slučaju. 1100 00:51:40,240 --> 00:51:41,070 OK? 1101 00:51:41,070 --> 00:51:41,905 Pitanje? 1102 00:51:41,905 --> 00:51:44,279 >> PUBLIKA: Ako ste htjeli Samo manipulirati ključ, bi 1103 00:51:44,279 --> 00:51:45,910 morate učiniti foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: Tako je. 1105 00:51:47,360 --> 00:51:50,560 Dakle, ako ste htjeli manipuliraju samo ključ, 1106 00:51:50,560 --> 00:51:53,680 ti bi i dalje potrebna ova sintaksa, jer ako se samo 1107 00:51:53,680 --> 00:51:56,930 imaju ARR kao nešto, kao prvo, to je 1108 00:51:56,930 --> 00:52:00,070 će preuzeti želite vrijednost, a ne ključ. 1109 00:52:00,070 --> 00:52:06,780 Dakle, ako ste ikada samo kao ARR kako je, možda je to kao $ elementa, 1110 00:52:06,780 --> 00:52:11,670 to će pretpostaviti da tražiš za samo vrijednosti u svakoj točki. 1111 00:52:11,670 --> 00:52:13,879 Ako ste izričito želite učiniti nešto s ključem, 1112 00:52:13,879 --> 00:52:16,170 čak i ako ne ide na ništa s vrijednošću, 1113 00:52:16,170 --> 00:52:18,430 trebate tu strukturu da imamo ovdje 1114 00:52:18,430 --> 00:52:22,330 gdje ste izričito traži i za ključ i vrijednosti. 1115 00:52:22,330 --> 00:52:24,170 Veliko pitanje. 1116 00:52:24,170 --> 00:52:25,940 Bilo što drugo? 1117 00:52:25,940 --> 00:52:27,490 Cool. 1118 00:52:27,490 --> 00:52:29,911 >> U redu, PHP i HTML. 1119 00:52:29,911 --> 00:52:31,410 Oh, vratili smo se p-set sedam ponovo. 1120 00:52:31,410 --> 00:52:35,380 Dakle, to bi trebalo izgledati malo poznato. 1121 00:52:35,380 --> 00:52:41,760 Dakle, to je neki jednostavni HTML oblik koji ima ulazni ime Hello. 1122 00:52:41,760 --> 00:52:43,820 I vidimo da imamo način dobiti. 1123 00:52:43,820 --> 00:52:47,430 A ako se sjećate iz našeg p-set, kada je ovaj obrazac podnosi, 1124 00:52:47,430 --> 00:52:58,130 šalje niz zove $ _GET da ima svih tih ulaza ili varijabli iz 1125 00:52:58,130 --> 00:53:00,490 oblik koji bi trebao biti manipulirati u našem PHP. 1126 00:53:00,490 --> 00:53:03,320 Dakle, u ovom slučaju, korisnik će staviti u svoje ime. 1127 00:53:03,320 --> 00:53:04,370 Oni su predati ga. 1128 00:53:04,370 --> 00:53:07,810 I vidimo da smo dobili neki niz ovdje. 1129 00:53:07,810 --> 00:53:09,080 Mi imamo GET niz. 1130 00:53:09,080 --> 00:53:11,510 I mi se pristup naziva. 1131 00:53:11,510 --> 00:53:15,070 >> Tako da je, kaže, u redu, daj mi vrijednost koja je povezana s imenom, 1132 00:53:15,070 --> 00:53:16,550 ime biti ključ ovdje. 1133 00:53:16,550 --> 00:53:21,400 I da mapira izravno ono mi je rekao naš ulaz je ime. 1134 00:53:21,400 --> 00:53:28,960 Dakle, to je što vam ključ ono će biti u vašoj niz ovdje. 1135 00:53:28,960 --> 00:53:31,220 Znači li to da smisla svima? 1136 00:53:31,220 --> 00:53:32,070 Da? 1137 00:53:32,070 --> 00:53:36,240 >> PUBLIKA: Da li ime u GET odnose do ljubičaste linije na [nečujan]? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: To se odnosi na ovo ovdje. 1139 00:53:37,740 --> 00:53:43,840 Dakle, ovo polje upravo ovdje, to se odnosi na ovo ime ovdje. 1140 00:53:43,840 --> 00:53:47,800 Dakle, to bi moglo da se zove kao što su broj telefona, ili bilo što drugo. 1141 00:53:47,800 --> 00:53:51,790 To ime zapravo govori, što Zovete li ovo polje? 1142 00:53:51,790 --> 00:53:53,600 Kako ćete odnose se na ovom području? 1143 00:53:53,600 --> 00:53:57,670 I to ime je zapravo sviđa, da smo rekavši ovo polje se zove imenom. 1144 00:53:57,670 --> 00:53:59,224 Tako ćemo pristupiti. 1145 00:53:59,224 --> 00:54:02,070 >> PUBLIKA: Tako se to sviđa, Naziv ulaza iznosi Bob, and-- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: Dobro, onda ste bi dobili Bob dolje. 1147 00:54:04,380 --> 00:54:06,090 Točno. 1148 00:54:06,090 --> 00:54:07,800 Svatko cool? 1149 00:54:07,800 --> 00:54:10,990 U redu, tako da se u odnosu na radno mjesto, to su dva glavna načina 1150 00:54:10,990 --> 00:54:14,880 koje prolaze podatke u HTTP zahtjev. 1151 00:54:14,880 --> 00:54:17,370 Vi dečki trebali smo vidjeli oba ova nadamo. 1152 00:54:17,370 --> 00:54:20,940 Dakle, s dobiti, informacijama prolazi kroz URL. 1153 00:54:20,940 --> 00:54:23,490 Dakle, ako ste ikada učiniti Googleu pretraga, YouTube, vi ćete 1154 00:54:23,490 --> 00:54:25,130 vjerojatno primijetiti neke upitnik. 1155 00:54:25,130 --> 00:54:28,230 A onda, sve riječi da li samo staviti tamo. 1156 00:54:28,230 --> 00:54:31,410 I POST prelazi podatke u tijelu HTTP poruke. 1157 00:54:31,410 --> 00:54:36,922 Pa za razliku od GET, koju vrstu uzeti u obzir da podaci skrivena od korisnika. 1158 00:54:36,922 --> 00:54:38,630 No, ono što je stvarno važno razumjeti 1159 00:54:38,630 --> 00:54:44,040 je da je to još uvijek baš kao što je nesigurno i dobiti. 1160 00:54:44,040 --> 00:54:48,780 Analogija Volim koristiti je li imate broj bankovnog računa 1161 00:54:48,780 --> 00:54:52,795 a ti ga napisati na vanjskoj strani omotnice, to je prilično nesiguran. 1162 00:54:52,795 --> 00:54:55,920 Ako ste bili na to napisati na komad papir i stavio ga u omotnicu, 1163 00:54:55,920 --> 00:54:58,850 to je još uvijek jako nesigurna zbog sve što morate učiniti je otvoriti da se 1164 00:54:58,850 --> 00:55:03,480 i pogled na stvarni sadržaj poruke da se vidi da. 1165 00:55:03,480 --> 00:55:08,310 Dakle, ovo je "skriveni", a ljudi vole mislim da je sigurno, ali to stvarno nije. 1166 00:55:08,310 --> 00:55:11,000 A siguran sam da će Davin ući da je više, možda. 1167 00:55:11,000 --> 00:55:12,850 No, to je važno Razlika napraviti 1168 00:55:12,850 --> 00:55:15,820 i nešto jako dobro razumjeti. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Sve stvari koje vidjeli smo kako je nedavno! 1171 00:55:22,220 --> 00:55:25,400 Tako je to u osnovi je samo namijenjen, Očito, za upravljanje podacima. 1172 00:55:25,400 --> 00:55:30,560 Ti dečki imali puno iskustva s to u tablicama s PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 A tu su i četiri zajedničke upiti da želimo da znate. 1174 00:55:34,100 --> 00:55:37,304 Dakle, postoji ažuriranje, umetnuti, odabir i brisanje. 1175 00:55:37,304 --> 00:55:38,970 Tako bi bili sigurni da znate oni jako dobro. 1176 00:55:38,970 --> 00:55:40,960 Mi ćemo ići kroz njih jako brzo. 1177 00:55:40,960 --> 00:55:44,340 >> Dakle ažuriranje, doista, kao što je možda mislite da ne, 1178 00:55:44,340 --> 00:55:46,740 to samo ažurira podatke u bazi podataka. 1179 00:55:46,740 --> 00:55:48,750 Dakle, imamo neke primjere ovdje. 1180 00:55:48,750 --> 00:55:53,310 To je opći Struktura ažuriranja upit. 1181 00:55:53,310 --> 00:55:56,150 Tako ažuriramo tablicu da govorimo o tome. 1182 00:55:56,150 --> 00:56:00,520 I želimo postaviti određena vrijednosti, određene kolumne 1183 00:56:00,520 --> 00:56:02,600 jednaka određenim vrijednostima. 1184 00:56:02,600 --> 00:56:07,500 Dakle, to samo ažurira tablicu, mijenjanje vrijednosti u svim redovima u ovom slučaju. 1185 00:56:07,500 --> 00:56:13,690 Dakle, u tom jednom ovdje, stvarna Primjer imamo insert-- žao. 1186 00:56:13,690 --> 00:56:17,630 To slide napredne bez mene to realizirati. 1187 00:56:17,630 --> 00:56:22,230 >> Dakle, ovo ažuriranje tablica postavljena Col1 jednaka da VAL1 gdje kuća jednaka "Currier." 1188 00:56:22,230 --> 00:56:25,300 Što ovo radi je samo mijenja, to je samo 1189 00:56:25,300 --> 00:56:28,130 ažurira ove vrijednosti u pojedinim mjestima. 1190 00:56:28,130 --> 00:56:32,300 Dakle, u ovom prvom, mijenja to Vrijednosti za sve što je u vašoj tablici, 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 To će se promijeniti to stup za svakog pojedinog upisa, 1193 00:56:35,820 --> 00:56:37,020 za svaki redak. 1194 00:56:37,020 --> 00:56:40,840 Ali to gdje ste mogli mislim da je to kao kvalifikacijama. 1195 00:56:40,840 --> 00:56:44,020 Dakle, to je samo neće promijeniti je u vrlo specifičnim mjestima. 1196 00:56:44,020 --> 00:56:47,840 Tako je u p-set sedam, kad vas Možda ažurirani količinu novca 1197 00:56:47,840 --> 00:56:53,050 da je vaš korisnički imala, vjerojatno je imao Neki kojoj ID jednaka ID sesije, zar ne? 1198 00:56:53,050 --> 00:56:55,280 >> Zato što ne želi promijeniti količinu novca 1199 00:56:55,280 --> 00:56:57,630 za svaku osobu koja je korištenjem vaše web stranice. 1200 00:56:57,630 --> 00:57:00,480 Htjela si ga promijeniti za jedan određena osoba, ta osoba se 1201 00:57:00,480 --> 00:57:02,410 tko je koristeći ga u to vrijeme. 1202 00:57:02,410 --> 00:57:04,320 Pravo? 1203 00:57:04,320 --> 00:57:07,510 U redu, tako da uložite, umetak određene vrijednosti u tablicama. 1204 00:57:07,510 --> 00:57:11,650 To je kao kad ste stvaranje potpuno novog korisnika. 1205 00:57:11,650 --> 00:57:14,240 Opća struktura ovdje je umetnuti u bilo stola 1206 00:57:14,240 --> 00:57:15,680 govorimo o tome. 1207 00:57:15,680 --> 00:57:18,910 Vrijednosti, pri čemu su vrijednosti koje mi zapravo želimo umetnuti. 1208 00:57:18,910 --> 00:57:23,060 OK, kako vidimo ovdje, mi su umetnuti u tablici. 1209 00:57:23,060 --> 00:57:27,790 To je specifična kolone njihovi korespondira vrijednosti. 1210 00:57:27,790 --> 00:57:29,940 Dakle, to govori, insert Novi red sadrži 1211 00:57:29,940 --> 00:57:33,660 Vrijednosti VAL1 i VAL2 pod ove specifične stupce. 1212 00:57:33,660 --> 00:57:39,240 >> Dakle, možda samo želi popuniti Pola stvari u ovom nizu. 1213 00:57:39,240 --> 00:57:41,150 To je ono što ovaj dio ovdje vam omogućuje da učinite. 1214 00:57:41,150 --> 00:57:43,280 To vam omogućuje zapravo odrediti koji dio. 1215 00:57:43,280 --> 00:57:44,244 Da? 1216 00:57:44,244 --> 00:57:52,150 >> PUBLIKA: Može li se samo [nečujan] stanice u nizu [nečujan]? 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: Ako ste se samo ispuniti određene dijelove svog reda, 1218 00:57:55,000 --> 00:57:57,480 Ostatak od tih stanica su samo prazne. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Dokle god ih pustiti da se biti prazna, to nije problem. 1221 00:58:05,660 --> 00:58:09,570 Ako ih pokušate pristupiti, to je će vratiti neke prazne elementa. 1222 00:58:09,570 --> 00:58:13,850 No, važno je znati da je u nekim tablicama, 1223 00:58:13,850 --> 00:58:16,690 Oni moraju biti dopušteno da se nula. 1224 00:58:16,690 --> 00:58:18,890 Vi svibanj izvoditi u Problem za vrijeme p-set 1225 00:58:18,890 --> 00:58:21,320 jer mi nisu dopustili bilo tvojih vrijednosti biti nula. 1226 00:58:21,320 --> 00:58:26,110 No, možete odrediti izborni vrijednost u tablici. 1227 00:58:26,110 --> 00:58:29,640 >> OK, odaberite, tako da je ovo samo način dobivanja 1228 00:58:29,640 --> 00:58:33,790 specifični podaci iz tablice u Neki identifikator koji želite. 1229 00:58:33,790 --> 00:58:37,990 Dakle, odaberite zvijezda sa stola gdje col jednak nešto jednostavno znači, 1230 00:58:37,990 --> 00:58:43,820 daj mi sve podatke vezane gdje je to posebna kolona je istina. 1231 00:58:43,820 --> 00:58:49,020 Tako zvijezda u ovom slučaju će vratiti cijeli red na vas, u redu? 1232 00:58:49,020 --> 00:58:54,880 >> A onda, u tom slučaju, odaberite zvijezda iz Tablica samo vam daje cijelu tablicu. 1233 00:58:54,880 --> 00:58:58,940 A onda, izbrisati očito, to je samo briše redak iz tablice. 1234 00:58:58,940 --> 00:59:01,320 Dakle, brisanje iz tablice, god tablica smo 1235 00:59:01,320 --> 00:59:06,830 pozivom, gdje su neki specifični Oznaka ili neki uvjet istinit. 1236 00:59:06,830 --> 00:59:07,720 Da? 1237 00:59:07,720 --> 00:59:08,700 >> PUBLIKA: Pitanje. 1238 00:59:08,700 --> 00:59:10,699 Zašto koristite dvaput citati, i da li Vas 1239 00:59:10,699 --> 00:59:13,600 napraviti dvostruke navodnike ili jednog citati, to napraviti razliku? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: Dvostruka citati ili jednostruke navodnike ne bi razlika u SQL. 1241 00:59:18,235 --> 00:59:19,610 Mislim da sam vidjela još jedno pitanje. 1242 00:59:19,610 --> 00:59:20,814 Da? 1243 00:59:20,814 --> 00:59:25,070 >> PUBLIKA: Ne to utjecati na ono što dobiva pobjegao iz upita? 1244 00:59:25,070 --> 00:59:27,945 >> ALISON: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Što mislite pod pobjegao iz upita? 1246 00:59:31,410 --> 00:59:36,870 >> PUBLIKA: Ako netko ima Jedan upita u obliku of-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Ako netko stavili jednu ponudu u, 1248 00:59:39,862 --> 00:59:43,560 onda dok god ste dezinfekciju Vaš ulaz, onda to ne smeta. 1249 00:59:43,560 --> 00:59:46,205 Ali, ako ste koristeći jednu citat i vi ste pogrešno 1250 00:59:46,205 --> 00:59:47,914 bježeći svoje inpute, onda da, što im je potrebno 1251 00:59:47,914 --> 00:59:51,079 staviti jedan citat, kako bi se razbiti Vaš broj. Ako koristite dvostruki navodnici, 1252 00:59:51,079 --> 00:59:53,580 što im je potrebno staviti double citiram razbiti svoj kod. 1253 00:59:53,580 --> 00:59:56,163 No, koliko god pobjeći stvari točno, to ne smeta. 1254 00:59:56,163 --> 00:59:59,220 To samo će biti prevedene na ispravan simbol ionako. 1255 00:59:59,220 --> 01:00:02,332 >> PUBLIKA: Što znači bijeg? 1256 01:00:02,332 --> 01:00:04,040 ALISON: Pa, kao što su dezinfekciju i pobjeći. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 Ispit koji imamo, velika xkcd strip koji se podići u kojoj imate, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: To je posljednji slajd. 1261 01:00:16,670 --> 01:00:18,500 ALISON: To je posljednja tobogan, stvarno? 1262 01:00:18,500 --> 01:00:20,200 O moj Bože. 1263 01:00:20,200 --> 01:00:21,780 Tamo idemo, savršena. 1264 01:00:21,780 --> 01:00:27,900 U redu, tako da u osnovi, možete se uvelo nešto u tom SQL upit 1265 01:00:27,900 --> 01:00:30,560 gdje se slomi broj, ili kako je David je pokazao 1266 01:00:30,560 --> 01:00:38,460 u razredu, ako imamo neki singl Citat 1 jednak 1, a ako je u našem kodu, 1267 01:00:38,460 --> 01:00:41,230 mi samo izravno kopirati da, i imamo završava jedan citat, 1268 01:00:41,230 --> 01:00:44,740 što se događa je što smo dobili Neki izraz koji 1269 01:00:44,740 --> 01:00:48,680 ocjenjuje da je istina da će neka netko ulazi u našu bazu podataka 1270 01:00:48,680 --> 01:00:51,720 i dobili podatke da bismo Ne želim ih dobiti. 1271 01:00:51,720 --> 01:00:54,240 Dakle, dezinfekciju ulaza samo znači pazeći 1272 01:00:54,240 --> 01:00:57,680 da pobjegnu njih likovi i Označavanjem 1273 01:00:57,680 --> 01:01:01,720 kao i znakova nisu stvari koje bi trebalo biti dopušteno 1274 01:01:01,720 --> 01:01:04,990 treba shvatiti doslovno kao naš SQL. 1275 01:01:04,990 --> 01:01:09,980 >> Tako velika stvar da smo rekli da ti dečki bi trebali biti pomoću 1276 01:01:09,980 --> 01:01:13,650 bili su HTML posebne znakova, što je nešto 1277 01:01:13,650 --> 01:01:15,730 da možda želite pogledati. 1278 01:01:15,730 --> 01:01:17,240 U redu, izbrisati. 1279 01:01:17,240 --> 01:01:19,450 Vrste podataka, to će sve biti online. 1280 01:01:19,450 --> 01:01:23,510 Budući da smo 15 minuta napustio, ja sam Samo će ići ravno kroz to. 1281 01:01:23,510 --> 01:01:28,500 PHP i SQL, u osnovi je to Upravo smo imali funkciju upit koji 1282 01:01:28,500 --> 01:01:31,520 pomogao u zaštiti od ovi zlonamjernih napada. 1283 01:01:31,520 --> 01:01:33,970 Dakle, kad god koristite upita, bili smo sigurni 1284 01:01:33,970 --> 01:01:36,560 da su se stvari dezinficirati i sitnica. 1285 01:01:36,560 --> 01:01:41,070 >> MVC je samo dizajn paradigma, tako da je model, pogled, kontroler. 1286 01:01:41,070 --> 01:01:44,200 To je samo način da se zadrži stvari lijepo i razdijeliti na isti način 1287 01:01:44,200 --> 01:01:47,100 da smo skloni faktor kako kod u funkcijama. 1288 01:01:47,100 --> 01:01:53,390 To je samo dizajn web okvir koja vam omogućuje da učinite isto. 1289 01:01:53,390 --> 01:01:54,760 Ja ću preskočiti ovo. 1290 01:01:54,760 --> 01:01:58,530 >> To je nešto što sam bilo bi super udoban sa. 1291 01:01:58,530 --> 01:02:01,132 To je veliki mali stol tamo. 1292 01:02:01,132 --> 01:02:03,090 To vam daje funkciju Primjer modela. 1293 01:02:03,090 --> 01:02:05,473 Ja sam samo prolazio kroz to jer sam stvarno želite Davin biti u mogućnosti razgovarati. 1294 01:02:05,473 --> 01:02:07,140 Ako imate bilo kakvih pitanja, slobodno. 1295 01:02:07,140 --> 01:02:07,931 Ja ću biti ovdje nakon. 1296 01:02:07,931 --> 01:02:10,360 Samo dolaze razgovarati sa mnom. 1297 01:02:10,360 --> 01:02:13,380 Uz to, imamo HTTP statusa. 1298 01:02:13,380 --> 01:02:16,270 I Davin će puhati kroz to 15 minuta. 1299 01:02:16,270 --> 01:02:17,560 To će biti velik. 1300 01:02:17,560 --> 01:02:18,893 >> DAVIN: OK. 1301 01:02:18,893 --> 01:02:20,312 Uh, tvoja mic? 1302 01:02:20,312 --> 01:02:22,210 Da. 1303 01:02:22,210 --> 01:02:23,336 Oprostite. 1304 01:02:23,336 --> 01:02:24,460 ALISON: Put biti spreman. 1305 01:02:24,460 --> 01:02:25,335 DAVIN: Ne, ja sam spreman. 1306 01:02:25,335 --> 01:02:25,860 Ja sam spreman. 1307 01:02:25,860 --> 01:02:28,790 Idemo to napraviti. 1308 01:02:28,790 --> 01:02:29,290 To je spremna. 1309 01:02:29,290 --> 01:02:30,041 OK. 1310 01:02:30,041 --> 01:02:30,540 Oprostite. 1311 01:02:30,540 --> 01:02:31,664 Prolila sam kavu na sebe. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 Ne znam jesam li više uzrujalo da gledam glup, 1314 01:02:38,210 --> 01:02:40,600 ili da ja nemam više kave. 1315 01:02:40,600 --> 01:02:44,480 U svakom slučaju, samo brzo najava O lista ti dečki imaju. 1316 01:02:44,480 --> 01:02:47,994 Dakle, to list vi imate nije Službena što je na kvizu. 1317 01:02:47,994 --> 01:02:49,660 To je službeni što je na kvizu. 1318 01:02:49,660 --> 01:02:52,520 Također, na web stranici, možemo reći ti, u redu, to će biti na kvizu. 1319 01:02:52,520 --> 01:02:55,020 Tako u malo varati list imate, a ne službeni. 1320 01:02:55,020 --> 01:02:56,690 A tu su i greške na njega. 1321 01:02:56,690 --> 01:03:01,490 Dakle, najbolje je ne samo slijepo ga koristiti. 1322 01:03:01,490 --> 01:03:04,390 Pa da, to je to. 1323 01:03:04,390 --> 01:03:05,980 Tako ćemo dobiti u ovom vrlo brzo. 1324 01:03:05,980 --> 01:03:07,420 >> Tako HTTP statusa. 1325 01:03:07,420 --> 01:03:10,430 Dakle, što se događa kada Web stranica, sve je u redu. 1326 01:03:10,430 --> 01:03:11,144 Sve je u redu. 1327 01:03:11,144 --> 01:03:13,310 Sve se vraća što način na koji to želite. 1328 01:03:13,310 --> 01:03:15,370 Možete dobiti 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, gdje smo vidjeli da je 301 prije? 1330 01:03:19,250 --> 01:03:20,890 Čekaj, što se događa? 1331 01:03:20,890 --> 01:03:23,250 Oprostite. 1332 01:03:23,250 --> 01:03:24,980 Vidjeli smo ja tin predavanje u sigurnosti. 1333 01:03:24,980 --> 01:03:30,690 Tako u sigurnosti, tako da ako je David upisali u http a zatim pokušao da ide u cs50.net, 1334 01:03:30,690 --> 01:03:31,940 ti ćeš vidjeti 301 preselio. 1335 01:03:31,940 --> 01:03:32,440 Zašto? 1336 01:03:32,440 --> 01:03:35,570 Budući da će se preusmjeriti automatski našem HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> Dakle 301 preselili, samo je osnovi preusmjeravanje. 1338 01:03:38,649 --> 01:03:40,190 A možete misliti o tome kao što je ovaj. 1339 01:03:40,190 --> 01:03:43,790 Svaki od statusa koji počinju s 2-ih, oni su kao, u redu, sve je u redu. 1340 01:03:43,790 --> 01:03:46,530 Svaki od statusa koji pokreću s 3, to su preusmjeravanje. 1341 01:03:46,530 --> 01:03:49,571 Statusi koje počinju s 4, to znači da postoji neka vrsta pogreške klijenta. 1342 01:03:49,571 --> 01:03:52,440 Statusi koje počinju s 5, to je neka vrsta pogreške poslužitelja. 1343 01:03:52,440 --> 01:03:54,680 Dakle, vrsta razbiti statusi takvo. 1344 01:03:54,680 --> 01:03:59,120 Dakle, 304 nije ni mijenjati, tako da u svom server.c p-seta, pa ćemo vam reći 1345 01:03:59,120 --> 01:04:00,600 loaded cat.html. 1346 01:04:00,600 --> 01:04:03,360 Sve se vraća, dobivate 200S, OK, super. 1347 01:04:03,360 --> 01:04:04,540 >> Recimo da je osvježena. 1348 01:04:04,540 --> 01:04:07,310 Pa, unutar koje cat.html, imate JPEG. 1349 01:04:07,310 --> 01:04:09,520 Pa, to JPEG nije će se ponovno učitati. 1350 01:04:09,520 --> 01:04:12,140 Nećeš na post drugog GET zahtjev na server, 1351 01:04:12,140 --> 01:04:13,980 a onda bi sve te podatke natrag. 1352 01:04:13,980 --> 01:04:17,560 To će samo be-- da slika će biti spremljene na vašem računalu. 1353 01:04:17,560 --> 01:04:19,540 I tako da će slika biti 304. 1354 01:04:19,540 --> 01:04:20,720 Dakle, to nije bila izmijenjena. 1355 01:04:20,720 --> 01:04:24,600 Ako ste onda zatvoriti, jasno kolačiće, a zatim osvježite 1356 01:04:24,600 --> 01:04:27,490 i pokušati učitati tu stranicu opet, ti ćeš vidjeti 200S. 1357 01:04:27,490 --> 01:04:28,910 Nećeš vidjeti da je 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, loše zahtjev, real brzo, kao i ako 1359 01:04:32,340 --> 01:04:34,880 su idući u poslati JSON objekt s poslužiteljem 1360 01:04:34,880 --> 01:04:38,090 i tvoja JSON objekt nije točan, vidjet ćete nešto slično. 1361 01:04:38,090 --> 01:04:39,000 403, zabranjeno. 1362 01:04:39,000 --> 01:04:40,330 Kad biste vidjeli zabranjeno? 1363 01:04:40,330 --> 01:04:41,394 Vjerojatno Vjerojatno? 1364 01:04:41,394 --> 01:04:42,060 PUBLIKA: chmod. 1365 01:04:42,060 --> 01:04:42,950 DAVIN: chmod, da. 1366 01:04:42,950 --> 01:04:44,730 Dakle, niste postavili Dozvole ispravno. 1367 01:04:44,730 --> 01:04:45,577 404, nije pronađen. 1368 01:04:45,577 --> 01:04:46,410 To je jednostavno ne postoji. 1369 01:04:46,410 --> 01:04:48,670 Dakle, ako ste upisali u krivu URL. 1370 01:04:48,670 --> 01:04:53,500 500, interna pogreška poslužitelja, poslužitelj Vjerojatno nije ispravno konfiguriran. 1371 01:04:53,500 --> 01:04:56,260 Nešto nije u svom kraju, ali nešto na strani poslužitelja. 1372 01:04:56,260 --> 01:04:57,240 A 503? 1373 01:04:57,240 --> 01:04:59,502 Puno ljudi vidjeli 503s u posljednjoj p-set. 1374 01:04:59,502 --> 01:05:00,460 Kad bi se to dogodilo? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Čuo sam šapat. 1377 01:05:05,660 --> 01:05:07,767 >> PUBLIKA: Kad Google odluči da si robot. 1378 01:05:07,767 --> 01:05:10,350 DAVIN: Da, kada je Google odluči ti si robot, dobivate 503s. 1379 01:05:10,350 --> 01:05:11,560 Dakle, to je preopterećenje. 1380 01:05:11,560 --> 01:05:14,620 Ako ste zatražili od poslužitelja previše, to je obično privremena. 1381 01:05:14,620 --> 01:05:15,560 I većina vas to primijetio. 1382 01:05:15,560 --> 01:05:16,185 Dakle, što ste vidjeli 503. 1383 01:05:16,185 --> 01:05:19,282 Možda su se malo stanka, a zatim su 503s ode, 1384 01:05:19,282 --> 01:05:20,490 i sve je bilo u redu. 1385 01:05:20,490 --> 01:05:26,640 >> Gabe: jako brzo, kada ste vi dobili 500 u vjerojatno ovo zadnje je problem postaviti? 1386 01:05:26,640 --> 01:05:27,954 Da? 1387 01:05:27,954 --> 01:05:30,906 >> PUBLIKA: Obično, ako poslužitelj ima datoteku zagubljen 1388 01:05:30,906 --> 01:05:34,650 ili [nečujan] njihova Stroj [nečujan]. 1389 01:05:34,650 --> 01:05:38,870 >> Gabe: Dakle, to bi moglo biti konfiguracija problem je u vašoj PHP na vašem poslužitelju. 1390 01:05:38,870 --> 01:05:42,250 No, to može biti samo nešto kao da je vaš zarezom zaboravio. 1391 01:05:42,250 --> 01:05:44,130 Ako pišete PHP, Neki pogrešna sintaksa 1392 01:05:44,130 --> 01:05:46,000 Možda se nešto takvo. 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 Želite li raditi samo do AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> Gabe: [nečujan]. 1397 01:05:52,950 --> 01:05:53,450 DAVIN: OK. 1398 01:05:53,450 --> 01:05:54,230 Dakle, ono što je DOM? 1399 01:05:54,230 --> 01:05:55,290 Što DOM stajati? 1400 01:05:55,290 --> 01:05:56,990 >> PUBLIKA: Cilj dokumenta modela. 1401 01:05:56,990 --> 01:05:57,490 DAVIN: Nice. 1402 01:05:57,490 --> 01:06:00,775 I zašto mi se sviđa? 1403 01:06:00,775 --> 01:06:02,670 Awesome. 1404 01:06:02,670 --> 01:06:06,651 Pravo, tako da samo nam omogućuje da pristup HTML, pristupiti našoj stranici vrlo brzo. 1405 01:06:06,651 --> 01:06:07,150 Zašto? 1406 01:06:07,150 --> 01:06:09,980 Budući da smo prema našim stranica, liječenje naše HTML oznake, 1407 01:06:09,980 --> 01:06:11,730 liječenje sve kao da su objekti. 1408 01:06:11,730 --> 01:06:13,710 Ako ćemo tretirajući ih kao da su objekata, što onda možemo učiniti? 1409 01:06:13,710 --> 01:06:15,210 Pa, možemo nazvati funkcije na njima. 1410 01:06:15,210 --> 01:06:16,460 A to je važno zašto? 1411 01:06:16,460 --> 01:06:19,200 Pa, zato što ćemo iskoristiti JavaScript ažurirati svoju HTML, 1412 01:06:19,200 --> 01:06:20,500 ažurirati ove predmete. 1413 01:06:20,500 --> 01:06:23,869 Dakle, ako smo ih tretirati kao objekte, tada možemo nazvati funkcije na njima. 1414 01:06:23,869 --> 01:06:26,660 Idem da se u ovo malo više kad idem u JavaScript, 1415 01:06:26,660 --> 01:06:30,510 ali svi smo vidjeli kao document.getElementByID. 1416 01:06:30,510 --> 01:06:32,870 Dakle, dokument je Vaš Element, dobili elementa po ID, 1417 01:06:32,870 --> 01:06:35,087 tako da ćeš izgledati neko ID u HTML tag. 1418 01:06:35,087 --> 01:06:36,920 A onda, to možete učiniti nešto drugo na to. 1419 01:06:36,920 --> 01:06:40,089 Na primjer, kao što je document.body, onda možete dodati dijete. 1420 01:06:40,089 --> 01:06:41,630 Dakle, ti si idući u nađi dokument. 1421 01:06:41,630 --> 01:06:42,340 Imate dokument. 1422 01:06:42,340 --> 01:06:43,629 Vi ćete pronaći tijelo. 1423 01:06:43,629 --> 01:06:44,420 Vi pronašao tijelo. 1424 01:06:44,420 --> 01:06:46,545 I onda, ti ćeš nazvati neku funkciju na njemu. 1425 01:06:46,545 --> 01:06:50,312 Dakle dodati dijete, a možete dodati Neki HTML na kraju unutar vašeg tijela. 1426 01:06:50,312 --> 01:06:52,520 Tako je u osnovi, ti si jednostavno tretirajući ga kao objekt. 1427 01:06:52,520 --> 01:06:54,515 Vi ste liječenju HTML oznake kao objekt. 1428 01:06:54,515 --> 01:06:57,071 I to ga čini vrlo lako i brzo proći kroz njih. 1429 01:06:57,071 --> 01:06:59,070 Ali, to vam omogućuje pozvati funkcija na njih 1430 01:06:59,070 --> 01:07:04,410 tako da možete manipulirati i mijenjati elemente. 1431 01:07:04,410 --> 01:07:10,162 >> Gabe: S obzirom na to, zašto je takva JavaScript Lijepo jezika za interakciju s HTML? 1432 01:07:10,162 --> 01:07:12,870 Tečajevi su, kada su ljudi odabiru jezik preglednika, 1433 01:07:12,870 --> 01:07:14,990 za strani klijenta, JavaScript je jako lijepo, 1434 01:07:14,990 --> 01:07:16,765 to je stvarno dobar u rukovanju predmetima. 1435 01:07:16,765 --> 01:07:20,620 I predmeti su vrsta kao predmeti koji se pojavljuju u HTML, 1436 01:07:20,620 --> 01:07:23,940 tako da je vrlo lako za JavaScript učiniti takvu rukovanje. 1437 01:07:23,940 --> 01:07:24,440 DAVIN: Nice. 1438 01:07:24,440 --> 01:07:25,670 Dakle, ovdje je samo primjer. 1439 01:07:25,670 --> 01:07:29,020 Dakle, mislim da se na prošlogodišnjoj kviza, ili možda prije dvije godine, što 1440 01:07:29,020 --> 01:07:30,840 upitao vas stvoriti stablo. 1441 01:07:30,840 --> 01:07:32,660 Dakle, to je upravo ono što bi učinio. 1442 01:07:32,660 --> 01:07:34,255 Dakle, početi s dokumentom. 1443 01:07:34,255 --> 01:07:36,130 A onda ste u osnovi samo pogled na oznake. 1444 01:07:36,130 --> 01:07:38,100 Dakle, ako ste u potrazi smo početi s HTML oznake. 1445 01:07:38,100 --> 01:07:41,660 A onda, možete dobiti tragove o tome kako to na temelju otiska učiniti. 1446 01:07:41,660 --> 01:07:43,870 Dakle, glava vrsta grana off. 1447 01:07:43,870 --> 01:07:46,242 Unutar glave, imamo druga oznaka za naslov. 1448 01:07:46,242 --> 01:07:47,450 Dakle, imamo više oznaka. 1449 01:07:47,450 --> 01:07:49,760 I unutar toga, imamo neke string. 1450 01:07:49,760 --> 01:07:52,210 I tako mi predstavljaju string u krug. 1451 01:07:52,210 --> 01:07:54,010 A sve oznake na trgovima. 1452 01:07:54,010 --> 01:07:56,270 >> A ako pogledate, ako mislim to kao stablo, 1453 01:07:56,270 --> 01:07:58,730 a recimo da je HTML je roditelja, a zatim glavu i tijelo 1454 01:07:58,730 --> 01:07:59,772 će se braća i sestre. 1455 01:07:59,772 --> 01:08:01,813 Oni oboje će biti djeca tog roditelja. 1456 01:08:01,813 --> 01:08:03,620 Pa zato što su obje braća i sestre, oni su 1457 01:08:03,620 --> 01:08:06,590 će biti neka vrsta uz jedni druge u našoj stabla modela. 1458 01:08:06,590 --> 01:08:08,590 A onda, u osnovi učiniti istu stvar. 1459 01:08:08,590 --> 01:08:13,512 Pa nije teško, ali mi smo pitali Pitanja kao što su to prije na kviz. 1460 01:08:13,512 --> 01:08:15,220 Gabe: Zna li itko Za sva pitanja do sada? 1461 01:08:15,220 --> 01:08:16,357 Je li 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, dobre stvari. 1465 01:08:21,600 --> 01:08:24,069 Dakle JavaScript, što je JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Pa, to je JavaScript is-- komplicirano, ali to 1467 01:08:28,370 --> 01:08:30,727 su neke od naglašava koje bi trebali imati na umu. 1468 01:08:30,727 --> 01:08:31,810 Prvo, to je lagano upisali. 1469 01:08:31,810 --> 01:08:33,529 Što to znači? 1470 01:08:33,529 --> 01:08:35,596 Dakle, PHP was-- Da, ono što je gore? 1471 01:08:35,596 --> 01:08:39,854 >> PUBLIKA: Ne morate se izričito Država kakvu vrstu varijable je. 1472 01:08:39,854 --> 01:08:40,479 DAVIN: Perfect. 1473 01:08:40,479 --> 01:08:43,270 Dakle, on je rekao da ne moraju izričito navesti tip varijable. 1474 01:08:43,270 --> 01:08:44,160 To je točno. 1475 01:08:44,160 --> 01:08:49,700 Tako je u C, ako sam imao int i iznosi 50, zatim u PHP-u, to je samo ovako, $ ja, 1476 01:08:49,700 --> 01:08:50,550 iznosi 50. 1477 01:08:50,550 --> 01:08:54,319 Tada je u JavaScript, Što će poziv biti? 1478 01:08:54,319 --> 01:08:55,260 Var, zar ne? 1479 01:08:55,260 --> 01:08:56,566 To bi bilo kao var i iznosi 50. 1480 01:08:56,566 --> 01:08:58,649 Ali ne morate biti kao, u redu, to je int. 1481 01:08:58,649 --> 01:09:00,350 OK, ovo je string. 1482 01:09:00,350 --> 01:09:01,731 Nema potrebe za to. 1483 01:09:01,731 --> 01:09:02,939 To je tumačiti jezik. 1484 01:09:02,939 --> 01:09:04,904 Dakle, što to znači? 1485 01:09:04,904 --> 01:09:06,340 >> PUBLIKA: Ne sastaviti. 1486 01:09:06,340 --> 01:09:10,470 >> DAVIN: Što ne sastavlja znači? 1487 01:09:10,470 --> 01:09:11,392 Da? 1488 01:09:11,392 --> 01:09:15,336 >> PUBLIKA: Nemaš restrukturirati kod 1489 01:09:15,336 --> 01:09:18,294 da bi ga spremni za računalo to trčanje. 1490 01:09:18,294 --> 01:09:23,144 To je samo snimljen u vrijeme Izvršenje i računala [nečujan]. 1491 01:09:23,144 --> 01:09:25,560 DAVIN: Da, tako to ide prolaze preko tumača. 1492 01:09:25,560 --> 01:09:26,750 Ali ti si upravo pravo. 1493 01:09:26,750 --> 01:09:28,319 Dakle, nikad ne ide da ga sastaviti, zar ne? 1494 01:09:28,319 --> 01:09:30,399 Kada su radili svoj PHP i JavaScript koda, 1495 01:09:30,399 --> 01:09:31,365 nikad ne zove sastaviti. 1496 01:09:31,365 --> 01:09:33,779 Nikada se zove nešto poput učiniti ili nešto slično. 1497 01:09:33,779 --> 01:09:34,800 To je zato što je tumačiti. 1498 01:09:34,800 --> 01:09:37,319 Dakle, svaki put kad prolazi kroz preglednik, to ide preko prevoditelja. 1499 01:09:37,319 --> 01:09:40,370 I da će to protumačiti Samo u realnom vremenu odmah za vas. 1500 01:09:40,370 --> 01:09:43,770 Dakle, ono što su neke pozitivne i negativne da ima tumačiti jezik 1501 01:09:43,770 --> 01:09:45,258 i ima sastaviti jezik? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Dakle compiling-- Da, ono što je gore? 1504 01:09:50,540 --> 01:09:52,444 >> PUBLIKA: interpretirali je sporiji. 1505 01:09:52,444 --> 01:09:53,319 DAVIN: U kojem smislu? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> PUBLIKA: Nakon tebe sastaviti, ne moraš 1508 01:09:59,091 --> 01:10:04,400 učiniti dodatne korake za izvršavanje je, dok je ovaj [nečujan]. 1509 01:10:04,400 --> 01:10:05,570 >> DAVIN: Pravo, savršena. 1510 01:10:05,570 --> 01:10:08,386 Dakle, ono što si rekao je osnovi koje izrađuju, 1511 01:10:08,386 --> 01:10:10,760 kad sastaviti, imate Puno unaprijed troškova, zar ne? 1512 01:10:10,760 --> 01:10:11,760 Ti ćeš ga sastaviti. 1513 01:10:11,760 --> 01:10:13,750 No, nakon što ga sastaviti, prevodilac će ga optimizirati. 1514 01:10:13,750 --> 01:10:14,840 To će biti brzo. 1515 01:10:14,840 --> 01:10:16,170 To će zapravo biti jednako brzo kao što može biti. 1516 01:10:16,170 --> 01:10:18,830 Uz tumačenje, nikada ima tu unaprijed troškove. 1517 01:10:18,830 --> 01:10:22,260 Umjesto toga, to će biti nešto sporiji svaki put ćete ga protumačiti. 1518 01:10:22,260 --> 01:10:24,940 I ti si idući u morati tumačiti ga svaki put. 1519 01:10:24,940 --> 01:10:27,114 Dakle, umjesto da to jednokratni trošak, sad si 1520 01:10:27,114 --> 01:10:29,530 morati tumačiti svaki put stranica donosi. 1521 01:10:29,530 --> 01:10:31,890 >> Dakle, prevoditelji su dobre, jer ne morate ga sastaviti, 1522 01:10:31,890 --> 01:10:33,980 ali oni su loše u tome svaki učitavanju stranice, to je 1523 01:10:33,980 --> 01:10:35,771 ćete morati tumace JavaScript. 1524 01:10:35,771 --> 01:10:40,520 I to će pokrenuti nešto sporiji nego ako ste bili da ga sastaviti. 1525 01:10:40,520 --> 01:10:43,044 Omogućuje communicate-- oh, čekaj. 1526 01:10:43,044 --> 01:10:44,960 Koristi se za manipuliranje sadržaj i izgled. 1527 01:10:44,960 --> 01:10:46,043 Mi smo samo razgovarali o tome. 1528 01:10:46,043 --> 01:10:47,250 Ona koristi DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, mi ćemo ući u AJAX je u malo. 1530 01:10:49,930 --> 01:10:51,520 A onda, to je strani klijenta. 1531 01:10:51,520 --> 01:10:53,110 Dakle, PHP je strani poslužitelja. 1532 01:10:53,110 --> 01:10:54,360 JavaScript je strani klijenta. 1533 01:10:54,360 --> 01:10:57,780 Koji su pozitivni na to? 1534 01:10:57,780 --> 01:10:58,280 To je, kaže. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 To je brži, zar ne? 1537 01:11:02,780 --> 01:11:05,282 Budući da nemate to-- je brži. 1538 01:11:05,282 --> 01:11:07,490 Ne morate komunicirati s nekim drugim uređajem. 1539 01:11:07,490 --> 01:11:08,790 Ako ste samo na svoje klijent, ti si nikada 1540 01:11:08,790 --> 01:11:11,280 će morati ići i vidjeti što je na poslužitelju 1541 01:11:11,280 --> 01:11:13,150 a zatim se jave ili nešto slično. 1542 01:11:13,150 --> 01:11:15,410 Tako strani klijenta teži biti malo brži. 1543 01:11:15,410 --> 01:11:17,910 >> Gabe: Da, ali to ne znači PHP je 1544 01:11:17,910 --> 01:11:20,440 brže nego JavaScript ili bilo što od slično. 1545 01:11:20,440 --> 01:11:23,270 Oni pokrenuti vrsta u istom Brzina jer su oboje 1546 01:11:23,270 --> 01:11:24,490 interpretirani jezik. 1547 01:11:24,490 --> 01:11:26,680 Ono što je spor Ovdje je zahtjev. 1548 01:11:26,680 --> 01:11:28,870 Dakle, ti si zapravo događa sve više u Brazil 1549 01:11:28,870 --> 01:11:31,460 dobiti neke informacije da tamo živi. 1550 01:11:31,460 --> 01:11:34,590 No, PHP i JavaScript, oni vrsta izvoditi u istom brzinom. 1551 01:11:34,590 --> 01:11:37,930 To ne znači da je netko brže od drugoga. 1552 01:11:37,930 --> 01:11:40,600 To, također, trik pitanje ovdje. 1553 01:11:40,600 --> 01:11:47,338 Dakle JavaScript nikada postaje Stroj broj, istina ili laž? 1554 01:11:47,338 --> 01:11:48,590 >> PUBLIKA: 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 broj jer je stroj kod 1557 01:11:51,298 --> 01:11:53,210 Jedino stroj razumije. 1558 01:11:53,210 --> 01:11:55,800 Iako to nije sastavio, ipak postaje stroj za broj 1559 01:11:55,800 --> 01:11:59,120 jer tumač je samo program koji ide liniju po liniju 1560 01:11:59,120 --> 01:12:02,170 i pretvara tu liniju u nešto računalo razumije. 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: Ovdje je samo vrlo osnovni Pozdrav svijetu JavaScript programa. 1565 01:12:12,890 --> 01:12:15,590 Pa ne znam if-- ste vidjeli. 1566 01:12:15,590 --> 01:12:17,630 Ali, samo HTML ovdje. 1567 01:12:17,630 --> 01:12:21,020 I umjesto da se zapravo stavljajući JavaScript u pismu oznake, 1568 01:12:21,020 --> 01:12:22,810 pa normalno bi ga stavili u glavu. 1569 01:12:22,810 --> 01:12:24,030 Imate skripte oznaka. 1570 01:12:24,030 --> 01:12:24,870 Možete ga ispustiti tu. 1571 01:12:24,870 --> 01:12:28,350 Sve smo učinili ovdje smo povezani in-- tako da smo povezani u JavaScript datoteci 1572 01:12:28,350 --> 01:12:29,137 kao što je to. 1573 01:12:29,137 --> 01:12:30,470 A ti si sve to učinio, zar ne? 1574 01:12:30,470 --> 01:12:34,740 Dakle, kada ste koristili jQuery i underscore.js u posljednjoj p-set, 1575 01:12:34,740 --> 01:12:38,700 nemate tona koda up u Vaša skripta oznake, u tvojoj glavi. 1576 01:12:38,700 --> 01:12:41,415 Ti bi mogao učiniti, ali umjesto ti si samo ga povezuje u. 1577 01:12:41,415 --> 01:12:43,540 A ti si ga povezuje u Baš kao što to s CSS. 1578 01:12:43,540 --> 01:12:50,186 Pa to samo olakšava čitanje tako Vaš broj ne sviđa 1.000 redova 1579 01:12:50,186 --> 01:12:52,310 s tona funkcije koje možda nećete koristiti. 1580 01:12:52,310 --> 01:12:53,518 >> Umjesto toga, samo ga povezati u. 1581 01:12:53,518 --> 01:12:55,050 Ona ga compartmentalizes. 1582 01:12:55,050 --> 01:13:00,110 To je kao pisanje neke datoteke zaglavlja i zatim uključujući zaglavlje datoteke u C 1583 01:13:00,110 --> 01:13:01,620 Razmislite o tome baš kao što je ovaj. 1584 01:13:01,620 --> 01:13:02,680 Dakle, što učiniti? 1585 01:13:02,680 --> 01:13:04,560 Pa, to će se pokrenuti. 1586 01:13:04,560 --> 01:13:05,410 To će upozoriti. 1587 01:13:05,410 --> 01:13:08,020 Dakle, ti si idući u dobiti malo pop-up pod nazivom Pozdrav svijetu. 1588 01:13:08,020 --> 01:13:11,420 Brzo pitanje, samo provjera razum, pa vidite ovdje u tijelu, 1589 01:13:11,420 --> 01:13:13,160 kažu tijela, HTML ovdje. 1590 01:13:13,160 --> 01:13:14,080 Što je na prvom mjestu? 1591 01:13:14,080 --> 01:13:16,864 Moram vidjeti tijelo, HTML ovdje, ili ću prvo vidjeti upozorenje? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> PUBLIKA: Alert. 1594 01:13:20,820 --> 01:13:21,470 >> DAVIN: Tako je. 1595 01:13:21,470 --> 01:13:22,110 On kaže upozorenja. 1596 01:13:22,110 --> 01:13:22,610 Zašto? 1597 01:13:22,610 --> 01:13:24,470 >> PUBLIKA: Zbog tebe idu od vrha do dna. 1598 01:13:24,470 --> 01:13:25,600 >> DAVIN: Da. 1599 01:13:25,600 --> 01:13:26,100 Savršeno. 1600 01:13:26,100 --> 01:13:29,207 Tako on kaže, što ide od vrha prema Dno, što je apsolutno točna. 1601 01:13:29,207 --> 01:13:30,790 Ti si idući u ići od vrha do dna. 1602 01:13:30,790 --> 01:13:34,790 I u JavaScript, jQuery, imate funkcija koja je kao onload, ili spremni, 1603 01:13:34,790 --> 01:13:38,030 i to kaže, u redu, pričekajte Sve ove HTML je učitan. 1604 01:13:38,030 --> 01:13:39,580 A onda, nazovite JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Budući da nemamo da se ovdje, Prva stvar koja će se dogoditi 1606 01:13:42,190 --> 01:13:43,920 je da će se ići od vrha do dna. 1607 01:13:43,920 --> 01:13:46,310 To će pogoditi da je JS zovu, to će upozoriti. 1608 01:13:46,310 --> 01:13:49,510 Nakon toga kliknete OK, da dojave ide dalje. 1609 01:13:49,510 --> 01:13:53,600 Onda će to pokazati što tijelo HTML ovdje. 1610 01:13:53,600 --> 01:13:54,590 Nice. 1611 01:13:54,590 --> 01:14:00,880 >> U redu, tako da samo jako brzo, pisanje U JavaScript je super brzo. 1612 01:14:00,880 --> 01:14:02,710 Kako bi se proglasi varijabla, ime var. 1613 01:14:02,710 --> 01:14:07,070 Tako je u C, imate int i, imate proglasiti kakav tip 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 Razgovarali smo o tome. 1617 01:14:09,630 --> 01:14:11,020 U redu, idemo. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, ista stvar. 1619 01:14:12,510 --> 01:14:14,230 Ista stvar. 1620 01:14:14,230 --> 01:14:18,165 Funkcija izjave, pa baš kao što ste vidjeli u C. 1621 01:14:18,165 --> 01:14:21,290 Jedina stvar drugačija je tako kada ste dobili s drugim programskim jezicima, 1622 01:14:21,290 --> 01:14:24,780 kao kad se uzme 51 sljedeći semestar i radite s ocaml, 1623 01:14:24,780 --> 01:14:26,690 možete nositi s anonimnim funkcijama. 1624 01:14:26,690 --> 01:14:28,240 Dakle, to je upravo ono što imamo ovdje. 1625 01:14:28,240 --> 01:14:31,560 Dakle, želite staviti u svemu, nekakav sum vrijednosti. 1626 01:14:31,560 --> 01:14:33,870 No, možda samo treba raditi to jedno vrijeme. 1627 01:14:33,870 --> 01:14:37,310 Dakle, ne želim ga nazvati funkcija suma, dati mu funkciju izjavu. 1628 01:14:37,310 --> 01:14:39,830 Umjesto toga, samo ga koristiti kao anonimni funkciju. 1629 01:14:39,830 --> 01:14:42,469 A vi ste vidjeli puno. 1630 01:14:42,469 --> 01:14:44,510 Vi ćete vidjeti primjer to je u par slajdova. 1631 01:14:44,510 --> 01:14:45,597 Da, vidjet ćemo. 1632 01:14:45,597 --> 01:14:46,430 Gabe: Dobro pitanje. 1633 01:14:46,430 --> 01:14:50,660 Kada možda želite koristiti anonimni funkcija ovdje? 1634 01:14:50,660 --> 01:14:54,111 Uglavnom, ako želite nešto, kao događaj, da se dogodi. 1635 01:14:54,111 --> 01:14:55,860 Dakle, kada miš je pritisne, na primjer, 1636 01:14:55,860 --> 01:14:57,790 Želite neke funkcije zvati. 1637 01:14:57,790 --> 01:15:00,570 Tako ćete proći na događaj rukovatelj, prođe se događaju, 1638 01:15:00,570 --> 01:15:02,870 vrsta, funkcija Želite li se zove. 1639 01:15:02,870 --> 01:15:04,710 A što ste prolazu je kao što je, na kraju 1640 01:15:04,710 --> 01:15:08,757 dana, samo pokazivač da pouku, na funkciji. 1641 01:15:08,757 --> 01:15:11,090 Dakle, to nije kao što prolazi cijeli kod, baš kao što je 1642 01:15:11,090 --> 01:15:12,173 Pokazivač za funkciju. 1643 01:15:12,173 --> 01:15:17,871 A onda, kada netko klikne miša, a zatim da je funkcija dobiva zove. 1644 01:15:17,871 --> 01:15:22,340 >> DAVIN: Nizovi, pa vas imaju niz izjavu. 1645 01:15:22,340 --> 01:15:23,990 Zatim, niz staviti stvari u. 1646 01:15:23,990 --> 01:15:25,769 Jako brzo, što će to isprintati? 1647 01:15:25,769 --> 01:15:27,060 Što će biti treći element? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> PUBLIKA: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> DAVIN: Da, to bi bilo "JS". 1651 01:15:33,940 --> 01:15:35,760 Čekaj, vratiti. 1652 01:15:35,760 --> 01:15:37,100 Što je duljina? 1653 01:15:37,100 --> 01:15:38,117 >> PUBLIKA: Tri. 1654 01:15:38,117 --> 01:15:38,950 DAVIN: Tri, zar ne? 1655 01:15:38,950 --> 01:15:40,210 Točno ono što mislite. 1656 01:15:40,210 --> 01:15:42,072 OK, sad ide. 1657 01:15:42,072 --> 01:15:43,530 Nizovi, možete dodati stvari za njih. 1658 01:15:43,530 --> 01:15:45,395 Na taj način možete ići dalje njihove početne granice. 1659 01:15:45,395 --> 01:15:46,740 Samo je nešto na umu. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, oni su malo malo oprašta u smislu stvari 1661 01:15:49,760 --> 01:15:50,570 kao što je to. 1662 01:15:50,570 --> 01:15:54,260 Objekti, vrlo slično konstrukt u C, vrlo 1663 01:15:54,260 --> 01:15:56,590 kao i asocijativnih nizova u PHP. 1664 01:15:56,590 --> 01:15:58,720 Svi ste imali iskustva s tim. 1665 01:15:58,720 --> 01:16:01,880 Dakle, JSON, kad si u prolazu JSON natrag i naprijed u p-set osam, 1666 01:16:01,880 --> 01:16:03,260 to je tvoja stvar. 1667 01:16:03,260 --> 01:16:06,290 >> Tako da, primjerice, vrlo brzo je primjer. 1668 01:16:06,290 --> 01:16:07,880 Ovdje je objekt. 1669 01:16:07,880 --> 01:16:12,700 Način na koji to referenca objekt, tako da samo jako brzo, 1670 01:16:12,700 --> 01:16:18,630 recimo ja sam htjela naći out, OK, što je, naravno? 1671 01:16:18,630 --> 01:16:20,681 I tako predmet ime ovdje je CS50. 1672 01:16:20,681 --> 01:16:23,180 A onda, ako sam imao asocijativni Niz, kako bih to učinio? 1673 01:16:23,180 --> 01:16:24,580 Ja ću se pomoću ključa, zar ne? 1674 01:16:24,580 --> 01:16:26,030 Zato sam naziv polja. 1675 01:16:26,030 --> 01:16:30,160 Imam zagrada, citati, ključ, end citati, kraj nosača, 1676 01:16:30,160 --> 01:16:33,610 i da će referencu koja Element u mojoj asocijativni niz. 1677 01:16:33,610 --> 01:16:37,646 Kako sam upućuje Naravno u mojoj objekta? 1678 01:16:37,646 --> 01:16:39,170 Tko zna? 1679 01:16:39,170 --> 01:16:40,622 >> PUBLIKA: [nečujan]. 1680 01:16:40,622 --> 01:16:41,784 >> DAVIN: Što je gore? 1681 01:16:41,784 --> 01:16:42,700 PUBLIKA: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 DAVIN: Dobro, da. 1683 01:16:43,510 --> 01:16:45,320 Tako CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Dakle, način na referentne stvari unutar JSON objekt s točkom. 1685 01:16:48,770 --> 01:16:53,114 >> PUBLIKA: Također možete koristiti array sintaksu. 1686 01:16:53,114 --> 01:16:54,050 >> DAVIN: OK, u redu. 1687 01:16:54,050 --> 01:16:57,544 >> Gabe: Također možete koristiti CS50 nosač, string, kao navodnicima. 1688 01:16:57,544 --> 01:16:59,210 PUBLIKA: Mislim da je identičan 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: Fine! 1691 01:17:02,487 --> 01:17:03,945 No, vidjet ćete ovaj drugih mjesta. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Da, tako zadržati ide. 1694 01:17:10,480 --> 01:17:13,330 To je ono što sam upravo rekao. 1695 01:17:13,330 --> 01:17:17,840 Dakle, u JavaScript jQuery primjer. 1696 01:17:17,840 --> 01:17:19,440 Dakle, ovo je moj DOM, zar ne? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Jako brzo, tako da imam Glava, Hello World, tijelo. 1699 01:17:25,410 --> 01:17:26,160 Imam gumb. 1700 01:17:26,160 --> 01:17:27,870 On kaže: "gurati me", tako da želim da ga gurnuti. 1701 01:17:27,870 --> 01:17:29,745 I želim učiniti nešto kada je kliknulo. 1702 01:17:29,745 --> 01:17:31,220 Odmah pored. 1703 01:17:31,220 --> 01:17:34,630 >> Pravo, pa ovo je moja JavaScript. 1704 01:17:34,630 --> 01:17:37,790 Dakle, jQuery je samo lakše način pisanja JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Pa to, i što ću pokazati sljedeći put, će biti jQuery, 1706 01:17:40,920 --> 01:17:41,930 identični. 1707 01:17:41,930 --> 01:17:43,990 Dakle, oni će raditi iste stvari. 1708 01:17:43,990 --> 01:17:45,974 Samo jQuery tendira da bude malo lakše. 1709 01:17:45,974 --> 01:17:47,140 Ljudi imaju tendenciju da se sviđa više. 1710 01:17:47,140 --> 01:17:48,390 Ona ima mnogo mogućnosti. 1711 01:17:48,390 --> 01:17:49,830 Dakle, ljudi imaju tendenciju da koriste jQuery. 1712 01:17:49,830 --> 01:17:53,270 Vi svi koriste jQuery u posljednjoj p-set. 1713 01:17:53,270 --> 01:17:54,270 Pa što će to učiniti? 1714 01:17:54,270 --> 01:17:56,580 Što će to tako JavaScript-- ovo je samo običan JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Što će to učiniti? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Što će to učiniti? 1718 01:18:03,450 --> 01:18:04,890 >> Dakle prvo, vidite prozor onload. 1719 01:18:04,890 --> 01:18:05,390 Pravo? 1720 01:18:05,390 --> 01:18:06,640 Dakle, nismo vidjeli prije. 1721 01:18:06,640 --> 01:18:09,380 Dakle, to će pričekati dok cijeli prozor opterećenja. 1722 01:18:09,380 --> 01:18:12,770 Dakle, to će pričekati dok se ne HTML, sve slike opterećenja 1723 01:18:12,770 --> 01:18:13,770 Prije nego što se bilo što. 1724 01:18:13,770 --> 01:18:16,050 Tako recimo naše DOM učita. 1725 01:18:16,050 --> 01:18:17,270 Sve je tu. 1726 01:18:17,270 --> 01:18:19,080 Onda što će se dogoditi? 1727 01:18:19,080 --> 01:18:19,922 Da? 1728 01:18:19,922 --> 01:18:22,880 >> Pojavljuje Button: publiku. 1729 01:18:22,880 --> 01:18:25,201 >> DAVIN: Gumb je već tamo. 1730 01:18:25,201 --> 01:18:26,700 Da, tako je tipka već postoji. 1731 01:18:26,700 --> 01:18:31,190 No, to će reći, OK, ako sam pritisnite gumb, 1732 01:18:31,190 --> 01:18:33,650 tako da gumb je već Tu, kao što je to HTML oznaka. 1733 01:18:33,650 --> 01:18:35,980 Čekaj, vratiti vrlo brzo. 1734 01:18:35,980 --> 01:18:39,470 Ovaj tag pravo ovdje je će biti Gumb već. 1735 01:18:39,470 --> 01:18:40,810 Već gumb. 1736 01:18:40,810 --> 01:18:44,120 Ali onda, JavaScript tag, upravo ovdje, 1737 01:18:44,120 --> 01:18:46,160 ona kaže, u redu, želim dobiti elementa po ID, 1738 01:18:46,160 --> 01:18:50,300 tako da gumb za pretraživanje samo kaže, OK, ja želim mapirati tu varijablu u tom gumb. 1739 01:18:50,300 --> 01:18:53,120 Tako da je varijabla je samo jednostavniji način za pristup taj gumb. 1740 01:18:53,120 --> 01:18:57,300 A ja kažem, u redu, ako sam kliknite da gumb, tako da ako sam kliknite tu elementa, 1741 01:18:57,300 --> 01:18:59,560 i to je element odnosi se na gumb, ako sam ga pritisnite, 1742 01:18:59,560 --> 01:19:00,875 onda želim pozvati funkciju. 1743 01:19:00,875 --> 01:19:03,500 Ovdje je jedan od onih koji anonimno Funkcije smo razgovarali o tome. 1744 01:19:03,500 --> 01:19:04,840 >> Samo nazvati neku funkciju. 1745 01:19:04,840 --> 01:19:08,840 Unutar te funkcije, u osnovi nešto što smo vidjeli puno, upozorenje. 1746 01:19:08,840 --> 01:19:10,477 Možete kliknuti na gumb traži. 1747 01:19:10,477 --> 01:19:12,060 To će zapravo imati gumb. 1748 01:19:12,060 --> 01:19:13,040 Možete ga pritisnite. 1749 01:19:13,040 --> 01:19:14,040 Možete dobiti tu obavijest. 1750 01:19:14,040 --> 01:19:14,850 X out. 1751 01:19:14,850 --> 01:19:15,754 To je to. 1752 01:19:15,754 --> 01:19:16,254 Da? 1753 01:19:16,254 --> 01:19:21,980 >> PUBLIKA: Dakle, ako ste stavili skripta [Nečujan], skripta oznaka u HTML? 1754 01:19:21,980 --> 01:19:24,300 >> DAVIN: Možete staviti skriptu tag ravno u glavu 1755 01:19:24,300 --> 01:19:30,667 jer imate ovaj onload. 1756 01:19:30,667 --> 01:19:32,000 To je također da imate klik. 1757 01:19:32,000 --> 01:19:34,166 Dakle, to će pričekati dok se ne kliknete na nešto. 1758 01:19:34,166 --> 01:19:37,470 Ali onload je samo da bude siguran, da bi je li sve opterećenja u HTML 1759 01:19:37,470 --> 01:19:38,170 unaprijed. 1760 01:19:38,170 --> 01:19:39,247 Da? 1761 01:19:39,247 --> 01:19:40,330 Želite li nešto reći? 1762 01:19:40,330 --> 01:19:41,080 >> Gabe: [nečujan]. 1763 01:19:41,080 --> 01:19:42,485 DAVIN: Da. 1764 01:19:42,485 --> 01:19:45,426 >> PUBLIKA: Pa onload izbjegava definiranje varijable gumb traži 1765 01:19:45,426 --> 01:19:49,930 tako jednostavno govoreći document.getElementByID Gumb za pretraživanje dot [nečujan]. 1766 01:19:49,930 --> 01:19:52,320 >> DAVIN: Definitivno, ali onda Vaš string samo dobiva ogroman. 1767 01:19:52,320 --> 01:19:55,553 Točno, tako da je ovo samo olakšavaju za vas, da. 1768 01:19:55,553 --> 01:19:56,053 Da? 1769 01:19:56,053 --> 01:19:57,886 >> PUBLIKA: Gdje smo učinili stvoriti window.onload? 1770 01:19:57,886 --> 01:19:58,951 Ili document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> DAVIN: Da, tu je. 1772 01:20:00,590 --> 01:20:02,094 Da, tu je, provjerio sam. 1773 01:20:02,094 --> 01:20:03,710 >> Gabe: Nije za njih stalo. 1774 01:20:03,710 --> 01:20:06,970 >> DAVIN: OK, pa ću da ti svejedno. 1775 01:20:06,970 --> 01:20:11,005 Tako je u osnovi, samo u cjelini, pa window.onload čeka dok vaše DOM, sve 1776 01:20:11,005 --> 01:20:12,180 Vaš HTML, opterećenja. 1777 01:20:12,180 --> 01:20:13,513 On čeka do svoje slike opterećenja. 1778 01:20:13,513 --> 01:20:14,930 Ona čeka dok sve opterećenja. 1779 01:20:14,930 --> 01:20:18,410 document.ready, to je samo Čeka svoje DOM opterećenja. 1780 01:20:18,410 --> 01:20:22,190 Nakon HTML je sve što postoji, odjednom Vaš DOM postoji, počinje prikazivati. 1781 01:20:22,190 --> 01:20:23,400 To je jedina razlika. 1782 01:20:23,400 --> 01:20:24,700 >> Gabe: Brzo razum provjeriti ovdje. 1783 01:20:24,700 --> 01:20:29,060 Dakle, to se može vidjeti vrsta kao linija koda, zar ne? 1784 01:20:29,060 --> 01:20:33,600 Budući da je window.onload jednako hrpu stvari. 1785 01:20:33,600 --> 01:20:39,030 Kad JavaScript čita ovo, istina ili netočno, funkcija dobiva pogubljen. 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 Što se događa ovdje, ste upravo prolazi Ova funkcija kao anonimni funkcija 1789 01:20:44,470 --> 01:20:45,300 na window.onload. 1790 01:20:45,300 --> 01:20:48,480 I onda kada se to događa zapravo se pogubili? 1791 01:20:48,480 --> 01:20:49,600 Kada je prozor opterećenja. 1792 01:20:49,600 --> 01:20:50,420 To je događaj. 1793 01:20:50,420 --> 01:20:52,460 Dakle, to je jus t stvar smo Riječ je o ranije, zar ne? 1794 01:20:52,460 --> 01:20:54,580 Dakle, kada se događaj dogodi, Funkcija događa. 1795 01:20:54,580 --> 01:20:55,746 Ista stvar s onClick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> DAVIN: OK, tako da je netko uzeo daleko document.ready. 1798 01:21:03,130 --> 01:21:04,698 No, to će biti točno same-- 1799 01:21:04,698 --> 01:21:06,864 PUBLIKA: dolar znak, da je document.ready. 1800 01:21:06,864 --> 01:21:07,710 To je prečica. 1801 01:21:07,710 --> 01:21:08,501 >> DAVIN: Oh, kako je? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 OK, pa to znači document.ready, prečac. 1804 01:21:15,500 --> 01:21:19,660 No, to je isto kao window.onload osim za onu malu razliku 1805 01:21:19,660 --> 01:21:20,680 Rekao sam o tome. 1806 01:21:20,680 --> 01:21:21,870 I to je jQuery. 1807 01:21:21,870 --> 01:21:25,190 Dakle, to je isti thing-- ovo JavaScript. 1808 01:21:25,190 --> 01:21:29,500 To je just-- neki ljudi misle o tome što više lagani, gladak verzija 1809 01:21:29,500 --> 01:21:32,370 da ima puno mogućnosti da vjerojatno ćete biti koristeći. 1810 01:21:32,370 --> 01:21:34,500 Dakle, to radi točno istu stvar. 1811 01:21:34,500 --> 01:21:37,110 >> Dakle, stvari se nekako istaknuti. 1812 01:21:37,110 --> 01:21:40,364 Tako se u drugom primjeru, mi imala document.getElementByID, 1813 01:21:40,364 --> 01:21:42,280 tako da smo imali ovako dugo niz koji će doći 1814 01:21:42,280 --> 01:21:44,290 Element by god ID ima. 1815 01:21:44,290 --> 01:21:46,470 To je zamijenjen ovim pozivom ovdje. 1816 01:21:46,470 --> 01:21:50,860 Tako ćete vidjeti znak za dolar, onda ćete vidjeti ponudu, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag je uvijek selektor. 1818 01:21:52,370 --> 01:21:54,730 Ona kaže, u redu, to ima veze s osobnom iskaznicom. 1819 01:21:54,730 --> 01:21:56,120 Što je selektor za klasu? 1820 01:21:56,120 --> 01:21:57,190 >> PUBLIKA: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> DAVIN: Dot, zar ne. 1822 01:21:57,960 --> 01:22:01,950 Ako ste samo ide odaberite oznaku, što 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 A ti bi mogao koristiti da ovdje, kao dobro. 1825 01:22:05,560 --> 01:22:08,560 >> Gabe: I po oznakama, mislimo kao div, na primjer, i glavu. 1826 01:22:08,560 --> 01:22:11,500 >> DAVIN: ili tijelo ili p ili tako nešto, da. 1827 01:22:11,500 --> 01:22:14,390 Dakle ovdje, u redu, umjesto da kaže document.getElementByID, 1828 01:22:14,390 --> 01:22:16,500 to je samo točno istu stvar. 1829 01:22:16,500 --> 01:22:17,990 Samo u jQuery, to je kraći. 1830 01:22:17,990 --> 01:22:19,860 Dakle, to je jednostavniji. 1831 01:22:19,860 --> 01:22:23,420 Dakle, nema više onclick, samo kliknite. 1832 01:22:23,420 --> 01:22:26,320 jQuery funkcija, nazivaju tu funkciju. 1833 01:22:26,320 --> 01:22:27,580 Uzbuna je isti. 1834 01:22:27,580 --> 01:22:29,452 Dakle, to je malo manji ili malo 1835 01:22:29,452 --> 01:22:32,410 kraći, a malo bit-- ljudi misle to je malo lakše za napisati, 1836 01:22:32,410 --> 01:22:34,600 malo lakše razumjeti. 1837 01:22:34,600 --> 01:22:35,640 No, to je jQuery. 1838 01:22:35,640 --> 01:22:37,887 Puno ljudi se malo malo zbunjeni i zabrinuti 1839 01:22:37,887 --> 01:22:40,220 a oni misle, OK, jQuery razlikuje od JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Moram se sjetiti tih dvije različite stvari. 1841 01:22:42,136 --> 01:22:42,740 To nije. 1842 01:22:42,740 --> 01:22:45,315 Mislim, to je drugačija sintaksu. 1843 01:22:45,315 --> 01:22:46,970 No, jQuery je JavaScript. 1844 01:22:46,970 --> 01:22:50,050 To je samo naizgled Bolje verzija koja 1845 01:22:50,050 --> 01:22:51,967 možda biti lakše razumijem da ljudi koriste. 1846 01:22:51,967 --> 01:22:53,716 Gabe: Da, to se Iskreno, da je dolar znak 1847 01:22:53,716 --> 01:22:57,240 da vidite u jQuery, to je samo naziv funkcije koje jQuery definira. 1848 01:22:57,240 --> 01:22:58,614 To ne mora ništa posebno. 1849 01:22:58,614 --> 01:23:03,140 Je li to samo ime funkcije, baš kao što bi mogao odrediti znak za dolar. 1850 01:23:03,140 --> 01:23:05,670 >> DAVIN: Da, tako je govorio o tome. 1851 01:23:05,670 --> 01:23:06,680 Neke korisne stvari. 1852 01:23:06,680 --> 01:23:10,414 Tražio sam vratiti na stare kvizova. 1853 01:23:10,414 --> 01:23:13,080 U posljednjih nekoliko kvizova, oni ' morali koristiti stvari kao što je ovaj. 1854 01:23:13,080 --> 01:23:15,230 Dakle document.ready, tako pobrinite se da je sve u 1855 01:23:15,230 --> 01:23:17,410 učitan prije nego što počnete raditi neke stvari. 1856 01:23:17,410 --> 01:23:20,120 Odaberite ID ili odaberite klase, što je upravo 1857 01:23:20,120 --> 01:23:24,020 biti citat dot neke klase, End quote. 1858 01:23:24,020 --> 01:23:26,580 Pošaljite, pa ako ste Slanjem obrasca i poziv 1859 01:23:26,580 --> 01:23:28,830 Ova funkcija nakon obliku podnosi. 1860 01:23:28,830 --> 01:23:34,210 Vrijednost, pa recimo da imam formu podnesak, poput korisničkog imena, e-mail, 1861 01:23:34,210 --> 01:23:34,950 god. 1862 01:23:34,950 --> 01:23:36,010 Imao sam tekstualni okvir. 1863 01:23:36,010 --> 01:23:37,670 Dakle, ja sam tipkati u tom okvir za tekst. 1864 01:23:37,670 --> 01:23:42,170 Pa, ako želite da biste dobili vrijednost iz tog teksta kutije, koristite dot Val. 1865 01:23:42,170 --> 01:23:44,050 A onda, ovdje, dot HTML je ista 1866 01:23:44,050 --> 01:23:47,710 je kao dokument točke getElementByID dot InnerHTML. 1867 01:23:47,710 --> 01:23:50,890 Tako da će se vratiti što HTML s tim ID. 1868 01:23:50,890 --> 01:23:55,080 Evo, samo koristiti neke ID ili bilo dot HTML. 1869 01:23:55,080 --> 01:23:56,930 To ćete dobiti HTML iz tog elementa. 1870 01:23:56,930 --> 01:24:00,130 Ako ste htjeli onda to promijeniti HTML, možete ga davati nešto. 1871 01:24:00,130 --> 01:24:05,600 Tako da bih se kao dot HTML, a zatim unutra, citati, novi HTML ili nešto. 1872 01:24:05,600 --> 01:24:07,490 >> Gabe: OK, tako AJAX. 1873 01:24:07,490 --> 01:24:10,347 Volim razumjeti AJAX jako dobro. 1874 01:24:10,347 --> 01:24:12,430 Dakle, želim vam dečki na razumjeti AJAX jako dobro. 1875 01:24:12,430 --> 01:24:14,221 Jer ako to ne učinite, ti si prilično ide 1876 01:24:14,221 --> 01:24:16,810 razumjeti sve što ima veze s HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript zbog svega toga dolazi zajedno u AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX nije jezik. 1879 01:24:25,130 --> 01:24:27,000 AJAX je tehnika. 1880 01:24:27,000 --> 01:24:31,690 I to koristi puno različitih alata. 1881 01:24:31,690 --> 01:24:35,090 AJAX je kratica za asinkroni JavaScript XML. 1882 01:24:35,090 --> 01:24:36,730 Dakle metoda, jezik, podaci. 1883 01:24:36,730 --> 01:24:40,610 >> Tako je glavni jezik koji se koristi u AJAX da se aktiviraju sve 1884 01:24:40,610 --> 01:24:42,830 i da obrađuju sve kasnije je JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Zato što se odnosi vrlo blizu JavaScript. 1886 01:24:45,160 --> 01:24:49,810 A onda je asinkroni jer mi se ne da raditi 1887 01:24:49,810 --> 01:24:51,980 odjednom kad smo učitavanja stranice. 1888 01:24:51,980 --> 01:24:57,190 To je ono što možemo činiti stvari vrsta paralelno. 1889 01:24:57,190 --> 01:24:59,725 Osnovna ideja AJAX je da želite 1890 01:24:59,725 --> 01:25:02,170 da bi dobili neke određene informacije. 1891 01:25:02,170 --> 01:25:06,450 Na primjer, ako pišete novi korisničko ime kada se registrirate korisničko ime, 1892 01:25:06,450 --> 01:25:08,520 moje korisničko ime je abc123. 1893 01:25:08,520 --> 01:25:11,671 I onda, na kraju Oblik, morate kliknite Pošalji. 1894 01:25:11,671 --> 01:25:14,420 I to je morao ići na poslužitelju, a zatim provjerite je li u bazi podataka, 1895 01:25:14,420 --> 01:25:15,594 abc123 je već tamo. 1896 01:25:15,594 --> 01:25:18,510 A ako je već tu, ona kaže, korisničko ime već u bazi podataka. 1897 01:25:18,510 --> 01:25:21,010 I oni, morate ispuniti iz cijelog obrasca opet. 1898 01:25:21,010 --> 01:25:23,110 A to je jako, jako loše. 1899 01:25:23,110 --> 01:25:25,440 >> I onda ljudi kažu, OK, zašto ne možemo jednostavno 1900 01:25:25,440 --> 01:25:29,560 napraviti malu HTTP zahtjev da samo provjeriti vidjeti ako to korisnik u bazi podataka 1901 01:25:29,560 --> 01:25:32,080 Prije korisnik morao dostaviti cjelokupnu formu? 1902 01:25:32,080 --> 01:25:36,350 Tako na primjer, kada je Korisnik završi upišete abc123, 1903 01:25:36,350 --> 01:25:39,660 neka je samo ići na server malo malo i samo se istina ili laž 1904 01:25:39,660 --> 01:25:43,080 od poslužitelja da vidi ako to je valjan korisničko ime ili ne. 1905 01:25:43,080 --> 01:25:49,250 U redu, tako da je jedan od glavnih koristi AJAX danas još uvijek. 1906 01:25:49,250 --> 01:25:52,130 >> DAVIN: Dakle vrlo brzo, u Ajax poziv u jQuery, 1907 01:25:52,130 --> 01:25:54,770 što bi moglo značiti da vas želite da bude sinkroni. 1908 01:25:54,770 --> 01:25:56,330 Vi ne bi trebali to učiniti. 1909 01:25:56,330 --> 01:25:57,640 No, što se može učiniti. 1910 01:25:57,640 --> 01:25:59,277 A ako je to učinio, što bi se dogodilo? 1911 01:25:59,277 --> 01:26:01,610 Pa, na primjer, kada ste sve vijesti ili bilo što drugo, 1912 01:26:01,610 --> 01:26:05,464 Vaš preglednik će pričekati dok to cijela poziv završi 1913 01:26:05,464 --> 01:26:08,130 umjesto da ste vi drugima stvari odmah nakon što ga kliknete. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> Gabe: Nije prolazi više. 1916 01:26:17,115 --> 01:26:19,681 O moj Bože. 1917 01:26:19,681 --> 01:26:20,180 Žao 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 "U prošlosti, Klijent je potrebno da se zahtjev 1921 01:26:25,350 --> 01:26:26,840 Cijeli sadržaj web stranice. " 1922 01:26:26,840 --> 01:26:28,210 To je ono što sam rekao. 1923 01:26:28,210 --> 01:26:30,070 To nam omogućuje slanje Dodatni GET ili POST 1924 01:26:30,070 --> 01:26:32,140 Zahtjevi bez potrebe ponovno učitati naš preglednik. 1925 01:26:32,140 --> 01:26:34,806 Dakle, na kraju dana, mi smo Zapravo se radi o HTTP zahtjeve 1926 01:26:34,806 --> 01:26:35,740 Ovdje pomoću JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Jer prije, samo smo se JavaScript mijenjati HTML koji je već došao. 1928 01:26:39,700 --> 01:26:43,110 A sada, možemo ga koristiti za sučelje s web poslužitelja te. 1929 01:26:43,110 --> 01:26:46,140 Način se to dogodi je imamo klijenta. 1930 01:26:46,140 --> 01:26:47,340 Davin je klijent. 1931 01:26:47,340 --> 01:26:50,797 A on je sav JavaScript trčanje jer HTML je glupo. 1932 01:26:50,797 --> 01:26:51,630 JavaScript je pametna. 1933 01:26:51,630 --> 01:26:54,690 Dakle davin Davin je njegova pametna dio i njegov glupi dio. 1934 01:26:54,690 --> 01:26:57,590 On će iskoristiti svoju pametnu dio sada. 1935 01:26:57,590 --> 01:27:00,860 On će iskoristiti JavaScript to zahtjeva, na primjer, 1936 01:27:00,860 --> 01:27:04,340 je li abc123 u baze podataka ili ne. 1937 01:27:04,340 --> 01:27:08,450 >> Dakle Davin, molim vas, vi samo pošaljite mi HTTP zahtjev. 1938 01:27:08,450 --> 01:27:09,197 Hvala Vam. 1939 01:27:09,197 --> 01:27:10,530 Dakle, on je samo poslao HTTP zahtjev. 1940 01:27:10,530 --> 01:27:11,270 Vidiš da je? 1941 01:27:11,270 --> 01:27:14,700 I to je upravo isti način da bilo HTTP zahtjev je poslan. 1942 01:27:14,700 --> 01:27:16,830 Preglednik, Google Chrome ili nešto, je 1943 01:27:16,830 --> 01:27:19,570 ide da se vidi da je Davin pokušavate poslati HTTP zahtjev, 1944 01:27:19,570 --> 01:27:20,930 će vam pomoći hm malo. 1945 01:27:20,930 --> 01:27:23,950 I to će ići sve do poslužitelja. 1946 01:27:23,950 --> 01:27:27,370 Sada, poslužitelj će imati PHP ovdje, ili bilo koji drugi jezik. 1947 01:27:27,370 --> 01:27:29,990 Baš kao u normalnom HTTP zahtjev. 1948 01:27:29,990 --> 01:27:31,950 To je prilično normalno HTTP zahtjev. 1949 01:27:31,950 --> 01:27:33,658 >> A onda, poslužitelj će reći, u redu, 1950 01:27:33,658 --> 01:27:37,270 Davin me želi provjeriti je li ovo abc123 je u bazi podataka. 1951 01:27:37,270 --> 01:27:38,310 Idi razgovarati s modelom. 1952 01:27:38,310 --> 01:27:41,310 Model kaže da nije. abc123 je dobro korisničko ime. 1953 01:27:41,310 --> 01:27:47,940 A onda, web poslužitelj će koristiti PHP pružiti neki oblik datoteke. 1954 01:27:47,940 --> 01:27:52,280 To bi moglo biti doslovno samo datoteke koji sadrži "da" u njemu, ili "ne, 1955 01:27:52,280 --> 01:27:53,315 ili nešto slično. 1956 01:27:53,315 --> 01:27:54,190 To bi mogao biti bilo datoteka. 1957 01:27:54,190 --> 01:27:57,080 >> To bi moglo biti kao što ću pošalji Davin sliku patke 1958 01:27:57,080 --> 01:28:01,200 ako je u bazi podataka i poslati sliku hrčka 1959 01:28:01,200 --> 01:28:02,420 Ako to nije u bazi podataka. 1960 01:28:02,420 --> 01:28:04,294 To će biti neka vrsta glupo, ali to će raditi. 1961 01:28:04,294 --> 01:28:07,030 U redu, tako da sam poslati patka Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin dobio patka. 1963 01:28:08,150 --> 01:28:13,330 A sad, tko će rukovati patka? 1964 01:28:13,330 --> 01:28:16,390 Davin je pametna dio opet, tako JavaScript, zar ne? 1965 01:28:16,390 --> 01:28:18,620 JavaScript je poslao Zahtjev i JavaScript 1966 01:28:18,620 --> 01:28:22,300 će primiti zahtjev i tumačiti ga u nekom obliku. 1967 01:28:22,300 --> 01:28:26,630 >> I u tom smislu, to će kažu, u redu, ako je patka onda sam dobro. 1968 01:28:26,630 --> 01:28:30,770 Ako hrčak, onda idem reći, ne, korisničko ime već 1969 01:28:30,770 --> 01:28:31,970 postoji u bazi podataka. 1970 01:28:31,970 --> 01:28:33,845 Ali obično, nisi će poslati patka. 1971 01:28:33,845 --> 01:28:36,740 Ti si idući u poslati nešto malo pametniji. 1972 01:28:36,740 --> 01:28:40,320 I ono što mi koristimo je XML. 1973 01:28:40,320 --> 01:28:42,690 I u novije vrijeme, mi koristimo JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON je samo JavaScript Objekt oznake, koje 1975 01:28:45,629 --> 01:28:47,670 je u osnovi ste dobili Cijeli JavaScript objekt. 1976 01:28:47,670 --> 01:28:50,820 A ti ga staviti u datoteku, baš kao i da CS50 objekt koji ti dečki vidjeli. 1977 01:28:50,820 --> 01:28:53,090 Možete ga staviti u datoteku, a možete ga poslati preko Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Dakle, u ovom slučaju, ja bih napraviti JavaScript objekt 1979 01:28:55,850 --> 01:28:59,570 a samo reći, korisnički postoji, da. 1980 01:28:59,570 --> 01:29:01,630 Ili korisnik ne postoji, nema. 1981 01:29:01,630 --> 01:29:02,810 I poslati ga natrag na njega. 1982 01:29:02,810 --> 01:29:03,830 A zašto JSON? 1983 01:29:03,830 --> 01:29:07,330 Jer osoba tko prima je to 1984 01:29:07,330 --> 01:29:10,030 će koristiti JavaScript rukovati odgovor. 1985 01:29:10,030 --> 01:29:14,970 I JavaScript funkcionira tako dobro, jer to se zove JavaScript Object oznake. 1986 01:29:14,970 --> 01:29:15,470 Pravo? 1987 01:29:15,470 --> 01:29:19,660 Dakle, on je samo može nazvati funkciju i dobiti Ova lijepa objekt od odgovora. 1988 01:29:19,660 --> 01:29:22,890 A onda, on će znati je li da je korisnik u bazi podataka ili ne. 1989 01:29:22,890 --> 01:29:25,230 >> Dakle vidite, sve to dolazi zajedno u web poslužitelja, 1990 01:29:25,230 --> 01:29:28,450 a onda je jedan HTTP zahtjev i jedan HTTP odgovora i sve. 1991 01:29:28,450 --> 01:29:30,600 Dakle, pobrinite se da dečki razumijem ovo AJAX poziva 1992 01:29:30,600 --> 01:29:37,260 jer vam pomaže da razumijete sve od pojmova govorimo o tome. 1993 01:29:37,260 --> 01:29:40,260 >> Dakle, ovdje je primjer AJAX s jQuery. 1994 01:29:40,260 --> 01:29:42,130 I ovdje, radimo s Get JSON. 1995 01:29:42,130 --> 01:29:45,660 Dakle, mi ne pokušavamo dobiti slika mačke ovdje, ili patka. 1996 01:29:45,660 --> 01:29:48,110 Pokušavamo dobiti JSON datoteku. 1997 01:29:48,110 --> 01:29:51,184 A onda ćemo čekati do to je učinjeno, učinjeno točka. 1998 01:29:51,184 --> 01:29:52,850 To znači da čekam odgovor. 1999 01:29:52,850 --> 01:29:54,180 To bi moglo potrajati neko vrijeme. 2000 01:29:54,180 --> 01:29:56,360 Onda, vidite malo opterećenje. 2001 01:29:56,360 --> 01:29:59,340 Ako želite to učiniti u vaše web stranice. 2002 01:29:59,340 --> 01:30:01,440 Dakle dot učinio, i što onda se događa kada se to radi? 2003 01:30:01,440 --> 01:30:04,040 Možete proći anonimni funkcija, kao što smo vidjeli prije. 2004 01:30:04,040 --> 01:30:07,800 Zbog učinio je događaj, baš kao što je klikom miša ili bilo što drugo, 2005 01:30:07,800 --> 01:30:08,710 za jQuery. 2006 01:30:08,710 --> 01:30:13,710 Tako ćete proći u ovoj funkciji podataka, teksta, status, i jqXHR. 2007 01:30:13,710 --> 01:30:15,790 A u osnovi, to je samo su neke varijable 2008 01:30:15,790 --> 01:30:22,160 koje možete koristiti kasnije imati status HTTP zahtjeva, 2009 01:30:22,160 --> 01:30:24,470 Podaci koji se događa poslati natrag na vas. 2010 01:30:24,470 --> 01:30:28,740 Pa onda možete kasnije ga tumače i učiniti nešto smisleno s njom. 2011 01:30:28,740 --> 01:30:30,240 A ako to ne uspije, kad bi mogao to uspjeti? 2012 01:30:30,240 --> 01:30:33,780 Pa, kad HTTP zahtjev daje ti 500 ili nešto slično. 2013 01:30:33,780 --> 01:30:37,420 Zatim, to će vam reći status, kakav neuspjeh koji je, 2014 01:30:37,420 --> 01:30:38,420 i svašta. 2015 01:30:38,420 --> 01:30:40,630 Imate kako bi bili sigurni nositi oba slučaja, 2016 01:30:40,630 --> 01:30:42,770 inače Program poludi. 2017 01:30:42,770 --> 01:30:45,820 >> DAVIN: Pa da, to je točno ono što je vidio na svom posljednjem p-set. 2018 01:30:45,820 --> 01:30:49,720 Stvarni AJAX poziva u GET JSON. 2019 01:30:49,720 --> 01:30:50,587 To je poziv. 2020 01:30:50,587 --> 01:30:52,920 A onda, dot učinio je poput provjerava ako je uspješna. 2021 01:30:52,920 --> 01:30:55,620 Ako je uspješno, što želite učiniti nešto s podacima. 2022 01:30:55,620 --> 01:30:59,290 Možete se vratiti iz toga JSON zatražiti podatke. 2023 01:30:59,290 --> 01:31:00,600 To je ono što ste dobili natrag. 2024 01:31:00,600 --> 01:31:04,470 Dakle, ako se sjećate iz vašeg p-set, puno vas su kao nosač podataka i 2025 01:31:04,470 --> 01:31:06,302 ili što god, dot link ili naslov. 2026 01:31:06,302 --> 01:31:08,260 Što god se vraća iz tog JSON, bez obzira na 2027 01:31:08,260 --> 01:31:11,020 polja u toj JSON objekt, to je ono što ste uzimajući natrag. 2028 01:31:11,020 --> 01:31:12,394 Podaci se što ste uzimajući natrag. 2029 01:31:12,394 --> 01:31:15,510 Status Tekst, samo nešto što omogućuje vam da znate što se dogodilo. 2030 01:31:15,510 --> 01:31:20,570 A onda, jqXHR, to je samo jQuery XML HTTP zahtjev. 2031 01:31:20,570 --> 01:31:21,990 To je samo kao objekt. 2032 01:31:21,990 --> 01:31:23,932 A onda uspjeti, baš kao i Gabe rekao. 2033 01:31:23,932 --> 01:31:27,140 Gabe: U našoj maloj primjer abc123 samo da provjerite je li da je u bazi podataka 2034 01:31:27,140 --> 01:31:32,260 ili ne, podaci će biti nešto što će učiniti, ako se podaci dot korisničko ime postoji, 2035 01:31:32,260 --> 01:31:37,720 što je ono što vaš PHP generirana za ti, ako se podaci dot korisničko ime postoji, onda 2036 01:31:37,720 --> 01:31:40,880 Idem upozoriti, korisnik Naziv već postoji. 2037 01:31:40,880 --> 01:31:44,300 Inače, ja samo ću pustiti Korisnik nastaviti ispunjavanjem obrasca. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, sigurnost, super. 2040 01:31:50,820 --> 01:31:52,060 >> DAVIN: mi želite? 2041 01:31:52,060 --> 01:31:54,500 >> Gabe: Volim ovaj jedan. 2042 01:31:54,500 --> 01:31:57,680 Dakle, nešto što izgleda poznato. 2043 01:31:57,680 --> 01:31:59,750 Skoro smo gotovi. 2044 01:31:59,750 --> 01:32:02,670 Dakle, ovo je samo primjer ti dečki vidio u razredu. 2045 01:32:02,670 --> 01:32:04,860 Ti su pomoću ovdje argv1. 2046 01:32:04,860 --> 01:32:06,460 To je kao argument komandne linije u. 2047 01:32:06,460 --> 01:32:09,270 I mi smo mem kopiranja koja u puferu veličine 12. 2048 01:32:09,270 --> 01:32:12,560 Što je ovdje problem? 2049 01:32:12,560 --> 01:32:13,660 Buffer overflow! 2050 01:32:13,660 --> 01:32:15,400 Budući da imamo tampon veličine 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 može imati veličinu od dvije milijarde eura. 2052 01:32:18,400 --> 01:32:19,960 Mi ne radimo nikakvu granicu provjere. 2053 01:32:19,960 --> 01:32:24,970 Tako smo mogli kopirati puno memorije. 2054 01:32:24,970 --> 01:32:28,630 I mi ćemo biti osobito loše o tome. 2055 01:32:28,630 --> 01:32:32,600 Ono što smo mogli učiniti da to Vrlo, vrlo znači u ovom slučaju? 2056 01:32:32,600 --> 01:32:33,278 Da? 2057 01:32:33,278 --> 01:32:36,528 PUBLIKA: Dio dvije milijarde stvari sadrži izvršni kôd koji vraća 2058 01:32:36,528 --> 01:32:38,127 [Nečujan]. 2059 01:32:38,127 --> 01:32:38,710 Gabe: Točno. 2060 01:32:38,710 --> 01:32:41,110 Dakle, to je vrsta Ono što ljudi koriste 2061 01:32:41,110 --> 01:32:43,344 jailbreak iPhone, npr. 2062 01:32:43,344 --> 01:32:44,260 Dakle, takve stvari. 2063 01:32:44,260 --> 01:32:48,610 Zato što jednostavno možete napraviti uređaj izvršiti bilo koji broj koji vam se sviđa. 2064 01:32:48,610 --> 01:32:50,247 Popraviti, tako da je lako popraviti. 2065 01:32:50,247 --> 01:32:51,330 Samo provjerite granica. 2066 01:32:51,330 --> 01:32:53,455 Možete provjeriti null, jer uvijek provjerite null 2067 01:32:53,455 --> 01:32:54,940 kad imamo posla sa žicama. 2068 01:32:54,940 --> 01:32:57,840 A onda, što se Duljina niza prije. 2069 01:32:57,840 --> 01:33:00,150 A ako je string Duljina je valjana string 2070 01:33:00,150 --> 01:33:03,700 Duljina, koji je u 0 i 12, onda smo dobri. 2071 01:33:03,700 --> 01:33:07,144 >> DAVIN: Ako ne provjerava null, jako brzo, što će se dogoditi? 2072 01:33:07,144 --> 01:33:07,810 To će SEG grešku. 2073 01:33:07,810 --> 01:33:10,850 Zašto će to SEG kriv? 2074 01:33:10,850 --> 01:33:12,510 Jer vi nazivate strlen na nulu. 2075 01:33:12,510 --> 01:33:13,010 Gabe: Da. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Istina ili laž, koristeći jedan Lozinka je dobra ideja. 2078 01:33:19,630 --> 01:33:20,430 >> PUBLIKA: False. 2079 01:33:20,430 --> 01:33:21,150 >> Gabe: False. 2080 01:33:21,150 --> 01:33:23,870 Koristite mnogo lozinke i velike, duge one. 2081 01:33:23,870 --> 01:33:26,050 Lokot ikona osigurala sigurnost. 2082 01:33:26,050 --> 01:33:27,080 >> PUBLIKA: False. 2083 01:33:27,080 --> 01:33:27,749 >> Gabe: False. 2084 01:33:27,749 --> 01:33:28,790 To ne znači ništa. 2085 01:33:28,790 --> 01:33:30,480 To je samo simbol. 2086 01:33:30,480 --> 01:33:32,824 SSL štiti Čovjek u sredini napada. 2087 01:33:32,824 --> 01:33:33,490 PUBLIKA: False. 2088 01:33:33,490 --> 01:33:34,110 Gabe: False. 2089 01:33:34,110 --> 01:33:35,355 U redu, tako da svi oni su lažne. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Nice. 2092 01:33:39,490 --> 01:33:40,220 [Nečujan] 2093 01:33:40,220 --> 01:33:42,500 Želite li razgovarati o tome? 2094 01:33:42,500 --> 01:33:43,259 Tvoj red. 2095 01:33:43,259 --> 01:33:45,050 DAVIN: Vrste napada, čovjek u sredini. 2096 01:33:45,050 --> 01:33:47,134 Što je čovjek u sredini napada? 2097 01:33:47,134 --> 01:33:48,050 PUBLIKA: [nečujan]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 DAVIN: Ako šaljete HTTP Zahtjev, mogli su to učiniti, zar ne? 2100 01:33:54,020 --> 01:33:57,890 No, ako šaljete HTTPS, oni Vjerojatno neće biti u mogućnosti to učiniti. 2101 01:33:57,890 --> 01:33:59,952 Postoji mnogo točaka uz vaše veze. 2102 01:33:59,952 --> 01:34:00,660 Imate usmjerivača. 2103 01:34:00,660 --> 01:34:01,746 Imate DNS poslužitelja. 2104 01:34:01,746 --> 01:34:04,120 Ako je netko u mogućnosti da fizički vidjeti što šaljete, 2105 01:34:04,120 --> 01:34:06,140 tako da je netko u stanju zapravo dobiti između vas, 2106 01:34:06,140 --> 01:34:08,840 klijent i poslužitelj, te je moći vidjeti što šaljete, 2107 01:34:08,840 --> 01:34:10,298 to je čovjek u sredini napada. 2108 01:34:10,298 --> 01:34:14,287 Pa da vidimo što pokušavate dobiti od poslužitelja, ili je u stanju see-- gore, 2109 01:34:14,287 --> 01:34:16,620 možda ćete moći vidjeti Cookies ili nešto slično. 2110 01:34:16,620 --> 01:34:19,290 >> Tako na primjer, ako da ne koristite SSL, on 2111 01:34:19,290 --> 01:34:21,900 mogli vidjeti Vaše kolačiće. 2112 01:34:21,900 --> 01:34:25,460 I to se zove sjednici otmice jer on vidi svoje osobne kolačiće, 2113 01:34:25,460 --> 01:34:28,317 a onda je u stanju ići na to web stranice i pretvarati se da ste. 2114 01:34:28,317 --> 01:34:31,150 Jer baš kao u PHP-u, sjećam kad smo prijavljeni, što nam je činiti? 2115 01:34:31,150 --> 01:34:33,340 Postavili smo ID sesije jednak ID. 2116 01:34:33,340 --> 01:34:34,810 Tako da vas identificira. 2117 01:34:34,810 --> 01:34:38,300 To je razlog zašto možete vidjeti svoj portfelj a ne svi ostali portfelja. 2118 01:34:38,300 --> 01:34:42,320 >> Pa, ako sam u mogućnosti da biste dobili taj kolačić, onda ja mogu prijaviti na toj stranici. 2119 01:34:42,320 --> 01:34:45,380 A onda, ja mogu samo vidjeti svoje stvari i početi kupnju i prodaju stvari. 2120 01:34:45,380 --> 01:34:46,800 Dakle, to je sjednici otmice. 2121 01:34:46,800 --> 01:34:50,810 Ali ti ne bi trebao biti u mogućnosti to-- pa vas možete koristiti čovjek u sredini napada 2122 01:34:50,810 --> 01:34:52,290 čak i ako oni koriste SSL. 2123 01:34:52,290 --> 01:34:53,520 Ali ti ne bi trebao biti u mogućnosti. 2124 01:34:53,520 --> 01:34:56,580 Ako se koriste SSL, ne mogu oteti sjednici. 2125 01:34:56,580 --> 01:34:58,927 Zašto? 2126 01:34:58,927 --> 01:35:01,135 Jer to je sve šifrirano, zar ne? ako je kodiran, 2127 01:35:01,135 --> 01:35:03,509 a ja sam još uvijek čovjek u srednje, ja još uvijek dobiti svoje podatke. 2128 01:35:03,509 --> 01:35:04,279 To je u redu. 2129 01:35:04,279 --> 01:35:05,070 No, to je šifriran. 2130 01:35:05,070 --> 01:35:07,750 Pa ja stvarno ne mogu ga koristiti. 2131 01:35:07,750 --> 01:35:09,840 Dakle, to je dva. 2132 01:35:09,840 --> 01:35:11,544 >> Jako brzo, Cross Site zahtjev za krivotvorenje. 2133 01:35:11,544 --> 01:35:13,960 To je samo ako postoji veza i da je veza radi nešto 2134 01:35:13,960 --> 01:35:14,890 da ne mislim da je to trebao učiniti. 2135 01:35:14,890 --> 01:35:18,150 Tako na primjer, ako je veza bila će kupiti dionice ili prodati dionice, 2136 01:35:18,150 --> 01:35:19,360 a nisu znali da je. 2137 01:35:19,360 --> 01:35:22,040 Vi kliknuli na link, poslao zahtjev, kupio 2138 01:35:22,040 --> 01:35:24,240 ili prodao nešto što što ne znači da radim. 2139 01:35:24,240 --> 01:35:25,120 To je to. 2140 01:35:25,120 --> 01:35:30,720 >> Cross Site Scripting, pa evo, što prolazi kroz u promjenjivim q, 2141 01:35:30,720 --> 01:35:33,510 umjesto da prolazi u nekakvoj vrijednosti, možda je q poput imena. 2142 01:35:33,510 --> 01:35:36,560 Dakle, umjesto da prolazi q jednakima Davin ili nešto slično, 2143 01:35:36,560 --> 01:35:38,740 Ako ne koristite HTML Posebne znakova, ako vas 2144 01:35:38,740 --> 01:35:43,100 ne pobjegne to kako bi bili sigurni da je OK, onda sam mogao proći umjesto toga, 2145 01:35:43,100 --> 01:35:46,910 recimo ovdje govorim print ili nešto slično, 2146 01:35:46,910 --> 01:35:51,070 onda sam mogao proći u tu skriptu poziv. 2147 01:35:51,070 --> 01:35:53,140 >> Dakle, umjesto da Samo dobivanje varijable, 2148 01:35:53,140 --> 01:35:54,960 Ja bih onda izvršiti ovu skriptu poziv. 2149 01:35:54,960 --> 01:35:57,065 Dakle, u tom pismu nazvati, što učiniti? 2150 01:35:57,065 --> 01:36:00,190 Dokument dot mjesto, koje će promijeniti položaj dokumenta. 2151 01:36:00,190 --> 01:36:02,290 Tako ću preusmjeriti negdje drugdje. 2152 01:36:02,290 --> 01:36:08,170 To se zove negativac u Ovaj primjer, vrlo dobar. 2153 01:36:08,170 --> 01:36:10,536 Ne mogu se sjetiti riječi. 2154 01:36:10,536 --> 01:36:12,410 A onda, što je još još gore je da idem 2155 01:36:12,410 --> 01:36:16,832 tada postavili kolačić, što je neke varijabla imam na ovim stranicama. 2156 01:36:16,832 --> 01:36:19,040 Ja ću postaviti je jednaka na dokument dot kolačić. 2157 01:36:19,040 --> 01:36:20,660 Dakle, ja ću ukrasti vaš kolačić. 2158 01:36:20,660 --> 01:36:22,951 I ja ću preusmjeriti neke informacije na web stranici 2159 01:36:22,951 --> 01:36:25,120 da ne bi trebao biti pristup. 2160 01:36:25,120 --> 01:36:29,250 I to sve se događa, jer si Ne bježeći što ste vidjeli. 2161 01:36:29,250 --> 01:36:29,910 Da? 2162 01:36:29,910 --> 01:36:32,160 >> PUBLIKA: Dakle, samo da bi li to jasno, to je 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com da je osjetljiv na to. 2164 01:36:37,550 --> 01:36:39,300 Tako da veza može se pojaviti na nekoj stranici. 2165 01:36:39,300 --> 01:36:42,200 Netko klikne na njega, ide vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Imate kolačić vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Recimo Facebook ranjiva, pa facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Imate svoj Facebook kolačić. 2169 01:36:48,310 --> 01:36:50,925 Što to radiš, ti si ide na facebook.com, 2170 01:36:50,925 --> 01:36:53,990 odmah je preusmjeravanje da badguy.com, 2171 01:36:53,990 --> 01:36:57,182 ali uključujući podatke kolačića. 2172 01:36:57,182 --> 01:36:59,310 Tako da je brzo preusmjeravanje, ali vaš Facebook kolačić 2173 01:36:59,310 --> 01:37:02,572 je uključen koje preusmjeravaju, a to je kako su [nečujan]. 2174 01:37:02,572 --> 01:37:04,280 Gabe: Da, tu je neke vrlo ružno 2175 01:37:04,280 --> 01:37:06,070 da se ljudi mogu učiniti ako je ovo. 2176 01:37:06,070 --> 01:37:09,190 Na primjer, ako je dopuštena Prijava svatko bi promijenili svoje korisničko ime, 2177 01:37:09,190 --> 01:37:11,680 a oni nisu učinili bilo razum provjere, tako da 2178 01:37:11,680 --> 01:37:16,810 može umetnuti JavaScript stvar koja mijenja svoju sliku na hrčak. 2179 01:37:16,810 --> 01:37:22,590 I to unosi istu JavaScript u svakoga tko pogleda svoju stranicu. 2180 01:37:22,590 --> 01:37:26,400 Dakle, svatko tko pogleda svoju stranicu ima isto korisničko ime. 2181 01:37:26,400 --> 01:37:30,104 I zato što je virus, ona širi eksponencijalno. 2182 01:37:30,104 --> 01:37:32,270 DAVIN: Mi ćemo preskočiti zadnji jedan, a onda smo gotovi. 2183 01:37:32,270 --> 01:37:34,120 Dakle, ovo je samo jedan primjer. 2184 01:37:34,120 --> 01:37:36,120 Dakle, to je da oni nisu bježeći svoje SQL tablica. 2185 01:37:36,120 --> 01:37:37,090 Dakle, možete ga ispustiti. 2186 01:37:37,090 --> 01:37:38,805 Dakle, želite pobjeći stvari. 2187 01:37:38,805 --> 01:37:44,010 To je bila prethodna primjer s Cross Site Scripting. 2188 01:37:44,010 --> 01:37:45,430 Žao mi ran malo kasno. 2189 01:37:45,430 --> 01:37:46,870 Sutra, ispričavam se! 2190 01:37:46,870 --> 01:37:48,560 Sutra, imamo radno vrijeme. 2191 01:37:48,560 --> 01:37:50,870 Tako radno vrijeme u Cabbot od 08:00 do 11:00. 2192 01:37:50,870 --> 01:37:55,240 Radno vrijeme su isključivo za kviz pitanja. 2193 01:37:55,240 --> 01:37:56,587