1 00:00:00,000 --> 00:00:01,940 >> [Predvajanje glasbe] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID Malan: To je CS 50, in to je začetek devetih tednu. 4 00:00:14,620 --> 00:00:18,240 In tisto, kar smo menili, da bi naredil danes ni samo zapreti poglavje o prejšnji teden je 5 00:00:18,240 --> 00:00:22,670 Material, kjer smo se osredotočili na strežniku stran web programiranje z PHP in SQL, 6 00:00:22,670 --> 00:00:23,549 nekatere podatkovne baze stvari. 7 00:00:23,549 --> 00:00:25,590 Bomo govorili o nekaj varnost danes in nato 8 00:00:25,590 --> 00:00:29,590 Prehod na odjemalsko programiranje jezik znan kot JavaScript. 9 00:00:29,590 --> 00:00:31,330 Najprej pa nekaj odkupa. 10 00:00:31,330 --> 00:00:35,030 >> Morda se boste spomnili, da je na Sreda, I določeno 11 00:00:35,030 --> 00:00:37,550 napisati spletno stran, ki je na vhodu uporabnikov 12 00:00:37,550 --> 00:00:41,120 ga HTML tvorita ki nato shrani da vhodni uporabnik imena, telefon 13 00:00:41,120 --> 00:00:43,124 številke, in mobilni telefon prevozniki v bazi. 14 00:00:43,124 --> 00:00:45,540 In potem sem imel malo ukaz linija scenarij napisan v PHP 15 00:00:45,540 --> 00:00:47,956 da naj bi Ponovil čez vrstice v podatkovni bazi 16 00:00:47,956 --> 00:00:49,400 in poslati besedilna sporočila. 17 00:00:49,400 --> 00:00:53,870 Kljub več, nekaj poskusih smo niso dobili, da je delo do konca. 18 00:00:53,870 --> 00:00:57,820 >> Zato sem to ves teden preživel delovno na to oznako, da nas priti mimo točke 19 00:00:57,820 --> 00:01:01,220 kjer smo končali, pri čemer vse Dobil sem do konca v sredo 20 00:01:01,220 --> 00:01:05,500 To besedilo je bilo sporočilo od Margo, kot sem si, 21 00:01:05,500 --> 00:01:09,940 sledi sporočilu SMS od drugega sošolec, imaš to Davida. 22 00:01:09,940 --> 00:01:14,030 Sledila je ta, nadvse spodbudni. 23 00:01:14,030 --> 00:01:15,840 Hrani na tekoč, zelo spodbuden. 24 00:01:15,840 --> 00:01:20,960 Skoraj sem ga dobil, dokler then-- in da je opomba smo končali v sredo. 25 00:01:20,960 --> 00:01:25,850 In potem dejansko morda moja najljubša, Trenutek kasneje, to je prišel v. 26 00:01:25,850 --> 00:01:27,000 Prekleto živo. 27 00:01:27,000 --> 00:01:31,080 >> Torej, danes smo to popraviti s hitro poglej, kaj sem naredil, ker. 28 00:01:31,080 --> 00:01:35,440 Torej, vse te kode je na voljo online od prejšnjega tedna, osem tednom 29 00:01:35,440 --> 00:01:36,300 izvorna koda. 30 00:01:36,300 --> 00:01:39,425 In videli boste, da sem šel skozi, in sem pravzaprav očistiti stvari bit. 31 00:01:39,425 --> 00:01:42,080 Predstavil sem nekaj drugega lastnosti podatkovne zbirke SQL. 32 00:01:42,080 --> 00:01:45,300 Na primer, namesto samo da nosilec var char 33 00:01:45,300 --> 00:01:47,310 saj mislim, da sem na letenje prejšnji teden. 34 00:01:47,310 --> 00:01:49,820 Namesto da sem ga opredelimo kot kar se imenuje enum. 35 00:01:49,820 --> 00:01:53,310 >> In nekateri od vas morda so to videli kot smo raziskali C. Enum je pravzaprav 36 00:01:53,310 --> 00:01:56,820 značilnost C, kjer si lahko našteti cel kup konstant 37 00:01:56,820 --> 00:01:59,640 in jim dodeliti avtomatske vrednosti, kot ena, dva, tri, štiri 38 00:01:59,640 --> 00:02:01,330 ne da bi trde kodnih številkah. 39 00:02:01,330 --> 00:02:04,780 Torej SQL podpira isti, pri čemer, če imate polje zbirke podatkov, ki jih le 40 00:02:04,780 --> 00:02:09,389 želim, da bi na eni od končnih vrednosti, lahko dobesedno določite 41 00:02:09,389 --> 00:02:13,120 kot sem pa naredil za štiri priljubljeni mobilni telefon prevozniki ZDA. 42 00:02:13,120 --> 00:02:13,819 >> Zato sem to storil. 43 00:02:13,819 --> 00:02:16,610 In sem naredila nekaj sprememb, ki so dobro, od katerih je najbolj pomembna 44 00:02:16,610 --> 00:02:20,090 je bil, da se email delovati zaradi odpoklica, da je ta program na katere se sklicuje, ki 45 00:02:20,090 --> 00:02:23,470 običajno imenujemo email SMS gateway, ki je pravkar 46 00:02:23,470 --> 00:02:27,670 fancy način rekel, da je Verizon, in AT & T, in drugi ljudje podpirajo strežnik, 47 00:02:27,670 --> 00:02:30,740 pri čemer če prejme email, ga pretvori v SMS 48 00:02:30,740 --> 00:02:33,290 in pošilja besedila Sporočilo za nekoga telefon. 49 00:02:33,290 --> 00:02:37,010 Torej, če sem to storil pravilno, Tukaj je nova in izboljšana oblika 50 00:02:37,010 --> 00:02:39,259 da se dogaja, da se pogovorite s novo in izboljšano kodo, ki 51 00:02:39,259 --> 00:02:40,300 lahko igrate s spleta. 52 00:02:40,300 --> 00:02:44,140 In bo, upajmo, da moj Telefon piska vsak trenutek. 53 00:02:44,140 --> 00:02:47,240 >> Torej, najprej, jaz grem, da tip v mojem imenu. 54 00:02:47,240 --> 00:02:51,400 Drugič, ne bom to tokrat narediti. 55 00:02:51,400 --> 00:02:53,920 Bom pa Preglej element. 56 00:02:53,920 --> 00:02:56,710 In to je samo malo stvar, tako da jaz ne 57 00:02:56,710 --> 00:02:59,250 ustvariti ur postprodukcije delo, kot sem storil zadnjič. 58 00:02:59,250 --> 00:03:02,300 Tam zdaj je moja telefonska številka. 59 00:03:02,300 --> 00:03:03,560 >> Bom izberite Verizon. 60 00:03:03,560 --> 00:03:10,260 In tukaj, dajmo vklopiti ta mikrofon tukaj in si to na mojem telefonu tukaj. 61 00:03:10,260 --> 00:03:13,130 Bom kliknite Registracija, ki naj bi, upajmo, 62 00:03:13,130 --> 00:03:14,530 ga dal v bazo podatkov. 63 00:03:14,530 --> 00:03:16,780 Zdaj bom šel na Program linija poveljevanja, ki 64 00:03:16,780 --> 00:03:20,825 Odpoklic je bil imenovan dot slash besedilo, in čez prste. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 Gremo. 67 00:03:26,527 --> 00:03:27,501 >> [TELEFONA Dings] 68 00:03:27,501 --> 00:03:28,962 >> [Ploskanje] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID Malan: So bolj zabavno kot this-- je zabavno, seveda, če bom v to. 71 00:03:34,940 --> 00:03:38,004 Ampak to je bolj zabavno, sem mislil, če bi ustvarjena eden tistih filmskih trenutkov 72 00:03:38,004 --> 00:03:40,420 kjer je kot nekaj, kar v resnici slabega se je zgodilo v svetu, 73 00:03:40,420 --> 00:03:42,860 in tako kot vsi NSA ljudske s cellphones začnejo piskati 74 00:03:42,860 --> 00:03:44,860 s pomočjo besedilnih sporočil jih opozori na to dejstvo. 75 00:03:44,860 --> 00:03:47,026 Zato sem mislil, da bi poskušali poustvariti isto tukaj, 76 00:03:47,026 --> 00:03:49,610 pri čemer se ne uporabljajo bazo podatkov, Sem namesto vnaprej 77 00:03:49,610 --> 00:03:51,490 napisal program, ki izgleda takole. 78 00:03:51,490 --> 00:03:53,660 >> To je index.php-- in sem dal to kodo na spletu 79 00:03:53,660 --> 00:03:56,710 kot well-- ki očitno Samo ometi form.php, 80 00:03:56,710 --> 00:04:00,990 uporabo MVC slog paradigmo, ki smo govoriti podrobneje problematičnega niz 81 00:04:00,990 --> 00:04:01,650 sedem. 82 00:04:01,650 --> 00:04:02,910 Ta oblika je zelo preprosta. 83 00:04:02,910 --> 00:04:06,634 To se dogaja, da predloži datoteka z imenom here.php po pošti. 84 00:04:06,634 --> 00:04:09,300 In to je očitno bom prosil za ime in telefonsko številko, 85 00:04:09,300 --> 00:04:11,400 in nato preko dne takoimenovane Izberite Meni, da je 86 00:04:11,400 --> 00:04:14,250 dogaja, da vam vsaj štiri priljubljeni mobilni telefon prevozniki v ZDA, 87 00:04:14,250 --> 00:04:17,470 in potem vam omogočajo, da učinkovito sprejmejo udeležbo s klikom tukaj. 88 00:04:17,470 --> 00:04:20,471 >> In tukaj, medtem, se dogaja, da sposoditi nekaj kode iz zadnjega časa. 89 00:04:20,471 --> 00:04:22,553 In če ste le prelistati to, boste videli, da obstaja 90 00:04:22,553 --> 00:04:23,900 cel kup preverjanje napak. 91 00:04:23,900 --> 00:04:26,640 Vendar je lepota na koncu je, da nismo pisanju v zbirko podatkov danes. 92 00:04:26,640 --> 00:04:29,130 Mi držimo preprosta in Samo pošiljanje upajmo 93 00:04:29,130 --> 00:04:32,190 besedilno sporočilo s funkcijsko I je napisal v zadnjih nekaj dneh razpisa 94 00:04:32,190 --> 00:04:36,270 Besedilo, ki je v funkciji. php, kar je spet na voljo na spletu. 95 00:04:36,270 --> 00:04:38,210 >> Torej, če bi želeli, da sodelujejo pri tem. 96 00:04:38,210 --> 00:04:40,190 Ne bomo se shranjevanje ničesar. 97 00:04:40,190 --> 00:04:43,809 Pojdite na ta URL tukaj v realnem času. 98 00:04:43,809 --> 00:04:46,850 Ga ne predloži samo še, vendar Dovolite videli, če lahko imamo eno od teh film 99 00:04:46,850 --> 00:04:49,830 trenutki, ko mobilni telefon vsakogar začne piskati, upajmo samo 100 00:04:49,830 --> 00:04:53,580 enkrat letos za razliko od 2011 kjer je to šlo hudo narobe. 101 00:04:53,580 --> 00:04:58,910 In ko greš na ta naslov, bi morali videti super preprost obrazec 102 00:04:58,910 --> 00:05:03,884 da če imaš ime, mobilni telefon številko in mobilni telefon prevoznik, ki 103 00:05:03,884 --> 00:05:06,175 ujema seznam obstaja, pojdite naprej in izpolnite obrazec. 104 00:05:06,175 --> 00:05:07,880 Vendar ne hit predložiti samo še. 105 00:05:07,880 --> 00:05:10,850 >> Obrazec se bo izgledala takole. 106 00:05:10,850 --> 00:05:13,660 Pojdi naprej in vnesite vaše ime, telefonska številka. 107 00:05:13,660 --> 00:05:17,670 OOP, nekdo se dogaja pred krivulje. 108 00:05:17,670 --> 00:05:18,170 To je OK. 109 00:05:18,170 --> 00:05:19,340 OK, vsi se izpolnijo obrazec. 110 00:05:19,340 --> 00:05:21,400 To bi moralo delati na telefon, preveč, če hočeš. 111 00:05:21,400 --> 00:05:23,695 Vse je v redu, na vaših znamk, se določi, pojdi. 112 00:05:23,695 --> 00:05:24,195 Hit tukaj. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 Kaj je? 115 00:05:27,775 --> 00:05:31,140 116 00:05:31,140 --> 00:05:31,640 No. 117 00:05:31,640 --> 00:05:34,410 118 00:05:34,410 --> 00:05:40,250 Prisežem pri Bogu, da sem testiral to večkrat danes. 119 00:05:40,250 --> 00:05:41,720 Razumeš? 120 00:05:41,720 --> 00:05:43,145 >> [Interposing GLAS] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID Malan: OK, si morda napaka. 123 00:05:49,560 --> 00:05:50,550 To je dva. 124 00:05:50,550 --> 00:05:53,300 Je delal za dve od nekaj sto, tri, štiri. 125 00:05:53,300 --> 00:05:55,940 OK, to je dobro. 126 00:05:55,940 --> 00:05:58,520 Štirje od petih za pravilnost in kako približno. 127 00:05:58,520 --> 00:05:59,810 >> Torej, kaj se je pravkar zgodilo? 128 00:05:59,810 --> 00:06:02,727 Torej, verjetno, ne da bi videl vaše zasloni, zakaj bi to bili errored? 129 00:06:02,727 --> 00:06:05,518 Verjetno je, da smo bili le trudijo, da bi preveč povezav 130 00:06:05,518 --> 00:06:08,110 s poštnim strežnikom Harvard vse na enkrat iz istega IP naslova. 131 00:06:08,110 --> 00:06:10,740 Jaz sem samo ugibati, saj nisem razkošje testiranja 132 00:06:10,740 --> 00:06:13,220 to kodo z nekaterimi 300 ljudi v vnaprej 133 00:06:13,220 --> 00:06:16,040 vendar za zdaj spoznali, da da vsaj naj 134 00:06:16,040 --> 00:06:18,250 gotten delo opravljeno tokrat. 135 00:06:18,250 --> 00:06:22,880 >> Vse je v redu, zakaj je to vse bolj soroden, kaj se dogaja? 136 00:06:22,880 --> 00:06:24,900 Kot prvo, hitro Nekaj ​​objav. 137 00:06:24,900 --> 00:06:29,350 Torej, ena, če želite, da se pridružijo Chang, in Nick, in drugi na kosilo v petek, 138 00:06:29,350 --> 00:06:32,400 storiti RSVP ob običajnem URL tam. 139 00:06:32,400 --> 00:06:35,650 Če razmišljate, koncentracija ali delaš sekundarna v CS, 140 00:06:35,650 --> 00:06:38,941 ali ste letniku ali novinec, ali celo junior ali senior na tej točki 141 00:06:38,941 --> 00:06:42,490 in še vedno lahko stisnite v predmetih, zavedati, da šole inženiring 142 00:06:42,490 --> 00:06:45,620 se zbirajo za prosti Ben in Jerry sladoled in nasveti 143 00:06:45,620 --> 00:06:48,910 To sredo je kmalu po razredu ob 4:00 uri v stavbi CS 144 00:06:48,910 --> 00:06:49,771 na Maxwell Dworkin. 145 00:06:49,771 --> 00:06:51,520 Če je to prehitro na zaslonu, pojdite 146 00:06:51,520 --> 00:06:55,260 da cs50.harvard.edu za povezava na Facebook dogodek 147 00:06:55,260 --> 00:06:57,140 kjer si lahko ogledate več podrobnosti. 148 00:06:57,140 --> 00:07:01,390 >> Medtem, sem mislil, da bi popravili še ena stvar, ki sem goofed sredo. 149 00:07:01,390 --> 00:07:04,400 Izkazalo se je, da Marka ID na Facebooku ni bila tri. 150 00:07:04,400 --> 00:07:05,230 Bilo je štiri. 151 00:07:05,230 --> 00:07:08,330 Izkazalo se je, da je imela več preizkus Računi, kot se spomnim. 152 00:07:08,330 --> 00:07:12,400 Toda kaj je ta počutil kot priložnost storiti je, da dvigni URL, kot je ta. 153 00:07:12,400 --> 00:07:16,680 >> Tako se izkaže, da ima Facebook API, Application Programming Interface, 154 00:07:16,680 --> 00:07:20,070 ki je mehanizem, s katerim vas lahko zahteva podatke programsko 155 00:07:20,070 --> 00:07:24,480 na Facebooku in se vrnem stroj berljive informacije, ne pa spletne strani 156 00:07:24,480 --> 00:07:28,690 ampak samo surovo besedilo, nekaj imenovano JavaScript Object Notation. 157 00:07:28,690 --> 00:07:32,150 In v resnici, če obiščete to URL in povečate privzeto 158 00:07:32,150 --> 00:07:34,960 to je Mark je javno dostopne informacije. 159 00:07:34,960 --> 00:07:37,430 >> In zanimiv detajl Tukaj je le, da je njegov ID 160 00:07:37,430 --> 00:07:40,670 je res, številka štiri, ki sem ga takoj, ko sem to naredil spoznal. 161 00:07:40,670 --> 00:07:44,260 To lahko storite sami, če veš vaš Facebook uporabniško ime, če ga imate. 162 00:07:44,260 --> 00:07:45,440 Samo tip do vrha tam. 163 00:07:45,440 --> 00:07:46,640 In nič od tega je zasebni. 164 00:07:46,640 --> 00:07:48,670 Jaz sem to počel le še v načinu brez beleženja zgodovine. 165 00:07:48,670 --> 00:07:49,900 Torej, nisem še prijavljeni. 166 00:07:49,900 --> 00:07:54,440 In ste videli, da sem očitno je uporabnik številka 6454 167 00:07:54,440 --> 00:07:56,480 na Facebooku, ki ni Škoda, da v teh dneh. 168 00:07:56,480 --> 00:07:59,900 Torej, v vsakem primeru, boste videli tudi dodatne informacije tam. 169 00:07:59,900 --> 00:08:02,150 >> In koristen vidik za to je, da vas 170 00:08:02,150 --> 00:08:06,890 Lahko bi napisali svojo lastno programsko opremo, ki nekako združuje podatke, kot je ta 171 00:08:06,890 --> 00:08:08,170 v svojo lastno uporabo. 172 00:08:08,170 --> 00:08:10,650 Lahko spodbujajo potrošnike k prijavite v vašo spletno stran, 173 00:08:10,650 --> 00:08:14,190 ne uporabljajo svoje ime po meri in Geslo vendar morda njihov Facebook prijava 174 00:08:14,190 --> 00:08:16,170 in dobili informacije tudi o svojih prijateljih, 175 00:08:16,170 --> 00:08:18,740 če odobri tak ali podoben. 176 00:08:18,740 --> 00:08:21,430 Tako ugotavljajo, da CS50, preveč, ima nekaj svojih API-jev, 177 00:08:21,430 --> 00:08:24,620 eno za podatke kataloga Seveda, nekaj za objeme menije v jedilnico 178 00:08:24,620 --> 00:08:26,730 dvorane, vse stavbe in lokacije 179 00:08:26,730 --> 00:08:30,930 na kampusu imamo API, kot tudi da lahko poizvedbo podobno in se 180 00:08:30,930 --> 00:08:35,520 podatki za nazaj tekstualni, ki jih lahko vključijo v PHP ali JavaScript, ali celo, 181 00:08:35,520 --> 00:08:38,320 čeprav manj pogosto, C na osnovi končnega projekta. 182 00:08:38,320 --> 00:08:41,190 >> Dejansko luč za končno Projekt je nekaj mejnikov. 183 00:08:41,190 --> 00:08:42,980 Si dobil email od nas drugi dan. 184 00:08:42,980 --> 00:08:45,761 Zavedam se, da je predlog je zaradi tega prihaja ponedeljek. 185 00:08:45,761 --> 00:08:49,010 To ni nujno zavezujoč, vendar pa ne potrebujejo, da prejmemo vaše učnih štipendistov 186 00:08:49,010 --> 00:08:51,260 odobritev, preden nato vse spremembe. 187 00:08:51,260 --> 00:08:54,280 In potem naprej, so število drugih mejnikov. 188 00:08:54,280 --> 00:08:56,542 >> Tako zafrkavali, preveč, z nekaterimi možnostmi, 189 00:08:56,542 --> 00:08:58,250 imamo kup ta odtenek žarnice. 190 00:08:58,250 --> 00:09:01,190 In ste nekateri fantje zdaj nekateri od teh v študentski sobi, kot tudi. 191 00:09:01,190 --> 00:09:02,920 In tudi oni imajo API. 192 00:09:02,920 --> 00:09:07,300 Tako da umakne binarne žarnice tedna nazaj, da je Dan Bradley in Ansel 193 00:09:07,300 --> 00:09:08,780 Duff ustvarjen za nas. 194 00:09:08,780 --> 00:09:12,560 Se uporabljajo programski vmesnik za ta žarnica, ki je v tem trenutku 195 00:09:12,560 --> 00:09:15,232 je priključen v električno energijo in nato preko brezžične 196 00:09:15,232 --> 00:09:17,690 je povezan z majhno stvar imenovan Bridge tukaj, 197 00:09:17,690 --> 00:09:21,280 kot majhen usmerjevalnik lastniške s tem posamezne naprave. 198 00:09:21,280 --> 00:09:26,540 >> Vendar se izkaže, če vem, kako pošiljanje HTTP sporočil, kot smo vsi storiti zdaj, 199 00:09:26,540 --> 00:09:31,670 Ne morem poslati sporočilo, kot je ta, da ta žarnica, da ga vklopite ali izklopite 200 00:09:31,670 --> 00:09:34,000 ali pa poljubno število druge operacije na njem. 201 00:09:34,000 --> 00:09:36,110 Obvestilo, da je ne bi dobili, da je ne bi objavili. 202 00:09:36,110 --> 00:09:37,760 Tukaj je še ena imenovana put. 203 00:09:37,760 --> 00:09:39,630 Tam je pravzaprav nekaj drugih takih glagolov. 204 00:09:39,630 --> 00:09:42,920 Ampak obvestilo, tam je pot tam, poševnica API, poševnica nov razvijalec, 205 00:09:42,920 --> 00:09:44,990 poševnica svetlobo, poševnica eno, poševnica stanje. 206 00:09:44,990 --> 00:09:49,060 >> To je očitno samo Pot, ki je podjetje Philips, 207 00:09:49,060 --> 00:09:51,640 odločili, morate zadeti z zahtevo HTTP 208 00:09:51,640 --> 00:09:55,010 Če želite spremeniti stanje žarnice z uporabo HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 Potem je opazil prazno vrstico. 210 00:09:56,380 --> 00:10:00,170 In potem končno Izgleda vrsta paleto neke vrste, 211 00:10:00,170 --> 00:10:04,730 to znova se dogaja, da se imenuje JavaScript Object Notation ali Jason. 212 00:10:04,730 --> 00:10:08,000 In tisto, kar vidite tukaj, je, da obstajajo tri ključne pari vrednosti. 213 00:10:08,000 --> 00:10:09,115 >> Eden ključnih je pozval. 214 00:10:09,115 --> 00:10:10,990 Njena vrednost pa očitno se dogaja, da bi bilo res. 215 00:10:10,990 --> 00:10:13,612 Svetlost je 128, ki je neke vrste int. 216 00:10:13,612 --> 00:10:15,820 In potem, ko gre za prehod nič, kar je očitno 217 00:10:15,820 --> 00:10:17,970 kako dolgo se dogaja, da trajalo, da vklopite to stvar naprej. 218 00:10:17,970 --> 00:10:19,890 >> Torej, zdaj je ta žarnica ne sveti. 219 00:10:19,890 --> 00:10:22,880 Ampak, če jaz prav this-- pustiti grem na malo goljufija stanja 220 00:10:22,880 --> 00:10:25,200 Dan, ki je določeno v advance-- in bom 221 00:10:25,200 --> 00:10:27,920 da gredo naprej in kopiranje Naslednji ukaz. 222 00:10:27,920 --> 00:10:30,200 Curl, kot nekateri od vas morda naberejo na CS50 223 00:10:30,200 --> 00:10:35,080 Pogovorite se je uporabnost kot Telnet takšne da lahko simulirajo zahteve HTTP, 224 00:10:35,080 --> 00:10:36,360 posebej postavlja. 225 00:10:36,360 --> 00:10:39,710 Ne morem poslati te podatke, posebej, kar smo pravkar 226 00:10:39,710 --> 00:10:43,430 videli malo prej, posebej na ta URL več tukaj. 227 00:10:43,430 --> 00:10:46,310 In potem Curl bo ročaj vsemi potrebnimi glave 228 00:10:46,310 --> 00:10:47,600 in tam razčlenjevanja. 229 00:10:47,600 --> 00:10:54,700 >> Torej, vse kar morate storiti je, kopirati to v terminalsko okno in nato pritisnite tipko Enter. 230 00:10:54,700 --> 00:10:56,000 In žarnica gre naprej. 231 00:10:56,000 --> 00:10:59,060 In to je vse skozi moj računalnik brezžično 232 00:10:59,060 --> 00:11:01,960 nekako navzdol do mostu, ki je nato govoril s to žarnico. 233 00:11:01,960 --> 00:11:02,960 Jaz lahko naredim nekaj drugega. 234 00:11:02,960 --> 00:11:07,050 Jaz lahko to stvar pojdi red na primer. 235 00:11:07,050 --> 00:11:11,040 Lahko, na primer, ta stvar gredo zelene. 236 00:11:11,040 --> 00:11:12,220 Lahko, da bo šel modro. 237 00:11:12,220 --> 00:11:14,760 >> In obvestilo iz vsakega od teh primerki, vsi, ki sem spreminjajo 238 00:11:14,760 --> 00:11:18,540 je tako imenovana odtenek vrednost pravzaprav ji dati nekaj barve. 239 00:11:18,540 --> 00:11:20,320 Zato mi dovolite, prilepite tole v kot dobro. 240 00:11:20,320 --> 00:11:21,000 Zdaj je modra. 241 00:11:21,000 --> 00:11:24,672 >> In lahko naredi še Ljubitelj Stvari where-- pojdimo v zeleno. 242 00:11:24,672 --> 00:11:26,630 In jaz bi to naredil za Seveda s svojo lastno kodo. 243 00:11:26,630 --> 00:11:30,670 Toda tudi sama API podpira funky poslovanja 244 00:11:30,670 --> 00:11:35,510 kot je ta, ki se bo zdaj moti nam za naslednjih 30 sekund. 245 00:11:35,510 --> 00:11:39,170 >> Tako da je eden okus, kaj bi lahko storiti z API, ta vključuje 246 00:11:39,170 --> 00:11:40,010 žarnice. 247 00:11:40,010 --> 00:11:42,510 Upoštevajte, da ima CS50 par pari Google Glass, če bi 248 00:11:42,510 --> 00:11:45,380 želeli rešiti nekaj skupaj te vrstice, Arduino unos, ki 249 00:11:45,380 --> 00:11:48,670 so mali računalniki, v bistvu, na malo vezja 250 00:11:48,670 --> 00:11:50,470 da se lahko povežete žice in druge stvari 251 00:11:50,470 --> 00:11:52,732 nuditi in nadzor vaš realni svet okolje. 252 00:11:52,732 --> 00:11:54,940 In potem so tu še par nove igrače, ki jih imamo. 253 00:11:54,940 --> 00:11:59,294 Ta je dobesedno pravkar prispel drugi dan po pošti, Myo Armband. 254 00:11:59,294 --> 00:12:01,710 In sem mislil, da je to način, da se dobili ste navdušeni nad projektom 255 00:12:01,710 --> 00:12:03,720 ki jo lahko uporabljate z Ta strojna bi 256 00:12:03,720 --> 00:12:08,900 je, da igrajo ta kratek posnetek da se zafrkavajo ljudje 257 00:12:08,900 --> 00:12:10,500 da smo zdaj živi v prihodnje. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [Predvajanje glasbe] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID Malan: Torej, v nekaj tednih, vam Tudi mogoče, da se ohladi na sejmu CS50. 262 00:13:37,109 --> 00:13:39,150 Druga priprava, da smo imajo kup, da smo 263 00:13:39,150 --> 00:13:42,090 vesel, da posojilo za projekte, se imenuje krmilnik gibanja. 264 00:13:42,090 --> 00:13:45,030 To je malo USB naprave povežete z računalnikom, ki 265 00:13:45,030 --> 00:13:47,520 vam omogoča interakcijo z prenosni računalnik, Mac ali PC, 266 00:13:47,520 --> 00:13:51,570 kot da ste imeli kot Xbox Kinect in dejansko fizičnega predloge mnogo 267 00:13:51,570 --> 00:13:54,509 kot smo videli v tem vizija prihodnosti. 268 00:13:54,509 --> 00:13:56,505 >> [Predvajanje glasbe] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID Malan: Torej, tudi če imate ne vem, kako se kaj takega 271 00:15:06,260 --> 00:15:10,050 mogoče bi bilo izmišljeno ali delo na ravni strojne opreme, ne glede na to. 272 00:15:10,050 --> 00:15:13,520 Tudi po nekaj mesecih CS50, in razumevanje programiranja 273 00:15:13,520 --> 00:15:19,460 bolj na splošno, in spletno programiranje več v zadnjem času, in nato tudi API, in HTTP, 274 00:15:19,460 --> 00:15:21,830 boste imeli dostop preko programske opreme API če vas 275 00:15:21,830 --> 00:15:24,680 bi želeli, da se zadolži enega od teh Naprave za dejansko govoriti z njo 276 00:15:24,680 --> 00:15:27,180 in ni treba skrbeti za osnovni izvajanje 277 00:15:27,180 --> 00:15:30,220 podrobnosti, ki je popolnoma v skladu s tem pojmom plastenjem 278 00:15:30,220 --> 00:15:33,610 abstrakcija, ki smo jih gledati skozi semester. 279 00:15:33,610 --> 00:15:37,990 >> Torej, tudi čez vikend, Videl par kosov novice. 280 00:15:37,990 --> 00:15:40,640 Pojdi najprej pojdite na seminarjih, če vas bi se radi naučili nekaj 281 00:15:40,640 --> 00:15:42,160 več na poljubno število tem. 282 00:15:42,160 --> 00:15:43,340 Glej URL tam. 283 00:15:43,340 --> 00:15:45,890 In je bila ta poslana me ga Chang, ki jo poznate, 284 00:15:45,890 --> 00:15:47,850 kdo tiskanje našo vojsko slonov. 285 00:15:47,850 --> 00:15:49,910 In to je bil naslov, kot sledi. 286 00:15:49,910 --> 00:15:51,280 Jaz sem prestrašen mojega novega TV. 287 00:15:51,280 --> 00:15:54,301 Zato me je strah, da vklopite to stvar na vas in bi bilo preveč. 288 00:15:54,301 --> 00:15:56,050 Tako da smo zdaj na točka v semestru, 289 00:15:56,050 --> 00:15:58,860 Tudi, kjer tudi če imate najmanjšega razumevanja 290 00:15:58,860 --> 00:16:02,620 kako web deluje, in HTTP, in varnosti, stvari, kot je ta 291 00:16:02,620 --> 00:16:03,980 bi se morala začeti ulov oko. 292 00:16:03,980 --> 00:16:07,450 Ampak tudi, da boste razumeli ali so te stvari ali niso 293 00:16:07,450 --> 00:16:08,430 dejanske grožnje. 294 00:16:08,430 --> 00:16:10,940 >> Zato sem vzel nekaj odlomkov iz tega članka tukaj. 295 00:16:10,940 --> 00:16:12,540 In zgodba je, kot sledi. 296 00:16:12,540 --> 00:16:14,300 Zdaj sem lastnik novi pametni TV, ki 297 00:16:14,300 --> 00:16:18,470 obljublja, da poda streaming multimedijske vsebine, igre, app, 298 00:16:18,470 --> 00:16:21,450 družbeni mediji in internet brskanje, oh in TV preveč. 299 00:16:21,450 --> 00:16:24,410 Edini problem je, da sem zdaj strah, da ga uporabljate, pravi avtor. 300 00:16:24,410 --> 00:16:29,592 Saj bi bilo tudi, če ste prebrali 46 stran Pravilnik o zasebnosti za vaš TV. 301 00:16:29,592 --> 00:16:31,800 Količina podatkov tega stvar zbira, je časovno razporeditvijo. 302 00:16:31,800 --> 00:16:35,710 To dnevniki kje, kdaj, kako in kako dolgo uporabljate televizor. 303 00:16:35,710 --> 00:16:38,190 Ki jih daje, sledilne piškotke, kot smo že omenili, 304 00:16:38,190 --> 00:16:40,560 in svetilniki zasnovan za odkrivanje, ko imate 305 00:16:40,560 --> 00:16:43,185 ogledov zlasti vsebino ali zlasti e-poštno sporočilo 306 00:16:43,185 --> 00:16:45,230 če želite, da preverite e-pošto na vašem televizorju. 307 00:16:45,230 --> 00:16:48,430 Beleži apps si uporabo, na spletnih straneh, ki jih obiščete, 308 00:16:48,430 --> 00:16:52,280 in kako ste interakcijo z vsebino, počne vse, da prek svojega pametnega televizorja. 309 00:16:52,280 --> 00:16:55,470 Prav tako, creepier yet-- to je moja addition-- 310 00:16:55,470 --> 00:16:58,140 ima vgrajeno kamero z prepoznavanja obrazov. 311 00:16:58,140 --> 00:17:01,010 >> Namen je posredovati Nadzor gesta za TV 312 00:17:01,010 --> 00:17:05,490 in vam omogočajo, da se prijavite na prilagojene račun z obraza. 313 00:17:05,490 --> 00:17:08,940 Na pozitivni strani, slike so shranjene na TV, namesto naložili 314 00:17:08,940 --> 00:17:09,940 do podjetij strežnikom. 315 00:17:09,940 --> 00:17:12,520 Na negativni strani, internet povezava naredi celotno TV 316 00:17:12,520 --> 00:17:14,811 ranljiva za hekerje, ki so pokazale zmožnost 317 00:17:14,811 --> 00:17:16,700 sprejeti popoln nadzor nad strojem. 318 00:17:16,700 --> 00:17:20,880 >> Bolj zaskrbljujoče, kot da to ni bilo dovolj pameten, je mikrofon. 319 00:17:20,880 --> 00:17:23,599 TV ponaša glas Funkcija priznanje 320 00:17:23,599 --> 00:17:26,859 ki omogoča gledalcem, da nadzor zaslon z glasovnimi ukazi. 321 00:17:26,859 --> 00:17:30,290 Vendar storitev prihaja z precej zlovešče opozorilo. 322 00:17:30,290 --> 00:17:33,030 Prosimo, da se zavedajo, da če izgovorjene besede vključujejo 323 00:17:33,030 --> 00:17:36,210 osebne ali druge občutljive informacije, da se informacije 324 00:17:36,210 --> 00:17:40,310 bodo med podatki ujetih in posredovati tretji osebi. 325 00:17:40,310 --> 00:17:40,870 Razumeš? 326 00:17:40,870 --> 00:17:45,860 Ne pravim, osebne ali občutljive stvari pred televizorjem. 327 00:17:45,860 --> 00:17:47,280 >> Torej, to je pravzaprav zares. 328 00:17:47,280 --> 00:17:50,530 In to je težko, da ne vidim, če vas pojdite na Best Buy ali podobno za televizorje 329 00:17:50,530 --> 00:17:51,030 v teh dneh. 330 00:17:51,030 --> 00:17:52,540 Oni so vsi pametni na nek način. 331 00:17:52,540 --> 00:17:54,740 In oni so dobili pametnejši in creepier. 332 00:17:54,740 --> 00:17:57,490 In oni so preprosto zbiranje podatkov na način, da smo govorili o 333 00:17:57,490 --> 00:18:01,840 in ga nato nalagate prek HTTP ali nekatere druge protokol k neki strežnik. 334 00:18:01,840 --> 00:18:05,720 >> Torej, to je bilo za zabavo članek v tej spletni spletni strani 335 00:18:05,720 --> 00:18:08,940 tu, ki je govoril o Zlasti bug ali zamenjali kodo 336 00:18:08,940 --> 00:18:11,340 da bomo lahko dejansko tie v razpravi prejšnji teden. 337 00:18:11,340 --> 00:18:15,730 Torej, ta naslov je bil kot sledi, zgodba tukaj, 338 00:18:15,730 --> 00:18:18,720 Josh Breckman delal podjetje, ki je pristal pogodbo 339 00:18:18,720 --> 00:18:22,390 za razvoj upravljanja z vsebinami sistem ali CMS kot oni imenujejo, 340 00:18:22,390 --> 00:18:24,380 za dokaj velike vladne spletne strani. 341 00:18:24,380 --> 00:18:27,300 Velik del projekta, vključenega razvija sistem za upravljanje vsebin 342 00:18:27,300 --> 00:18:29,840 tako, da bi zaposleni sposobni zgraditi in vzdrževati 343 00:18:29,840 --> 00:18:31,877 spreminjajočim vsebine za svoje spletne strani. 344 00:18:31,877 --> 00:18:34,210 Je šlo precej dobro nekaj dni po dogaja v živo. 345 00:18:34,210 --> 00:18:37,020 Ampak na šesti dan, stvari niso šli tako dobro. 346 00:18:37,020 --> 00:18:39,500 Vse vsebine na Spletna stran je popolnoma izginila. 347 00:18:39,500 --> 00:18:42,950 In vse strani pripeljala do neizpolnitve obveznosti, vnesite vsebino spletne strani. 348 00:18:42,950 --> 00:18:43,810 Ops. 349 00:18:43,810 --> 00:18:46,080 Josh je pozval k preiskovanje in opazil, 350 00:18:46,080 --> 00:18:49,390 da eno posebno moteč Zunanji IP naslov imeli 351 00:18:49,390 --> 00:18:53,380 šel v in črta vse Vsebnost o sistemu. 352 00:18:53,380 --> 00:18:56,290 >> IP naslov ne pripada do neke tujini hacker ukrivljen 353 00:18:56,290 --> 00:18:58,340 uničiti pomoč Vlada informacije. 354 00:18:58,340 --> 00:19:05,190 Je odločil, da googlebot.com, Googlov zelo lasten web lezenjem pajek. 355 00:19:05,190 --> 00:19:06,010 Ops. 356 00:19:06,010 --> 00:19:09,150 Po nekaj raziskav in kodiranja okrog, da bi našli noncorrupt backup, 357 00:19:09,150 --> 00:19:10,180 Josh našel problem. 358 00:19:10,180 --> 00:19:12,700 >> Uporabnik je kopirati in prilepili nekaj vsebine iz enega 359 00:19:12,700 --> 00:19:15,670 Stran v drugo, vključno Urejanje hiperpovezave 360 00:19:15,670 --> 00:19:17,577 Za urejanje vsebine na strani. 361 00:19:17,577 --> 00:19:20,160 Običajno to ne bi bilo vprašanje, saj zunanjega uporabnika bi 362 00:19:20,160 --> 00:19:24,320 vnesti ime in geslo, vendar sistem za preverjanje pristnosti CMS, 363 00:19:24,320 --> 00:19:27,520 sistem za prijavo, ne upošteva 364 00:19:27,520 --> 00:19:30,980 prefinjen taksist tehnike Google Spider. 365 00:19:30,980 --> 00:19:31,700 Ops. 366 00:19:31,700 --> 00:19:33,610 >> Kot se je izkazalo, Google Spider ne uporablja 367 00:19:33,610 --> 00:19:36,950 piškotki, kar pomeni, da lahko enostavno bypass ček za 368 00:19:36,950 --> 00:19:39,840 je prijavljen na piškotek sklop za lažnega. 369 00:19:39,840 --> 00:19:42,620 Prav tako ne posveča pozornosti JavaScript, ki ponavadi 370 00:19:42,620 --> 00:19:45,170 hitre in preusmerijo uporabnike ki niso prijavljeni. 371 00:19:45,170 --> 00:19:48,610 To pa ne sledijo vsak povezavo na vsaki strani, če ugotovi, 372 00:19:48,610 --> 00:19:51,700 vključno s tistimi z Izbriši stran v naslovu. 373 00:19:51,700 --> 00:19:52,650 Ops. 374 00:19:52,650 --> 00:19:56,070 >> Torej, kaj to pomeni v več Tehnične vendar dokaj dostopne pogoji? 375 00:19:56,070 --> 00:19:58,340 To samo pomeni, da vsej svoji spletni strani, 376 00:19:58,340 --> 00:20:02,287 so imeli URL ni v nasprotju s tem, da je ena lahko vidite na problem nastaviti sedem. 377 00:20:02,287 --> 00:20:04,620 Spomnimo se na problem določiti sedem ali ve, problem določiti sedem 378 00:20:04,620 --> 00:20:06,411 da ste izpodbijala, med drugim, 379 00:20:06,411 --> 00:20:08,570 prodati zaloge v imenu uporabnikov. 380 00:20:08,570 --> 00:20:14,010 Vendar je izvajanje te funkcije z od dobili prek hiperpovezav v vaši uporabnika 381 00:20:14,010 --> 00:20:16,880 vmesnik, verjetno ni najpametnejša ideja 382 00:20:16,880 --> 00:20:20,300 ker če je vaša stran je nekako dostopni bodisi človeku 383 00:20:20,300 --> 00:20:23,577 kdo klikom na okoli ali kupiti bot, kot so Google ali Spider 384 00:20:23,577 --> 00:20:26,160 kot oni imenujejo, da je samo plazil po spletu poskuša indeks 385 00:20:26,160 --> 00:20:29,060 web kot iskalnik, so lahko zelo enostavno 386 00:20:29,060 --> 00:20:31,340 zadeti preko dobil takšno URL. 387 00:20:31,340 --> 00:20:33,770 In to je funkcionalno enakovredna, v tem primeru, 388 00:20:33,770 --> 00:20:37,000 prodajo vseh delnic družbe Google. 389 00:20:37,000 --> 00:20:40,030 >> Zdaj odkrito povedano, to je popolnoma Nor, da je CMS 390 00:20:40,030 --> 00:20:43,240 Rabljeni JavaScript in piškotki za izvajanje svoje prijavne sistem 391 00:20:43,240 --> 00:20:47,100 in ne delaš, da na strani strežnika, kot je vi naredite in bo v PSet 7-- 392 00:20:47,100 --> 00:20:49,940 tam je login.php file-- vedno, vedno, 393 00:20:49,940 --> 00:20:52,789 Vedno naj bi varščina storiti na strani strežnika, 394 00:20:52,789 --> 00:20:56,080 ne na strani odjemalca, ker, kot je to Članek predlaga in morda sami 395 00:20:56,080 --> 00:20:59,600 glej na neki točki, je nepomembno za uporabnika, dobra ali slaba, 396 00:20:59,600 --> 00:21:02,860 samo izklopite JavaScript da ne omenjam piškotkov. 397 00:21:02,860 --> 00:21:06,020 Tako da je vaš dnevni WTF. 398 00:21:06,020 --> 00:21:07,970 >> Še ena, ki je le nekako strašljivo, 399 00:21:07,970 --> 00:21:11,360 zato ga bom omenil, če samo kot življenjsko lekcijo. 400 00:21:11,360 --> 00:21:14,850 Vsakič, ko uporabljate aplikacijo imenovana kot Snapchat ali podobno 401 00:21:14,850 --> 00:21:19,380 ki pravi, da te fotografije trajalo samo pet sekund, deset sekund, ali malenkosti. 402 00:21:19,380 --> 00:21:21,680 Oni so minljiva To je absolutno ne drži. 403 00:21:21,680 --> 00:21:25,670 Tako kot ne obstaja način, digitalno, izvajati neko obliko video, 404 00:21:25,670 --> 00:21:30,150 ali slike, ali tekstualni delitev, kot da prejemnik na drugem koncu 405 00:21:30,150 --> 00:21:31,660 ne more nekako shraniti podatke. 406 00:21:31,660 --> 00:21:34,300 >> V najbolj naivno, nekdo bi lahko svoj telefon. 407 00:21:34,300 --> 00:21:36,850 In dobili še eno okno 10 medtem ko je videti na neki snap 408 00:21:36,850 --> 00:21:39,410 samo traja nekaj drugega telefona in ga fotografira, seveda. 409 00:21:39,410 --> 00:21:41,660 Tako lahko ohranite Nekaj ​​digitalno ta način. 410 00:21:41,660 --> 00:21:44,620 Nekateri od vas ve, kako naj sprejmejo screenshots na vašem telefonu. 411 00:21:44,620 --> 00:21:49,290 V bistvu, če ne veste, to, zavedajo, da je vsaj Snapchat, 412 00:21:49,290 --> 00:21:51,040 in mislim, da druga aplikacije v teh dneh, 413 00:21:51,040 --> 00:21:53,720 vsaj če vam povem, prejemnik mora dejansko 414 00:21:53,720 --> 00:21:55,310 sprejeti screenshot vaše slike. 415 00:21:55,310 --> 00:22:00,870 >> Ampak še huje je bilo to snappening, kot je nekdo zapisal v zadnjem času, 416 00:22:00,870 --> 00:22:04,680 kjer je nekaj 100.000 snap bila sproščena 417 00:22:04,680 --> 00:22:09,310 V kaj se ti torrent datotek na različnih spletnih straneh na koncu. 418 00:22:09,310 --> 00:22:12,000 In to je vsebovala cel kup zasebnih sporočil in objav. 419 00:22:12,000 --> 00:22:15,210 Izkazalo se je, večina od njih benigen, to ni tisto, kar bi lahko pričakovali. 420 00:22:15,210 --> 00:22:17,580 Ampak zato, ker so imeli uporabljajo spletne strani tretje osebe, 421 00:22:17,580 --> 00:22:20,270 se prijavite s svojim Snapchat uporabniško ime in geslo, nato pa 422 00:22:20,270 --> 00:22:23,470 varčevanje vseh njihovih posnetkov Na tej spletni strani tretje osebe. 423 00:22:23,470 --> 00:22:26,130 In to je bilo, da je tretja oseba Spletna stran, ki je bila hacked, 424 00:22:26,130 --> 00:22:30,710 ki le mišljen nekdo pogruntal, kako da bi dobili vse 100,000 plus teh slik 425 00:22:30,710 --> 00:22:33,822 na svojem trdem disku za nadaljnjo rabo. 426 00:22:33,822 --> 00:22:36,030 Odkrito povedano, tudi tukaj, to je neke vrste od Nor da Snapchat 427 00:22:36,030 --> 00:22:39,360 se izvaja na tak način, da Tretja oseba lahko razvrstite po prestrezanje 428 00:22:39,360 --> 00:22:43,310 podatki in da to ni vezano na vaš lastna aplikacija, ki teče na telefonu. 429 00:22:43,310 --> 00:22:46,947 Vendar tudi tu zavedati, da so ti Stvari, ki jih ne bi ujeli presenetilo, 430 00:22:46,947 --> 00:22:49,030 ali vsaj ne bi smelo je življenjska lekcija tukaj. 431 00:22:49,030 --> 00:22:52,220 Če želite tehnično podrobnosti, pojdite na ta URL tam 432 00:22:52,220 --> 00:22:53,570 da je v današnjih diapozitive. 433 00:22:53,570 --> 00:23:00,960 Vse je v redu, kakršna koli vprašanja o Današnje življenjske lekcije v CS? 434 00:23:00,960 --> 00:23:02,710 Obrnite da off. 435 00:23:02,710 --> 00:23:04,970 Sploh kaj? 436 00:23:04,970 --> 00:23:06,301 Sploh kaj? 437 00:23:06,301 --> 00:23:09,050 Imam veliko ljudi preverjanje njihova Snapchat ali kaj zdaj. 438 00:23:09,050 --> 00:23:11,690 >> Vse je v redu, tako da SQL, Structured Query Language. 439 00:23:11,690 --> 00:23:12,509 Oglejmo zaviti to. 440 00:23:12,509 --> 00:23:14,300 In tudi, čeprav smo le praskanje 441 00:23:14,300 --> 00:23:16,310 Površina tega jezik, vam bomo 442 00:23:16,310 --> 00:23:18,930 Dovolj jeziku v obliki PSet 7 443 00:23:18,930 --> 00:23:22,140 tako da lahko reševanje nekaterih dokaj pogost funkcionalnost. 444 00:23:22,140 --> 00:23:24,912 Vendar zavedaš, obstaja nekaj Stvari, ki jih ne zahtevajo od tebe, 445 00:23:24,912 --> 00:23:27,120 ampak oni bo Pomembno pridejo zaključne projekte 446 00:23:27,120 --> 00:23:30,760 in prav gotovo prišli kar dejansko spletne strani z dejanskim uporabnikom 447 00:23:30,760 --> 00:23:32,040 je ta odločitev dizajn. 448 00:23:32,040 --> 00:23:34,460 >> Izkaže se, da v MySQL baze podatkov, ki jih 449 00:23:34,460 --> 00:23:37,460 imajo šopke izbire kot podatkovni tipi za vaše stolpce 450 00:23:37,460 --> 00:23:41,670 in druge stvari, ampak imate tudi izbira tako imenovano shranjevanje 451 00:23:41,670 --> 00:23:44,570 motor za vse vaše podatke, vrsta datotečnega sistema, 452 00:23:44,570 --> 00:23:46,700 če ste seznanjeni, za vse vaše podatke. 453 00:23:46,700 --> 00:23:48,830 Kakšni obliki je na koncu shrani v? 454 00:23:48,830 --> 00:23:53,300 In najpogostejši, morda, je bil MyISAM in InnoDB, tehnični pogoji 455 00:23:53,300 --> 00:23:56,060 da bomo skrbi le kolikor je, da ena 456 00:23:56,060 --> 00:23:58,500 in eden nima Naslednja funkcija. 457 00:23:58,500 --> 00:24:00,390 >> Recimo, da imate malo domu hladilnik. 458 00:24:00,390 --> 00:24:03,030 In domnevam, da vi in ​​vaša cimra, ki si delijo ta hladilnik, 459 00:24:03,030 --> 00:24:04,682 so res všeč recimo mleka. 460 00:24:04,682 --> 00:24:07,140 In to je, v resnici, kako Zgodba je povedal, da mi je pot nazaj 461 00:24:07,140 --> 00:24:10,890 v dan, ko sem vzel tečaj imenovani CS 161 Operacijski sistemi, ki 462 00:24:10,890 --> 00:24:12,580 prav tako raziskuje to temo. 463 00:24:12,580 --> 00:24:13,760 Torej imaš ta hladilnik. 464 00:24:13,760 --> 00:24:14,630 Ste iz mleka. 465 00:24:14,630 --> 00:24:17,000 In prideš domov, tvoj sostanovalec je še vedno v razredu ali karkoli, 466 00:24:17,000 --> 00:24:19,208 in ste se odločili, da bom iti ven in dobili nekaj mleka. 467 00:24:19,208 --> 00:24:22,630 Torej zapreš hladilnik, blokiranje študentski sobi, šel čez cesto 468 00:24:22,630 --> 00:24:25,330 na CVS ali kjerkoli, in dobili v vrsti za nakup nekaj mleka. 469 00:24:25,330 --> 00:24:28,960 >> Medtem, tvoja cimra pride domov iz razreda, pride v študentski sobi, 470 00:24:28,960 --> 00:24:31,802 Odpre hladilnik, se tudi zaveda, ooph, smo iz mleka. 471 00:24:31,802 --> 00:24:33,760 Torej on ali ona zapre hladilnik, nato pa se zgodi, 472 00:24:33,760 --> 00:24:35,610 da gredo v drugo CVS ki se zgodi, da se 473 00:24:35,610 --> 00:24:38,470 en blok stran od drugih CVS na trgu, in dobi v skladu 474 00:24:38,470 --> 00:24:40,230 tam, da bi dobili nekaj mleka. 475 00:24:40,230 --> 00:24:42,524 Zdaj, seveda, nekaj minut kasneje, boste tako dobili nazaj, 476 00:24:42,524 --> 00:24:44,690 in najslabši od vseh možnih rezultati se je zgodilo. 477 00:24:44,690 --> 00:24:45,792 Tako boste imeli mleko. 478 00:24:45,792 --> 00:24:47,500 In ne boste res kot so mleko, da je veliko. 479 00:24:47,500 --> 00:24:49,625 Torej, eden izmed njih je pravkar bo kislo na neki točki. 480 00:24:49,625 --> 00:24:55,941 Torej, sedaj imate preveliko količino mleka v hladilniku zato, ker zakaj? 481 00:24:55,941 --> 00:24:57,072 >> [Neslišno] 482 00:24:57,072 --> 00:24:59,780 DAVID Malan: Ja, nisi nekako komunicirajo med seboj 483 00:24:59,780 --> 00:25:00,904 ki ste ga dobili mleko. 484 00:25:00,904 --> 00:25:04,320 Torej, v najpreprostejši načine v človeškem svetu, 485 00:25:04,320 --> 00:25:08,390 kako bi se lahko izognete to neumno Scenarij zgodilo kot 486 00:25:08,390 --> 00:25:09,750 da si samo na koncu z eno. 487 00:25:09,750 --> 00:25:10,840 Njihovo besedilo, da dobro. 488 00:25:10,840 --> 00:25:12,877 Ampak kako drugače? 489 00:25:12,877 --> 00:25:13,460 Post-it. 490 00:25:13,460 --> 00:25:14,626 DAVID Malan: Post-it note. 491 00:25:14,626 --> 00:25:17,150 Vsaka oblika sporočila, da pove svojo sostanovalko 492 00:25:17,150 --> 00:25:18,670 ne gremo v hladilnik za mleko. 493 00:25:18,670 --> 00:25:20,440 Bom šel obnovo sam. 494 00:25:20,440 --> 00:25:22,770 Tako da boste nekako morali zakleniti tega vira. 495 00:25:22,770 --> 00:25:27,180 Tako da lahko naredimo this-- bomo lahko nekako uniči zgodbo in spremenil v CS zgodbo 496 00:25:27,180 --> 00:25:30,360 pri čemer mislim na to, kot je prav tako kot spremenljivka, ki se shrani določeno vrednost. 497 00:25:30,360 --> 00:25:32,570 In zdaj, Vrednost mleka je nič, 498 00:25:32,570 --> 00:25:35,410 ki jih ne želite, da vaše sostanovalec vpogleda to spremenljivko 499 00:25:35,410 --> 00:25:38,730 in nato sprejeti odločitev, ali ga sama temeljijo na položaj te spremenljivke 500 00:25:38,730 --> 00:25:42,430 če ste v procesu spreminjanje stanja te spremenljivke. 501 00:25:42,430 --> 00:25:46,140 >> Tako je eden izmed vrstic SQL, ki smo daš v PSet 7 specifikacije 502 00:25:46,140 --> 00:25:47,310 je to ena tukaj. 503 00:25:47,310 --> 00:25:49,740 In ne bomo porabili veliko koliko časa govorimo o tem. 504 00:25:49,740 --> 00:25:55,100 Vendar se je izkazalo, če se potrudiš kupiti nekaj zaloge v financah CS50 505 00:25:55,100 --> 00:25:58,000 da že imate nekatere delnice, vas 506 00:25:58,000 --> 00:26:01,750 želim, da bi lahko storili več stvari takoj skupaj. 507 00:26:01,750 --> 00:26:04,360 Hočeš, da bi lahko učinkovito, na visoki ravni, 508 00:26:04,360 --> 00:26:06,700 preveri vse v redu, če želim kupiti več delnic brezplačno, 509 00:26:06,700 --> 00:26:08,780 penny stock smo govoriti v spec, 510 00:26:08,780 --> 00:26:10,660 Rad bi prvo preverjanje koliko delnic imam. 511 00:26:10,660 --> 00:26:11,810 In domnevam, da je pet. 512 00:26:11,810 --> 00:26:14,600 In domnevam želim nakup 10 več, sem na koncu 513 00:26:14,600 --> 00:26:17,069 želijo imeti 15 delnic zalog. 514 00:26:17,069 --> 00:26:18,360 Tako da sem moral vprašati dve vprašanji. 515 00:26:18,360 --> 00:26:20,230 Kaj je stanje spremenljivke? 516 00:26:20,230 --> 00:26:21,470 Kaj je stanje na vrsti? 517 00:26:21,470 --> 00:26:22,970 Koliko delnic ne Trenutno imam? 518 00:26:22,970 --> 00:26:24,636 Potem boste želeli iti naprej in ga posodobi. 519 00:26:24,636 --> 00:26:27,720 Tako da je analogno mleka, da preverite vrstico, 520 00:26:27,720 --> 00:26:30,730 in potem si želim, da jo posodobite ker če želite kupiti 10 delnic, 521 00:26:30,730 --> 00:26:32,521 ne želite spremeniti vrstica do 10, ki jih 522 00:26:32,521 --> 00:26:35,300 jo želite spremeniti do 5 plus 10 ali, seveda, 15. 523 00:26:35,300 --> 00:26:40,030 >> Ta vrstica kode zagotavlja, da ti konceptualne ideje 524 00:26:40,030 --> 00:26:42,810 zgodilo skupaj ali pa sploh ne. 525 00:26:42,810 --> 00:26:46,920 Nihče, vključno z nekaterimi drugimi uporabnika Kdo je prijavljen na istem spletnem mestu, 526 00:26:46,920 --> 00:26:49,900 lahko nekako prekiniti preverjanje vrstice 527 00:26:49,900 --> 00:26:52,960 in posodabljanje vrstice, izbrati in posodobitev, če bo. 528 00:26:52,960 --> 00:26:57,360 In sintaksa ni zelo očitna, vendar je to ena vrstica, dolgo se je, 529 00:26:57,360 --> 00:27:01,150 zagotavlja, da se ti dve dejavnosti preverite spremenljivko ali preverite vrstico 530 00:27:01,150 --> 00:27:04,660 in posodobiti vrstica zgodi atomically. 531 00:27:04,660 --> 00:27:06,849 >> Oh, tukaj smo spet tam. 532 00:27:06,849 --> 00:27:07,890 Besedilno sporočilo na mojem telefonu. 533 00:27:07,890 --> 00:27:09,954 Torej, kaj je, da to malo bolj konkreten. 534 00:27:09,954 --> 00:27:12,120 Predvidevam, da niste izvajanje hladilnik, 535 00:27:12,120 --> 00:27:16,400 in si ne izvaja PSet 7, vendar dejansko banka, 536 00:27:16,400 --> 00:27:20,000 ali ATM, Automated Teller Stroj, s katerim vas nekako 537 00:27:20,000 --> 00:27:22,960 želim, da bi lahko pooblasti uporabniki za prenos denarja 538 00:27:22,960 --> 00:27:24,500 iz enega računa na drugega. 539 00:27:24,500 --> 00:27:25,100 OK, počakaj. 540 00:27:25,100 --> 00:27:26,683 Bom izklopiti to zdaj, hvala. 541 00:27:26,683 --> 00:27:30,450 Zato želimo, da se premaknete denar z eno številko računa 542 00:27:30,450 --> 00:27:33,600 v drug račun Številka, posebej 100 $. 543 00:27:33,600 --> 00:27:37,690 Torej, to je neke vrste samovoljno Na primer, s katerim si, ATM, 544 00:27:37,690 --> 00:27:41,060 morda želeli izvesti dva SQL poizvedbe, odšteje od enega računa, 545 00:27:41,060 --> 00:27:42,430 in dodamo na drugem računu. 546 00:27:42,430 --> 00:27:46,766 Vendar boste želeli zagotoviti, da so ti dve liniji, tako se zgodi, ali pa sploh ne. 547 00:27:46,766 --> 00:27:48,640 Vi ne želite, da nekaj pridobivanje prekinjen. 548 00:27:48,640 --> 00:27:51,440 Ne boste nekateri pametni bad guy nekako stoji na Bank of America 549 00:27:51,440 --> 00:27:53,270 z dvema bankomatov v sprednjem od njega in nekako 550 00:27:53,270 --> 00:27:55,270 nekako vtipkate ukazov hkrati, 551 00:27:55,270 --> 00:28:01,230 upajmo, da poskuša do odbitka namesto 200 $ $ 100 in samo s $ 100 v dobro. 552 00:28:01,230 --> 00:28:04,450 Skratka, želite, da je to obnašajo natanko tako, kot ste pričakovali. 553 00:28:04,450 --> 00:28:06,540 >> In način, kako narediti to SQL baza podatkov 554 00:28:06,540 --> 00:28:09,350 ga zaviti v kaj imenuje transakcija. 555 00:28:09,350 --> 00:28:14,290 Dobesedno v SQL, lahko pokličete CS50 je Funkcija poizvedba s citatom citata začetku 556 00:28:14,290 --> 00:28:15,370 transakcija. 557 00:28:15,370 --> 00:28:18,640 Potem lahko izvajate poljubno število kasnejših SQL poizvedb, 558 00:28:18,640 --> 00:28:20,870 vendar nobeden od njih bo vpliva na podatkovne zbirke 559 00:28:20,870 --> 00:28:25,880 dokler pokličete poizvedbo quote citata zavežejo, če ponovno uporabo PHP. 560 00:28:25,880 --> 00:28:29,810 In na ta način lahko zagotovite, da tudi če imate 1000 uporabniki vse 561 00:28:29,810 --> 00:28:32,080 hitting svoje baze podatkov istočasno, SQL 562 00:28:32,080 --> 00:28:34,540 bo obljubim, da ti dve poizvedbe bo 563 00:28:34,540 --> 00:28:36,740 uveljavili eno pravico po drugi. 564 00:28:36,740 --> 00:28:40,330 Tako da ne boste na koncu z več kot mleko ali napačnega zneska, končno, 565 00:28:40,330 --> 00:28:40,830 denarja. 566 00:28:40,830 --> 00:28:43,110 >> Zato imejte to v mislih, ne toliko za PSet 7 567 00:28:43,110 --> 00:28:45,250 ampak za končne projekte če ste dejansko 568 00:28:45,250 --> 00:28:49,690 poskuša premakniti podatke po po mizah, kot si morda tukaj. 569 00:28:49,690 --> 00:28:53,980 Toda morda še enostavnejše in bolj Očitno razumeti s primerom 570 00:28:53,980 --> 00:28:54,860 je to ena tukaj. 571 00:28:54,860 --> 00:28:57,760 In nas nekdo po e-pošti o to šele drugi dan 572 00:28:57,760 --> 00:28:59,600 ko je videl nekaj podobno spletu. 573 00:28:59,600 --> 00:29:03,480 >> Tako da mi je znano, je pin sistem ni občutljiva na ta napad. 574 00:29:03,480 --> 00:29:06,637 In nimam pojma, če je celo uporabe Podatkovna baza SQL pod pokrovom. 575 00:29:06,637 --> 00:29:08,470 Vendar pa ga uporabljajo za sake razprave. 576 00:29:08,470 --> 00:29:10,178 Tukaj je zaslon, ki Harvard ljudje nagibajo 577 00:29:10,178 --> 00:29:13,620 da vidim, če se prijavite z njihovimi Harvard ID številko in njihovo pin. 578 00:29:13,620 --> 00:29:19,020 In domnevam, da so pin sistem izvaja v PHP in MySQL z 579 00:29:19,020 --> 00:29:22,000 baza podatkov, oznaka, da je nekdo Pred morda pisna let 580 00:29:22,000 --> 00:29:23,270 lahko videti takole. 581 00:29:23,270 --> 00:29:25,230 Prvič, razglasi spremenljivka imenuje ime. 582 00:29:25,230 --> 00:29:27,560 In šele zaslužiti, da se od POST superglobal. 583 00:29:27,560 --> 00:29:30,140 Nato pa dobil še eno spremenljivko imenovano geslom in storijo enako. 584 00:29:30,140 --> 00:29:33,080 In potem samo izvedbo tako dolgo vprašanje tukaj 585 00:29:33,080 --> 00:29:36,690 izberite zvezda uporabnikov kjer uporabniško ime je enako tak in tak 586 00:29:36,690 --> 00:29:38,510 in geslo enak tak in tak. 587 00:29:38,510 --> 00:29:40,660 >> Obvestilo, da kodrasti naramnice sem tukaj uporablja 588 00:29:40,660 --> 00:29:42,880 pomeni samo, da PHP, pojdite naprej in nadomestek 589 00:29:42,880 --> 00:29:45,400 Vrednost teh dveh spremenljivke tam. 590 00:29:45,400 --> 00:29:50,090 Oni niso nujno potrebne, vendar se izogibajo subtilne skladenjske napake. 591 00:29:50,090 --> 00:29:53,650 Torej, to je popolnoma izgleda pravi na prvi pogled. 592 00:29:53,650 --> 00:29:54,240 In to je. 593 00:29:54,240 --> 00:29:56,680 Lahko bi izvajala trn sistem na ta način. 594 00:29:56,680 --> 00:30:00,460 >> Recimo, da je super pameten in zlonamerne študent 595 00:30:00,460 --> 00:30:03,020 input, da je to njegovo pin. 596 00:30:03,020 --> 00:30:05,550 Tako sem odstranil kroglo znaki tukaj v simuliranem up, 597 00:30:05,550 --> 00:30:08,760 in sem pravzaprav pokazala, kaj bi on ali ona je tipkanje. 598 00:30:08,760 --> 00:30:10,350 In to je malo čudno. 599 00:30:10,350 --> 00:30:13,850 Toda kaj skoči ven na vas na potencialno Zaskrbljujoči o vhodnih uporabnikov, 600 00:30:13,850 --> 00:30:16,450 tudi če nimate pojma, kaj SQL injection napad pomeni. 601 00:30:16,450 --> 00:30:20,300 Zakaj se to poglej malo ribica? 602 00:30:20,300 --> 00:30:21,050 Kaj je to? 603 00:30:21,050 --> 00:30:21,550 [Neslišno] 604 00:30:21,550 --> 00:30:24,260 DAVID Malan: ali je malo sumljivo. 605 00:30:24,260 --> 00:30:26,310 Dejstvo je, da je ključna beseda iz SQL. 606 00:30:26,310 --> 00:30:28,105 Da ne bi nič dobrega. 607 00:30:28,105 --> 00:30:29,980 Dejstvo, da obstaja vsi ti single quotes 608 00:30:29,980 --> 00:30:32,646 there-- v resnici, ki je eden od najlažjih načinov za prekinitev nekaj podatkovnih baz 609 00:30:32,646 --> 00:30:35,880 je z vpisom imena, kot so O'Reilly da ima opuščaj v njej 610 00:30:35,880 --> 00:30:38,600 ker če človek, ki je napisal koda za kulisami 611 00:30:38,600 --> 00:30:41,570 ne upošteva, da je lahko posamezni citati v uporabnikov 612 00:30:41,570 --> 00:30:45,060 input, in on ali ona uporablja posamezni citati v svojem kodeksu, 613 00:30:45,060 --> 00:30:46,040 slabe stvari se lahko zgodi. 614 00:30:46,040 --> 00:30:47,870 >> V resnici, še huje, da je to. 615 00:30:47,870 --> 00:30:50,600 Če je to spet koda da je nekdo na Harvardu leta 616 00:30:50,600 --> 00:30:53,100 nazaj napisal za pin Sistem, opazite, kaj je 617 00:30:53,100 --> 00:30:56,220 pa se nadomesti, za uporabniško ime in geslo 618 00:30:56,220 --> 00:30:59,780 če uporabnik vnese v ponovno skroob kot njihovo ime 619 00:30:59,780 --> 00:31:03,960 in nato en, dva, tri, štiri, pet, quote ali quote citata enega enakopravnimi 620 00:31:03,960 --> 00:31:04,660 citiram enega. 621 00:31:04,660 --> 00:31:07,220 In opazili, kaj je ključ Tukaj je uporabnik še ni 622 00:31:07,220 --> 00:31:09,900 začela svoje geslo ali njihova pin s citatom. 623 00:31:09,900 --> 00:31:12,610 In niso ga končal s ponudbo, ker on ali ona 624 00:31:12,610 --> 00:31:16,315 se ob predpostavki, da če programer ni bil tako oster, 625 00:31:16,315 --> 00:31:18,690 da se dogaja, da imajo tisti, posamezni citati v svoji kodi. 626 00:31:18,690 --> 00:31:19,860 >> Torej, tukaj je koda. 627 00:31:19,860 --> 00:31:23,820 In zamenjava da Morda je sedaj zgodilo, je to. 628 00:31:23,820 --> 00:31:26,350 In sem poudaril, kaj uporabnik vtipka. 629 00:31:26,350 --> 00:31:28,480 Torej, pred, po. 630 00:31:28,480 --> 00:31:33,330 In opazili, kaj se je rahlo zaskrbljujoče zdaj približno desni polovici tega SQL kode? 631 00:31:33,330 --> 00:31:36,300 To je malo bolj zapletena, seveda, od vprašanj smo videli. 632 00:31:36,300 --> 00:31:38,550 Toda to nikakor ne more bilo dobro, če ste 633 00:31:38,550 --> 00:31:42,240 pravijo, da izberete zvezdo, ki je izberite vse od uporabnika mizo 634 00:31:42,240 --> 00:31:46,630 kjer username enaka skroob in Geslo enaka ena, dva, tri, štiri, 635 00:31:46,630 --> 00:31:49,610 pet ali ena enaka ena. 636 00:31:49,610 --> 00:31:53,860 Kaj je logično posledice te zadnje klavzule predvidoma? 637 00:31:53,860 --> 00:31:55,650 To je samo drži vedno. 638 00:31:55,650 --> 00:31:59,930 >> In ker smo nekako uganili ali pogruntal s poskusi in napakami 639 00:31:59,930 --> 00:32:02,760 da programer, ki napisal ta oznaka ni 640 00:32:02,760 --> 00:32:07,250 Pričakujem ljudi ali slab človek vnesete v enojnih narekovajih, kot tudi, 641 00:32:07,250 --> 00:32:10,350 lahko skladenjsko dokončanje SQL poizvedbo 642 00:32:10,350 --> 00:32:12,260 z nečim nesmiselno ampak nekaj, 643 00:32:12,260 --> 00:32:15,930 je sintaktično nepravilna ki vedno ocenjuje, da res. 644 00:32:15,930 --> 00:32:19,130 Torej, če je ta oznaka se uporablja za odgovor Vprašanje resnična ali lažna morala 645 00:32:19,130 --> 00:32:22,930 ta uporabnik dovoli, da prenese, Odgovor je vedno očitno dogaja 646 00:32:22,930 --> 00:32:26,930 da bi bilo res, ker je to vedno dogaja izbrati nekaj iz baze 647 00:32:26,930 --> 00:32:29,280 ker je ena od seveda vedno enaka ena. 648 00:32:29,280 --> 00:32:30,360 >> Torej, kaj je rešitev? 649 00:32:30,360 --> 00:32:33,290 No, v PSet 7, smo dejansko izognili vse to skupaj. 650 00:32:33,290 --> 00:32:37,360 Ponujamo vam funkcijo poizvedbo, in smo vam, da uporabljate vprałaje 651 00:32:37,360 --> 00:32:40,430 kot ograde, podobno v duhu printf je% s, 652 00:32:40,430 --> 00:32:43,710 toda kaj je ključnega pomena o vprašaji tukaj je, če ste dejansko prebrali 653 00:32:43,710 --> 00:32:46,950 functions.php, kjer naši Funkcija poizvedba se izvaja, 654 00:32:46,950 --> 00:32:52,780 ti vpraĹĄajev so pobegnili, pri čemer vse potencialno nevarne 655 00:32:52,780 --> 00:32:58,210 kot je single quote obrnil v pobegli enotno ponudbo. 656 00:32:58,210 --> 00:33:00,590 >> Torej, to je tisto, kar je v resnici dogaja, če vas 657 00:33:00,590 --> 00:33:04,850 uporabite poizvedbo funkcijo CS50 ali kakršen koli številko od tretjih strank brezplačno knjižnic, ki 658 00:33:04,850 --> 00:33:06,000 storijo enako. 659 00:33:06,000 --> 00:33:09,850 Ni važno, v tem primeru, v zeleni barvi, če je uporabnik vnesli v enem citatom 660 00:33:09,850 --> 00:33:12,070 ker poizvedbo Funkcija, ki jih je napisal 661 00:33:12,070 --> 00:33:15,120 bom dodal poševnice nazaj, preden vsak tak nevaren quote. 662 00:33:15,120 --> 00:33:17,360 Torej to ni, v Dejstvo, ki bo zakonit. 663 00:33:17,360 --> 00:33:20,910 To je tako, kot da vnesete nora išče geslo, ki je, seveda, ne bo 664 00:33:20,910 --> 00:33:23,490 da je dejanska geslo skroob 's. 665 00:33:23,490 --> 00:33:28,260 >> Torej takeaway za CS50 je ena, Popolnoma vedno uporabite nekaj 666 00:33:28,260 --> 00:33:30,860 podobno funkcijo poizvedbe CS50 je ali osnovni knjižnica, 667 00:33:30,860 --> 00:33:32,560 ki se zgodi, da se imenuje ZOP. 668 00:33:32,560 --> 00:33:35,880 Ampak nikoli, nikoli, nikoli ne kode, kot je ta 669 00:33:35,880 --> 00:33:39,472 ne uhaja ali drgnjenja kot pravijo vaši prispevki. 670 00:33:39,472 --> 00:33:42,430 In vam bo v nekem trenutku verjetno naleteli na neki spletni strani, kot je ta. 671 00:33:42,430 --> 00:33:46,060 Dejansko se zdi, da je tako kot so na letališčih in v hotelih v krajih 672 00:33:46,060 --> 00:33:48,880 kjer imajo brezplačen brezžični internet dostop, da imate za prijavo, 673 00:33:48,880 --> 00:33:51,010 Te spletne strani so vedno strašno izvajajo. 674 00:33:51,010 --> 00:33:55,680 In tako nekako zabave na domu izvaja, ni za zlonamerne namene ali več 675 00:33:55,680 --> 00:33:59,170 za zabavo na cesti vaja, je samo tip 676 00:33:59,170 --> 00:34:02,850 opuščaj, enojni narekovaj, v obliko, na neki spletni strani 677 00:34:02,850 --> 00:34:03,810 in glej kaj se zgodi. 678 00:34:03,810 --> 00:34:06,660 In če strežnik zruši ali daje ste neke vrste sporočilo o napaki, 679 00:34:06,660 --> 00:34:09,690 lahko zelo dobro je, da nekdo ni pričakovati tega. 680 00:34:09,690 --> 00:34:15,239 In potem bi morali opozoriti pravilno organi in nadaljujte pravšnji. 681 00:34:15,239 --> 00:34:20,843 >> Torej, zdaj vidva naj upajmo razumeti malo več geek humor tukaj. 682 00:34:20,843 --> 00:34:24,120 >> [Smeh] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID Malan: Veste, da ste geek. 685 00:34:29,070 --> 00:34:30,944 Za naslednjih nekaj let, se boste spomnili 686 00:34:30,944 --> 00:34:33,520 ki mali Bobby Tables je ker te risanke tukaj. 687 00:34:33,520 --> 00:34:36,760 Tako da se vodijo v mislih, ko smo kontekst stikalo še zadnjič 688 00:34:36,760 --> 00:34:38,770 danes JavaScript. 689 00:34:38,770 --> 00:34:41,600 Smo preživel razmeroma malo Čas na sintakso PHP 690 00:34:41,600 --> 00:34:43,440 ker je to dejansko zelo podobna C. 691 00:34:43,440 --> 00:34:47,300 In dovolj lepo, JavaScript preveč je super podobno sintakso C je 692 00:34:47,300 --> 00:34:49,639 kot bomo videli v samo trenutek, in kot bomo 693 00:34:49,639 --> 00:34:51,205 videli kasneje ta teden še posebej. 694 00:34:51,205 --> 00:34:54,080 Kaj lahko narediš s tem jeziku čeprav je vse močnejši, 695 00:34:54,080 --> 00:34:55,790 predvsem z API-ji. 696 00:34:55,790 --> 00:34:56,960 >> Ampak najprej quick tour. 697 00:34:56,960 --> 00:35:00,450 Torej, ena, v JavaScriptu, tam je no glavna funkcija, ki je lepo. 698 00:35:00,450 --> 00:35:02,650 Kot pri PHP, lahko samo napisati kodo. 699 00:35:02,650 --> 00:35:04,310 Pogoji videti takole. 700 00:35:04,310 --> 00:35:07,100 In logične izraze morda izgledal tako ali tako. 701 00:35:07,100 --> 00:35:09,530 Stikala obstajajo, in jih lahko videti takole. 702 00:35:09,530 --> 00:35:10,970 Štiri zanke videti takole. 703 00:35:10,970 --> 00:35:12,390 While zanke videti takole. 704 00:35:12,390 --> 00:35:14,160 Storiti whiles videti takole. 705 00:35:14,160 --> 00:35:16,850 In potem nizi izgledal To, zelo podobna PHP. 706 00:35:16,850 --> 00:35:20,740 Ampak obvestilo, da v JavaScript vas razglasi spremenljivka ne z dolarjem 707 00:35:20,740 --> 00:35:25,190 podpisati, ne z vrsto podatkov, ampak dobesedno z besedami var za spremenljivko pred njim. 708 00:35:25,190 --> 00:35:27,900 To je preveč ohlapno tipkal s tem, da vrste, 709 00:35:27,900 --> 00:35:29,729 vendar ne boste izrecno navajati. 710 00:35:29,729 --> 00:35:31,520 Nato pa niz, za instance, morda videti 711 00:35:31,520 --> 00:35:34,350 kot je ta, da niz bila postavljena na tem primeru. 712 00:35:34,350 --> 00:35:35,410 In potem objekt. 713 00:35:35,410 --> 00:35:37,010 In bomo to vidimo več kmalu. 714 00:35:37,010 --> 00:35:41,470 In objekt je morda ena od Najpogosteje opaženi podatkovne strukture 715 00:35:41,470 --> 00:35:44,050 v JavaScriptu, ki temelji Program saj omogoča 716 00:35:44,050 --> 00:35:46,680 si povezati samovoljno Ključne pari vrednosti samo 717 00:35:46,680 --> 00:35:51,240 kot asociativne nize PHP in tako kot vaši hash tabele 718 00:35:51,240 --> 00:35:54,042 ali pa poskusite kot smo izvajali nekaj tednov nazaj. 719 00:35:54,042 --> 00:35:56,250 Torej, kaj je dejansko videli, kaj lahko storimo z JavaScript. 720 00:35:56,250 --> 00:35:59,410 In zlasti, da je to perilo seznam funkcij 721 00:35:59,410 --> 00:36:02,300 da imajo brskalniki, ki nam omogočajo, da priključite JavaScript 722 00:36:02,300 --> 00:36:05,470 na spletni strani na naslednji način. 723 00:36:05,470 --> 00:36:09,340 JavaScript je pogosto uporabljena kot strani odjemalca skriptni jezik. 724 00:36:09,340 --> 00:36:10,130 To se ne pripravljajo. 725 00:36:10,130 --> 00:36:11,370 To tudi razlaga. 726 00:36:11,370 --> 00:36:15,740 Toda za razliko od PHP, ki poteka že na strežniku, v spletni strežnik, 727 00:36:15,740 --> 00:36:18,220 ali globoko znotraj stranke, JavaScript 728 00:36:18,220 --> 00:36:22,190 se razlikuje v tem da običajno poteka v brskalniku. 729 00:36:22,190 --> 00:36:26,060 >> Torej vsaka koda JavaScript začnete pisati za PSet 8, ali vaš končni projekt, 730 00:36:26,060 --> 00:36:29,890 ali v resničnem svetu je običajno dogaja se shrani na strežniku, absolutno 731 00:36:29,890 --> 00:36:33,110 v HTML ali dot dot JS za datoteke JavaScript. 732 00:36:33,110 --> 00:36:35,770 Vendar brskalnik se dogaja prenesti, da JavaScript 733 00:36:35,770 --> 00:36:39,530 Koda za svoj primer Chroma ali IE ali Firefox, ali karkoli. 734 00:36:39,530 --> 00:36:43,870 In koda se dejansko dogaja, da bi dobili izvajajo znotraj vašega lastnega brskalnika. 735 00:36:43,870 --> 00:36:46,560 Samo, da je to bolj realna, poglejmo to v konkretni obliki. 736 00:36:46,560 --> 00:36:50,120 >> Nimamo pojma, kaj ta koda počne ne da bi zares branje skozi to. 737 00:36:50,120 --> 00:36:52,670 Ampak naj gredo na Facebook.com brez prijave. 738 00:36:52,670 --> 00:37:00,440 Naj grem k Preglej element in pojdite, recimo, Network in ponovno naložite stran. 739 00:37:00,440 --> 00:37:04,150 In bomo see-- Naj premik Reload je Stran, da bi dobili vse zahteve za novo. 740 00:37:04,150 --> 00:37:08,850 In prva Datoteka vidim CSS, CSS. 741 00:37:08,850 --> 00:37:10,880 Tukaj je prvi JavaScript datoteke, in imam 742 00:37:10,880 --> 00:37:14,600 ne vem, kaj to počne, ampak tukaj je nekaj kode JavaScript 743 00:37:14,600 --> 00:37:16,180 ki poganja Facebook. 744 00:37:16,180 --> 00:37:18,400 To sploh ni res, da je razkrivajo, da jo povečate. 745 00:37:18,400 --> 00:37:20,260 To je še vedno prav tako nesmiseln. 746 00:37:20,260 --> 00:37:24,341 >> Vendar pa boste videli še doli, tam je še več teh datotek JavaScript. 747 00:37:24,341 --> 00:37:24,840 Ops. 748 00:37:24,840 --> 00:37:25,440 To je ping. 749 00:37:25,440 --> 00:37:28,550 Pojdimo malo nadalje, nadalje, nadalje. 750 00:37:28,550 --> 00:37:29,894 Obstaja ena. 751 00:37:29,894 --> 00:37:31,238 Obstaja ena. 752 00:37:31,238 --> 00:37:31,880 Obstaja ena. 753 00:37:31,880 --> 00:37:35,820 >> Torej, čeprav je Facebook, zadaj Prizori, ki je napisana v delu v PHP 754 00:37:35,820 --> 00:37:39,100 in Facebook je lastna njihovi različici, tam je ogromno JavaScript. 755 00:37:39,100 --> 00:37:41,330 Dejansko je lahko vsak izmed klepetali počnete na Facebooku, 756 00:37:41,330 --> 00:37:45,520 katero koli posodobitvami inline Timeline da se to zgodi v realnem času, vse to 757 00:37:45,520 --> 00:37:47,944 poganja JavaScript. 758 00:37:47,944 --> 00:37:48,444 Ja? 759 00:37:48,444 --> 00:37:50,235 >> OBČINSTVO: Nisem prepričan, če je to Facebook, 760 00:37:50,235 --> 00:37:53,624 vendar sem mislil, da je Facebook razvil lastne in-house koda jezika? 761 00:37:53,624 --> 00:37:54,540 DAVID Malan: So naredili. 762 00:37:54,540 --> 00:37:58,110 Torej, to je, zakaj sem rekel varianca PHP imenovan Hip Hop, da so dejansko 763 00:37:58,110 --> 00:38:03,440 dodatne funkcije za primer, da kadar Mark izvaja prvič Facebook, 764 00:38:03,440 --> 00:38:04,710 je bilo napisano v PHP. 765 00:38:04,710 --> 00:38:07,370 In da je nekako ostala nekako sprednjega jeziku 766 00:38:07,370 --> 00:38:09,030 ki jih uporabljajo za veliko njihovo kodiranje, vendar 767 00:38:09,030 --> 00:38:11,870 ni bil jezik, ki je tehtnice posebej dobro milijardam 768 00:38:11,870 --> 00:38:12,630 ljudi. 769 00:38:12,630 --> 00:38:15,300 In tako so jim dodali svoje izboljšave v ozadju. 770 00:38:15,300 --> 00:38:17,049 In jih uporabite poljubno število drugih jezikov 771 00:38:17,049 --> 00:38:19,170 za različne dele njihova infrastruktura. 772 00:38:19,170 --> 00:38:24,080 Torej, ja, to je varianca kar zdaj vemo, kot je PHP. 773 00:38:24,080 --> 00:38:26,610 >> Torej, kaj si oglejte na nekaj primerov 774 00:38:26,610 --> 00:38:28,890 kako smo lahko uporabljajo JavaScript tukaj. 775 00:38:28,890 --> 00:38:32,530 V današnjem izvorne kode, imamo kup datotek, od katerih je prvi, 776 00:38:32,530 --> 00:38:34,090 pa imenujemo DOM nič. 777 00:38:34,090 --> 00:38:36,770 Torej DOM nič izgleda takole. 778 00:38:36,770 --> 00:38:40,730 Dovolite mi, da gredo v ta imenik in odprli domzero.html, 779 00:38:40,730 --> 00:38:44,970 na vrh, ki ima vrsto dok Izjava, ki pravijo, tukaj prihaja HTML 5. 780 00:38:44,970 --> 00:38:46,440 In sedaj tukaj je HTML tag. 781 00:38:46,440 --> 00:38:47,540 Tukaj tag glava. 782 00:38:47,540 --> 00:38:49,210 In tukaj je, kaj je novega danes. 783 00:38:49,210 --> 00:38:52,620 >> Zdaj imamo script tag notranjosti glave strani. 784 00:38:52,620 --> 00:38:55,290 In to očitno ne zelo malo, ampak obvestilo 785 00:38:55,290 --> 00:38:58,410 da sem definirana skript JavaScript. 786 00:38:58,410 --> 00:39:01,050 In kot prahi, saj je to je skupna napačno prepričanje, 787 00:39:01,050 --> 00:39:05,220 JavaScript je absolutno nič storiti z Java, jezik 788 00:39:05,220 --> 00:39:08,010 da nekateri od vas morda so se naučili v APC. 789 00:39:08,010 --> 00:39:10,480 Bilo je bolj marketing stvar kot karkoli, 790 00:39:10,480 --> 00:39:12,980 jahanje coattails Java leti. 791 00:39:12,980 --> 00:39:17,300 Ampak JavaScript, nič opraviti z Java, samo podobno, in zoprno, 792 00:39:17,300 --> 00:39:18,480 zamenjati z imenom. 793 00:39:18,480 --> 00:39:21,890 >> Torej, tukaj je, kako se razglasi funkcijo v JavaScriptu, dobesedno pravijo funkcijo, 794 00:39:21,890 --> 00:39:24,556 nato ime funkcije, nato vsaka argumenti pa lahko traja, 795 00:39:24,556 --> 00:39:25,530 tako kot v PHP. 796 00:39:25,530 --> 00:39:28,990 Izkazalo se je, v JavaScriptu, ki je eno od najbolj siten funkcije, ki obstajajo, je Alert. 797 00:39:28,990 --> 00:39:31,392 To je malo okno, bo pop up in vas opozori 798 00:39:31,392 --> 00:39:32,600 do neke podatek. 799 00:39:32,600 --> 00:39:33,766 To je splošno namrščil. 800 00:39:33,766 --> 00:39:35,980 Ampak ga bomo uporabili kot naš Prvi poskus tukaj. 801 00:39:35,980 --> 00:39:37,900 >> Opazili nekaj funkcij JavaScript. 802 00:39:37,900 --> 00:39:41,524 Enojni narekovaji in dvojni narekovaji pa dejansko ni več važno. 803 00:39:41,524 --> 00:39:43,690 Enojni narekovaji in dvojna quotes mogoče zamenjati, 804 00:39:43,690 --> 00:39:46,220 ker je v C, boste morali uporabiti dvojni narekovaji za godala, 805 00:39:46,220 --> 00:39:48,150 in imate dva enotnega citira za znakov. 806 00:39:48,150 --> 00:39:51,150 V svetu JavaScript, veliko ljudi, večina ljudi 807 00:39:51,150 --> 00:39:54,970 Uporabite enojne narekovaje godala samo zato, ker je slogovna stvar. 808 00:39:54,970 --> 00:39:58,330 Toda kaj je operator plus tukaj ki jih nismo videli že prej? 809 00:39:58,330 --> 00:39:59,836 >> OBČINSTVO: Spoj. 810 00:39:59,836 --> 00:40:00,960 DAVID Malan: Spoj. 811 00:40:00,960 --> 00:40:02,450 Torej, C nima niti tega. 812 00:40:02,450 --> 00:40:04,820 PHP ima operaterja dot, ki to stori. 813 00:40:04,820 --> 00:40:09,710 JavaScript mora operaterju plus, ki ga je mogoče zamenjati, je tako kot Java. 814 00:40:09,710 --> 00:40:11,440 Zdaj, kaj se tukaj dogaja? 815 00:40:11,440 --> 00:40:14,260 >> Torej, tukaj je, kjer osnovna razumevanje te slike 816 00:40:14,260 --> 00:40:17,010 smo bruhal par dnevi prihaja v igro. 817 00:40:17,010 --> 00:40:19,620 Se spomniš, ko smo imeli preprosto Različica HTML page-- 818 00:40:19,620 --> 00:40:20,830 je pravkar rekel, zdravo svet. 819 00:40:20,830 --> 00:40:22,770 In potem smo narisal drevo na desno, ki 820 00:40:22,770 --> 00:40:27,320 imela kup pravokotnikov in črt jih povezuje kot družinsko drevo. 821 00:40:27,320 --> 00:40:30,820 Torej, to je tako imenovani DOM ali Document Object Model. 822 00:40:30,820 --> 00:40:36,759 In se izkaže, da lahko dostopate do pravokotniki v drevesu s sintakso 823 00:40:36,759 --> 00:40:37,550 kot naslednje. 824 00:40:37,550 --> 00:40:41,370 Dobesedno pravijo dokument, ki je posebna globalna spremenljivka v JavaScriptu 825 00:40:41,370 --> 00:40:45,890 Program, ki ima funkcijo povezane z njo, da lahko dostopate do 826 00:40:45,890 --> 00:40:50,280 podobno kot struct, ampak si preprosto pravijo piko in nato ime funkcija je, 827 00:40:50,280 --> 00:40:52,390 dobili element z ID. 828 00:40:52,390 --> 00:40:55,460 >> Element želim, da bi dobili, je očitno citiram konec citata ime. 829 00:40:55,460 --> 00:40:57,150 In potem hočem, da bi dobili svojo vrednost. 830 00:40:57,150 --> 00:40:58,330 Zdaj smo dobili pred sebe. 831 00:40:58,330 --> 00:41:00,038 Nisem še prepričan, kaj vse to gre. 832 00:41:00,038 --> 00:41:03,000 Oglejmo hitro naprej v HTML na stran, ki je zelo preprost. 833 00:41:03,000 --> 00:41:05,370 >> Obvestilo, da sem definirana tvorijo tukaj. 834 00:41:05,370 --> 00:41:07,940 Obvestilo sem ji dal edinstven ID, čeprav smo ne uporablja 835 00:41:07,940 --> 00:41:08,870 Ta atribut prej. 836 00:41:08,870 --> 00:41:11,300 Toda to obstaja v HTML. 837 00:41:11,300 --> 00:41:15,570 Lahko enolično identifikacijo nekaj kos HTML z identifikacijsko oznako, kot je ta. 838 00:41:15,570 --> 00:41:19,880 >> Obvestilo zdaj this-- izkaže HTML podpira, na tem seznamu perila 839 00:41:19,880 --> 00:41:22,490 pred nekaj trenutki, celotna Kup viličarji dogodkov. 840 00:41:22,490 --> 00:41:25,060 In ta dogodek trener piše na oddajte. 841 00:41:25,060 --> 00:41:28,730 Na uporabniškem predložitvi tega oblika, pokličite naslednjo kodo. 842 00:41:28,730 --> 00:41:31,360 In kodo, ki se dogaja da se imenuje ali usmrčen 843 00:41:31,360 --> 00:41:35,260 je točno to, grški Funkcija sledi return false. 844 00:41:35,260 --> 00:41:37,360 Vse ostalo naj precej pozna. 845 00:41:37,360 --> 00:41:42,050 >> Tukaj je vhod tipa besedila, katerih ID, v tem primeru, se bo ime. 846 00:41:42,050 --> 00:41:45,430 Nimamo dejansko ime atributa to time-- in predložiti gumb. 847 00:41:45,430 --> 00:41:48,330 Tako izhaja stran izgleda takole. 848 00:41:48,330 --> 00:41:52,890 In posledično obnašanje, boste videli, izgleda takole. 849 00:41:52,890 --> 00:41:56,940 Stran krajevni gostitelji pravi, zdravo David, komaj estetsko 850 00:41:56,940 --> 00:41:58,340 način, da se pozdravi uporabnika. 851 00:41:58,340 --> 00:41:59,950 Ampak, kaj se dejansko dogaja? 852 00:41:59,950 --> 00:42:01,360 >> No, razmisli, kaj to je. 853 00:42:01,360 --> 00:42:02,310 To je polje besedila. 854 00:42:02,310 --> 00:42:04,635 In v skladu s HTML tukaj, sem ga dal 855 00:42:04,635 --> 00:42:07,350 enolični identifikator imenovano quote citata ime. 856 00:42:07,350 --> 00:42:09,770 Medtem, sem dejal, ko uporabnik predloži obrazec 857 00:42:09,770 --> 00:42:13,820 s pritiskom Enter ali kliknite Submit gumb, pokličite funkcijo imenovano Greet 858 00:42:13,820 --> 00:42:15,410 in se nato vrne False. 859 00:42:15,410 --> 00:42:16,870 Oglejmo si tiste, v obratnem vrstnem redu. 860 00:42:16,870 --> 00:42:20,590 Opazili, ko sem kliknite Submit URL te strani ne spremeni. 861 00:42:20,590 --> 00:42:22,420 Icon brskalnika ni začela vrti. 862 00:42:22,420 --> 00:42:27,050 Nisem šel nikamor, in to je dobesedno, ker sem rekel vrne False. 863 00:42:27,050 --> 00:42:31,534 Return false kratkega stika ali ustavi Privzeto vedenje obrazca. 864 00:42:31,534 --> 00:42:33,700 Tako da nam potem ostane tale zadnje vprašanje. 865 00:42:33,700 --> 00:42:34,764 Kaj Greet storiti? 866 00:42:34,764 --> 00:42:36,680 No, očitno Pozdravite poziva funkcijo imenovano 867 00:42:36,680 --> 00:42:39,250 Alert, prehaja v enem dolgo argument, da je 868 00:42:39,250 --> 00:42:43,950 Rezultat concatenating skupaj kup podnizov, zdravo vejico prostor, 869 00:42:43,950 --> 00:42:45,810 potem pa karkoli že to vrne. 870 00:42:45,810 --> 00:42:51,490 Torej dokument je kot globalna spremenljivka za ta koren tega drevesa, 871 00:42:51,490 --> 00:42:55,560 sklical posebno funkcijo, drugače sedaj znana kot metoda. 872 00:42:55,560 --> 00:42:57,650 Funkcija, ki je Notranjost je spremenljivka 873 00:42:57,650 --> 00:42:59,640 imenovana metoda namesto funkcije. 874 00:42:59,640 --> 00:43:01,570 >> Torej dobil element z ID. 875 00:43:01,570 --> 00:43:03,940 Kaj element kajne želeli dobiti njegov ID? 876 00:43:03,940 --> 00:43:06,970 Quote citata ime in nato pa še posebej cenijo. 877 00:43:06,970 --> 00:43:12,000 Torej, z drugimi besedami, da je koda preprosto ugotovi besedilno polje, katere ID je ime 878 00:43:12,000 --> 00:43:13,380 in potem dobi svojo vrednost. 879 00:43:13,380 --> 00:43:16,460 Torej, če bi bil jaz to spremeniti in reči Davin namesto Davida, 880 00:43:16,460 --> 00:43:20,670 in kliknite Submit, zdaj smo ima pozdrav za Davin. 881 00:43:20,670 --> 00:43:22,890 >> Vse je v redu, tako da je vse lepo in prav. 882 00:43:22,890 --> 00:43:25,480 Ampak poglejmo, če lahko naredimo to malo čistejši od pravkar 883 00:43:25,480 --> 00:43:28,190 pisanje kode, kot je to običajno dogaja, da se namrščil. 884 00:43:28,190 --> 00:43:30,060 To se dogaja, da si strašnejši. 885 00:43:30,060 --> 00:43:32,330 Toda kaj je prva razliko, da si zabeležite tukaj 886 00:43:32,330 --> 00:43:35,970 v tej različici poleg ime spremeni v DOM enega? 887 00:43:35,970 --> 00:43:41,110 Kaj strukturno videti drugače O tem proti drugemu? 888 00:43:41,110 --> 00:43:41,932 Ja? 889 00:43:41,932 --> 00:43:43,890 OBČINSTVO: Je oblika na top scenarija zdaj? 890 00:43:43,890 --> 00:43:46,570 DAVID Malan: Ja, oblika je na vrhu skripta za nekaj radoveden razloga. 891 00:43:46,570 --> 00:43:48,736 Tako, da je prva stvar, da skoči ven na mene, preveč. 892 00:43:48,736 --> 00:43:50,990 In na srečo je vsaj, Ta del je enak. 893 00:43:50,990 --> 00:43:53,470 Tako da je edina stvar, ki se zdi različen je to. 894 00:43:53,470 --> 00:43:55,296 >> Torej, tukaj je tisto, kar je lepo O JavaScript 2. 895 00:43:55,296 --> 00:43:57,420 In je zato težko razumeti na prvi pogled, 896 00:43:57,420 --> 00:44:00,670 zlasti za končne projekte, če iščete na primer kode na spletu, 897 00:44:00,670 --> 00:44:04,200 vendar pa izvira na nekaterih osnovne skladenjske funkcije. 898 00:44:04,200 --> 00:44:06,230 Tudi tu je, da Globalna spremenljivka dokument. 899 00:44:06,230 --> 00:44:09,540 Tudi tu je, da je metoda ali funkcija ki pravi, da bi dobili element z ID. 900 00:44:09,540 --> 00:44:11,570 Tokrat želim dobili ID imenovano demo. 901 00:44:11,570 --> 00:44:12,490 Kje je to? 902 00:44:12,490 --> 00:44:15,400 To je očitno prav tukaj, oblika sama. 903 00:44:15,400 --> 00:44:20,010 >> In zdaj opazil, da očitno, če sem dobili nazaj, da je vozlišče drevesa, ki 904 00:44:20,010 --> 00:44:22,940 predstavlja obliko sama po sebi, ne polje besedilo, 905 00:44:22,940 --> 00:44:26,970 Izkazalo se je, da je oblika, ki vozlišče ali pravokotnik z drevesa, 906 00:44:26,970 --> 00:44:30,450 Ima kar pokličem nepremičnino, Zelo, zelo, zelo podobna 907 00:44:30,450 --> 00:44:35,390 v duhu na struct v C. To je samo Član podatkov znotraj tega pravokotnika. 908 00:44:35,390 --> 00:44:38,300 >> Torej, imam obrazec tukaj, in sem pritrditev, 909 00:44:38,300 --> 00:44:44,650 ali sem dodelitev, za njegovo On Pošlji Vodnik oziroma On Pošlji nepremičnine 910 00:44:44,650 --> 00:44:45,740 naslednje funkcije. 911 00:44:45,740 --> 00:44:49,000 In to je daleč najbolj nora stvar tako daleč skladenjsko. 912 00:44:49,000 --> 00:44:53,610 Izkazalo se je, v JavaScript in PHP, in odkrito povedano, za to zadevo v C, 913 00:44:53,610 --> 00:44:58,990 čeprav ne bomo storili, lahko dodaj brezimna, anonimne ali AKA lambda 914 00:44:58,990 --> 00:45:03,000 Funkcije, ki nimajo imena vendar pa se lahko imenuje vseeno. 915 00:45:03,000 --> 00:45:07,050 >> Torej, kaj delam tukaj se bom dodeljevanje Na ta Pošlji premoženje, ki 916 00:45:07,050 --> 00:45:14,330 je znotraj tega vozlišča mojega DOM drevesu funkcija, kazalec, če bo. 917 00:45:14,330 --> 00:45:16,310 Da funkcija nima ime, ampak da ne 918 00:45:16,310 --> 00:45:19,110 pomembno, ker bomo videli v trenutku, kako ga imenujemo. 919 00:45:19,110 --> 00:45:21,780 Ko je ta funkcija imenuje, Ta oznaka postane izvršen, potem 920 00:45:21,780 --> 00:45:24,210 lažno se vrne tako kot prej. 921 00:45:24,210 --> 00:45:25,800 >> Ampak obvestilo, kaj sem naredil. 922 00:45:25,800 --> 00:45:27,830 Na tej točki Zgodba, imam obrazec. 923 00:45:27,830 --> 00:45:30,190 Ima edinstven ID imenovano demo. 924 00:45:30,190 --> 00:45:33,740 Dol, imam script tag da izvaja naslednje kode. 925 00:45:33,740 --> 00:45:37,720 Veže se ta vozlišča v drevo, ki mu je On Pošlji 926 00:45:37,720 --> 00:45:40,260 lastnost ta funkcija tukaj. 927 00:45:40,260 --> 00:45:44,310 In samo z naravo, kako delujejo brskalniki, ko sem zdaj kliknite Pošlji ali pritisnite tipko Enter, 928 00:45:44,310 --> 00:45:45,889 da funkcija se dogaja, da se imenuje. 929 00:45:45,889 --> 00:45:48,680 Ne potrebuje imena ker kdo vraga briga, kako se imenuje. 930 00:45:48,680 --> 00:45:52,540 Samo čas, ki ga je kdaj bo dobil pozval je, ko sem se predloži obrazec. 931 00:45:52,540 --> 00:45:55,130 Nobene potrebe ni za mene, človeški razvijalec, 932 00:45:55,130 --> 00:45:57,330 da ga dejansko pokličete kjerkoli drugje. 933 00:45:57,330 --> 00:46:00,720 >> Zdaj pa samo kot teaser, kot da niso bile dovolj moti upogibanje, 934 00:46:00,720 --> 00:46:03,330 bomo lahko celo to videti bolj Grobni uporabo 935 00:46:03,330 --> 00:46:05,850 super priljubljena knjižnica imenuje jQuery. 936 00:46:05,850 --> 00:46:08,760 V resnici jQuery in JavaScript so pogosto združevali. 937 00:46:08,760 --> 00:46:12,790 In kaj bomo naredili v sredo, je začetek uporabo tega jezika in te knjižnice 938 00:46:12,790 --> 00:46:16,030 graditi bolj asinhrona in dinamične aplikacije 939 00:46:16,030 --> 00:46:18,950 kot zemljevid pridobivanje aplikacije, aplikacije 940 00:46:18,950 --> 00:46:22,360 da posodobi spletno stran v realnem čas, podobno kot Facebook ali Gchat 941 00:46:22,360 --> 00:46:27,130 storiti, in ne več sami omejiti na streljanje na Oddati ga get ali samo delovno mesto 942 00:46:27,130 --> 00:46:27,630 sam. 943 00:46:27,630 --> 00:46:29,055 Zato vas bodo videli v sredo. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [Predvajanje glasbe] 946 00:46:35,550 --> 00:48:09,728