1 00:00:00,000 --> 00:00:01,940 >> [Glazbom] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID Malan: Ovo je CS 50, a ovo je početak tjedna devet. 4 00:00:14,620 --> 00:00:18,240 A ono što smo mislili da ćemo to danas nije samo zatvoriti poglavlje o prošlotjednom 5 00:00:18,240 --> 00:00:22,670 Materijal gdje smo usredotočeni na poslužitelju strana web programiranje s PHP i SQL, 6 00:00:22,670 --> 00:00:23,549 neke stvari baze podataka. 7 00:00:23,549 --> 00:00:25,590 Razgovarat ćemo o malo Sigurnost danas i onda 8 00:00:25,590 --> 00:00:29,590 prijelaz na strani klijenta programiranje jezik poznat kao JavaScript. 9 00:00:29,590 --> 00:00:31,330 Ali prvo, neki otkupljenje. 10 00:00:31,330 --> 00:00:35,030 >> Možda se sjećate da je Srijeda, sam krenuo 11 00:00:35,030 --> 00:00:37,550 napisati web stranicu koja uzeo je u korisnikov ulaz 12 00:00:37,550 --> 00:00:41,120 pomoću HTML obrazac koji se zatim pohranjuju da korisnik ulazni imena, telefon 13 00:00:41,120 --> 00:00:43,124 Brojevi i mobitel nositelji u bazi podataka. 14 00:00:43,124 --> 00:00:45,540 A onda sam imao malo naredbu Linija scenarij napisan u PHP 15 00:00:45,540 --> 00:00:47,956 koji je trebao ponoviti više redaka u bazi podataka 16 00:00:47,956 --> 00:00:49,400 i slati SMS poruke. 17 00:00:49,400 --> 00:00:53,870 Unatoč nekoliko, nekoliko pokušaja, mi nisu dobili taj rad do kraja. 18 00:00:53,870 --> 00:00:57,820 >> Tako sam proveo cijeli ovaj tjedan raditi na taj broj kako bi dobili nas prošlosti točke 19 00:00:57,820 --> 00:01:01,220 tamo gdje smo stali, pri čemu svi Dobio sam do kraja u srijedu 20 00:01:01,220 --> 00:01:05,500 je ovaj tekst poruke od Margo kao što sam se borio, 21 00:01:05,500 --> 00:01:09,940 nakon čega slijedi SMS poruke iz drugoga kolega, Imate ovu Davida. 22 00:01:09,940 --> 00:01:14,030 Slijedi ove, predivno ohrabrujući. 23 00:01:14,030 --> 00:01:15,840 Zadržao na ide, vrlo ohrabrujuće. 24 00:01:15,840 --> 00:01:20,960 Skoro sam ga dobio do then-- i to je napomena da je završila u srijedu. 25 00:01:20,960 --> 00:01:25,850 A onda je zapravo možda i moj favorit, Trenutak kasnije, taj je došao u. 26 00:01:25,850 --> 00:01:27,000 Prokletstvo live stream. 27 00:01:27,000 --> 00:01:31,080 >> Tako je danas, možemo popraviti ovo s brzim pogled na ono što sam učinio tada. 28 00:01:31,080 --> 00:01:35,440 Dakle, sve ove kôd je dostupan online od prošlotjednog, tjedan osam, 29 00:01:35,440 --> 00:01:36,300 izvorni kod. 30 00:01:36,300 --> 00:01:39,425 I vidjet ćete da sam prošao, a ja zapravo očistio stvari malo. 31 00:01:39,425 --> 00:01:42,080 Upoznao sam par drugoga značajke SQL baze podataka. 32 00:01:42,080 --> 00:01:45,300 Na primjer, umjesto samo bi nositelj var char 33 00:01:45,300 --> 00:01:47,310 kao što mislim da sam učinio u letu prošlog tjedna. 34 00:01:47,310 --> 00:01:49,820 Umjesto da sam ga definira kao ono što se naziva nabrajanja. 35 00:01:49,820 --> 00:01:53,310 >> A neki od vas možda vidio ovo kao što smo istražiti C nabrajanja je zapravo 36 00:01:53,310 --> 00:01:56,820 značajka C gdje možete nabrojiti hrpu konstanti 37 00:01:56,820 --> 00:01:59,640 i dodijeliti ih automatske vrijednosti, kao jedna, dvije, tri, četiri 38 00:01:59,640 --> 00:02:01,330 bez tvrdih kod brojeva. 39 00:02:01,330 --> 00:02:04,780 Dakle, SQL podržava isti, pri čemu ako se imate polje baze podataka koju je samo 40 00:02:04,780 --> 00:02:09,389 žele da se na jednoj od konačnih Vrijednosti, možete doslovno ga navesti 41 00:02:09,389 --> 00:02:13,120 kao što sam učinio bilo za četiri Popularni američki mobitel nositelji. 42 00:02:13,120 --> 00:02:13,819 >> Tako sam to učinio. 43 00:02:13,819 --> 00:02:16,610 I ja sam napravio niz promjena što i od kojih je najvažnija 44 00:02:16,610 --> 00:02:20,090 je da se e-mail raditi jer opoziva, da je ovaj program oslonio na kojem 45 00:02:20,090 --> 00:02:23,470 obično naziva e-mail na SMS gateway, što je samo 46 00:02:23,470 --> 00:02:27,670 fancy način govoreći da je Verizon, i AT & T, a drugi ljudi podržavaju poslužitelj, 47 00:02:27,670 --> 00:02:30,740 pri čemu ako primi e, to ga pretvara u SMS 48 00:02:30,740 --> 00:02:33,290 i šalje tekst Poruka na nečiju telefon. 49 00:02:33,290 --> 00:02:37,010 Dakle, ako sam to učinio ispravno, Ovdje je novi i poboljšani oblik 50 00:02:37,010 --> 00:02:39,259 koja će se razgovarati novi i poboljšani broj, koji 51 00:02:39,259 --> 00:02:40,300 možete igrati online. 52 00:02:40,300 --> 00:02:44,140 I nadamo se da će napraviti moj Telefon piskutavi u samo trenutak. 53 00:02:44,140 --> 00:02:47,240 >> Tako je prvi, ja ću upisati u moje ime. 54 00:02:47,240 --> 00:02:51,400 Drugo, ja ne idem to ovaj put učiniti. 55 00:02:51,400 --> 00:02:53,920 Ja ću učiniti Pregledajte element. 56 00:02:53,920 --> 00:02:56,710 A to je samo mala stvar tako da ne znam 57 00:02:56,710 --> 00:02:59,250 stvaraju sati postprodukciji raditi kao što sam prošli put. 58 00:02:59,250 --> 00:03:02,300 Sada je moj broj telefona. 59 00:03:02,300 --> 00:03:03,560 >> Odabrat ću Verizon. 60 00:03:03,560 --> 00:03:10,260 I ovdje, idemo okrenuti na ovoj mikrofon ovdje, a cilj to na moj telefon ovdje. 61 00:03:10,260 --> 00:03:13,130 Idem kliknite registar, koji je trebao nadamo 62 00:03:13,130 --> 00:03:14,530 stavite ga u bazu podataka. 63 00:03:14,530 --> 00:03:16,780 Sada ću ići u naredbenog retka program, koji 64 00:03:16,780 --> 00:03:20,825 Opoziv se zove dot slash tekst i fige. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 Ovdje ćemo ići. 67 00:03:26,527 --> 00:03:27,501 >> [PHONE tragova] 68 00:03:27,501 --> 00:03:28,962 >> [PLJESAK] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID Malan: Pa zabavnije od this-- to je zabavno, naravno, ako se u nju. 71 00:03:34,940 --> 00:03:38,004 No, to je zabavnije, mislio sam, ako mi stvorio jedan od onih filmskih trenutaka 72 00:03:38,004 --> 00:03:40,420 gdje se kao nešto stvarno loše se dogodilo u svijetu, 73 00:03:40,420 --> 00:03:42,860 i kao i svi NSA Narodne mobiteli početi bip 74 00:03:42,860 --> 00:03:44,860 s tekstualnim porukama upozorite ih na ovu činjenicu. 75 00:03:44,860 --> 00:03:47,026 Pa sam mislio da će pokušati da ponovno isto ovdje, 76 00:03:47,026 --> 00:03:49,610 pri čemu se ne koriste bazu podataka, I umjesto da se unaprijed 77 00:03:49,610 --> 00:03:51,490 je napisao program koji izgleda ovako. 78 00:03:51,490 --> 00:03:53,660 >> To je index.php-- i ja staviti ovaj kod on-line 79 00:03:53,660 --> 00:03:56,710 kao well-- koji očito Samo čini form.php, 80 00:03:56,710 --> 00:04:00,990 pomoću MVC stil paradigmu koja smo govoriti o detaljnije u problemu setu 81 00:04:00,990 --> 00:04:01,650 sedam. 82 00:04:01,650 --> 00:04:02,910 Taj oblik je prilično jednostavan. 83 00:04:02,910 --> 00:04:06,634 To će dostaviti Datoteka naziva here.php poštom. 84 00:04:06,634 --> 00:04:09,300 I to očito ide pitati za ime i broj telefona, 85 00:04:09,300 --> 00:04:11,400 a zatim preko takozvane Odaberite izbornik, to je 86 00:04:11,400 --> 00:04:14,250 će vam dati najmanje četiri Popularni američki mobitel prijevoznici, 87 00:04:14,250 --> 00:04:17,470 a onda vam omogućiti da učinkovito uzeti pohađanje klikom ovdje. 88 00:04:17,470 --> 00:04:20,471 >> I ovdje, u međuvremenu će se posuditi neki od koda od prošlog puta. 89 00:04:20,471 --> 00:04:22,553 A ako ste samo dotaknuti to, vidjet ćete da postoji 90 00:04:22,553 --> 00:04:23,900 cijela hrpa provjere pogreške. 91 00:04:23,900 --> 00:04:26,640 No, ljepota na kraju je da mi ne pišete u bazu podataka i danas. 92 00:04:26,640 --> 00:04:29,130 Mi smo imajući to jednostavno i Samo slanje nadam 93 00:04:29,130 --> 00:04:32,190 SMS poruka putem funkcije I. napisao je u proteklih nekoliko dana poziva 94 00:04:32,190 --> 00:04:36,270 Tekst, koji je u funkcijama. php, što je opet dostupan online. 95 00:04:36,270 --> 00:04:38,210 >> Dakle, ako želite sudjelovati u tome. 96 00:04:38,210 --> 00:04:40,190 Nećemo biti spremanje ništa. 97 00:04:40,190 --> 00:04:43,809 Idi na ovom URL ovdje u realnom vremenu. 98 00:04:43,809 --> 00:04:46,850 Nemojte ga podnijeti samo još, ali neka je vidjeti ako možemo imati jednu od ovih film 99 00:04:46,850 --> 00:04:49,830 trenuci u kojima svačija mobitel počne oglašavati zvučnim signalom, nadamo se samo 100 00:04:49,830 --> 00:04:53,580 Jednom ove godine za razliku od 2011. godine gdje je ovaj otišao užasno krivim putem. 101 00:04:53,580 --> 00:04:58,910 I jednom kada ići na tu adresu, trebali biste vidjeti super jednostavan oblik 102 00:04:58,910 --> 00:05:03,884 da, ako imate ime, mobitel broj i mobitel prijevoznik koji 103 00:05:03,884 --> 00:05:06,175 odgovara popis tamo, idite naprijed i ispunite obrazac. 104 00:05:06,175 --> 00:05:07,880 Ali ne pogoditi podnijeti samo još. 105 00:05:07,880 --> 00:05:10,850 >> Obrazac će izgledati ovako. 106 00:05:10,850 --> 00:05:13,660 Idi naprijed i upišite Vaše ime i prezime, broj telefona. 107 00:05:13,660 --> 00:05:17,670 Oop, netko ide ispred krivulje. 108 00:05:17,670 --> 00:05:18,170 To je u redu. 109 00:05:18,170 --> 00:05:19,340 U redu, svatko je ispunjen obrazac. 110 00:05:19,340 --> 00:05:21,400 To bi trebalo raditi na telefona, također, ako želite. 111 00:05:21,400 --> 00:05:23,695 U redu, na svojim oznakama, pozor, ići. 112 00:05:23,695 --> 00:05:24,195 Hit ovdje. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 Što je? 115 00:05:27,775 --> 00:05:31,140 116 00:05:31,140 --> 00:05:31,640 Ne. 117 00:05:31,640 --> 00:05:34,410 118 00:05:34,410 --> 00:05:40,250 Kunem se Bogom, sam testirao to više puta danas. 119 00:05:40,250 --> 00:05:41,720 Možete ga dobio? 120 00:05:41,720 --> 00:05:43,145 >> [Ubacivanjem GLAS] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID Malan: OK, korisnik pogreške možda. 123 00:05:49,560 --> 00:05:50,550 To je dva. 124 00:05:50,550 --> 00:05:53,300 On je radio za dvije od Nekoliko stotina, tri, četiri. 125 00:05:53,300 --> 00:05:55,940 U redu, to je dobro. 126 00:05:55,940 --> 00:05:58,520 Četiri od pet za ispravnost o tome. 127 00:05:58,520 --> 00:05:59,810 >> Dakle, što se upravo dogodilo? 128 00:05:59,810 --> 00:06:02,727 Dakle, vjerojatno, ne vidim svoje ekrani, zašto bi moglo da se errored? 129 00:06:02,727 --> 00:06:05,518 To je vjerojatno da smo bili samo pokušava napraviti previše veze 130 00:06:05,518 --> 00:06:08,110 na Harvardu mail server sve na Jednom od iste IP adrese. 131 00:06:08,110 --> 00:06:10,740 Ja sam samo nagađanje, jer nisam imati luksuz testiranja 132 00:06:10,740 --> 00:06:13,220 ovaj kod s nekim 300 ljudi unaprijed 133 00:06:13,220 --> 00:06:16,040 ali za sada shvatiti da da bi barem trebala 134 00:06:16,040 --> 00:06:18,250 dobivši posao učinio ovaj put. 135 00:06:18,250 --> 00:06:22,880 >> U redu, pa zašto je to sve više povezan s onim što se događa? 136 00:06:22,880 --> 00:06:24,900 Pa prvo, brzo Nekoliko najave. 137 00:06:24,900 --> 00:06:29,350 Dakle, jedan, ako želite da se pridruže Chang, i Nick, a drugi na ručku ovaj petak, 138 00:06:29,350 --> 00:06:32,400 to RSVP na uobičajenom URL tamo. 139 00:06:32,400 --> 00:06:35,650 Ako ste mislili koncentriraju ili radi sekundarna u CS, 140 00:06:35,650 --> 00:06:38,941 da li ste student, ili brucoš, ili čak mlađi ili stariji u ovom trenutku 141 00:06:38,941 --> 00:06:42,490 i još uvijek može stisnuti u tečajevima, shvatili da inženjerske škole 142 00:06:42,490 --> 00:06:45,620 je okupljanje za besplatno Ben i Jerry sladoled i savjeti 143 00:06:45,620 --> 00:06:48,910 u srijedu nedugo nakon klasa u 4:00 sati u CS zgradi 144 00:06:48,910 --> 00:06:49,771 na Maxwell Dworkinu. 145 00:06:49,771 --> 00:06:51,520 Ako je ovo prebrzo na zaslonu, samo idi 146 00:06:51,520 --> 00:06:55,260 da cs50.harvard.edu za link na Facebook događaj 147 00:06:55,260 --> 00:06:57,140 gdje možete vidjeti detalje. 148 00:06:57,140 --> 00:07:01,390 >> U međuvremenu, mislila sam da ću ispraviti još jedna stvar koju sam goofed srijedu. 149 00:07:01,390 --> 00:07:04,400 Ispada da je Marka ID Facebook nije bio tri. 150 00:07:04,400 --> 00:07:05,230 Bilo je četiri. 151 00:07:05,230 --> 00:07:08,330 Ispostavilo se da je imao više testa računi nego se sjećam. 152 00:07:08,330 --> 00:07:12,400 No, što to osjećao kao na priliku učiniti je podići URL kao što je ovaj. 153 00:07:12,400 --> 00:07:16,680 >> Tako ispada da Facebook ima API, Application Programming Interface, 154 00:07:16,680 --> 00:07:20,070 što je mehanizam kojim vas može zatražiti podatke programatski 155 00:07:20,070 --> 00:07:24,480 na Facebooku i vratiti stroj čitljive informacije, a ne web stranice 156 00:07:24,480 --> 00:07:28,690 nego samo sirovi tekst, nešto zove JavaScript objekta oznake. 157 00:07:28,690 --> 00:07:32,150 A u stvari, ako posjetite ovaj URL-i povećavanje, po defaultu, 158 00:07:32,150 --> 00:07:34,960 ovo je Marka javno dostupne informacije. 159 00:07:34,960 --> 00:07:37,430 >> A zanimljiva pojedinost ovdje je samo da njegov ID 160 00:07:37,430 --> 00:07:40,670 uistinu, broj četiri, koji sam shvatila čim sam to učinio. 161 00:07:40,670 --> 00:07:44,260 To možete učiniti sami ako znate vaša Facebook korisničko ime, ako ga imate. 162 00:07:44,260 --> 00:07:45,440 Samo upišite ga do vrha tamo. 163 00:07:45,440 --> 00:07:46,640 I ništa od toga nije privatna. 164 00:07:46,640 --> 00:07:48,670 Ja samo to, čak u anonimnom načinu rada. 165 00:07:48,670 --> 00:07:49,900 Pa nisam ni prijavljeni. 166 00:07:49,900 --> 00:07:54,440 A ti vidim da sam očito je korisnički broj 6454 167 00:07:54,440 --> 00:07:56,480 na Facebooku, što nije Šteta ovih dana. 168 00:07:56,480 --> 00:07:59,900 Dakle, u svakom slučaju, vidjet ćete dodatne informacije tamo. 169 00:07:59,900 --> 00:08:02,150 >> I korisni aspekt to je da vas 170 00:08:02,150 --> 00:08:06,890 mogao napisati vlastiti softver koji nekako integrira podatke kao što je ovaj 171 00:08:06,890 --> 00:08:08,170 u vlastitoj aplikaciji. 172 00:08:08,170 --> 00:08:10,650 Možete osnažiti korisnicima na prijavite se na svoj web stranici, 173 00:08:10,650 --> 00:08:14,190 Ne koristeći svoje korisničko ime i prilagođenu Lozinka ali možda njihov Facebook login 174 00:08:14,190 --> 00:08:16,170 i dobiti informacije, čak i o svojim prijateljima, 175 00:08:16,170 --> 00:08:18,740 ako oni odobre takav, ili slično. 176 00:08:18,740 --> 00:08:21,430 Dakle, imajte na umu da je CS50, također, ima neke od svojih API-ja, 177 00:08:21,430 --> 00:08:24,620 jedan za podatke kataloga, naravno, neki za zagrljaje izbornika u blagovaonici 178 00:08:24,620 --> 00:08:26,730 dvorane, svi građevine i mjesta 179 00:08:26,730 --> 00:08:30,930 na kampusu imamo API za te koje možete upita slično i dobiti 180 00:08:30,930 --> 00:08:35,520 natrag tekstualni podaci koje možete integrirati u PHP ili Javascript, ili čak, 181 00:08:35,520 --> 00:08:38,320 iako rjeđe, C temelji završnog rada. 182 00:08:38,320 --> 00:08:41,190 >> Doista naprijed za konačni Projekt nekoliko prekretnice. 183 00:08:41,190 --> 00:08:42,980 Imaš e-mail od nas neki dan. 184 00:08:42,980 --> 00:08:45,761 Shvatite da je prijedlog je zbog toga dolazi u ponedjeljak. 185 00:08:45,761 --> 00:08:49,010 To nije nužno i obvezujuće, ali trebate primati nastavnih bližnjima 186 00:08:49,010 --> 00:08:51,260 odobrenje prije nego što sve nakon toga mijenja. 187 00:08:51,260 --> 00:08:54,280 A onda su ispred niz drugih događaja. 188 00:08:54,280 --> 00:08:56,542 >> Tako da vas zafrkavati, također, s nekim mogućnostima, 189 00:08:56,542 --> 00:08:58,250 imamo hrpu ove nijanse žarulje. 190 00:08:58,250 --> 00:09:01,190 A neki od vas sada imaju neke od njih u svom domu sobi kao dobro. 191 00:09:01,190 --> 00:09:02,920 I oni imaju API. 192 00:09:02,920 --> 00:09:07,300 Dakle sjetim tih binarnih žarulje tjedna Prije da je Dan Bradley i Ansel 193 00:09:07,300 --> 00:09:08,780 Duff je stvorio za nas. 194 00:09:08,780 --> 00:09:12,560 Oni su koristili softver sučelje ovo žarulja, koje u ovom trenutku 195 00:09:12,560 --> 00:09:15,232 priključen u električnu energiju a zatim putem bežične 196 00:09:15,232 --> 00:09:17,690 povezan na malo stvar zove most ovdje, 197 00:09:17,690 --> 00:09:21,280 kao malo usmjerivač vlasnički na ovom uređaju. 198 00:09:21,280 --> 00:09:26,540 >> No, ispostavlja se, ako znam kako slanje HTTP poruke, kao što svi sada učiniti, 199 00:09:26,540 --> 00:09:31,670 Mogu poslati poruku kao što je to ovo žarulja da ga uključivanje ili isključivanje 200 00:09:31,670 --> 00:09:34,000 ili učiniti bilo koji broj ostali poslovi na njemu. 201 00:09:34,000 --> 00:09:36,110 Uočite da to nije mogao, to ne postavljati. 202 00:09:36,110 --> 00:09:37,760 Tu je još jednom pozvao staviti. 203 00:09:37,760 --> 00:09:39,630 Tu je zapravo još nekoliko takvih glagola. 204 00:09:39,630 --> 00:09:42,920 Ali primijetite postoji put tamo, slash API, slash novi developer, 205 00:09:42,920 --> 00:09:44,990 slash svjetlo, slash jedan, slash stanje. 206 00:09:44,990 --> 00:09:49,060 >> To je očito samo Put koji tvrtka Philips, 207 00:09:49,060 --> 00:09:51,640 odlučio morate pogoditi s HTTP zahtjev 208 00:09:51,640 --> 00:09:55,010 ako želite promijeniti stanje od žarulja pomoću HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 Zatim primijetiti praznu crtu. 210 00:09:56,380 --> 00:10:00,170 I onda na kraju ono što izgleda kao vrsta niz neke vrste, 211 00:10:00,170 --> 00:10:04,730 to opet će se zvati JavaScript Objekt oznake, ili Jason. 212 00:10:04,730 --> 00:10:08,000 A ono što vidite ovdje je da postoje tri ključna para vrijednosti. 213 00:10:08,000 --> 00:10:09,115 >> Jedan ključ je pozvao. 214 00:10:09,115 --> 00:10:10,990 I njegova vrijednost očito će biti istina. 215 00:10:10,990 --> 00:10:13,612 Svjetlina je 128, što je neka vrsta int. 216 00:10:13,612 --> 00:10:15,820 A onda prijelaz vrijeme nula, što je očito 217 00:10:15,820 --> 00:10:17,970 koliko dugo će poduzeti kako biste ovu stvar dalje. 218 00:10:17,970 --> 00:10:19,890 >> Tako sada ovaj žarulja isključena. 219 00:10:19,890 --> 00:10:22,880 Ali ako činim upravo this-- neka da odem na malo varati list 220 00:10:22,880 --> 00:10:25,200 da je Dan postaviti u advance-- i ja ću 221 00:10:25,200 --> 00:10:27,920 ići naprijed i kopirati sljedeću naredbu. 222 00:10:27,920 --> 00:10:30,200 Curl, kao što neki od vas možda sakupljen na CS50 223 00:10:30,200 --> 00:10:35,080 Raspravite je alat kao što je Telnet takvog da može simulirati HTTP zahtjeva, 224 00:10:35,080 --> 00:10:36,360 posebno stavlja. 225 00:10:36,360 --> 00:10:39,710 Ja mogu poslati te podatke, posebno što smo upravo 226 00:10:39,710 --> 00:10:43,430 vidjela trenutak prije specifično na ovom URL više ovdje. 227 00:10:43,430 --> 00:10:46,310 A onda Curl će nositi sve potrebne zaglavlja 228 00:10:46,310 --> 00:10:47,600 raščlanjivanja i tamo je. 229 00:10:47,600 --> 00:10:54,700 >> Dakle, sve što morate učiniti je kopirati ovo u terminala prozor, a zatim pritisnite Enter. 230 00:10:54,700 --> 00:10:56,000 A žarulja ide dalje. 231 00:10:56,000 --> 00:10:59,060 I to sve ide preko moje računalo bežično 232 00:10:59,060 --> 00:11:01,960 nekako do mosta, koji je je tada u razgovoru s ovom žarulja. 233 00:11:01,960 --> 00:11:02,960 Ja mogu učiniti nešto drugo. 234 00:11:02,960 --> 00:11:07,050 Ja mogu napraviti ovu stvar pocrveni na primjer. 235 00:11:07,050 --> 00:11:11,040 Mogu primjerice napraviti ova stvar ići zelena. 236 00:11:11,040 --> 00:11:12,220 Ja mogu učiniti ići plava. 237 00:11:12,220 --> 00:11:14,760 >> A primjetiti u svakoj od tih instance, sve da sam mijenja 238 00:11:14,760 --> 00:11:18,540 je tzv nijansa vrijednost zapravo da je to malo boje. 239 00:11:18,540 --> 00:11:20,320 Pa neka mi zalijepite ovaj kao dobro. 240 00:11:20,320 --> 00:11:21,000 Sada je plava. 241 00:11:21,000 --> 00:11:24,672 >> A vi možete učiniti čak i ljubitelj stvari where-- idemo u zeleno. 242 00:11:24,672 --> 00:11:26,630 A ja mogu to učiniti od Naravno, s mojim vlastitim kodom. 243 00:11:26,630 --> 00:11:30,670 Ali čak i sama API podržava funky operacije 244 00:11:30,670 --> 00:11:35,510 kao što je ovaj, što će se sada zamarati nas za sljedećih 30 sekundi. 245 00:11:35,510 --> 00:11:39,170 >> Dakle, to je jedan djelić onoga što bi moglo učiniti s API, ovo uključuje 246 00:11:39,170 --> 00:11:40,010 žarulje. 247 00:11:40,010 --> 00:11:42,510 Imajte na umu da CS50 ima par para Google Glass ako želite 248 00:11:42,510 --> 00:11:45,380 Željeli bi se borila nešto zajedno one linije, Arduino UNOS, koji 249 00:11:45,380 --> 00:11:48,670 su maleni malo računalima, uglavnom, na maloj pločici 250 00:11:48,670 --> 00:11:50,470 da se možete povezati žice i druge stvari 251 00:11:50,470 --> 00:11:52,732 da se i zapravo kontrola Vaš stvarni svijet okoliš. 252 00:11:52,732 --> 00:11:54,940 A onda tu su par od nove igračke koje imamo. 253 00:11:54,940 --> 00:11:59,294 Ovo je jedna doslovno samo stigao Neki dan putem pošte, Myo vrpcu. 254 00:11:59,294 --> 00:12:01,710 A ja mislio da je način dobili ste uzbuđeni o projektima 255 00:12:01,710 --> 00:12:03,720 da biste mogli koristiti s takav hardver bi 256 00:12:03,720 --> 00:12:08,900 se igrati ovaj kratki isječak da oni koriste zafrkavati ljude 257 00:12:08,900 --> 00:12:10,500 da sada živimo u budućnosti. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [Glazbom] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID Malan: Tako je u samo nekoliko tjedana, što također može biti da je super na CS50 sajmu. 262 00:13:37,109 --> 00:13:39,150 Još jedan uređaj koji smo ima hrpa koji smo 263 00:13:39,150 --> 00:13:42,090 rado posuditi za projekte naziva kontroler pokreta. 264 00:13:42,090 --> 00:13:45,030 To je malo USB uređaj povežete na računalo koje 265 00:13:45,030 --> 00:13:47,520 omogućuje interakciju s vaš laptop, Mac ili računalo, 266 00:13:47,520 --> 00:13:51,570 kao da ste imali kao Xbox Kinect i zapravo čine fizičke pokrete mnogo 267 00:13:51,570 --> 00:13:54,509 kao što vidimo u tome vizija budućnosti. 268 00:13:54,509 --> 00:13:56,505 >> [Glazbom] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID Malan: Dakle, čak i ako imate nemam pojma kako nešto slično 271 00:15:06,260 --> 00:15:10,050 eventualno mogao biti izmišljen ili rad na razini hardvera, bez obzira. 272 00:15:10,050 --> 00:15:13,520 Čak i nakon samo nekoliko mjeseci CS50, i razumijevanje programiranja 273 00:15:13,520 --> 00:15:19,460 općenitije, i web programiranja više Nedavno, a potom i API-ja, i HTTP, 274 00:15:19,460 --> 00:15:21,830 ćete imati pristup putem softvera API-ji, ako vas 275 00:15:21,830 --> 00:15:24,680 želim posuditi jedan od njih Uređaji zapravo razgovarati s njim 276 00:15:24,680 --> 00:15:27,180 i ne morate brinuti o Provedba temeljne 277 00:15:27,180 --> 00:15:30,220 pojedinosti, što je potpuno u skladu s ovim pojmom raslojavanje 278 00:15:30,220 --> 00:15:33,610 apstrakcija koje smo vidjela tijekom semestra. 279 00:15:33,610 --> 00:15:37,990 >> Tako je također tijekom vikenda, Vidio par komada vijesti. 280 00:15:37,990 --> 00:15:40,640 Idi prvi, ići na seminare, ako vas želite saznati nešto 281 00:15:40,640 --> 00:15:42,160 više na bilo koji broj tema. 282 00:15:42,160 --> 00:15:43,340 Pogledajte URL tamo. 283 00:15:43,340 --> 00:15:45,890 I ovaj je bio poslan ja Chang, koji znate, 284 00:15:45,890 --> 00:15:47,850 tko ispisuje našu vojsku slonova. 285 00:15:47,850 --> 00:15:49,910 I to je bio naslov na sljedeći način. 286 00:15:49,910 --> 00:15:51,280 Ja sam prestrašena moj novi TV. 287 00:15:51,280 --> 00:15:54,301 Zašto se bojim okrenuti ovo stvar na i vama bi bilo previše. 288 00:15:54,301 --> 00:15:56,050 Tako smo sada na točka u semestru, 289 00:15:56,050 --> 00:15:58,860 također, u kojoj čak i ako imate najmanji razumijevanja 290 00:15:58,860 --> 00:16:02,620 o tome kako web radi, i HTTP, i sigurnosti, stvari kao što je ovaj 291 00:16:02,620 --> 00:16:03,980 trebao početi uhvatiti vaše oči. 292 00:16:03,980 --> 00:16:07,450 Ali isto tako, da ćete shvatiti da li su te stvari ili ne 293 00:16:07,450 --> 00:16:08,430 stvarne prijetnje. 294 00:16:08,430 --> 00:16:10,940 >> Zato sam uzeo nekoliko izvadaka iz ovog članka ovdje. 295 00:16:10,940 --> 00:16:12,540 A priča je sljedeća. 296 00:16:12,540 --> 00:16:14,300 Ja sam sada vlasnik Novi pametni TV, koji je 297 00:16:14,300 --> 00:16:18,470 obećava streaming multimedijalnih sadržaja, igara, aplikacija, 298 00:16:18,470 --> 00:16:21,450 društveni mediji i internet pregledavanja, oh i TV previše. 299 00:16:21,450 --> 00:16:24,410 Jedini problem je u tome što sam sada bojao da ga koristiti, kaže autor. 300 00:16:24,410 --> 00:16:29,592 Ti bi se, također, ako ste pročitali kroz 46 stranica pravila o privatnosti vašem televizoru. 301 00:16:29,592 --> 00:16:31,800 Količina podataka ovog prikuplja stvar je zapanjujući. 302 00:16:31,800 --> 00:16:35,710 To logove gdje, kada, kako i koliko dugo ćete koristiti TV. 303 00:16:35,710 --> 00:16:38,190 Ona postavlja praćenje kolačiće, kao što smo razgovarali, 304 00:16:38,190 --> 00:16:40,560 i farovi osmišljen otkriti kada imate 305 00:16:40,560 --> 00:16:43,185 pregledan posebno sadržaja ili Posebno e-mail poruka 306 00:16:43,185 --> 00:16:45,230 Ako želite provjeriti e-pošte na vašem televizoru. 307 00:16:45,230 --> 00:16:48,430 On bilježi aplikacije koje koristiti, web stranice koje posjećujete, 308 00:16:48,430 --> 00:16:52,280 i kako komunicirati sa sadržajem, radiš sve to preko svog pametnog televizora. 309 00:16:52,280 --> 00:16:55,470 Također, creepier yet-- to je moj addition-- 310 00:16:55,470 --> 00:16:58,140 je izgrađen u kameru prepoznavanje lica. 311 00:16:58,140 --> 00:17:01,010 >> Cilj je pružiti gesta upravljač za TV 312 00:17:01,010 --> 00:17:05,490 i omogućiti vam da se prijavite na personalizirane račun pomoću svoje lice. 313 00:17:05,490 --> 00:17:08,940 Na naglavce, slike su Spremaju se na TV-u, umjesto ustupio 314 00:17:08,940 --> 00:17:09,940 za korporativne poslužitelju. 315 00:17:09,940 --> 00:17:12,520 S druge strane, internet Priključak čini cijelu TV 316 00:17:12,520 --> 00:17:14,811 osjetljiva na hakere koji su pokazali sposobnost 317 00:17:14,811 --> 00:17:16,700 preuzeti potpunu kontrolu nad strojem. 318 00:17:16,700 --> 00:17:20,880 >> Više zabrinjava, kao da to nije bilo dovoljno pametan, je mikrofon. 319 00:17:20,880 --> 00:17:23,599 TV ima glas Prepoznavanje značajka 320 00:17:23,599 --> 00:17:26,859 koji omogućuje gledateljima da kontrolu Zaslon s glasovnim naredbama. 321 00:17:26,859 --> 00:17:30,290 No usluga dolazi s a zloslutna upozorenja. 322 00:17:30,290 --> 00:17:33,030 Imajte na umu da, ako Vaši izgovorena riječ su 323 00:17:33,030 --> 00:17:36,210 osobne ili druge osjetljive Informacije, da informacije 324 00:17:36,210 --> 00:17:40,310 će biti među podacima zarobljenih i prenosi na treću osobu. 325 00:17:40,310 --> 00:17:40,870 Imaš to? 326 00:17:40,870 --> 00:17:45,860 Nemojte reći osobne ili osjetljive stvari ispred TV-a. 327 00:17:45,860 --> 00:17:47,280 >> Dakle, ovo je zapravo za real. 328 00:17:47,280 --> 00:17:50,530 I teško je ne vidjeti ako vas ići na Best Buy ili slično za televizore 329 00:17:50,530 --> 00:17:51,030 ovih dana. 330 00:17:51,030 --> 00:17:52,540 Oni su svi pametni na neki način. 331 00:17:52,540 --> 00:17:54,740 I oni su uzimajući pametniji i jezivije. 332 00:17:54,740 --> 00:17:57,490 I oni su jednostavno prikupljanje podataka na način da smo razgovarali o tome 333 00:17:57,490 --> 00:18:01,840 a zatim ga upload preko HTTP ili neki drugi protokol na neki poslužitelj. 334 00:18:01,840 --> 00:18:05,720 >> Tako je to bilo od zabavan članak U ovoj online web stranice 335 00:18:05,720 --> 00:18:08,940 Ovdje, koji je govorio o Posebno bug ili pogriješili kod 336 00:18:08,940 --> 00:18:11,340 koje zapravo možemo povezati u prošlotjednom raspravu. 337 00:18:11,340 --> 00:18:15,730 Dakle, ovaj naslov je bio slijedi, priča ide ovdje, 338 00:18:15,730 --> 00:18:18,720 Josh Breckman radio Tvrtka koja je sletio ugovor 339 00:18:18,720 --> 00:18:22,390 razviti upravljanje sadržajem Sustav ili CMS nakon što se zove, 340 00:18:22,390 --> 00:18:24,380 za prilično velike vladine web stranice. 341 00:18:24,380 --> 00:18:27,300 Velik dio projekta uključeni razvoj sustava za upravljanje sadržajem 342 00:18:27,300 --> 00:18:29,840 tako da zaposlenici bi se mogućnosti za izgradnju i održavanje 343 00:18:29,840 --> 00:18:31,877 sve mijenja sadržaja za njihovim stranicama. 344 00:18:31,877 --> 00:18:34,210 Stvari otišao prilično dobro nekoliko dana nakon ide uživo. 345 00:18:34,210 --> 00:18:37,020 No, u šest dana, stvari nisu otišli tako dobro. 346 00:18:37,020 --> 00:18:39,500 Sve sadržaja na Web stranica je u potpunosti nestao. 347 00:18:39,500 --> 00:18:42,950 A sve stranice dovelo do zadane, unesite sadržaj web stranice. 348 00:18:42,950 --> 00:18:43,810 Ups. 349 00:18:43,810 --> 00:18:46,080 Josh je bio pozvan u istražiti i primijetio 350 00:18:46,080 --> 00:18:49,390 da je jedan posebno uznemiruje Vanjska IP adresa je imao 351 00:18:49,390 --> 00:18:53,380 otišao i brišu sve sadržaja na sustavu. 352 00:18:53,380 --> 00:18:56,290 >> IP adresa ne pripada na neki inozemstvo hakerske savijena 353 00:18:56,290 --> 00:18:58,340 na uništavanje pomoći Informacije vlada. 354 00:18:58,340 --> 00:19:05,190 To odlučio googlebot.com, Googleov vrlo vlastiti web puzeći pauk. 355 00:19:05,190 --> 00:19:06,010 Ups. 356 00:19:06,010 --> 00:19:09,150 Nakon malo istraživanja i remećenje okolo pronaći noncorrupt backup, 357 00:19:09,150 --> 00:19:10,180 Josh pronašao problem. 358 00:19:10,180 --> 00:19:12,700 >> Korisnik je kopirao i zalijepiti neki sadržaj iz jednog 359 00:19:12,700 --> 00:19:15,670 Stranica na drugo, uključujući Uredi Hyperlink 360 00:19:15,670 --> 00:19:17,577 urediti sadržaj na stranici. 361 00:19:17,577 --> 00:19:20,160 Obično to ne bi bilo Pitanje budući vanjskog korisnika bi 362 00:19:20,160 --> 00:19:24,320 potrebno unijeti ime i lozinku, ali CMS sustav autentifikacije, 363 00:19:24,320 --> 00:19:27,520 sustav za prijavu, ne uzeti u obzir 364 00:19:27,520 --> 00:19:30,980 sofisticiran sjeckanje tehnike Google Spider. 365 00:19:30,980 --> 00:19:31,700 Ups. 366 00:19:31,700 --> 00:19:33,610 >> Kao što se ispostavilo, Google Pauk ne koristi 367 00:19:33,610 --> 00:19:36,950 kolačići, što znači da može jednostavno zaobići ček za 368 00:19:36,950 --> 00:19:39,840 prijavljen na skupu kolačića biti lažno. 369 00:19:39,840 --> 00:19:42,620 Također ne obratite pozornost na JavaScript, koja bi normalno 370 00:19:42,620 --> 00:19:45,170 brz i preusmjeriti korisnike koji nisu prijavljeni. 371 00:19:45,170 --> 00:19:48,610 To međutim ne slijedi svaki link na svakoj stranici se nalazi, 372 00:19:48,610 --> 00:19:51,700 uključujući i one s Brisanje stranice u naslovu. 373 00:19:51,700 --> 00:19:52,650 Ups. 374 00:19:52,650 --> 00:19:56,070 >> Dakle, što to znači u više tehnički, ali prilično dostupne pojmovi? 375 00:19:56,070 --> 00:19:58,340 To samo znači da je tijekom svoje web stranice, 376 00:19:58,340 --> 00:20:02,287 imali su URL-a ne za razliku ovog koji možete vidjeti u Problem postaviti sedam. 377 00:20:02,287 --> 00:20:04,620 Podsjetimo u problemu postaviti sedam ili znate u problemu postaviti sedam 378 00:20:04,620 --> 00:20:06,411 da ste izazvali, između ostalog, 379 00:20:06,411 --> 00:20:08,570 prodati dionice na ime korisnika. 380 00:20:08,570 --> 00:20:14,010 No provedbi tu značajku način od dobiti putem linkova u vašem korisnika 381 00:20:14,010 --> 00:20:16,880 sučelje, vjerojatno Ne najpametniji ideja 382 00:20:16,880 --> 00:20:20,300 jer ako vaš site je nekako dostupni bilo čovjeka 383 00:20:20,300 --> 00:20:23,577 tko klika oko ili kupiti bot poput Google-a, ili pauka 384 00:20:23,577 --> 00:20:26,160 nakon što se zove to je samo indeksiranja weba pokušava indeksa 385 00:20:26,160 --> 00:20:29,060 Web kao tražilicu, su mogli vrlo lako 386 00:20:29,060 --> 00:20:31,340 hit putem dobili ovakvu URL. 387 00:20:31,340 --> 00:20:33,770 I to je funkcionalno ekvivalent, u ovom slučaju, 388 00:20:33,770 --> 00:20:37,000 prodaju svih dionica Googlea. 389 00:20:37,000 --> 00:20:40,030 >> Sad iskreno, to je potpuno glup da CMS 390 00:20:40,030 --> 00:20:43,240 korišteni JavaScript i kolačići implementirati svoj sustav za prijavu 391 00:20:43,240 --> 00:20:47,100 a ne radi tu stranu poslužitelja, kao što je vi učiniti i da će se u PSet 7-- 392 00:20:47,100 --> 00:20:49,940 postoji login.php file-- uvijek, uvijek, 393 00:20:49,940 --> 00:20:52,789 Uvijek sigurnost bi trebao biti učinjeno na strani poslužitelja, 394 00:20:52,789 --> 00:20:56,080 nije na strani klijenta, jer, kao što je to članak sugerira i možda sami 395 00:20:56,080 --> 00:20:59,600 vidim u nekom trenutku, to je trivijalno za korisnika, dobro ili loše, 396 00:20:59,600 --> 00:21:02,860 samo isključite JavaScript da ne spominjem kolačiće. 397 00:21:02,860 --> 00:21:06,020 Tako da je vaš dnevni WTF. 398 00:21:06,020 --> 00:21:07,970 >> Postoji još jedan, koji je samo vrsta zastrašujuće, 399 00:21:07,970 --> 00:21:11,360 pa ću ga spomenuti, ako samo kao lekciju života. 400 00:21:11,360 --> 00:21:14,850 Svaki put kada koristite aplikaciju zove se kao Snapchat ili slično 401 00:21:14,850 --> 00:21:19,380 koji kaže ove fotografije trajati samo pet sekundi, deset sekundi ili sitnica. 402 00:21:19,380 --> 00:21:21,680 Oni su prolazna To je apsolutno nije slučaj. 403 00:21:21,680 --> 00:21:25,670 Kao da ne postoji način, digitalno, provesti neki oblik videa, 404 00:21:25,670 --> 00:21:30,150 ili slike ili tekstualni dijeljenje kao da je primatelj na drugom kraju 405 00:21:30,150 --> 00:21:31,660 Ne mogu nekako spasiti podatke. 406 00:21:31,660 --> 00:21:34,300 >> U većini naivan način, netko mogao uzeti svoj telefon. 407 00:21:34,300 --> 00:21:36,850 I oni imaju drugi prozor 10 dok gleda u nekom trenu 408 00:21:36,850 --> 00:21:39,410 samo uzeti neki drugi mobitel i fotografirati ga, očito. 409 00:21:39,410 --> 00:21:41,660 Na taj način možete sačuvati nešto digitalno na taj način. 410 00:21:41,660 --> 00:21:44,620 Neki od vas zna kako se screenshot na vašem telefonu. 411 00:21:44,620 --> 00:21:49,290 U stvari, ako ne znaš, shvatite da barem Snapchat, 412 00:21:49,290 --> 00:21:51,040 i mislim da drugi Prijave ovih dana, 413 00:21:51,040 --> 00:21:53,720 barem ako vam kažem primatelj ima zapravo 414 00:21:53,720 --> 00:21:55,310 uzeti screenshot vaše slike. 415 00:21:55,310 --> 00:22:00,870 >> No, još gore, to je bio snappening, kao što je netko skovao je nedavno, 416 00:22:00,870 --> 00:22:04,680 gdje su neki 100.000 sjedne bio pušten 417 00:22:04,680 --> 00:22:09,310 u ono što se zove torrent datoteka na raznim web stranicama u konačnici. 418 00:22:09,310 --> 00:22:12,000 I to je sadržavala hrpu privatnih poruka i postova. 419 00:22:12,000 --> 00:22:15,210 Ispada većina njih benigno, tako da nije ono što bi mogli očekivati. 420 00:22:15,210 --> 00:22:17,580 No, budući da su ljudi imali koristiti treće strane web stranice, 421 00:22:17,580 --> 00:22:20,270 prijave sa svojim Snapchat korisničko ime i lozinku, a zatim 422 00:22:20,270 --> 00:22:23,470 Ušteda sve svoje snaps na ovoj web stranici treće strane. 423 00:22:23,470 --> 00:22:26,130 I to je to treća strana website koji je sjeckan, 424 00:22:26,130 --> 00:22:30,710 koja je upravo značilo je netko shvatio kako dobiti sve 100.000 plus tih slika 425 00:22:30,710 --> 00:22:33,822 u svom tvrdom disku za daljnje dijeljenje. 426 00:22:33,822 --> 00:22:36,030 Iskreno, ovdje, to je vrsta od glup da Snapchat 427 00:22:36,030 --> 00:22:39,360 se provodi na takav način da se treća strana može sortirati od križanju 428 00:22:39,360 --> 00:22:43,310 podatke i da nije vezan za svoj vlastita aplikacija trčanje na telefon. 429 00:22:43,310 --> 00:22:46,947 Ali ovdje, također, shvatiti da to stvari koje ne bi trebali uhvatiti po iznenađenje, 430 00:22:46,947 --> 00:22:49,030 ili barem tamo trebao biti života lekciju ovdje. 431 00:22:49,030 --> 00:22:52,220 Ako želite tehničku Pojedinosti potražite na tom URL-ima 432 00:22:52,220 --> 00:22:53,570 to je u današnjem slajdovima. 433 00:22:53,570 --> 00:23:00,960 U redu, bilo kakva pitanja o današnja lekcija života u CS? 434 00:23:00,960 --> 00:23:02,710 Turn off to. 435 00:23:02,710 --> 00:23:04,970 Bilo što? 436 00:23:04,970 --> 00:23:06,301 Bilo što? 437 00:23:06,301 --> 00:23:09,050 Imam puno ljudi provjeru njihova Snapchat ili nešto sada. 438 00:23:09,050 --> 00:23:11,690 >> U redu, SQL, Structured Query Language. 439 00:23:11,690 --> 00:23:12,509 Idemo završiti ovo. 440 00:23:12,509 --> 00:23:14,300 I također, iako mi smo samo grebanje 441 00:23:14,300 --> 00:23:16,310 Površina ovog jezik, mi ćemo vam dati 442 00:23:16,310 --> 00:23:18,930 dosta jezika u obliku PSet 7 443 00:23:18,930 --> 00:23:22,140 tako da možete uhvatiti u koštac neke prilično česta funkcionalnost. 444 00:23:22,140 --> 00:23:24,912 No, shvatili su par stvari koje ne zahtijevaju od vas, 445 00:23:24,912 --> 00:23:27,120 ali oni će biti važno doći završne projekte 446 00:23:27,120 --> 00:23:30,760 a sigurno dolaze izradu stvarna web stranice sa stvarnim korisnicima 447 00:23:30,760 --> 00:23:32,040 je ovaj dizajn odluka. 448 00:23:32,040 --> 00:23:34,460 >> Ispada da je u MySQL baza podataka, te 449 00:23:34,460 --> 00:23:37,460 imaju grozdove izbora kao vrste podataka za svoje stupce 450 00:23:37,460 --> 00:23:41,670 i druge stvari, ali ćete također imati Izbor tzv skladištenja 451 00:23:41,670 --> 00:23:44,570 motor za sve vaše podatke, vrsta datotečnog sustava, 452 00:23:44,570 --> 00:23:46,700 ako ste upoznati, za sve vaše podatke. 453 00:23:46,700 --> 00:23:48,830 Koji format je to u konačnici pohranjena u? 454 00:23:48,830 --> 00:23:53,300 A najčešći, možda, bio MyISAM i InnoDB, tehnički uvjeti 455 00:23:53,300 --> 00:23:56,060 da ćemo stalo samo do te mjere da se mora 456 00:23:56,060 --> 00:23:58,500 a jedan nema Sljedeća značajka. 457 00:23:58,500 --> 00:24:00,390 >> Pretpostavimo da imate Malo spavaonica hladnjak. 458 00:24:00,390 --> 00:24:03,030 I pretpostavljam da vi i vaš cimer, koji dijele ovaj hladnjak, 459 00:24:03,030 --> 00:24:04,682 stvarno vole recimo mlijeka. 460 00:24:04,682 --> 00:24:07,140 A to je, u stvari, koliko je Priča je rekao da mi je put natrag 461 00:24:07,140 --> 00:24:10,890 u dan kad sam uzeo tečaj zove CS 161 Operacijski sustavi, koji 462 00:24:10,890 --> 00:24:12,580 Slično istražuje ovu temu. 463 00:24:12,580 --> 00:24:13,760 Dakle imaš taj hladnjak. 464 00:24:13,760 --> 00:24:14,630 Ti si iz mlijeka. 465 00:24:14,630 --> 00:24:17,000 I dođete kući, tvoja cimerica je još uvijek u razredu ili bilo što drugo, 466 00:24:17,000 --> 00:24:19,208 a vi odlučite da ću izaći i dobiti malo mlijeka. 467 00:24:19,208 --> 00:24:22,630 Tako da zatvorite frižider, zatvor spavaonica soba, ide preko ulice 468 00:24:22,630 --> 00:24:25,330 na CVS ili gdje god, i dobiti u redu kupiti mlijeko. 469 00:24:25,330 --> 00:24:28,960 >> U međuvremenu, vaš cimer dođe kući iz razreda, dobiva u sobi u studentskom domu, 470 00:24:28,960 --> 00:24:31,802 otvara hladnjak, također shvaća ooph, mi smo iz mlijeka. 471 00:24:31,802 --> 00:24:33,760 Dakle, on ili ona zatvara hladnjak i onda se događa 472 00:24:33,760 --> 00:24:35,610 ići na drugu CVS, koji se dogoditi da bude 473 00:24:35,610 --> 00:24:38,470 jedan blok daleko od drugih CVS na trgu, i dobiva u redu 474 00:24:38,470 --> 00:24:40,230 tamo dobiti malo mlijeka. 475 00:24:40,230 --> 00:24:42,524 Sada, naravno, nekoliko minuta kasnije, obojica vratiti, 476 00:24:42,524 --> 00:24:44,690 a najgore od svega je moguće ishodi se dogodilo. 477 00:24:44,690 --> 00:24:45,792 Obje od vas ima mlijeka. 478 00:24:45,792 --> 00:24:47,500 A ti stvarno ne kao mlijeko toliko. 479 00:24:47,500 --> 00:24:49,625 Dakle, jedan od njih je samo ide kiselo u nekom trenutku. 480 00:24:49,625 --> 00:24:55,941 Tako sada imate pretjeranu količinu mlijeka u hladnjaku sve zbog čega? 481 00:24:55,941 --> 00:24:57,072 >> [Nečujan] 482 00:24:57,072 --> 00:24:59,780 DAVID Malan: Da, nisi nekako komuniciraju jedni s drugima 483 00:24:59,780 --> 00:25:00,904 koje su sve mlijeko. 484 00:25:00,904 --> 00:25:04,320 Tako je u najjednostavnijim putovi u ljudskom svijetu, 485 00:25:04,320 --> 00:25:08,390 kako možda bi to izbjegli glup Scenarij iz događa, kao 486 00:25:08,390 --> 00:25:09,750 da ste samo završiti s jednim. 487 00:25:09,750 --> 00:25:10,840 Tekst ih, da dobro. 488 00:25:10,840 --> 00:25:12,877 No, kako drukčije? 489 00:25:12,877 --> 00:25:13,460 Post-it papiriće. 490 00:25:13,460 --> 00:25:14,626 DAVID Malan: post-it note. 491 00:25:14,626 --> 00:25:17,150 Bilo koji oblik komunikacije koji govori svoj cimera 492 00:25:17,150 --> 00:25:18,670 ne ide u frižider za mlijeko. 493 00:25:18,670 --> 00:25:20,440 Ja ću ići obnoviti zalihu na svoje. 494 00:25:20,440 --> 00:25:22,770 Dakle, nekako je potrebno zaključati taj resurs. 495 00:25:22,770 --> 00:25:27,180 Dakle, možemo napraviti this-- možemo vrsta upropastiti priču i pretvaraju se u priču CS 496 00:25:27,180 --> 00:25:30,360 pri čemu mislim da to što je baš kao i varijabla, koja je pohranjivanje neku vrijednost. 497 00:25:30,360 --> 00:25:32,570 I upravo sada, Vrijednost mlijeka je nula, 498 00:25:32,570 --> 00:25:35,410 koje ne želite da vaše cimer pregledati tu varijablu 499 00:25:35,410 --> 00:25:38,730 a onda donijeti odluku njega ili sebe na temelju stanja te varijable 500 00:25:38,730 --> 00:25:42,430 Ako ste u procesu mijenja stanje te varijable. 501 00:25:42,430 --> 00:25:46,140 >> Dakle, jedan od linije SQL koje smo dati u PSet 7 specifikaciji 502 00:25:46,140 --> 00:25:47,310 je ovaj ovdje. 503 00:25:47,310 --> 00:25:49,740 I ne trošimo ogromne Iznos od vrijeme govori o tome. 504 00:25:49,740 --> 00:25:55,100 Ali ispada, ako pokušavate kupiti neke dionice u CS50 financija 505 00:25:55,100 --> 00:25:58,000 koje već imate neke dionice, vama 506 00:25:58,000 --> 00:26:01,750 želite biti u mogućnosti to učiniti niz stvari odmah zajedno. 507 00:26:01,750 --> 00:26:04,360 Želite li biti u mogućnosti učinkovito, na visokoj razini, 508 00:26:04,360 --> 00:26:06,700 provjeriti sve u redu, ako želim kupiti više dionica besplatno, 509 00:26:06,700 --> 00:26:08,780 penny stock smo govoriti o u spec, 510 00:26:08,780 --> 00:26:10,660 Želim prvo provjeri koliko dionica imam. 511 00:26:10,660 --> 00:26:11,810 I pretpostavljam da je pet. 512 00:26:11,810 --> 00:26:14,600 I pretpostavimo želim kupi 10 više, sam u konačnici 513 00:26:14,600 --> 00:26:17,069 Želite imati 15 dionica dionica. 514 00:26:17,069 --> 00:26:18,360 Dakle, moram postaviti dva pitanja. 515 00:26:18,360 --> 00:26:20,230 Što je stanje varijable? 516 00:26:20,230 --> 00:26:21,470 Što je stanje u redu? 517 00:26:21,470 --> 00:26:22,970 Koliko dionica ja trenutno imaju? 518 00:26:22,970 --> 00:26:24,636 Onda želite ići naprijed i ažurirati. 519 00:26:24,636 --> 00:26:27,720 Dakle, to je analog mlijeko u koje ste provjeriti red, 520 00:26:27,720 --> 00:26:30,730 a zatim želite ga ažurirati jer ako želite kupiti 10 dionica, 521 00:26:30,730 --> 00:26:32,521 ne želite mijenjati red do 10, što 522 00:26:32,521 --> 00:26:35,300 želite promijeniti 5 10 plus ili, naravno, 15. 523 00:26:35,300 --> 00:26:40,030 >> Ova linija koda osigurava da te dvije konceptualne ideje 524 00:26:40,030 --> 00:26:42,810 dogoditi zajedno ili uopće ne. 525 00:26:42,810 --> 00:26:46,920 Nitko, uključujući i neki drugi korisnika tko je prijavljen na istoj internetskoj stranici, 526 00:26:46,920 --> 00:26:49,900 može se nekako prekinuti provjera redu 527 00:26:49,900 --> 00:26:52,960 i ažuriranje reda, odabir i ažuriranje ako hoćete. 528 00:26:52,960 --> 00:26:57,360 I sintaksa je ne super očito, ali ovaj jedan redak, davno je to, 529 00:26:57,360 --> 00:27:01,150 osigurava da se te dvije operacije provjerite varijablu ili provjeriti red 530 00:27:01,150 --> 00:27:04,660 i ažurirati red dogoditi atomically. 531 00:27:04,660 --> 00:27:06,849 >> Oh, ovdje mi ići opet. 532 00:27:06,849 --> 00:27:07,890 Tekst poruke na moj telefon. 533 00:27:07,890 --> 00:27:09,954 Tako ćemo napraviti ovaj malo konkretniji. 534 00:27:09,954 --> 00:27:12,120 Pretpostavimo da niste provedbi hladnjak, 535 00:27:12,120 --> 00:27:16,400 a niste provedbi PSet 7, ali stvarna banka, 536 00:27:16,400 --> 00:27:20,000 ili bankomat, automatizirani Teller Stroj, pri čemu ti nekako 537 00:27:20,000 --> 00:27:22,960 želite biti u mogućnosti osnažiti korisnicima za prijenos novca 538 00:27:22,960 --> 00:27:24,500 s jednog računa na drugi. 539 00:27:24,500 --> 00:27:25,100 U redu, objesiti na. 540 00:27:25,100 --> 00:27:26,683 Idem za isključenje ovo sada, hvala. 541 00:27:26,683 --> 00:27:30,450 Dakle, želimo premjestiti novac iz jednog broja računa 542 00:27:30,450 --> 00:27:33,600 u drugi račun broj, posebno 100 dolara. 543 00:27:33,600 --> 00:27:37,690 Dakle, to je vrsta proizvoljna Primjerice, pri čemu si, bankomat, 544 00:27:37,690 --> 00:27:41,060 možda želite izvršiti dva SQL upiti, oduzmite od jednog računa, 545 00:27:41,060 --> 00:27:42,430 i dodati na drugi račun. 546 00:27:42,430 --> 00:27:46,766 No, želite kako bi se osiguralo da su ti dvije linije i dogoditi, ili uopće ne. 547 00:27:46,766 --> 00:27:48,640 Vi ne želite nešto uzimajući prekinut. 548 00:27:48,640 --> 00:27:51,440 Vi ne neke pametne negativac nekako stoji na Bank of America 549 00:27:51,440 --> 00:27:53,270 s dva bankomata ispred od njega i nekako 550 00:27:53,270 --> 00:27:55,270 vrsta upisivati ​​u naredbe istovremeno, 551 00:27:55,270 --> 00:28:01,230 nadamo se pokušava oduzeti 200 dolara, umjesto od $ 100 i imaju samo 100 dolara zaslužan. 552 00:28:01,230 --> 00:28:04,450 Ukratko, vi to želite ponašaju točno onako kako ste očekivali. 553 00:28:04,450 --> 00:28:06,540 >> A način na koji radite to SQL baza podataka 554 00:28:06,540 --> 00:28:09,350 što ga zamotajte u ono što je nazvao transakcije. 555 00:28:09,350 --> 00:28:14,290 Doslovno u SQL, možete nazvati CS50-a Funkcija upita sa citatom citat početak 556 00:28:14,290 --> 00:28:15,370 transakcije. 557 00:28:15,370 --> 00:28:18,640 Tada možete izvršiti bilo koji broj naknadnih SQL upita, 558 00:28:18,640 --> 00:28:20,870 ali nitko od njih uzeti utjecati na bazi podataka 559 00:28:20,870 --> 00:28:25,880 dok vi zovete upita citat citat počiniti, ako se ponovno koristiti PHP. 560 00:28:25,880 --> 00:28:29,810 I na ovaj način, možete osigurati da čak i ako imate 1.000 korisnika sve 561 00:28:29,810 --> 00:28:32,080 udarajući baze podataka istovremeno, SQL 562 00:28:32,080 --> 00:28:34,540 će obećati da je to Dva upiti će biti 563 00:28:34,540 --> 00:28:36,740 provode jedan neposredno nakon drugog. 564 00:28:36,740 --> 00:28:40,330 Tako da ne završiti s viškom mlijeko ili pogrešna količina, u konačnici, 565 00:28:40,330 --> 00:28:40,830 novca. 566 00:28:40,830 --> 00:28:43,110 >> Dakle, imajte to na umu, Ne toliko za PSet 7 567 00:28:43,110 --> 00:28:45,250 ali za konačne projekte Ako ste zapravo 568 00:28:45,250 --> 00:28:49,690 pokušavate premjestiti podatke oko po stolovima kao možda ovdje. 569 00:28:49,690 --> 00:28:53,980 No, možda čak i jednostavniji i Očito razumjeti s primjerom 570 00:28:53,980 --> 00:28:54,860 je ovaj ovdje. 571 00:28:54,860 --> 00:28:57,760 A nas netko e-poštom o to samo drugi dan 572 00:28:57,760 --> 00:28:59,600 kad je vidio nešto slično na internetu. 573 00:28:59,600 --> 00:29:03,480 >> Dakle, prema mojim saznanjima, pin sustava nije ranjiv na takav napad. 574 00:29:03,480 --> 00:29:06,637 A ja nemam pojma je li to čak i namjene SQL baza podataka ispod haube. 575 00:29:06,637 --> 00:29:08,470 Ali neka ga koristiti za radi rasprave. 576 00:29:08,470 --> 00:29:10,178 Evo zaslon koji Harvardski ljudi imaju tendenciju 577 00:29:10,178 --> 00:29:13,620 vidjeti kada se prijavite sa svojim Harvard ID broj i PIN-a. 578 00:29:13,620 --> 00:29:19,020 I pretpostavimo da je pin sustav su provodi u PHP i MySQL s 579 00:29:19,020 --> 00:29:22,000 baze podataka, koda da je netko Prije možda pisane godina 580 00:29:22,000 --> 00:29:23,270 može izgledati ovako. 581 00:29:23,270 --> 00:29:25,230 Prvo, proglasiti varijabla zove korisničko ime. 582 00:29:25,230 --> 00:29:27,560 I samo se to od POST superglobal. 583 00:29:27,560 --> 00:29:30,140 Zatim dobiti još jednu varijablu zove lozinkom i učiniti isto. 584 00:29:30,140 --> 00:29:33,080 I onda samo izvršiti ovo dugo upit ovdje, 585 00:29:33,080 --> 00:29:36,690 odaberite zvijezda od korisnika gdje korisničko ime jednako kao i takva 586 00:29:36,690 --> 00:29:38,510 i lozinku jednako takav i takav. 587 00:29:38,510 --> 00:29:40,660 >> Obavijest da je kovrčava aparatić sam ovdje koristi 588 00:29:40,660 --> 00:29:42,880 Samo znači da PHP, idite naprijed i zamjena 589 00:29:42,880 --> 00:29:45,400 vrijednost tih dvoje varijable tamo. 590 00:29:45,400 --> 00:29:50,090 Oni nisu strogo potrebno, ali oni imaju tendenciju da se izbjegne suptilne pogreške u sintaksi. 591 00:29:50,090 --> 00:29:53,650 Dakle, ovo izgleda potpuno točne prvi pogled. 592 00:29:53,650 --> 00:29:54,240 I to je. 593 00:29:54,240 --> 00:29:56,680 Ti bi mogao provesti pin sustav na ovaj način. 594 00:29:56,680 --> 00:30:00,460 >> Ali pretpostavimo da je super pametan i zlonamjerni studenta 595 00:30:00,460 --> 00:30:03,020 ulazna to kao njegov ili njezin pin. 596 00:30:03,020 --> 00:30:05,550 Tako sam ukloniti metak Znakovi ovdje u maketa, 597 00:30:05,550 --> 00:30:08,760 a ja sam zapravo otkrila ono što on ili ona može biti tipkati. 598 00:30:08,760 --> 00:30:10,350 I to je malo čudno. 599 00:30:10,350 --> 00:30:13,850 No, ono što skače se na vas na potencijalno zabrinjavajuće o korisnikovom ulaz, 600 00:30:13,850 --> 00:30:16,450 čak i ako nemate pojma što SQL injection napad znači. 601 00:30:16,450 --> 00:30:20,300 Zašto to izgleda malo sumnjivo? 602 00:30:20,300 --> 00:30:21,050 Što je to? 603 00:30:21,050 --> 00:30:21,550 [Nečujan] 604 00:30:21,550 --> 00:30:24,260 DAVID Malan: ili je malo sumnjivo. 605 00:30:24,260 --> 00:30:26,310 U stvari, to je ključna riječ iz SQL. 606 00:30:26,310 --> 00:30:28,105 Dakle, to ne sluti na dobro. 607 00:30:28,105 --> 00:30:29,980 Činjenica da postoji svi ti pojedinačni citati 608 00:30:29,980 --> 00:30:32,646 there-- u stvari, jedan od najlakši načine kako razbiti neke baze podataka 609 00:30:32,646 --> 00:30:35,880 je upisivanjem u ime poput O'Reilly da ima apostrof u njemu 610 00:30:35,880 --> 00:30:38,600 jer ako ljudska koji je napisao Kod iza kulisa 611 00:30:38,600 --> 00:30:41,570 ne uzeti u obzir da postoji Možda jednostruke navodnike u korisnikova 612 00:30:41,570 --> 00:30:45,060 ulaz, a on ili ona koristi jednostruke navodnike u svom kodu, 613 00:30:45,060 --> 00:30:46,040 loše stvari mogu dogoditi. 614 00:30:46,040 --> 00:30:47,870 >> U stvari, još gore, razmislite o ovom. 615 00:30:47,870 --> 00:30:50,600 Ako je to opet kod da je netko na Harvardu godina 616 00:30:50,600 --> 00:30:53,100 Prije pisao za pin Sustav, primijetiti ono što je 617 00:30:53,100 --> 00:30:56,220 o tome da se supstituirani za korisničko ime i lozinku 618 00:30:56,220 --> 00:30:59,780 ako korisnik upiše u jednom skroob što svojim korisničkim imenom 619 00:30:59,780 --> 00:31:03,960 i jedan, dva, tri, četiri, pet, citat ili citat citat jedne jednakima 620 00:31:03,960 --> 00:31:04,660 citiram jednu. 621 00:31:04,660 --> 00:31:07,220 A primijetiti ono što je ključno Ovdje se korisnik ne 622 00:31:07,220 --> 00:31:09,900 započeo njihove lozinke ili njihov polni sa citat. 623 00:31:09,900 --> 00:31:12,610 I nisu to završilo uz citat jer on ili ona 624 00:31:12,610 --> 00:31:16,315 je uz pretpostavku da ako programer nije bio tako oštar, 625 00:31:16,315 --> 00:31:18,690 oni će imati one jednostruke navodnike u svom kodu. 626 00:31:18,690 --> 00:31:19,860 >> Dakle, ovdje je kod. 627 00:31:19,860 --> 00:31:23,820 I da supstitucija Sada bi se moglo dogoditi je to. 628 00:31:23,820 --> 00:31:26,350 I sam je naglasio ono što korisnik upisali u. 629 00:31:26,350 --> 00:31:28,480 Dakle, prije, poslije. 630 00:31:28,480 --> 00:31:33,330 A primijetiti ono što je blago zabrinjavajuća sada o desnoj polovici ove SQL koda? 631 00:31:33,330 --> 00:31:36,300 To je malo složenije, doduše, od upita što smo vidjeli. 632 00:31:36,300 --> 00:31:38,550 No, to nikako ne može biti dobra stvar ako ste 633 00:31:38,550 --> 00:31:42,240 govoreći odaberite zvijezdu, koja je odaberite sve od korisnika stolu 634 00:31:42,240 --> 00:31:46,630 gdje korisničko ime jednako skroob i lozinka jednak jedan, dva, tri, četiri, 635 00:31:46,630 --> 00:31:49,610 pet ili jedan jednako jedan. 636 00:31:49,610 --> 00:31:53,860 Što je logično implicira tog posljednjeg klauzule valjda? 637 00:31:53,860 --> 00:31:55,650 To je samo uvijek istina. 638 00:31:55,650 --> 00:31:59,930 >> I zato smo nekako pogodili ili shvatio metodom pokušaja i pogreške 639 00:31:59,930 --> 00:32:02,760 da je programer koji je je napisao ovaj kod nije 640 00:32:02,760 --> 00:32:07,250 predviđaju ljudsko ili lošu osobu upisivati ​​u jednostrukim navodnicima, kao i, 641 00:32:07,250 --> 00:32:10,350 možemo sintaktički dovršiti SQL upit 642 00:32:10,350 --> 00:32:12,260 s nešto besmislen ali nešto što 643 00:32:12,260 --> 00:32:15,930 sintaktički je netočna koja uvijek true. 644 00:32:15,930 --> 00:32:19,130 Dakle, ako ovaj broj se koristi za odgovor Pitanje istina ili laž treba 645 00:32:19,130 --> 00:32:22,930 ovaj korisnik biti dopušteno da prođe, Odgovor je uvijek očito ide 646 00:32:22,930 --> 00:32:26,930 da bi bilo istinito, jer to uvijek ide odaberite nešto iz baze podataka 647 00:32:26,930 --> 00:32:29,280 jer je jedan, naravno, uvijek jednaka jedan. 648 00:32:29,280 --> 00:32:30,360 >> Dakle, ono što je rješenje? 649 00:32:30,360 --> 00:32:33,290 Pa u PSet 7, mi zapravo to izbjegli svi zajedno. 650 00:32:33,290 --> 00:32:37,360 Mi vam dati funkciju upita, a mi potičemo vas da koristite upitnike 651 00:32:37,360 --> 00:32:40,430 kao rezervirana mjesta, slično U duhu printf-a% s, 652 00:32:40,430 --> 00:32:43,710 ali ono što je ključno o upitnike Ovdje je, ako ste zapravo pročitali 653 00:32:43,710 --> 00:32:46,950 functions.php, gdje je naš Funkcija upita se provodi, 654 00:32:46,950 --> 00:32:52,780 ti upitnici su pobjegli, pri čemu sve potencijalno opasne 655 00:32:52,780 --> 00:32:58,210 kao jedan citat je uključen u jednom pobjegao citat. 656 00:32:58,210 --> 00:33:00,590 >> Dakle, to je ono što je stvarno događa, ako vas 657 00:33:00,590 --> 00:33:04,850 koristiti CS50 je upita funkciju ili bilo koji broj od trećih strana slobodnih knjižnica koje 658 00:33:04,850 --> 00:33:06,000 učiniti isto. 659 00:33:06,000 --> 00:33:09,850 Nije bitno u ovom slučaju, u zelenom, Ako korisnik upisali u jednom citat 660 00:33:09,850 --> 00:33:12,070 jer upit Funkcija koju je napisao je 661 00:33:12,070 --> 00:33:15,120 će dodati obrnute kose crte prije svaka takva opasna citat. 662 00:33:15,120 --> 00:33:17,360 Dakle, to nije u Činjenica, će biti čitljiv. 663 00:33:17,360 --> 00:33:20,910 To je kao da upišete luda potrazi Lozinka to je, naravno, ne ide 664 00:33:20,910 --> 00:33:23,490 biti skroob stvarnog lozinku. 665 00:33:23,490 --> 00:33:28,260 >> Tako takeaway za CS50 je jedan, Apsolutno uvijek koristiti nešto 666 00:33:28,260 --> 00:33:30,860 kao CS50 upit funkcije odnosno temeljni knjižnica, 667 00:33:30,860 --> 00:33:32,560 što će se dogoditi da se zove PDO. 668 00:33:32,560 --> 00:33:35,880 Ali nikad, nikad, Nikad ne kod ovako 669 00:33:35,880 --> 00:33:39,472 bez bijega ili ribanje kako kažu vaši inputi. 670 00:33:39,472 --> 00:33:42,430 A što će se u nekom trenutku, vjerojatno naići na neke web stranice kao što je ovaj. 671 00:33:42,430 --> 00:33:46,060 Zapravo, čini se da je slučaj kao u zračnim lukama i hotelima u mjestima 672 00:33:46,060 --> 00:33:48,880 gdje imaju besplatni bežični pristup internetu Pristup da morate prijaviti na, 673 00:33:48,880 --> 00:33:51,010 Ove web stranice su uvijek užasno provodi. 674 00:33:51,010 --> 00:33:55,680 I tako neka vrsta zabave kod kuće vježbe, ne za zlonamjerne svrhe ili više 675 00:33:55,680 --> 00:33:59,170 od zabave na cesti vježbe, je samo upišite 676 00:33:59,170 --> 00:34:02,850 apostrof, jedan citat, u obliku na nekom web stranice 677 00:34:02,850 --> 00:34:03,810 i vidjeti što se događa. 678 00:34:03,810 --> 00:34:06,660 A ako poslužitelj ruši ili daje li neka vrsta poruke o pogrešci, 679 00:34:06,660 --> 00:34:09,690 to može vrlo dobro biti da netko nije predvidio. 680 00:34:09,690 --> 00:34:15,239 I onda biste trebali upozoriti odgovarajuće vlasti i nastavite dalje. 681 00:34:15,239 --> 00:34:20,843 >> Pa sad vi trebali nadam razumjeti malo više monstrum humor ovdje. 682 00:34:20,843 --> 00:34:24,120 >> [Smijeh] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID Malan: Znaš da si monstrum. 685 00:34:29,070 --> 00:34:30,944 Za sljedećih nekoliko godine, sjetit ćete se 686 00:34:30,944 --> 00:34:33,520 koji je malo Bobby Tablice je zbog ovog crtića ovdje. 687 00:34:33,520 --> 00:34:36,760 Dakle, imajte to na umu kao i mi Prekidač kontekst jedan posljednji put 688 00:34:36,760 --> 00:34:38,770 danas JavaScript. 689 00:34:38,770 --> 00:34:41,600 Mi smo proveli relativno malo Vrijeme na sintaksu PHP 690 00:34:41,600 --> 00:34:43,440 jer to je zapravo super sličan C 691 00:34:43,440 --> 00:34:47,300 I dovoljno lijepo, JavaScript previše je super sličan kasiopejske sintakse 692 00:34:47,300 --> 00:34:49,639 kao što ćete vidjeti u Samo trenutak, a kao što ćemo 693 00:34:49,639 --> 00:34:51,205 vidi kasnije ovog tjedna posebno. 694 00:34:51,205 --> 00:34:54,080 Što možete učiniti s tom jeziku, iako je sve moćniji, 695 00:34:54,080 --> 00:34:55,790 posebno s API-ja. 696 00:34:55,790 --> 00:34:56,960 >> Ali prvo brzo turneju. 697 00:34:56,960 --> 00:35:00,450 Tako je jedan, u JavaScriptu, postoji nije glavna funkcija, što je lijepo. 698 00:35:00,450 --> 00:35:02,650 Kao i kod PHP, možete samo napisati kod. 699 00:35:02,650 --> 00:35:04,310 Uvjeti izgledati ovako. 700 00:35:04,310 --> 00:35:07,100 I Boolean izraza možda izgledati ovako ili ovako. 701 00:35:07,100 --> 00:35:09,530 Sklopke postoje, a oni može izgledati ovako. 702 00:35:09,530 --> 00:35:10,970 Četiri petlje izgledati ovako. 703 00:35:10,970 --> 00:35:12,390 Dok petlje izgledati ovako. 704 00:35:12,390 --> 00:35:14,160 Da li dokle izgledati ovako. 705 00:35:14,160 --> 00:35:16,850 A onda polja izgledati to, vrlo slično PHP. 706 00:35:16,850 --> 00:35:20,740 Ali primijetiti, da je u JavaScriptu vas proglasiti varijablu ne s dolar 707 00:35:20,740 --> 00:35:25,190 potpisati, a ne s tipom podataka, ali doslovno rekavši var za varijablu prije njega. 708 00:35:25,190 --> 00:35:27,900 To je previše labavo upisali time, da je vrsta, 709 00:35:27,900 --> 00:35:29,729 ali nemojte ih izričito izjaviti. 710 00:35:29,729 --> 00:35:31,520 A onda niz, za primjer, može izgledati 711 00:35:31,520 --> 00:35:34,350 ovako, da je niz se zove a u ovom slučaju. 712 00:35:34,350 --> 00:35:35,410 A onda objekt. 713 00:35:35,410 --> 00:35:37,010 A to ćemo vidjeti još prije dugo. 714 00:35:37,010 --> 00:35:41,470 A objekt je možda jedan od najčešće vidi struktura podataka 715 00:35:41,470 --> 00:35:44,050 u JavaScriptu temelji Program jer omogućuje 716 00:35:44,050 --> 00:35:46,680 li povezati proizvoljna Ključni parova vrijednost samo 717 00:35:46,680 --> 00:35:51,240 kao što su PHP-a asocijativnih nizova i baš kao i svoje vlastite hash tablicu 718 00:35:51,240 --> 00:35:54,042 ili pokušati što smo provoditi prije nekoliko tjedana. 719 00:35:54,042 --> 00:35:56,250 Tako ćemo zapravo vidjeti što možemo učiniti s JavaScript. 720 00:35:56,250 --> 00:35:59,410 I posebno, to jest Popis pranja značajki 721 00:35:59,410 --> 00:36:02,300 da preglednici su da omogućuju nam da kuka JavaScript 722 00:36:02,300 --> 00:36:05,470 na web stranici na sljedeći način. 723 00:36:05,470 --> 00:36:09,340 JavaScript se često koristi kao strani klijenta skriptni jezik. 724 00:36:09,340 --> 00:36:10,130 To nije sastavljen. 725 00:36:10,130 --> 00:36:11,370 To je previše tumačiti. 726 00:36:11,370 --> 00:36:15,740 No, za razliku od PHP, koji je pokrenut na poslužitelju, na web poslužitelju, 727 00:36:15,740 --> 00:36:18,220 ili duboko unutar klijenti, JavaScript 728 00:36:18,220 --> 00:36:22,190 razlikuje po tome što obično traje u pregledniku. 729 00:36:22,190 --> 00:36:26,060 >> Dakle, bilo JavaScript kôd počnete pisati PSet za 8, odnosno konačnog projekta, 730 00:36:26,060 --> 00:36:29,890 ili u stvarnom svijetu općenito ide da se spremaju na poslužitelju, apsolutno 731 00:36:29,890 --> 00:36:33,110 u dot HTML ili dot JS za JavaScript datoteke. 732 00:36:33,110 --> 00:36:35,770 No preglednik ide za preuzimanje da JavaScript 733 00:36:35,770 --> 00:36:39,530 Kod za svoj primjerak Chrome, ili IE ili Firefox, ili što god. 734 00:36:39,530 --> 00:36:43,870 I kod zapravo će dobiti izvršiti unutar vlastitog pregledniku. 735 00:36:43,870 --> 00:36:46,560 Samo da bi se to više stvaran, da vidimo to u konkretnom obliku. 736 00:36:46,560 --> 00:36:50,120 >> Nemamo pojma što je to kod radi bez stvarno čitanja kroz nju. 737 00:36:50,120 --> 00:36:52,670 No, dopustite mi ići na Facebook.com bez prijave. 738 00:36:52,670 --> 00:37:00,440 Pusti me da Pregledajte element i otići, recimo, mreže i ponovno učitati stranicu. 739 00:37:00,440 --> 00:37:04,150 A mi ćemo see-- neka mi pomak ponovno učitavanje Stranica dobiti sve zahtjeve za nove. 740 00:37:04,150 --> 00:37:08,850 I prvi file vidim je CSS, CSS. 741 00:37:08,850 --> 00:37:10,880 Evo prvi JavaScript datoteke, a ja imam 742 00:37:10,880 --> 00:37:14,600 nema pojma što to radi, ali ovdje neki od JavaScript kôd 743 00:37:14,600 --> 00:37:16,180 koji vozi Facebook. 744 00:37:16,180 --> 00:37:18,400 Nije ni stvarno tako otkriva za povećavanje. 745 00:37:18,400 --> 00:37:20,260 To je još uvijek jednako besmisleno. 746 00:37:20,260 --> 00:37:24,341 >> Ali vidjet ćete čak i dolje, postoji čak i više od ovih JavaScript datoteke. 747 00:37:24,341 --> 00:37:24,840 Ups. 748 00:37:24,840 --> 00:37:25,440 To je ping. 749 00:37:25,440 --> 00:37:28,550 Idemo dolje malo Nadalje, dodatno, dalje. 750 00:37:28,550 --> 00:37:29,894 Postoji jedan. 751 00:37:29,894 --> 00:37:31,238 Postoji jedan. 752 00:37:31,238 --> 00:37:31,880 Postoji jedan. 753 00:37:31,880 --> 00:37:35,820 >> Dakle, iako je Facebook, iza scene, piše u dijelu u PHP 754 00:37:35,820 --> 00:37:39,100 Facebook i vlastiti njegove verzije, postoji ogromna količina JavaScript. 755 00:37:39,100 --> 00:37:41,330 Zapravo, bilo koji od razgovor radite na Facebooku, 756 00:37:41,330 --> 00:37:45,520 bilo koji od inline Timeline ažuriranja da se to dogodi u stvarnom vremenu, sve to 757 00:37:45,520 --> 00:37:47,944 pokreće JavaScript. 758 00:37:47,944 --> 00:37:48,444 Da? 759 00:37:48,444 --> 00:37:50,235 >> PUBLIKA: Nisam siguran ako je to Facebook, 760 00:37:50,235 --> 00:37:53,624 ali mislio sam da je Facebook razvio sami u kući kod jezika? 761 00:37:53,624 --> 00:37:54,540 DAVID Malan: Oni su učinili. 762 00:37:54,540 --> 00:37:58,110 Dakle, to je razlog zašto sam reći varijance PHP zove Hip Hop da su oni zapravo 763 00:37:58,110 --> 00:38:03,440 dodano značajke na takva da kada Mark Prvi provodi Facebook, 764 00:38:03,440 --> 00:38:04,710 što je napisano u PHP. 765 00:38:04,710 --> 00:38:07,370 I to vrsta ostao vrsta prednjeg kraja jeziku 766 00:38:07,370 --> 00:38:09,030 da oni koriste mnogo njihovog kodiranja, ali to 767 00:38:09,030 --> 00:38:11,870 nije bio jezik koji je vage posebno dobro se milijardama 768 00:38:11,870 --> 00:38:12,630 ljudi. 769 00:38:12,630 --> 00:38:15,300 I tako su dodali svoje vlastite Poboljšanja iza kulisa. 770 00:38:15,300 --> 00:38:17,049 I oni koriste bilo koji broj drugim jezicima 771 00:38:17,049 --> 00:38:19,170 za razne komada njihova infrastruktura. 772 00:38:19,170 --> 00:38:24,080 Pa da, to je varijanca ono što mi sada znamo kao PHP. 773 00:38:24,080 --> 00:38:26,610 >> Tako ćemo pogledati na nekoliko primjera 774 00:38:26,610 --> 00:38:28,890 kako bismo mogli iskoristiti JavaScript ovdje. 775 00:38:28,890 --> 00:38:32,530 U današnjem izvornog koda, imamo hrpa datoteka, od kojih je prvi, 776 00:38:32,530 --> 00:38:34,090 neka se zove DOM nula. 777 00:38:34,090 --> 00:38:36,770 Dakle DOM nula izgleda ovako. 778 00:38:36,770 --> 00:38:40,730 Pusti me u ovaj imenik i otvoriti domzero.html, 779 00:38:40,730 --> 00:38:44,970 vrhu koji ima doc tip Deklaracija, rekavši ovdje dolazi HTML 5. 780 00:38:44,970 --> 00:38:46,440 I sad evo HTML oznaka. 781 00:38:46,440 --> 00:38:47,540 Evo glava oznaka. 782 00:38:47,540 --> 00:38:49,210 A evo što je novo i danas. 783 00:38:49,210 --> 00:38:52,620 >> Sada imaju oznaku skriptu unutar glave stranice. 784 00:38:52,620 --> 00:38:55,290 I to očito radi vrlo malo, ali obavijest 785 00:38:55,290 --> 00:38:58,410 da sam definira skripta, JavaScript. 786 00:38:58,410 --> 00:39:01,050 I kao stranu, jer to je česta zabluda, 787 00:39:01,050 --> 00:39:05,220 JavaScript mora apsolutno ništa raditi s Javom, jezik 788 00:39:05,220 --> 00:39:08,010 da su neki od vas možda naučili u APC. 789 00:39:08,010 --> 00:39:10,480 Bilo je to više od marketinga stvar od svega, 790 00:39:10,480 --> 00:39:12,980 jahanje coattails Java godina. 791 00:39:12,980 --> 00:39:17,300 Ali JavaScript, nema nikakve veze s Java, samo slično, i dosadno, 792 00:39:17,300 --> 00:39:18,480 zbunjujuće ime. 793 00:39:18,480 --> 00:39:21,890 >> Dakle, ovdje je, kako se proglasiti funkciju u JavaScriptu, doslovce kažu funkciju, 794 00:39:21,890 --> 00:39:24,556 onda naziv funkcije, tada bilo argumenata da bi moglo potrajati, 795 00:39:24,556 --> 00:39:25,530 baš kao u PHP. 796 00:39:25,530 --> 00:39:28,990 Ispada u JavaScriptu, jedan od najviše dosadnih funkcija koje postoje na oprezu. 797 00:39:28,990 --> 00:39:31,392 To je mali prozor koji će se pojaviti i vas upozoriti 798 00:39:31,392 --> 00:39:32,600 na neki komad informacija. 799 00:39:32,600 --> 00:39:33,766 To je općenito namršti. 800 00:39:33,766 --> 00:39:35,980 No, mi ćemo ga koristiti kao naš Prva vježba ovdje. 801 00:39:35,980 --> 00:39:37,900 >> Obavijest nekoliko obilježja JavaScript. 802 00:39:37,900 --> 00:39:41,524 Pojedinačne citati i dvostruki navodnici to zapravo nije bitno više. 803 00:39:41,524 --> 00:39:43,690 Pojedinačne citati i dvostruka citati mogu se zamijeniti, 804 00:39:43,690 --> 00:39:46,220 dok je u C, morate koristiti dvostruki navodnici za gudače, 805 00:39:46,220 --> 00:39:48,150 i imate dva jedan citati za znakova. 806 00:39:48,150 --> 00:39:51,150 U JavaScript svijetu, mnogi ljudi, većina ljudi 807 00:39:51,150 --> 00:39:54,970 koristiti jednostruke navodnike oko žice Samo zato što je stilska stvar. 808 00:39:54,970 --> 00:39:58,330 No, ono što je plus operatera ovdje, koje nismo vidjeli prije? 809 00:39:58,330 --> 00:39:59,836 >> PUBLIKA: Concatenation. 810 00:39:59,836 --> 00:40:00,960 DAVID Malan: Concatenation. 811 00:40:00,960 --> 00:40:02,450 Dakle C nema ni to. 812 00:40:02,450 --> 00:40:04,820 PHP ima operator točkica, što to čini. 813 00:40:04,820 --> 00:40:09,710 JavaScript ima plus operatora, koji je zbunjujuće je baš kao i Java. 814 00:40:09,710 --> 00:40:11,440 Sada što se ovdje događa? 815 00:40:11,440 --> 00:40:14,260 >> Dakle, evo gdje osnovni razumijevanje toj slici 816 00:40:14,260 --> 00:40:17,010 smo povratio par dana dolazi u igru. 817 00:40:17,010 --> 00:40:19,620 Sjećaš li se kad smo imali jednostavan verzija HTML page-- 818 00:40:19,620 --> 00:40:20,830 to samo rekao, pozdravio svijet. 819 00:40:20,830 --> 00:40:22,770 A onda smo nacrtali stablo desno, što 820 00:40:22,770 --> 00:40:27,320 imao hrpu pravokutnika i linija povezujući ih poput obiteljskog stabla. 821 00:40:27,320 --> 00:40:30,820 Dakle, to je tzv DOM ili Document Object Model. 822 00:40:30,820 --> 00:40:36,759 I ispada da možete pristupiti pravokutnici u tom stablu s sintakse 823 00:40:36,759 --> 00:40:37,550 kao što je sljedeće. 824 00:40:37,550 --> 00:40:41,370 Vi doslovno kažu dokument, koji je Poseban globalna varijabla u JavaScriptu 825 00:40:41,370 --> 00:40:45,890 program koji ima funkciju povezana s njom da možete pristupiti 826 00:40:45,890 --> 00:40:50,280 sličan STRUCT, ali jednostavno kažu točku, a zatim funkciju ime, 827 00:40:50,280 --> 00:40:52,390 dobili elementa po ID. 828 00:40:52,390 --> 00:40:55,460 >> Element želim dobiti je očito citat citat ime. 829 00:40:55,460 --> 00:40:57,150 A onda želim dobiti svoju vrijednost. 830 00:40:57,150 --> 00:40:58,330 Sada smo sve ispred sebe. 831 00:40:58,330 --> 00:41:00,038 Nisam ni siguran što sve to je oko. 832 00:41:00,038 --> 00:41:03,000 Idemo brzo naprijed u HTML na stranica, što je super jednostavna. 833 00:41:03,000 --> 00:41:05,370 >> Obavijest da sam definira formirati ovdje. 834 00:41:05,370 --> 00:41:07,940 Obavijest sam joj dao jedinstven ID, iako nismo koristi 835 00:41:07,940 --> 00:41:08,870 ovaj atribut prije. 836 00:41:08,870 --> 00:41:11,300 No, to postoji u HTML. 837 00:41:11,300 --> 00:41:15,570 Možete jedinstveno prepoznati neki komad HTML s identifikator kao što je ovaj. 838 00:41:15,570 --> 00:41:19,880 >> Obavijest sada this-- ispada HTML podržava, po tom popisu pranja 839 00:41:19,880 --> 00:41:22,490 Trenutak prije, cijeli hrpa rukovatelje događajima. 840 00:41:22,490 --> 00:41:25,060 I ovaj događaj rukovatelj govori o dostavi. 841 00:41:25,060 --> 00:41:28,730 Na korisničkom podnošenja ove oblik, nazovite sljedeći kod. 842 00:41:28,730 --> 00:41:31,360 I kod koji se događa da se zove ili pogubljeni 843 00:41:31,360 --> 00:41:35,260 je upravo to, grčki Funkcija slijedi povratak false. 844 00:41:35,260 --> 00:41:37,360 Sve ostalo bi trebalo biti prilično upoznati. 845 00:41:37,360 --> 00:41:42,050 >> Ovdje je ulaz tipa teksta, čiji je ID, u ovom slučaju, će biti ime. 846 00:41:42,050 --> 00:41:45,430 Nemamo stvarni naziv atribut ovo time-- i tipku podnijeti. 847 00:41:45,430 --> 00:41:48,330 Dakle, što je rezultiralo stranica izgleda ovako. 848 00:41:48,330 --> 00:41:52,890 I što je rezultiralo ponašanja, vidjet ćete, izgleda ovako. 849 00:41:52,890 --> 00:41:56,940 Stranica to lokalni domaćini, kaže, Pozdrav David jedva estetski ugodan 850 00:41:56,940 --> 00:41:58,340 način pozdraviti korisnika. 851 00:41:58,340 --> 00:41:59,950 Ali što se zapravo događa? 852 00:41:59,950 --> 00:42:01,360 >> Pa, razmislite što je to. 853 00:42:01,360 --> 00:42:02,310 Ovaj je tekst polje. 854 00:42:02,310 --> 00:42:04,635 A prema HTML ovdje, što sam ga dao 855 00:42:04,635 --> 00:42:07,350 jedinstveni identifikator zove citat citat ime. 856 00:42:07,350 --> 00:42:09,770 U međuvremenu, ja sam rekao, kada korisnik pošalje ovaj obrazac 857 00:42:09,770 --> 00:42:13,820 skom Enter, ili kliknuti Pošalji gumb, nazovite funkciju nazvanu Pozdravite 858 00:42:13,820 --> 00:42:15,410 a zatim se vratiti False. 859 00:42:15,410 --> 00:42:16,870 Razmotrimo one u rikverc. 860 00:42:16,870 --> 00:42:20,590 Obavijest kada sam kliknite na Pošalji, URL ove stranice se ne mijenja. 861 00:42:20,590 --> 00:42:22,420 Ikona preglednika nije početi vrti. 862 00:42:22,420 --> 00:42:27,050 Nisam nigdje ići, a to je doslovno jer sam rekao povratak False. 863 00:42:27,050 --> 00:42:31,534 Return false kratkog spoja ili zaustavlja zadani ponašanje obliku. 864 00:42:31,534 --> 00:42:33,700 Tako da nas onda ostavlja ovo posljednje pitanje. 865 00:42:33,700 --> 00:42:34,764 Što Pozdravite učiniti? 866 00:42:34,764 --> 00:42:36,680 Pa, očito Pozdravite poziva funkciju nazvanu 867 00:42:36,680 --> 00:42:39,250 Uzbuna, prolazi u jednom dugo argument da je 868 00:42:39,250 --> 00:42:43,950 Rezultat nadovezivanjem zajedno hrpa podnizova, pozdravi zarezom prostor, 869 00:42:43,950 --> 00:42:45,810 onda god to vraća. 870 00:42:45,810 --> 00:42:51,490 Dakle, dokument je kao globalni varijabla na taj korijen tog stabla, 871 00:42:51,490 --> 00:42:55,560 nazivajući posebnu funkciju, drugdje, poznat kao postupak. 872 00:42:55,560 --> 00:42:57,650 Funkcija koja je unutar varijabla 873 00:42:57,650 --> 00:42:59,640 zove metoda umjesto funkcija. 874 00:42:59,640 --> 00:43:01,570 >> Dakle, dobili elementa po ID. 875 00:43:01,570 --> 00:43:03,940 Ono što je element vi želite dobiti po ID? 876 00:43:03,940 --> 00:43:06,970 Citat citat ime i zatim posebno cijeniti. 877 00:43:06,970 --> 00:43:12,000 Dakle, drugim riječima, da se kod jednostavno pronalazi polje teksta čiji ID je ime 878 00:43:12,000 --> 00:43:13,380 a zatim dobiva svoju vrijednost. 879 00:43:13,380 --> 00:43:16,460 Dakle, ako bih da se to promijeni i reći Davin umjesto Davida, 880 00:43:16,460 --> 00:43:20,670 i kliknite Pošalji, sada smo imaju pozdrav za Davin. 881 00:43:20,670 --> 00:43:22,890 >> U redu, tako da sve u redu i dobro. 882 00:43:22,890 --> 00:43:25,480 No, da vidimo možemo li napraviti ovo malo čišći, jer jednostavno 883 00:43:25,480 --> 00:43:28,190 pisanje koda kao što je to općenito će se namršti. 884 00:43:28,190 --> 00:43:30,060 To će izgledati strašnije. 885 00:43:30,060 --> 00:43:32,330 No, ono što je prvi Razlika koju umu ovdje 886 00:43:32,330 --> 00:43:35,970 U ovoj verziji osim ime mijenja u DOM jedan? 887 00:43:35,970 --> 00:43:41,110 Što strukturno izgleda drugačije o tome u odnosu na druge? 888 00:43:41,110 --> 00:43:41,932 Da? 889 00:43:41,932 --> 00:43:43,890 PUBLIKA: Je obrazac na vrhu pisma sada? 890 00:43:43,890 --> 00:43:46,570 DAVID Malan: Da, forma je na vrhu skripte za neki neobjašnjiv razloga. 891 00:43:46,570 --> 00:43:48,736 Dakle, to je prva stvar da skače u mene, previše. 892 00:43:48,736 --> 00:43:50,990 I hvala bogu barem, ovaj dio je identičan. 893 00:43:50,990 --> 00:43:53,470 Dakle, jedino što se čini biti drugačiji je to. 894 00:43:53,470 --> 00:43:55,296 >> Evo što je uredan o JavaScript 2. 895 00:43:55,296 --> 00:43:57,420 I to ga čini teško razumjeti na prvi pogled, 896 00:43:57,420 --> 00:44:00,670 pogotovo za konačnih projekata ukoliko gledaš uzorak koda na internetu, 897 00:44:00,670 --> 00:44:04,200 ali to se svodi na neki osnovna sintaktička obilježja. 898 00:44:04,200 --> 00:44:06,230 Ovdje ponovno je da globalna varijabla dokument. 899 00:44:06,230 --> 00:44:09,540 Ovdje ponovno je da metoda ili funkcija koji kaže dobili element po ID. 900 00:44:09,540 --> 00:44:11,570 Ovaj put želim dobiti ID zove demo. 901 00:44:11,570 --> 00:44:12,490 Gdje je to? 902 00:44:12,490 --> 00:44:15,400 To je očito u pravu Ovdje, sama forma. 903 00:44:15,400 --> 00:44:20,010 >> A sada primijetiti da je očito da sam vratiti taj čvor iz drveta koje 904 00:44:20,010 --> 00:44:22,940 predstavlja oblik sama, a ne riječi, 905 00:44:22,940 --> 00:44:26,970 Ispada da je obrazac, koji čvor ili pravokutnika s drveta, 906 00:44:26,970 --> 00:44:30,450 ima ono što ćemo nazvati nekretninu, vrlo, vrlo, vrlo sličan 907 00:44:30,450 --> 00:44:35,390 U duhu na STRUCT u C. To je samo Član podataka unutar tog pravokutnika. 908 00:44:35,390 --> 00:44:38,300 >> Tako sam dobio obrazac ovdje, a ja sam pridaje, 909 00:44:38,300 --> 00:44:44,650 ili ću ustupanje, da njegova Na Pošaljite rukovatelj odnosno Dana Pošaljite nekretninu 910 00:44:44,650 --> 00:44:45,740 Sljedeća funkcija. 911 00:44:45,740 --> 00:44:49,000 A to je, daleko, najluđi što do sada sintaktički. 912 00:44:49,000 --> 00:44:53,610 Ispada u JavaScriptu i PHP, i iskreno se toga tiče u C, 913 00:44:53,610 --> 00:44:58,990 iako mi to ne učinite, možete dodaj bezimeni, anonimni ili AKA lambda 914 00:44:58,990 --> 00:45:03,000 Funkcije koje nemaju ime ali može biti pozvan svejedno. 915 00:45:03,000 --> 00:45:07,050 >> Dakle, ono što ja radim ovdje sam dodjeljivanje Na ovaj Pošaljite imovinu, koji 916 00:45:07,050 --> 00:45:14,330 je unutar tog čvora mog DOM stabla, funkcija, funkcija pokazivača ako hoćete. 917 00:45:14,330 --> 00:45:16,310 Ta funkcija nema ime, ali to ne 918 00:45:16,310 --> 00:45:19,110 stvar, jer vidjet ćemo u trenutku kako ga zovu. 919 00:45:19,110 --> 00:45:21,780 Kada je ova funkcija se zove, ovaj kod dobiva pogubljeni, a zatim 920 00:45:21,780 --> 00:45:24,210 lažno se vratio baš kao i prije. 921 00:45:24,210 --> 00:45:25,800 >> Ali primijetiti ono što sam učinio. 922 00:45:25,800 --> 00:45:27,830 U ovom trenutku u Priča, imam oblik. 923 00:45:27,830 --> 00:45:30,190 To je dobio jedinstveni ID zove demo. 924 00:45:30,190 --> 00:45:33,740 Ovdje dolje, imam oznaku skriptu da izvršava sljedeći kod. 925 00:45:33,740 --> 00:45:37,720 Ona pridaje taj čvor u Stablo se da je na Dostaviti 926 00:45:37,720 --> 00:45:40,260 Objekt ova funkcija ovdje. 927 00:45:40,260 --> 00:45:44,310 I samo po prirodi kako preglednici rade, kad sam sada kliknite Pošalji ili pritisnite tipku Enter, 928 00:45:44,310 --> 00:45:45,889 da je funkcija će se zove. 929 00:45:45,889 --> 00:45:48,680 To ne treba ime jer tko kritički brine ono što se zove. 930 00:45:48,680 --> 00:45:52,540 Jedini put je ikada idući u dobiti nazvao je kad sam dostaviti obrazac. 931 00:45:52,540 --> 00:45:55,130 Nema potrebe za mene, ljudski programer, 932 00:45:55,130 --> 00:45:57,330 zapravo ga nazvati bilo gdje drugdje. 933 00:45:57,330 --> 00:46:00,720 >> Sada samo kao teaser, kao da ne smeta dovoljno savijanje, 934 00:46:00,720 --> 00:46:03,330 mi čak može napraviti ovo izgledaju više zagonetan pomoću 935 00:46:03,330 --> 00:46:05,850 super popularna knjižnica zove jQuery. 936 00:46:05,850 --> 00:46:08,760 U stvari jQuery i JavaScript često spajaju. 937 00:46:08,760 --> 00:46:12,790 A što ćemo učiniti u srijedu je početak Korištenjem ove jezika i ove knjižnice 938 00:46:12,790 --> 00:46:16,030 graditi sve asinkroni i dinamičke aplikacije 939 00:46:16,030 --> 00:46:18,950 kao što su karte za dobivanje aplikacije, aplikacije 940 00:46:18,950 --> 00:46:22,360 da ažuriranje web stranicu u realnom Vrijeme, slično kao Facebook ili Gchat 941 00:46:22,360 --> 00:46:27,130 učiniti, i više ne se ograničiti na Udaranje Pošaljite strane get ili samo poštom 942 00:46:27,130 --> 00:46:27,630 sama. 943 00:46:27,630 --> 00:46:29,055 Dakle, ja ću vas vidjeti u srijedu. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [Glazbom] 946 00:46:35,550 --> 00:48:09,728