1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH Blumberg: Pozdrav svima. 3 00:00:07,030 --> 00:00:09,530 Idemo za početak Samo nekoliko minuta ranije 4 00:00:09,530 --> 00:00:11,738 jer imamo puno materijala da se kroz. 5 00:00:11,738 --> 00:00:12,790 Ja sam Hannah. 6 00:00:12,790 --> 00:00:13,865 Ja sam TF. 7 00:00:13,865 --> 00:00:16,239 Maria će se pridružiti nas u samo nekoliko minuta. 8 00:00:16,239 --> 00:00:17,560 Predaje odjeljak pravo prije. 9 00:00:17,560 --> 00:00:19,351 Učim odjeljak pravo nakon što je, kako ćemo 10 00:00:19,351 --> 00:00:21,200 da bi ga na sat i pol. 11 00:00:21,200 --> 00:00:25,490 >> Dakle, kao što ćete vidjeti ovdje, imamo dosta nekoliko tema moramo proći, 12 00:00:25,490 --> 00:00:27,200 pa ćemo se ide malo brže. 13 00:00:27,200 --> 00:00:31,140 Ali, ako u bilo kojem trenutku možemo reći nešto prebrzo ili ne razumiju, 14 00:00:31,140 --> 00:00:33,170 slobodno prekinuti s pitanjima. 15 00:00:33,170 --> 00:00:36,610 Želimo biti u mogućnosti da bi ovaj pregled sesije kao korisno za sve vas 16 00:00:36,610 --> 00:00:37,973 koliko je moguće. 17 00:00:37,973 --> 00:00:38,920 Odlično. 18 00:00:38,920 --> 00:00:41,650 >> Tako ćemo skočiti pravo u sa neke teme da smo zapravo 19 00:00:41,650 --> 00:00:46,980 vrlo, vrlo kratko pokriveni za Kviz 0 u kvizu 0 pregleda sjednice. 20 00:00:46,980 --> 00:00:48,840 Dakle, počevši s povezanim popisima. 21 00:00:48,840 --> 00:00:52,090 Dakle, samo bi bili sigurni da imate neke Osnovna znanja o povezanim popisima 22 00:00:52,090 --> 00:00:55,110 i ugodno neke od osnovnih operacija. 23 00:00:55,110 --> 00:00:58,560 >> Dakle, samo za pregled, povezani Popisi su bolje od polja 24 00:00:58,560 --> 00:01:01,020 jer oni mogu rasti dinamički. 25 00:01:01,020 --> 00:01:03,300 Dakle, imamo tu veliku prednost. 26 00:01:03,300 --> 00:01:06,031 Vidjeli smo ih koristi u hash tablica kada 27 00:01:06,031 --> 00:01:08,280 Ne znam točno koliko stvari koju ćemo željeti 28 00:01:08,280 --> 00:01:10,900 umetnuti u naše strukture podataka. 29 00:01:10,900 --> 00:01:15,700 Nažalost, imamo komada povezanog popis cijele memorije, 30 00:01:15,700 --> 00:01:20,820 pa ne mora nužno biti u mogućnosti to učiniti stalan pristup vremena 31 00:01:20,820 --> 00:01:22,502 na bilo koji element u popisu povezane. 32 00:01:22,502 --> 00:01:24,210 Kako bi se naći Posebno je element, mi 33 00:01:24,210 --> 00:01:26,510 moraju ponoviti sve put od početka. 34 00:01:26,510 --> 00:01:30,610 Dakle, imajte na umu da je većina Osnovni postupci su omega 1. 35 00:01:30,610 --> 00:01:32,130 Dakle umetak samo će potrajati 1. 36 00:01:32,130 --> 00:01:37,520 Brisanje se događa da se nje, jer mi moram ići naći s popisa. 37 00:01:37,520 --> 00:01:39,260 I traži moglo potrajati, u najgorem slučaju, n. 38 00:01:39,260 --> 00:01:42,330 Mi ne možemo učiniti nešto slično binarno pretraživanje na popisu povezan 39 00:01:42,330 --> 00:01:45,101 Budući da ne možemo jednostavno slučajno skok na sredini. 40 00:01:45,101 --> 00:01:45,600 Cool. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Odlično. 43 00:01:48,960 --> 00:01:50,270 >> Malo dimnjaka. 44 00:01:50,270 --> 00:01:53,980 To, opet, došao na kvizu 0, pa vas treba biti super ugodno s njim. 45 00:01:53,980 --> 00:01:57,210 No, stogova, molimo Vas zapamtiti hrpu pladnjeva. 46 00:01:57,210 --> 00:01:59,940 I to će biti prvi u, trajati van. 47 00:01:59,940 --> 00:02:02,272 Tako smo stog stvari u stog, a zatim 48 00:02:02,272 --> 00:02:04,980 ako nastojimo uzeti nešto off-- koje zovemo iskakanje izvan 49 00:02:04,980 --> 00:02:06,581 stack-- dolazimo s vrha. 50 00:02:06,581 --> 00:02:09,289 I ako želimo staviti nešto u snopu, zovemo ga gura. 51 00:02:09,289 --> 00:02:13,170 Tako će uvijek biti odrastanje od dna kao hrpom ladica. 52 00:02:13,170 --> 00:02:14,540 Odlično. 53 00:02:14,540 --> 00:02:17,607 >> Vidjeli smo hrpe provodi s obje povezane liste i polja. 54 00:02:17,607 --> 00:02:19,440 Ako ste provedbi s polja, što želite 55 00:02:19,440 --> 00:02:22,350 kako bi bili sigurni da pratiti i veličina i kapacitet. 56 00:02:22,350 --> 00:02:27,540 Dakle, veličina će biti trenutna broj stvari u vašem stog, 57 00:02:27,540 --> 00:02:32,900 a kapacitet je ukupan broj stvari koje možete pohraniti u vaš stog. 58 00:02:32,900 --> 00:02:34,220 Cool. 59 00:02:34,220 --> 00:02:35,767 >> Vrlo slično, imamo redove. 60 00:02:35,767 --> 00:02:38,850 U ovom slučaju, umjesto da razmišlja o snop ladice, misliti na liniji. 61 00:02:38,850 --> 00:02:40,697 To će biti prvi u, prvi van. 62 00:02:40,697 --> 00:02:42,780 Dakle, ako ste podstava gore za nešto u trgovini, 63 00:02:42,780 --> 00:02:46,920 Nadamo se da je osoba prva u linija će se pomoglo prvi. 64 00:02:46,920 --> 00:02:49,350 >> Umjesto da se kaže pritisnite i pop kao mi za stog, 65 00:02:49,350 --> 00:02:52,000 samo mi reci u red i dequeue. 66 00:02:52,000 --> 00:02:54,970 I opet, ako ste provedbi ovo s nizom, 67 00:02:54,970 --> 00:02:56,720 moramo pratiti ne samo veličina 68 00:02:56,720 --> 00:03:02,390 i kapacitet, ali i glava, koja će biti ispred našeg reda. 69 00:03:02,390 --> 00:03:03,010 Cool. 70 00:03:03,010 --> 00:03:05,770 Bilo kakva pitanja o bilo što od toga? 71 00:03:05,770 --> 00:03:06,320 Odlično. 72 00:03:06,320 --> 00:03:07,640 Premještanje pravo zajedno. 73 00:03:07,640 --> 00:03:08,564 >> OK, hash tablica. 74 00:03:08,564 --> 00:03:10,605 Evo gdje se počinje dobiti stvarno zanimljivo. 75 00:03:10,605 --> 00:03:14,150 Tako hash tablicu jedna implementacija od asocijativni niz. 76 00:03:14,150 --> 00:03:16,700 Tako je u osnovi ono što se dogodilo je da su sve ove ulaz, 77 00:03:16,700 --> 00:03:18,750 a mi ga dati na hash funkcija koja kaže: 78 00:03:18,750 --> 00:03:21,840 U redu, ovo je mjesto gdje se u hash tablicu pripada. 79 00:03:21,840 --> 00:03:24,860 >> Dakle, najjednostavnije funkcije hash kako smo vidjeli je samo rekao: 80 00:03:24,860 --> 00:03:28,170 U redu, pretpostavimo da želimo staviti žice u našoj hash tablici. 81 00:03:28,170 --> 00:03:30,870 I doista jednostavna ideja možda reći, u redu, 82 00:03:30,870 --> 00:03:34,350 neka je samo sortirati po prvo slovo riječi. 83 00:03:34,350 --> 00:03:37,570 Tako možete vidjeti ovdje, uzmemo bananu, smo ga stavili preko hash funkcija, 84 00:03:37,570 --> 00:03:40,190 a ona kaže, hej, kako trebao ići na indeksu 1. 85 00:03:40,190 --> 00:03:45,120 >> Tako smo u suštini mogu se sjetiti hash stol kao hrpa različitih kante. 86 00:03:45,120 --> 00:03:49,880 I svaki od tih kante ide držati glavu popisu povezane. 87 00:03:49,880 --> 00:03:55,030 I u tom povezanom popisu je mjesto gdje možemo zapravo staviti različite dijelove podataka. 88 00:03:55,030 --> 00:03:57,820 >> Dakle, ronjenje malo više u hash funkcija, ovdje je 89 00:03:57,820 --> 00:03:59,870 primjer upravo sam opisao gdje smo samo reći, 90 00:03:59,870 --> 00:04:02,460 OK, uzeti prvo slovo riječi i mi smo 91 00:04:02,460 --> 00:04:03,990 će to riješiti u kante. 92 00:04:03,990 --> 00:04:08,490 Dakle, vjerojatno, bit će 26 kante, jedan za svako slovo abecede. 93 00:04:08,490 --> 00:04:10,090 Zašto nije ovo veliki hash funkcija? 94 00:04:10,090 --> 00:04:13,461 Ono što čini ovaj ne-idealno? 95 00:04:13,461 --> 00:04:13,960 Da. 96 00:04:13,960 --> 00:04:15,790 >> PUBLIKA: Ideš imati sudara. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Da, točno. 98 00:04:16,390 --> 00:04:18,000 Ti si idući u morati sudara. 99 00:04:18,000 --> 00:04:18,954 Dakle, to je jedna stvar. 100 00:04:18,954 --> 00:04:21,620 A mi ćemo govoriti o tome kako možemo popraviti sudara u samo sekundi. 101 00:04:21,620 --> 00:04:23,980 Slijedeći problem sa ovim Posebno hash funkcija 102 00:04:23,980 --> 00:04:25,980 je da naša različita kante će biti 103 00:04:25,980 --> 00:04:28,960 od prilično drastično različite veličine. 104 00:04:28,960 --> 00:04:33,840 >> Mi znamo da postoji puno više riječi koje počinju s A od X, 105 00:04:33,840 --> 00:04:38,980 pa ćemo imati vrlo neuravnotežen kante u našem hash tablici. 106 00:04:38,980 --> 00:04:40,050 Cool. 107 00:04:40,050 --> 00:04:41,340 Tako da, vratimo se točka sudara. 108 00:04:41,340 --> 00:04:42,900 Što ćemo učiniti ako postoji sudara? 109 00:04:42,900 --> 00:04:44,490 >> Imamo nekoliko različitih opcija. 110 00:04:44,490 --> 00:04:47,600 Dakle, jedan, pa pretpostavljam pokušavamo staviti bobica u našoj hash tablicu. 111 00:04:47,600 --> 00:04:50,370 I vidimo, oh, želimo staviti ga u indeks 1, 112 00:04:50,370 --> 00:04:52,070 ali banana je već tamo živi. 113 00:04:52,070 --> 00:04:53,110 Što ćemo učiniti? 114 00:04:53,110 --> 00:04:54,560 Imamo dvije glavne opcije. 115 00:04:54,560 --> 00:04:58,050 >> Broj jedan je možemo reći, u redu, nema mjesta u indeksu 1, 116 00:04:58,050 --> 00:05:03,210 ali neka je samo zadržati gledajući kroz dok možemo pronaći još otvoreno mjesto. 117 00:05:03,210 --> 00:05:08,490 Tako ćemo reći, u redu, neka ga staviti u mjestu 3. 118 00:05:08,490 --> 00:05:09,240 To je jedna opcija. 119 00:05:09,240 --> 00:05:11,470 To se zove linearni sondiranja. 120 00:05:11,470 --> 00:05:15,500 >> A druga mogućnost je rekao, u redu, dobro, neka je samo da svaki od tih kante 121 00:05:15,500 --> 00:05:17,470 biti šefovi povezane liste. 122 00:05:17,470 --> 00:05:21,910 I to je u redu, ako postoji više nego jedna stvar u kantu. 123 00:05:21,910 --> 00:05:23,820 Samo ćemo se dodajte ga na pročelju. 124 00:05:23,820 --> 00:05:26,032 Dakle, ovdje možete vidjeti, u redu, kad smo umetnuta bobica, mi 125 00:05:26,032 --> 00:05:28,240 Samo je banana, vrsta gurnuo preko malo 126 00:05:28,240 --> 00:05:29,842 i bacio bobica tamo. 127 00:05:29,842 --> 00:05:31,050 I to je također potpuno u redu. 128 00:05:31,050 --> 00:05:32,830 To se zove odvojeno ulančavanje. 129 00:05:32,830 --> 00:05:38,100 Možete misliti na to kao vrsta kao što niz glava na povezanim popisima. 130 00:05:38,100 --> 00:05:41,950 Bilo kakva pitanja o hash stolovi, hash funkcije? 131 00:05:41,950 --> 00:05:44,290 Odlično. 132 00:05:44,290 --> 00:05:45,470 >> Stabla i napad. 133 00:05:45,470 --> 00:05:47,287 Dakle drvo je bilo kakav strukture podataka 134 00:05:47,287 --> 00:05:49,453 u kojem postoji neka vrsta hijerarhije ili neke vrste 135 00:05:49,453 --> 00:05:51,247 rangiranja na svoje različite objekte. 136 00:05:51,247 --> 00:05:53,580 A to će postati super jasno kad vidimo primjer. 137 00:05:53,580 --> 00:05:56,960 A vidjeli smo pokušaja, uz s hash tablica, u pset5-- 138 00:05:56,960 --> 00:06:00,700 koja, opet, sasvim fer igra za to quiz-- kao još podataka 139 00:06:00,700 --> 00:06:03,110 strukture koje možemo pohraniti različite stvari. 140 00:06:03,110 --> 00:06:06,782 U slučaju rječnik, smo pohranjeni hrpu riječi. 141 00:06:06,782 --> 00:06:08,240 Tako ćemo pogledati neke stabala. 142 00:06:08,240 --> 00:06:10,190 Dakle, ovo je primjer jednog stabla. 143 00:06:10,190 --> 00:06:13,105 To je vrsta konstrukcije, da hijerarhijskoj strukturi, 144 00:06:13,105 --> 00:06:15,920 gdje možete vidjeti da ovo 1 čvor na vrhu 145 00:06:15,920 --> 00:06:20,750 ima nekakvu rang iznad 2 i 3, koji su iznad 4, 5 i 6 i 7, 146 00:06:20,750 --> 00:06:22,860 koji su iznad 8 i 9. 147 00:06:22,860 --> 00:06:25,210 Dakle, to je sve što smo mislili od strane stabla, tako da možete samo vrste 148 00:06:25,210 --> 00:06:26,660 slike to u glavi. 149 00:06:26,660 --> 00:06:29,050 >> Sada imamo par više specijaliziranih stabala. 150 00:06:29,050 --> 00:06:31,070 Dakle, jedan primjer je binarno stablo. 151 00:06:31,070 --> 00:06:33,290 I binarno stablo je, opet, samo će biti 152 00:06:33,290 --> 00:06:37,040 struktura podataka s nekom vrstom hijerarhija, ali svaki od čvorova 153 00:06:37,040 --> 00:06:38,650 može imati najviše dvoje djece. 154 00:06:38,650 --> 00:06:41,530 To je mjesto gdje se riječ binarni dolazi. 155 00:06:41,530 --> 00:06:43,410 Dakle, ovo je primjer binarnog stabla. 156 00:06:43,410 --> 00:06:45,720 Dakle, to je manja kategorija stabala. 157 00:06:45,720 --> 00:06:48,960 >> Sada ćemo dobiti još više specifični i govorimo o binarnom trees-- binarnog pretraživanja 158 00:06:48,960 --> 00:06:51,310 stabala, a. 159 00:06:51,310 --> 00:06:56,430 Dakle ovdje je ideja je ne samo svaki čvor ima najviše dvoje djece, 160 00:06:56,430 --> 00:07:00,300 ali sve od djece do lijeva će biti manji 161 00:07:00,300 --> 00:07:03,450 i sve djece do Pravo će biti veći. 162 00:07:03,450 --> 00:07:05,890 Tako primijetiti u samo naš binarno stablo, postoji 163 00:07:05,890 --> 00:07:08,650 nema odnos između brojeva. 164 00:07:08,650 --> 00:07:12,990 No, u našem binarnom pretraživanje stabla, vidimo, u redu, ovdje je 44. 165 00:07:12,990 --> 00:07:17,080 I svaki broj s lijeve strane 44 manja i sve na desno 166 00:07:17,080 --> 00:07:17,920 je veći. 167 00:07:17,920 --> 00:07:20,130 >> I to ima na svakom razina stabla. 168 00:07:20,130 --> 00:07:24,810 Dakle, ovdje, to je manja od 22, a to je veći od 22. 169 00:07:24,810 --> 00:07:26,390 I to je pretraživanje po binarnom stablu. 170 00:07:26,390 --> 00:07:28,900 Zašto mislimo da se zove binarno traženje stablo? 171 00:07:28,900 --> 00:07:30,651 Što algoritam to vas podsjetiti? 172 00:07:30,651 --> 00:07:31,650 PUBLIKA: Binarni pretraživanja. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: Binarni pretraživanja. 174 00:07:32,480 --> 00:07:35,150 Jer ako ste u potrazi za Posebno broj u tom stablu, 175 00:07:35,150 --> 00:07:38,800 u svakom trenutku, možete samo pokucati off pola stabla, što je super. 176 00:07:38,800 --> 00:07:43,800 I da će nam dati nešto da izgleda puno kao binarnog pretraživanja. 177 00:07:43,800 --> 00:07:45,870 Ima li pitanja? 178 00:07:45,870 --> 00:07:47,570 U redu, u redu. 179 00:07:47,570 --> 00:07:48,560 >> U redu, pokuša. 180 00:07:48,560 --> 00:07:49,657 Svatko je omiljena. 181 00:07:49,657 --> 00:07:51,990 Dakle, ovo je primjer koji vidjeli smo hrpu u klasi. 182 00:07:51,990 --> 00:07:54,710 I opet, to je samo još jedan način na koji možemo pohraniti podatke. 183 00:07:54,710 --> 00:07:57,530 U slučaju rječnik, opet, to samo će biti žice. 184 00:07:57,530 --> 00:08:00,870 Tako ćemo vidjeti što to zapravo izgleda kao na nešto nižoj razini. 185 00:08:00,870 --> 00:08:03,690 >> Tako ćemo pogledati na jednom čvoru u Trie. 186 00:08:03,690 --> 00:08:07,532 I vidimo, u redu, tu se događa biti Boolean i čvor, 187 00:08:07,532 --> 00:08:09,170 pokazivač na čvor. 188 00:08:09,170 --> 00:08:11,400 I vidimo da je Booleova naziva is_word. 189 00:08:11,400 --> 00:08:13,490 Pa u biti, to je će odgovarati 190 00:08:13,490 --> 00:08:16,750 tim malim trokuta koji kaže, ako ste stečen ovdje 191 00:08:16,750 --> 00:08:19,100 našli ste potpuni riječi. 192 00:08:19,100 --> 00:08:23,670 >> Znamo da je "Turingov" preko Ovdje je kompletan riječ, 193 00:08:23,670 --> 00:08:28,030 dok je samo T-U-R nije riječ jer ne vidim da je malo delta. 194 00:08:28,030 --> 00:08:31,440 A da se malo Delta, opet, odgovara ovom is_word, 195 00:08:31,440 --> 00:08:34,480 ovo Boolean is_word. 196 00:08:34,480 --> 00:08:36,320 I onda imamo niz djece. 197 00:08:36,320 --> 00:08:39,860 Tako na svakoj razini, vi imaju određenu čvor, 198 00:08:39,860 --> 00:08:42,470 a taj čvor ukazuje na Niz cijelu abecedu. 199 00:08:42,470 --> 00:08:44,346 >> Tako možete vidjeti, opet, u ovom picture-- sam 200 00:08:44,346 --> 00:08:48,170 će zadržati skakanje natrag forth-- da je niz na vrhu 201 00:08:48,170 --> 00:08:51,640 ima hrpa različitih čvorovi dolaze izvan nje. 202 00:08:51,640 --> 00:08:57,140 Ona ima 26, ili 27 ako želite uključiti dodatni karakter. 203 00:08:57,140 --> 00:09:01,320 I to nam je daje način za pohranu naše podatke 204 00:09:01,320 --> 00:09:04,450 na način da se može promatrati na koje možete pogledati super brzo. 205 00:09:04,450 --> 00:09:06,650 Što je vrijeme pretraživanja za Trie? 206 00:09:06,650 --> 00:09:07,970 >> PUBLIKA: [nečujan]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Da. 208 00:09:08,300 --> 00:09:09,550 U teoriji, to je konstanta vrijeme. 209 00:09:09,550 --> 00:09:13,230 To će samo biti veličine riječ koju želite potražiti. 210 00:09:13,230 --> 00:09:15,950 Čak i ako dodamo zillion više riječi našem Trie, 211 00:09:15,950 --> 00:09:18,160 to neće nas odvesti više kako bi se utvrdilo 212 00:09:18,160 --> 00:09:19,690 ako je dao riječ u Trie. 213 00:09:19,690 --> 00:09:21,412 Dakle, to je jako lijepo. 214 00:09:21,412 --> 00:09:23,697 >> PUBLIKA: Jeste li samo inicijalizirati taj niz? 215 00:09:23,697 --> 00:09:24,780 Propustili ste bod ili dva. 216 00:09:24,780 --> 00:09:26,130 Možete li samo govoriti o da je za sekundu? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: Naravno, apsolutno. 218 00:09:26,680 --> 00:09:27,590 Dobro pitanje. 219 00:09:27,590 --> 00:09:31,140 Pitanje je, što imaju niz koji je 220 00:09:31,140 --> 00:09:34,180 će imati čvora zvijezdu kao za razliku od samo čvora, zar ne? 221 00:09:34,180 --> 00:09:35,180 Cool. 222 00:09:35,180 --> 00:09:37,990 Dakle ovdje ono što govoriš je naš niz je samo 223 00:09:37,990 --> 00:09:40,035 će biti upućuje na druge polja. 224 00:09:40,035 --> 00:09:42,910 Dakle, to je to essentially-- vrsta osjeća kao popis povezana na ovaj način 225 00:09:42,910 --> 00:09:46,620 gdje je svaki od tih djece samo ukazuju na sljedeći čvor. 226 00:09:46,620 --> 00:09:49,030 >> A način na koji smo zapravo utvrdili, hej, u redu, 227 00:09:49,030 --> 00:09:52,320 smo ponovljena kroz cijeli Riječ je tu riječ u rječniku, 228 00:09:52,320 --> 00:09:54,476 samo smo provjeriti ovu is_word. 229 00:09:54,476 --> 00:09:55,100 Veliko pitanje. 230 00:09:55,100 --> 00:09:55,675 Da. 231 00:09:55,675 --> 00:09:56,216 PUBLIKA: U redu. 232 00:09:56,216 --> 00:09:57,470 Dakle, što je bio runtime za Trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: Naravno. 234 00:09:58,386 --> 00:10:01,852 Dakle, u vrijeme izvođenja za Trie za lookup će biti konstantna vrijeme. 235 00:10:01,852 --> 00:10:04,310 Dakle, to je samo idući u biti Broj slova u riječi. 236 00:10:04,310 --> 00:10:06,310 To ne ovisi o Veličina rječniku 237 00:10:06,310 --> 00:10:09,510 ili veličina strukture podataka. 238 00:10:09,510 --> 00:10:12,170 Dakle, ovdje je nešto jednostavniji primjer. 239 00:10:12,170 --> 00:10:15,430 >> U tom slučaju, možete vidjeti da Riječ šišmiš je u rječniku 240 00:10:15,430 --> 00:10:18,900 i imate zoom, ali nemaju nešto poput zoološkom vrtu. 241 00:10:18,900 --> 00:10:20,050 Kako bi se napraviti zoološki vrt? 242 00:10:20,050 --> 00:10:24,276 Kako dodati zoološki vrt na naš rječnik, našem Trie? 243 00:10:24,276 --> 00:10:24,776 Da. 244 00:10:24,776 --> 00:10:27,014 >> PUBLIKA: Napravite is_word vrijedi za [nečujan]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Dobro. 246 00:10:27,930 --> 00:10:31,731 Tako bismo reći Z-O-O, a onda bih želite prekrižite tu kutiju, kao dobro. 247 00:10:31,731 --> 00:10:32,230 Veliki. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Ajmo usporediti vrlo kratko pokušava odnosu hash tablica. 250 00:10:37,930 --> 00:10:39,770 Pokušava su stvarno super jer, kao što smo rekli, 251 00:10:39,770 --> 00:10:41,610 oni pružaju konstantnom vremenu pretraživanja. 252 00:10:41,610 --> 00:10:44,285 No, veliki nedostatak je oni humongous. 253 00:10:44,285 --> 00:10:46,160 Možete dobiti osjećaj, čak i gleda na to, 254 00:10:46,160 --> 00:10:48,454 da će potrajati ogromna količina memorije. 255 00:10:48,454 --> 00:10:50,620 Znači oni će biti puno veći od hash tablica, 256 00:10:50,620 --> 00:10:52,270 ali oni će dati nam mnogo brže vrijeme lookup. 257 00:10:52,270 --> 00:10:54,478 Dakle, to je vrsta tvoj tradeoff, što vam je stalo, 258 00:10:54,478 --> 00:10:57,350 bilo da je brzina ili memorije. 259 00:10:57,350 --> 00:11:02,251 Bilo kakva pitanja o bilo što od toga, sve strukture podataka C. 260 00:11:02,251 --> 00:11:02,750 Lijepa. 261 00:11:02,750 --> 00:11:03,250 U REDU. 262 00:11:03,250 --> 00:11:07,322 Mi ćemo prijeći na malo malo web razvoj s Marijom. 263 00:11:07,322 --> 00:11:08,280 MARIJA ZLATKOVA: lijep. 264 00:11:08,280 --> 00:11:09,036 U REDU. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Možete koristiti svoj laptop. 266 00:11:10,380 --> 00:11:11,255 >> MARIJA ZLATKOVA: Lijepo. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 OK super. 269 00:11:14,912 --> 00:11:17,120 Kao što smo premjestiti sada webu razvoj, razgovarali smo malo 270 00:11:17,120 --> 00:11:20,680 o promjenjivim dozvolama datoteka i mapa 271 00:11:20,680 --> 00:11:24,190 tako da mogu biti dostupne drugim korisnicima, u svijet, 272 00:11:24,190 --> 00:11:28,640 pa da možemo vidjeti kako zapravo ih možemo prenijeti 273 00:11:28,640 --> 00:11:32,600 kad smo razviti stvari kao što je web stranica da mi govore radili. 274 00:11:32,600 --> 00:11:36,400 >> Tako smo vidjeli chmod naredbu, što je promjena načina rada, u osnovi. 275 00:11:36,400 --> 00:11:39,300 To je Linux naredbe i mijenja pristup dozvole 276 00:11:39,300 --> 00:11:40,410 datotečnog sustava objekata. 277 00:11:40,410 --> 00:11:43,370 A objekt sustav datoteka samo katalog, datoteka, 278 00:11:43,370 --> 00:11:46,810 sve što možete mijenjati dozvole. 279 00:11:46,810 --> 00:11:53,750 >> Dakle, da biste vidjeli dozvole za datoteku, smo upišite naredbu ls, popis, -L. 280 00:11:53,750 --> 00:11:56,500 A kad mi tip da mi obično vidjeti neke dozvole 281 00:11:56,500 --> 00:11:59,660 kako izgleda nešto kao ovo ispred naziva direktorija. 282 00:11:59,660 --> 00:12:01,260 Dakle d se odnosi na imenik. 283 00:12:01,260 --> 00:12:05,930 I onda imamo tri trijade da je u osnovi 284 00:12:05,930 --> 00:12:11,675 odnose se na dozvole ili korisnik, grupa ili svijet. 285 00:12:11,675 --> 00:12:16,490 >> Vrste dozvola koje možemo imati za ove tri skupine ljudi 286 00:12:16,490 --> 00:12:20,830 su ili R za čitanje, w za pisati, i x za izvršavanje. 287 00:12:20,830 --> 00:12:23,650 A možemo imati one za skupina i svijet kao dobro. 288 00:12:23,650 --> 00:12:26,940 Lukav stvar je da ponekad kad smo upišite chmod naredbu, 289 00:12:26,940 --> 00:12:32,960 bismo upišite neki broj koja se sastojala od tri bita. 290 00:12:32,960 --> 00:12:36,990 Tako smo mogli učiniti kao 777 i da je u osnovi 291 00:12:36,990 --> 00:12:40,450 iz dodanoj vrijednosti svakog od ovih trijade 292 00:12:40,450 --> 00:12:45,060 jer r će se odnose na 4, W bih odnosi se na 2, a x bi se odnosi na 1, 293 00:12:45,060 --> 00:12:50,020 Dakle, kada se doda, svaki od brojeva će doći do kumulativnog broja 294 00:12:50,020 --> 00:12:52,750 na kumulativne vrijednosti između 0 i 7. 295 00:12:52,750 --> 00:12:55,150 Tako smo mogli imati 0 za ne dozvole na sve. 296 00:12:55,150 --> 00:12:58,200 I to u osnovi će nam dati dozvole za obje strane korisnika, 297 00:12:58,200 --> 00:13:00,450 skupina, ili svijet. 298 00:13:00,450 --> 00:13:02,620 Bilo kakva pitanja o ovom do sada? 299 00:13:02,620 --> 00:13:05,331 >> PUBLIKA: Rekli ste pročitali bilo 4? 300 00:13:05,331 --> 00:13:06,164 MARIJA ZLATKOVA: Da. 301 00:13:06,164 --> 00:13:07,568 PUBLIKA: [nečujan]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Yup. 303 00:13:08,504 --> 00:13:11,790 PUBLIKA: A onda dodavanjem svima drugi bi naznačiti svoj broj. 304 00:13:11,790 --> 00:13:12,665 MARIJA ZLATKOVA: Da. 305 00:13:12,665 --> 00:13:14,970 Da. 306 00:13:14,970 --> 00:13:17,810 To su velika pitanja. 307 00:13:17,810 --> 00:13:20,490 Lijep. 308 00:13:20,490 --> 00:13:25,340 Dalje, skočio mi u HTML i a Malo više o web development. 309 00:13:25,340 --> 00:13:27,990 Dakle HTML samo znači Hypertext Markup Language. 310 00:13:27,990 --> 00:13:30,460 I to je označavanje jezik koji je standard 311 00:13:30,460 --> 00:13:32,720 koji se koristi za izradu web stranice. 312 00:13:32,720 --> 00:13:35,750 >> To se zove označni jezik jer to nije zapravo sastavljen. 313 00:13:35,750 --> 00:13:40,310 To ne kažem kako neki broj treba biti izvršen ili bilo što slično. 314 00:13:40,310 --> 00:13:44,800 To samo ocrtava i opisuje kako web 315 00:13:44,800 --> 00:13:46,840 stranica treba biti postavljen svaki od njenih elemenata 316 00:13:46,840 --> 00:13:48,460 i kako bi trebao izgledati za korisnika. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Neki od HTML oznake koje smo Prišao su sljedeće. 319 00:13:57,110 --> 00:14:00,500 Svi naši HTML dokumente započeo s DOCTYPEhtml. 320 00:14:00,500 --> 00:14:02,550 Onda uvijek imamo html tag. 321 00:14:02,550 --> 00:14:03,930 Imamo glavu i tijelo. 322 00:14:03,930 --> 00:14:07,890 I važno je da ima HTML ova vrsta hijerarhijskoj strukturi 323 00:14:07,890 --> 00:14:09,280 jer to je vrlo jasno. 324 00:14:09,280 --> 00:14:13,200 I onda to postaje vrlo jasno kad smo treba otvoriti i zapravo bliske oznake. 325 00:14:13,200 --> 00:14:18,400 A mi uvijek treba zatvoriti oznake koje smo otvorili. 326 00:14:18,400 --> 00:14:23,170 >> A ovdje imamo neke vrste stvari ispred koje žele imati. 327 00:14:23,170 --> 00:14:26,580 Tako da imamo npr naslov CS50. 328 00:14:26,580 --> 00:14:31,980 A onda smo zapravo može povezati style sheet 329 00:14:31,980 --> 00:14:34,030 koji definira kako smo stil naše web stranice. 330 00:14:34,030 --> 00:14:35,650 To je CSS. 331 00:14:35,650 --> 00:14:39,320 Ćemo ići preko njega u Sljedeći par slajdova, kao dobro. 332 00:14:39,320 --> 00:14:42,580 >> Unutar tijela, postavljamo neke klase i IDS. 333 00:14:42,580 --> 00:14:45,860 I kao podsjetnik, opet, ID su jedinstveni i nastava 334 00:14:45,860 --> 00:14:47,390 može se dodijeliti više stavki. 335 00:14:47,390 --> 00:14:52,110 A to samo znači da možemo koristiti klase i ID 336 00:14:52,110 --> 00:14:55,860 u drugoj structures-- tako, za primjer, u CSS datoteke ili stilu 337 00:14:55,860 --> 00:15:00,940 sheets-- se odnose na određene elemente a zapravo reći da želimo stil 338 00:15:00,940 --> 00:15:03,280 ili dizajn neki element na neki poseban način. 339 00:15:03,280 --> 00:15:06,440 I mislimo na njih njihove osobne iskaznice i klase. 340 00:15:06,440 --> 00:15:09,870 I mi također može odnositi na različite stvari po oznakama te, 341 00:15:09,870 --> 00:15:13,830 ali osobne iskaznice i klase samo nam dati neke Svestranost i što je posebno smo 342 00:15:13,830 --> 00:15:15,850 Želite da se odnosi na. 343 00:15:15,850 --> 00:15:19,620 >> Tako je samo jedan primjer. 344 00:15:19,620 --> 00:15:22,730 Mi možemo, opet, u roku CSS datoteke, gdje smo 345 00:15:22,730 --> 00:15:25,770 Želite definirati neke style-- tako boje, fontova, 346 00:15:25,770 --> 00:15:30,340 i stvari kao što that-- možemo definirati stil za tijelo. 347 00:15:30,340 --> 00:15:32,640 Tako da bi ga definirati za cijelo tijelo oznaku. 348 00:15:32,640 --> 00:15:36,160 No, tada možemo definirati stil za #title. 349 00:15:36,160 --> 00:15:40,390 I opet, hashtag odnosi na naše ID i točka odnosi se na našem razredu. 350 00:15:40,390 --> 00:15:44,760 >> A onda za .info, mi Također možete postaviti neke atribute. 351 00:15:44,760 --> 00:15:49,750 I opet, kad smo se vratiti, imali smo klasa se zove info i naša ID naslov. 352 00:15:49,750 --> 00:15:53,422 I možemo vidjeti da mislimo im #title i .info. 353 00:15:53,422 --> 00:15:55,380 PUBLIKA: Biste li rekli hashtag [? usvojiti mi? ?] 354 00:15:55,380 --> 00:15:55,725 MARIJA ZLATKOVA: Žao nam je? 355 00:15:55,725 --> 00:15:58,120 PUBLIKA: Biste li rekli hashtag [? usvojiti mi? ?] 356 00:15:58,120 --> 00:16:01,400 MARIJA ZLATKOVA: hashtag znači ID, tako #title 357 00:16:01,400 --> 00:16:07,890 odnosi se na bilo kakvim elementima imaju ovu ID zove naslov. 358 00:16:07,890 --> 00:16:10,735 A onda je točka odnosi na klasu. 359 00:16:10,735 --> 00:16:14,590 Dakle, .info odnosi na tog elementa jer ima klase info. 360 00:16:14,590 --> 00:16:15,090 Yup. 361 00:16:15,090 --> 00:16:17,905 >> PUBLIKA: Zašto vi razlikovati ih u HTML? 362 00:16:17,905 --> 00:16:20,985 Zašto kažeš neke stvari su Osobne iskaznice i neke stvari su klase? 363 00:16:20,985 --> 00:16:22,610 MARIJA ZLATKOVA: To je samo do you-- 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: Ponovite pitanje. 365 00:16:24,151 --> 00:16:25,370 MARIJA ZLATKOVA: Oh, ispričavam se. 366 00:16:25,370 --> 00:16:29,480 Zašto mi razlikujemo određene elemente kao IDS i drugih elemenata kao klase? 367 00:16:29,480 --> 00:16:34,760 To je samo zato što je stvarno često izbor dizajna. 368 00:16:34,760 --> 00:16:38,520 To vam daje mnogo svestranost u biti 369 00:16:38,520 --> 00:16:43,250 moći reći što želim ovu specifičnu stavku da se ovaj ID jer žele 370 00:16:43,250 --> 00:16:45,300 učiniti puno stvari s njim, a ja samo 371 00:16:45,300 --> 00:16:50,010 Želite definirati stil, određeni stil ili boju bilo za tu stavku. 372 00:16:50,010 --> 00:16:52,630 A način za to je samo dajući mu ID. 373 00:16:52,630 --> 00:16:55,060 >> A onda, ako želim imati nekoliko različitih predmeta 374 00:16:55,060 --> 00:16:58,940 da ima, umjesto ide i postavljanje their-- 375 00:16:58,940 --> 00:17:03,840 umjesto da to rade po tag jer bi oznake 376 00:17:03,840 --> 00:17:07,369 postaviti stanicu za cijelu oznaku svaki put se koristi da se krpa, 377 00:17:07,369 --> 00:17:09,740 možete postaviti klase na više stavki. 378 00:17:09,740 --> 00:17:15,109 I onda samo pristupiti tu klasu i reći Želim stil ovoj klasi na taj način. 379 00:17:15,109 --> 00:17:17,579 >> I opet, klasa može biti više različitih predmeta 380 00:17:17,579 --> 00:17:21,150 i ID mora biti jedinstven. 381 00:17:21,150 --> 00:17:21,849 Velika pitanja. 382 00:17:21,849 --> 00:17:25,339 Ima li još pitanja? 383 00:17:25,339 --> 00:17:26,220 OK, super. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Opet, to je kako ti selektori se upućuje u CSS, uz hashtag, 386 00:17:35,330 --> 00:17:40,031 s točkom ili bez ičega za dodjeljivanje stil neke oznake, 387 00:17:40,031 --> 00:17:40,530 kao i tijelo. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 A ovdje imamo opći sintaksa kako je to učinjeno. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Ponoviti neke najbolje prakse za HTML i CSS, 392 00:17:55,680 --> 00:17:59,170 moramo, opet, zatvorite sve HTML oznake koje smo otvorili. 393 00:17:59,170 --> 00:18:03,950 I ono što smo vam preporučuje učiniti za svoje završne projekte, 394 00:18:03,950 --> 00:18:10,560 kao i za CS50 financija, je da jesu li svi HTML potvrđuje. 395 00:18:10,560 --> 00:18:12,920 I to je učinjeno s W3 Validator. 396 00:18:12,920 --> 00:18:16,940 >> I onda ono što smo radili i ono što preporučujemo radi 397 00:18:16,940 --> 00:18:19,790 je odvajanje stil, tako da CSS iz markup HTML. 398 00:18:19,790 --> 00:18:24,210 Dakle, sve što se odnosi na to kako Vaša stranica će vizualno izgledati 399 00:18:24,210 --> 00:18:27,330 i kako će se mijenjati treba ići u CSS dokumentu. 400 00:18:27,330 --> 00:18:33,880 A onda tvoj označavanje govore kako stvari u odnosu na drugu je HTML, 401 00:18:33,880 --> 00:18:37,550 i da treba ići u vaše HTML dokumente. 402 00:18:37,550 --> 00:18:38,590 Ima li pitanja? 403 00:18:38,590 --> 00:18:39,226 MHM. 404 00:18:39,226 --> 00:18:42,628 >> PUBLIKA: Što se točno događa na sa stranice valjanosti 405 00:18:42,628 --> 00:18:47,945 kada smo potvrđivanju HTML da [nečujan] stvorio? 406 00:18:47,945 --> 00:18:49,850 >> MARIJA ZLATKOVA: Pa what-- ti misliš. 407 00:18:49,850 --> 00:18:53,020 Dakle, što se točno događa na sa validacije stranice 408 00:18:53,020 --> 00:18:55,570 i zašto trebamo učiniti? 409 00:18:55,570 --> 00:18:59,180 Uglavnom, moramo učiniti jer puno vremena, vaš browser, 410 00:18:59,180 --> 00:19:01,390 ako ne zatvoriti oznaku ili tako nešto, 411 00:19:01,390 --> 00:19:05,680 Vaš preglednik je još uvijek ide na donijeti stranicu i možda još rade, 412 00:19:05,680 --> 00:19:10,840 ali to je najbolji način kako bi bili sigurni da si, opet, zatvorio sve svoje oznake, 413 00:19:10,840 --> 00:19:13,190 da sve vaše elementi onako kako bi trebali biti, 414 00:19:13,190 --> 00:19:18,470 a zapravo da je od strane konvencije koje su zadane. 415 00:19:18,470 --> 00:19:21,970 >> To je, opet, samo stvar koju treba 416 00:19:21,970 --> 00:19:24,040 učiti kako se radi, nasuprot ima 417 00:19:24,040 --> 00:19:25,696 sloppier kod i stvari kao što je to. 418 00:19:25,696 --> 00:19:26,688 Da. 419 00:19:26,688 --> 00:19:27,680 O oprosti. 420 00:19:27,680 --> 00:19:29,221 Mislio sam da su podizanje ruku. 421 00:19:29,221 --> 00:19:31,240 PUBLIKA: Ne, samo sam [nečujan]. 422 00:19:31,240 --> 00:19:33,800 >> MARIJA ZLATKOVA: U redu. 423 00:19:33,800 --> 00:19:34,640 >> PUBLIKA: Hvala vam. 424 00:19:34,640 --> 00:19:36,181 >> MARIJA ZLATKOVA: Naravno, hvala. 425 00:19:36,181 --> 00:19:41,680 Pa opet, događa se u tome Podaci se prenose 426 00:19:41,680 --> 00:19:44,630 i komunikacijski modeli za prijenos podataka. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP samo znači prijenos Control Protocol i IP 429 00:19:48,600 --> 00:19:51,260 odnosi na Internet Protocol. 430 00:19:51,260 --> 00:19:54,275 I to samo odnosi na način na koji se podaci dostavljaju. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Ako imamo neke podatke koji treba dostaviti na you-- tako 433 00:20:02,710 --> 00:20:06,770 napravite zahtjev za određenom poslužitelju. 434 00:20:06,770 --> 00:20:09,800 Na primjer, kad pokušati pristupiti cs50.net, 435 00:20:09,800 --> 00:20:12,420 možemo napraviti zahtjev CS50 poslužitelja i mi 436 00:20:12,420 --> 00:20:14,720 vidjeti da želimo dobiti ova vrsta informacija. 437 00:20:14,720 --> 00:20:19,294 A onda se na temelju ovog protokola koliko ova informacija se dostavlja, 438 00:20:19,294 --> 00:20:21,460 poslužitelj daje informacije natrag na nas, klijent. 439 00:20:21,460 --> 00:20:25,590 A onda smo mogli vidjeti podaci za stranicu 440 00:20:25,590 --> 00:20:26,390 a onda ga upotrijebite. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Pa onda Hypertext Transfer Protocol je samo još jedan protokol ili skup 443 00:20:33,050 --> 00:20:37,470 konvencija koja definira kako web-preglednik i web server 444 00:20:37,470 --> 00:20:38,890 treba komunicirati. 445 00:20:38,890 --> 00:20:43,730 I stavljajući sve ovo zajedno, HTTP, opet, 446 00:20:43,730 --> 00:20:50,960 Samo definira kako to hipertekstualni definirani od HTML-a koji smo to radni, 447 00:20:50,960 --> 00:20:59,500 kako to treba biti isporučen na vas i Kako da se podaci koji se dostavljaju na vas 448 00:20:59,500 --> 00:21:00,540 dobiva za vas. 449 00:21:00,540 --> 00:21:05,990 >> I zato, ako se vi sjetite iz razreda, imali smo mnogo zahtjeva 450 00:21:05,990 --> 00:21:08,970 i imali smo puno sintakse Na zahtjeve koje smo si 451 00:21:08,970 --> 00:21:10,250 ići preko sada. 452 00:21:10,250 --> 00:21:13,270 Pa opet, kad smo poslali zahtjev na server, 453 00:21:13,270 --> 00:21:15,920 moramo definirati par stvari. 454 00:21:15,920 --> 00:21:18,520 Dakle, moramo pronaći tip zahtjeva da smo postavljanje. 455 00:21:18,520 --> 00:21:22,180 I opet, imamo, na primjer, GET je jedna vrsta metode 456 00:21:22,180 --> 00:21:25,290 da smo u našem zahtjevu. 457 00:21:25,290 --> 00:21:31,710 >> A onda HTTP / 1.1 je samo Protokol koji smo trenutno koristi. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 Većinu vremena, to se događa protokolu koju koristimo. 460 00:21:36,890 --> 00:21:40,290 Dakle, ako imate pitanje kao što je to na kvizu. 461 00:21:40,290 --> 00:21:43,120 To su konvencije da imamo sada. 462 00:21:43,120 --> 00:21:46,580 >> Backslash odnosi na kakav stvari što smo zahtjev. 463 00:21:46,580 --> 00:21:52,810 Zatim, naš domaćin je, na primjer, u ovom slučaj, pokušavamo ići na google.com. 464 00:21:52,810 --> 00:21:57,070 Dakle, to je vrijednost za domaćina. 465 00:21:57,070 --> 00:21:59,330 To je vrsta zahtjeva koji bi mogao biti poslan. 466 00:21:59,330 --> 00:22:02,890 >> I onda tip odgovora koji bi mogao biti poslana, opet, na temelju ovog Protokola, 467 00:22:02,890 --> 00:22:05,190 opet, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Tako da je HTTP verziju ponovo. 469 00:22:07,150 --> 00:22:09,730 200 U redu je samo status kod. 470 00:22:09,730 --> 00:22:12,860 I to je u redu je samo fraza na temelju tog statusa kod. 471 00:22:12,860 --> 00:22:15,520 >> A onda Content-Type odnosi se na vrstu 472 00:22:15,520 --> 00:22:20,295 koji se vratio na vas da je za tu web-stranicu da ste primili 473 00:22:20,295 --> 00:22:22,570 i da pregledniku može pružiti poslije. 474 00:22:22,570 --> 00:22:24,401 I to je text / html. 475 00:22:24,401 --> 00:22:26,660 >> PUBLIKA: Što 1.1 znači? 476 00:22:26,660 --> 00:22:29,910 >> MARIJA ZLATKOVA: To je samo Verzija of-- oh, što to znači 1.1? 477 00:22:29,910 --> 00:22:37,075 To je samo verzija, HTTP verzija protokola koju koristimo. 478 00:22:37,075 --> 00:22:37,700 Veliko pitanje. 479 00:22:37,700 --> 00:22:38,366 Ostala pitanja? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> PUBLIKA: Možete li sumirati Sadržaj-Tip jako brzo? 482 00:22:45,080 --> 00:22:48,150 >> MARIJA ZLATKOVA: Da je ono poslužitelj. 483 00:22:48,150 --> 00:22:51,020 vrsta information-- ono što je Vrsta sadržaja je pitanja. 484 00:22:51,020 --> 00:22:53,400 Dakle, to je vrsta informacije koje ste dobili natrag 485 00:22:53,400 --> 00:22:58,200 s poslužitelja, tip podaci da preglednik može onda 486 00:22:58,200 --> 00:23:00,604 čine da koristite. 487 00:23:00,604 --> 00:23:03,020 PUBLIKA: Je li to Protokol je reći da radim? 488 00:23:03,020 --> 00:23:03,390 MARIJA ZLATKOVA: Žao nam je? 489 00:23:03,390 --> 00:23:05,380 PUBLIKA: Je li to ono što je protokol reći? 490 00:23:05,380 --> 00:23:05,915 MARIJA ZLATKOVA su: protocol-- 491 00:23:05,915 --> 00:23:07,940 PUBLIKA: --what Sadržaj-Tip je ili what-- 492 00:23:07,940 --> 00:23:12,040 MARIJA ZLATKOVA: Protokol se temelji on-- što je protokol vam govorim? 493 00:23:12,040 --> 00:23:16,070 To je samo način da te informacije 494 00:23:16,070 --> 00:23:18,610 je dostavljen Vam se temelji na kakav protokola 495 00:23:18,610 --> 00:23:21,830 je ove informacije dobio dostavlja natrag na vas. 496 00:23:21,830 --> 00:23:23,500 Da li to smisla vrsta? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: Vi mogu misliti protokola 499 00:23:30,070 --> 00:23:33,300 kao A- Mislim profesor Malan opisao 500 00:23:33,300 --> 00:23:36,910 u razredu kao vrsta kao A- to je kao ekvivalent ljudskog rukovanjem. 501 00:23:36,910 --> 00:23:44,930 Recimo, kao, hej, ja sam zahtjev i ja znate kako se nositi HTTP verzije 1.1. 502 00:23:44,930 --> 00:23:48,770 A onda poslužitelj, kaže, Oh, u redu, I-- i oba postoje. 503 00:23:48,770 --> 00:23:51,337 Također znam kako se nositi s HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 I ja ću dati ste sigurnosnu neki sadržaj. 505 00:23:53,170 --> 00:23:56,230 U ovom slučaju, to se događa biti tipa text / html. 506 00:23:56,230 --> 00:23:58,480 Dakle, to je vrsta samo način od njih za communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIJA ZLATKOVA: To je samo kojom se potvrđuje da ste 508 00:24:00,480 --> 00:24:03,290 kako slijedi isti protokol i da su i 509 00:24:03,290 --> 00:24:06,620 klijent i server-- tako Vaš preglednik i server-- 510 00:24:06,620 --> 00:24:09,280 vrsta znati što ste pričaju i imaju 511 00:24:09,280 --> 00:24:12,557 Konvencija za donošenje u podacima. 512 00:24:12,557 --> 00:24:17,022 >> PUBLIKA: Dakle Sadržaj-Tip part-- Sadržaja-Type text / html-- to 513 00:24:17,022 --> 00:24:18,521 zaseban dio iste poruke? 514 00:24:18,521 --> 00:24:20,509 Ili je to dio recimo, 200? 515 00:24:20,509 --> 00:24:22,010 Je li 200 Recite im da ili is-- 516 00:24:22,010 --> 00:24:23,770 >> MARIJA ZLATKOVA: 200 kaže da sve ode u redu. 517 00:24:23,770 --> 00:24:27,900 I onda tip sadržaja je vrsta odvojeni dio iste poruke, 518 00:24:27,900 --> 00:24:34,274 govoreći ono što sam Vraćeno je ovaj tip text / html. 519 00:24:34,274 --> 00:24:35,690 To je samo daje više informacija. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Imate li što dodati? 522 00:24:39,995 --> 00:24:40,495 U REDU. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Ima li još pitanja o ovome? 525 00:24:46,530 --> 00:24:48,370 Odlično. 526 00:24:48,370 --> 00:24:54,070 Tako da neki drugi HTTP statusi koje smo mogli dobiti uz 200 OK, 527 00:24:54,070 --> 00:24:59,500 one koje smo vidjeli, možda možda puno su 403 i 404. 528 00:24:59,500 --> 00:25:05,190 Dakle 404, ako se pokušavate Pristup nešto što ne postoji. 529 00:25:05,190 --> 00:25:10,460 Tako, na primjer, u svom CS50 financija psets, 530 00:25:10,460 --> 00:25:15,640 ako je pružanje quote.html a nisu imali tu datoteku, 531 00:25:15,640 --> 00:25:19,740 ali umjesto toga ste imali quote.php, da bi rezultirati 404 Not Found 532 00:25:19,740 --> 00:25:21,600 jer datoteka možda ne postoji. 533 00:25:21,600 --> 00:25:25,690 >> Za 403 zabranjeno da odnosi na dozvole. 534 00:25:25,690 --> 00:25:31,150 Dakle, ako neke datoteke nije čitljiva od strane svijet, možda dobiti 403 vratio. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Neki drugi koji vas možda get-- 301, preselili trajno; 537 00:25:37,810 --> 00:25:41,300 302, Pronađeno; 304, Promjena; 400, Bad Zahtjev; 538 00:25:41,300 --> 00:25:47,330 a zatim Interna pogreška poslužitelja za 500 i 503, usluga nedostupan. 539 00:25:47,330 --> 00:25:48,140 Da. 540 00:25:48,140 --> 00:25:51,490 >> PUBLIKA: Hoćemo očekuje da zapamtiti sve one statuse? 541 00:25:51,490 --> 00:25:53,739 MARIJA ZLATKOVA: ja bi ih na vašem mangupirati se plahta. 542 00:25:53,739 --> 00:25:55,146 [SMIJEH] 543 00:25:55,146 --> 00:25:59,954 PUBLIKA: Jesmo očekuje da znate što izaziva svatko? 544 00:25:59,954 --> 00:26:00,995 MARIJA ZLATKOVA: Jesu li? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: Za one koje smo pokrenuti into-- pa je pitanje was-- 546 00:26:03,870 --> 00:26:08,010 MARIJA ZLATKOVA: Jesu li očekuje da znam da nitko od tih statusa 547 00:26:08,010 --> 00:26:09,330 Kodovi se može pokrenuti? 548 00:26:09,330 --> 00:26:13,240 Dakle, za one koje smo koristili i naletio na, rekao bih, da. 549 00:26:13,240 --> 00:26:16,610 Tako smo definitivno nisam vidio 200 OK i predavao u psets. 550 00:26:16,610 --> 00:26:19,071 Vidjeli smo 403, 404. 551 00:26:19,071 --> 00:26:20,550 Za one druge? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: bih kažu 500 čini fer igru. 553 00:26:22,690 --> 00:26:23,330 >> MARIJA ZLATKOVA: 500, da. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH Blumberg: Da. 555 00:26:24,246 --> 00:26:27,006 Dovoljno je imati opći osjećaj ono što ih uzrokuje. 556 00:26:27,006 --> 00:26:28,880 I također samo to imena, možete vrsta 557 00:26:28,880 --> 00:26:32,890 kao i napraviti jedan obrazovani pogodak kao na što ih je prouzročilo. 558 00:26:32,890 --> 00:26:36,919 Na primjer, premjestiti trajno, vjerojatno datoteka je premještena trajno. 559 00:26:36,919 --> 00:26:39,328 >> PUBLIKA: Ali na prethodni ispit, bio je tako 560 00:26:39,328 --> 00:26:41,050 kako ste nas očekivati ​​da će odgovoriti na to? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: Da Vrijedilo nula bodova. 562 00:26:42,883 --> 00:26:45,870 Pitanje na 418 na čajnik je tehnički HTTP statusa, 563 00:26:45,870 --> 00:26:47,090 ali bilo je vrijedno nula bodova. 564 00:26:47,090 --> 00:26:48,320 Očito nisi Očekuje se da će ih znati. 565 00:26:48,320 --> 00:26:49,670 >> PUBLIKA: Je li to realno? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: To je pravi jedan, ali to ne znači ništa. 567 00:26:51,970 --> 00:26:52,700 To je samo šala. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 Internet ljudi su smiješne. 570 00:26:57,010 --> 00:26:59,680 >> MARIJA ZLATKOVA: velika pitanja, dečki. 571 00:26:59,680 --> 00:27:01,452 Ima li još pitanja? 572 00:27:01,452 --> 00:27:04,891 >> PUBLIKA: Što je interna pogreška poslužitelja? 573 00:27:04,891 --> 00:27:06,640 MARIJA ZLATKOVA: Interna Pogreška poslužitelja jednostavno 574 00:27:06,640 --> 00:27:10,050 znači da ste bili ne može komunicirati 575 00:27:10,050 --> 00:27:13,400 s poslužiteljem za nekog razloga. 576 00:27:13,400 --> 00:27:15,400 Dakle, to nije nužno nešto što ima veze 577 00:27:15,400 --> 00:27:19,170 s klijentom ili nešto slično. 578 00:27:19,170 --> 00:27:22,170 Ne znam za bilo koji specifičan primjer da smo otišli na to objasniti, 579 00:27:22,170 --> 00:27:23,000 ali da. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: Naravno. 581 00:27:23,250 --> 00:27:25,625 Tako, na primjer, kao što su neka je kažu da su radili na Mashup 582 00:27:25,625 --> 00:27:30,440 a Google poslužitelj pao za neke Razlog, nestanka struje, recimo. 583 00:27:30,440 --> 00:27:33,400 To će biti interni poslužitelj pogreška ili neka vrsta of-- vam se sviđa 584 00:27:33,400 --> 00:27:34,630 ne bi dobili odgovor natrag. 585 00:27:34,630 --> 00:27:35,260 >> MARIJA ZLATKOVA: Da. 586 00:27:35,260 --> 00:27:37,050 To je samo kad si ne može komunicirati 587 00:27:37,050 --> 00:27:40,299 s poslužiteljem za neki razlog, jer od to ide dolje ili neki drugi razlog. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Dakle, skakanje u PHP-u. 590 00:27:47,690 --> 00:27:49,930 PHP, za razliku od HTML-a, je programski jezik. 591 00:27:49,930 --> 00:27:54,820 I mi počeli koristiti ga, jer to je vrlo korisno za web razvoj. 592 00:27:54,820 --> 00:27:56,940 >> Prvo smo ga koristili u CS50 financija. 593 00:27:56,940 --> 00:28:02,240 I to zapravo pomaže nam donijeti zajedno to označavanje, dizajn, 594 00:28:02,240 --> 00:28:07,460 i kako mi zapravo koristiti podatke prikazati stvari na web stranici. 595 00:28:07,460 --> 00:28:11,870 Dakle, PHP sama znači PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 tako da je rekurzivna backnorym po sebi. 597 00:28:15,360 --> 00:28:22,330 A otvaranje oznake za PHP mi je lijeva i desnu strelicu s upitnike 598 00:28:22,330 --> 00:28:23,060 i PHP. 599 00:28:23,060 --> 00:28:25,890 >> Tako smo već vidjeli gomilu toga. 600 00:28:25,890 --> 00:28:29,150 Sada mi samo ići preko neke od osnovnih stvari o njemu. 601 00:28:29,150 --> 00:28:32,280 Dakle, s PHP, varijable Imena početi s znak za dolar. 602 00:28:32,280 --> 00:28:35,660 Mi ne navodi, opet, varijabla tipa više. 603 00:28:35,660 --> 00:28:38,450 Baš kao što smo učinili s C, ne moramo to učiniti. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Možemo napraviti hrpa različitih stvari s varijablama. 606 00:28:44,490 --> 00:28:47,750 Možemo ih staviti zajedno ih nadovezivanjem 607 00:28:47,750 --> 00:28:52,900 s dot notaciji koja nismo mogli učiniti u C ponovo. 608 00:28:52,900 --> 00:28:57,490 Opet, imamo malo više svestranost s PHP u pogledu varijabli. 609 00:28:57,490 --> 00:29:00,080 Opet, nemamo glavnu ulogu. 610 00:29:00,080 --> 00:29:03,370 >> A PHP interpretira za razliku od sastavio, 611 00:29:03,370 --> 00:29:09,970 Pa koliko smo napraviti za C datoteke, nemamo to učiniti za PHP. 612 00:29:09,970 --> 00:29:15,440 Ali umjesto toga, način na koji se jezik je trčanje po sebi, to se tumači. 613 00:29:15,440 --> 00:29:18,550 A onda labavo upisali samo znači da mi 614 00:29:18,550 --> 00:29:22,490 ne moraju odrediti varijablu Vrsta i promjenjive vrste 615 00:29:22,490 --> 00:29:25,415 Podrazumijeva se za vrijeme izvođenja. 616 00:29:25,415 --> 00:29:29,185 >> PUBLIKA: ali ono što je učinio znači po dot ulančavanje? 617 00:29:29,185 --> 00:29:30,060 MARIJA ZLATKOVA: Naravno. 618 00:29:30,060 --> 00:29:37,660 Kada želimo staviti stvari together-- pa ako smo imali neke varijable koje 619 00:29:37,660 --> 00:29:41,500 imao vrijednost 3 i imali smo još jedan varijabla koja je imala vrijednost niza, 620 00:29:41,500 --> 00:29:45,920 možemo staviti varijable zajedno stavljajući točku između njih 621 00:29:45,920 --> 00:29:46,970 te ih nadovezivanjem. 622 00:29:46,970 --> 00:29:52,670 Ili možemo stvoriti varijabla zove ime 623 00:29:52,670 --> 00:29:56,900 i stavio ga zajedno nadovezivanjem dva konce. 624 00:29:56,900 --> 00:30:00,680 >> Dakle, ako smo imali niz u dvokrevetnoj citati i stavili smo točku nakon njega, 625 00:30:00,680 --> 00:30:03,660 a onda smo imali još jedan niz, koji će stvoriti string zajedno. 626 00:30:03,660 --> 00:30:05,242 >> PUBLIKA: U redu. 627 00:30:05,242 --> 00:30:06,450 MARIJA LATVIJA: Je li to jasno? 628 00:30:06,450 --> 00:30:07,099 PUBLIKA: Da. 629 00:30:07,099 --> 00:30:07,890 MARIJA ZLATKOVA: U redu. 630 00:30:07,890 --> 00:30:08,766 Da. 631 00:30:08,766 --> 00:30:11,146 >> PUBLIKA: Kada reći tumačiti nego sastavio, 632 00:30:11,146 --> 00:30:14,160 pričaš o tebi ne trebaju biti što precizniji kada 633 00:30:14,160 --> 00:30:15,906 je riječ o PHP odnosu C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIJA ZLATKOVA: Kada kažemo interpretirati kao razliku sastavio, 636 00:30:20,710 --> 00:30:21,850 Što mi znači? 637 00:30:21,850 --> 00:30:26,220 Dakle, to znači da mi ne treba izvršne datoteke za pokretanje PHP. 638 00:30:26,220 --> 00:30:29,870 To znači da se radi kao što ide. 639 00:30:29,870 --> 00:30:31,650 Ima li to smisla? 640 00:30:31,650 --> 00:30:32,495 Još malo. 641 00:30:32,495 --> 00:30:34,620 HANNAH Blumberg: Znači, mogu misliti tumača 642 00:30:34,620 --> 00:30:38,980 kao još jedan program koji je odgovoran za idući redak po redak kroz PHP 643 00:30:38,980 --> 00:30:42,745 i zapravo ga izvršenja, za razliku od sve to sastavljanje dolje binarno. 644 00:30:42,745 --> 00:30:46,050 To zapravo ne znači ništa o tome kako je specifično trebamo biti. 645 00:30:46,050 --> 00:30:49,470 Još uvijek trebaju biti precizni, a ne zaboravite svoj zarez i uvjerite se 646 00:30:49,470 --> 00:30:51,470 imate svoj znak za dolar, i slične stvari. 647 00:30:51,470 --> 00:30:52,240 Dobro pitanje. 648 00:30:52,240 --> 00:30:53,115 >> MARIJA ZLATKOVA: Da. 649 00:30:53,115 --> 00:30:55,590 Dakle, redak po redak, kao za razliku od C datoteke, 650 00:30:55,590 --> 00:30:59,100 moramo napraviti cijeli finale prije nego što zapravo može ga pokrenuti. 651 00:30:59,100 --> 00:31:00,360 To je glavna razlika. 652 00:31:00,360 --> 00:31:02,655 Ali opet, ne možemo stvarno biti manje specifična. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Dakle polja u PHP predstavlja zapravo naredio karta. 655 00:31:13,950 --> 00:31:17,550 >> Dakle polja pridruženih vrijednosti do ključeva. 656 00:31:17,550 --> 00:31:23,350 Dva načina da proglasi polje, na temelju ovog sintaksi, 657 00:31:23,350 --> 00:31:26,380 možemo biti jasniji u tvrdnji imamo niz 658 00:31:26,380 --> 00:31:31,010 i imamo ovu key1 koji mapira ovo vrijednost1, key2 koji preslikava VALUE2. 659 00:31:31,010 --> 00:31:34,660 Ili mi samo može stvoriti niz koji sadrži same vrijednosti 660 00:31:34,660 --> 00:31:38,360 a zatim su ključevi Podrazumijeva se na neki način. 661 00:31:38,360 --> 00:31:40,000 Bilo kakva pitanja o ovome? 662 00:31:40,000 --> 00:31:42,500 >> Publika: Što bi ključevi se u drugom primjeru? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIJA ZLATKOVA: Na primjer, to je samo ključevi u to nije nužno 667 00:31:55,780 --> 00:31:56,550 promijeniti nešto. 668 00:31:56,550 --> 00:32:01,720 Oni jednostavno odrediti kako možete koristiti vrijednosti unutar nje. 669 00:32:01,720 --> 00:32:08,660 Dakle, ako smo imali foreach petlje u PHP kako bi 670 00:32:08,660 --> 00:32:14,760 nam omogućiti da ide kroz sve vrijednosti, možemo proći kroz svih vrijednosti, 671 00:32:14,760 --> 00:32:19,570 čak i ako smo imali ili nisu definirani specifična ključna unutar stranice je 672 00:32:19,570 --> 00:32:20,820 prethodna sintakse. 673 00:32:20,820 --> 00:32:23,460 >> Dakle, čak i sa ovom vrstom od niza, ipak smo mogli 674 00:32:23,460 --> 00:32:26,260 imaju foreach petlju koja prolazi kroz svaki 675 00:32:26,260 --> 00:32:31,240 od vrijednosti u ključ u nizu. 676 00:32:31,240 --> 00:32:36,180 Dakle sintaksu foreach petlje, počinjemo s nizom. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Ova varijabla $ arr je naš stvarni niz da je definiran u prethodnu stranicu 679 00:32:43,900 --> 00:32:47,550 kao vrijednost koja doslovno ide kroz svaku od vrijednosti, 680 00:32:47,550 --> 00:32:50,122 bez obzira da li imali smo ključ ili ne. 681 00:32:50,122 --> 00:32:53,080 A onda možemo učiniti nešto s vrijednost unutar foreach petlje. 682 00:32:53,080 --> 00:32:57,730 Pa opet, ako smo imali niz ovako ovdje created-- 683 00:32:57,730 --> 00:33:03,270 tako da imamo ključ foo i vrijednosti bar, ključ Baz i vrijednost qux-- 684 00:33:03,270 --> 00:33:09,730 možemo imati foreach petlju koja prolazi kroz niz kao ključne vrijednosti 685 00:33:09,730 --> 00:33:11,900 a zatim učinite nešto s ključem i / ili vrijednosti. 686 00:33:11,900 --> 00:33:15,980 Ali mi ne nužno uvijek moraju imati foreach petlje koje 687 00:33:15,980 --> 00:33:19,410 prolazi kroz niz kao ključnog kartu na vrijednosti. 688 00:33:19,410 --> 00:33:26,060 Možemo proći kroz foreach petlje niz kao vrijednost. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: I ​​ja mislim to-- je vaše pitanje, ono 690 00:33:28,990 --> 00:33:31,229 je implicitno indeks? 691 00:33:31,229 --> 00:33:31,895 PUBLIKA: Kinda. 692 00:33:31,895 --> 00:33:32,240 MARIJA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH Blumberg: Da, da. 694 00:33:33,406 --> 00:33:36,150 Tako je u osnovi, ako ne odredite ključ, to će biti 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIJA ZLATKOVA: Da. 696 00:33:37,140 --> 00:33:41,718 Baš kao i sa C, to je nula indeksirane ako ne odredite ključ. 697 00:33:41,718 --> 00:33:42,384 PUBLIKA: Žao mi je. 698 00:33:42,384 --> 00:33:43,827 Možete li pokušati govoriti malo glasnije? 699 00:33:43,827 --> 00:33:45,270 Imam malo Problem je sve čuo. 700 00:33:45,270 --> 00:33:46,478 >> MARIJA ZLATKOVA: Žao mi je. 701 00:33:46,478 --> 00:33:48,439 Da, naravno. 702 00:33:48,439 --> 00:33:50,230 Dakle, želiš mi ići preko toga opet? 703 00:33:50,230 --> 00:33:51,680 Ili je this-- 704 00:33:51,680 --> 00:33:54,930 PUBLIKA: Pa na prethodnoj slide-- ako možete jednostavno vratiti jednu sekundu. 705 00:33:54,930 --> 00:33:57,313 MARIJA ZLATKOVA: Naravno, žao. 706 00:33:57,313 --> 00:33:59,237 PUBLIKA: Pa drugi Niz ovdje ne 707 00:33:59,237 --> 00:34:04,135 Čini se da imaju vrijednost ključa, nekako [? uzročnost. ?] 708 00:34:04,135 --> 00:34:05,343 MARIJA ZLATKOVA: Da, da. 709 00:34:05,343 --> 00:34:07,608 PUBLIKA: pa kako se taj posao kad kažeš da je sve ili ništa. 710 00:34:07,608 --> 00:34:08,969 Za mene, to izgleda kao A [? foo?] već. 711 00:34:08,969 --> 00:34:10,093 >> MARIJA ZLATKOVA: Da, da. 712 00:34:10,093 --> 00:34:12,969 Pa opet, to je naredio karta u tom smislu 713 00:34:12,969 --> 00:34:15,639 da su tamo razumjeli, na primjer, indeksi 714 00:34:15,639 --> 00:34:20,159 Ovdje se može shvatiti kao 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Opet, to je s onima Indeksi je naš ekvivalent 716 00:34:25,929 --> 00:34:28,980 da ima ključeve preslikati na vrijednosti. 717 00:34:28,980 --> 00:34:34,710 Dakle, ako je naš ključni je 0-- žao. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: Ne, tu je krede ovdje. 719 00:34:36,524 --> 00:34:36,929 To je zapravo jako lijepo. 720 00:34:36,929 --> 00:34:37,460 >> MARIJA ZLATKOVA: To je super. 721 00:34:37,460 --> 00:34:38,260 U REDU. 722 00:34:38,260 --> 00:34:49,489 Pa opet, $ ARR 0 će biti ključ za vrijednost 1. 723 00:34:49,489 --> 00:34:51,138 0 će biti ključ za vrijednost 1. 724 00:34:51,138 --> 00:34:51,971 PUBLIKA: Žao mi je. 725 00:34:51,971 --> 00:34:53,190 To je nevidljiva. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: U redu, nevermind. 727 00:34:53,659 --> 00:34:54,980 Kreda je loša ideja. 728 00:34:54,980 --> 00:34:58,030 Ja ga uzeti natrag. 729 00:34:58,030 --> 00:35:01,425 Možete misliti ključeva kao 0 karata u vrijednosti 1. 730 00:35:01,425 --> 00:35:02,300 MARIJA ZLATKOVA: Da. 731 00:35:02,300 --> 00:35:04,630 Dakle, ovaj je 0, to je 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 To mogu biti tvoji ključevi. 733 00:35:05,760 --> 00:35:10,020 Možete misliti o njima as-- da. 734 00:35:10,020 --> 00:35:12,740 Dakle, umjesto da eksplicitnih tipke, oni su 735 00:35:12,740 --> 00:35:17,180 vrsta shvatili kao Indeksi početkom u 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 Krede nije pomoglo. 738 00:35:24,820 --> 00:35:25,722 Da. 739 00:35:25,722 --> 00:35:30,914 >> PUBLIKA: Za foreach petlje, ako smo htjeli vidjeti što je vrijednost, 740 00:35:30,914 --> 00:35:33,245 To bi samo automatski indeks 0? 741 00:35:33,245 --> 00:35:34,120 MARIJA ZLATKOVA: Da. 742 00:35:34,120 --> 00:35:35,745 To bi proći kroz svaku od vrijednosti. 743 00:35:35,745 --> 00:35:39,130 PUBLIKA: [nečujan] kao 0 ili bi to jednostavno učiniti 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIJA ZLATKOVA: Ti bi reći što je znak za dolar, a zatim 745 00:35:43,710 --> 00:35:46,266 Neki ime varijable, vrijednost. 746 00:35:46,266 --> 00:35:47,182 PUBLIKA: [nečujan]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIJA ZLATKOVA: Žao nam je? 749 00:35:50,964 --> 00:35:52,839 PUBLIKA: Nažalost, ja sam Samo pokušavam sjetiti. 750 00:35:52,839 --> 00:35:57,190 Kako biste učinili da ako to možete učiniti automatski indeksiranje samo 0? 751 00:35:57,190 --> 00:36:00,780 >> MARIJA ZLATKOVA: Pa kako bi ti to ako nisu imali određene ključne imena? 752 00:36:00,780 --> 00:36:01,710 >> PUBLIKA: Da. 753 00:36:01,710 --> 00:36:07,820 >> MARIJA ZLATKOVA: Vi bi samo define-- Samo se reći kako je neko ime. 754 00:36:07,820 --> 00:36:17,950 Dakle, u svojim psets, vi možda zapamtite foreach $ redak kao redovi $, 755 00:36:17,950 --> 00:36:24,610 stvorili smo sebe ovu $ redak govoreći želimo ići preko reda, kao $ redova. 756 00:36:24,610 --> 00:36:28,360 Iako nismo imali to eksplicitno $ redaka definirani, 757 00:36:28,360 --> 00:36:31,990 smo mogli samo otići i kažu to može biti naša ključna, 758 00:36:31,990 --> 00:36:33,615 i samo proći kroz svaku od vrijednosti. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> PUBLIKA: Tako je vrijednost nova varijabla mi stvaramo pohraniti [nečujan]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIJA ZLATKOVA: Dakle, to nije inherentno nova varijabla. 763 00:36:49,990 --> 00:37:00,310 To je varijabla koja se odnosi na unutar polja na svakoj od njih. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: To je novo ime varijable. 765 00:37:02,060 --> 00:37:04,018 MARIJA ZLATKOVA: Da, to je novi naziv varijable, 766 00:37:04,018 --> 00:37:06,680 ali to nije inherently-- da. 767 00:37:06,680 --> 00:37:08,950 To je samo nova varijabla koje možete učiniti. 768 00:37:08,950 --> 00:37:12,680 Pa koliko to smo učinili $ red kao $ redaka, redovi 769 00:37:12,680 --> 00:37:17,980 je novo ime varijable koje mogao stvoriti u našem foreach petlju. 770 00:37:17,980 --> 00:37:22,065 To ne mora postojali prije toga. 771 00:37:22,065 --> 00:37:25,777 >> PUBLIKA: Možete li proći kroz logika za svaki, na primjeru postoji? 772 00:37:25,777 --> 00:37:26,610 MARIJA ZLATKOVA: MHM. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 O oprosti. 775 00:37:32,080 --> 00:37:33,780 Evo primjer. 776 00:37:33,780 --> 00:37:34,280 Naravno. 777 00:37:34,280 --> 00:37:38,950 Tako je za svako array-- tako to znači ići na ovaj niz 778 00:37:38,950 --> 00:37:43,930 kao ključ value-- da će proći kroz ovaj niz 779 00:37:43,930 --> 00:37:49,480 i prvi put otići i dobiti foo je Ključ foo a bar vrijednost. 780 00:37:49,480 --> 00:37:51,570 A onda na drugi iteracija za petlju, 781 00:37:51,570 --> 00:37:55,090 to će proći i uzeti ključ Baz i vrijednost qux. 782 00:37:55,090 --> 00:38:00,512 A onda možete učiniti nešto s bilo koji od njih ili oboje. 783 00:38:00,512 --> 00:38:03,488 >> PUBLIKA: Dakle, ideja ima ključnu točku na vrijednost, 784 00:38:03,488 --> 00:38:07,470 Što ćete završiti pristupu? 785 00:38:07,470 --> 00:38:10,680 >> MARIJA ZLATKOVA: Što je ideja vlasništvo ključni ukazuje na vrijednost? 786 00:38:10,680 --> 00:38:16,400 To je samo još jedna konvencija, drugi način prolazi kroz niz 787 00:38:16,400 --> 00:38:22,600 i biti u mogućnosti pristupiti bilo ključ ili vrijednost ili oboje i koriste ih. 788 00:38:22,600 --> 00:38:27,100 >> PUBLIKA: Koja je uloga za narediti da se foreach radi u? 789 00:38:27,100 --> 00:38:29,250 Dakle, ako smo dodali elementi niza kasnije, 790 00:38:29,250 --> 00:38:32,140 bi oni biti prvi pozvao u foreach polje, 791 00:38:32,140 --> 00:38:33,750 ili će to biti kasnije? 792 00:38:33,750 --> 00:38:37,770 >> MARIJA ZLATKOVA: Dakle, što je red da foreach 793 00:38:37,770 --> 00:38:39,210 petlja prolazi kroz niz u? 794 00:38:39,210 --> 00:38:42,220 Ona prolazi kroz prvi element posljednjeg elementa, 795 00:38:42,220 --> 00:38:43,400 do posljednjeg dodano elementa. 796 00:38:43,400 --> 00:38:48,020 Ako dodate elemente kasnije, što bi biti accessed-- prvi elementi bi 797 00:38:48,020 --> 00:38:51,410 pristupiti kao prvi elementi polja, 798 00:38:51,410 --> 00:38:57,620 i onda bi proći kroz svaki od elementi kao svojevrstan ordered-- 799 00:38:57,620 --> 00:39:02,930 nije naredio, ali način na koji oni su stavili u nizu. 800 00:39:02,930 --> 00:39:06,855 >> PUBLIKA: Tako novi elementi dodaju kasnije? 801 00:39:06,855 --> 00:39:10,680 Tako oni added-- oni će biti zadnji u [? iteracija. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIJA ZLATKOVA: Novi elementi can-- u osnovi, kada se dodaju novi elementi, 803 00:39:14,280 --> 00:39:16,520 se dodaju na kraj niza? 804 00:39:16,520 --> 00:39:17,632 >> PUBLIKA: Da. 805 00:39:17,632 --> 00:39:18,840 MARIJA ZLATKOVA: Vjerujem da jest. 806 00:39:18,840 --> 00:39:20,850 Da. 807 00:39:20,850 --> 00:39:24,330 A onda sa svojim foreach petlje, Nakon što ste dodali nove elemente 808 00:39:24,330 --> 00:39:26,790 i proći kroz njih, novi elementi bi 809 00:39:26,790 --> 00:39:30,930 biti accessed-- novog elementa, ako je to dodao je posljednja, to će biti zadnji pristupiti. 810 00:39:30,930 --> 00:39:34,416 >> PUBLIKA: Možete li samo dati primjer nešto što bi [nečujan] 811 00:39:34,416 --> 00:39:37,404 s nešto s vrijednošću kao [nečujan] ili vrijednosti, 812 00:39:37,404 --> 00:39:38,910 kao i kako ćeš oblikovati to? 813 00:39:38,910 --> 00:39:39,785 >> MARIJA ZLATKOVA: Naravno. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Mogu li dati primjer onoga što što će učiniti s vrijednosti? 816 00:39:46,410 --> 00:39:52,440 Pa što vi mogli biti upoznati s je da smo prošli kroz niz 817 00:39:52,440 --> 00:39:55,380 i zapravo ispisuju svaki od elemenata, 818 00:39:55,380 --> 00:40:00,910 na primjer, u sklopu naredio popis ili nešto što. 819 00:40:00,910 --> 00:40:02,674 Znači li to da smisla ili ne želimo to-- 820 00:40:02,674 --> 00:40:04,340 PUBLIKA: Možemo ispisati te vrijednosti se? 821 00:40:04,340 --> 00:40:13,220 MARIJA ZLATKOVA: Da, možemo ispisati a onda zapravo $ vrijednost, jer na 822 00:40:13,220 --> 00:40:16,570 daje specifična vrijednost, mi bi se ispis vrijednosti unutar nje. 823 00:40:16,570 --> 00:40:20,150 Dakle, ako smo bili na našoj prvoj iteraciji to i mi tiskani $ vrijednost, 824 00:40:20,150 --> 00:40:23,775 mi bi se ispis bar. 825 00:40:23,775 --> 00:40:27,020 >> PUBLIKA: Postoje li su i za petlje u PHP ili samo foreach petlje? 826 00:40:27,020 --> 00:40:30,430 >> MARIJA ZLATKOVA: Nema i za petlje u PHP. 827 00:40:30,430 --> 00:40:33,399 I njihova logika je uglavnom isto kao što ste navikli. 828 00:40:33,399 --> 00:40:34,690 PUBLIKA: Dakle njegova vrijednost je null. 829 00:40:34,690 --> 00:40:35,090 MARIJA ZLATKOVA: To je kao isti. 830 00:40:35,090 --> 00:40:35,590 Da. 831 00:40:35,590 --> 00:40:37,747 PUBLIKA: ja sam samo pitati. 832 00:40:37,747 --> 00:40:39,695 Dakle, kada proglasiti polje, ne trebate 833 00:40:39,695 --> 00:40:42,617 reći što veličina to će biti, što znači da možete jednostavno 834 00:40:42,617 --> 00:40:44,417 dodavanje i oduzeti elemenata [nečujan]. 835 00:40:44,417 --> 00:40:45,250 MARIJA ZLATKOVA: Yup. 836 00:40:45,250 --> 00:40:45,750 Yup. 837 00:40:45,750 --> 00:40:46,251 Točno. 838 00:40:46,251 --> 00:40:48,875 Kad smo proglasiti niz, mi ne treba reći što veličina je, 839 00:40:48,875 --> 00:40:51,022 tako da mogu samo dodati elemente na to i kasnije. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Više pitanja? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Dakle, donoseći PHP i HTML zajedno, ono što smo seen-- dobro, 844 00:41:05,950 --> 00:41:15,130 na primjer, u ovom slučaju imamo HTML oblik koji ima polje za unos. 845 00:41:15,130 --> 00:41:18,830 >> I polje za unos je samo ime a onda ima gumb Pošalji. 846 00:41:18,830 --> 00:41:26,040 A kad pritisnete Pošalji gumb, u našem hello.php datoteke, 847 00:41:26,040 --> 00:41:32,130 jer je postupak za oblika dobili, možemo pristupiti bilo je na ime 848 00:41:32,130 --> 00:41:40,360 time dobili globalnu varijablu koja is-- sintaksu jer _GET $. 849 00:41:40,360 --> 00:41:44,520 A onda možemo pristupiti bez obzira na unos korisnika unutar tog obrasca za ime 850 00:41:44,520 --> 00:41:47,410 određivanjem ime tog polja. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Ima li još pitanja ili bilo pitanja o ovom specifičnom primjeru? 853 00:41:55,060 --> 00:41:58,275 >> PUBLIKA: Gdje je PHP? 854 00:41:58,275 --> 00:41:59,150 MARIJA ZLATKOVA: Ovdje. 855 00:41:59,150 --> 00:42:01,150 Dakle, to je naša otvaranje oznaka za PHP. 856 00:42:01,150 --> 00:42:01,530 >> PUBLIKA: Oh, u redu. 857 00:42:01,530 --> 00:42:02,363 >> MARIJA ZLATKOVA: Da. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH Blumberg? Odgovor: = je stenogram za to je PHP i samo jeka. 860 00:42:09,609 --> 00:42:10,150 PUBLIKA: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIJA ZLATKOVA: Da, ispričavam se. 862 00:42:10,720 --> 00:42:12,040 Trebao sam to jasno. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: Ispis. 864 00:42:13,759 --> 00:42:16,800 MARIJA ZLATKOVA: To je samo funkcija koji nam omogućuje ispis nešto. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Veliko pitanje. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Tako going-- da. 869 00:42:25,495 --> 00:42:31,940 >> PUBLIKA: Ima li će biti dosta malo rukom kodiranje PHP i HTML 870 00:42:31,940 --> 00:42:33,450 na kvizu 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIJA ZLATKOVA: Tu može biti sajam iznos od interpretacije 873 00:42:38,810 --> 00:42:43,330 PHP i HTML, ne nužno kao ogroman kodiranje, 874 00:42:43,330 --> 00:42:46,960 iako možda morati napisati foreach petlju, ipak, for petlje. 875 00:42:46,960 --> 00:42:49,790 Bilo koji od petlji koje pokriti ovdje je fer igra. 876 00:42:49,790 --> 00:42:51,889 I to je uglavnom to. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: ja bi biti spreman. 878 00:42:53,430 --> 00:42:57,010 Na isti način na koji smo vas pitali da napisati hrpa C funkcija na kviz 0, 879 00:42:57,010 --> 00:42:59,766 Ja bih bio spreman učiniti Isto u PHP i JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIJA ZLATKOVA: Da. 881 00:43:00,640 --> 00:43:03,210 HANNAH Blumberg: Rekao bih little-- kao da nismo 882 00:43:03,210 --> 00:43:06,251 će vam napisati veliki HTML stranica samo zato što je malo 883 00:43:06,251 --> 00:43:08,240 dosadan, ali možda imaju dijelove. 884 00:43:08,240 --> 00:43:09,310 To je potpuno fer igra. 885 00:43:09,310 --> 00:43:11,082 Kao mali HTML stranice, potpuno pošteno. 886 00:43:11,082 --> 00:43:11,623 PUBLIKA: U redu. 887 00:43:11,623 --> 00:43:13,814 Kako ou JavaScript isto kao i? 888 00:43:13,814 --> 00:43:14,730 HANNAH Blumberg: Da. 889 00:43:14,730 --> 00:43:15,250 JavaScript je fer igra. 890 00:43:15,250 --> 00:43:15,635 >> MARIJA ZLATKOVA: Da. 891 00:43:15,635 --> 00:43:16,801 To je potpuno fer igra. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Dobit ćemo onom u kao 10 minuta. 893 00:43:19,280 --> 00:43:23,750 >> MARIJA ZLATKOVA: SQL, opet, Structured Query Language. 894 00:43:23,750 --> 00:43:28,651 To u osnovi omogućuje nam da upravljanje podacima u upravljanje relacijskom bazom podataka 895 00:43:28,651 --> 00:43:29,150 Sustav. 896 00:43:29,150 --> 00:43:31,149 To samo znači da u osnovi da smo negdje 897 00:43:31,149 --> 00:43:37,980 pohraniti neke podatke koje smo možda želite koristiti na web stranici ili u nekom drugom obliku. 898 00:43:37,980 --> 00:43:42,190 A onda smo dobili upite Podaci iz naše baze podataka, 899 00:43:42,190 --> 00:43:44,320 ili umetnuti podatke u njima. 900 00:43:44,320 --> 00:43:47,560 Puno zajedničke ones-- UPDATE, INSERT, SELECT i DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Dakle, za ažuriranje, to je sintaksa za ažuriranje podataka u bazi podataka. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 Ažuriranje ovu tablicu pod nazivom stol rekavši SET, 904 00:43:57,340 --> 00:44:04,170 možemo postaviti neke vrijednosti u svim Redovi ravnopravnom nešto drugo. 905 00:44:04,170 --> 00:44:09,410 Dakle, možemo navesti neke specifične Zapisi koje želimo mijenjati 906 00:44:09,410 --> 00:44:11,240 a to može biti pomoću GDJE. 907 00:44:11,240 --> 00:44:16,380 I možemo navesti da mi samo želimo mijenjati neke retke gdje se kuća za, 908 00:44:16,380 --> 00:44:19,830 ako smo imali stol studenata i svi studenti imali kuću, 909 00:44:19,830 --> 00:44:24,890 tako da bi samo promijeniti neke vrijednosti gdje je kuća jednaka CURRIER, 910 00:44:24,890 --> 00:44:25,430 na primjer. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Za INSERT, možemo umetnuti određene vrijednosti u tablici. 913 00:44:31,800 --> 00:44:35,150 Dakle INSERT INTO tablica, te vrijednosti, 914 00:44:35,150 --> 00:44:39,080 a zatim u zagradama, smo odredili koje vrijednosti želite umetnuti. 915 00:44:39,080 --> 00:44:43,220 Dakle INSERT INTO stol, Col1 i col2, vrijednost se VAL1 i VAL2. 916 00:44:43,220 --> 00:44:48,930 Dakle, ovo umeće osnovi novi redak u Na tablici vrijednosti 1 i 2 917 00:44:48,930 --> 00:44:50,850 pod stupaca 1 i 2. 918 00:44:50,850 --> 00:44:54,760 >> A onda ćemo ići preko brzo primjer kako to izgleda 919 00:44:54,760 --> 00:44:56,310 kao u našoj bazi, malo. 920 00:44:56,310 --> 00:44:58,685 Ali ovo konačni upit koji sam da ćemo ići preko, 921 00:44:58,685 --> 00:45:01,450 SELECT, samo nam omogućuje odabir podataka iz tablice 922 00:45:01,450 --> 00:45:03,080 eventualno ga koristiti poslije. 923 00:45:03,080 --> 00:45:05,830 A način na koji mi to radimo je da samo ga pohraniti u neku varijablu. 924 00:45:05,830 --> 00:45:07,780 A onda smo eventualno može ga koristiti opet. 925 00:45:07,780 --> 00:45:10,260 >> Pa odaberite zvijezda znači odaberite sve. 926 00:45:10,260 --> 00:45:13,280 To je samo skraćenica za odabir sve. 927 00:45:13,280 --> 00:45:19,760 IZ stola gdje, tražimo za neke posebne uvjete, 928 00:45:19,760 --> 00:45:22,290 pa gdje stupac jednak nešto, npr. 929 00:45:22,290 --> 00:45:24,410 Ako smo samo htjeli odaberite sve od stola, 930 00:45:24,410 --> 00:45:28,400 to samo odabire sve stupce i sve retke iz tablice. 931 00:45:28,400 --> 00:45:32,040 >> A onda izbrisati iz tablice GDJE col jednak nešto, 932 00:45:32,040 --> 00:45:36,440 to samo briše neke red od našeg stola 933 00:45:36,440 --> 00:45:38,860 gdje imamo neke specifične uvjete. 934 00:45:38,860 --> 00:45:41,870 U ovom slučaju, uvjeti su kolone jednak nešto. 935 00:45:41,870 --> 00:45:43,460 Dakle, samo brzo primjer za to. 936 00:45:43,460 --> 00:45:49,100 Ako imamo tablicu ovdje i mi umetnite ga u stol, te vrijednosti, 937 00:45:49,100 --> 00:45:50,400 da bi umetnuti novi redak. 938 00:45:50,400 --> 00:45:56,380 A ako smo imali auto-prirast, to bi Samo povećavati našu ID od 0 do 1 do 2. 939 00:45:56,380 --> 00:46:00,010 >> Ako smo odabrali svi od studenata ga, Samo vraća sva polja i sve retke. 940 00:46:00,010 --> 00:46:02,430 Gdje godine veći od ili jednak 2016, 941 00:46:02,430 --> 00:46:04,390 da bi samo povratak Ana i ja. 942 00:46:04,390 --> 00:46:08,360 A onda, ako mi samo odabrani godine id i godina od studenata 943 00:46:08,360 --> 00:46:11,710 gdje je kuća je Cabot kuća, koje bi, opet, povratak Hannah i ja. 944 00:46:11,710 --> 00:46:14,430 >> Onda ako izbrisani iz studente gdje je naziv jednak Rob, 945 00:46:14,430 --> 00:46:16,760 kako bi izbrisati cijeli redak. 946 00:46:16,760 --> 00:46:19,696 A onda, ako smo postavili ime, UPDATE učenika 947 00:46:19,696 --> 00:46:21,570 Naziv skupa jednaka Daven GDJE kuća je jednaka 948 00:46:21,570 --> 00:46:27,010 Cabot kuća, da će ići na one retke, a zatim ažurirati ime. 949 00:46:27,010 --> 00:46:31,470 >> I onda nekoliko vrsta SQL podataka su CHAR, VARCHAR, INT, i plutaju. 950 00:46:31,470 --> 00:46:32,760 To su fer igra. 951 00:46:32,760 --> 00:46:36,740 Ja bih ići ispočetka i provjerite da li znate 952 00:46:36,740 --> 00:46:40,930 te ih imati na vašem mangupirati se plahta, što svaki od tih znakova 953 00:46:40,930 --> 00:46:44,140 su korišteni za, što možete ih koristiti na svojim psets, 954 00:46:44,140 --> 00:46:48,050 i provjerite da li ste upoznati i zadovoljni što odabrati 955 00:46:48,050 --> 00:46:51,450 iz različitih vrsta podataka u vašem pset. 956 00:46:51,450 --> 00:46:51,950 Da. 957 00:46:51,950 --> 00:46:54,300 >> PUBLIKA: Što je to stol pohranjene? 958 00:46:54,300 --> 00:46:57,119 Da, ako se ova tablica pohranjeni? 959 00:46:57,119 --> 00:46:59,160 MARIJA ZLATKOVA: Pa, upravo sada, to nije pohranjena. 960 00:46:59,160 --> 00:47:00,700 U svakom slučaju, ako se ova tablica pohranjeni? 961 00:47:00,700 --> 00:47:04,503 Ali to može biti pohranjeni u SQL baze podataka. 962 00:47:04,503 --> 00:47:07,330 >> PUBLIKA: A gdje je SQL baza podataka? 963 00:47:07,330 --> 00:47:11,200 U računalo, on-line negdje, poslužitelj? 964 00:47:11,200 --> 00:47:15,000 >> MARIJA ZLATKOVA: To može biti broj različitih stvari. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: Mi smo povezati s SQL tablice govore s phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Tako bismo mogli postaviti poslužitelj pohraniti ih za nas. 967 00:47:22,060 --> 00:47:23,830 Mi ih mogli pohraniti na vlastitom računalu. 968 00:47:23,830 --> 00:47:27,950 >> MARIJA ZLATKOVA: To samo ovisi o kako želite to učiniti za sebe. 969 00:47:27,950 --> 00:47:30,075 No, mi smo bili skladištenje ih, kao što je Hannah spomenuto, 970 00:47:30,075 --> 00:47:31,755 na phpMyAdmin, koji je online. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 A onda je način na koji smo koristili PHP i SQL, možemo ga spremiti 973 00:47:39,280 --> 00:47:43,450 u neku varijablu ono što smo pitali za. 974 00:47:43,450 --> 00:47:48,370 >> Dakle, ako smo odabrali sve iz povijesti gdje USER_ID jednaka ID sesije, 975 00:47:48,370 --> 00:47:53,900 kako bi odabrali sve retke za određenu osobu koja 976 00:47:53,900 --> 00:47:58,327 prijavljen iz povijesti stol i razvrstati ih u redove. 977 00:47:58,327 --> 00:48:00,410 Kul je znati da CS50 upit funkciji 978 00:48:00,410 --> 00:48:02,180 štiti od SQL injekcije tagova. 979 00:48:02,180 --> 00:48:07,420 To samo znači da osigura ulaz koji je ušao je ispravan 980 00:48:07,420 --> 00:48:09,920 i da je osoba koja ulazi u ulaz 981 00:48:09,920 --> 00:48:15,100 ne pokušava ulaz neki zlonamjerni kod bilo ispadne naše stolove 982 00:48:15,100 --> 00:48:17,305 ili izbrisati sve unutar naše baze podataka. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Brzi pregled od Model View Controller model 985 00:48:23,400 --> 00:48:27,360 to je samo način organiziranja i razmišljam o kodu. 986 00:48:27,360 --> 00:48:29,100 To je opet, dizajn paradigma. 987 00:48:29,100 --> 00:48:33,380 Što to znači da smo can-- i to je dobra praksa 988 00:48:33,380 --> 00:48:37,790 odvojiti različite dijelove našeg koda i što 989 00:48:37,790 --> 00:48:40,530 kontrolirati u ove tri paradigme. 990 00:48:40,530 --> 00:48:46,700 >> Dakle, naš pogled je najčešće naša predlošci, naš izgled, način 991 00:48:46,700 --> 00:48:48,260 koje smo postavili kako naš broj izgleda. 992 00:48:48,260 --> 00:48:55,190 To je uglavnom naša CSS datoteke i način koje smo definirali dizajn našeg koda, 993 00:48:55,190 --> 00:48:55,710 u osnovi. 994 00:48:55,710 --> 00:48:59,280 Naš kontroler je uglavnom ono što smo radili sa PHP datoteke. 995 00:48:59,280 --> 00:49:03,030 Pa opet, rad s informacije koje imamo 996 00:49:03,030 --> 00:49:06,700 i definiranje kako se to podaci koriste, 997 00:49:06,700 --> 00:49:10,660 a zatim prolazi tu informaciju bilo na pogled ili modelu. 998 00:49:10,660 --> 00:49:13,880 A model, način na koji smo bili koristite je naša baza podataka, 999 00:49:13,880 --> 00:49:17,510 pa gdje su naši podaci pohranjuju tako da ima negdje 1000 00:49:17,510 --> 00:49:21,490 živjeti u, i bilo je od kod koji se odnosi na način na koji 1001 00:49:21,490 --> 00:49:25,410 da smo dobili tu informaciju ili način na koji možemo ažurirati te podatke. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Tako je u MVC modelu, HTTP Zahtjevi se šalju na web server. 1004 00:49:33,200 --> 00:49:36,220 Zatim, kontroler tumače zahtjev od korisnika 1005 00:49:36,220 --> 00:49:38,260 a zatim potvrđuje korisničkog unosa. 1006 00:49:38,260 --> 00:49:41,580 To je opcija da imamo kontroler komuniciraju 1007 00:49:41,580 --> 00:49:44,000 s modelom, tako nešto kao što u našoj bazi 1008 00:49:44,000 --> 00:49:47,500 ili neke druge funkcije koji releji podatke. 1009 00:49:47,500 --> 00:49:50,340 I onda na kraju, kontroler prolazi informacije na prikazu 1010 00:49:50,340 --> 00:49:52,090 tako da se može donio i da to može 1011 00:49:52,090 --> 00:49:55,860 postaju vidljivi na bilo koju osobu Pristupom web-stranicu. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Ima li pitanja? 1014 00:50:01,340 --> 00:50:01,840 Odlično. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Pa opet, model, njezina funkcija, opet, 1017 00:50:08,469 --> 00:50:11,260 je uporni pohranu podataka, upravljanje i organiziranje podataka. 1018 00:50:11,260 --> 00:50:13,890 A ono što smo vidjeli, tako daleko je MySQL baza podataka 1019 00:50:13,890 --> 00:50:16,200 i sve podatkovne datoteke koje se mogu koristiti. 1020 00:50:16,200 --> 00:50:20,580 >> Vidi, prikaz informacija korisnik, UI ili korisničko sučelje. 1021 00:50:20,580 --> 00:50:22,350 A primjer za to je HTML. 1022 00:50:22,350 --> 00:50:23,950 A onda bismo mogli imati minimalnu PHP. 1023 00:50:23,950 --> 00:50:28,360 Dakle, za petlje da iterira više podataka koji se ispisuju 1024 00:50:28,360 --> 00:50:30,720 dio prikazu, kako za razliku od regulatora. 1025 00:50:30,720 --> 00:50:35,660 A onda je puno naših PHP datoteke spadaju u kategoriju kontrolera. 1026 00:50:35,660 --> 00:50:38,410 To samo obrađuje zahtjeve korisnika i dobiva informacije od modela. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Skakanje u dokumentu Object Model, to samo 1029 00:50:45,590 --> 00:50:47,700 odnosi na način HTML Dokumenti su organizirani. 1030 00:50:47,700 --> 00:50:51,600 I oni su organizirani u stablo struktura koja ima hijerarhiju. 1031 00:50:51,600 --> 00:50:56,720 Dakle, ako imamo pristup [nečujan] prikaz dokumenta, 1032 00:50:56,720 --> 00:51:02,750 možemo raditi s dokumentom, kao što su možemo manipulirati objektima osnovi. 1033 00:51:02,750 --> 00:51:06,630 >> A da bi ovo malo jasnije, kada 1034 00:51:06,630 --> 00:51:10,540 imamo puno naših Različite oznake odgovori 1035 00:51:10,540 --> 00:51:12,590 različitim pravcima u našoj stabla. 1036 00:51:12,590 --> 00:51:17,070 A onda u ovom primjeru smo imaju Početni dokument čvor. 1037 00:51:17,070 --> 00:51:20,010 Imamo, dakle, naša HTML čvor koji dijeli se u glavi i tijelu. 1038 00:51:20,010 --> 00:51:22,810 Voditelj je naslov, a zatim Naslov sadrži Pozdrav, svijet. 1039 00:51:22,810 --> 00:51:24,860 I naše tijelo sadrži samo Pozdrav, svijet kao dobro. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Tako da bilo pitanja na bilo koji od stvari koje smo dosad pokrivene? 1042 00:51:31,900 --> 00:51:35,891 A ako ne, Hannah će preuzeti s JavaScriptom. 1043 00:51:35,891 --> 00:51:36,390 Odlično. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, super. 1045 00:51:37,473 --> 00:51:40,980 Ako ništa drugo dolazi s PHP ili HTML, ili bilo koji od stvari Maria pokriven, 1046 00:51:40,980 --> 00:51:42,700 uvijek možemo pauzirati. 1047 00:51:42,700 --> 00:51:46,430 Radimo bolje vrijeme opet, tako strašan. 1048 00:51:46,430 --> 00:51:48,770 I samo da se vrati jako brzo to, 1049 00:51:48,770 --> 00:51:51,010 ako pogledate svaki prošle godine je ispit, ovaj 1050 00:51:51,010 --> 00:51:54,120 dolazi either-- ovdje neke HTML, čine ovaj dijagram. 1051 00:51:54,120 --> 00:51:58,380 Ili ovdje je ovaj dijagram, napraviti neke HTML, tako da svakako praksa da. 1052 00:51:58,380 --> 00:52:01,500 A onda je jedan zajamčena Pitanje koje možete dobiti pravu. 1053 00:52:01,500 --> 00:52:02,000 Cool. 1054 00:52:02,000 --> 00:52:04,510 Dakle, pričajmo o JavaScriptu i kako je malo 1055 00:52:04,510 --> 00:52:09,130 razlikuje od jezika kao što su PHP i C, dva jezika koje smo vidjeli prije. 1056 00:52:09,130 --> 00:52:10,780 Dakle broj jedan, to labavo se upisali. 1057 00:52:10,780 --> 00:52:14,630 To je poput PHP, ali za razliku od C 1058 00:52:14,630 --> 00:52:15,890 >> To je tumačiti jezik. 1059 00:52:15,890 --> 00:52:19,870 Opet, to je kao PHP, za razliku od C i to 1060 00:52:19,870 --> 00:52:24,630 će nam omogućiti da ga use-- radi jako lijepo s web stranice. 1061 00:52:24,630 --> 00:52:28,350 To će nam omogućiti da manipuliraju sadržaj i kako to izgleda 1062 00:52:28,350 --> 00:52:30,300 a ono što čini. 1063 00:52:30,300 --> 00:52:32,330 >> Idemo vidjeti malo Ajax. 1064 00:52:32,330 --> 00:52:36,140 To nam omogućuje da komuniciraju asinkrono s različitim poslužiteljima 1065 00:52:36,140 --> 00:52:37,950 i dobiti informacije. 1066 00:52:37,950 --> 00:52:42,820 A to je stvar koja stvarno odvaja JavaScript od PHP i C 1067 00:52:42,820 --> 00:52:45,590 je da je na strani klijenta. 1068 00:52:45,590 --> 00:52:49,860 Oba PHP i C su obično na strani poslužitelja. 1069 00:52:49,860 --> 00:52:51,960 >> Najvećim dijelom i gotovo u cijelosti ono 1070 00:52:51,960 --> 00:52:53,900 smo vidjeli, barem u Ovaj razred, JavaScript 1071 00:52:53,900 --> 00:52:57,040 djeluje na strani klijenta, što znači da preglednik je zapravo 1072 00:52:57,040 --> 00:52:58,597 odgovorni za to trčanje. 1073 00:52:58,597 --> 00:53:01,180 A to znači da mi ne trebaju komunicirati s poslužiteljem. 1074 00:53:01,180 --> 00:53:04,380 Dakle, to znači da može biti puno brže jer to je zapravo samo to Chrome, 1075 00:53:04,380 --> 00:53:10,420 to je Safari, to je Firefox, sve što vam koristiti se zapravo radi svoj JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> PUBLIKA: Što asinkroni znači? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ah, što ne asinkrono znači? 1078 00:53:13,620 --> 00:53:14,250 Veliko pitanje. 1079 00:53:14,250 --> 00:53:17,890 Asinkrono means-- dobro, sadržaj u kojem 1080 00:53:17,890 --> 00:53:22,140 mi koristimo je, u redu, mi su izrade web stranice 1081 00:53:22,140 --> 00:53:23,860 i moramo dobiti neke informacije. 1082 00:53:23,860 --> 00:53:28,250 Tako na primjeru Mashup, neke informacije koje možda želite 1083 00:53:28,250 --> 00:53:30,580 je članak naslova. 1084 00:53:30,580 --> 00:53:33,330 Sada, could-- smo jednu opciju je to učiniti sinkronizirano 1085 00:53:33,330 --> 00:53:37,940 a to znači neka je zaustaviti, ići dobiti u članku, 1086 00:53:37,940 --> 00:53:41,275 dobiti članak leđa, a zatim uzvratiti, ali to će biti jako sporo. 1087 00:53:41,275 --> 00:53:44,150 To bi bilo loše korisničko iskustvo zato što bi samo sjediti 1088 00:53:44,150 --> 00:53:46,630 tamo čeka nešto odgovoriti. 1089 00:53:46,630 --> 00:53:50,020 >> Asinkrono mi znači ćemo i dalje će o našem poslovanju, 1090 00:53:50,020 --> 00:53:52,529 renderiranje stranice, i ćemo poslati zahtjev 1091 00:53:52,529 --> 00:53:54,570 To je vrsta ide dogoditi u pozadini. 1092 00:53:54,570 --> 00:53:57,610 Mislim da smo koristiti primjer u Predavanje pozivanja Rob i govoreći: 1093 00:53:57,610 --> 00:53:59,980 hej, možete li ovo pogledati za mene i dobiti natrag na mene, 1094 00:53:59,980 --> 00:54:02,870 za razliku od samo meni čekanja na telefonu. 1095 00:54:02,870 --> 00:54:07,020 Dakle asinkrono znači da će se dogoditi u pozadini od nas 1096 00:54:07,020 --> 00:54:08,676 paralelno. 1097 00:54:08,676 --> 00:54:10,400 >> Veliko pitanje. 1098 00:54:10,400 --> 00:54:11,830 Još nešto? 1099 00:54:11,830 --> 00:54:12,330 Veliki. 1100 00:54:12,330 --> 00:54:15,020 Mi ćemo skočiti mnogo više u asinkroni zahtjevi s Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> PUBLIKA: Da li JavaScript-- gdje se pasti sa Model-View-Controller? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: Veliki pitanje. 1103 00:54:19,620 --> 00:54:23,320 Gdje JavaScript pad sa Model-View-Controller? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Mislim da mogu fall-- pa obično ne 1106 00:54:28,350 --> 00:54:31,340 vole ga mljackati u to paradigme, ali pretpostavljam da bih, 1107 00:54:31,340 --> 00:54:34,280 U redu, tako JavaScript zapravo ide kako bi se omogućilo 1108 00:54:34,280 --> 00:54:37,587 nam za prikupljanje podataka, interpretirati podatke, zapravo ne 1109 00:54:37,587 --> 00:54:38,920 smislene stvari s podacima. 1110 00:54:38,920 --> 00:54:41,100 Na taj način, to je vrlo upravljačke slično. 1111 00:54:41,100 --> 00:54:43,900 >> Ali to također će nam omogućiti da prikazati stvari i ispisa stvari. 1112 00:54:43,900 --> 00:54:47,021 Na taj način, to je vrlo pogled nalik. 1113 00:54:47,021 --> 00:54:47,520 Da. 1114 00:54:47,520 --> 00:54:51,710 Dakle, to je vrsta kao što su PHP u gdje se to može biti i vrsta. 1115 00:54:51,710 --> 00:54:53,330 Dobro pitanje. 1116 00:54:53,330 --> 00:54:55,209 Još nešto? 1117 00:54:55,209 --> 00:54:56,000 U redu, super. 1118 00:54:56,000 --> 00:54:57,120 Premještanje pravo zajedno. 1119 00:54:57,120 --> 00:54:59,110 >> Tako ćemo vidjeti primjer kako možemo koristiti 1120 00:54:59,110 --> 00:55:02,250 JavaScript je u jednom od naših web programa. 1121 00:55:02,250 --> 00:55:05,680 Dakle, ja ću to uzeti u obzir index.html s hrpom HTML. 1122 00:55:05,680 --> 00:55:08,800 A stvar Želim te usredotočiti na to skripta oznaka. 1123 00:55:08,800 --> 00:55:13,280 A to, kaže, u redu, želim pokrenuti neki JavaScript i ovdje gdje živi. 1124 00:55:13,280 --> 00:55:15,400 Ona živi u hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> I vrlo mnogo kao što su CSS, mogli bismo staviti JavaScript u HTML-u. 1126 00:55:21,120 --> 00:55:24,000 Zašto se želimo ga izdvojiti? 1127 00:55:24,000 --> 00:55:24,500 Da. 1128 00:55:24,500 --> 00:55:25,486 >> PUBLIKA: Lakše prepisati? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Da. 1130 00:55:26,402 --> 00:55:28,450 To je lakše koristiti preko različite web stranice. 1131 00:55:28,450 --> 00:55:29,980 To čuva stvari čišći. 1132 00:55:29,980 --> 00:55:32,090 To je samo dobra praksa. 1133 00:55:32,090 --> 00:55:32,590 Odlično. 1134 00:55:32,590 --> 00:55:33,930 Dobar odgovor. 1135 00:55:33,930 --> 00:55:36,690 Pa dobro, tako da to ide biti naš index.html. 1136 00:55:36,690 --> 00:55:39,430 I onda ovdje je naš maleni malo JavaScripta datoteka. 1137 00:55:39,430 --> 00:55:42,410 >> A sve što kaže je uzbuna Pozdrav, svijet. 1138 00:55:42,410 --> 00:55:46,040 Dakle, što se događa kada ovu stranicu renders-- 1139 00:55:46,040 --> 00:55:49,680 pa ako idete na bilo website ovo is-- sve što će se dogoditi 1140 00:55:49,680 --> 00:55:53,330 je to će reći, u redu, ja sam će pokrenuti ovaj JavaScript kôd. 1141 00:55:53,330 --> 00:55:56,370 I ovo JavaScript kôd Samo kaže upozorenja Pozdrav, svijet. 1142 00:55:56,370 --> 00:55:59,090 Tako ću dobiti ovo prijateljski mali pop-up. 1143 00:55:59,090 --> 00:56:00,360 >> Cool? 1144 00:56:00,360 --> 00:56:04,746 To je vrsta kao što je naš prvi JavaScript program, naš Zdravo, svijet. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Pogledajmo malo više o tome što sintaksa JavaScript izgleda. 1147 00:56:12,190 --> 00:56:16,330 A posebno, neka je to usporediti s C i PHP, koje smo vidjeli. 1148 00:56:16,330 --> 00:56:20,610 >> U JavaScript, ćemo imati var, naziv varijable, a zatim 1149 00:56:20,610 --> 00:56:21,690 njegova stvarna vrijednost. 1150 00:56:21,690 --> 00:56:26,170 A mi ne odredite tip, samo kao u PHP-u, ali vrlo razliku u C. 1151 00:56:26,170 --> 00:56:28,850 Tako na primjer, ako smo htjeli pohraniti vrijednost 50, 1152 00:56:28,850 --> 00:56:32,490 u C, mi bi se reći, hej, C, želim cijeli broj, 1153 00:56:32,490 --> 00:56:35,076 Idem ga nazvati ja, a njegova vrijednost je 50. 1154 00:56:35,076 --> 00:56:36,450 U PHP-u, to je malo lakše. 1155 00:56:36,450 --> 00:56:41,880 Kažemo, hej, želim varijablu Nazvao sam i njegova vrijednost je 50. 1156 00:56:41,880 --> 00:56:45,890 Vrlo slično, u JavaScript, mi reći hej, ja želim varijabla sam nazvao, 1157 00:56:45,890 --> 00:56:47,080 njegova vrijednost je 50. 1158 00:56:47,080 --> 00:56:52,140 Svako sljedeće put da koristim ja, ne trebam pisati var. 1159 00:56:52,140 --> 00:56:53,810 To je samo ja od tog trenutka. 1160 00:56:53,810 --> 00:56:58,660 Na isti način, u C, gdje jednom kažemo int i, možemo samo koristiti i. 1161 00:56:58,660 --> 00:57:00,340 Cool? 1162 00:57:00,340 --> 00:57:01,800 U redu. 1163 00:57:01,800 --> 00:57:03,710 >> Premještanje na petlje, Srećom, to je gotovo 1164 00:57:03,710 --> 00:57:06,720 izgleda exactly-- mislim da su točno isto kao što 1165 00:57:06,720 --> 00:57:09,799 petlje će izgledati u nešto poput C, gdje vam za petlju 1166 00:57:09,799 --> 00:57:11,840 će imati tri parts-- je inicijalizacija, 1167 00:57:11,840 --> 00:57:13,640 stanje i ažuriranje. 1168 00:57:13,640 --> 00:57:15,340 While petlji, to izgleda točno isto. 1169 00:57:15,340 --> 00:57:16,390 Upravo smo da je to uvjet. 1170 00:57:16,390 --> 00:57:18,264 >> I do while petlja, opet isto. 1171 00:57:18,264 --> 00:57:20,190 Mi to uvjet dati. 1172 00:57:20,190 --> 00:57:24,510 Recimo ja sam htjela ponoviti over-- Htjela sam napraviti nešto pet puta. 1173 00:57:24,510 --> 00:57:27,840 U C, mogli bismo napisati za init ja jednak 0. 1174 00:57:27,840 --> 00:57:30,480 ja je manji od 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 Jedina je razlika u JavaScript, umjesto da kaže int i = 0, 1176 00:57:34,240 --> 00:57:36,820 kažemo var ja jednak 0. 1177 00:57:36,820 --> 00:57:38,370 Lijepa. 1178 00:57:38,370 --> 00:57:41,320 To je jedina razlika. 1179 00:57:41,320 --> 00:57:43,200 Bilo kakva pitanja o bilo što od toga? 1180 00:57:43,200 --> 00:57:44,160 Da. 1181 00:57:44,160 --> 00:57:48,480 >> PUBLIKA: Tako je u PHP-u, to je ista stvar, osim već kao varijablu? 1182 00:57:48,480 --> 00:57:49,564 Ili je to u var primjer? 1183 00:57:49,564 --> 00:57:50,480 HANNAH Blumberg: Da. 1184 00:57:50,480 --> 00:57:52,310 Tako je u PHP-u, to će biti znak za dolar. 1185 00:57:52,310 --> 00:57:59,450 Dakle, to će $ i jednakima 0, $ je i manje od 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Veliko pitanje. 1187 00:58:02,490 --> 00:58:04,570 >> Sada ćemo govoriti o izjave funkcija. 1188 00:58:04,570 --> 00:58:07,010 U C, kada smo proglašen funkcija, dali smo ime 1189 00:58:07,010 --> 00:58:08,490 i dali smo neke parametre. 1190 00:58:08,490 --> 00:58:10,670 A na početku smo pisali tip. 1191 00:58:10,670 --> 00:58:12,440 U JavaScript, svi smo morate učiniti je napisati 1192 00:58:12,440 --> 00:58:15,080 funkcija ključna riječ koja kaže, hej, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Spremam se definirati funkcije. 1194 00:58:16,570 --> 00:58:18,520 >> U ovom slučaju, to je ime svotu. 1195 00:58:18,520 --> 00:58:20,820 I to traje dva argumenta, X i Y. 1196 00:58:20,820 --> 00:58:23,280 Obavijest da ne brinu o vrstama x i y. 1197 00:58:23,280 --> 00:58:26,280 I baš kao i C, imamo taj povratak ključne riječi, 1198 00:58:26,280 --> 00:58:29,140 tako da možemo učiniti nešto poput povratka x i y. 1199 00:58:29,140 --> 00:58:32,540 >> I sad kad smo sam napisao ovaj prvi funkcija, možemo koristiti sumu gdje. 1200 00:58:32,540 --> 00:58:34,740 I to je sasvim u redu. 1201 00:58:34,740 --> 00:58:37,530 Jedna stvarno cool stvar o JavaScript da je vrlo razliku C 1202 00:58:37,530 --> 00:58:40,770 je da funkcije mogu biti tretirani kao vrijednosti. 1203 00:58:40,770 --> 00:58:43,895 Dakle, možemo učiniti nešto poput ovog gdje Pretpostavljam da pokrije to up-- 1204 00:58:43,895 --> 00:58:46,400 Ja prikrivali var iznos part-- a mi samo rekao 1205 00:58:46,400 --> 00:58:49,850 Funkcija xy jednak povratnu x plus y. 1206 00:58:49,850 --> 00:58:52,140 >> To je ono što bi se moglo nazvati anonimni funkcija. 1207 00:58:52,140 --> 00:58:53,920 To je funkcija bez imena. 1208 00:58:53,920 --> 00:58:56,290 Dok to govori funkcija zbroj, bla, bla, bla, 1209 00:58:56,290 --> 00:58:59,340 to bi samo reći funkciju. 1210 00:58:59,340 --> 00:59:02,020 Ali sada, iako imam ovo anonimno funkcija, 1211 00:59:02,020 --> 00:59:03,630 da funkcija je zapravo samo vrijednost. 1212 00:59:03,630 --> 00:59:05,160 Možemo ga tretirati kao vrijednosti. 1213 00:59:05,160 --> 00:59:10,180 >> Dakle, možemo ga spremiti u varijablu biti ista način na koji smo mogli pohraniti 50 u varijablu. 1214 00:59:10,180 --> 00:59:13,870 Tako možemo reći, u redu, želim promjenjiva, to se zove suma, 1215 00:59:13,870 --> 00:59:16,011 i to je ova funkcija. 1216 00:59:16,011 --> 00:59:18,760 Dakle, ove dvije stvari su zapravo će učiniti točno istu stvar, 1217 00:59:18,760 --> 00:59:21,576 ali sintaksa je malo drugačiji i vrsta zabave note. 1218 00:59:21,576 --> 00:59:22,076 Da. 1219 00:59:22,076 --> 00:59:25,548 >> PUBLIKA: Tako da bi mogao nazvati funkcija koja je anonimna govoreći, 1220 00:59:25,548 --> 00:59:28,244 zbroj zagrade 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Da. 1222 00:59:29,160 --> 00:59:32,280 Možete nazvati ovo anonimno funkcionira na isti način. 1223 00:59:32,280 --> 00:59:33,350 Ti bi to iznos (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 To bi bilo sasvim u redu. 1226 00:59:38,200 --> 00:59:41,575 >> Ako nisam učinio var zbroj jednak funkcija, ako sam samo izbrisana 1227 00:59:41,575 --> 00:59:45,480 this-- Znam da je na mojoj ruci, ali pretvarati da brišu this-- onda 1228 00:59:45,480 --> 00:59:46,964 da funkcija vrsta upravo otišao. 1229 00:59:46,964 --> 00:59:49,630 Vi nikada ne može ga koristiti opet, jer nemate naziv za to. 1230 00:59:49,630 --> 00:59:53,497 Teško da se odnosi na nešto ne znam što bih nazvati. 1231 00:59:53,497 --> 00:59:54,080 Dobro pitanje. 1232 00:59:54,080 --> 00:59:54,580 Da. 1233 00:59:54,580 --> 00:59:59,580 >> PUBLIKA: Možete li referentni iznos u druga mjesta u vrijednosti od x plus y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Možete li Referentni iznos na drugim mjestima 1235 01:00:01,940 --> 01:00:03,360 s vrijednošću x plus y? 1236 01:00:03,360 --> 01:00:05,130 Nisam posve siguran što misliš. 1237 01:00:05,130 --> 01:00:10,582 >> PUBLIKA: Znači svoje prošlosti polu-anonimna Funkcija je suma jednaka ovo 1238 01:00:10,582 --> 01:00:14,452 Anonimni funkciju, tako da je suma Sada varijabla koju can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: Tako je. 1240 01:00:15,410 --> 01:00:18,980 Dakle, suma je promjenjiva, ali to je actually-- 1241 01:00:18,980 --> 01:00:23,770 tako da zbroj je varijabla čija vrijednost funkcija. 1242 01:00:23,770 --> 01:00:27,030 Dakle, to je funkcija, koja je vrsta čudan stvar zamotati glavu oko 1243 01:00:27,030 --> 01:00:29,880 jer smo igrati s C i ne možete to učiniti u C. 1244 01:00:29,880 --> 01:00:32,679 No, sada možemo nazvati zbrojiti Isto tako bismo mogli nazvati sumu ovdje. 1245 01:00:32,679 --> 01:00:33,220 PUBLIKA: U redu. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Da. 1247 01:00:33,970 --> 01:00:34,553 Dobro pitanje. 1248 01:00:34,553 --> 01:00:35,438 Da. 1249 01:00:35,438 --> 01:00:39,862 >> PUBLIKA: Dakle, mi ne koristiti prototipovi u PHP ili Javascript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: Ne, Ne morate koristiti prototipa, 1251 01:00:42,070 --> 01:00:43,880 posebno u JavaScriptu. 1252 01:00:43,880 --> 01:00:49,380 Dakle, jedna loša praksa stvar koju sam će reći da ne bi trebalo raditi 1253 01:00:49,380 --> 01:00:52,620 je da ne morate pisati var i = 50. 1254 01:00:52,620 --> 01:00:54,840 Vi samo mogao početi raditi i = 50. 1255 01:00:54,840 --> 01:00:57,490 I bi samo bi ja globalna varijabla. 1256 01:00:57,490 --> 01:01:00,550 >> To je vrlo loša praksa nikad ne reci proizvo ∂ var ja, 1257 01:01:00,550 --> 01:01:01,800 ali to je nešto što možete učiniti. 1258 01:01:01,800 --> 01:01:03,591 Tumač nije će vikati na vas. 1259 01:01:03,591 --> 01:01:05,920 JavaScript je prilično slično, možete učiniti ono što želite. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 O oprosti. 1262 01:01:09,800 --> 01:01:10,300 Postoji dva. 1263 01:01:10,300 --> 01:01:12,150 U narančastim hlačama. 1264 01:01:12,150 --> 01:01:13,190 Samo naprijed. 1265 01:01:13,190 --> 01:01:14,390 >> PUBLIKA: Ne, ti idi prvi. 1266 01:01:14,390 --> 01:01:16,765 >> PUBLIKA: Ne, samo sam govorio Nisam imala moju ruku. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 U REDU. 1269 01:01:20,748 --> 01:01:26,604 Dakle, ako ste bili na poziv to prvi put, sada Ukratko, 1270 01:01:26,604 --> 01:01:29,864 mi to zovemo na isti način, x, y, kao i svaki put? 1271 01:01:29,864 --> 01:01:30,780 HANNAH Blumberg: Da. 1272 01:01:30,780 --> 01:01:32,572 Dakle, ove dvije bitno učiniti istu stvar. 1273 01:01:32,572 --> 01:01:35,113 PUBLIKA: A što je prednost korištenja jedno ili drugo? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg: Nema prednost pomoću jednog ili drugog. 1275 01:01:37,500 --> 01:01:40,080 Samo sam htjela da vam pokazati dva različiti dijelovi sintakse. 1276 01:01:40,080 --> 01:01:42,770 Mnogo puta, gdje anonimno Funkcije imaju svrhu 1277 01:01:42,770 --> 01:01:48,220 je li argument u drugu funkcija trebala biti funkcija. 1278 01:01:48,220 --> 01:01:50,600 I vidjet ćemo da je u samo na drugom mjestu s Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Dakle, ako se to ne bi bilo smisla, pohraniti ga u stražnjem dijelu glave. 1280 01:01:53,577 --> 01:01:55,660 To je mjesto gdje anonimni Funkcija bi moglo biti korisno 1281 01:01:55,660 --> 01:01:58,284 jer to nije stvarno isplati dajući mu ime, jer mi smo samo 1282 01:01:58,284 --> 01:01:59,443 će ga koristiti jednom. 1283 01:01:59,443 --> 01:02:00,370 Da. 1284 01:02:00,370 --> 01:02:03,635 >> PUBLIKA: Ako su x i y promjene kasnije na, će sumirati promijeniti te? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: Ako su x i y promjene kasnije će sumirati promijeniti te? 1286 01:02:06,510 --> 01:02:08,840 Dakle, to je zapravo sam mislim nešto što je, 1287 01:02:08,840 --> 01:02:12,260 opet, samo se osjeća vrlo različite iz C. Ovo nije vrijednost. 1288 01:02:12,260 --> 01:02:13,620 Nije 5. 1289 01:02:13,620 --> 01:02:15,550 To je samo po sebi radi. 1290 01:02:15,550 --> 01:02:19,110 Dakle, čim se dati što parametri, onda ste zapravo ćete izračunati vrijednost. 1291 01:02:19,110 --> 01:02:21,193 >> MARIJA ZLATKOVA: A onda možete pozvati funkciju 1292 01:02:21,193 --> 01:02:23,272 i koristiti ga kako bi dobili neku vrijednost. 1293 01:02:23,272 --> 01:02:24,230 HANNAH Blumberg: Tako je. 1294 01:02:24,230 --> 01:02:25,250 Točno. 1295 01:02:25,250 --> 01:02:25,863 Da. 1296 01:02:25,863 --> 01:02:27,946 >> PUBLIKA: Dakle, ako vas baš pohraniti ga u varijablu, 1297 01:02:27,946 --> 01:02:31,430 kao var x jednak zbroju dva values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH Blumberg: Da. 1299 01:02:32,420 --> 01:02:35,320 Dakle, vi samo mogli učiniti var zbroj jednak zbroju dviju vrijednosti. 1300 01:02:35,320 --> 01:02:37,670 Da. 1301 01:02:37,670 --> 01:02:38,680 Ima li još pitanja? 1302 01:02:38,680 --> 01:02:39,642 Da. 1303 01:02:39,642 --> 01:02:42,047 >> PUBLIKA: Ali bi to brkaju iznos i iznos? 1304 01:02:42,047 --> 01:02:45,062 Kao i ako ćete se obratiti svojem varijabilni iznos, bi li pozvati funkciju iznos? 1305 01:02:45,062 --> 01:02:45,895 HANNAH Blumberg: mm. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Ako ste učinili nešto kao, zbroj jednak zbroj 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> PUBLIKA: Da. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: Vjerujem da će prebrisati vrijednost sume. 1310 01:02:56,465 --> 01:02:59,290 Dakle, još jedna zanimljiva stvar JavaScript 1311 01:02:59,290 --> 01:03:02,950 je da jedan varijabla može potrajati na hrpa različitih vrsta. 1312 01:03:02,950 --> 01:03:03,790 Loša praksa. 1313 01:03:03,790 --> 01:03:06,280 Vi ne bi trebali učiniti nešto kao što si upravo rekao. 1314 01:03:06,280 --> 01:03:10,240 >> No, u C, ako ja postavljen jednaka cijeli broj, 1315 01:03:10,240 --> 01:03:13,570 znamo da je nikad će postati string. 1316 01:03:13,570 --> 01:03:15,670 To nije slučaj u JavaScriptu. 1317 01:03:15,670 --> 01:03:17,770 Da, dobro pitanje. 1318 01:03:17,770 --> 01:03:20,151 Još nešto? 1319 01:03:20,151 --> 01:03:20,650 U redu. 1320 01:03:20,650 --> 01:03:21,850 Radi sve točno na vrijeme. 1321 01:03:21,850 --> 01:03:23,050 Imajući ide. 1322 01:03:23,050 --> 01:03:25,200 U redu. 1323 01:03:25,200 --> 01:03:27,780 >> Ako gledamo niz u JavaScript, ovdje je 1324 01:03:27,780 --> 01:03:30,250 brzo primjer niza žice. 1325 01:03:30,250 --> 01:03:31,967 I nizovi mogu rasti dinamički. 1326 01:03:31,967 --> 01:03:33,675 Oni nemaju fiksna veličina na isti način 1327 01:03:33,675 --> 01:03:37,990 da radim u C možemo pristupiti elementi sa samo uglatih zagrada. 1328 01:03:37,990 --> 01:03:41,720 >> To izgleda puno kao PHP i puno kao što su C, gdje možemo reći, u ovom slučaju, 1329 01:03:41,720 --> 01:03:48,360 ako sam htjela riječ JavaScript, bih Ne ARR uglate zagrade s 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 A onda, ako se sjećate kad smo u C htjeli dobiti duljinu niza, 1332 01:03:55,390 --> 01:03:56,820 to je stvarno neugodno. 1333 01:03:56,820 --> 01:03:58,460 No, u JavaScriptu, super jednostavno. 1334 01:03:58,460 --> 01:03:59,910 Sve što radimo, .length. 1335 01:03:59,910 --> 01:04:01,120 Daje duljine. 1336 01:04:01,120 --> 01:04:01,892 To je to. 1337 01:04:01,892 --> 01:04:03,140 >> PUBLIKA: To je jednostavno. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Da, čini vaš život mnogo lakše. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 U redu, ne object-- tamo. 1341 01:04:11,560 --> 01:04:15,480 Objekti u JavaScript dojam puno kao konstrukt u C 1342 01:04:15,480 --> 01:04:18,280 i asocijativne polja u PHP. 1343 01:04:18,280 --> 01:04:20,270 Dakle, ono što smo vidjeli Mnogo je JSON, koji 1344 01:04:20,270 --> 01:04:23,150 označava JavaScript Object notacija. 1345 01:04:23,150 --> 01:04:25,550 I to je u osnovi način ustroja naše podatke. 1346 01:04:25,550 --> 01:04:27,880 >> Tako ćemo vidjeti primjer, vjerojatno najlakši. 1347 01:04:27,880 --> 01:04:32,540 Dakle, ovdje je primjer objekta koji pohranjuje razred, CS50. 1348 01:04:32,540 --> 01:04:37,790 A kad kažem klase, mislim, naravno, Ne volimo-članovima da, tečaj, CS50. 1349 01:04:37,790 --> 01:04:40,730 I vidjet ćete da sve u objektu 1350 01:04:40,730 --> 01:04:43,526 će biti sadržane u vitičastim zagradama. 1351 01:04:43,526 --> 01:04:48,260 >> I počnemo družiti nazive polja ili tipke sa različitim vrijednostima. 1352 01:04:48,260 --> 01:04:52,920 Dakle, možete početi da vidite kako je ova vrsta osjeća kao asocijativni niz u PHP-u. 1353 01:04:52,920 --> 01:04:57,450 Tako ćemo povezati polje ili ključ ime, naravno, uz niz, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Mi ćemo imati instruktora. 1356 01:04:59,940 --> 01:05:00,940 Mi ćemo imati TFS. 1357 01:05:00,940 --> 01:05:05,240 Mi ćemo imati niz psets i mi ćemo zabilježili. 1358 01:05:05,240 --> 01:05:10,720 I jedna super stvar za napomenuti je sve ove stvari su različite vrste, 1359 01:05:10,720 --> 01:05:12,020 i to je sasvim u redu. 1360 01:05:12,020 --> 01:05:15,330 >> To je u redu za neki objekt, u stvari, to je vjerojatno očekuje objekt 1361 01:05:15,330 --> 01:05:19,620 da imaju kombinaciju žice i brojevi i logičke izraze i nizovi 1362 01:05:19,620 --> 01:05:23,420 i bilo što drugo što bi moglo Želite imati unutar vašeg objekta. 1363 01:05:23,420 --> 01:05:28,570 I imajte na umu da su oni će biti imena ili tipke, a zatim smo upravo 1364 01:05:28,570 --> 01:05:30,300 postavljen je jednaka s malo debelog crijeva. 1365 01:05:30,300 --> 01:05:32,015 >> PUBLIKA: Što točno znači JSON? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: Što točno se JSON znači? 1367 01:05:33,890 --> 01:05:36,470 JSON samo stoji za JavaScript objekta notacija. 1368 01:05:36,470 --> 01:05:38,430 To je samo način oblikovanja. 1369 01:05:38,430 --> 01:05:40,040 Da. 1370 01:05:40,040 --> 01:05:41,800 To je način oblikovanja naše podatke. 1371 01:05:41,800 --> 01:05:43,620 >> U C, to je konstrukt. 1372 01:05:43,620 --> 01:05:45,800 U PHP-u, to je asocijativne nizove. 1373 01:05:45,800 --> 01:05:47,120 U JavaScript imamo predmete. 1374 01:05:47,120 --> 01:05:48,969 >> PUBLIKA: Pa CS50 je objekt? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 je objekt u ovom slučaju. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Sada, kako radimo zapravo pristup one polja ili promijeniti ta polja. 1378 01:05:57,880 --> 01:06:03,920 Na primjer, pretpostavimo da smo odlučili da ste htjeli jedan manje pset ovaj semestar. 1379 01:06:03,920 --> 01:06:06,300 Umjesto devet, mi smo samo će imati osam. 1380 01:06:06,300 --> 01:06:08,240 Kako bismo promijenili to? 1381 01:06:08,240 --> 01:06:09,436 >> Oh, pogrešan način. 1382 01:06:09,436 --> 01:06:11,060 Postoje dva načina na koje možemo učiniti. 1383 01:06:11,060 --> 01:06:13,490 Broj jedan je s točkom zapis i broj dva 1384 01:06:13,490 --> 01:06:15,750 je s trga nosača zapisa. 1385 01:06:15,750 --> 01:06:19,720 Tako, primjerice, ako ja htjela promijeniti ili pristupa 1386 01:06:19,720 --> 01:06:26,820 polje psets u našem CS50 objekt, što ću učiniti je CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 tako da naziv objekta točke naziv područja ili ključem. 1388 01:06:30,770 --> 01:06:37,120 >> Vrlo slično, to je točno ekvivalent učiniti CS50, a zatim 1389 01:06:37,120 --> 01:06:42,050 u četvornim proteza, psets. 1390 01:06:42,050 --> 01:06:42,837 Cool? 1391 01:06:42,837 --> 01:06:44,298 Da. 1392 01:06:44,298 --> 01:06:47,707 >> PUBLIKA: Tako je JSON tehnički JavaScript dalje, 1393 01:06:47,707 --> 01:06:51,814 iako u psets smo odvojite ga [nečujan]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: Naravno. 1395 01:06:52,730 --> 01:06:56,290 Dakle, pitanje je, jesu JavaScript i JSON ekvivalent? 1396 01:06:56,290 --> 01:07:00,750 Dakle JSON je zapis, u osnovi način na koji pišemo se 1397 01:07:00,750 --> 01:07:02,700 objekt s JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Dakle, oni nisu isti. 1399 01:07:05,190 --> 01:07:08,950 >> Ja bih rekao JavaScript postoji su objekti u JavaScriptu. 1400 01:07:08,950 --> 01:07:12,590 JSON uzima one predmete i ih ispisuje i prikazuje ih 1401 01:07:12,590 --> 01:07:15,160 ili ih pohranjuje na lijep način. 1402 01:07:15,160 --> 01:07:18,110 Dakle JSON nije programiranje Jezik način da je JavaScript. 1403 01:07:18,110 --> 01:07:20,900 To je samo zapis za naši objekti u JavaScriptu. 1404 01:07:20,900 --> 01:07:21,400 Da. 1405 01:07:21,400 --> 01:07:24,144 >> PUBLIKA: Pa što točno [Nečujan] završiti? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: Naravno. 1407 01:07:25,060 --> 01:07:27,727 Dakle, to zapravo ne radi ništa. 1408 01:07:27,727 --> 01:07:28,935 Ovo je samo jedan način da se pristup. 1409 01:07:28,935 --> 01:07:31,393 Tako recimo smo htjeli mijenjati broj problematičnih setovima 1410 01:07:31,393 --> 01:07:32,450 od devet do osam. 1411 01:07:32,450 --> 01:07:34,383 Ono što mi radimo je nešto kao CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Da, veliko pitanje. 1414 01:07:39,400 --> 01:07:40,733 Ovo je samo pokazati vam sintaksu. 1415 01:07:40,733 --> 01:07:43,620 Zapravo ne raditi ništa korisno. 1416 01:07:43,620 --> 01:07:46,085 Ima li pitanja? 1417 01:07:46,085 --> 01:07:48,210 Premještanje pravo zajedno. 1418 01:07:48,210 --> 01:07:51,960 >> Pa pogledajmo brzo primjer kako JavaScript radi jer sam rekla ti to 1419 01:07:51,960 --> 01:07:55,170 radi sve te stvari i super nam omogućuje da izmijenite web stranice. 1420 01:07:55,170 --> 01:07:56,970 Idemo zapravo ga vidjeti u akciji. 1421 01:07:56,970 --> 01:07:59,850 Tako se, primjerice, ovaj HTML datoteku. 1422 01:07:59,850 --> 01:08:04,350 >> I što želim da se usredotočite na ovaj tag, što je gumb, 1423 01:08:04,350 --> 01:08:06,182 s id search_button. 1424 01:08:06,182 --> 01:08:08,670 To je samo na stranici. 1425 01:08:08,670 --> 01:08:10,690 Tako sada ćemo vidjeti što zapravo možemo učiniti. 1426 01:08:10,690 --> 01:08:12,560 >> Pa, pretpostavljam kada kliknete taj gumb, 1427 01:08:12,560 --> 01:08:16,010 želimo napraviti alert-- ste kliknuli na gumb. 1428 01:08:16,010 --> 01:08:17,840 Da vidimo kako možemo učiniti. 1429 01:08:17,840 --> 01:08:23,869 Dakle window.onload-- to nije nešto da ste vidjeli u razredu, dakle 1430 01:08:23,869 --> 01:08:26,180 neće morati znati za kviz. 1431 01:08:26,180 --> 01:08:33,660 No, to u osnovi kaže, u redu, poziv Ova funkcija kada je prozor opterećenja. 1432 01:08:33,660 --> 01:08:35,080 >> Dakle, to je samo vrsta postavljanje koda. 1433 01:08:35,080 --> 01:08:36,390 Ne brinite toliko o tome. 1434 01:08:36,390 --> 01:08:39,170 Ono što želim da se usredotočite na ovdje. 1435 01:08:39,170 --> 01:08:44,020 Kažemo var searchButton jednak document.getElementByID search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Dakle, kao što ste mogli pogoditi, Što to znači da kaže, 1437 01:08:46,450 --> 01:08:50,920 U redu, idi naći element s ID search_button. 1438 01:08:50,920 --> 01:08:52,790 I sad imamo da Stvarni element i sam 1439 01:08:52,790 --> 01:08:56,279 će ga pohraniti u promjenjiva searchButton. 1440 01:08:56,279 --> 01:09:00,651 I sada zapravo možemo koristiti taj elementa i to promijeniti, ili pristupiti svoje vrijednosti, 1441 01:09:00,651 --> 01:09:01,359 takve stvari. 1442 01:09:01,359 --> 01:09:04,649 Mi zapravo može početi angažirati s web stranice. 1443 01:09:04,649 --> 01:09:10,330 >> Dakle, ovdje sam reći, OK, sad kad imam koja tipka, kad se klikne, 1444 01:09:10,330 --> 01:09:12,859 nazvati ovu anonimnu funkciju. 1445 01:09:12,859 --> 01:09:16,811 Dakle, ovo je mjesto gdje anonimni funkcije postaju korisne. 1446 01:09:16,811 --> 01:09:18,060 A što je funkcija učiniti? 1447 01:09:18,060 --> 01:09:20,529 Pa, to je samo to naziva Funkcija oprezan i ona kaže, 1448 01:09:20,529 --> 01:09:22,910 ste kliknuli na gumb Search. 1449 01:09:22,910 --> 01:09:29,670 >> Što će se dogoditi ako idem gdje god ovaj HTML živi, ​​a ja kliknite na gumb, 1450 01:09:29,670 --> 01:09:33,729 Ja ću dobiti fancy malo upozorenje koji kaže da ste kliknuli na gumb. 1451 01:09:33,729 --> 01:09:40,710 Dakle, ono što se usredotočiti na here-- document.getElementByID 1452 01:09:40,710 --> 01:09:44,960 dobiva određeni HTML element s danom ID. 1453 01:09:44,960 --> 01:09:48,529 I sada možemo postaviti što bi se trebalo dogoditi kada 1454 01:09:48,529 --> 01:09:50,702 da određeni element kliknuli. 1455 01:09:50,702 --> 01:09:52,670 >> PUBLIKA: Moramo staviti sve to u? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg: Žao nam je? 1457 01:09:53,162 --> 01:09:55,130 >> PUBLIKA: Moramo li fizički kodirati sve to? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: Ne moramo fizički kodirati sve to? 1459 01:09:56,340 --> 01:09:56,839 Da. 1460 01:09:56,839 --> 01:09:58,120 Nije li to vrsta neugodno? 1461 01:09:58,120 --> 01:10:00,032 To je puno koda. 1462 01:10:00,032 --> 01:10:01,574 >> PUBLIKA: Mogli uvesti nešto. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: Tako je. 1464 01:10:02,532 --> 01:10:03,610 Mogli bismo koristiti nešto. 1465 01:10:03,610 --> 01:10:08,140 A u particular-- oh, to je mi govori da moram učiti sekciju. 1466 01:10:08,140 --> 01:10:11,061 Konkretno, neka je koristiti knjižnicu jQuery, 1467 01:10:11,061 --> 01:10:13,060 jer to je stvarno dugo i jako neugodno 1468 01:10:13,060 --> 01:10:16,860 a ja želim biti u mogućnosti to pojednostaviti i učiniti ga kraće i lakše pisati. 1469 01:10:16,860 --> 01:10:19,810 >> Tako jQuery je JavaScript knjižnica. 1470 01:10:19,810 --> 01:10:24,930 Dakle JavaScript je programski jezik; jQuery je knjižnica. 1471 01:10:24,930 --> 01:10:27,190 I to čini hrpu stvari lakše. 1472 01:10:27,190 --> 01:10:33,230 To čini mijenja i ide preko HTML dokument mnogo lakše. 1473 01:10:33,230 --> 01:10:35,030 >> To čini rukovanje događaje lakše. 1474 01:10:35,030 --> 01:10:37,580 To čini animacija lakšim i čini Ajax lakše. 1475 01:10:37,580 --> 01:10:40,140 Tako ćemo skočiti u dvoje te stvari upravo sada. 1476 01:10:40,140 --> 01:10:40,900 Ispričajte me. 1477 01:10:40,900 --> 01:10:42,620 Prije nego što smo učinili, neke osnovne sintakse. 1478 01:10:42,620 --> 01:10:46,870 >> To je ono što najviše poziva na jQuery knjižnice izgledati. 1479 01:10:46,870 --> 01:10:50,520 Koristimo ovu dolar sign-- nema veze znak PHP, 1480 01:10:50,520 --> 01:10:56,030 Samo inconvenient-- naziv je selektor, točka, a zatim akcija. 1481 01:10:56,030 --> 01:10:58,860 Tako ćemo vidjeti neke konkretni primjeri kako. 1482 01:10:58,860 --> 01:11:02,980 >> Dakle, ovo je zapravo ista broj od događaja slajd. 1483 01:11:02,980 --> 01:11:08,740 Dakle ovo dugo, ružna stvar postaje to puno ljepše, manja stvar. 1484 01:11:08,740 --> 01:11:10,370 Tako ćemo pokušati razbiti ovaj dolje. 1485 01:11:10,370 --> 01:11:17,090 To, kaže, u redu, jQuery-- ovaj dolar sign-- jQuery, pronašli mi prozor. 1486 01:11:17,090 --> 01:11:18,480 Dakle, to je selektor. 1487 01:11:18,480 --> 01:11:21,800 >> Kad se učitava, nazovite ovu funkciju. 1488 01:11:21,800 --> 01:11:23,880 Dakle, to je sve što je unutra. 1489 01:11:23,880 --> 01:11:24,380 U REDU. 1490 01:11:24,380 --> 01:11:25,740 Zasada je dobro? 1491 01:11:25,740 --> 01:11:26,750 U redu. 1492 01:11:26,750 --> 01:11:32,970 >> Sada, jQuery, nađi mi se stvar s ID search_button. 1493 01:11:32,970 --> 01:11:36,090 A što se klikne, nazvati ovu funkciju. 1494 01:11:36,090 --> 01:11:37,900 I onda ova funkcija je isti. 1495 01:11:37,900 --> 01:11:41,052 Dovoljno je učiniti malo uzbunjivanja, ste kliknuli na gumb Search. 1496 01:11:41,052 --> 01:11:42,650 >> Dakle, to je stvarno lijepo. 1497 01:11:42,650 --> 01:11:46,260 To stvarno kondenzira i pojednostavljuje naš kôd. 1498 01:11:46,260 --> 01:11:49,030 Kako sam znao da to je ID search_button 1499 01:11:49,030 --> 01:11:50,960 i ne sviđa klase search_button? 1500 01:11:50,960 --> 01:11:52,024 >> PUBLIKA: hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Da. 1502 01:11:52,940 --> 01:11:56,450 To hash znak, to je baš kao i CSS. 1503 01:11:56,450 --> 01:12:00,080 Tako zapamtite, CSS, kada smo Htio odabrati nešto po ID, 1504 01:12:00,080 --> 01:12:01,590 koristili smo funta znak. 1505 01:12:01,590 --> 01:12:05,400 A kad smo htjeli za odabir nešto po klasama, koristimo točku. 1506 01:12:05,400 --> 01:12:06,870 Veliki. 1507 01:12:06,870 --> 01:12:08,230 Ima smisla? 1508 01:12:08,230 --> 01:12:11,500 Tako jQuery je trebao samo bi naš život lakšim. 1509 01:12:11,500 --> 01:12:12,000 Da. 1510 01:12:12,000 --> 01:12:15,660 >> PUBLIKA: Pa ja sam malo zbunjen kao kako anonimni funkcija radi. 1511 01:12:15,660 --> 01:12:19,027 Znate li ime ovog anonymouse funkcija, funkcionira? 1512 01:12:19,027 --> 01:12:20,594 Kako se to zove? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: Naravno. 1514 01:12:21,510 --> 01:12:25,812 Dakle, funkcija je samo ključne riječi koje kaže, ja sam o definirati funkciju. 1515 01:12:25,812 --> 01:12:26,520 PUBLIKA: Oh, u redu. 1516 01:12:26,520 --> 01:12:27,353 HANNAH Blumberg: U redu? 1517 01:12:27,353 --> 01:12:32,120 I onda mi to prođe kao Argument to-- uzmimo 1518 01:12:32,120 --> 01:12:37,040 taj unutarnji one-- na funkciju klik. 1519 01:12:37,040 --> 01:12:39,420 Pa da, tako da funkcija, ovo anonimno funkcija, 1520 01:12:39,420 --> 01:12:40,910 postaje stvarna argument. 1521 01:12:40,910 --> 01:12:43,632 Dakle, ne zaboravite u JavaScript, mi može liječiti funkcije kao vrijednosti. 1522 01:12:43,632 --> 01:12:44,340 PUBLIKA: Oh, u redu. 1523 01:12:44,340 --> 01:12:45,256 HANNAH Blumberg: Da. 1524 01:12:45,256 --> 01:12:46,035 Volim da je "oh". 1525 01:12:46,035 --> 01:12:47,490 Lijepo. 1526 01:12:47,490 --> 01:12:49,915 Ostala pitanja? 1527 01:12:49,915 --> 01:12:50,505 Vrijeme? 1528 01:12:50,505 --> 01:12:51,380 MARIJA ZLATKOVA: Dobro. 1529 01:12:51,380 --> 01:12:52,760 Dobro. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Nekoliko brzih korisna jQuery. 1532 01:12:55,720 --> 01:12:57,559 Neću ići kroz sve njih. 1533 01:12:57,559 --> 01:12:59,350 Ovi slajdovi će biti up line malo 1534 01:12:59,350 --> 01:13:02,040 kasnije, tako da možete provjeriti da se malo kasnije. 1535 01:13:02,040 --> 01:13:07,120 No u osnovi, opća uzorak drži u kojoj ćemo reći, 1536 01:13:07,120 --> 01:13:11,510 U redu, hej, jQuery, ovdje je moj Selektor a zatim ovdje je akcija. 1537 01:13:11,510 --> 01:13:15,940 A vi možete učiniti stvari kao što su pristup vrijednost obliku, pristup neke HTML, 1538 01:13:15,940 --> 01:13:19,195 kontrola što će se dogoditi kada korisnik podnosi obrazac, takve stvari. 1539 01:13:19,195 --> 01:13:20,106 Da. 1540 01:13:20,106 --> 01:13:22,090 >> PUBLIKA: Pa u ispit, ćemo trebati 1541 01:13:22,090 --> 01:13:25,066 znati dosta s jQuery dokumentaciju. 1542 01:13:25,066 --> 01:13:31,018 Dakle, s obzirom da smo kopirajte / zalijepite jQuery Dokumentacija našem mangupirati se plahta, 1543 01:13:31,018 --> 01:13:32,506 Gdje je linija nacrtana? 1544 01:13:32,506 --> 01:13:33,957 Kao koliko trebamo znati? 1545 01:13:33,957 --> 01:13:35,290 HANNAH Blumberg: Veliki pitanje. 1546 01:13:35,290 --> 01:13:37,765 Pitanje je bitno s obzirom da vas 1547 01:13:37,765 --> 01:13:41,330 Ne mogu pristupiti jQuery dokumentaciju tijekom ispitivanja, koliko bi trebao 1548 01:13:41,330 --> 01:13:41,830 znati? 1549 01:13:41,830 --> 01:13:45,540 Nismo očekivali da dođe se s nekim slučajnim redoslijedom 1550 01:13:45,540 --> 01:13:47,240 kako bismo Vas očekuje Googleu. 1551 01:13:47,240 --> 01:13:52,930 >> Stvari koje su fer igru ​​su bih kažu samo vrsta općeg sintakse, 1552 01:13:52,930 --> 01:13:58,310 biti u mogućnosti odabrati po ID-a po class-- tako kao CSS. 1553 01:13:58,310 --> 01:14:01,876 A onda stvarni funkcije sebe, mi vjerojatno ću ti reći. 1554 01:14:01,876 --> 01:14:02,376 Da. 1555 01:14:02,376 --> 01:14:05,591 >> PUBLIKA: Dakle, kada odaberete po razredu bi značilo točku. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Da, točno. 1557 01:14:06,840 --> 01:14:07,340 Dobro. 1558 01:14:07,340 --> 01:14:10,461 Kada odaberete po razredu, to se događa da se točka umjesto funta znak. 1559 01:14:10,461 --> 01:14:10,960 Da. 1560 01:14:10,960 --> 01:14:12,710 >> PUBLIKA: Biste li ići preko razlici 1561 01:14:12,710 --> 01:14:14,310 između odabira po ID i klasi? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: Naravno. 1563 01:14:14,560 --> 01:14:17,510 Razlika u odabiru ID i odabir po razredu. 1564 01:14:17,510 --> 01:14:20,685 Dakle, kao što je Marija, rekao je malo ranije, postoji 1565 01:14:20,685 --> 01:14:26,280 može biti samo jedan HTML element s tim ID, dok klase, 1566 01:14:26,280 --> 01:14:29,740 što nam omogućuje da grupa hrpa različitih elemenata zajedno, 1567 01:14:29,740 --> 01:14:34,300 tako stvari koje su povezane, ali ne i isti. 1568 01:14:34,300 --> 01:14:35,685 Je li to odgovor na pitanje? 1569 01:14:35,685 --> 01:14:36,200 Odlično. 1570 01:14:36,200 --> 01:14:37,194 Da. 1571 01:14:37,194 --> 01:14:40,680 >> PUBLIKA: Što ako imate više stvari koje su u istoj klasi? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Što se događa Ako imate više stvari koje 1573 01:14:42,150 --> 01:14:43,280 su isti razred? 1574 01:14:43,280 --> 01:14:45,829 Tako, na primjer, ako smo samo pomoću čistog JavaScript, 1575 01:14:45,829 --> 01:14:48,120 bismo učiniti nešto slično document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 I što onda da zapravo ne je vraća niz elemenata. 1578 01:14:56,320 --> 01:14:59,517 >> A imate bilo ponoviti više ih ili pronaći koje želite. 1579 01:14:59,517 --> 01:15:01,350 To neće dati što jedan element. 1580 01:15:01,350 --> 01:15:03,450 To će vam dati niz elemenata. 1581 01:15:03,450 --> 01:15:05,280 Veliko pitanje. 1582 01:15:05,280 --> 01:15:07,700 Još nešto? 1583 01:15:07,700 --> 01:15:09,520 Odlično. 1584 01:15:09,520 --> 01:15:12,860 >> Dakle, mislim da, ako ste upoznati s bilo jQuery ste vidjeli u pset, 1585 01:15:12,860 --> 01:15:15,600 te bi trebao biti dobar to ići. 1586 01:15:15,600 --> 01:15:16,325 Pitanje? 1587 01:15:16,325 --> 01:15:17,610 O ne. 1588 01:15:17,610 --> 01:15:18,859 Stvarno moram učiti. 1589 01:15:18,859 --> 01:15:19,358 Opustiti. 1590 01:15:19,358 --> 01:15:20,035 To će biti u redu. 1591 01:15:20,035 --> 01:15:20,660 Ja ću doći. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Razgovarajmo o Ajax. 1594 01:15:26,870 --> 01:15:31,350 Dakle, Ajax će biti A- dobro, Počnimo s onim što stoji. 1595 01:15:31,350 --> 01:15:32,350 To je akronim. 1596 01:15:32,350 --> 01:15:35,855 Ona se zalaže za Asinkroni JavaScript i XML. 1597 01:15:35,855 --> 01:15:39,800 I XML osnovi će biti [Nečujan] s vrstom naše podatke. 1598 01:15:39,800 --> 01:15:42,100 Ali nismo zapravo koristi XML. 1599 01:15:42,100 --> 01:15:43,430 Umjesto toga, mi samo koristiti JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Tako je u osnovi, to je neki data-- asinkroni, JavaScript i podataka, 1601 01:15:48,350 --> 01:15:50,040 u ovom slučaju, JSON. 1602 01:15:50,040 --> 01:15:52,820 A naš cilj, kao što smo spomenuli malo ranije, 1603 01:15:52,820 --> 01:15:56,880 je da bi mogli napraviti Zahtjev, koji su zahtjev za to 1604 01:15:56,880 --> 01:16:00,700 njegova je stvar u pozadina, ali i dalje 1605 01:16:00,700 --> 01:16:02,550 učiniti sve što smo namjeravaju učiniti. 1606 01:16:02,550 --> 01:16:06,650 I onda kad je to informacija spremni, onda ćemo ga ugraditi. 1607 01:16:06,650 --> 01:16:08,470 >> Pa da vidimo što je to zapravo izgleda. 1608 01:16:08,470 --> 01:16:11,210 A to, što bi trebao biti malo poznato 1609 01:16:11,210 --> 01:16:13,680 iz pset8, onaj koji ste upravo pretvorio u. 1610 01:16:13,680 --> 01:16:16,200 Dakle, ovdje je valjan jQuery Funkcija da bismo mogli 1611 01:16:16,200 --> 01:16:18,250 Želite li znati about-- ovaj znak za dolar. 1612 01:16:18,250 --> 01:16:21,500 Dakle, on kaže jQuery funkciju, .getJson. 1613 01:16:21,500 --> 01:16:25,020 >> A što je ova funkcija radi je to traje URL i neke parameters-- 1614 01:16:25,020 --> 01:16:28,000 tako da mislim da u slučaju od pset8, to je kao, 1615 01:16:28,000 --> 01:16:33,520 URL je articles.php a Parametri bio go = neku poštanski broj. 1616 01:16:33,520 --> 01:16:41,580 A ona kaže, u redu, napraviti zahtjev ovaj URL sa zadanim parametrima. 1617 01:16:41,580 --> 01:16:43,480 I to se događa samo. 1618 01:16:43,480 --> 01:16:47,730 >> Kad završi, to je bilo će uspješno završena 1619 01:16:47,730 --> 01:16:49,370 ili da će to uspjeti. 1620 01:16:49,370 --> 01:16:53,480 Dakle, to je ekvivalent poziva Rob i zamolite ga da nešto učini. 1621 01:16:53,480 --> 01:17:00,260 A onda, kada on zove natrag, on je bilo reći što sam učinio ili nisam uspio. 1622 01:17:00,260 --> 01:17:04,030 >> Dakle, u slučaju gdje ste učinio, ti kažeš, u redu, ja sam učinio. 1623 01:17:04,030 --> 01:17:05,980 I onda nazvati ovu funkciju. 1624 01:17:05,980 --> 01:17:08,915 U ovom slučaju, to će biti funkcija koja traje neke informacije. 1625 01:17:08,915 --> 01:17:12,890 Onaj obično stalo podataka, podaci koje smo zapravo su se vratili 1626 01:17:12,890 --> 01:17:15,900 kao rezultat poziva .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> A vi možete učiniti nešto s njom. 1628 01:17:17,470 --> 01:17:23,670 Dakle, u slučaju pset8, smo ga prikazuju u obliku popisa. 1629 01:17:23,670 --> 01:17:29,050 Fail će biti u funkciji kako se zove, ako se zahtjev ne uspije 1630 01:17:29,050 --> 01:17:30,450 iz bilo kojeg razloga. 1631 01:17:30,450 --> 01:17:35,104 A u slučaju pset8, samo smo ga console.log. 1632 01:17:35,104 --> 01:17:36,020 Bilo kakva pitanja o tome? 1633 01:17:36,020 --> 01:17:36,300 Da. 1634 01:17:36,300 --> 01:17:39,633 >> PUBLIKA: Možemo li koristiti funkciju theta umjesto funkcije, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: Naravno. 1637 01:17:44,380 --> 01:17:46,713 Tako da, mislim da u pset, smo upravo vidjeli funkciju podatke. 1638 01:17:46,713 --> 01:17:48,700 Dakle, to je samo the-- da, u redu. 1639 01:17:48,700 --> 01:17:50,510 To je ono što smo vidjeli u pset. 1640 01:17:50,510 --> 01:17:51,480 To je sasvim u redu. 1641 01:17:51,480 --> 01:17:54,210 >> To su samo ako ste htjeli izvući više informacija, 1642 01:17:54,210 --> 01:17:57,190 to su stvari koje možete dobiti od .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Dobro pitanje. 1644 01:17:59,040 --> 01:17:59,706 Još nešto? 1645 01:17:59,706 --> 01:18:00,206 Da. 1646 01:18:00,206 --> 01:18:01,787 >> PUBLIKA: Pa .getJSON je Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH Blumberg: U redu. 1648 01:18:02,620 --> 01:18:05,700 Dakle, to je vrsta lukav dio. 1649 01:18:05,700 --> 01:18:12,390 To je jQuery funkcija koja omogućuje što učiniti asinkroni pozivi. 1650 01:18:12,390 --> 01:18:16,080 A ti asinkroni pozivi, to je ono što smo se odnose kao Ajax. 1651 01:18:16,080 --> 01:18:16,850 Da. 1652 01:18:16,850 --> 01:18:20,185 To trebalo mi je jako dugo vremena da razvlači kad sam bio student. 1653 01:18:20,185 --> 01:18:21,560 PUBLIKA: Možete li ponoviti to? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Da. 1655 01:18:22,476 --> 01:18:23,630 Mogu reći da je opet? 1656 01:18:23,630 --> 01:18:29,010 Ova .getJSON funkcija, to je funkcija jQuery. 1657 01:18:29,010 --> 01:18:31,970 I to će napraviti asinkroni poziv. 1658 01:18:31,970 --> 01:18:35,700 I ove asinkroni pozivi, mi smo su odnosi na one što su Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Ima li još pitanja? 1661 01:18:41,872 --> 01:18:43,330 Imamo samo par minuta preostalo. 1662 01:18:43,330 --> 01:18:45,080 I Marija će završiti sa sigurnošću 1663 01:18:45,080 --> 01:18:47,464 a onda ćemo da se samo o učinili. 1664 01:18:47,464 --> 01:18:48,630 MARIJA ZLATKOVA: Strašan, OK. 1665 01:18:48,630 --> 01:18:54,030 Dakle, ovo is-- samo uzeti par sekundi gledati preko toga. 1666 01:18:54,030 --> 01:18:56,750 I to nije nešto stvarno super. 1667 01:18:56,750 --> 01:18:59,430 I može li mi netko reći zašto? 1668 01:18:59,430 --> 01:19:05,650 Što se događa u foo i svibanj mogao potencijalno rezultirati nešto loše, 1669 01:19:05,650 --> 01:19:06,770 i što to zove? 1670 01:19:06,770 --> 01:19:07,270 Da. 1671 01:19:07,270 --> 01:19:10,391 PUBLIKA: Ako je argument da je donesen je više od 12 znakova, 1672 01:19:10,391 --> 01:19:11,454 moglo bi se preliti. 1673 01:19:11,454 --> 01:19:12,370 MARIJA ZLATKOVA: Tako je. 1674 01:19:12,370 --> 01:19:14,180 Savršen. 1675 01:19:14,180 --> 01:19:15,384 Kako se to zove? 1676 01:19:15,384 --> 01:19:16,300 Vi samo ga spomenuo. 1677 01:19:16,300 --> 01:19:16,840 >> PUBLIKA: Buffer overflow. 1678 01:19:16,840 --> 01:19:18,381 >> MARIJA ZLATKOVA: Yup, buffer overflow. 1679 01:19:18,381 --> 01:19:21,230 Dakle, to je nešto što smo nazivaju buffer overflow. 1680 01:19:21,230 --> 01:19:25,500 I vidimo da je unutrašnjost foo, smo definira naš tampon, c, 1681 01:19:25,500 --> 01:19:27,240 s veličinom od 12 godina. 1682 01:19:27,240 --> 01:19:32,680 Međutim, u glavnom, mi ne provjeriti na bilo koji način na sve 1683 01:19:32,680 --> 01:19:36,480 je li argv1-- da bio je drugi argument. 1684 01:19:36,480 --> 01:19:39,630 Mi ne provjerite je li Veličina je to prikladno. 1685 01:19:39,630 --> 01:19:43,380 >> Dakle, ako smo imali posebno zlonamjerni korisnik 1686 01:19:43,380 --> 01:19:47,170 koji je stavio u neki argument da je dulje od 12, a zatim potencijalno 1687 01:19:47,170 --> 01:19:50,850 izvan granica koje Argument, imao neke izvršni kod 1688 01:19:50,850 --> 01:19:55,570 koji je pokušavao učiniti nešto loše s tim; onda, što će se dogoditi, 1689 01:19:55,570 --> 01:19:59,310 bi nadjačati povratak adresu funkciji foo, 1690 01:19:59,310 --> 01:20:04,370 uzrokuje funkciju kada povratka na izvršavanje taj kod. 1691 01:20:04,370 --> 01:20:07,540 A onda se loše stvari bi se moglo dogoditi. 1692 01:20:07,540 --> 01:20:09,850 Da li to smisla svima? 1693 01:20:09,850 --> 01:20:12,424 >> A kako možemo zaštititi od toga? 1694 01:20:12,424 --> 01:20:13,090 Bilo koji sugestija? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Uglavnom, unutar potencijalno foo, kako 1697 01:20:21,890 --> 01:20:28,294 možemo provjeriti kako bi bili sigurni da to ne može dogoditi? 1698 01:20:28,294 --> 01:20:33,879 >> PUBLIKA: Ako je veličina 12 prekoračena, ti bi izdvojiti dodatnu memoriju? 1699 01:20:33,879 --> 01:20:37,170 MARIJA ZLATKOVA: Prijedlog je, rasporediti Dodatna memorija veličine premašio. 1700 01:20:37,170 --> 01:20:39,800 Zapravo, možemo učiniti nešto puno jednostavnije od toga, kao dobro. 1701 01:20:39,800 --> 01:20:44,870 Mi samo možemo dobiti dužinu string argumenta koji je upisan, 1702 01:20:44,870 --> 01:20:48,590 provjeriti da li je to manje od ili jednaka 12-- 1703 01:20:48,590 --> 01:20:50,790 što je ono što želimo ga da se zbog toga ne želimo 1704 01:20:50,790 --> 01:20:52,373 to prelazi granice našeg tampon. 1705 01:20:52,373 --> 01:20:55,690 A onda, ako se to ne dogodi, mi može raditi s argumentom. 1706 01:20:55,690 --> 01:21:00,296 A onda, ako se to dogodi, mi zapravo želimo da Yello potencijalno na korisnika. 1707 01:21:00,296 --> 01:21:01,670 No, to je kako bi to učiniti. 1708 01:21:01,670 --> 01:21:02,443 Da. 1709 01:21:02,443 --> 01:21:04,360 >> PUBLIKA: Možete li objasniti memcpy jako brzo? 1710 01:21:04,360 --> 01:21:05,443 MARIJA ZLATKOVA: Oh, ispričavam se. 1711 01:21:05,443 --> 01:21:06,040 Da. 1712 01:21:06,040 --> 01:21:11,290 Memcpy traje god is-- žao, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy traje ono što je u baru, ono što je prošlo 1714 01:21:15,850 --> 01:21:18,050 na foo kao argument komandne linije. 1715 01:21:18,050 --> 01:21:19,440 Dakle, to će potrajati argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 naziva bar ovdje. 1717 01:21:21,420 --> 01:21:24,453 Dakle, to se događa da se bar i to će ga kopirati u c. 1718 01:21:24,453 --> 01:21:25,402 >> PUBLIKA: U redu. 1719 01:21:25,402 --> 01:21:28,360 MARIJA ZLATKOVA: I to će copy-- treći argument jednostavno odnosi 1720 01:21:28,360 --> 01:21:30,601 za koliko će kopirati u c. 1721 01:21:30,601 --> 01:21:31,142 PUBLIKA: Ah. 1722 01:21:31,142 --> 01:21:33,030 Dakle, ovaj je kopiranje sve to onda. 1723 01:21:33,030 --> 01:21:34,310 >> MARIJA ZLATKOVA: Da, to je kopiranje sve to. 1724 01:21:34,310 --> 01:21:34,810 Da. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 Prvo, mi bi bili sigurni da je bar ne jednaka null jer je pokazivač. 1727 01:21:41,910 --> 01:21:44,680 Onda smo dobili duljinu niza bara. 1728 01:21:44,680 --> 01:21:47,530 Mi bi bili sigurni da je manji ili jednak 12. 1729 01:21:47,530 --> 01:21:50,070 A onda, jer smo pobrinuo, možemo zapravo 1730 01:21:50,070 --> 01:21:53,122 memcpy i biti siguran da je to u redu. 1731 01:21:53,122 --> 01:21:53,705 Ima li pitanja? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Veliki. 1734 01:21:58,690 --> 01:22:00,400 Imam dvije istinite ili lažne pitanja. 1735 01:22:00,400 --> 01:22:05,470 Može bilo tko reći mene odmah ako su istinite ili lažne? 1736 01:22:05,470 --> 01:22:07,460 Da, to je lažna. 1737 01:22:07,460 --> 01:22:07,960 Točno. 1738 01:22:07,960 --> 01:22:09,330 Obojica su lažne. 1739 01:22:09,330 --> 01:22:12,682 Tako pomoću jednog lozinku nikada nije stvarno dobra ideja 1740 01:22:12,682 --> 01:22:14,890 jer ako netko zna vaša lozinka, oni mogu samo 1741 01:22:14,890 --> 01:22:16,260 pristupiti sve svoje druge račune. 1742 01:22:16,260 --> 01:22:19,260 A onda ikone ništa kako bi se osigurala sigurnost. 1743 01:22:19,260 --> 01:22:24,900 Obično smo trebali tražiti HTTPS umjesto HTTP i URL. 1744 01:22:24,900 --> 01:22:28,560 >> I neke druge vrste Napadi koje smo spomenuli, 1745 01:22:28,560 --> 01:22:31,390 David je spomenuto u predavanje, SQL injekcije napada. 1746 01:22:31,390 --> 01:22:37,310 Već smo vidjeli da ako smo don't-- Funkcija CS50 upit osigurava da SQL 1747 01:22:37,310 --> 01:22:39,530 injekcije napada ne može dogoditi. 1748 01:22:39,530 --> 01:22:42,640 Ali ako nismo koristili CS50, citat, citat "u upitu" 1749 01:22:42,640 --> 01:22:46,830 ćemo morati biti sigurni da je Korisnik unos nije zapravo neki SQL 1750 01:22:46,830 --> 01:22:49,670 upit koji će uzrokovati sve stolovi biti odbačene 1751 01:22:49,670 --> 01:22:54,070 ili nešto loše za dogoditi s našim baze podataka. 1752 01:22:54,070 --> 01:22:56,790 >> Sjednica je otmica druga vrsta napada 1753 01:22:56,790 --> 01:23:05,940 što se događa kad neke loše Osoba koristi sjednicu neke žrtve 1754 01:23:05,940 --> 01:23:08,740 ID pristupiti podatke za prijavu. 1755 01:23:08,740 --> 01:23:13,620 Dakle, vrlo trivijalan primjer da je kao i ako imamo javno računalo, 1756 01:23:13,620 --> 01:23:21,120 onda je loša osoba prijavljuje te imaju kolačiće koje su spremljene. 1757 01:23:21,120 --> 01:23:23,380 I kolačići ne mijenjaju za sjednicu. 1758 01:23:23,380 --> 01:23:27,620 >> Onda smo žrtva ići a zatim se prijavite na web stranici. 1759 01:23:27,620 --> 01:23:30,290 Kolačići ne mijenjaju za određenu sjednicu. 1760 01:23:30,290 --> 01:23:33,060 A onda je žrtva prijavljuje web stranica, a zatim ostavlja. 1761 01:23:33,060 --> 01:23:36,190 A onda je osoba koja seže tada može i dalje koristiti svoj ID sesije 1762 01:23:36,190 --> 01:23:37,430 pristupiti svoje podatke. 1763 01:23:37,430 --> 01:23:40,050 Dakle, to je jedan primjer kako se to moglo dogoditi. 1764 01:23:40,050 --> 01:23:45,570 >> I onda ja ne bih previše brinuti o specifičnoj koda ili bilo što 1765 01:23:45,570 --> 01:23:49,270 kao što je to koja bi mogla dovesti do toga, ali ima nekakvu ideju što 1766 01:23:49,270 --> 01:23:51,400 varijable su uključeni u to su. 1767 01:23:51,400 --> 01:23:53,897 A onda manipulira glavom Podaci se još jedna vrsta napada 1768 01:23:53,897 --> 01:23:55,230 koji je David govorio o tome. 1769 01:23:55,230 --> 01:23:59,730 I to samo odnosi na što se može dogoditi kada 1770 01:23:59,730 --> 01:24:04,300 odgovor, HTTP Odgovor unutar našeg napadača 1771 01:24:04,300 --> 01:24:05,720 nije dezinficirati ispravno. 1772 01:24:05,720 --> 01:24:14,340 >> I svaki od fields-- na primjer, ako netko prepisuje jedno od zaglavlja 1773 01:24:14,340 --> 01:24:18,860 Vrijednosti da sadrži ništa više od ono što bi trebali contain-- i zapravo 1774 01:24:18,860 --> 01:24:22,720 sadrže, na primjer, od 200 OK stanje kod, zatim su 1775 01:24:22,720 --> 01:24:26,890 mogla potencijalno napraviti zlonamjerna stvari kada ne bi smio. 1776 01:24:26,890 --> 01:24:30,815 Ali ja ne bih brinite previše mnogo o određenoj šifri 1777 01:24:30,815 --> 01:24:34,110 koji bi mogli izazvati ovo, samo vrsta razumijevanja 1778 01:24:34,110 --> 01:24:37,290 visoke razine takve stvari. 1779 01:24:37,290 --> 01:24:39,570 >> Mislim da je to sve da moramo pokriti. 1780 01:24:39,570 --> 01:24:40,090 Nevjerojatna. 1781 01:24:40,090 --> 01:24:43,310 Svatko ima bilo kakvih pitanja o bilo od stvari koje smo pokriveni? 1782 01:24:43,310 --> 01:24:44,213 Da. 1783 01:24:44,213 --> 01:24:48,077 >> PUBLIKA: Dakle, jedna vrsta više logističku pitanje. 1784 01:24:48,077 --> 01:24:53,400 Je sadržaj uglavnom usmjerena na stvari nakon kviz 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIJA ZLATKOVA: Pa Pitanje je, je sadržaj 1786 01:24:55,730 --> 01:24:59,720 usmjerena uglavnom na stvari nakon kviz 1? 1787 01:24:59,720 --> 01:25:06,070 Tako je fokus na poslije kviz 1, s izuzetkom 1788 01:25:06,070 --> 01:25:10,914 da moramo usredotočiti na stvari u pset5 i puno od strukture podataka 1789 01:25:10,914 --> 01:25:11,580 da smo pokriveni. 1790 01:25:11,580 --> 01:25:14,300 A mi ne možemo reći da smo može ignorirati ništa prije 1791 01:25:14,300 --> 01:25:17,120 da zato što se nadovezuje na to kao dobro. 1792 01:25:17,120 --> 01:25:21,845 >> Tako se usredotočiti na to, plus pset5 materijal poput uključujući povezane liste, hrpe, 1793 01:25:21,845 --> 01:25:23,720 redovi, i sve Hannah je otišao preko. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: Tako je. 1795 01:25:24,050 --> 01:25:27,450 Da, išli smo preko svih stvari C na samom početku vrlo brzo. 1796 01:25:27,450 --> 01:25:29,090 No, svakako provjerite to. 1797 01:25:29,090 --> 01:25:32,700 Vratite se i gledati kviz 0 pregled. 1798 01:25:32,700 --> 01:25:36,110 >> Nekoliko više logistički bilješke, Samo, dok mi imamo vašu pažnju. 1799 01:25:36,110 --> 01:25:39,100 Mi ćemo imati radno vrijeme kako u ponedjeljak i utorak navečer. 1800 01:25:39,100 --> 01:25:41,540 Oni će biti u MD 119. 1801 01:25:41,540 --> 01:25:44,220 To je sve na web stranici, tako da ako ne to, ne brinite čuti. 1802 01:25:44,220 --> 01:25:45,266 >> MARIJA ZLATKOVA: 8:30 do 11:00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH Blumberg: Da, 8:30 do 11:00 sati. 1804 01:25:46,260 --> 01:25:46,910 Mi ćemo biti tamo. 1805 01:25:46,910 --> 01:25:48,368 Mi ćemo biti tamo odgovoriti na pitanja. 1806 01:25:48,368 --> 01:25:49,480 To je prilično hladan i zabavno. 1807 01:25:49,480 --> 01:25:53,240 Vi možete pitati bilo kakva pitanja da imate na kvizu 1. 1808 01:25:53,240 --> 01:25:55,740 A kviz 1 je na Srijeda, pa sretno. 1809 01:25:55,740 --> 01:25:59,770 Ako imate bilo kakvih pitanja, možda došli razgovarati s nama ovdje jedan-na-jedan. 1810 01:25:59,770 --> 01:26:00,880 Cool. 1811 01:26:00,880 --> 01:26:01,630 Puno hvala. 1812 01:26:01,630 --> 01:26:02,880 >> MARIJA ZLATKOVA: Hvala puno, dečki. 1813 01:26:02,880 --> 01:26:03,480 >> PUBLIKA: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [PLJESAK] 1815 01:26:05,930 --> 01:26:07,530