1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> DAVID Malan: U redu. 3 00:00:12,360 --> 00:00:15,970 Ovo je CS50, a to je Kraj tjedna devet. 4 00:00:15,970 --> 00:00:18,560 Prošlo je više od vrtlog u posljednjih nekoliko dana. 5 00:00:18,560 --> 00:00:21,580 A problema postaviti sedam, ako ste koljena duboko u njemu, shvaćam da je sasvim 6 00:00:21,580 --> 00:00:23,340 Malo novo što je unutra. 7 00:00:23,340 --> 00:00:26,660 No, da vidimo možemo li komad sve zajedno ovdje ukratko 8 00:00:26,660 --> 00:00:29,230 prije toga skreće off u još drugi smjer i vidim 9 00:00:29,230 --> 00:00:30,510 gdje drugdje možemo ići. 10 00:00:30,510 --> 00:00:32,630 >> Tako je do sada, mi smo govorili o HTML-u. 11 00:00:32,630 --> 00:00:33,740 Razgovarali smo o CSS. 12 00:00:33,740 --> 00:00:34,705 Razgovarali smo o PHP. 13 00:00:34,705 --> 00:00:36,520 Počeli ste doživjeti SQL. 14 00:00:36,520 --> 00:00:38,360 Danas ćemo razgovarati malo o JavaScript. 15 00:00:38,360 --> 00:00:41,230 No, kako se sve to u raskoraku jezici idu zajedno? 16 00:00:41,230 --> 00:00:44,970 >> Tako smo razgovarali prošlog tjedna o tome Ideja ima poslužitelj. 17 00:00:44,970 --> 00:00:48,470 Pa neka je samo nacrtati ovu pravokutnik kao web server ovdje. 18 00:00:48,470 --> 00:00:52,200 I web poslužitelja služi sigurno datoteke. 19 00:00:52,200 --> 00:00:54,640 A neki od tih datoteka može biti HTML datoteke. 20 00:00:54,640 --> 00:00:58,270 Dakle, jedna od stvari koje web poslužitelj može ispljunuti može biti datoteka koja 21 00:00:58,270 --> 00:01:01,290 samo mi ćemo privući ovako sadrži neke HTML. 22 00:01:01,290 --> 00:01:04,786 Dakle, laički rečeno, ono što nema HTML neka vam je činiti? 23 00:01:04,786 --> 00:01:06,036 >> PUBLIKA: Page izgledati lijepo. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> DAVID Malan: OK, bi stranica izgledati lijepo, iako mislim da sam dokazao 26 00:01:12,310 --> 00:01:13,370 da je drugačije. 27 00:01:13,370 --> 00:01:18,250 Dakle, HTML ne dopustiti da stavi van stranice strukturno, a to vam omogućuje da se 28 00:01:18,250 --> 00:01:22,410 svojevrsni estetski obilježavati stranicu, obilježavati statički sadržaj, tako da 29 00:01:22,410 --> 00:01:23,640 Možete ga tada vidjeli s web pregledniku. 30 00:01:23,640 --> 00:01:24,690 >> No, to je ključ. 31 00:01:24,690 --> 00:01:26,130 To je statički sadržaj. 32 00:01:26,130 --> 00:01:28,590 Možete ga napisati, da ga spasi, a onda ga brod. 33 00:01:28,590 --> 00:01:31,130 I web poslužitelja tada služi je do svoje posjetitelje. 34 00:01:31,130 --> 00:01:35,700 >> Ali mi stilizira stvari koriste različite jezik uopce. 35 00:01:35,700 --> 00:01:40,150 Počeli smo koristiti stil atribut o određenim oznakama. 36 00:01:40,150 --> 00:01:43,400 A stil atribut stavimo stvari kao što su veličina fonta i boje. 37 00:01:43,400 --> 00:01:46,460 I vjerojatno ste počele otkrivati, ili će uskoro za konačni 38 00:01:46,460 --> 00:01:50,160 projekti potencijalno, ali druga svojstva koja možete koristiti u CSS. 39 00:01:50,160 --> 00:01:54,710 I tako laički rečeno, ono što Stvarno onda ne CSS učiniti? 40 00:01:54,710 --> 00:01:57,810 Oni su samo njihovi primjeri. 41 00:01:57,810 --> 00:02:00,730 Što se ti to dopustiti HTML ne čini se da od onoga 42 00:02:00,730 --> 00:02:02,606 koje smo dosad vidjeli? 43 00:02:02,606 --> 00:02:04,850 >> PUBLIKA: Definirajte stilove od sebe. 44 00:02:04,850 --> 00:02:06,700 >> DAVID Malan: Definiraj stilove po sebi. 45 00:02:06,700 --> 00:02:10,280 Dakle definirati stvari poput klase kao i vi možda ste naišli, ili jedinstveno 46 00:02:10,280 --> 00:02:13,800 identificirati čvorove u dokumentu, tako da ih možete stilizira. 47 00:02:13,800 --> 00:02:16,890 No, točnije, ja bih rekao da CSS stvarno vam omogućuje da se stvari 48 00:02:16,890 --> 00:02:20,790 posljednji kilometar i omogućuje vam da odredite koliko točnije estetika, 49 00:02:20,790 --> 00:02:24,340 dok je HTML za najveći dio omogućuje što strukturirati svoje stranice. 50 00:02:24,340 --> 00:02:27,310 >> I premda postoje neke zadane, kao što smo vidjeli oznaku za 51 00:02:27,310 --> 00:02:30,690 tarifni tag, koji grubo rečeno napravio stvari velika i hrabra. 52 00:02:30,690 --> 00:02:34,250 To je prilično generički definicija od krpa - veliki i hrabar. 53 00:02:34,250 --> 00:02:35,260 Što font je to? 54 00:02:35,260 --> 00:02:36,080 Koje boje je to? 55 00:02:36,080 --> 00:02:36,890 Kako bold je to? 56 00:02:36,890 --> 00:02:39,830 I CSS vam omogućuje preciznije Tune takve stvari. 57 00:02:39,830 --> 00:02:42,150 Kao i izgleda, kao što neki od koje ste vidjeli. 58 00:02:42,150 --> 00:02:45,180 >> I iskreno, CSS je bitna od neredu jeziku. 59 00:02:45,180 --> 00:02:48,370 To je vrlo moćan u koje možete napraviti doslovno bilo koju web stranicu da ste 60 00:02:48,370 --> 00:02:51,880 vidjeti na webu danas s njim, ali to je vrsta boli u vratu. 61 00:02:51,880 --> 00:02:54,440 A neki od vas su se zalupila glavu na zidovima već samo raditi 62 00:02:54,440 --> 00:02:58,560 nešto glupo kao centar izbornika na Problem postaviti sedam, ako ste došli do 63 00:02:58,560 --> 00:02:59,470 ta točka već. 64 00:02:59,470 --> 00:03:01,530 >> Ali shvatite, one stvari se lakše s vremenom. 65 00:03:01,530 --> 00:03:02,820 Možete početi primjećivati ​​obrasce. 66 00:03:02,820 --> 00:03:06,020 I opet, Google će biti tvoj prijatelj za razne načine na koje možete 67 00:03:06,020 --> 00:03:07,220 rješavanje ove vrste problema. 68 00:03:07,220 --> 00:03:11,520 >> I usudio bih se reći s CSS, HTML i više Općenito, možete riješiti probleme u 69 00:03:11,520 --> 00:03:15,910 mnogo više načina, od kojih su svi mogli vrlo dobro biti točna, nego što bi 70 00:03:15,910 --> 00:03:18,900 u nešto poput C, čak i Sada PHP ili JavaScript. 71 00:03:18,900 --> 00:03:21,080 Postoje samo mnogo različitih načina da postave stvari. 72 00:03:21,080 --> 00:03:22,570 >> No, ovaj je počeo da se neuredan, rekao mi. 73 00:03:22,570 --> 00:03:26,480 Samo vrsta commingling svoj HTML i Vaš CSS sa stilom atribut je 74 00:03:26,480 --> 00:03:27,590 Malo neuredan. 75 00:03:27,590 --> 00:03:31,460 I tako smo, umjesto rekao, svojevrsni apstraktno gledano, da li bi trebalo 76 00:03:31,460 --> 00:03:34,050 barem početi faktor iz svog CSS vjerojatno. 77 00:03:34,050 --> 00:03:37,430 Nije tvoj stil atribute, ali barem koristite stil oznaku unutar onoga što 78 00:03:37,430 --> 00:03:38,840 dio web stranice? 79 00:03:38,840 --> 00:03:39,560 >> Ivanković: voditelj. 80 00:03:39,560 --> 00:03:40,120 >> DAVID Malan: U glavi. 81 00:03:40,120 --> 00:03:43,270 Do sada smo imali samo naslov do postoje, ali također možete dodati stil 82 00:03:43,270 --> 00:03:47,230 označiti, a možete staviti svoj CSS grubo gledano prema vrhu stranice. 83 00:03:47,230 --> 00:03:52,550 No, onda mi je uzeo stvari jedan korak dalje i mi uzete da se više 84 00:03:52,550 --> 00:03:54,130 u zasebnu datoteku. 85 00:03:54,130 --> 00:03:57,240 >> I tako su te dvije datoteke su bile nekako povezana. 86 00:03:57,240 --> 00:03:59,550 I doista je bilo tag koji je to učinio. 87 00:03:59,550 --> 00:04:02,920 I ono što je bio jedan od sveobuhvatnu motivacije za faktoring našu CSS 88 00:04:02,920 --> 00:04:04,057 sve više? 89 00:04:04,057 --> 00:04:05,280 >> PUBLIKA: višekratnog. 90 00:04:05,280 --> 00:04:05,785 >> DAVID Malan: višekratnog. 91 00:04:05,785 --> 00:04:06,150 Točno? 92 00:04:06,150 --> 00:04:09,470 Možda ste vidjeli u p-set sedam već da puno stranica, 93 00:04:09,470 --> 00:04:12,260 Kupnja stranica, stranica prodaje, portfolio stranica, vjerojatno 94 00:04:12,260 --> 00:04:13,550 strukturiran nešto slično. 95 00:04:13,550 --> 00:04:17,579 Postoji CS50 financije logo na vrhu osim ako ste odlučili to promijeniti. 96 00:04:17,579 --> 00:04:19,839 Postoji footer na dnu stranice. 97 00:04:19,839 --> 00:04:24,315 I CSS vam omogućuje zatim ga uzeti iz je u zasebnu datoteku, tako da ako 98 00:04:24,315 --> 00:04:27,780 Želite li promijeniti nešto na globalnoj razini preko svoje cijele stranice, možete stvarno 99 00:04:27,780 --> 00:04:29,390 samo ga promijeniti na jednom mjestu. 100 00:04:29,390 --> 00:04:32,750 >> No, tu je cijenu koju plaćate potencijalno od strane nakon uzete iz 101 00:04:32,750 --> 00:04:38,380 CSS iz mog HTML datoteke u zasebne podnijeti ga usporedbe s 102 00:04:38,380 --> 00:04:40,650 tag, što smo vidjeli u ponedjeljak. 103 00:04:40,650 --> 00:04:43,850 Što bi moglo biti od minus ovo? 104 00:04:43,850 --> 00:04:48,830 Osvrčući se prije tjedan dana, kada smo govori o HTTP i TCP / IP i kako 105 00:04:48,830 --> 00:04:52,070 internet funkcionira. 106 00:04:52,070 --> 00:04:53,530 Nešto ovamo? 107 00:04:53,530 --> 00:04:54,730 >> Publika: Potrebno je više vremena. 108 00:04:54,730 --> 00:04:55,470 >> DAVID Malan: Potrebno je više vremena. 109 00:04:55,470 --> 00:04:56,750 Zašto? 110 00:04:56,750 --> 00:04:59,450 >> PUBLIKA: [nečujan]. 111 00:04:59,450 --> 00:04:59,750 >> DAVID Malan: Da. 112 00:04:59,750 --> 00:05:01,240 Tako da vjerojatno ima još malo vremena. 113 00:05:01,240 --> 00:05:04,290 Budući da je jedan, CSS je očito ne u istoj datoteci. 114 00:05:04,290 --> 00:05:06,920 Tako sada imate, kako bi ne jedan, nego dva zahtjeva. 115 00:05:06,920 --> 00:05:11,230 I svaki od tih zahtjeva, kao što smo vidjeli u Chrome u tzv inspektora, 116 00:05:11,230 --> 00:05:15,740 a mi smo gledali na kartici mreže, svaka od tih datoteka zahtijeva jedan HTTP 117 00:05:15,740 --> 00:05:18,360 Zahtjev, koji smo vidjeli traje neki iznos od vrijeme. 118 00:05:18,360 --> 00:05:19,290 Sad, možda to nije puno. 119 00:05:19,290 --> 00:05:20,670 Možda je to samo 20 milisekundi. 120 00:05:20,670 --> 00:05:22,260 Možda je to 200 milisekundi. 121 00:05:22,260 --> 00:05:25,530 >> Ali mislim o stranici kao što su Facebook, ili CNN ili Google, koji su mnogo 122 00:05:25,530 --> 00:05:28,060 veći od primjera koje smo pogledao dosad. 123 00:05:28,060 --> 00:05:32,070 Te stranice mogu imati desetke datoteka, od kojih svaki može zahtijevati 124 00:05:32,070 --> 00:05:33,550 preuzimanje datoteke. 125 00:05:33,550 --> 00:05:35,800 Dakle, stvari mogu potencijalno početi usporiti. 126 00:05:35,800 --> 00:05:39,280 >> A pogotovo ovih dana kada smo svi imaju mobitele u džepovima i 127 00:05:39,280 --> 00:05:43,010 sporiji internet veze, da se pričekati još nekoliko milisekundi, malo 128 00:05:43,010 --> 00:05:46,110 više milisekundi za dodatni slika zapravo može biti spor. 129 00:05:46,110 --> 00:05:50,430 Latencija je riječ koja opisuje vrsta čeka da imate da vam 130 00:05:50,430 --> 00:05:53,110 doživjeti kada čeka neki dio informacije. 131 00:05:53,110 --> 00:05:54,430 >> No, tu je naopako. 132 00:05:54,430 --> 00:05:56,600 Dakle, to nije sve vrsta - 133 00:05:56,600 --> 00:05:58,170 to je zapravo malo klackalicu ovdje. 134 00:05:58,170 --> 00:06:02,970 Negativni sada, ali ono što mogu učiniti preglednici ako su pametni, kako bi se izbjegla 135 00:06:02,970 --> 00:06:08,870 moraju zatražiti istu styles.css podnijeti opet može biti učiniti što? 136 00:06:08,870 --> 00:06:09,390 >> Cache ga. 137 00:06:09,390 --> 00:06:10,370 Dakle caching - 138 00:06:10,370 --> 00:06:11,690 C-C-H-E - 139 00:06:11,690 --> 00:06:15,810 općenito znači ovdje samo spasiti datoteku koju je zatražio prvi put, i 140 00:06:15,810 --> 00:06:17,440 zatim provjerite cache za to. 141 00:06:17,440 --> 00:06:20,400 Provjerite da ste svojevrsni spremnik, i ako već imate 142 00:06:20,400 --> 00:06:24,520 kopija styles.css, čak i ako neka druga stranica u p-set, ili bilo koju web stranicu, 143 00:06:24,520 --> 00:06:28,560 zamolbe opet, samo da daju Korisnik taj isti spremljena kopija. 144 00:06:28,560 --> 00:06:30,140 Ne smetaju ga traži. 145 00:06:30,140 --> 00:06:32,560 >> Negativni postoji, iako, kao što neki od vas su se spotaknuo u p-seta. 146 00:06:32,560 --> 00:06:35,870 Ako napravite promjene na poslužitelju i idete natrag u pregledniku, a vi 147 00:06:35,870 --> 00:06:39,250 reload, ponekad preglednik ne ti milost i ne smetaju 148 00:06:39,250 --> 00:06:43,660 ponovno skidanje vaš styles.css sliku jer, hajde, što su izgledi 149 00:06:43,660 --> 00:06:47,620 da su ti stilovi koji Facebook koristi će se promijeniti sata u sat ili 150 00:06:47,620 --> 00:06:48,140 iz dana u dan? 151 00:06:48,140 --> 00:06:48,800 To je prilično niska. 152 00:06:48,800 --> 00:06:52,260 Oni se mogu mijenjati tijekom vremena, ali ne i po minuti ili po satu. 153 00:06:52,260 --> 00:06:55,810 >> Dakle trik, samo za Vašu informaciju kada radiš web razvoj, često se držite 154 00:06:55,810 --> 00:06:59,500 pomak ključ za primjer, a zatim kliknite reload u vašem pregledniku, te da će 155 00:06:59,500 --> 00:07:03,280 obično reći preglednika reload sve, čak i ako već imate 156 00:07:03,280 --> 00:07:04,180 je u cache. 157 00:07:04,180 --> 00:07:06,630 Pa opet, upsides i mane, ali sve od njih 158 00:07:06,630 --> 00:07:08,260 konačnici dizajn odluke. 159 00:07:08,260 --> 00:07:11,520 >> Tako sada, nismo baš završiti priču ovdje. 160 00:07:11,520 --> 00:07:15,790 Ako ja sada ići natrag i naprijed i natrag i natrag, počeli smo uvesti ne samo 161 00:07:15,790 --> 00:07:18,060 HTML, ali PHP. 162 00:07:18,060 --> 00:07:20,786 Dakle, laički rečeno, ono što nema PHP činimo? 163 00:07:20,786 --> 00:07:22,770 >> PUBLIKA: [nečujan]. 164 00:07:22,770 --> 00:07:24,258 >> DAVID Malan: Što je to? 165 00:07:24,258 --> 00:07:25,250 >> PUBLIKA: Uvesti logiku u kodu. 166 00:07:25,250 --> 00:07:26,620 >> DAVID Malan: Da, uvođenje Logika u kodu. 167 00:07:26,620 --> 00:07:29,570 Dakle, to je istina programski jezik s petlje, i varijable i 168 00:07:29,570 --> 00:07:32,620 funkcije, i uvjete, a sve stvari koje smo koristili put natrag 169 00:07:32,620 --> 00:07:33,780 kada je od nule. 170 00:07:33,780 --> 00:07:36,780 I PHP, vidjeli smo, može se koristiti bilo na zapovjednoj liniji - to 171 00:07:36,780 --> 00:07:39,190 ne moraju imati veze s weba, iako je to 172 00:07:39,190 --> 00:07:43,150 zapravo svoje korijene i što je sklon biti dobar u i pogodan za - 173 00:07:43,150 --> 00:07:47,130 , ali možete koristiti PHP samo po prirodi od činjenice da je otisak () 174 00:07:47,130 --> 00:07:49,660 Funkcija i printf () funkciju, ili echo () funkcija. 175 00:07:49,660 --> 00:07:52,440 Postoji grozdovima načina na koje može ispisati tekst s PHP. 176 00:07:52,440 --> 00:07:56,540 >> Dakle, možete koristiti ovaj program jezik za izlaz točno 177 00:07:56,540 --> 00:07:58,460 o čemu smo razgovarali o tome prije. 178 00:07:58,460 --> 00:08:01,360 Ti dinamički može generirati Vaš HTML. 179 00:08:01,360 --> 00:08:02,300 Možda nisu svi za to. 180 00:08:02,300 --> 00:08:06,460 Možda ste hard code stvari, kao što su header i footer, i logo, 181 00:08:06,460 --> 00:08:07,950 i tvoj stil listova, i sve to. 182 00:08:07,950 --> 00:08:11,190 No, za tako nešto p-set sedam, gdje ste manipulira dionice i 183 00:08:11,190 --> 00:08:14,690 pokazujući korisnika portfelja, što je će se dinamički mijenjati, što bi moglo 184 00:08:14,690 --> 00:08:18,960 sigurno koristiti PHP i logiku koju pridaje ti kao programski jezik za 185 00:08:18,960 --> 00:08:22,320 izlazni dinamički podskupa stranice. 186 00:08:22,320 --> 00:08:25,900 >> Dakle, kada govorimo o dinamičkim web stranicama, ili web programiranja, to je 187 00:08:25,900 --> 00:08:27,200 ono što stvarno govoriš. 188 00:08:27,200 --> 00:08:31,450 Korištenje jezika kao PHP ili stvari zove Python, ili Ruby, ili Java, ili 189 00:08:31,450 --> 00:08:35,900 Još drugim jezicima, kako bi ispitivanje baze podataka Često, ili neki drugi server, te 190 00:08:35,900 --> 00:08:38,580 zatim dinamički ispljunuti HTML. 191 00:08:38,580 --> 00:08:42,470 >> Sada je krajnji rezultat, kao na stranu, je da HTML većine web stranica, 192 00:08:42,470 --> 00:08:45,970 uključujući vaš p-set sedam, vjerojatno će biti veliki nered, ako 193 00:08:45,970 --> 00:08:48,060 pogledate izvoru koda u pregledniku. 194 00:08:48,060 --> 00:08:49,010 To nije velika stvar. 195 00:08:49,010 --> 00:08:51,550 U ovom trenutku, kada nam je stalo stil, mi je stalo 196 00:08:51,550 --> 00:08:52,740 stvari koje ste napisali. 197 00:08:52,740 --> 00:08:56,240 Nećemo brinuti o stvarima da je ono što vaš kod izlaza. 198 00:08:56,240 --> 00:08:59,520 Dakle, ne brinite o razvedenosti Ovdje ako je PHP koji je 199 00:08:59,520 --> 00:09:01,190 zapravo izlaza stvari. 200 00:09:01,190 --> 00:09:04,430 Uostalom, preglednik nije briga, i ljudska neće biti baza 201 00:09:04,430 --> 00:09:05,400 na izvoru svejedno. 202 00:09:05,400 --> 00:09:09,000 Mi osoblje, primjerice, bi se gleda na PHP. 203 00:09:09,000 --> 00:09:13,440 >> Pa neka mi dati brzi primjer sada zašto drugi ne bi to moglo biti korisno. 204 00:09:13,440 --> 00:09:18,620 Pa iskreno, ja se ne mogu sjetiti zadnji put Vrijeme Koristio sam C riješiti problem u 205 00:09:18,620 --> 00:09:19,620 stvarni svijet. 206 00:09:19,620 --> 00:09:22,330 To je vjerojatno bio u srednjoj školi, kada Morao sam koristiti jezik koji 207 00:09:22,330 --> 00:09:26,710 bio je prilično niska razina i dao mi prilika da učinite nešto vrlo visoku 208 00:09:26,710 --> 00:09:30,720 obavlja se stvarno spasiti što više CPU ciklusima kao što sam mogao, u velikom dijelu 209 00:09:30,720 --> 00:09:33,990 jer sam bio koristeći velike skupove podataka, i svaki CPU ciklusa broje. 210 00:09:33,990 --> 00:09:37,750 I iskreno, čak i na stvari kao što su telefoni ovih dana i drugih uređaja 211 00:09:37,750 --> 00:09:39,910 gdje ne sasvim imati koliko memorije i ne sasvim imati 212 00:09:39,910 --> 00:09:44,160 koliko procesora, korištenjem brže jezika je još uvijek privlačan. 213 00:09:44,160 --> 00:09:47,290 >> No, u stvarnom svijetu, kad se samo želite baciti neki program zajedno 214 00:09:47,290 --> 00:09:50,340 analizirati neke podatke, ili ste prikupili cijela hrpa registracija za 215 00:09:50,340 --> 00:09:53,330 neki student grupa i želite vrlo brzo automatizirati slanje e-pošte 216 00:09:53,330 --> 00:09:56,240 jedan po jedan na svakoga od onih registracije, vi ćete posegnuti za 217 00:09:56,240 --> 00:09:59,240 jezik više razine od C da se tako izrazim. 218 00:09:59,240 --> 00:10:04,060 Nešto poput PHP ili Python ili Ruby, ili pola tuceta drugih koje postoje 219 00:10:04,060 --> 00:10:04,550 ovih dana. 220 00:10:04,550 --> 00:10:07,200 No, ta tri su vjerojatno najviše trendy upravo sada. 221 00:10:07,200 --> 00:10:10,840 >> I što to znači da možete otvoriti do uređivač teksta kao što je gedit ili 222 00:10:10,840 --> 00:10:14,030 najviše bilo što drugo i onda samo početak pisanja koda, bez brige 223 00:10:14,030 --> 00:10:17,800 o sastavljanju, bez stvarno brinuti o upravljanje memorijom, 224 00:10:17,800 --> 00:10:20,820 imajući na umu da iako malo aljkavost na kraju će se vratiti 225 00:10:20,820 --> 00:10:24,790 ugristi ako skup podataka dobiva veće ili problem dobiva veliki. 226 00:10:24,790 --> 00:10:27,230 No, što to znači za nam je sljedeći. 227 00:10:27,230 --> 00:10:29,860 >> Pustite me da idem naprijed i pokrenuti Speller od problema postaviti šest. 228 00:10:29,860 --> 00:10:33,480 Dakle, ovo je moj provedba trie-based koji sam koristio na veliko 229 00:10:33,480 --> 00:10:35,500 odbora u kojima nisam izvodi tako dobro. 230 00:10:35,500 --> 00:10:38,720 Vratit ćemo se u tjedan dana i ponovno onih koji nisu završili na vrhu 231 00:10:38,720 --> 00:10:40,430 velika ploča na našem zadnjem predavanju. 232 00:10:40,430 --> 00:10:44,520 No, za sada, dopustite mi da ide naprijed i samo pokrenuti moje rješenje u tekstu, a mi ćemo učiniti 233 00:10:44,520 --> 00:10:48,460 King James Biblije, a ovdje mi ići. 234 00:10:48,460 --> 00:10:51,080 >> Dakle, to su sve navodno pogrešno napisane riječi iz 235 00:10:51,080 --> 00:10:52,240 King James Bible. 236 00:10:52,240 --> 00:10:55,560 I moja je provedba pola sekunde ukupno. 237 00:10:55,560 --> 00:10:58,270 Dakle, nije loše o tome Posebno računalo. 238 00:10:58,270 --> 00:11:01,540 Ali mislim o tome koliko koda sam morao napisati. 239 00:11:01,540 --> 00:11:02,880 Razmislite koliko je kod vas morao napisati. 240 00:11:02,880 --> 00:11:06,170 Razmislite koliko sati ste proveli u D-dvorana ili vaša spavaonica ili gdje god 241 00:11:06,170 --> 00:11:07,890 zapravo kodiranje se da je rješenje. 242 00:11:07,890 --> 00:11:11,850 >> Pa, ako sam zapravo imaju višu razinu jezik poput PHP, uzeti na znanje 243 00:11:11,850 --> 00:11:13,350 ono što ja mogu učiniti ovdje. 244 00:11:13,350 --> 00:11:16,410 Prvo, pretpostavimo da je to umjesto distribucija koda. 245 00:11:16,410 --> 00:11:17,790 To je spis pod nazivom bukvar. 246 00:11:17,790 --> 00:11:20,220 To je dostupan kao dio današnjih Raspodjela code. 247 00:11:20,220 --> 00:11:22,670 A ja ću mahati ruku na većini pojedinosti, ali to je zapravo 248 00:11:22,670 --> 00:11:25,500 Zanimljiv je primjer kako možda luka jezik 249 00:11:25,500 --> 00:11:28,870 kao C preko za PHP. 250 00:11:28,870 --> 00:11:33,420 Doslovno sam otvorio dvije tekstualne prozore, jedan s mojim C verziji speller.c, 251 00:11:33,420 --> 00:11:36,960 a ja tek počeo prevodeći ga u mom glavu na PHP i tipkanje pomoću 252 00:11:36,960 --> 00:11:38,840 najbliži ekvivalent funkcije. 253 00:11:38,840 --> 00:11:40,100 >> Dakle, neke od tih stvari su drugačije. 254 00:11:40,100 --> 00:11:43,730 Vidjeli smo posljednji put da PHP ne koristi uključiti u sasvim isti način. 255 00:11:43,730 --> 00:11:47,050 Ona koristi zahtijevaju obično, iako su zaista postoji. 256 00:11:47,050 --> 00:11:50,330 Definirajte je malo drugačiji od # Define u C, ali to je 257 00:11:50,330 --> 00:11:51,890 Kako ćemo napraviti konstantu. 258 00:11:51,890 --> 00:11:55,860 $ Argc ispada postoji u PHP-u, pa vidjeli smo to i prije. 259 00:11:55,860 --> 00:11:58,650 Ovo su samo varijable, svi koje počinju s znakove dolara. 260 00:11:58,650 --> 00:12:00,590 Sjetite se to su samo hrpa lebdenja bodova. 261 00:12:00,590 --> 00:12:03,970 >> Dakle, ne duljimo, na čemu se prođite kroz to, ako znatiželjni, ovo je 262 00:12:03,970 --> 00:12:10,010 Gotovo linija-za-line pretvorba C verzija speller.c u PHP-u. 263 00:12:10,010 --> 00:12:12,630 A što bi to ponoviti za pola tuceta drugih jezika. 264 00:12:12,630 --> 00:12:14,910 >> No, ono što je zanimljivo je to. 265 00:12:14,910 --> 00:12:16,910 Ili ono što je iskreno obeshrabrujuće je to. 266 00:12:16,910 --> 00:12:20,790 Pustite me da idem naprijed i upisati about dictionary.php, i tvrdnja da sam 267 00:12:20,790 --> 00:12:23,670 ići naprijed i ponovno provesti Problem postaviti šest ovdje. 268 00:12:23,670 --> 00:12:27,530 >> Dakle, neka prvi predložio da se u to file, koji će se provoditi u 269 00:12:27,530 --> 00:12:30,550 PHP, pa neka mi otvoriti moje oznake kao što je to. 270 00:12:30,550 --> 00:12:34,780 Dopustite mi da se daju globalni varijabla, veličina $ dobiva nulu. 271 00:12:34,780 --> 00:12:36,710 I ja ću dati Osobno hash tablicu. 272 00:12:36,710 --> 00:12:38,110 Ja ću koristiti hash tablicu za tu stvar. 273 00:12:38,110 --> 00:12:42,070 Kako mogu proglasiti hash tablice u PHP-u? 274 00:12:42,070 --> 00:12:42,990 Gotovo. 275 00:12:42,990 --> 00:12:43,980 OK. 276 00:12:43,980 --> 00:12:48,870 >> Tako otvorena zagrada u neposrednoj blizini zagrada predstavlja ono što je u PHP-u, kao što smo vidjeli? 277 00:12:48,870 --> 00:12:51,850 Niz, ali niz koji bi biti asocijativni niz. 278 00:12:51,850 --> 00:12:54,320 Asocijativno polje je struktura podataka koja 279 00:12:54,320 --> 00:12:55,860 suradnika tipke sa vrijednostima. 280 00:12:55,860 --> 00:12:59,430 >> Sada u najjednostavniji brojčano indeksirana polje, te tipke su ono? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 Nula, jedan, dva, tri, zar ne? 283 00:13:03,960 --> 00:13:08,780 Stara škola stvari natrag iz C. No, to može također biti nizovi poput Foo, i bara, 284 00:13:08,780 --> 00:13:12,210 ili Maxwell, ili bilo koji takav niz. 285 00:13:12,210 --> 00:13:14,240 Dakle, ja mogu utjecati da u samo nekoliko trenutaka. 286 00:13:14,240 --> 00:13:17,550 >> Dopustite mi da ide naprijed i proglasiti funkcija kao što su - 287 00:13:17,550 --> 00:13:19,020 neka je to opterećenje (prvo). 288 00:13:19,020 --> 00:13:20,690 Dakle funkcija opterećenja (). 289 00:13:20,690 --> 00:13:23,440 I PHP je malo drugačija u tome doslovno upišete funkciju, ali 290 00:13:23,440 --> 00:13:24,930 ne upisati povratnu vrstu. 291 00:13:24,930 --> 00:13:28,760 Ja ću ići naprijed i reći da load () funkcija treba uzeti u 292 00:13:28,760 --> 00:13:31,000 Argument $ rječnik, samo kao što je C verzija učinio. 293 00:13:31,000 --> 00:13:32,510 Radim to iz memorije. 294 00:13:32,510 --> 00:13:34,910 >> A ja predlažem da sam će to učiniti. 295 00:13:34,910 --> 00:13:37,080 Ja sam jednostavno učiniti foreach. 296 00:13:37,080 --> 00:13:40,710 Ja ću pozvati funkciju nazvanu datoteku (), prolazi u ime koje 297 00:13:40,710 --> 00:13:44,990 podnijeti, što je promjenjiva $ Rječnik kao $ riječ. 298 00:13:44,990 --> 00:13:49,410 A onda je unutar moja za petlje ovdje, ja sam ići naprijed i pohraniti u mom 299 00:13:49,410 --> 00:13:57,440 $ $ Tablica koja se pročuje istina. 300 00:13:57,440 --> 00:13:57,918 Gotovo. 301 00:13:57,918 --> 00:14:01,264 Oh, čekaj. 302 00:14:01,264 --> 00:14:02,422 Gotovo. 303 00:14:02,422 --> 00:14:02,760 OK. 304 00:14:02,760 --> 00:14:04,970 >> To je opterećenje () funkcija kažu u PHP-u. 305 00:14:04,970 --> 00:14:05,865 Sada, zašto to rade? 306 00:14:05,865 --> 00:14:07,010 I ja sam vrsta varanja ovdje. 307 00:14:07,010 --> 00:14:09,980 >> Dakle, jedan, foreach smo vidjeli Kratko zadnji put. 308 00:14:09,980 --> 00:14:13,680 To samo znači da se može ponoviti više Niz bez gnjavi s i 309 00:14:13,680 --> 00:14:16,150 i n i plus plus, i sve to. 310 00:14:16,150 --> 00:14:21,350 Rječnik je, naravno, ime datoteke, nešto kao veliki ili mali, dva 311 00:14:21,350 --> 00:14:22,830 rječnici koriste smo posljednji put. 312 00:14:22,830 --> 00:14:26,715 Datoteka je funkcija koja otvara tekst file, navodi se u red po red, i 313 00:14:26,715 --> 00:14:29,840 Ruke te natrag veliki niz, svaki od elemenata čija je je 314 00:14:29,840 --> 00:14:31,340 linija iz tog spisa. 315 00:14:31,340 --> 00:14:36,040 Dakle, to je kombinacija fopen, a fread, a while petlja, a fclose, 316 00:14:36,040 --> 00:14:37,080 i sve to. 317 00:14:37,080 --> 00:14:40,150 Konačno, što je riječ samo znači da je promjenjiva ću imati pristup 318 00:14:40,150 --> 00:14:41,890 na svakoj iteraciji u ovoj petlji. 319 00:14:41,890 --> 00:14:46,910 >> Dakle, ukratko, to je jedan brod ovdje znači otvoriti datoteku čije ime je u 320 00:14:46,910 --> 00:14:50,750 rječnik, promjenjiva, ponoviti tijekom to redak po redak, a svaki put kada se 321 00:14:50,750 --> 00:14:54,290 linija, pohraniti u varijablu riječi, a zatim učinite nešto s riječju. 322 00:14:54,290 --> 00:14:55,280 Što želim učiniti? 323 00:14:55,280 --> 00:14:58,110 Želim staviti riječi u moj hash tablicu. 324 00:14:58,110 --> 00:15:00,860 >> Pa, ja mogu staviti nešto u mom hash tablicu kao u C 325 00:15:00,860 --> 00:15:02,140 uglatoj zagradi. 326 00:15:02,140 --> 00:15:03,660 To je naziv za moj hash tablicu. 327 00:15:03,660 --> 00:15:07,180 Idem indeks u tom mljeveno meso Tablica na ovoj lokaciji. 328 00:15:07,180 --> 00:15:08,920 Dakle, ne zagrada nula, ne zagrada jedan. 329 00:15:08,920 --> 00:15:11,990 Nosač quote završiti citat nešto, što god ta riječ. 330 00:15:11,990 --> 00:15:15,200 I baš kao što bi mogli imati u svom hash tablicu rad trie, samo trgovina 331 00:15:15,200 --> 00:15:17,650 učinkovito Boolean, implicitno ili eksplicitno. 332 00:15:17,650 --> 00:15:18,260 Gotovo. 333 00:15:18,260 --> 00:15:20,000 Ja spremanje vrijednost true. 334 00:15:20,000 --> 00:15:23,150 >> Sada postoji nekoliko stvari Ja sam rezanje uglova ovdje. 335 00:15:23,150 --> 00:15:27,720 Tehnički, tamo će biti neugodno nova linija, / n, na kraju 336 00:15:27,720 --> 00:15:28,820 svaki od tih riječi. 337 00:15:28,820 --> 00:15:31,770 Tako sam vjerojatno trebao nazvati PHP funkciju zove kotlet (), koja će se 338 00:15:31,770 --> 00:15:33,460 doslovno nasjeckajte koji off. 339 00:15:33,460 --> 00:15:35,020 A ja zapravo trebaju napraviti jednu drugu stvar. 340 00:15:35,020 --> 00:15:38,380 Vjerojatno bih trebao povećavati veličinu na svakoj iteracija, pa sam praćenje 341 00:15:38,380 --> 00:15:39,560 na globalnoj razini što je to. 342 00:15:39,560 --> 00:15:43,180 I iskreno, a to je jedan od gluplje aspekti PHP, ako ste 343 00:15:43,180 --> 00:15:46,950 koristeći globalnu varijablu, trebate izričito reći da ste. 344 00:15:46,950 --> 00:15:51,670 Tako da ću se zapravo tip u globalnom $ Veličina, globalni $ stol, a sada 345 00:15:51,670 --> 00:15:52,690 moja je funkcija završena. 346 00:15:52,690 --> 00:15:57,475 >> Pa nije baš tako jednostavno kao i prije, ali Vjerojatno je manje vremena nego C 347 00:15:57,475 --> 00:15:58,220 verzija, možda? 348 00:15:58,220 --> 00:15:58,730 OK. 349 00:15:58,730 --> 00:16:00,390 >> Dakle, sada ćemo napraviti ček () funkciju. 350 00:16:00,390 --> 00:16:04,300 Da vidimo je li to barem uzeo sati na kraju da nas je odveo u C. Dakle 351 00:16:04,300 --> 00:16:06,500 neka mi ići naprijed i proglasiti provjeriti kao funkcija. 352 00:16:06,500 --> 00:16:09,070 Uzeti u argument riječi, što je će doći iz Speller. 353 00:16:09,070 --> 00:16:13,410 A ja sam samo ide da biste provjerili Sljedeća varijabla isset, stolni 354 00:16:13,410 --> 00:16:18,400 Nosač strtolower riječi - 355 00:16:18,400 --> 00:16:20,590 neka je ravnotežu sve moje zagradi - 356 00:16:20,590 --> 00:16:24,275 zatim se vratiti točno. 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 Drugo - 359 00:16:28,460 --> 00:16:30,330 to je zapravo bilo teško dio ovog programa. 360 00:16:30,330 --> 00:16:31,940 Drugo, vrati false. 361 00:16:31,940 --> 00:16:32,630 Gotovo. 362 00:16:32,630 --> 00:16:33,460 To je provjera (). 363 00:16:33,460 --> 00:16:34,520 >> Sada, zašto to rade? 364 00:16:34,520 --> 00:16:37,040 Pa, jedan prošao sam u riječi, što je niz. 365 00:16:37,040 --> 00:16:41,400 Dvije, da provjeravam unutar mljeveno meso stol, koji se zove $ stol. 366 00:16:41,400 --> 00:16:45,470 Ja sam ga tjeraju u mala slova pozivom funkcija vrlo slični tolower () u 367 00:16:45,470 --> 00:16:48,580 C, ali to ne cijelu riječ, Ne jedan znak. 368 00:16:48,580 --> 00:16:52,680 A ako je to postavljeno, drugim riječima postoji vrijednost je postavljena, odnosno 369 00:16:52,680 --> 00:16:54,880 ako je to točno, onda da, to je riječ. 370 00:16:54,880 --> 00:16:56,530 Zato sam ga stavio tamo s opterećenjem (). 371 00:16:56,530 --> 00:16:59,100 A ako ne, ja ću se vratiti false. 372 00:16:59,100 --> 00:17:00,090 >> Sada su ostali jednostavno. 373 00:17:00,090 --> 00:17:03,570 Veličina Funkcija (), kako mogu to učiniti? 374 00:17:03,570 --> 00:17:05,230 Ja u biti to povratak $ veličinu. 375 00:17:05,230 --> 00:17:07,770 Ali ja tehnički trebaju učiniti ovu neugodnu stvar. 376 00:17:07,770 --> 00:17:10,640 A zapravo se čuje, sam rezao jedan kutak previše. 377 00:17:10,640 --> 00:17:12,920 Ja stvarno trebate učiniti globalno $ stol. 378 00:17:12,920 --> 00:17:16,260 >> No, to se, rekao je, iskrcati). 379 00:17:16,260 --> 00:17:17,380 Pražnjenje () je nevjerojatna. 380 00:17:17,380 --> 00:17:20,500 Funkcija prebacivanja (). 381 00:17:20,500 --> 00:17:23,990 Kako želim provesti iskrcati ()? 382 00:17:23,990 --> 00:17:25,079 Gotovo. 383 00:17:25,079 --> 00:17:25,450 OK. 384 00:17:25,450 --> 00:17:28,900 >> Dakle rasteretiti (), upravljanje memorijom je u potpunosti brine za vas u 385 00:17:28,900 --> 00:17:31,800 nešto poput PHP i puno od više razine jezika. 386 00:17:31,800 --> 00:17:32,600 Dakle, ovo je nevjerojatno. 387 00:17:32,600 --> 00:17:36,080 Kao i zašto dovraga smo proveli prošlost Osam plus tjedna na C pisanja 388 00:17:36,080 --> 00:17:41,030 očito jako sporo, doista vrijeme konzumiranje problemi s desecima sati 389 00:17:41,030 --> 00:17:42,530 rada pod pojasevi? 390 00:17:42,530 --> 00:17:46,110 >> Pa, kao prvo, to može raditi u redu za male programe. 391 00:17:46,110 --> 00:17:47,840 To svakako ubrzala moj vrijeme razvoja. 392 00:17:47,840 --> 00:17:49,790 No, da vidimo što će se dogoditi u stvarnom svijetu. 393 00:17:49,790 --> 00:17:52,370 >> Pusti me u ovaj imenik u prozor terminala. 394 00:17:52,370 --> 00:17:53,370 Tu je bukvar. 395 00:17:53,370 --> 00:17:56,570 I primijetiti kako je u stranu, a možda naišli ovo u problemu postaviti 396 00:17:56,570 --> 00:17:58,190 šest ili sedam set problema. 397 00:17:58,190 --> 00:18:01,610 Vi ne striktno moraju završiti PHP datoteke s nastavcima. php. 398 00:18:01,610 --> 00:18:05,250 Ako ste stavili liniju kao onaj prvi na samog vrha, to je posebna linija 399 00:18:05,250 --> 00:18:10,980 sintakse koja u osnovi znači pronaći Program se zove PHP i koristiti ga 400 00:18:10,980 --> 00:18:12,270 interpretirati ovu sliku. 401 00:18:12,270 --> 00:18:15,410 Tako da sada nitko ne zna kako Ja sam trčanje PHP programa. 402 00:18:15,410 --> 00:18:19,860 Mogu ga pokrenuti baš kao da je bili nešto sastavio u C. 403 00:18:19,860 --> 00:18:20,650 >> No, ovdje je stvar. 404 00:18:20,650 --> 00:18:21,600 Zapravo, hajdemo to učiniti opet. 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /. 406 00:18:23,530 --> 00:18:25,390 Tu je bukvar. 407 00:18:25,390 --> 00:18:26,720 OK, 0.44 sekundi. 408 00:18:26,720 --> 00:18:28,080 On je dobio brže ovaj put. 409 00:18:28,080 --> 00:18:29,745 >> Sada idemo u PHP verziji. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 Nice touch. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 No, samo mislim kako je puno vremena Spasio sam na radno vrijeme. 414 00:18:53,285 --> 00:18:56,990 415 00:18:56,990 --> 00:18:57,790 OK. 416 00:18:57,790 --> 00:19:01,020 >> Dakle 3.59 sekundi, što je zapravo ne zvuči točno bilo. 417 00:19:01,020 --> 00:19:03,710 Ali to je zato što ne duljimo, kada ste ispis ogroman 418 00:19:03,710 --> 00:19:06,840 stvari na ekran, da Sama usporava stvari dolje. 419 00:19:06,840 --> 00:19:11,260 Ono što je stvarno je CPU u Uređaj je 3,59 sekundi, u 420 00:19:11,260 --> 00:19:15,260 kontrast na C, koja je 0,44 sekunde nedavno. 421 00:19:15,260 --> 00:19:17,620 To je doista redoslijed Magnituda drugačije. 422 00:19:17,620 --> 00:19:20,280 >> Pa gdje je ta cijena dolazi? 423 00:19:20,280 --> 00:19:21,790 Zašto je to tako puno sporije? 424 00:19:21,790 --> 00:19:24,220 Zašto PHP izvesti tako loše? 425 00:19:24,220 --> 00:19:25,242 Danielle? 426 00:19:25,242 --> 00:19:26,550 >> PUBLIKA: Vi zapravo nije koristiti hash tablicu. 427 00:19:26,550 --> 00:19:27,710 >> DAVID Malan: Nisam stvarno koristiti hash tablicu. 428 00:19:27,710 --> 00:19:28,760 Tako nekako sam učinio. 429 00:19:28,760 --> 00:19:29,870 Tako da je asocijativni niz. 430 00:19:29,870 --> 00:19:33,650 Najvjerojatnije, ako su ljudi na PHP su jako pametno, oni koriste ispod 431 00:19:33,650 --> 00:19:39,520 napa stvarna hash tablicu provodi u nešto poput C ili C + +. 432 00:19:39,520 --> 00:19:41,290 No. 433 00:19:41,290 --> 00:19:42,760 Da. 434 00:19:42,760 --> 00:19:44,010 >> PUBLIKA: [nečujan]. 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> DAVID Malan: Da. 437 00:19:47,080 --> 00:19:50,780 Dakle, svaka od funkcija sada sam napisao - Zapravo, može li se reći da još jednom 438 00:19:50,780 --> 00:19:51,480 malo glasnije? 439 00:19:51,480 --> 00:19:54,509 >> Ivanković: Svaka od funkcija koje ste uključeni ima puno više puna 440 00:19:54,509 --> 00:19:56,610 kapacitet od - 441 00:19:56,610 --> 00:19:57,550 >> DAVID Malan: Dakle, to je vrlo istinito. 442 00:19:57,550 --> 00:20:01,490 Tu je puno više iznad glave da smo Stvarno ne vidim fokusirajući se samo na 443 00:20:01,490 --> 00:20:03,730 dictionary.php, što sam upravo napisao. 444 00:20:03,730 --> 00:20:08,020 Za razliku od toga, tu je cijeli tumač ide u pozadini. 445 00:20:08,020 --> 00:20:12,040 Doista, kad sam vodio ovaj program, to nije bio pokrenut sastaviti jedinica i nula 446 00:20:12,040 --> 00:20:14,290 dizajniran za moj Intel procesora. 447 00:20:14,290 --> 00:20:19,270 Umjesto toga, on je trčao redak po redak PHP kod koji izgleda baš 448 00:20:19,270 --> 00:20:20,350 kao što smo ga upisali. 449 00:20:20,350 --> 00:20:22,475 I tako svaki put kada koristite tumačiti jezik, što 450 00:20:22,475 --> 00:20:23,850 zapravo plaćaju tu cijenu. 451 00:20:23,850 --> 00:20:27,010 To će potrajati neko vrijeme za čitanje Vaš sliku od vrha do dna, lijevo 452 00:20:27,010 --> 00:20:30,740 Pravo, a zatim izvršiti svaki linija opet i opet. 453 00:20:30,740 --> 00:20:34,250 >> Sada je u stvarnosti, pogotovo na webu, zapravo možete ubrzati ovaj postupak 454 00:20:34,250 --> 00:20:38,660 by caching rezultate PHP kod se interpretira. 455 00:20:38,660 --> 00:20:41,640 I to ima smisla na webu, jer Ako niste jedan korisnik kao 456 00:20:41,640 --> 00:20:46,300 ja ovdje, ali 1.000 ili 10.000 korisnika, a zatim možda prvi put da je datoteka 457 00:20:46,300 --> 00:20:49,050 pristupljeno je spor, ali su nakon toga to je puno brže. 458 00:20:49,050 --> 00:20:51,000 >> Ali ovo previše, opet, je trade off. 459 00:20:51,000 --> 00:20:53,870 A za nešto poput podacima istraživačke postaviti, ili čak nešto veliko poput 460 00:20:53,870 --> 00:20:58,330 to, korisnici će na kraju početi osjećati da usporavanje. 461 00:20:58,330 --> 00:21:02,670 >> Tako je u kratkom, tumači jezici su jako u modi, vrlo popularan, a 462 00:21:02,670 --> 00:21:06,710 iskreno, vjerojatno su ti jezici treba posegnuti za kada rješavanju problema 463 00:21:06,710 --> 00:21:08,200 nakon CS50. 464 00:21:08,200 --> 00:21:12,720 Ali shvatite koliko ste stvarno uzimanje zdravo za gotovo ispod haube 465 00:21:12,720 --> 00:21:15,910 stvarno ti posljednjih nekoliko tjedana u mljeveno meso tablice, i drveće, i napad, 466 00:21:15,910 --> 00:21:20,770 koji se koriste u konačnici zapravo provedbu stvari poput otvorenog zagrada, 467 00:21:20,770 --> 00:21:24,200 uglata zagrada, što sada možemo zahvalnošću uzimaju zdravo za gotovo. 468 00:21:24,200 --> 00:21:26,360 >> Tako ćemo pogledati sada u ovom web kontekstu. 469 00:21:26,360 --> 00:21:29,890 I sam spomenuo posljednji put da postoji hrpa superglobals u PHP da 470 00:21:29,890 --> 00:21:32,490 zapravo nisu relevantni na zapovjednoj liniji. 471 00:21:32,490 --> 00:21:36,210 Oni više relevantna u kontekstu korištenja PHP u web kontekstu. 472 00:21:36,210 --> 00:21:41,220 Dakle trčanje PHP na web poslužitelju kako bi generirati stvari kao HTML. 473 00:21:41,220 --> 00:21:44,540 >> I mi pogledala $ _GET i $ _POST, a to je mjesto gdje se automatski korisnik ' 474 00:21:44,540 --> 00:21:49,100 Ulaz završi jednostavno ako podnese formirati u datoteku koja završava u. php na webu 475 00:21:49,100 --> 00:21:50,460 poslužitelj poput aparata. 476 00:21:50,460 --> 00:21:53,310 Ali neka je kratko pogledati $ _COOKIE I $ _SESSION. 477 00:21:53,310 --> 00:21:56,670 >> Laički rečeno, ono što je kolačić kao što ga razumjeti u kontekstu 478 00:21:56,670 --> 00:21:58,220 korištenjem weba? 479 00:21:58,220 --> 00:21:59,450 >> PUBLIKA: File na računalu. 480 00:21:59,450 --> 00:21:59,920 >> DAVID Malan: Da. 481 00:21:59,920 --> 00:22:03,500 To je datoteka na korisnikovom računalu zasadio god web 482 00:22:03,500 --> 00:22:04,410 vam se dogoditi da posjetite. 483 00:22:04,410 --> 00:22:07,334 Dakle, kada idete na Facebooku, kada idete da bankofamerica.com, kada idete 484 00:22:07,334 --> 00:22:10,330 na google.com, kad idete u gotovo bilo Web stranica u svijetu ovih dana, 485 00:22:10,330 --> 00:22:14,850 uključujući cs50.net, kolačić je posađeno na računalu, što je 486 00:22:14,850 --> 00:22:19,800 ili vrijednost koja je pohranjena u RAM-u Računalo u memoriji vašeg preglednika, ili 487 00:22:19,800 --> 00:22:22,800 Ponekad doista datoteke pohranjene na tvrdom disku. 488 00:22:22,800 --> 00:22:26,960 >> I što je obično pohranjena u toj datoteci Nije svoje korisničko ime, a ne na 489 00:22:26,960 --> 00:22:31,060 lozinkom, obično nije nešto osjetljiva, osim web stranice nije tako 490 00:22:31,060 --> 00:22:35,040 dobro s njihove sigurnosti, već to je velika jedinstveni identifikator među 491 00:22:35,040 --> 00:22:35,680 druge stvari. 492 00:22:35,680 --> 00:22:38,920 To je veliki slučajni broj zasađena na vašem Računalo, ali možete misliti kako je 493 00:22:38,920 --> 00:22:42,740 svojevrsni virtualni ruku pečat kao iz klub ili neki zabavni park koji 494 00:22:42,740 --> 00:22:47,160 omogućuje osoblje, vlasnici koji usluga, kako bi se sjetiti tko ste. 495 00:22:47,160 --> 00:22:51,030 Dakle, ako je veliki slučajni broj je poput 12345678, iako to je očito 496 00:22:51,030 --> 00:22:54,180 ne previše slučajni, mislim da je kao Ruka pečat da prilikom posjete 497 00:22:54,180 --> 00:22:57,930 facebook.com po prvi put, da unište taj broj na ruci. 498 00:22:57,930 --> 00:23:01,510 I onda zato što govore HTTP, što se preglednik, a zbog Facebook 499 00:23:01,510 --> 00:23:06,440 očito govori isto kao webu poslužitelja, HTTP protokola kaže da 500 00:23:06,440 --> 00:23:09,930 kad god kasnije posjetiti facebook.com, bilo da je drugi 501 00:23:09,930 --> 00:23:13,560 poslije, sat vremena kasnije, čak i sljedeći dan, tako dugo dok imate nije izričito 502 00:23:13,560 --> 00:23:17,050 odjavljen, koji učinkovito je kao pranje ruku. 503 00:23:17,050 --> 00:23:20,280 HTTP kaže da bi trebali predstaviti svoje Ruka žig svaki put kad 504 00:23:20,280 --> 00:23:22,020 vratite na tu web stranicu. 505 00:23:22,020 --> 00:23:24,390 >> Što Facebook tada se je da pogled na tu ruku i pečatom 506 00:23:24,390 --> 00:23:26,850 kažu, oh, 123456789. 507 00:23:26,850 --> 00:23:30,260 Ne znam na prvi pogled da je to David Malan u Cambridgeu, 508 00:23:30,260 --> 00:23:34,690 Massachusetts, ali oni mogu provjeriti svoje Baza podataka i reći, oh, osoba 509 00:23:34,690 --> 00:23:39,930 na čijem računalne smo posadili 123456789 David Malan od Cambridgea, 510 00:23:39,930 --> 00:23:40,440 Massachusetts. 511 00:23:40,440 --> 00:23:46,000 Pokažimo da korisniku onda mu profil stranica ili njegov News Feed. 512 00:23:46,000 --> 00:23:49,660 >> No, tu je problem ako je to je kako je web zapravo radi. 513 00:23:49,660 --> 00:23:51,390 Uzmimo pogled na brzi primjer. 514 00:23:51,390 --> 00:23:55,190 Idemo zapravo ići reći facebook.com. 515 00:23:55,190 --> 00:23:58,130 No, prije nego što smo mogli ići tamo, neka ja ići naprijed i otvoriti Chrome-a 516 00:23:58,130 --> 00:23:59,790 Inspektor ovdje. 517 00:23:59,790 --> 00:24:01,140 Dopustite mi pogledati karticu mreže. 518 00:24:01,140 --> 00:24:06,020 A sada idemo naprijed i upisati u https://facebook.com. 519 00:24:06,020 --> 00:24:09,410 I radim to tako da ne vidimo sve te preusmjeravanja i otpada 520 00:24:09,410 --> 00:24:10,660 Vrijeme gleda kroz njih. 521 00:24:10,660 --> 00:24:12,690 Dopustite mi pogodak ulaziti. 522 00:24:12,690 --> 00:24:13,130 >> U redu. 523 00:24:13,130 --> 00:24:14,580 Vidimo hrpu zahtjeva. 524 00:24:14,580 --> 00:24:15,640 Tu dolazi Facebook. 525 00:24:15,640 --> 00:24:16,930 Postoji cijela hrpa datoteka. 526 00:24:16,930 --> 00:24:19,290 I ovdje, po mom spomena latencija zadnji put, to je 527 00:24:19,290 --> 00:24:21,240 Mnogo HTTP zahtjeva. 528 00:24:21,240 --> 00:24:23,700 No, prvi je vjerojatno najzanimljiviji. 529 00:24:23,700 --> 00:24:26,420 >> Tako ćemo dođite ovamo, i Ja ću zumirati u sekundi. 530 00:24:26,420 --> 00:24:29,090 To će biti neka vrsta nered, ali vidjet ćemo. 531 00:24:29,090 --> 00:24:31,660 Facebook je nam šaljete cijela hrpa stvari. 532 00:24:31,660 --> 00:24:33,490 >> Ali, hej, zanimljivo. 533 00:24:33,490 --> 00:24:37,880 Oni sadnju ne jedan, nego četiri ruku pečata na mojoj ruci ovdje. 534 00:24:37,880 --> 00:24:40,400 Set-Cookie, Set-Cookie, set-cookie, set-kolačić. 535 00:24:40,400 --> 00:24:44,030 I postoji nekoliko mogućnosti ovdje. 536 00:24:44,030 --> 00:24:46,170 Svi oni spomenuti neke vrsta isteka. 537 00:24:46,170 --> 00:24:50,090 I izgleda da Facebook se nada da me se do 2015. 538 00:24:50,090 --> 00:24:53,670 Dakle, to je vjerojatno put kojim Moram se odjaviti ili će jednostavno 539 00:24:53,670 --> 00:24:55,710 automatski pretpostavljaju da sam ne vraća. 540 00:24:55,710 --> 00:24:57,840 Dakle, to je zapravo pristojan Količina vremena. 541 00:24:57,840 --> 00:24:59,170 >> A tu su i neki drugi stvari koje se ovdje događa. 542 00:24:59,170 --> 00:25:03,036 Ovaj kolačić se čini prisilno brišu rekavši je istekao 1970 543 00:25:03,036 --> 00:25:04,460 Prije kolačiće postojala. 544 00:25:04,460 --> 00:25:06,510 Dakle browser samo ide pretpostaviti OK, to je kao 545 00:25:06,510 --> 00:25:07,910 pranje ruku pečat. 546 00:25:07,910 --> 00:25:11,240 >> No, sada kad je moj browser čini Sljedeći upit - 547 00:25:11,240 --> 00:25:14,340 neka mi ići naprijed i učiniti opet i reload. 548 00:25:14,340 --> 00:25:18,170 Sad neka mi dođite natrag top zahtjev i silaze 549 00:25:18,170 --> 00:25:20,760 Ovdje, zatražiti zaglavlja. 550 00:25:20,760 --> 00:25:21,390 Primijetiti. 551 00:25:21,390 --> 00:25:25,280 Sada sam pod ne zaglavlja odgovora, ali primijetiti da kaže zaglavlja zahtjeva. 552 00:25:25,280 --> 00:25:29,220 I primjetite da se moj browser kao dio njegov zahtjev nakon udarca reload ima 553 00:25:29,220 --> 00:25:32,780 poslala najmanje sljedeće informacije. 554 00:25:32,780 --> 00:25:34,670 Ne set-cookie, ali kolačić. 555 00:25:34,670 --> 00:25:38,750 Dakle, ovo je linija, HTTP zaglavlja, tako govoriti, gdje je moj browser je vrsta 556 00:25:38,750 --> 00:25:43,340 je bez mog znanja što prezentiranja moja ruka za Facebook inspekcije. 557 00:25:43,340 --> 00:25:46,020 >> Tako su ti kolačići mogu biti koristi onda što? 558 00:25:46,020 --> 00:25:49,420 Da bi se sjetiti tko ste, ili se ne sjećaju kako je mnogo puta sam bio tamo, ili 559 00:25:49,420 --> 00:25:50,280 stvarno ništa. 560 00:25:50,280 --> 00:25:52,742 >> Dakle, ovdje je counter.php. 561 00:25:52,742 --> 00:25:53,780 I neka mi povećavanje fonta. 562 00:25:53,780 --> 00:25:58,380 I svaki put sam ponovno odaberete ovu stranicu, obavijest to je prisjećajući se koliko puta 563 00:25:58,380 --> 00:25:59,250 Ja sam bio tamo. 564 00:25:59,250 --> 00:26:00,570 Pa, to nije sve što je impresivno. 565 00:26:00,570 --> 00:26:03,140 Ajmo zatvoriti tu karticu, a sad idemo natrag 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php. 567 00:26:07,860 --> 00:26:08,970 >> Oh, to je zanimljivo. 568 00:26:08,970 --> 00:26:10,960 Ona još uvijek pamti, pa čak i iako sam zatvorila karticu. 569 00:26:10,960 --> 00:26:14,010 I iskreno, ako zatvorite preglednik, ako se provodi na pravi način, ja 570 00:26:14,010 --> 00:26:18,950 mogao se još uvijek sjećaju kada je ovaj korisnik tko je on ili ona je prvi put, a 571 00:26:18,950 --> 00:26:22,840 samo jednom sam ići u izborniku Chrome, koji ovdje je ovdje, i idite na 572 00:26:22,840 --> 00:26:25,990 Povijest i kliknite Obriši podatke, kao što neki od vas svibanj imati u 573 00:26:25,990 --> 00:26:33,050 prošlosti, tek tada će vaše kolačiće zapravo će izbrisani tijekom webu 574 00:26:33,050 --> 00:26:33,970 razvoj. 575 00:26:33,970 --> 00:26:35,340 >> Dakle, ako ćemo ići - 576 00:26:35,340 --> 00:26:37,080 neka je izbliza gedit ovdje. 577 00:26:37,080 --> 00:26:38,910 A ako idemo sada na ovu datoteku. 578 00:26:38,910 --> 00:26:44,210 Pusti me u našu vhosts / localhost / javno, i neka mi to 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 Uočite da je ovo prilično jednostavan program. 581 00:26:48,350 --> 00:26:50,250 To je prilično jednostavan web stranice. 582 00:26:50,250 --> 00:26:51,770 >> Dakle vrhu datoteke je samo komentari. 583 00:26:51,770 --> 00:26:54,930 No, ovdje je nova linija koje ste svibanj Vidio je već u p-set sedam, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 To je linija PHP koda koji suštini govori web poslužitelj, provjerite 586 00:27:00,380 --> 00:27:03,400 sigurni da unište ruke i napraviti pročitajte ruke markice. 587 00:27:03,400 --> 00:27:06,810 To je sve što je linija radi, i to čini sve da proces za nas. 588 00:27:06,810 --> 00:27:09,510 Zatim primijetite Upravo sam dobio dvije grane ovdje. 589 00:27:09,510 --> 00:27:14,150 Ako brojač ključ unutar toga posebna globalna varijabla zove 590 00:27:14,150 --> 00:27:18,010 $ _SESSION Postavljen - drugim riječima, ako ima neke vrijednosti postoji - 591 00:27:18,010 --> 00:27:22,440 uzmimo je i pohraniti ga u lokalnu varijabla zove $ brojač. 592 00:27:22,440 --> 00:27:27,000 Inače, neka je dodijeliti $ brojač Zadana vrijednost je 0. 593 00:27:27,000 --> 00:27:30,320 >> Sada ovdje je jedan aspekt PHP koji je i blagoslov i prokletstvo. 594 00:27:30,320 --> 00:27:32,080 PHP je malo neuredan. 595 00:27:32,080 --> 00:27:35,160 Dakle, dok je u C, što bi Opseg pulta bili 596 00:27:35,160 --> 00:27:36,725 bilo ovdje ili ovdje? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> To bi bila ograničena onim vitičastim zagradama. 599 00:27:41,690 --> 00:27:42,090 Pogodite što? 600 00:27:42,090 --> 00:27:46,920 U PHP-u, ona postoji i izvan onih vitičastim zagradama, ovdje i ovdje, 601 00:27:46,920 --> 00:27:49,120 i ovdje, i ovdje, i ni dolje. 602 00:27:49,120 --> 00:27:52,400 Zato kažem to je blagoslov u smislu da ne morate razmišljati kao 603 00:27:52,400 --> 00:27:54,070 teško kao što smo učinili prije nekoliko tjedana. 604 00:27:54,070 --> 00:27:56,880 No, to je također malo prokletstvo u koje bez obzira na to gdje se koristiti varijablu u 605 00:27:56,880 --> 00:28:00,020 PHP, barem u programu kao što je ovaj, to je globalno dostupan za 606 00:28:00,020 --> 00:28:01,170 bolje ili na gore. 607 00:28:01,170 --> 00:28:06,130 Dakle, morate imati na umu da sada Vaši varijable ne mogu biti nedefiniran. 608 00:28:06,130 --> 00:28:07,640 Možda ste ih definirati i drugdje. 609 00:28:07,640 --> 00:28:09,460 >> No, ono što ću učiniti u konačnici? 610 00:28:09,460 --> 00:28:13,160 Idem za pohranu unutar koje globalna varijabla kao vrijednost 611 00:28:13,160 --> 00:28:17,060 Brojač utipkati rezultat radi brojač plus jedan. 612 00:28:17,060 --> 00:28:18,910 Dakle, ovo je samo aritmetička da ne 613 00:28:18,910 --> 00:28:20,590 incrementation od pulta. 614 00:28:20,590 --> 00:28:24,850 I činjenica da sam pohranjivanje da vrijednost natrag u ovdje je znači 615 00:28:24,850 --> 00:28:29,970 bitno ažurirati bazu podataka kako bi sjetite se da korisnik 123456789 je 616 00:28:29,970 --> 00:28:31,010 ovdje dva puta. 617 00:28:31,010 --> 00:28:33,780 I kad sam to učiniti opet sljedeći put ću ponovno učitati stranicu, to će provjeriti 618 00:28:33,780 --> 00:28:36,710 moja ruka pečat i reći, oh, Korisnik 123456789 ima sada 619 00:28:36,710 --> 00:28:38,410 bio ovdje tri puta. 620 00:28:38,410 --> 00:28:43,390 >> I što PHP i slično jezici rade za nas je da se figurica 621 00:28:43,390 --> 00:28:47,720 kako i gdje i na koliko dugo za spremanje vrijednosti u ovo posebno 622 00:28:47,720 --> 00:28:48,830 superglobal. 623 00:28:48,830 --> 00:28:52,750 A to superglobal sljedeći put ću posjetite stranice je vrsta magično 624 00:28:52,750 --> 00:28:57,440 pre-naseljena, popunjena s vrijednostima koje bili tamo posljednji put posjetila, 625 00:28:57,440 --> 00:29:02,310 je li to bio drugi prije tjedan Prije, ili u 2013, a mi sada pričamo 626 00:29:02,310 --> 00:29:03,790 o 2015. 627 00:29:03,790 --> 00:29:07,600 PHP i web poslužitelja brine za sve to za vas. 628 00:29:07,600 --> 00:29:08,850 >> PUBLIKA: [nečujno]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> DAVID Malan: varijable u PHP-u su suštini uvijek globalna ako vas 631 00:29:15,760 --> 00:29:18,400 ih proglasiti unutar funkciju, , a zatim su se lokalni 632 00:29:18,400 --> 00:29:19,420 Funkcija jedini. 633 00:29:19,420 --> 00:29:22,300 Ali zato sam nije zapisano bilo funkcija, oni su sada praktično 634 00:29:22,300 --> 00:29:25,090 Globalna tijekom cijele moje datoteke ovdje. 635 00:29:25,090 --> 00:29:26,040 >> PUBLIKA: Da li postoji način kako bi ih domaćini? 636 00:29:26,040 --> 00:29:28,470 >> DAVID Malan: Je li bilo način da ih lokalno? 637 00:29:28,470 --> 00:29:30,680 Samo ih umatanje u funkcijama. 638 00:29:30,680 --> 00:29:32,790 Koji je u najnovijoj verziji PHP, možete to učiniti s 639 00:29:32,790 --> 00:29:34,130 anonimni funkciju. 640 00:29:34,130 --> 00:29:35,930 , Ali više o tome u kontekst JavaScript. 641 00:29:35,930 --> 00:29:37,260 No, kratki odgovor je ne. 642 00:29:37,260 --> 00:29:40,888 Duži odgovor je potvrdan. 643 00:29:40,888 --> 00:29:42,380 Nica. 644 00:29:42,380 --> 00:29:43,380 Dobro kviz pitanje. 645 00:29:43,380 --> 00:29:43,930 U redu. 646 00:29:43,930 --> 00:29:47,760 >> Dakle, na kraju, sama stranica je zapravo prilično jednostavan. 647 00:29:47,760 --> 00:29:51,470 Obavijest da je jednom sam izlaz iz PHP način, prisjetiti da sve ove stvari dolje 648 00:29:51,470 --> 00:29:53,700 u nastavku je samo ide da biste dobili pljuvačku iz sirovog u pregledniku. 649 00:29:53,700 --> 00:29:57,050 Koji je u redu, jer ne želim poslati Korisnik neke HTML, ali ja ne želim 650 00:29:57,050 --> 00:29:59,140 se dinamički ažurirati HTML tu. 651 00:29:59,140 --> 00:30:03,930 A jedan od načina da mogu to učiniti je riješiti vrlo brzo pasti natrag u PHP-u 652 00:30:03,930 --> 00:30:07,730 Način, koristite otvorena zagrada upitnikom znak jednakosti, a zatim vrijednost izlaza 653 00:30:07,730 --> 00:30:08,650 od pulta. 654 00:30:08,650 --> 00:30:12,360 >> Ili, ako to izgleda pomalo zagonetan, ovaj znak jednakosti je zapravo samo neke 655 00:30:12,360 --> 00:30:16,190 sintaktička šećera za to printf ($ counter). 656 00:30:16,190 --> 00:30:19,160 Ali iskreno, to je samo malo ružno i malo neugodno upisati. 657 00:30:19,160 --> 00:30:23,660 Dakle PHP vrlo lijepo nudi tu mogućnost gdje se samo mogu reći više 658 00:30:23,660 --> 00:30:25,450 sažeto na isti način. 659 00:30:25,450 --> 00:30:26,940 >> Dakle, ono što se dešava ispod napa? 660 00:30:26,940 --> 00:30:31,210 Idemo brzo pogledati na mreži Kartica ovdje counter.php. 661 00:30:31,210 --> 00:30:35,090 I neka mi ići naprijed i prvi put neka je izbrisali svoje kolačiće. 662 00:30:35,090 --> 00:30:38,670 Idemo Obriši podatke od početak vremena. 663 00:30:38,670 --> 00:30:39,680 Sada ćemo se vratiti ovamo. 664 00:30:39,680 --> 00:30:41,340 Sada ćemo se ponovno učitati stranicu. 665 00:30:41,340 --> 00:30:42,170 I ja sam se vratio na nulu. 666 00:30:42,170 --> 00:30:44,810 Budući da moja ruka marka je oprana, Ja sada dobiti novi kolačić. 667 00:30:44,810 --> 00:30:48,780 >> Doista, ako sam pogled na mrežnoj kartici, a pogledajte odgovor zaglavlja, primijetit 668 00:30:48,780 --> 00:30:51,960 da aparat me slanje Cookie čije ime je nešto 669 00:30:51,960 --> 00:30:55,820 samovoljno, već vrsta razumno, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 I to me slanje ovo stvarno Veliki slučajni broj. 671 00:30:58,440 --> 00:30:59,440 To nije dosta. 672 00:30:59,440 --> 00:31:00,390 To nije sasvim heksadecimalni. 673 00:31:00,390 --> 00:31:03,600 To je neka vrsta alfanumerički niz, ali vjerojatno je slučajna. 674 00:31:03,600 --> 00:31:06,830 I to je ruka pečat, tako da govore da sam se odnosi na. 675 00:31:06,830 --> 00:31:11,960 >> U međuvremenu, ako kliknem ponovno učitavanje, a zatim pogledajte ovaj drugi red za moj drugi 676 00:31:11,960 --> 00:31:17,600 Zahtjev, primijetite da je sada moj zahtjev zaglavlja su PHPSESSID jednaka ovo, 677 00:31:17,600 --> 00:31:19,390 Ne set-cookie, ali samo kolačića. 678 00:31:19,390 --> 00:31:22,950 I to je moj preglednik prezentacija moje ruke pečata. 679 00:31:22,950 --> 00:31:28,820 >> Tako sada kao teaser, a mi ćemo govoriti više o tome za tjedan dana ili tako, ali 680 00:31:28,820 --> 00:31:31,590 na koji način to napraviti od vas ranjiva, vaš Facebook račun 681 00:31:31,590 --> 00:31:34,137 ranjiva, kao i druge računi ranjivi? 682 00:31:34,137 --> 00:31:35,510 >> PUBLIKA: Ako netko ima svoj kolačić. 683 00:31:35,510 --> 00:31:36,750 >> DAVID Malan: Da, ako je netko ima svoj kolačić. 684 00:31:36,750 --> 00:31:39,920 Mislim stvarno, baš kao i neki od vas Možda su pokušali na poput klubu ili 685 00:31:39,920 --> 00:31:44,030 Zabavni park, ako pokušate nešto ovako kopirati pečat, doduše 686 00:31:44,030 --> 00:31:47,560 natrag na tuđe ruke, i onda on ili ona to predstavlja kao 687 00:31:47,560 --> 00:31:53,250 vlastitu, ako se to zapravo ne izgleda identični, 123456789, a zatim web 688 00:31:53,250 --> 00:31:57,980 poslužitelja očito je samo ide vjerujem da je taj korisnik je li. 689 00:31:57,980 --> 00:32:01,450 >> A to je doista temeljno Prijetnja svaki put kad koristimo kolačiće 690 00:32:01,450 --> 00:32:05,420 jer ako netko samo parodije, tako da Govorimo svoje cookie, figure out što 691 00:32:05,420 --> 00:32:08,660 je, bilo je doista da ga kopirate gledanjem na vašem računalu 692 00:32:08,660 --> 00:32:09,890 i da kao, u redu. 693 00:32:09,890 --> 00:32:14,520 Davidov Cookie je JJ3JIK i tako dalje, i onda su oni dovoljno pametan da zna 694 00:32:14,520 --> 00:32:18,080 kako sortirati od ručno poslati da Cookie u pregledniku ili iz 695 00:32:18,080 --> 00:32:22,350 Program oni pišu, oni bi potpuno prijavite u web stranice kao i vi. 696 00:32:22,350 --> 00:32:28,560 Nije da je teško pretvarati se da netko drugi, osim ako smo ponovno p-set 697 00:32:28,560 --> 00:32:30,790 dvojica, koji je uveo što? 698 00:32:30,790 --> 00:32:32,065 >> PUBLIKA: Kriptografija. 699 00:32:32,065 --> 00:32:33,860 >> DAVID Malan: Malo Malo kriptografije. 700 00:32:33,860 --> 00:32:36,550 Jednostavan kriptografije, barem u Standard Edition, ali kripto 701 00:32:36,550 --> 00:32:36,870 svejedno. 702 00:32:36,870 --> 00:32:37,410 manje. 703 00:32:37,410 --> 00:32:41,440 Tako ispada ako šifriranje sve ove zaglavlja koriste nešto što 704 00:32:41,440 --> 00:32:48,770 Možda sada znamo više familijarno kao SSL, secure socket layer, ili https URL-ova, 705 00:32:48,770 --> 00:32:51,890 onda sve ove stvari koje smo bili Bacimo li pogled zapravo su šifrirani, 706 00:32:51,890 --> 00:32:54,800 što znači da je kao ti Ne mogu pročitati pečat ruku. 707 00:32:54,800 --> 00:32:59,350 Samo facebook.com mogu, ili google.com, ili u ovom slučaju, uređaj može 708 00:32:59,350 --> 00:33:00,550 pročitao taj pečat ruku. 709 00:33:00,550 --> 00:33:04,020 >> Tragično ipak, i opet, ovo je predobro potrebi s NSA stvari 710 00:33:04,020 --> 00:33:06,410 u posljednje vrijeme, čak i SSL je lomljiva. 711 00:33:06,410 --> 00:33:09,850 I to je zapravo nije tako teško čak i ispucati taj enkripciju. 712 00:33:09,850 --> 00:33:12,040 Nije toliko pucanja enkripciju, ali tricking 713 00:33:12,040 --> 00:33:15,720 preglednik u dekriptiranje podatke preuranjeno. 714 00:33:15,720 --> 00:33:17,880 Ali opet, mi ćemo vas zafrkavati s tim ne zadugo. 715 00:33:17,880 --> 00:33:21,242 Za sada, samo se bojati. 716 00:33:21,242 --> 00:33:23,070 To je tragično vrsta istina. 717 00:33:23,070 --> 00:33:23,760 >> U redu. 718 00:33:23,760 --> 00:33:27,910 Dakle, gdje se ovaj sada nam preostaje? 719 00:33:27,910 --> 00:33:29,010 Pa, neka je to učiniti. 720 00:33:29,010 --> 00:33:31,790 Idemo naprijed i uzeti brzi teaser prije nego što smo se odmoriti. 721 00:33:31,790 --> 00:33:33,790 I mislim da ćemo ostati malo duže danas, ali ćemo zaroniti u 722 00:33:33,790 --> 00:33:37,850 nešto potpuno novo i seksi, što će oštriti apetit za još više. 723 00:33:37,850 --> 00:33:38,950 Dakle, to je teaser. 724 00:33:38,950 --> 00:33:41,520 >> Dakle, SQL, počeli smo govoriti o uvijek je tako nakratko posljednji put. 725 00:33:41,520 --> 00:33:44,670 Stvarno ćete dobiti vaše ruke prljave s nekim od njega u p-set sedam. 726 00:33:44,670 --> 00:33:46,480 I u laik uvjete, što se SQL - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 učiniti za vas? 729 00:33:49,850 --> 00:33:50,310 Što je to? 730 00:33:50,310 --> 00:33:51,546 Da. 731 00:33:51,546 --> 00:33:53,240 >> PUBLIKA: Idemo li pristupiti podacima. 732 00:33:53,240 --> 00:33:53,360 >> DAVID Malan: Da. 733 00:33:53,360 --> 00:33:55,120 To neka je pristup podacima u bazi podataka. 734 00:33:55,120 --> 00:33:56,710 Ustrojeni upitni jezik. 735 00:33:56,710 --> 00:33:59,890 A to je u biti programskom jeziku. 736 00:33:59,890 --> 00:34:03,400 Postoje mogućnosti za to da nismo ni koristiti u razredu. 737 00:34:03,400 --> 00:34:04,710 No, možete učinkovito definirati funkcije. 738 00:34:04,710 --> 00:34:06,870 Nazivaju se pohranjuju Postupci u SQL. 739 00:34:06,870 --> 00:34:09,860 No, mi ćemo ga zadržati prilično jednostavan i jednostavno ga koristiti za neke osnovne operacije 740 00:34:09,860 --> 00:34:14,320 kao i odabirom podataka, umetanje podataka, ažuriranje podataka, i brisanje podataka. 741 00:34:14,320 --> 00:34:17,400 >> I zaista možete sjetiti baze podataka, kao SQL baze podataka, kao tek 742 00:34:17,400 --> 00:34:18,800 što Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 Budući da se odnosi na SQL relacijske baze podataka, gdje je 744 00:34:21,989 --> 00:34:23,480 Odnos samo znači tablice. 745 00:34:23,480 --> 00:34:24,739 Redaka i stupaca. 746 00:34:24,739 --> 00:34:27,929 Dakle, sve što se može staviti u tablicu ovakav ili Google Docs, 747 00:34:27,929 --> 00:34:32,460 mogli staviti u SQL bazu podataka proglašavajući tablicu. 748 00:34:32,460 --> 00:34:34,800 >> Sada, kako se zapravo pristupili ta informacija? 749 00:34:34,800 --> 00:34:38,239 Pa, s naredbi ili upite kao što je ovaj. 750 00:34:38,239 --> 00:34:40,199 SELECT, INSERT, UPDATE i DELETE. 751 00:34:40,199 --> 00:34:44,489 I za najveći dio, oni su Četiri jedini sastojci morat ćete 752 00:34:44,489 --> 00:34:47,370 učinite nešto sasvim snažno u problemu postavili sedam. 753 00:34:47,370 --> 00:34:49,940 >> Sada natrag u dan, što bi zapravo interakciju s bazom podataka u 754 00:34:49,940 --> 00:34:52,730 crno-bijeli prozor terminala na treptati brz kao što je ovaj. 755 00:34:52,730 --> 00:34:56,370 I baze vodimo na Uređaj se zove MySQL, što je 756 00:34:56,370 --> 00:34:58,560 besplatan i open source baza podataka motor. 757 00:34:58,560 --> 00:35:02,240 Ako Google i pročitati Wikipediju članak, znat ćete da je ime 758 00:35:02,240 --> 00:35:05,060 malo tranziciji za neke verzije Linuxa. 759 00:35:05,060 --> 00:35:10,460 Maria je zapravo baza tanjura tako govoriti o MySQL. 760 00:35:10,460 --> 00:35:12,740 >> Da ne duljimo, Oracle kupio MySQL. 761 00:35:12,740 --> 00:35:13,870 Oracle je velika tvrtka. 762 00:35:13,870 --> 00:35:17,010 Ljudi su zabrinuti da bi više ostati sasvim kao open source, 763 00:35:17,010 --> 00:35:20,930 pa to je samo kopija MySQL to je još uvijek slobodni, uvijek open source, a 764 00:35:20,930 --> 00:35:23,550 instaliran u Fedora Linux po defaultu. 765 00:35:23,550 --> 00:35:26,130 >> No, to je vrsta boli u Vrat da se upoznaju s 766 00:35:26,130 --> 00:35:27,310 baze podataka na taj način. 767 00:35:27,310 --> 00:35:30,560 Dakle, mi uključiti u CS50 aparata besplatni open source alat koji se zove 768 00:35:30,560 --> 00:35:31,700 phpMyAdmin. 769 00:35:31,700 --> 00:35:33,940 Samo slučajnost da to je napisano u PHP-u. 770 00:35:33,940 --> 00:35:36,450 Ne postoji temeljna potrebno za PHP ovdje. 771 00:35:36,450 --> 00:35:40,090 No, to je samo web-based alat koji možemo skinuti besplatno, instaliran u 772 00:35:40,090 --> 00:35:43,850 aparata, koji nam omogućava da Grafičko sučelje s kojom 773 00:35:43,850 --> 00:35:48,610 istražiti p-set sedam baza podataka s za izradu novih baza podataka, 774 00:35:48,610 --> 00:35:51,980 kažu za svoj završni rad ako bih sviđa, te u konačnici stvoriti 775 00:35:51,980 --> 00:35:55,900 dinamičke web stranice kao što CS50 financija koji vam omogućuju da upita podatke i 776 00:35:55,900 --> 00:35:58,140 ažuriranje podataka dinamično. 777 00:35:58,140 --> 00:36:01,420 >> Nećeš se morati koristiti samo jednostavne tekstualne datoteke ili CSV. 778 00:36:01,420 --> 00:36:05,950 Vi zapravo možete koristiti Smart baze podataka Program tako da možete izvršiti više 779 00:36:05,950 --> 00:36:10,240 sofisticirane upiti nego samo čitati kroz sve linearno. 780 00:36:10,240 --> 00:36:14,150 >> Tako na primjer, to je ono što mi daje što iz kutije za p-set sedam. 781 00:36:14,150 --> 00:36:18,280 Ovo je stol s naizgled najmanje tri stupca, od kojih je jedan 782 00:36:18,280 --> 00:36:21,450 korisničko ime, od kojih je jedan hash, a drugi od kojih je ID. 783 00:36:21,450 --> 00:36:26,200 >> Ali zanimljiva stvar, i samo se izmamili jedna misao ovdje, korisničko ime 784 00:36:26,200 --> 00:36:29,270 vjerojatno je već jedinstveno, zar ne? 785 00:36:29,270 --> 00:36:31,190 Mislim, najviše bilo koju web stranicu, ako je imate korisničko ime, postoji 786 00:36:31,190 --> 00:36:32,370 ne mogu biti dva Caesars. 787 00:36:32,370 --> 00:36:33,440 Tu ne može biti dva Malans. 788 00:36:33,440 --> 00:36:34,950 Tu ne može biti dva jharvards. 789 00:36:34,950 --> 00:36:35,600 Njegov jedinstveni. 790 00:36:35,600 --> 00:36:38,610 Inače, oni ne znaju što jharvard što zapravo jest. 791 00:36:38,610 --> 00:36:42,710 Dakle, ono što bi moglo biti motivacija za također ima i treći stupac na lijevoj 792 00:36:42,710 --> 00:36:46,970 postoji zove ID, koja izgleda kao broj koji je sličan jedinstveni? 793 00:36:46,970 --> 00:36:51,300 Ona se osjeća malo suvišnim mi se na prvi pogled. 794 00:36:51,300 --> 00:36:54,910 Zašto bi to biti uvjerljiv imati Ne samo jedinstvena korisnička imena, 795 00:36:54,910 --> 00:36:56,837 ali i jedinstveni brojevi? 796 00:36:56,837 --> 00:36:59,460 >> PUBLIKA: Mogli bi imati ista lozinka. 797 00:36:59,460 --> 00:37:01,720 >> DAVID Malan: Ljudi bi mogli imati ista lozinka sigurni. 798 00:37:01,720 --> 00:37:03,900 To apsolutno moglo dogoditi. 799 00:37:03,900 --> 00:37:08,270 Ali ako su ovo jedinstveno korisničko ime, sam će tvrditi da je to zapravo ne 800 00:37:08,270 --> 00:37:11,630 stvar, jer ako se upišete u njihovom korisničko ime, da je potrebno provjeriti njihovu 801 00:37:11,630 --> 00:37:15,060 lozinku, njihove hash tome. 802 00:37:15,060 --> 00:37:15,970 Zašto drugdje? 803 00:37:15,970 --> 00:37:17,950 >> PUBLIKA: brže pretraživanje. 804 00:37:17,950 --> 00:37:18,680 >> DAVID Malan: brže pretraživanje. 805 00:37:18,680 --> 00:37:19,548 Zašto? 806 00:37:19,548 --> 00:37:21,460 >> PUBLIKA: ID je samo jedan. 807 00:37:21,460 --> 00:37:24,040 >> DAVID Malan: ID je samo jedan znak, ili, da budemo precizniji, to je broj, 808 00:37:24,040 --> 00:37:26,910 tako da je vjerojatno 32 bita ili nešto slično. 809 00:37:26,910 --> 00:37:30,270 Dok korisničko ime, očito Jason Hirschhorna tamo je vrsta 810 00:37:30,270 --> 00:37:33,900 smiješno dug, a to će mi se puno više vremena na žici 811 00:37:33,900 --> 00:37:40,910 usporediti H-I-R-S-C-H-H-O-R-N, a možda / 0 ili nešto slično, da bi 812 00:37:40,910 --> 00:37:45,100 potražiti Jasona, za razliku od samo govoreći mi dati upute broj dva. 813 00:37:45,100 --> 00:37:46,510 To je 32 bita. 814 00:37:46,510 --> 00:37:48,550 To je jedan INT da imate za usporedbu. 815 00:37:48,550 --> 00:37:52,150 I doista, to je točno zašto baze podataka imaju tendenciju da se dodijeliti jedinstveni ID za 816 00:37:52,150 --> 00:37:53,710 redovi u njima. 817 00:37:53,710 --> 00:37:56,280 >> Sada ono što drugi tipovi podataka su tu Osim INT i očito 818 00:37:56,280 --> 00:37:57,160 žice kao što je ovaj? 819 00:37:57,160 --> 00:37:59,700 Pa, da se više pravilno, SQL baza podataka, kao što su 820 00:37:59,700 --> 00:38:02,060 MySQL, ima CHAR polja. 821 00:38:02,060 --> 00:38:05,320 I CHAR malo misleadingly nije jedan CHAR. 822 00:38:05,320 --> 00:38:10,290 Polje CHAR u MySQL bazu podataka je jedan ili više znakova, ali to je 823 00:38:10,290 --> 00:38:11,780 fiksni broj znakova. 824 00:38:11,780 --> 00:38:15,710 >> Tako na primjer, ako idem na to phpMyAdmin kao što ste možda već, ili 825 00:38:15,710 --> 00:38:21,340 Uskoro će se problem postaviti sedam, i idem mojoj bazi podataka, i samo za zabavu, 826 00:38:21,340 --> 00:38:25,700 neka je stvoriti novu tablicu pod nazivom testirati sa samo dva stupca. 827 00:38:25,700 --> 00:38:27,160 Ja ću onda kliknite Idi. 828 00:38:27,160 --> 00:38:30,070 A to će biti prilično poznato, posebno kao što prtljati 829 00:38:30,070 --> 00:38:31,130 okolo na svoju vlastitu. 830 00:38:31,130 --> 00:38:34,140 Evo ja mogu upisati ID stvoriti Nova tablica tipa int. 831 00:38:34,140 --> 00:38:37,770 No, ovdje bih mogao upisati korisničko ime za ponovno da je ranije stol. 832 00:38:37,770 --> 00:38:40,700 I primijetiti imam hrpu vrsta koje možete izabrati. 833 00:38:40,700 --> 00:38:43,610 >> I ovo je razlog zašto phpMyAdmin je baš lijepo. 834 00:38:43,610 --> 00:38:46,770 To je vrsta self-nastave u tom vas može samo vrsta točku i kliknite, a 835 00:38:46,770 --> 00:38:50,730 pogled na padajući izbornici, i zaključiti iz da je ono što pokreće SQL vam daje. 836 00:38:50,730 --> 00:38:54,090 >> I doista, ako se odlučim CHAR, onda sam moraju odrediti dužinu, ili kako 837 00:38:54,090 --> 00:38:55,940 mnoge vrijednosti, koliko znakova. 838 00:38:55,940 --> 00:39:00,090 Dakle, vrlo zajedničke vrijednosti su stvari poput 255, ali to je malo dugo. 839 00:39:00,090 --> 00:39:02,250 Obično je osam za korisničko ime. 840 00:39:02,250 --> 00:39:03,590 No, to je malo mali ovih dana. 841 00:39:03,590 --> 00:39:05,430 Dakle, ovo je dizajn odluka. 842 00:39:05,430 --> 00:39:08,630 Je li 8 znakova max, 32, 255, 1000? 843 00:39:08,630 --> 00:39:09,830 To je stvarno na vama. 844 00:39:09,830 --> 00:39:12,350 Ali polje CHAR je stalnu vrijednost. 845 00:39:12,350 --> 00:39:16,420 Dakle, odabrati premalo i da ste vrsta pijan ako želite dužu korisničko ime. 846 00:39:16,420 --> 00:39:19,132 Odaberite previše, a ono što je nedostatak? 847 00:39:19,132 --> 00:39:20,820 >> PUBLIKA: [nečujan]. 848 00:39:20,820 --> 00:39:21,620 >> DAVID Malan: To je rastrošna. 849 00:39:21,620 --> 00:39:24,835 Baš kao u C, ako imate veći komad memorije nego što je potrebno, da si 850 00:39:24,835 --> 00:39:27,190 samo gubljenje vremena i rasipanje prostora. 851 00:39:27,190 --> 00:39:31,430 Dakle, kao alternativa, postoji VARCHAR, koja rješava ovaj problem 852 00:39:31,430 --> 00:39:36,390 duljinu tretiranja ne kao fiksne duljine, ali kao maksimalne duljine, i pomoću 853 00:39:36,390 --> 00:39:40,990 varijabla broj znakova, koji se potom sklon koristiti samo onoliko znakova kao ti 854 00:39:40,990 --> 00:39:42,710 zapravo potrebno. 855 00:39:42,710 --> 00:39:43,670 To zvuči savršeno. 856 00:39:43,670 --> 00:39:45,640 >> Zašto ne možemo riješiti Char podaci tipa onda? 857 00:39:45,640 --> 00:39:48,500 Ono što bi moglo biti downside pomoću VARCHARs, što zvuči 858 00:39:48,500 --> 00:39:51,644 kao da je lijepo pobijediti? 859 00:39:51,644 --> 00:39:52,596 Da? 860 00:39:52,596 --> 00:39:53,846 >> PUBLIKA: [nečujan]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> DAVID Malan: U redu, dobro. 863 00:39:57,790 --> 00:40:01,101 Dakle, ako sve vaše podatke je isti duljinom, ono što je problem? 864 00:40:01,101 --> 00:40:05,250 >> PUBLIKA: Budući da ste gubit Podaci po njima sve govori. 865 00:40:05,250 --> 00:40:09,060 >> DAVID Malan: Dakle, ako sve vaše podatke je iste duljine, međutim, ja bih rekao 866 00:40:09,060 --> 00:40:12,300 koji određivanju maksimalne duljine Na VARCHAR se ne razlikuje od 867 00:40:12,300 --> 00:40:16,070 određivanjem fiksne duljine na CHAR ako vi znate da je broj unaprijed. 868 00:40:16,070 --> 00:40:19,500 No, tu je doista, a ja ću nekako izvuci iz tog odgovora stvarnost 869 00:40:19,500 --> 00:40:22,610 da ima još max, što bi moglo biti neugodno, pogotovo ako 870 00:40:22,610 --> 00:40:25,920 naići na ime osobe koja je neuobičajeno dugo da nisi 871 00:40:25,920 --> 00:40:26,860 predvidjeti. 872 00:40:26,860 --> 00:40:31,420 I to je također nešto manje učinkovita zapravo traži na VARCHARs kao 873 00:40:31,420 --> 00:40:35,620 razliku u potrazi znakova, pogotovo za duge stolove koji imaju puno i 874 00:40:35,620 --> 00:40:36,510 puno podataka. 875 00:40:36,510 --> 00:40:40,060 Tako i ovdje, tematski je opet nema očiti izbor. 876 00:40:40,060 --> 00:40:42,870 >> Dakle, samo da vam dati osjećaj drugog vrste podataka koji bi mogli biti od interesa 877 00:40:42,870 --> 00:40:45,400 bilo za p-set sedam ili u Budućnost, postoji INT. 878 00:40:45,400 --> 00:40:47,270 Postoji BIGINT, koji je kao dugo dugo. 879 00:40:47,270 --> 00:40:48,880 To teži biti 64 bita. 880 00:40:48,880 --> 00:40:51,640 Postoji DECIMAL, što ćete vidjeti u zadataka, koji je mnogo 881 00:40:51,640 --> 00:40:55,300 čišći odgovor na probleme s kojima se susreo s float i pluta 882 00:40:55,300 --> 00:40:55,980 ukazuju nepreciznost. 883 00:40:55,980 --> 00:40:57,390 A onda je tu DATETIME. 884 00:40:57,390 --> 00:41:01,530 Tu je doslovno tip podataka koji ima izgledati kao godinu, mjesec, dan, 885 00:41:01,530 --> 00:41:03,730 i sat, minute i sekunde. 886 00:41:03,730 --> 00:41:07,470 >> No, SQL baza podataka također imaju stvari koje ćemo nazvati indekse. 887 00:41:07,470 --> 00:41:11,630 I index je nešto što odrediti prilikom izrade tablicu 888 00:41:11,630 --> 00:41:15,720 napraviti pretrage i druge operacije učinkovitiji. 889 00:41:15,720 --> 00:41:18,550 Naime, postoji nešto što se zove OSNOVNA indeks da bi mogao 890 00:41:18,550 --> 00:41:19,440 izjavljujem kako slijedi. 891 00:41:19,440 --> 00:41:22,330 >> Učinili smo to za vas s Korisnici stol ćemo vam dati. 892 00:41:22,330 --> 00:41:26,160 Ali primijetite da sam ručno su ponovno Korisnici stol ovdje davanja 893 00:41:26,160 --> 00:41:27,110 to ime korisnika. 894 00:41:27,110 --> 00:41:28,125 Ja već odredili ID. 895 00:41:28,125 --> 00:41:29,330 Specificirano sam INT. 896 00:41:29,330 --> 00:41:32,000 Specificirano sam korisničko ime s maksimalno 32 znaka. 897 00:41:32,000 --> 00:41:36,140 No, ako se držimo pomicanje u to prilično široki prozor, obavijest postoji 898 00:41:36,140 --> 00:41:38,260 hrpa drugih stvari koje mogu odrediti. 899 00:41:38,260 --> 00:41:40,950 >> Jedan od njih, ja mogu navesti atribute kao, znaš ono, to 900 00:41:40,950 --> 00:41:42,190 INT trebao biti nepotpisana. 901 00:41:42,190 --> 00:41:45,510 Ne želim negativne brojeve, pa neka je to učiniti bez predznaka. 902 00:41:45,510 --> 00:41:48,660 Null nije relevantan jer ovdje Ja želim svakom korisniku da 903 00:41:48,660 --> 00:41:49,640 imati jedinstveni broj. 904 00:41:49,640 --> 00:41:50,830 Ja ne želim da to bude nula. 905 00:41:50,830 --> 00:41:52,330 >> No, to je zanimljivo. 906 00:41:52,330 --> 00:41:57,780 Mogu navesti da ID je bilo Primarni ključ ove baze podataka, ili je to 907 00:41:57,780 --> 00:42:00,620 jedinstveno, ili je to indeksirane, ili cijeli tekst. 908 00:42:00,620 --> 00:42:05,630 Tako je za današnje potrebe, duga priča Ukratko, osnovni način da se to mora 909 00:42:05,630 --> 00:42:10,570 biti i konceptualno i tehnički Polje koje ćemo koristiti za jedinstveno 910 00:42:10,570 --> 00:42:12,140 identificirati korisnike. 911 00:42:12,140 --> 00:42:16,140 >> Dakle, kada gledamo up korisnike, ovo je neka vrsta obećanja da im se izgled uglavnom 912 00:42:16,140 --> 00:42:17,370 taj jedinstveni identifikator. 913 00:42:17,370 --> 00:42:21,930 I baza podataka će osigurati da, ako vam imati korisnički broj 3, ne možete 914 00:42:21,930 --> 00:42:25,400 fizički umetanje novog korisnika sa istim brojem 3. 915 00:42:25,400 --> 00:42:28,380 Baza će samo odbiti Za spremanje promjena. 916 00:42:28,380 --> 00:42:32,310 Koja je dobra stvar, jer možete zaštitili sebe od sebe. sam 917 00:42:32,310 --> 00:42:34,270 >> Alternativno, za korisničko ime. 918 00:42:34,270 --> 00:42:37,670 Dakle, drugi red, podsjetimo, je polje username. 919 00:42:37,670 --> 00:42:41,860 Dakle, drugi red ovdje je username, kao što smo učinili na krajnje lijevo tamo. 920 00:42:41,860 --> 00:42:43,940 >> Pa što bi još moglo želim navesti? 921 00:42:43,940 --> 00:42:47,840 Ne smijem, prema SQL, navesti dvije primarne ključeve. 922 00:42:47,840 --> 00:42:50,750 možete odrediti zajednički ključ gdje pogledajte oba polja, ali ne mogu 923 00:42:50,750 --> 00:42:52,260 pojedinačno biti primarni ključevi. 924 00:42:52,260 --> 00:42:54,750 Tako da je dolazilo u obzir. 925 00:42:54,750 --> 00:42:56,040 Dakle, što bi moglo želim odabrati? 926 00:42:56,040 --> 00:42:59,710 >> Pa, unikat je u sličnom duhu Primarni ključ u kojem ste naveli ovo 927 00:42:59,710 --> 00:43:03,570 Polje će biti jedinstven, ali to je ne će biti jedan 928 00:43:03,570 --> 00:43:04,410 Ja koristiti sve vrijeme. 929 00:43:04,410 --> 00:43:08,450 I nećemo koristiti ovaj sve Vrijeme iz kojeg razloga opet? 930 00:43:08,450 --> 00:43:10,490 To je potencijalno sporije ako je to je dugo ime. 931 00:43:10,490 --> 00:43:11,740 To je samo gubljenje vremena. 932 00:43:11,740 --> 00:43:16,140 >> INDEX, u međuvremenu, navodi da je neće biti jedinstven, ali ja bih 933 00:43:16,140 --> 00:43:19,470 da rade svoj magiju ispod napa kako bi ga brže za mene 934 00:43:19,470 --> 00:43:21,420 traži na tom području. 935 00:43:21,420 --> 00:43:23,320 Dakle, to vjerojatno nije relevantno ovdje. 936 00:43:23,320 --> 00:43:26,500 Za korisničko ime, ja bih se tvrditi da Jedinstvena je dobar odgovor. 937 00:43:26,500 --> 00:43:31,200 No, pretpostavimo da smo napravili korisnici više Zanimljivo nego samo korisnička imena, 938 00:43:31,200 --> 00:43:32,430 sasjecka, i identifikacijskim brojevima. 939 00:43:32,430 --> 00:43:33,860 Što ako mi je dao ljudima puna imena? 940 00:43:33,860 --> 00:43:37,700 Što ako mi je dao im se obraća i drugih podataka o njima? 941 00:43:37,700 --> 00:43:43,360 >> Pa, ako ste odredili da je stupac u baze indeksira, to znači da 942 00:43:43,360 --> 00:43:47,730 MySQL ili Oracle, ili što god baze podataka koju koristite, trebali raditi svoje čari 943 00:43:47,730 --> 00:43:51,300 i koristiti nekakav fancy podataka struktura kao drvo, ili trie ili 944 00:43:51,300 --> 00:43:55,940 hash tablicu, ili nešto da se jamči da kada ste traženje podataka pomoću 945 00:43:55,940 --> 00:43:58,150 odabrati na tom području - 946 00:43:58,150 --> 00:44:01,310 sviđa mi pokazati svima da je živi na Oxford Streetu. 947 00:44:01,310 --> 00:44:02,540 Upita kao što je to. 948 00:44:02,540 --> 00:44:06,250 Ako ste unaprijed određen da želite indeksa na tom području, 949 00:44:06,250 --> 00:44:09,050 pretrage će biti puno, puno brže. 950 00:44:09,050 --> 00:44:12,090 >> Ako ne odredite indeksa, najbolje možete učiniti je linearna ako traži 951 00:44:12,090 --> 00:44:13,030 to nije riješeno. 952 00:44:13,030 --> 00:44:16,220 Ali, ako ste naveli INDEX, pametna ljudi koji su u bazu podataka - 953 00:44:16,220 --> 00:44:19,340 ljudi poput tebe koji se sada znaju stabala i napad i hash tablice - 954 00:44:19,340 --> 00:44:23,220 će automatski graditi takve podatke struktura u RAM kako bi bili sigurni da 955 00:44:23,220 --> 00:44:26,050 ti pretraživanja su mnogo brže. 956 00:44:26,050 --> 00:44:29,660 >> Cjeloviti tekst međuvremenu je u sličnom duhu, , ali vam omogućuje da učinite zamjenski 957 00:44:29,660 --> 00:44:35,480 pretraga, sviđa mi pokazati svima da je živi na ulicama koje počinju s 958 00:44:35,480 --> 00:44:36,960 O pismu iz bilo kojeg razloga. 959 00:44:36,960 --> 00:44:38,850 Možete napraviti zamjenske pretraga svidjelo. 960 00:44:38,850 --> 00:44:45,880 Ili, još uvjerljivi stvari kao što pokazuju mene svatko tko ima riječ - 961 00:44:45,880 --> 00:44:49,400 mi pokazati svima čije ime počinje s posebnim pismom. 962 00:44:49,400 --> 00:44:51,880 Možete tražiti ključne riječi na ovaj način. 963 00:44:51,880 --> 00:44:52,630 U redu. 964 00:44:52,630 --> 00:44:55,760 >> Dakle, dizajn prilike potencijalno postoji. 965 00:44:55,760 --> 00:44:57,740 Postoje drugi koji ću mahati moje ruke na. 966 00:44:57,740 --> 00:45:00,530 Ispada da možete imati različite priče motor. 967 00:45:00,530 --> 00:45:04,390 A to je više nego što nam je potrebno kompliciranih Sigurno problema za postavljanje sedam. 968 00:45:04,390 --> 00:45:06,920 Po defaultu, ti dečki su pomoću nešto što se zove InnoDB. 969 00:45:06,920 --> 00:45:10,910 Vidjet ćete spomen ovog negdje u phpMyAdmin sučelje najvjerojatnije. 970 00:45:10,910 --> 00:45:14,130 No, znamo da postoje i drugi dizajn Odluke koje su potencijalno 971 00:45:14,130 --> 00:45:18,030 Kamatna dolaze završne projekte, ako li učiniti nešto web-based. 972 00:45:18,030 --> 00:45:19,330 >> Ali neka je to učiniti. 973 00:45:19,330 --> 00:45:23,130 Idemo naprijed i staviti to na Zaslon kao teaser za priču 974 00:45:23,130 --> 00:45:26,330 uključuje vas, cimer, i čašu mlijeka. 975 00:45:26,330 --> 00:45:28,240 Uzmimo dvije minute ili tako razbiti ovdje. 976 00:45:28,240 --> 00:45:31,060 I ako možete staviti oko, neka dođe natrag, izgleda malo više na SQL, i 977 00:45:31,060 --> 00:45:35,160 onda malo JavaScripta s p-postavili osam na umu. 978 00:45:35,160 --> 00:45:36,120 >> U redu. 979 00:45:36,120 --> 00:45:40,420 Dakle, krenimo razmišljaš kutak slučaj da vrlo lako mogu nastati 980 00:45:40,420 --> 00:45:44,240 u kontekstu korištenja baze podataka, ili iskreno, čak i koristeći stvarnom svijetu stvari 981 00:45:44,240 --> 00:45:46,280 kao bankomati dobiti novac. 982 00:45:46,280 --> 00:45:47,640 Dakle, ovdje je hladnjak. 983 00:45:47,640 --> 00:45:50,040 Pretpostavimo da ste je dobio jedan previše u Vaš studentski dom ili tvoja kuća. 984 00:45:50,040 --> 00:45:54,990 A ti imaš jednu cimericu, a obojica vi stvarno vole mlijeko za primjer. 985 00:45:54,990 --> 00:45:57,210 >> Dakle, dođete kući iz razreda jedan dan. 986 00:45:57,210 --> 00:45:58,490 On ili ona još uvijek nije vratio. 987 00:45:58,490 --> 00:45:59,180 Možete otvoriti frižider. 988 00:45:59,180 --> 00:46:00,870 Stvarno želim veliku čašu mlijeka. 989 00:46:00,870 --> 00:46:01,820 Nema mlijeka. 990 00:46:01,820 --> 00:46:02,920 Dakle, što ćete učiniti? 991 00:46:02,920 --> 00:46:03,840 Možete zatvoriti frižider. 992 00:46:03,840 --> 00:46:04,670 Vi iskoristite svoje ključeve. 993 00:46:04,670 --> 00:46:05,930 Možete otići na trg. 994 00:46:05,930 --> 00:46:09,240 A ti u redu u CVS na onima self-checkout stvari, koja uvijek 995 00:46:09,240 --> 00:46:11,180 potrajati dulje nego što je zapravo ima blagajnama. 996 00:46:11,180 --> 00:46:11,820 Bilo kako. 997 00:46:11,820 --> 00:46:15,490 >> Dakle, u međuvremenu, dot dot dot, vaš cimer dolazi kući, a on ili ona 998 00:46:15,490 --> 00:46:17,440 Slično je žudnja za malo mlijeka. 999 00:46:17,440 --> 00:46:20,380 Dakle, on ili ona otvara frižider, izgleda iznutra, i oh, damn. 1000 00:46:20,380 --> 00:46:21,160 Ne mlijeko. 1001 00:46:21,160 --> 00:46:24,750 Tako je na čelu out, dogodi otići na drugim CVS, što je samo 1002 00:46:24,750 --> 00:46:27,900 blok dalje iz nekog razloga, a on ili ona dobiva u skladu kupiti mlijeko. 1003 00:46:27,900 --> 00:46:30,480 >> U međuvremenu, dođete kući, on ili ona dolazi kući, i što učiniti 1004 00:46:30,480 --> 00:46:31,980 što u konačnici ima? 1005 00:46:31,980 --> 00:46:33,080 Dvostruko više mlijeka. 1006 00:46:33,080 --> 00:46:34,620 Ali stvarno ne sviđa mlijeko toliko. 1007 00:46:34,620 --> 00:46:37,300 Tako sada imate toliko mlijeka da je sada jedan od njih će otići kiselo 1008 00:46:37,300 --> 00:46:37,820 na kraju. 1009 00:46:37,820 --> 00:46:39,370 Dakle, ovo je stvarno loše problem. 1010 00:46:39,370 --> 00:46:39,900 Točno? 1011 00:46:39,900 --> 00:46:41,990 >> Dakle, što se dogodilo? 1012 00:46:41,990 --> 00:46:44,810 Dakle, iz temelja, to je vrsta od smiješan primjer. 1013 00:46:44,810 --> 00:46:48,580 No, ispod poklopca motora, ono što smo imali dogoditi ovdje je i za vas provjeriti 1014 00:46:48,580 --> 00:46:52,390 stanje nekog komada memorije, hladnjak. 1015 00:46:52,390 --> 00:46:54,420 Obojica provjerio stanje neke varijable. 1016 00:46:54,420 --> 00:46:57,360 Obojica su izvukli zaključke da onda je djelovao na. 1017 00:46:57,360 --> 00:47:01,420 No, na žalost, dok je tvoj cimer bio u trgovini, država koja 1018 00:47:01,420 --> 00:47:05,670 varijabla promijenila, on ili ona se vratila a sada želi promijeniti stanje, ali 1019 00:47:05,670 --> 00:47:07,480 to je već promijenio na njega ili nju. 1020 00:47:07,480 --> 00:47:11,120 I naravno, on ili ona neće imati otišao u dućan, ako su znali 1021 00:47:11,120 --> 00:47:13,010 da ste već bili na putu. 1022 00:47:13,010 --> 00:47:16,430 >> Dakle, u stvarnom svijetu, kako si mogao izbjegli taj problem, uz pretpostavku da su 1023 00:47:16,430 --> 00:47:18,940 hladnjak, imate cimera, a vi zapravo kao mlijeko? 1024 00:47:18,940 --> 00:47:19,760 >> PUBLIKA: Komuniciranje. 1025 00:47:19,760 --> 00:47:20,580 >> DAVID Malan: Komuniciranje. 1026 00:47:20,580 --> 00:47:21,160 OK. 1027 00:47:21,160 --> 00:47:22,500 No, kako bi vi komunicirate? 1028 00:47:22,500 --> 00:47:23,990 >> PUBLIKA: Ostavite poruku. 1029 00:47:23,990 --> 00:47:25,480 >> DAVID Malan: Ostavite znanje, zar ne? 1030 00:47:25,480 --> 00:47:28,025 Uvijek ostavite napomenu, za ljubitelji showa. 1031 00:47:28,025 --> 00:47:31,580 U redu, tako da uvijek ostavite napomenu, ili mu doista poput lokot ili tako nešto 1032 00:47:31,580 --> 00:47:35,440 na hladnjaku koji čuva cimerica iz Uvidom u stanje 1033 00:47:35,440 --> 00:47:36,540 da je promjenjiva. 1034 00:47:36,540 --> 00:47:40,800 >> Sada, zašto bi to biti povezan s Problem set od sedam, ili bankomata. 1035 00:47:40,800 --> 00:47:46,780 Pa, zamislite svijet u bankomatu gdje možda ćete biti u mogućnosti otići do bankomata 1036 00:47:46,780 --> 00:47:48,920 Stroj ovdje, a drugi ovdje ATM. 1037 00:47:48,920 --> 00:47:50,680 I to se događa prilično često. 1038 00:47:50,680 --> 00:47:54,150 A pretpostavljam da ste imali dva ATM kartice, što je moguće dobiti. 1039 00:47:54,150 --> 00:47:57,420 A što se prijavite u obje strojeva učinkovito istovremeno, nadamo se 1040 00:47:57,420 --> 00:47:58,660 dok nitko ne gleda. 1041 00:47:58,660 --> 00:48:01,260 I onda upisati svoj PIN otprilike istovremeno. 1042 00:48:01,260 --> 00:48:06,280 A onda napraviti bilancu upit vidjeti koliko novca imate. 1043 00:48:06,280 --> 00:48:08,920 I recimo da imate 100 dolara ostavio na računu. 1044 00:48:08,920 --> 00:48:13,310 Dakle, u biti isto, što recimo jedan, nula, nula, upišite. 1045 00:48:13,310 --> 00:48:16,000 I nadamo se vratiti nešto novca. 1046 00:48:16,000 --> 00:48:18,440 >> No, koliko novca mogu li se vratiti? 1047 00:48:18,440 --> 00:48:21,710 Sada računala na kraju dana, pogotovo ako ste u razgovoru s 1048 00:48:21,710 --> 00:48:27,360 poslužitelji, ne mora nužno raditi stvari u cilju da se očekuje. 1049 00:48:27,360 --> 00:48:30,860 >> Dakle, pretpostavimo da ono što se događa, zbog bez obzira na brzinu mreže problemi postoje 1050 00:48:30,860 --> 00:48:34,530 su, ili CPU problemi su tu, ili bilo što slično, pretpostavimo da 1051 00:48:34,530 --> 00:48:38,530 Prvi ATM provjerava stanje i vidi, oh, ta osoba ima 100 $. 1052 00:48:38,530 --> 00:48:41,840 No, tada dobiva rastresen, jer možda backup se događa i tako je 1053 00:48:41,840 --> 00:48:42,500 usporava. 1054 00:48:42,500 --> 00:48:45,080 Ili možda, a provjere, mrežu Priključak je dobio malo sporije, jer 1055 00:48:45,080 --> 00:48:45,910 to jednostavno dogodi. 1056 00:48:45,910 --> 00:48:47,100 Oni su fizički uređaji. 1057 00:48:47,100 --> 00:48:49,330 Dakle, u međuvremenu, drugi je ATM postavljam isto pitanje. 1058 00:48:49,330 --> 00:48:53,030 Koliko novaca nema David ima? 100 dolara je odgovor. 1059 00:48:53,030 --> 00:48:58,930 Ali zato što je prva ATM još nije poslao poruku oduzmite 100 dolara, i 1060 00:48:58,930 --> 00:49:03,000 Bankomati su pregledane banke trezor, kad postoji 100 dolara postoji, a sada 1061 00:49:03,000 --> 00:49:07,160 Oba stroja su potencijalno ide ispljunuti odgovor. 1062 00:49:07,160 --> 00:49:12,240 >> Sada, ovo je super za vas u nekom smislu ako je ono što banka radi u konačnici 1063 00:49:12,240 --> 00:49:17,200 se promijeniti iznos na minus 100 do postavljanjem varijable jednake vašoj 1064 00:49:17,200 --> 00:49:21,570 bankovni račun jednaka 0, nasuprot se radi minus 100.. 1065 00:49:21,570 --> 00:49:24,410 Sada u najgorem slučaju za banke - 1066 00:49:24,410 --> 00:49:27,470 ili u najbolje za banku, u međuvremenu, oni vam dati 200 $, a 1067 00:49:27,470 --> 00:49:31,690 Vaš bankovni račun pokazuje negativan $ 100, što doista nije 1068 00:49:31,690 --> 00:49:32,950 imati koristi uopće. 1069 00:49:32,950 --> 00:49:36,500 No, poanta je da je ova utrka Uvjet za dobivanje dvije cimerice 1070 00:49:36,500 --> 00:49:40,660 mlijeko, odnosno za dva bankomata pokušavaju dobiti novac i promijeniti stanje u trezor 1071 00:49:40,660 --> 00:49:44,510 u isto vrijeme postoji bilo Vrijeme imate bazu podataka. 1072 00:49:44,510 --> 00:49:48,290 >> Sada je u problemu postavili sedam, ovo pitanje nastaje u smislu da ako kupite 1073 00:49:48,290 --> 00:49:52,110 Udio Facebook skladištu, a zatim za instanca li kupiti drugi dio 1074 00:49:52,110 --> 00:49:55,160 Facebook dionica, što je potrebno napraviti Odluka kao programer. 1075 00:49:55,160 --> 00:49:58,710 Kako bi se odlučiti kako ažurirati baze podataka, izgledi su da ćeš 1076 00:49:58,710 --> 00:50:02,250 ima jedan redak za tu skladištu, i ovo je jedan od načina kako to provesti. 1077 00:50:02,250 --> 00:50:06,640 A ti ćeš imati jedan udio FB, što je njihov burzovni simbol 1078 00:50:06,640 --> 00:50:10,120 za ovu korisničkim imenom, ili ovog korisnika ID, jedinstveni identifikator. 1079 00:50:10,120 --> 00:50:12,340 >> No, ista priča se može dogoditi ovdje. 1080 00:50:12,340 --> 00:50:15,800 Ako ne SELECT u SQL, kao što ćete vidjeti u problemu postavili sedam kad vidite, 1081 00:50:15,800 --> 00:50:18,460 Oh, David ima udio od Facebook skladištu. 1082 00:50:18,460 --> 00:50:23,240 Dopustite mi da se to promijeni kako bi se dvije dionice, jer on želi kupiti 1083 00:50:23,240 --> 00:50:24,120 Drugi udjela. 1084 00:50:24,120 --> 00:50:27,860 Ali pretpostavimo da je David zapravo imao dvije browser prozore otvorene ili pretpostavimo da 1085 00:50:27,860 --> 00:50:32,150 to je zajednički račun s dva supružnika, i obojica pokušavaju izvesti 1086 00:50:32,150 --> 00:50:36,770 Isto operacije, postoji, također, postoji mogućnost odluka bila 1087 00:50:36,770 --> 00:50:39,670 napravljena je na temelju prethodnih stanje u svijetu - 1088 00:50:39,670 --> 00:50:41,290 računu ima jednu dionicu - 1089 00:50:41,290 --> 00:50:45,630 a obje osobe, ili oba poslužitelja, sada pokušati reći to povećajte na dvije dionice. 1090 00:50:45,630 --> 00:50:49,020 No, u ovom slučaju, možda ste naplaćuje ja para za obje dionice, ali 1091 00:50:49,020 --> 00:50:50,830 porastao samo to jedno vrijeme. 1092 00:50:50,830 --> 00:50:54,730 >> Tako je u kratkom, temeljni problem Ovdje, kao i sa šalom oko izlaska 1093 00:50:54,730 --> 00:50:58,750 umu, ili stavljajući lokot na njoj, je Ako se dvoje ljudi, ili dvije teme - 1094 00:50:58,750 --> 00:50:59,930 prisjetim se ispočetka - 1095 00:50:59,930 --> 00:51:03,220 Možete provjeriti stanje neke varijable a zatim pokušati promijeniti tu varijablu, 1096 00:51:03,220 --> 00:51:07,950 ali te dvije stvari se ne dešavaju na isto vrijeme, ali mogu dobiti prekinuta 1097 00:51:07,950 --> 00:51:11,500 od strane drugih stvari koje se dešavaju, podaci se mogu se u vrlo čudnom stanju. 1098 00:51:11,500 --> 00:51:15,450 I možete imati koristi ili može trpjeti u smislu novca primjer. 1099 00:51:15,450 --> 00:51:18,110 >> Tako je u sedam set problema, možemo vam dati ova linija koda, koji je dugo 1100 00:51:18,110 --> 00:51:21,000 Ukratko, to rješava Problem je u MySQL. 1101 00:51:21,000 --> 00:51:24,950 Ovaj jako dugo upute da se ne čak i stati na jednoj liniji na 1102 00:51:24,950 --> 00:51:30,370 Zaslon ovdje osigurava da vaš rad je ono što se zove atomska. 1103 00:51:30,370 --> 00:51:33,720 Sve se događa odjednom, ili to se ne događa na sve. 1104 00:51:33,720 --> 00:51:37,530 Ovaj jako dugo fraza ne mogu dobiti prekinuta djelomično. 1105 00:51:37,530 --> 00:51:39,840 >> A što to je doslovno ono što govori. 1106 00:51:39,840 --> 00:51:44,200 Stavite ga u nekoj tablici sljedeće tri stavke one određene vrijednosti, 1107 00:51:44,200 --> 00:51:47,280 ali na duple tipke, nemojte učiniti umetak. 1108 00:51:47,280 --> 00:51:48,280 Da li ažurirati. 1109 00:51:48,280 --> 00:51:52,450 Dakle, ovo je kao radiš SELECT i INSERT takoreći u isto vrijeme. 1110 00:51:52,450 --> 00:51:55,150 I ono što je ključno da je vjerojatno se spominju ovdje? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> Ispada, a to ćete vidjeti u Problem postaviti sedam je spec., jer 1113 00:52:01,380 --> 00:52:06,040 smo izjavio da postoji jedinstveni ključ Na ovom stolu, kao da je 1114 00:52:06,040 --> 00:52:08,480 ne može imati više redaka za istog korisnika s 1115 00:52:08,480 --> 00:52:10,150 Isto penny stock simbol - 1116 00:52:10,150 --> 00:52:13,780 u ovom primjeru ovdje, DVN.V je glupo penny stock da smo 1117 00:52:13,780 --> 00:52:14,980 odnose se na spec.. 1118 00:52:14,980 --> 00:52:17,860 Budući da smo proglasili da bude jedinstvena, što to znači da, ako vam 1119 00:52:17,860 --> 00:52:23,580 pokušati umetnuti duplikat red, ti si umjesto da ću ga ažurirati bez 1120 00:52:23,580 --> 00:52:27,020 bilo tko drugi ima priliku promijeniti stanje svijeta bilo. 1121 00:52:27,020 --> 00:52:29,400 Dakle, ukratko, to osigurava stvari su atomska. 1122 00:52:29,400 --> 00:52:32,530 >> Općenitije ipak, baze podataka kao što je MySQL - 1123 00:52:32,530 --> 00:52:35,460 a vi ne trebate ovu značajku za p-set od sedam, ali imajte to na umu za 1124 00:52:35,460 --> 00:52:36,200 Budućnost - 1125 00:52:36,200 --> 00:52:38,870 podržati ono što se naziva transakcije, gdje možete reći 1126 00:52:38,870 --> 00:52:40,990 START transakcije doslovno. 1127 00:52:40,990 --> 00:52:43,270 Nakon toga možete izvršiti dva SQL izraza. 1128 00:52:43,270 --> 00:52:45,710 I SQL, kao što ćete vidjeti u p-set sedam, izgleda malo 1129 00:52:45,710 --> 00:52:46,750 nešto kao što je ovaj. 1130 00:52:46,750 --> 00:52:48,820 Ažurirati tablicu pod nazivom računa. 1131 00:52:48,820 --> 00:52:52,550 Postavite balans stupac jednak bez obzira na Stupac trenutno 1132 00:52:52,550 --> 00:52:57,280 je minus 1.000, gdje je broj, broj računa, kao i korisnika ID, 1133 00:52:57,280 --> 00:53:00,830 iznosi 2, a zatim ažurirati Račun dot dot točku. 1134 00:53:00,830 --> 00:53:04,350 >> Dakle, laički rečeno, što ove dvije upite čini se da se radi u 1135 00:53:04,350 --> 00:53:05,840 stvarni svijet osjećaj bankarstva? 1136 00:53:05,840 --> 00:53:07,440 >> PUBLIKA: Prijenos na štednju. 1137 00:53:07,440 --> 00:53:08,020 >> DAVID Malan: Točno. 1138 00:53:08,020 --> 00:53:10,470 Prijenosom sredstava s jednog računa na drugi. 1139 00:53:10,470 --> 00:53:14,400 I ovo je još jedan primjer gdje se stvarno želite ove dvije stvari dogoditi 1140 00:53:14,400 --> 00:53:15,570 ili ne dogoditi. 1141 00:53:15,570 --> 00:53:18,880 Vi ne želite nešto da se u Srednji od njih i potencijalno zabrljati 1142 00:53:18,880 --> 00:53:22,220 matematike, ili zabrljati koliko novca imate, ili koliko 1143 00:53:22,220 --> 00:53:23,170 Novac banka ima. 1144 00:53:23,170 --> 00:53:26,890 Dakle, ono što je stvarno lijepo o transakcijama u MySQL je da, i 1145 00:53:26,890 --> 00:53:30,160 baze općenito, da su i pametni ljudi koji su implementirani 1146 00:53:30,160 --> 00:53:33,670 ove značajke shvatiti kako bi sigurni da su i od onih stvari dogoditi 1147 00:53:33,670 --> 00:53:35,120 ili uopće ne. 1148 00:53:35,120 --> 00:53:38,580 >> I ako doista su teže napraviti web stranica koja se koristi od strane ljudi na 1149 00:53:38,580 --> 00:53:41,490 kampus, ljudi u stvarnom svijetu, radi nešto u smislu pokretanja, 1150 00:53:41,490 --> 00:53:43,300 To su vrste dizajnerske odluke koje 1151 00:53:43,300 --> 00:53:45,020 postaju sve tako važno. 1152 00:53:45,020 --> 00:53:48,240 Inače, što počnete gubiti podatke, izgubit Korisnici, ili u najgorem slučaju kao 1153 00:53:48,240 --> 00:53:51,800 vidjeli smo ovdje, potencijalno izgubiti novac. 1154 00:53:51,800 --> 00:53:56,180 Pa opet, više o tome u problemu postavili sedam, te možda i za neke 1155 00:53:56,180 --> 00:53:57,530 što je u završnim projektima. 1156 00:53:57,530 --> 00:54:01,870 >> Tako ćemo promijeniti tu sliku smo imali Prije trenutak samo u još jedan način. 1157 00:54:01,870 --> 00:54:04,070 Zato mi dopustite da se zapravo vidjeti ako mogu - 1158 00:54:04,070 --> 00:54:06,030 Nope, koji je otišao. 1159 00:54:06,030 --> 00:54:06,690 Tamo je. 1160 00:54:06,690 --> 00:54:09,020 >> Dakle, ovo je mjesto gdje smo ostavili zadnji put. 1161 00:54:09,020 --> 00:54:12,390 I ispostavilo se da ćemo bacanje još jedna stvar u mix ovdje - 1162 00:54:12,390 --> 00:54:14,510 jezik zove JavaScript. 1163 00:54:14,510 --> 00:54:18,060 Dakle JavaScript zapravo uklapa u ovom komadu - 1164 00:54:18,060 --> 00:54:22,086 i nisam sasvim ostavljaju dovoljno prostora, tako da to nije sada na ljestvici. 1165 00:54:22,086 --> 00:54:23,900 OK, ovo je stvarno jadno. 1166 00:54:23,900 --> 00:54:27,075 U redu, tako da je JavaScript. 1167 00:54:27,075 --> 00:54:27,340 U redu. 1168 00:54:27,340 --> 00:54:28,760 Ja sam stvarno to rade loša. 1169 00:54:28,760 --> 00:54:29,390 U redu. 1170 00:54:29,390 --> 00:54:34,790 >> Dakle JavaScript je još jedan programski jezik, i naša posljednja, ako to pomaže 1171 00:54:34,790 --> 00:54:37,770 uvjeriti da ne postoji mnogo više od požara hidranti ovdje. 1172 00:54:37,770 --> 00:54:41,100 Dakle JavaScript je također tumačiti jezik, što znači da ne 1173 00:54:41,100 --> 00:54:42,670 sastaviti ga u nula i jedinica. 1174 00:54:42,670 --> 00:54:43,690 Vi samo ga pokrenuti. 1175 00:54:43,690 --> 00:54:47,680 No, ono što je bitno različita s JavaScript obično je da vam 1176 00:54:47,680 --> 00:54:49,815 ne može se pokrenuti na svoj web poslužitelj. 1177 00:54:49,815 --> 00:54:52,570 To ne bi raditi u Uređaj po sebi. 1178 00:54:52,570 --> 00:54:57,490 Umjesto toga, on dobiva skinuti korisnik putem HTTP u preglednik - 1179 00:54:57,490 --> 00:55:00,260 Chrome, Safari, Internet Explorer, Firefox, bilo što - 1180 00:55:00,260 --> 00:55:03,860 i to je preglednik koji izvršava ovo Posebno programski jezik. 1181 00:55:03,860 --> 00:55:08,000 >> Dakle, da bude jasno, PHP je dosad bio izvršiti bilo na zapovjednoj liniji u 1182 00:55:08,000 --> 00:55:11,290 naša crna i bijela prozor, na poslužitelju poput uređaja, računala 1183 00:55:11,290 --> 00:55:14,490 Sviđa aparat, ili je to bio izvršiti na web poslužitelju 1184 00:55:14,490 --> 00:55:15,860 radi na računalu. 1185 00:55:15,860 --> 00:55:20,490 No, tema je da PHP dosad izvršen server-side, pa 1186 00:55:20,490 --> 00:55:24,820 Korisnik i korisnikov preglednik nikada ne vidi liniju PHP koda. 1187 00:55:24,820 --> 00:55:28,530 >> U stvari, ako ste ikada otvoriti preglednik za druga vaše web stranice ili i vi 1188 00:55:28,530 --> 00:55:32,400 zapravo vidjeti PHP kod u prozoru, netko je zajebao. 1189 00:55:32,400 --> 00:55:34,950 Budući da to nije značilo da se poslao u pregledniku izravno. 1190 00:55:34,950 --> 00:55:38,150 To je trebao biti izvršen i okrenuo u nešto kao HTML. 1191 00:55:38,150 --> 00:55:40,120 >> Ali JavaScript je u suštini suprotno. 1192 00:55:40,120 --> 00:55:44,350 To je značilo da će se izvoditi u pravilu unutar od korisnikovom prozora preglednika. 1193 00:55:44,350 --> 00:55:46,840 A što vrste web stranica koristite JavaScript pa ovih dana? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> Kao i doslovno svaki popularne web stranice. 1196 00:55:52,180 --> 00:55:55,430 Svaka web stranica da ti dečki vjerojatno koristite svakodnevno koriste JavaScript za 1197 00:55:55,430 --> 00:55:57,330 Najjednostavniji i čak najseksi značajke. 1198 00:55:57,330 --> 00:55:59,800 >> Dakle, nešto poput Facebook Chat, ako ste to iskoristiti. 1199 00:55:59,800 --> 00:56:01,040 Kako se to zapravo radi? 1200 00:56:01,040 --> 00:56:05,090 Pa do sada, sve stvari s kojima sam učinio s HTML i PHP pretpostavlja da 1201 00:56:05,090 --> 00:56:08,750 li podići URL, a što pritisnete tipku Enter, a vidiš neke HTML sadržaja. 1202 00:56:08,750 --> 00:56:11,970 A što kliknete na link, koji se mijenja URL, mijenja stranicu, i ponovo učitava 1203 00:56:11,970 --> 00:56:12,740 neki novi sadržaj. 1204 00:56:12,740 --> 00:56:16,340 Kliknite na drugi URL ili poslati obrazac, što se tuče drugu stranicu i 1205 00:56:16,340 --> 00:56:17,420 vidite neke nove sadržaje. 1206 00:56:17,420 --> 00:56:22,710 >> No, s nečim poput Facebook Chat, ili Gchat ili Google Maps, rijetko 1207 00:56:22,710 --> 00:56:27,350 ne cijela stranica osvježiti tako da vidite bijeli zaslon na trenutak i 1208 00:56:27,350 --> 00:56:28,470 zatim novi sadržaj. 1209 00:56:28,470 --> 00:56:32,610 Umjesto toga, web stranice danas su dinamičko uzimajući opet obnovljeno i 1210 00:56:32,610 --> 00:56:35,570 i opet svi vrsta od iza kulisa. 1211 00:56:35,570 --> 00:56:38,560 I ispada da kada idu u nešto poput Facebooka ili Gchat, 1212 00:56:38,560 --> 00:56:43,050 ili Gmail, a ažuriranja stranica automatski bez ponovnog 1213 00:56:43,050 --> 00:56:47,630 cijeli zaslon, što se dogodilo je da Vaš preglednik je napravio svojevrsni potajno 1214 00:56:47,630 --> 00:56:49,410 dodatni HTTP zahtjeva - 1215 00:56:49,410 --> 00:56:52,740 ne za cijelih web stranicama, ali samo za male komade podataka, kao što su 1216 00:56:52,740 --> 00:56:55,740 instant poruka da je vaš prijatelj samo ti, ili promjenu statusa poslao da 1217 00:56:55,740 --> 00:56:58,210 netko samo ti, ili cvrkut poslana da je netko upravo poslao. 1218 00:56:58,210 --> 00:57:02,120 To je samo što malo zahtjeve za podatke, a zatim pomoću JavaScript, ovo 1219 00:57:02,120 --> 00:57:06,370 programski jezik, za promjenu, što Web stranica izgleda, bez 1220 00:57:06,370 --> 00:57:09,860 poslužitelja pomaže, bez poslužitelja generira taj HTML. 1221 00:57:09,860 --> 00:57:13,820 >> Tako je u kratkom, JavaScript može se koristiti onda dohvatiti ne samo nove podatke iz 1222 00:57:13,820 --> 00:57:16,750 poslužitelja bez pretovara cjelinu stranica ili podnošenjem obrasca. 1223 00:57:16,750 --> 00:57:20,060 Također se može upotrijebiti za promjenu tzv DOM - 1224 00:57:20,060 --> 00:57:21,520 Document Object Model - 1225 00:57:21,520 --> 00:57:24,620 koji je samo fancy način za rekavši drvo HTML 1226 00:57:24,620 --> 00:57:26,220 koje smo vidjeli zadnji put. 1227 00:57:26,220 --> 00:57:31,640 >> Tako se uvjeriti, kako je JavaScript sintaktički toliko slični C, kao dobro. 1228 00:57:31,640 --> 00:57:32,820 Nema glavna funkcija. 1229 00:57:32,820 --> 00:57:35,430 Vi samo početak pisanja koda i to će se izvršiti, ili 1230 00:57:35,430 --> 00:57:36,900 više ispravno interpretirati. 1231 00:57:36,900 --> 00:57:38,660 Uvjeti će izgledati ovako. 1232 00:57:38,660 --> 00:57:41,230 Ne razlikuje se od C ili PHP za tu stvar. 1233 00:57:41,230 --> 00:57:43,890 Boolean izrazi ili-ed zajedno će izgledati ovako. 1234 00:57:43,890 --> 00:57:45,590 Anded zajedno izgledati ovako. 1235 00:57:45,590 --> 00:57:47,750 >> Prekidači će izgledati ovako. 1236 00:57:47,750 --> 00:57:49,440 Za petlje će izgledati ovako. 1237 00:57:49,440 --> 00:57:51,060 Dok petlje će izgledati ovako. 1238 00:57:51,060 --> 00:57:53,316 Učiniti dok petlje će izgledati ovako. 1239 00:57:53,316 --> 00:57:54,780 >> To je nova. 1240 00:57:54,780 --> 00:57:58,753 Dakle JavaScript nije se foreach konstruirati po sebi, ali ovaj konstrukt 1241 00:57:58,753 --> 00:58:03,870 za varijablu i na polju, a ja se u to Slučaj postaje vrijednost indeksa. 1242 00:58:03,870 --> 00:58:06,880 Dakle, to je malo drugačije od onoga foreach, iako nove verzije 1243 00:58:06,880 --> 00:58:10,280 JavaScript dolaze iz svih vremena, Pa čak i ove jezične značajke 1244 00:58:10,280 --> 00:58:10,880 se razvija. 1245 00:58:10,880 --> 00:58:16,920 >> I Kao na stranu, JavaScript ovih dana Također se može koristiti na poslužitelju poput 1246 00:58:16,920 --> 00:58:19,920 PHP koristite okvir nazvan Node.js. 1247 00:58:19,920 --> 00:58:24,670 Jedan od CS50 je TFS, Kevin, dovela Seminar o Node.js koji je dostupan na 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars. 1249 00:58:26,440 --> 00:58:28,830 Dakle, ako vas zanima, znam da vam Možete koristiti ovaj na strani poslužitelja kao 1250 00:58:28,830 --> 00:58:33,870 dobro, ali to je prilično nedavno trend, ali moćan u to. 1251 00:58:33,870 --> 00:58:35,270 >> Ovaj je malo drugačiji. 1252 00:58:35,270 --> 00:58:37,910 To je polje u JavaScript. 1253 00:58:37,910 --> 00:58:40,115 A što vam se čini drugačije u odnosu na C ili PHP? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 Postoji nekoliko brzih priče možemo reći ovdje. 1256 00:58:47,420 --> 00:58:49,367 Ono što nedostaje u odnosu na PHP-u? 1257 00:58:49,367 --> 00:58:51,652 >> PUBLIKA: [nečujan]. 1258 00:58:51,652 --> 00:58:52,110 >> DAVID Malan: Da? 1259 00:58:52,110 --> 00:58:53,322 Žao nam je, opet reći? 1260 00:58:53,322 --> 00:58:54,740 >> Ivanković: Ne proglašenje tip varijable. 1261 00:58:54,740 --> 00:58:56,390 >> DAVID Malan: Nećemo proglašenje tip varijable. 1262 00:58:56,390 --> 00:58:59,630 Tako je zapravo prilično poput PHP, nismo pojašnjenje vrsta ove varijable. 1263 00:58:59,630 --> 00:59:02,670 Umjesto toga, mi smo više generički rekavši var za varijablu. 1264 00:59:02,670 --> 00:59:06,690 Nemamo PHP neprilike znak za dolar, koji je dok je zamorno 1265 00:59:06,690 --> 00:59:09,160 tipa, ne bi više jasno da nešto što je promjenjiva. 1266 00:59:09,160 --> 00:59:11,830 Dok je ovdje, mi smo nekako vratiti u C-ov pristup prema samo poziv 1267 00:59:11,830 --> 00:59:14,500 promjenjiva po imenu želimo da ga dati, kao što su brojevi. 1268 00:59:14,500 --> 00:59:17,170 I isto kao što su PHP, imamo uglate zagrade za 1269 00:59:17,170 --> 00:59:19,170 vrijednosti unutar tog polja. 1270 00:59:19,170 --> 00:59:22,490 >> Dakle varijabli u JavaScriptu također može izgledati ovako. 1271 00:59:22,490 --> 00:59:26,900 Obavijest ovdje je to niz naziva s, , ali isto tako imamo nije navedeno 1272 00:59:26,900 --> 00:59:28,750 da je niz. 1273 00:59:28,750 --> 00:59:33,160 Ovdje je ipak značajka koja ne postoje u točno na isti način u PHP-u, 1274 00:59:33,160 --> 00:59:34,460 ali pomalo sličan. 1275 00:59:34,460 --> 00:59:36,530 To je objekt u JavaScript. 1276 00:59:36,530 --> 00:59:42,110 A predmeti su vrsta švicarske vojske Nož na strukturu podataka na taj vas 1277 00:59:42,110 --> 00:59:43,900 Možete ih koristiti za bilo koji broj stvari. 1278 00:59:43,900 --> 00:59:46,860 >> Evo, na primjer, mi smo progla varijabla zove citat. 1279 00:59:46,860 --> 00:59:49,110 Vrsta te varijable je objekt. 1280 00:59:49,110 --> 00:59:53,550 Možete misliti na to kao C struct koji ima ključeve i vrijednosti. 1281 00:59:53,550 --> 00:59:55,250 Simbol je ključ. 1282 00:59:55,250 --> 00:59:57,350 FB je vrijednost, očito Oznaka dionice. 1283 00:59:57,350 --> 00:59:57,930 Zarez. 1284 00:59:57,930 --> 01:00:02,180 Cijena je još jedan ključni, a njegova je vrijednost očito s pomičnim zarezom, ili 1285 01:00:02,180 --> 01:00:06,510 Broj općenito u JavaScript, od 49,26 dolara. 1286 01:00:06,510 --> 01:00:09,030 >> Dakle, PHP nema - 1287 01:00:09,030 --> 01:00:12,980 nismo vidjeli u PHP objekata prilično kao što je ovaj, ali nismo vidjeli analognu, 1288 01:00:12,980 --> 01:00:14,093 što je ono? 1289 01:00:14,093 --> 01:00:14,980 >> PUBLIKA: [nečujan]. 1290 01:00:14,980 --> 01:00:16,110 >> DAVID Malan: Asocijativne matrice. 1291 01:00:16,110 --> 01:00:19,990 Dakle, dok je PHP ima asocijativne nizove čija je sintaksa je ikad nešto tako 1292 01:00:19,990 --> 01:00:20,370 drugačija - 1293 01:00:20,370 --> 01:00:21,780 Vidjeli smo u uglate zagrade. 1294 01:00:21,780 --> 01:00:23,860 Vidjeli smo čudne strelice simbole. 1295 01:00:23,860 --> 01:00:27,330 JavaScripta predmete, ali to govore semantička razlika i 1296 01:00:27,330 --> 01:00:29,260 drugačija sinonim za sada. 1297 01:00:29,260 --> 01:00:35,060 Međutim, kao što je na stranu, PHP također ima predmete na način da je Java i druge 1298 01:00:35,060 --> 01:00:37,810 jezici imaju objekte u objektno-orijentirano programiranje. 1299 01:00:37,810 --> 01:00:40,440 No, mi ćemo ih koristiti samo za vrste podataka za sada. 1300 01:00:40,440 --> 01:00:42,170 Objekti i asocijativne nizove. 1301 01:00:42,170 --> 01:00:44,140 >> To bi se moglo to napraviti malo jasnije. 1302 01:00:44,140 --> 01:00:45,890 Evo zašto predmet je korisno. 1303 01:00:45,890 --> 01:00:48,760 Kada želite proglasiti studenta, kao Zamyla, možemo zapravo 1304 01:00:48,760 --> 01:00:52,630 zatvoriti u kućište takoreći unutar koje protive korištenju vitičastim zagradama baš kao 1305 01:00:52,630 --> 01:00:55,060 Prije nego cijela hrpa ključeva i vrijednosti u ovdje. 1306 01:00:55,060 --> 01:00:59,150 Imamo ime, svoju kuću, i naziv Zamyla, nakon čega se kao zarez 1307 01:00:59,150 --> 01:01:00,690 obično na kraju. 1308 01:01:00,690 --> 01:01:04,840 >> Ovdje previše, to je nešto drugačija, ali i vrlo moćan 1309 01:01:04,840 --> 01:01:05,690 ovih dana. 1310 01:01:05,690 --> 01:01:08,780 Evo polje, i znam da je zbog postoji uglata zagrada gore 1311 01:01:08,780 --> 01:01:11,090 vrhu i uglata zagrada na dnu. 1312 01:01:11,090 --> 01:01:16,050 A to je ono što niz podataka tip je očito u JavaScriptu? 1313 01:01:16,050 --> 01:01:21,260 To je niz izgleda kao i tri predmeta. 1314 01:01:21,260 --> 01:01:24,580 I znam da je samo objekt zbog vitičastim zagradama. 1315 01:01:24,580 --> 01:01:28,760 I primijetiti da postoji otvoreni kovrčava brace, neke stvari, u neposrednoj blizini kovrčava brace, zarez, 1316 01:01:28,760 --> 01:01:31,180 onda još malo, zarez, i onda još malo. 1317 01:01:31,180 --> 01:01:33,800 Dakle, to je tri argumenti je dva tipkovnici. 1318 01:01:33,800 --> 01:01:36,810 >> Dakle, to je niz od tri predmeta. 1319 01:01:36,810 --> 01:01:39,940 I svaki od tih predmeta, kako se čini student ili osoblje član neke 1320 01:01:39,940 --> 01:01:42,370 sortiranje, svaki s osobnom iskaznicom, Kuća, i ime. 1321 01:01:42,370 --> 01:01:45,060 Ali ja sam nazvao nešto zove JSON - 1322 01:01:45,060 --> 01:01:47,450 JavaScript Object zapis. 1323 01:01:47,450 --> 01:01:52,060 A to je format podataka koji zapravo je tako vrlo popularna iu 1324 01:01:52,060 --> 01:01:55,100 modi ovih dana da ako pišete aplikacija koja koristi Facebook 1325 01:01:55,100 --> 01:01:59,150 API, Twitter API, stvarno je gotovo bilo API vani ovih dana, 1326 01:01:59,150 --> 01:02:02,820 uključujući i neke od CS50 vlastiti, Podaci se vratiš nije u 1327 01:02:02,820 --> 01:02:04,720 old school CSV formatu. 1328 01:02:04,720 --> 01:02:06,780 >> Budući da je opoziv CSV je super jednostavna. 1329 01:02:06,780 --> 01:02:10,230 To je samo stupovi odvojeni zarezom. 1330 01:02:10,230 --> 01:02:13,190 JSON podatke daje vam više metapodataka. 1331 01:02:13,190 --> 01:02:17,800 To suradnicima ključ sa svake vrijednosti, tako oni ne moraju samo pretpostaviti da 1332 01:02:17,800 --> 01:02:22,460 nultoga stupac je jedna vrijednost, stupac jedan je još jedan stupac dva je još jedan. 1333 01:02:22,460 --> 01:02:26,790 Sve u JSON objekt ovdje je vrsta self-opisujući, jer svaka 1334 01:02:26,790 --> 01:02:30,940 jedno od imena u ovoj datoteci je doslovno ime ispred njega kao 1335 01:02:30,940 --> 01:02:32,510 citirao niz. 1336 01:02:32,510 --> 01:02:34,950 >> Tako ćemo pogledati a Nekoliko primjera ovdje. 1337 01:02:34,950 --> 01:02:36,800 Pusti me u aparat. 1338 01:02:36,800 --> 01:02:41,000 I da me pusti u naš vhost imenik u javnosti. 1339 01:02:41,000 --> 01:02:45,590 I da me pusti u JavaScript imenik. 1340 01:02:45,590 --> 01:02:49,610 I idemo naprijed i otvoriti DOM-0.html, gdje DOM samo znači 1341 01:02:49,610 --> 01:02:51,010 Document Object Model. 1342 01:02:51,010 --> 01:02:53,490 To je stablo stvari na koje se I iz ranije. 1343 01:02:53,490 --> 01:02:54,950 >> I neka mi predložiti sljedeće. 1344 01:02:54,950 --> 01:02:57,720 Evo web stranica čije Tijelo je prilično jednostavan. 1345 01:02:57,720 --> 01:03:00,170 Dakle, ovdje dolje na dnu, Primijetit imam formu. 1346 01:03:00,170 --> 01:03:01,500 Vidjeli smo one prije. 1347 01:03:01,500 --> 01:03:07,600 Ima dva ulaza, od kojih jedan ima ID imena, od kojih jedan ima vrstu 1348 01:03:07,600 --> 01:03:09,830 podnijeti, a prva nečiji tip je tekst. 1349 01:03:09,830 --> 01:03:11,900 Dakle, ovo je zapravo zvuči prilično jednostavno. 1350 01:03:11,900 --> 01:03:13,090 >> Idemo ovdje. 1351 01:03:13,090 --> 01:03:15,390 Vratimo se na ovoj stranici ovdje. 1352 01:03:15,390 --> 01:03:21,030 Idemo u localhost, i otići u naša JavaScript imenik, i otići u 1353 01:03:21,030 --> 01:03:24,640 DOM-0, a ovdje imamo ovaj obrazac. 1354 01:03:24,640 --> 01:03:26,550 Dakle, to je očito sve to stranica radi. 1355 01:03:26,550 --> 01:03:28,740 To je polje ime s gumb Pošalji. 1356 01:03:28,740 --> 01:03:30,340 Ali ja neću koristiti PHP ovdje. 1357 01:03:30,340 --> 01:03:34,310 Ja ću učiniti sve što je strani klijenta takoreći u JavaScriptu kako slijedi. 1358 01:03:34,310 --> 01:03:39,100 >> Obavijest da sam doista sam dao ime Polje tog ulaza jedinstveno 1359 01:03:39,100 --> 01:03:42,350 identifikator, koji će zapravo spasi me neko vrijeme u trenutak. 1360 01:03:42,350 --> 01:03:45,480 I primijetiti sam upoznao još jednu oznaku u glavi mojoj web stranici, 1361 01:03:45,480 --> 01:03:46,565  tag. 1362 01:03:46,565 --> 01:03:50,120 >> Tako da je u tom smislu da je JavaScript programski jezik na strani klijenta. 1363 01:03:50,120 --> 01:03:55,020 U ovom slučaju, kao što su CSS, ja sam stavio to ravno u mome HTML. 1364 01:03:55,020 --> 01:03:58,810 No, obavijest sam proglašen funkciju da izgleda nešto poput PHP 1365 01:03:58,810 --> 01:04:01,530 sintaktički, ali to je zapravo JavaScript, jer opet, to je 1366 01:04:01,530 --> 01:04:03,920 klijenta u pregledniku. 1367 01:04:03,920 --> 01:04:07,590 I pokušajte pogoditi što se to događa na to, iako neki od sintakse 1368 01:04:07,590 --> 01:04:09,338 Ovdje je nova. 1369 01:04:09,338 --> 01:04:11,760 >> PUBLIKA: Pozdravi tko. 1370 01:04:11,760 --> 01:04:14,020 >> DAVID Malan: Bit će to pozdraviti onome tko posjeti ovu stranicu. 1371 01:04:14,020 --> 01:04:15,120 Pa kako? 1372 01:04:15,120 --> 01:04:18,070 >> Dakle primjetiti, ispada u JavaScriptu postoji alert () funkcija. 1373 01:04:18,070 --> 01:04:22,840 To je vrlo tužno vrsta funkcija koja zapravo samo teži smetati korisnicima. 1374 01:04:22,840 --> 01:04:25,440 To nije ona koju stvarno treba koristiti obično, ali je brz i prljave 1375 01:04:25,440 --> 01:04:27,710 način vrsta ispisa nešto na grafičkom korisnika 1376 01:04:27,710 --> 01:04:29,180 sučelje, poput pregledniku. 1377 01:04:29,180 --> 01:04:31,400 Uočite da se ovdje imam niz u jednostrukim navodnicima. 1378 01:04:31,400 --> 01:04:36,010 Ispada da je za razliku od C, JavaScript zapravo može imati koristite jednu 1379 01:04:36,010 --> 01:04:38,730 citira, a iskreno, to je samo neka vrsta od stilske konvencije među 1380 01:04:38,730 --> 01:04:41,180 JavaScript programera koristiti jednostruke navodnike. 1381 01:04:41,180 --> 01:04:43,750 PHP, oni zapravo imaju malo drugačije značenje. 1382 01:04:43,750 --> 01:04:45,810 No, za sada, samo znam da je to je jedini razlog. 1383 01:04:45,810 --> 01:04:49,270 Konvencija u JavaScriptu je često Koristite jednostruke navodnike, ali smo mogli koristiti 1384 01:04:49,270 --> 01:04:50,950 dupli navodnici u obje zemlje, kao dobro. 1385 01:04:50,950 --> 01:04:52,610 >> Dakle, ovo je interesantno. 1386 01:04:52,610 --> 01:04:56,430 Sjetite se posljednji put da smo imali da Slika na zaslonu koji je nacrtao drvo 1387 01:04:56,430 --> 01:04:59,720 gdje ste imali HTML čvor, te Glavni čvor, a tijelo čvor, 1388 01:04:59,720 --> 01:05:00,800 i onda neki tekst. 1389 01:05:00,800 --> 01:05:04,700 No, postojao je jedan poseban čvor na Sam vrh koji sam nazvao dokument. 1390 01:05:04,700 --> 01:05:08,260 Pa, ispada u JavaScriptu, bilo put napisati program u JavaScriptu 1391 01:05:08,260 --> 01:05:11,040 u pregledniku, imate pristup posebna globalna varijabla. 1392 01:05:11,040 --> 01:05:14,130 Slično u duhu u PHP-a superglobals, ovo se zove u 1393 01:05:14,130 --> 01:05:16,050 sve su mala slova dokument. 1394 01:05:16,050 --> 01:05:21,480 >> To je kao struct, ali ovaj struct također ima funkcije unutar nje. 1395 01:05:21,480 --> 01:05:23,790 Dakle C rekonstruirati samo ima podatke obično. 1396 01:05:23,790 --> 01:05:29,060 Ali JavaScript objekt, jer to tehnički je također ima funkcije, 1397 01:05:29,060 --> 01:05:31,830 inače poznat kao metoda unutar nje. 1398 01:05:31,830 --> 01:05:35,750 A možete pozvati funkciju unutar ovaj objekt doslovno radi svoj 1399 01:05:35,750 --> 01:05:39,610 naziv, točka, a zatim ime funkcije, ili pak način. 1400 01:05:39,610 --> 01:05:41,160 To je samo sinonim, stvarno. 1401 01:05:41,160 --> 01:05:42,450 >> A što je ova funkcija je činiti? 1402 01:05:42,450 --> 01:05:43,840 Možete vrsta pogoditi iz njegova imena. 1403 01:05:43,840 --> 01:05:45,590 Nabavite elementa po ID. 1404 01:05:45,590 --> 01:05:50,040 Dakle, ovo će pretražiti web stranicu, traži to drvo, u potrazi za 1405 01:05:50,040 --> 01:05:55,210 god čvor, AKA elementa, ima jedinstveni ID quote Citat završen imena. 1406 01:05:55,210 --> 01:05:56,560 I onda ono što ću učiniti? 1407 01:05:56,560 --> 01:06:00,350 Ja ću dobiti vrijednost unutar da je čvor u stablu, a ja ću 1408 01:06:00,350 --> 01:06:02,580 nekako pozdraviti tim imenom. 1409 01:06:02,580 --> 01:06:05,360 >> Dakle uzeti pogodak, iako smo si ne ovo vidio još, što učiniti plus 1410 01:06:05,360 --> 01:06:07,396 simboli znače ovdje i ovdje vjerojatno? 1411 01:06:07,396 --> 01:06:08,230 >> PUBLIKA: spojite. 1412 01:06:08,230 --> 01:06:09,220 >> DAVID Malan: spojite. 1413 01:06:09,220 --> 01:06:11,290 Točno, i to su samo vrsta dizajn odluke 1414 01:06:11,290 --> 01:06:12,280 ljudi su prije mnogo godina. 1415 01:06:12,280 --> 01:06:15,190 U PHP-u, što spojite stvari s točkicama. 1416 01:06:15,190 --> 01:06:18,800 U C, skočiti kroz nekoliko obruč i poziv funkcije poput strCopyDatabaseOK () ili 1417 01:06:18,800 --> 01:06:20,600 strcat () ili druge takve funkcije. 1418 01:06:20,600 --> 01:06:22,060 No, u JavaScript, koristite pluses. 1419 01:06:22,060 --> 01:06:24,770 Dakle, ovo je samo nadovezivanjem tri žice - 1420 01:06:24,770 --> 01:06:27,850 Pozdrav, ime i prezime, a zatim uskličnik. 1421 01:06:27,850 --> 01:06:30,390 >> Dakle, kada i zašto je ova funkcija zove iako? 1422 01:06:30,390 --> 01:06:33,150 Pa, pokušajte pogoditi iz HTML na dnu. 1423 01:06:33,150 --> 01:06:35,810 Zašto je pozdraviti () zove, ili kada? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> Očito, kao najbolje što mogu reći, na podnijeti, kada se ovaj oblik podnosi, 1426 01:06:44,030 --> 01:06:47,200 Ja ću učiniti sve što je unutar tih citata. 1427 01:06:47,200 --> 01:06:50,900 I konkretno, idem zvati pozdraviti (), a zatim se vratiti false. 1428 01:06:50,900 --> 01:06:53,090 >> Pa, da vidimo što je neto Učinak ovdje je na prvom mjestu. 1429 01:06:53,090 --> 01:06:58,290 Pa neka mi ići naprijed i upišite u, recimo, Loren, Podnijeti. 1430 01:06:58,290 --> 01:06:59,440 Pozdrav Loren. 1431 01:06:59,440 --> 01:07:02,990 Da vidimo je li možda to bio samo sretan provedba. 1432 01:07:02,990 --> 01:07:03,200 Nope. 1433 01:07:03,200 --> 01:07:05,990 Pa to je da upišete što god ime zapravo sam tamo stavio. 1434 01:07:05,990 --> 01:07:07,970 >> Ali primijetiti ono što ne mijenja. 1435 01:07:07,970 --> 01:07:10,360 URL je još uvijek dom-0.html. 1436 01:07:10,360 --> 01:07:11,820 Nema register.php. 1437 01:07:11,820 --> 01:07:13,110 Nema drugi file. 1438 01:07:13,110 --> 01:07:14,930 Nema action atribut. 1439 01:07:14,930 --> 01:07:19,720 Pa što je ovo povratak false valjda radi? 1440 01:07:19,720 --> 01:07:23,660 Zašto sam pozivom pozdraviti (), a zatim povratka vjerojatno lažna? 1441 01:07:23,660 --> 01:07:26,420 Ono što se obično događa kad kliknete Slanje u obliku koji još imamo 1442 01:07:26,420 --> 01:07:27,854 Vidio je u posljednjih tjedan dana? 1443 01:07:27,854 --> 01:07:29,900 >> PUBLIKA: [nečujan]. 1444 01:07:29,900 --> 01:07:30,860 >> DAVID Malan: To ide negdje, zar ne? 1445 01:07:30,860 --> 01:07:32,720 To vrijedi i za neke odredišni URL. 1446 01:07:32,720 --> 01:07:34,120 Ali ja ne želim da se to dogodi ovdje. 1447 01:07:34,120 --> 01:07:37,620 Želim da moja web stranica se u potpunosti dinamična kao što su Gmail, gdje nakon što ste 1448 01:07:37,620 --> 01:07:38,650 postoji, ti ostani tamo. 1449 01:07:38,650 --> 01:07:42,900 URL ne mijenja na način da ukazuje cijela stranica pretovara. 1450 01:07:42,900 --> 01:07:46,680 Umjesto toga, ja samo želim da se nešto promijeni kao što je tiskanje nešto 1451 01:07:46,680 --> 01:07:48,320 Ovdje na zaslonu. 1452 01:07:48,320 --> 01:07:49,630 >> Pa neka mi to očistiti do malo. 1453 01:07:49,630 --> 01:07:55,370 Dopustite mi da se otvori a ne Dom-0, ali neka mi se otvori DOM-dva. 1454 01:07:55,370 --> 01:07:57,350 Samo tako da ste vidjeli neku sintaksu ovdje. 1455 01:07:57,350 --> 01:08:02,080 >> Ispada da je ono što smo upravo nisam se koriste sirovu JavaScript. 1456 01:08:02,080 --> 01:08:04,420 Dakle, ovo je uistinu jezik JavaScript. 1457 01:08:04,420 --> 01:08:07,340 Neki od vas možda znaju Knjižnica zove jQuery. 1458 01:08:07,340 --> 01:08:09,980 >> Tako jQuery nije ista stvar kao i JavaScript. 1459 01:08:09,980 --> 01:08:14,110 To je samo knjižnica koja stvarno pametna momak je napisao i popularizirao kao 1460 01:08:14,110 --> 01:08:18,100 da gotovo svi u svijetu danas jQuery koristi prilikom korištenja JavaScript. 1461 01:08:18,100 --> 01:08:20,890 I na prvi pogled, iskreno, izgleda malo više zagonetan. 1462 01:08:20,890 --> 01:08:24,990 Ali što ćete, pogotovo ako idete ima svoj konačni projekt s weba 1463 01:08:24,990 --> 01:08:29,029 Razvoj, vidjet ćete da je to čisti stvari i štedi vam dosta 1464 01:08:29,029 --> 01:08:30,229 nekoliko linija koda. 1465 01:08:30,229 --> 01:08:33,189 >> Pa neka je samo pogledao kako ovaj oblik radi. 1466 01:08:33,189 --> 01:08:35,664 Obavijest što sam očito ukloniti iz HTML-a? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 Nema na dostavi rukovatelj da se tako izrazim. 1469 01:08:40,630 --> 01:08:41,470 Nema atributa. 1470 01:08:41,470 --> 01:08:43,359 Jer znate, ono Ja stvarno ne sviđa? 1471 01:08:43,359 --> 01:08:45,640 Osjećao sam se kao da mi je padala u stare navike postoji. 1472 01:08:45,640 --> 01:08:49,340 Baš kao što je počeo osjećati neuredan to izmiješati obje CSS s 1473 01:08:49,340 --> 01:08:52,149 HTML, jer ste vrsta bacanje različitih jezika diljem 1474 01:08:52,149 --> 01:08:56,180 mjesto, na sličan je počelo osjećati kao loš put da ide prema dolje, gdje 1475 01:08:56,180 --> 01:09:01,069 Dajem JavaScript kod unutar mojih HTML umjesto da ga factoring out. 1476 01:09:01,069 --> 01:09:02,279 >> Dakle, to je pouka ovdje. 1477 01:09:02,279 --> 01:09:05,080 U DOM-2.html, ja sam ga factoring out. 1478 01:09:05,080 --> 01:09:07,399 I ja radim stvari malo drugačije. 1479 01:09:07,399 --> 01:09:09,630 Za sada, ja ću mahati ruke na što to zapravo radi 1480 01:09:09,630 --> 01:09:10,590 ispod poklopca motora. 1481 01:09:10,590 --> 01:09:14,210 Ali samo za sada pretpostavljaju da je taj prvi linija koda u ovoj biblioteci 1482 01:09:14,210 --> 01:09:18,170 zove jQuery samo znači kada Dokument je spreman, učinite sljedeće. 1483 01:09:18,170 --> 01:09:20,080 >> Budući da web stranice može potrajati neko vrijeme za učitavanje. 1484 01:09:20,080 --> 01:09:23,029 Možda ćete biti na spor internet veza, a to bi moglo biti vrti 1485 01:09:23,029 --> 01:09:25,290 i vrti, a na kraju ga je napunjena. 1486 01:09:25,290 --> 01:09:29,060 To linija koda samo kaže čekati do cijela stranica je spremna, dokument 1487 01:09:29,060 --> 01:09:31,189 je spreman, prije izvršenja ovaj kod. 1488 01:09:31,189 --> 01:09:34,390 >> I sada primijetiti, ovo je vjerojatno Najkorisniji prvi 1489 01:09:34,390 --> 01:09:36,189 oduzeti jQuery. 1490 01:09:36,189 --> 01:09:42,140 Ova linija je ovdje vrlo sličan u duhu na ovo mnogo dulje linije. 1491 01:09:42,140 --> 01:09:46,920 Dok je u sirovom JavaScript kod, postoji postoji dokument globalni objekt koji 1492 01:09:46,920 --> 01:09:50,460 ima funkciju nazvanu getElementById (), ljudi koji su pisali 1493 01:09:50,460 --> 01:09:55,720 jQuery pojednostavljena da bi samo reći znak za dolar, a zatim unutar 1494 01:09:55,720 --> 01:10:00,250 zagrade stavio dva citati, a zatim staviti ljestve simbol slijedi 1495 01:10:00,250 --> 01:10:02,250 jedinstveni ID želite zgrabiti. 1496 01:10:02,250 --> 01:10:06,170 Tako da je jednak document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> U međuvremenu,. Podnijeti samo znači da se na podnošenje bilo kojem obliku si 1498 01:10:11,090 --> 01:10:14,240 pozivajući se na lijevoj strani, idite naprijed i izvršiti to. 1499 01:10:14,240 --> 01:10:16,600 No, to je sada znatiželja previše. 1500 01:10:16,600 --> 01:10:19,560 Ono što je čudno o tome što Ja sam istaknuo ovdje? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 Ne samo da je to neka vrsta sintaktički Nova, tu je i nešto nedostaje. 1503 01:10:28,594 --> 01:10:29,558 >> Ivanković: To je samo nazvao funkcija? 1504 01:10:29,558 --> 01:10:31,970 To se ne zove na oprezu? 1505 01:10:31,970 --> 01:10:32,440 >> DAVID Malan: Da. 1506 01:10:32,440 --> 01:10:35,450 Pa, tako alert () je dolje ovdje, da bude fer. 1507 01:10:35,450 --> 01:10:39,520 No, tu se ne spominje ime, kao što znate, Foo ili 1508 01:10:39,520 --> 01:10:40,980 nešto ovdje. 1509 01:10:40,980 --> 01:10:43,830 I doista, to je jedna od značajki JavaScript da je sasvim 1510 01:10:43,830 --> 01:10:45,370 moćan, ali i sasvim novo. 1511 01:10:45,370 --> 01:10:47,460 I PHP zapravo ima to kao dobro. 1512 01:10:47,460 --> 01:10:49,500 >> Pustite me da idem naprijed i učiniti nešto na brzinu. 1513 01:10:49,500 --> 01:10:52,030 Dopustite mi da ide naprijed i staviti to ovdje. 1514 01:10:52,030 --> 01:10:52,600 Dopustite mi da to učinite. 1515 01:10:52,600 --> 01:10:53,690 Funkcija. 1516 01:10:53,690 --> 01:10:56,455 Nazovimo ovu rukovatelj (). 1517 01:10:56,455 --> 01:10:58,290 Rukovatelj funkcija da se tako izrazim. 1518 01:10:58,290 --> 01:11:00,110 Nešto što obrađuje neku operaciju. 1519 01:11:00,110 --> 01:11:02,700 Dopustite mi počistiti moj uvlačenje. 1520 01:11:02,700 --> 01:11:04,380 I staviti to ovdje. 1521 01:11:04,380 --> 01:11:06,090 I staviti to ovdje. 1522 01:11:06,090 --> 01:11:06,470 Yep. 1523 01:11:06,470 --> 01:11:07,060 OK. 1524 01:11:07,060 --> 01:11:10,300 >> Tako sada imam funkciju nazvanu rukovatelj () da ja stvarno ne znam 1525 01:11:10,300 --> 01:11:10,890 što to još. 1526 01:11:10,890 --> 01:11:12,710 To je samo još uvijek ima takve stvari. 1527 01:11:12,710 --> 01:11:13,900 Ups. 1528 01:11:13,900 --> 01:11:15,820 Uzeo previše. 1529 01:11:15,820 --> 01:11:18,490 Učinimo to. 1530 01:11:18,490 --> 01:11:18,990 U redu. 1531 01:11:18,990 --> 01:11:20,240 Oprostite. 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 U redu. 1534 01:11:23,690 --> 01:11:24,720 Dopustite mi da to učinite. 1535 01:11:24,720 --> 01:11:25,020 OK. 1536 01:11:25,020 --> 01:11:27,040 To izgleda lijepo i ravno proslijediti sada. 1537 01:11:27,040 --> 01:11:29,090 Dopustite mi da to učinite. 1538 01:11:29,090 --> 01:11:29,860 Učinite to. 1539 01:11:29,860 --> 01:11:30,950 I OK. 1540 01:11:30,950 --> 01:11:33,080 Tako sada, neka je stavi ovo ovdje. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 Nema više programiranja u letu. 1543 01:11:37,270 --> 01:11:37,900 OK. 1544 01:11:37,900 --> 01:11:40,000 >> Pa sad, idemo natrag gdje je počeo priču. 1545 01:11:40,000 --> 01:11:43,530 Prije toga, rekao sam da je ovo crta znači kada je dokument spreman, otići 1546 01:11:43,530 --> 01:11:44,380 naprijed i to učiniti. 1547 01:11:44,380 --> 01:11:45,660 Što želim učiniti? 1548 01:11:45,660 --> 01:11:49,070 Pa konkretno, želim ići naprijed i učiniti sljedeće. 1549 01:11:49,070 --> 01:11:53,700 Izvršiti ovu liniju koda, a zatim ono što želim učiniti je nazvati ovo 1550 01:11:53,700 --> 01:11:56,370 funkcionirati kada se obrazac podnosi. 1551 01:11:56,370 --> 01:11:57,730 >> Sada je to ono što je interesantno. 1552 01:11:57,730 --> 01:11:59,170 To nije samo po sebi funkciju. 1553 01:11:59,170 --> 01:12:02,540 Obavijest Ja ne stavljajući zagrade Ovdje na normalan način. 1554 01:12:02,540 --> 01:12:06,800 Ja sam doslovno prolazi funkciju nazvanu vodič () na drugu funkciju 1555 01:12:06,800 --> 01:12:10,800 zove podnijeti () kao argument kao iako je kao varijable. 1556 01:12:10,800 --> 01:12:14,290 I ovo je jedna od značajki JavaScript je funkcija sami 1557 01:12:14,290 --> 01:12:15,710 su zapravo samo objekte. 1558 01:12:15,710 --> 01:12:18,350 U stvari, oni su zapravo samo varijable neke vrste. 1559 01:12:18,350 --> 01:12:21,340 A ako je naziv funkcije je rukovatelj (), nema razloga da ne mogu 1560 01:12:21,340 --> 01:12:23,390 to prođe u kao argument ovdje. 1561 01:12:23,390 --> 01:12:27,530 A to znači kad se oblik s ID demo je 1562 01:12:27,530 --> 01:12:29,320 podnesen, poziva ovu funkciju. 1563 01:12:29,320 --> 01:12:32,770 >> Ali sada, ako sam poništiti sve to, zašto onda sam možda napraviti 1564 01:12:32,770 --> 01:12:34,850 Prije ovog trenutka? 1565 01:12:34,850 --> 01:12:36,840 Pa, ovo je anonimna funkcija. 1566 01:12:36,840 --> 01:12:41,080 Jer iskreno, shvatio sam zašto sam ja gnjavi gubiti vrijeme proglašenja 1567 01:12:41,080 --> 01:12:45,540 funkcija zove rukovatelj () samo nazvati je u jednom i samo jednom mjestu? 1568 01:12:45,540 --> 01:12:48,640 Ako mi ne treba ime, a ja ne treba ga zvati više od jednog mjesta, 1569 01:12:48,640 --> 01:12:51,200 neka je samo implementirati funkciju upravo tamo gdje mi je potrebna. 1570 01:12:51,200 --> 01:12:55,190 I tako JavaScript i PHP podržati ono što nazivaju anonimne funkcije koje 1571 01:12:55,190 --> 01:12:57,900 dopustite mi da učinite upravo to ovdje. 1572 01:12:57,900 --> 01:12:59,570 >> No, mi samo grebanje po površini. 1573 01:12:59,570 --> 01:13:02,430 Idemo zafrkavati sa samo par Konačni primjeri ovdje. 1574 01:13:02,430 --> 01:13:04,600 >> Ako odem u quote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 Uočite da je ovo zapravo PHP funkcija, PHP program, koji sam napisao 1577 01:13:11,870 --> 01:13:15,270 da očekuje HTTP parametar zove simbol, a ja mogu proći u 1578 01:13:15,270 --> 01:13:16,730 vrijednost kao i FB. 1579 01:13:16,730 --> 01:13:20,010 A ako ćemo zapravo gledati na izvoru broj, to je upite free website 1580 01:13:20,010 --> 01:13:23,680 zove Yahoo Finance, baš kao p-set sedam godina, a to je povratak na meni 1581 01:13:23,680 --> 01:13:26,580 nešto što na prvi pogled format poznat je JSON - 1582 01:13:26,580 --> 01:13:28,010 JavaScript Object zapis. 1583 01:13:28,010 --> 01:13:28,810 To je samo objekt. 1584 01:13:28,810 --> 01:13:32,500 Obavijest vitičastim zagradama, citati, debelog crijeva, a zarezi. 1585 01:13:32,500 --> 01:13:34,720 >> Sada je u međuvremenu, ovo je baš fora. 1586 01:13:34,720 --> 01:13:38,520 Budući da sam vjerojatno može koristiti za programiranje jezik za stvaranje URL-ova 1587 01:13:38,520 --> 01:13:40,370 da izgleda ovako dinamično, zar ne? 1588 01:13:40,370 --> 01:13:43,340 Ja to ne mogu promijeniti na Google i vratiti Google-a 1589 01:13:43,340 --> 01:13:47,930 cijena dionica od 1,017.55 $. 1590 01:13:47,930 --> 01:13:49,640 Tako ćemo vidjeti, ako ne možemo koristiti ovaj sada. 1591 01:13:49,640 --> 01:13:56,590 >> Pusti me da Ajax 0 ovdje, koji izgleda ovako. 1592 01:13:56,590 --> 01:13:59,750 To je samo web stranica koja ima Obrazac s gumb. 1593 01:13:59,750 --> 01:14:05,860 Dopustite mi ovdje ići naprijed i upisati YHOO za Yahoo dionica simbol, kliknite Get 1594 01:14:05,860 --> 01:14:10,530 Citat, a sada primijetiti sam stečen upozorenje s 32.86. 1595 01:14:10,530 --> 01:14:14,050 >> Dopustite mi zapravo ide na ljubitelj verziji ovo stranica, verzija dva, a 1596 01:14:14,050 --> 01:14:17,530 upisati recimo Microsoft, MSFT. 1597 01:14:17,530 --> 01:14:18,410 Dobiti Citat. 1598 01:14:18,410 --> 01:14:19,850 I sada primjetiti, nema upozorenja. 1599 01:14:19,850 --> 01:14:22,770 Obavijest gdje piše cijena da se određuje? 1600 01:14:22,770 --> 01:14:27,060 Tu je najjednostavniji od primjera koji upućuje na ono što Gchat i Facebook 1601 01:14:27,060 --> 01:14:30,070 Chat, i Gmail, a drugi kao Web stranice su radili tako da su stvarno 1602 01:14:30,070 --> 01:14:31,290 mijenja web stranicu. 1603 01:14:31,290 --> 01:14:31,800 >> Primijetiti. 1604 01:14:31,800 --> 01:14:33,120 Dopustite mi da se ponovno učitati stranicu. 1605 01:14:33,120 --> 01:14:35,080 Dopustite mi da se otvori inspektore Chromea. 1606 01:14:35,080 --> 01:14:36,890 Pusti me na elemente tab ovdje. 1607 01:14:36,890 --> 01:14:42,310 Sada primijetiti ako sam zumirati ovdje i otvoriti ovaj gore, primijetiti da je ovo moj 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - moj Document Object Model. 1609 01:14:44,500 --> 01:14:45,920 Ovo je moja HTML. 1610 01:14:45,920 --> 01:14:48,750 Ali sada primjetiti, iako to ide biti malo teško vidjeti u oba 1611 01:14:48,750 --> 01:14:52,080 mjesta u isto vrijeme, ako sam upisati FB ovdje gore, gledati dno 1612 01:14:52,080 --> 01:14:54,110 zaslona samo. 1613 01:14:54,110 --> 01:14:57,720 >> To je zapravo mijenja moja HTML u letu. 1614 01:14:57,720 --> 01:15:01,670 I to je to vrlo jednostavno radiš nešto poput ovoga. 1615 01:15:01,670 --> 01:15:06,800 Ako sam otvoriti Ajax 2, obavijest o provedbi nešto kao seksi kao 1616 01:15:06,800 --> 01:15:09,560 da je, iako je to prilično ružno, ali kao sofisticiran kao da 1617 01:15:09,560 --> 01:15:11,910 Funkcionalno, to ima neke HTML na dnu. 1618 01:15:11,910 --> 01:15:13,810 Ali primijetite sam se označiti. 1619 01:15:13,810 --> 01:15:16,640 Nismo koristili ovo prije, ali ovo je kao što je, ali to ne prisiljava 1620 01:15:16,640 --> 01:15:17,840 sve na novoj liniji. 1621 01:15:17,840 --> 01:15:20,830 To samo čini pravokutni regiju Na istoj liniji bitno. 1622 01:15:20,830 --> 01:15:22,870 >> Obavijest da sam dao mu je ID cijeni. 1623 01:15:22,870 --> 01:15:26,800 I ispostavilo se pomoću istog JavaScript knjižnica, imam funkciju 1624 01:15:26,800 --> 01:15:30,440 zove citat () koja se zove kad god Obrazac se podnosi. 1625 01:15:30,440 --> 01:15:31,800 A ono što ja radim je to. 1626 01:15:31,800 --> 01:15:35,730 Ja sam proglašenja varijablu u JavaScriptu zove url, štedi vrijednost 1627 01:15:35,730 --> 01:15:38,650 quote.php? simbol =. 1628 01:15:38,650 --> 01:15:44,220 Drugim riječima, ja sam na početku pripremiti HTTP zahtjev, a zatim 1629 01:15:44,220 --> 01:15:49,250 Ja sam nadovezivanjem na koji s plus sve što je element s ID 1630 01:15:49,250 --> 01:15:54,190 od simbol, koji obavijest je da Tekstualno polje pravo ovdje. 1631 01:15:54,190 --> 01:15:56,630 Dakle, baš kao što smo imali oblike u prošlosti. 1632 01:15:56,630 --> 01:16:01,450 >> I onda ispada u jQuery, ako nazvati. Val (), koji se poziva od Val 1633 01:16:01,450 --> 01:16:05,900 funkcija, funkcija vrijednost, koja dobiva god korisnik unese 1634 01:16:05,900 --> 01:16:08,920 I onda sve mrežnog prometa što se događa je to. 1635 01:16:08,920 --> 01:16:11,230 $. GetJSON. 1636 01:16:11,230 --> 01:16:13,720 >> I kao stranu, znak za dolar je Samo stenogram notacija. 1637 01:16:13,720 --> 01:16:16,860 To je stvarno jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 Pusti me da JSON s ovim-om, a kad Zahtjev se vrati, to nazivamo 1639 01:16:21,520 --> 01:16:26,550 Funkcija i proći u kao argument što se vratio s poslužitelja. 1640 01:16:26,550 --> 01:16:31,205 >> Dakle, drugim riječima, ako idem natrag preglednik, i ja vratiti u quote.php, 1641 01:16:31,205 --> 01:16:35,590 ono što je moj browser radi je dobivanje Ovaj blok podataka. 1642 01:16:35,590 --> 01:16:38,930 I kad idem na ovu web stranicu ovdje, primijetiti ako smo umjesto toga ići na mrežu 1643 01:16:38,930 --> 01:16:43,820 Kartica i to jasno, a zatim upišite nešto kao GOOG za Google i dobiti 1644 01:16:43,820 --> 01:16:46,340 Citat, primijetili stranica nije promijenio. 1645 01:16:46,340 --> 01:16:50,990 No HTTP zahtjev podnesen, a što Vratio sam se ovdje, ako gledamo 1646 01:16:50,990 --> 01:16:56,130 odgovor je cijela hrpa JSON da smo konačno pristupiti s 1647 01:16:56,130 --> 01:16:58,070 ova jednostavna crta ovdje. 1648 01:16:58,070 --> 01:17:00,150 >> Data je ono što je stečen s poslužitelja. 1649 01:17:00,150 --> 01:17:02,120 Cijena je naziv Ključ mi je stalo. 1650 01:17:02,120 --> 01:17:05,230 Dakle data.price mi daje da. 1651 01:17:05,230 --> 01:17:07,540 >> Sada međuvremenu, i to je posljednji primjer. 1652 01:17:07,540 --> 01:17:09,280 To možete učiniti još više sa stranice. 1653 01:17:09,280 --> 01:17:12,440 One zapravo, i dvije. 1654 01:17:12,440 --> 01:17:14,780 Mi može vratiti tag, ako se sjećate to. 1655 01:17:14,780 --> 01:17:15,850 To je JavaScript. 1656 01:17:15,850 --> 01:17:17,110 Možemo to učiniti. 1657 01:17:17,110 --> 01:17:17,690 Vrlo uzbudljivo. 1658 01:17:17,690 --> 01:17:18,800 Ostavit ćemo to kao Cliffhanger. 1659 01:17:18,800 --> 01:17:21,590 >> No, uzbudljivije, možete raditi stvari kao što je ovaj. 1660 01:17:21,590 --> 01:17:25,940 Ako idem na Geolocation-1, ispada Chrome da zna da smo na 1661 01:17:25,940 --> 01:17:30,672 zemljopisna duljina širina 42.37. -71,10. 1662 01:17:30,672 --> 01:17:32,940 Dakle, postoji još postoji na raspolaganju. 1663 01:17:32,940 --> 01:17:34,290 No, više o tome sljedeći tjedan. 1664 01:17:34,290 --> 01:17:35,540 Vidimo se u ponedjeljak. 1665 01:17:35,540 --> 01:17:37,558