1 00:00:00,000 --> 00:00:01,940 >> [Speel van musiek] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> David Malan: Dit is CS 50, en dit is die begin van die week nege. 4 00:00:14,620 --> 00:00:18,240 En wat ons gedink het ons vandag wil doen nie slegs die hoofstuk oor verlede week se noue 5 00:00:18,240 --> 00:00:22,670 materiaal, waar ons fokus op die bediener kant web ontwikkeling met PHP en SQL, 6 00:00:22,670 --> 00:00:23,549 sommige databasis dinge. 7 00:00:23,549 --> 00:00:25,590 Ons sal praat oor 'n bietjie van sekuriteit vandag en dan 8 00:00:25,590 --> 00:00:29,590 oorgang na 'n kliënt-kant programmering taal bekend as JavaScript. 9 00:00:29,590 --> 00:00:31,330 Maar eers 'n paar verlossing. 10 00:00:31,330 --> 00:00:35,030 >> Jy kan onthou dat op Woensdag, het ek uiteengesit 11 00:00:35,030 --> 00:00:37,550 'n webwerf te skryf wat het in die gebruiker se insette 12 00:00:37,550 --> 00:00:41,120 deur 'n HTML vorm wat dan gestoor dat die gebruiker se toevoer name, telefoon 13 00:00:41,120 --> 00:00:43,124 getalle en selfoon draers in die databasis. 14 00:00:43,124 --> 00:00:45,540 En dan het ek 'n bietjie command script geskryf in PHP 15 00:00:45,540 --> 00:00:47,956 wat veronderstel was om te Itereer oor die rye in die databasis 16 00:00:47,956 --> 00:00:49,400 en sms-boodskappe stuur. 17 00:00:49,400 --> 00:00:53,870 Ten spyte van verskeie, verskeie pogings, ons het nie dat werk aan die einde. 18 00:00:53,870 --> 00:00:57,820 >> So ek het hierdie hele week werk op daardie kode om ons te kry verby die punt 19 00:00:57,820 --> 00:01:01,220 waar ons opgehou het, waarvolgens alle Ek het teen die einde van Woensdag 20 00:01:01,220 --> 00:01:05,500 was hierdie teks boodskap uit Margo soos ek gesukkel, 21 00:01:05,500 --> 00:01:09,940 gevolg deur 'n SMS-boodskap van 'n ander klasmaat, Jy het hierdie David. 22 00:01:09,940 --> 00:01:14,030 Gevolg deur die een, wonderlik bemoedigend. 23 00:01:14,030 --> 00:01:15,840 Gehou op gaan, baie verblydend. 24 00:01:15,840 --> 00:01:20,960 Ek het amper het dit tot then-- en dit is die kennis wat ons het op Woensdag. 25 00:01:20,960 --> 00:01:25,850 En dan eintlik dalk my gunsteling, 'n oomblik later, het in. 26 00:01:25,850 --> 00:01:27,000 Damn lewende stroom. 27 00:01:27,000 --> 00:01:31,080 >> So vandag, het ons dit regmaak met 'n vinnige kyk na wat ek sedert gedoen het. 28 00:01:31,080 --> 00:01:35,440 So al hierdie kode is beskikbaar aanlyn vanaf verlede week se, week agt, 29 00:01:35,440 --> 00:01:36,300 bron-kode. 30 00:01:36,300 --> 00:01:39,425 En jy sal sien dat ek het deur, en Ek het eintlik skoongemaak dinge 'n bietjie. 31 00:01:39,425 --> 00:01:42,080 Ek het 'n paar ander kenmerke van 'n SQL databasis. 32 00:01:42,080 --> 00:01:45,300 Byvoorbeeld, eerder as om maak net draer van var kar 33 00:01:45,300 --> 00:01:47,310 as ek dink ek het op die vlieg verlede week. 34 00:01:47,310 --> 00:01:49,820 Ek plaas dit gedefinieer as wat genoem word 'n enum. 35 00:01:49,820 --> 00:01:53,310 >> En sommige van julle kan gesien het hierdie soos ons verken C. Enum is eintlik 36 00:01:53,310 --> 00:01:56,820 'n kenmerk van C waar jy kan opsom 'n hele klomp van die konstantes 37 00:01:56,820 --> 00:01:59,640 en wys hulle outomatiese waardes, soos een, twee, drie, vier 38 00:01:59,640 --> 00:02:01,330 sonder om te hard kodenommers. 39 00:02:01,330 --> 00:02:04,780 So SQL ondersteun die dieselfde, waarvolgens, indien jy het 'n databasis veld dat jy net 40 00:02:04,780 --> 00:02:09,389 wil neem op een van beperkte waardes, kan jy letterlik spesifiseer dit 41 00:02:09,389 --> 00:02:13,120 as ek daar gedoen vir vier gewilde Amerikaanse selfoon draers. 42 00:02:13,120 --> 00:02:13,819 >> So ek het dit gedoen. 43 00:02:13,819 --> 00:02:16,610 En ek het 'n aantal veranderinge Wel, die belangrikste waarvan 44 00:02:16,610 --> 00:02:20,090 was om e-pos te werk, want onthou, dat hierdie program staatgemaak op wat 45 00:02:20,090 --> 00:02:23,470 algemeen bekend as 'n e-pos aan SMS gateway, wat net 46 00:02:23,470 --> 00:02:27,670 'n fancy manier om te sê dat Verizon, en AT & T, en ander mense ondersteun 'n bediener, 47 00:02:27,670 --> 00:02:30,740 waardeur as dit ontvang e-pos, dit vat om dit te SMS 48 00:02:30,740 --> 00:02:33,290 en stuur 'n teks boodskap aan iemand se selfoon. 49 00:02:33,290 --> 00:02:37,010 So as ek dit gedoen het korrek, hier is 'n nuwe en verbeterde vorm 50 00:02:37,010 --> 00:02:39,259 wat gaan om te praat met nuwe en verbeterde kode, wat 51 00:02:39,259 --> 00:02:40,300 jy kan speel met aanlyn. 52 00:02:40,300 --> 00:02:44,140 En dit sal hopelik my selfoon biep in net 'n oomblik. 53 00:02:44,140 --> 00:02:47,240 >> So die eerste, ek gaan om te tik in my naam. 54 00:02:47,240 --> 00:02:51,400 Tweedens, ek gaan nie hierdie hierdie tyd te doen. 55 00:02:51,400 --> 00:02:53,920 Ek gaan nie Inspekteer element. 56 00:02:53,920 --> 00:02:56,710 En dit is net 'n dingetjie so ek doen nie 57 00:02:56,710 --> 00:02:59,250 skep uur van post-produksie werk soos ek gedoen het die afgelope tyd. 58 00:02:59,250 --> 00:03:02,300 Daar is nou my telefoonnommer. 59 00:03:02,300 --> 00:03:03,560 >> Ek sal kies Verizon. 60 00:03:03,560 --> 00:03:10,260 En hier, laat ons draai op die mikrofoon hier, en poog om dit op my selfoon hier. 61 00:03:10,260 --> 00:03:13,130 Ek gaan om te klik Register, wat hopelik 62 00:03:13,130 --> 00:03:14,530 sit dit in die databasis. 63 00:03:14,530 --> 00:03:16,780 Nou gaan ek om te gaan na die command line program wat 64 00:03:16,780 --> 00:03:20,825 Onthou genoem dot streep teks, en steek jou vingers. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 Hier gaan ons. 67 00:03:26,527 --> 00:03:27,501 >> [PHONE Dings] 68 00:03:27,501 --> 00:03:28,962 >> [Applous] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 David Malan: So meer pret as this-- dit is pret, natuurlik, as ek in dit. 71 00:03:34,940 --> 00:03:38,004 Maar dit is meer pret, het ek gedink, as ons geskep een van daardie film oomblikke 72 00:03:38,004 --> 00:03:40,420 waar soos iets werklik slegte gebeur het in die wêreld, 73 00:03:40,420 --> 00:03:42,860 en soos al die NSA mense se selfone begin piep 74 00:03:42,860 --> 00:03:44,860 met teks boodskappe waarskuwing hulle aan hierdie feit. 75 00:03:44,860 --> 00:03:47,026 So het ek gedink ons ​​sou probeer dieselfde te herskep hier 76 00:03:47,026 --> 00:03:49,610 waardeur nie die gebruik van 'n databasis, Ek plaas in vooraf 77 00:03:49,610 --> 00:03:51,490 het 'n program wat lyk soos hierdie. 78 00:03:51,490 --> 00:03:53,660 >> Dit is 'n index.php-- en ek het die kode aanlyn 79 00:03:53,660 --> 00:03:56,710 as well-- wat blykbaar net maak form.php, 80 00:03:56,710 --> 00:04:00,990 met behulp van 'n MVC styl paradigma dat ons praat oor in meer besonderhede in die probleem stel 81 00:04:00,990 --> 00:04:01,650 sewe. 82 00:04:01,650 --> 00:04:02,910 Dit vorm is eenvoudig. 83 00:04:02,910 --> 00:04:06,634 Dit gaan om aan 'n lêer genaamd here.php via post. 84 00:04:06,634 --> 00:04:09,300 En dit is blykbaar gaan om te vra 'n naam, en 'n telefoonnommer, 85 00:04:09,300 --> 00:04:11,400 en dan via sogenaamde Kies menu, dit is 86 00:04:11,400 --> 00:04:14,250 gaan gee jou ten minste vier gewilde Amerikaanse selfoon draers, 87 00:04:14,250 --> 00:04:17,470 en dan kan jy om doeltreffend te neem bywoning deur hier te klik. 88 00:04:17,470 --> 00:04:20,471 >> En hier, intussen, gaan leen sommige van die kode van die laaste tyd. 89 00:04:20,471 --> 00:04:22,553 En as jy net vlugtig hierdie, sal jy sien dat daar ' 90 00:04:22,553 --> 00:04:23,900 'n hele klomp van die fout nagaan. 91 00:04:23,900 --> 00:04:26,640 Maar die skoonheid aan die einde is dat ons is nie die skryf van 'n databasis van vandag. 92 00:04:26,640 --> 00:04:29,130 Ons hou dit eenvoudig en net uit te stuur hopelik 93 00:04:29,130 --> 00:04:32,190 'n SMS-boodskap via funksie ek geskryf het oor die afgelope paar dae oproep 94 00:04:32,190 --> 00:04:36,270 Teks, wat in funksies. PHP, wat weer aanlyn beskikbaar. 95 00:04:36,270 --> 00:04:38,210 >> So as jy wil om deel te neem in hierdie. 96 00:04:38,210 --> 00:04:40,190 Ons is nie van plan om te stoor nie. 97 00:04:40,190 --> 00:04:43,809 Gaan na hierdie URL hier in real time. 98 00:04:43,809 --> 00:04:46,850 Moenie stuur dit net nog nie, maar laat kyk of ons een van hierdie film kan hê 99 00:04:46,850 --> 00:04:49,830 oomblikke waar almal se selfoon begin piep, hopelik net 100 00:04:49,830 --> 00:04:53,580 keer vanjaar anders as in 2011 Waar dit gaan verskriklik mis. 101 00:04:53,580 --> 00:04:58,910 En as jy gaan na die adres, moet jy 'n super eenvoudige vorm sien 102 00:04:58,910 --> 00:05:03,884 dat as jy 'n naam, 'n selfoon nommer, en 'n selfoon draer wat 103 00:05:03,884 --> 00:05:06,175 ooreenstem met die lys is daar, gaan voort en vul die vorm in. 104 00:05:06,175 --> 00:05:07,880 Maar getref nie dien net nog nie. 105 00:05:07,880 --> 00:05:10,850 >> Die vorm gaan lyk. 106 00:05:10,850 --> 00:05:13,660 Gaan voort en tik jou naam, telefoonnommer. 107 00:05:13,660 --> 00:05:17,670 Oop, iemand se voor die kurwe gaan. 108 00:05:17,670 --> 00:05:18,170 Dit is OK. 109 00:05:18,170 --> 00:05:19,340 OK, almal is gevul uit die vorm. 110 00:05:19,340 --> 00:05:21,400 Dit behoort te werk op 'n telefoon, ook as jy wil. 111 00:05:21,400 --> 00:05:23,695 Alle reg, op jou merke, gereed, gaan. 112 00:05:23,695 --> 00:05:24,195 Getref hier. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 Wat? 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 Ek sweer aan God, ek getoets hierdie verskeie kere vandag. 119 00:05:40,250 --> 00:05:41,720 Jy het dit? 120 00:05:41,720 --> 00:05:43,145 >> [INTERPOSING Voices] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> David Malan: OK, gebruiker fout miskien. 123 00:05:49,560 --> 00:05:50,550 Dit is twee. 124 00:05:50,550 --> 00:05:53,300 Dit het gewerk vir twee uit 'n paar honderd, drie, vier. 125 00:05:53,300 --> 00:05:55,940 OK, dit is goed. 126 00:05:55,940 --> 00:05:58,520 Vier van die vyf vir korrektheid hoe oor. 127 00:05:58,520 --> 00:05:59,810 >> So wat nou net gebeur? 128 00:05:59,810 --> 00:06:02,727 So vermoedelik, sonder om jou skerms, hoekom dit dalk errored het? 129 00:06:02,727 --> 00:06:05,518 Dit is waarskynlik dat ons net probeer te veel verbindings te maak 130 00:06:05,518 --> 00:06:08,110 Harvard se e-pos bediener al by keer van dieselfde IP-adres. 131 00:06:08,110 --> 00:06:10,740 Ek is net raai, want ek het nie het die luukse van die toets 132 00:06:10,740 --> 00:06:13,220 hierdie kode met 'n paar 300 mense in advance 133 00:06:13,220 --> 00:06:16,040 maar vir nou besef dat dat ten minste 134 00:06:16,040 --> 00:06:18,250 het die werk gedoen hierdie tyd gekry. 135 00:06:18,250 --> 00:06:22,880 >> Alle reg, so hoekom is dit al die meer related aan wat gaan aan? 136 00:06:22,880 --> 00:06:24,900 Wel in die eerste, 'n vinnige paar aankondigings. 137 00:06:24,900 --> 00:06:29,350 So een, as jy wil Chang aan te sluit, en Nick, en ander by die middagete hierdie Vrydag, 138 00:06:29,350 --> 00:06:32,400 doen RSVP by die gewone URL daar. 139 00:06:32,400 --> 00:06:35,650 As jy dink van die konsentreer in of doen 'n sekondêre in CS, 140 00:06:35,650 --> 00:06:38,941 of jy 'n stage, of eerstejaars, of selfs junior of senior op hierdie punt 141 00:06:38,941 --> 00:06:42,490 en kan nog steeds druk in die kursusse, besef dat die ingenieurswese skool 142 00:06:42,490 --> 00:06:45,620 word versamel gratis Ben en Jerry se roomys en advies 143 00:06:45,620 --> 00:06:48,910 hierdie Woensdag kort ná die klas by 04:00 in die CS-gebou 144 00:06:48,910 --> 00:06:49,771 by Maxwell Dworkin. 145 00:06:49,771 --> 00:06:51,520 As dit te vinnig op die skerm, net gaan 146 00:06:51,520 --> 00:06:55,260 te cs50.harvard.edu vir 'n skakel na die Facebook gebeurtenis 147 00:06:55,260 --> 00:06:57,140 waar jy kan sien meer besonderhede. 148 00:06:57,140 --> 00:07:01,390 >> Intussen het ek gedink ek sou regstel een ander ding wat ek goofed op Woensdag. 149 00:07:01,390 --> 00:07:04,400 Blyk dat Mark se ID op Facebook was nie drie nie. 150 00:07:04,400 --> 00:07:05,230 Dit was vier. 151 00:07:05,230 --> 00:07:08,330 Blyk hy meer toets rekeninge as wat ek onthou. 152 00:07:08,330 --> 00:07:12,400 Maar wat hierdie gevoel soos 'n geleentheid om te doen, is om te trek 'n URL soos hierdie. 153 00:07:12,400 --> 00:07:16,680 >> So dit blyk dat Facebook het 'n API, Application Programming Interface, 154 00:07:16,680 --> 00:07:20,070 Dit is 'n meganisme waardeur jy kan data programmaties versoek 155 00:07:20,070 --> 00:07:24,480 op Facebook en masjien terug te kry leesbare inligting, nie web bladsye 156 00:07:24,480 --> 00:07:28,690 maar net rou teks, iets genoem JavaScript Object notasie. 157 00:07:28,690 --> 00:07:32,150 En in die feit, as ek na hierdie URL, en Zoom in, by verstek, 158 00:07:32,150 --> 00:07:34,960 dit is Mark se publiek toeganklike inligting. 159 00:07:34,960 --> 00:07:37,430 >> En die interessante detail hier is net dat sy ID 160 00:07:37,430 --> 00:07:40,670 inderdaad, nommer vier, wat ek besef so gou as ek dit gedoen het. 161 00:07:40,670 --> 00:07:44,260 Jy kan dit doen jouself as jy weet Facebook rekening as jy een het. 162 00:07:44,260 --> 00:07:45,440 Tik dit net tot bo daar. 163 00:07:45,440 --> 00:07:46,640 En nie een van hierdie is privaat. 164 00:07:46,640 --> 00:07:48,670 Ek is net om dit te doen, selfs in die incognito af. 165 00:07:48,670 --> 00:07:49,900 So ek is nie eens aangemeld. 166 00:07:49,900 --> 00:07:54,440 En jy sien dat ek was blykbaar gebruikers nommer 6454 167 00:07:54,440 --> 00:07:56,480 op Facebook, wat nie te sleg hierdie dae. 168 00:07:56,480 --> 00:07:59,900 So in elk geval, sal jy ook sien bykomende inligting daar. 169 00:07:59,900 --> 00:08:02,150 >> En die nuttige aspek daarvan is dat jy 170 00:08:02,150 --> 00:08:06,890 kan jou eie sagteware te skryf wat integreer data soos hierdie een of ander manier 171 00:08:06,890 --> 00:08:08,170 in jou eie toepassing. 172 00:08:08,170 --> 00:08:10,650 Jy kan gebruikers te bemagtig teken in jou webwerf, 173 00:08:10,650 --> 00:08:14,190 nie die gebruik van hul eie persoonlike gebruikersnaam en wagwoord nie, maar miskien hul Facebook login 174 00:08:14,190 --> 00:08:16,170 en inligting te kry, selfs oor hul vriende, 175 00:08:16,170 --> 00:08:18,740 indien hulle keur sulke of soortgelyke. 176 00:08:18,740 --> 00:08:21,430 So daarop dat CS50 ook het 'n paar van sy eie API's, 177 00:08:21,430 --> 00:08:24,620 een vir die kursus katalogus data, sommige vir die drukkies spyskaarte in die eetkamer 178 00:08:24,620 --> 00:08:26,730 sale, al die geboue en plekke 179 00:08:26,730 --> 00:08:30,930 op die kampus ons het 'n API vir sowel dat jy ook so kan bevraagteken en kry 180 00:08:30,930 --> 00:08:35,520 terug tekstuele data wat jy kan integreer in 'n PHP, of JavaScript, of selfs, 181 00:08:35,520 --> 00:08:38,320 al minder algemeen, 'n C gebaseer finale projek. 182 00:08:38,320 --> 00:08:41,190 >> Inderdaad voor vir die finale projek is 'n paar mylpale. 183 00:08:41,190 --> 00:08:42,980 Jy het 'n e-pos van ons die ander dag. 184 00:08:42,980 --> 00:08:45,761 Besef dat die voorstel is as gevolg van eerskomende Maandag. 185 00:08:45,761 --> 00:08:49,010 Dit is nie noodwendig bindend, maar jy hoef jou onderrig genote te ontvang 186 00:08:49,010 --> 00:08:51,260 goedkeuring voordat enige veranderinge daarna. 187 00:08:51,260 --> 00:08:54,280 En dan voor 'n aantal ander mylpale. 188 00:08:54,280 --> 00:08:56,542 >> So om jou te terg, te, met 'n paar moontlikhede, 189 00:08:56,542 --> 00:08:58,250 ons het 'n klomp van die hierdie kleur gloeilampe. 190 00:08:58,250 --> 00:09:01,190 En sommige van julle ouens nou 'n paar van hierdie in jou koshuiskamer as well. 191 00:09:01,190 --> 00:09:02,920 En hulle het ook 'n API. 192 00:09:02,920 --> 00:09:07,300 So onthou die binêre bolle weke gelede dat Dan Bradley en Ansel 193 00:09:07,300 --> 00:09:08,780 Duff geskep vir ons. 194 00:09:08,780 --> 00:09:12,560 Hulle gebruik 'n sagteware koppelvlak hierdie gloeilamp, wat op die oomblik 195 00:09:12,560 --> 00:09:15,232 ingeprop in elektrisiteit en dan via draadlose 196 00:09:15,232 --> 00:09:17,690 verbind is tot 'n klein ding genoem die brug af hier, 197 00:09:17,690 --> 00:09:21,280 soos 'n klein router eiendom hierdie spesifieke toestel. 198 00:09:21,280 --> 00:09:26,540 >> Maar dit blyk of ek weet hoe om te stuur HTTP-boodskappe, soos ons almal nou te doen, 199 00:09:26,540 --> 00:09:31,670 Ek kan 'n boodskap stuur soos hierdie hierdie gloeilamp dit op of af te skakel 200 00:09:31,670 --> 00:09:34,000 of enige aantal ander bedrywighede op dit. 201 00:09:34,000 --> 00:09:36,110 Let daarop dat dit nie ons kry, is dit nie plaas. 202 00:09:36,110 --> 00:09:37,760 Daar is 'n ander een wat geroep is beklee. 203 00:09:37,760 --> 00:09:39,630 Daar is eintlik 'n paar ander sulke werkwoorde. 204 00:09:39,630 --> 00:09:42,920 Maar let op daar is 'n pad daar, streep API, streep nuwe ontwikkelaar, 205 00:09:42,920 --> 00:09:44,990 streep lig, streep een, streep staat. 206 00:09:44,990 --> 00:09:49,060 >> Dit is blykbaar net die pad wat die maatskappy Philips, 207 00:09:49,060 --> 00:09:51,640 besluit wat jy hoef te tref met 'n HTTP-versoek 208 00:09:51,640 --> 00:09:55,010 As jy wil hê dat die staat te verander van die gloeilamp met behulp van HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 Toe sien die leë lyn. 210 00:09:56,380 --> 00:10:00,170 En dan laastens wat lyk soos soort van 'n verskeidenheid van 'n soort, 211 00:10:00,170 --> 00:10:04,730 dit weer gaan genoem word JavaScript Object notasie, of Jason. 212 00:10:04,730 --> 00:10:08,000 En wat jy hier sien, is dat daar is drie sleutel waarde pare. 213 00:10:08,000 --> 00:10:09,115 >> Een van die belangrikste is 'n beroep op. 214 00:10:09,115 --> 00:10:10,990 En die waarde daarvan glo gaan om waar te wees. 215 00:10:10,990 --> 00:10:13,612 Helderheid is 128, wat is 'n soort van int. 216 00:10:13,612 --> 00:10:15,820 En dan oorgang tyd nul, wat blykbaar 217 00:10:15,820 --> 00:10:17,970 hoe lank dit gaan neem hierdie ding om te draai op. 218 00:10:17,970 --> 00:10:19,890 >> So nou hierdie gloeilamp is af. 219 00:10:19,890 --> 00:10:22,880 Maar as ek doen presies this-- laat my gaan 'n bietjie oneerlik blad 220 00:10:22,880 --> 00:10:25,200 dat Dan opgestel in advance-- en ek gaan 221 00:10:25,200 --> 00:10:27,920 om voort te gaan en te kopieer die volgende opdrag. 222 00:10:27,920 --> 00:10:30,200 Krul, soos sommige van julle kan verkry het op CS50 223 00:10:30,200 --> 00:10:35,080 Bespreek is 'n program soos Telnet soos wat jy kan simuleer HTTP versoeke, 224 00:10:35,080 --> 00:10:36,360 spesifiek sit. 225 00:10:36,360 --> 00:10:39,710 Ek kan hierdie data te stuur, spesifiek wat ons nou net 226 00:10:39,710 --> 00:10:43,430 sien 'n oomblik gelede spesifiek hierdie URL hier. 227 00:10:43,430 --> 00:10:46,310 En dan Curl gaan hanteer al die nodige opskrifte 228 00:10:46,310 --> 00:10:47,600 en die ontleding van daar van. 229 00:10:47,600 --> 00:10:54,700 >> So al wat ek hoef te doen is kopieer dit in 'n terminale venster en dan druk Enter. 230 00:10:54,700 --> 00:10:56,000 En die gloeilamp gaan aan. 231 00:10:56,000 --> 00:10:59,060 En dit is al wat gaan deur my rekenaar draadloos 232 00:10:59,060 --> 00:11:01,960 een of ander manier na die brug, wat dan praat hierdie gloeilamp. 233 00:11:01,960 --> 00:11:02,960 Ek kan iets anders doen. 234 00:11:02,960 --> 00:11:07,050 Ek kan hierdie ding maak gaan rooi byvoorbeeld. 235 00:11:07,050 --> 00:11:11,040 Ek kan byvoorbeeld ' hierdie ding gaan groen. 236 00:11:11,040 --> 00:11:12,220 Ek kan dit gaan blou. 237 00:11:12,220 --> 00:11:14,760 >> En let op in elk van hierdie gevalle, al wat ek verander 238 00:11:14,760 --> 00:11:18,540 is die sogenaamde kleur waarde eintlik gee dit 'n bietjie kleur. 239 00:11:18,540 --> 00:11:20,320 So laat my plak hierdie een in sowel. 240 00:11:20,320 --> 00:11:21,000 Nou is dit blou. 241 00:11:21,000 --> 00:11:24,672 >> En jy kan selfs liefhebber doen dinge where-- laat ons gaan na groen. 242 00:11:24,672 --> 00:11:26,630 En ek kan dit van doen Natuurlik met my eie kode. 243 00:11:26,630 --> 00:11:30,670 Maar selfs die API self ondersteun funky bedrywighede 244 00:11:30,670 --> 00:11:35,510 soos hierdie, wat sal nou pla ons vir die volgende 30 sekondes. 245 00:11:35,510 --> 00:11:39,170 >> So dit is een voorsmakie van wat jy dalk doen met 'n API, hierdie een wat 246 00:11:39,170 --> 00:11:40,010 gloeilampe. 247 00:11:40,010 --> 00:11:42,510 Let daarop dat CS50 het 'n paar pare Google Glass As jy wil 248 00:11:42,510 --> 00:11:45,380 iets om saam te pak die lyne, Arduino unos, wat 249 00:11:45,380 --> 00:11:48,670 is klein bietjie rekenaars, wese, op 'n klein kring raad 250 00:11:48,670 --> 00:11:50,470 wat jy kan koppel drade en ander dinge 251 00:11:50,470 --> 00:11:52,732 te en eintlik beheer jou werklike wêreld omgewing. 252 00:11:52,732 --> 00:11:54,940 En dan is daar 'n paar van die nuwe speelgoed wat ons het. 253 00:11:54,940 --> 00:11:59,294 Hierdie een letterlik net aangekom die dag per e-pos, 'n Myo Armband. 254 00:11:59,294 --> 00:12:01,710 En ek het gedink dit is 'n manier om te kry jy opgewonde oor projekte 255 00:12:01,710 --> 00:12:03,720 wat jy kan gebruik met hierdie hardeware sou 256 00:12:03,720 --> 00:12:08,900 wees hierdie kort clip te speel wat hulle gebruik mense om te pla 257 00:12:08,900 --> 00:12:10,500 dat ons nou die lewe in die toekoms. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [Speel van musiek] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> David Malan: So in net 'n paar weke, het jy te kan wees dat koel by die CS50 regverdig. 262 00:13:37,109 --> 00:13:39,150 Nog 'n toestel wat ons 'n klomp van ons is 263 00:13:39,150 --> 00:13:42,090 bly om te leen vir projekte word 'n beweging kontroleerder. 264 00:13:42,090 --> 00:13:45,030 Dit is 'n bietjie USB-toestel jy toegang tot 'n rekenaar wat 265 00:13:45,030 --> 00:13:47,520 laat jou interaksie met jou laptop, Mac of PC, 266 00:13:47,520 --> 00:13:51,570 asof jy het soos 'n Xbox Kinect en eintlik maak fisiese bewegings veel 267 00:13:51,570 --> 00:13:54,509 soos ons sien in hierdie visie van die toekoms. 268 00:13:54,509 --> 00:13:56,505 >> [Speel van musiek] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> David Malan: So selfs as jy ' geen idee hoe so iets 271 00:15:06,260 --> 00:15:10,050 moontlik uitgevind word of werk op 'n hardeware vlak, maak nie saak. 272 00:15:10,050 --> 00:15:13,520 Selfs na 'n paar maande van CS50, en 'n begrip van die ontwikkeling 273 00:15:13,520 --> 00:15:19,460 meer in die algemeen, en web ontwikkeling meer onlangs, en dan ook API's en HTTP, 274 00:15:19,460 --> 00:15:21,830 jy sal toegang hê via sagteware APIs as jy 275 00:15:21,830 --> 00:15:24,680 wil een van hierdie te leen toestelle te eintlik praat dit 276 00:15:24,680 --> 00:15:27,180 en nie hoef te bekommer oor die onderliggende implementering 277 00:15:27,180 --> 00:15:30,220 besonderhede, wat heeltemal ooreenstemming met hierdie idee van lae 278 00:15:30,220 --> 00:15:33,610 'n abstraksie wat ons het gesien deur die semester. 279 00:15:33,610 --> 00:15:37,990 >> So ook oor die naweek, het 'n paar stukkies van die nuus. 280 00:15:37,990 --> 00:15:40,640 Gaan eers na seminare as jy iets wil leer 281 00:15:40,640 --> 00:15:42,160 meer oor enige aantal onderwerpe. 282 00:15:42,160 --> 00:15:43,340 Sien die URL daar. 283 00:15:43,340 --> 00:15:45,890 En hierdie een is gestuur my deur Chang, wat jy weet, 284 00:15:45,890 --> 00:15:47,850 wie die druk van ons weermag van olifante. 285 00:15:47,850 --> 00:15:49,910 En dit was 'n kop soos volg. 286 00:15:49,910 --> 00:15:51,280 Ek is bang vir my nuwe TV. 287 00:15:51,280 --> 00:15:54,301 Hoekom ek is bang om dit te draai ding op en jy wil te wees. 288 00:15:54,301 --> 00:15:56,050 So ons is nou op die punt in die semester, 289 00:15:56,050 --> 00:15:58,860 Ook waar selfs as jy ' die geringste van begrip 290 00:15:58,860 --> 00:16:02,620 van hoe die web werk, en HTTP, en sekuriteit, dinge soos hierdie 291 00:16:02,620 --> 00:16:03,980 moet begin om jou oog te vang. 292 00:16:03,980 --> 00:16:07,450 Maar ook, sal jy verstaan of hierdie dinge is of nie 293 00:16:07,450 --> 00:16:08,430 werklike bedreigings. 294 00:16:08,430 --> 00:16:10,940 >> Toe het ek 'n paar uittreksels van hierdie artikel hier. 295 00:16:10,940 --> 00:16:12,540 En die storie is soos volg. 296 00:16:12,540 --> 00:16:14,300 Ek is nou die eienaar van 'n nuwe smart TV, wat 297 00:16:14,300 --> 00:16:18,470 beloof streaming te lewer multimedia-inhoud, speletjies, inligting, 298 00:16:18,470 --> 00:16:21,450 sosiale media, en internet blaai, o en TV ook. 299 00:16:21,450 --> 00:16:24,410 Die enigste probleem is dat ek nou bang om dit te gebruik nie, sê die skrywer. 300 00:16:24,410 --> 00:16:29,592 Jy sal ook, as jy deur te lees die 46 page privaatheid beleid vir jou TV. 301 00:16:29,592 --> 00:16:31,800 Die bedrag van data van hierdie ding versamel is verbysterend. 302 00:16:31,800 --> 00:16:35,710 Dit logs waar, wanneer, hoe en vir hoe lank jy die TV. 303 00:16:35,710 --> 00:16:38,190 Dit stel die dop koekies, as ons bespreek het, 304 00:16:38,190 --> 00:16:40,560 en bakens ontwerp op te spoor wanneer jy 305 00:16:40,560 --> 00:16:43,185 beskou spesifieke inhoud of 'n spesifieke e-pos 306 00:16:43,185 --> 00:16:45,230 As jy wil e-pos om te kyk op jou TV. 307 00:16:45,230 --> 00:16:48,430 Dit rekords van die programme wat jy gebruik, die webwerwe wat jy besoek, 308 00:16:48,430 --> 00:16:52,280 en hoe jy interaksie met die inhoud, doen dit alles deur jou smart TV. 309 00:16:52,280 --> 00:16:55,470 Dit is ook, Creepier yet-- dit is my addition-- 310 00:16:55,470 --> 00:16:58,140 het 'n ingeboude in die kamera met gesig erkenning. 311 00:16:58,140 --> 00:17:01,010 >> Die doel is om voorsiening te gebaar beheer vir die TV 312 00:17:01,010 --> 00:17:05,490 en in staat stel om aan te meld by persoonlike rekening met jou gesig. 313 00:17:05,490 --> 00:17:08,940 Aan die positiewe kant, die beelde gestoor word op die TV in plaas van die foto's 314 00:17:08,940 --> 00:17:09,940 'n korporatiewe bediener. 315 00:17:09,940 --> 00:17:12,520 Aan die negatiewe kant, die internet verband maak die hele TV 316 00:17:12,520 --> 00:17:14,811 kwesbaar vir hackers wat het getoon die vermoë 317 00:17:14,811 --> 00:17:16,700 volle beheer van die masjien te neem. 318 00:17:16,700 --> 00:17:20,880 >> Meer verneder, asof dit was nie slim genoeg, is die mikrofoon. 319 00:17:20,880 --> 00:17:23,599 Die TV spog met 'n stem funksie erkenning 320 00:17:23,599 --> 00:17:26,859 waarmee kykers te beheer die skerm met die stem bevele. 321 00:17:26,859 --> 00:17:30,290 Maar die diens kom met 'n taamlik onheilspellende waarskuwing. 322 00:17:30,290 --> 00:17:33,030 Wees asseblief bewus daarvan dat indien jou gesproke woorde insluit 323 00:17:33,030 --> 00:17:36,210 persoonlike of ander sensitiewe inligting, wat inligting 324 00:17:36,210 --> 00:17:40,310 sal wees onder die data vasgevang en aan 'n derde party. 325 00:17:40,310 --> 00:17:40,870 Het dit? 326 00:17:40,870 --> 00:17:45,860 Moenie persoonlike of sensitiewe sê dinge in die voorkant van jou TV. 327 00:17:45,860 --> 00:17:47,280 >> So dit is eintlik vir die ware. 328 00:17:47,280 --> 00:17:50,530 En dit is moeilik om nie te sien as jy gaan na Best Buy of die wil vir TV 329 00:17:50,530 --> 00:17:51,030 hierdie dae. 330 00:17:51,030 --> 00:17:52,540 Hulle is almal slim in een of ander manier. 331 00:17:52,540 --> 00:17:54,740 En hulle kry slimmer en Creepier. 332 00:17:54,740 --> 00:17:57,490 En hulle is eenvoudig die versameling van data op maniere wat ons gepraat het oor 333 00:17:57,490 --> 00:18:01,840 en dan oplaai via HTTP of 'n ander protokol sommige bediener. 334 00:18:01,840 --> 00:18:05,720 >> So dit was 'n lekker artikel in hierdie aanlyn-webwerf 335 00:18:05,720 --> 00:18:08,940 hier, wat gepraat het oor 'n spesifieke fout of verkeerde kode 336 00:18:08,940 --> 00:18:11,340 dat ons eintlik kan bind in verlede week se bespreking. 337 00:18:11,340 --> 00:18:15,730 So hierdie kop was as volg die storie gaan hier, 338 00:18:15,730 --> 00:18:18,720 Josh Breckman gewerk vir 'n maatskappy wat 'n kontrak geland 339 00:18:18,720 --> 00:18:22,390 'n content management te ontwikkel stelsel, of CMS as hulle geroep het, 340 00:18:22,390 --> 00:18:24,380 vir 'n redelike groot regering webwerf. 341 00:18:24,380 --> 00:18:27,300 Baie van die betrokke projek ontwikkeling van 'n content management system 342 00:18:27,300 --> 00:18:29,840 sodat werknemers sou wees staat om te bou en in stand te hou 343 00:18:29,840 --> 00:18:31,877 die steeds veranderende inhoud vir hul webwerf. 344 00:18:31,877 --> 00:18:34,210 Dinge het baie goed vir 'n Paar dae na gaan live. 345 00:18:34,210 --> 00:18:37,020 Maar op die dag ses, dinge so goed gegaan het nie. 346 00:18:37,020 --> 00:18:39,500 Al die inhoud van die webwerf het heeltemal verdwyn. 347 00:18:39,500 --> 00:18:42,950 En al die bladsye het gelei tot die standaard, Tik inhoud webblad. 348 00:18:42,950 --> 00:18:43,810 Oeps. 349 00:18:43,810 --> 00:18:46,080 Josh is ingeroep om ondersoek en opgemerk 350 00:18:46,080 --> 00:18:49,390 dat 'n mens besonder lastig eksterne IP-adres het 351 00:18:49,390 --> 00:18:53,380 gegaan in en verwyder al Die inhoud van die stelsel. 352 00:18:53,380 --> 00:18:56,290 >> Die IP adres het nie behoort sommige oorsese hacker gebuig 353 00:18:56,290 --> 00:18:58,340 oor die vernietiging van nuttige regering inligting. 354 00:18:58,340 --> 00:19:05,190 Dit besluit om googlebot.com, Google se eie web kruip spin. 355 00:19:05,190 --> 00:19:06,010 Oeps. 356 00:19:06,010 --> 00:19:09,150 Na 'n bietjie van navorsing en die skommeling rondom 'n noncorrupt Friends te vind, 357 00:19:09,150 --> 00:19:10,180 Josh het gevind dat die probleem. 358 00:19:10,180 --> 00:19:12,700 >> 'N gebruiker het kopieer en geplak inhoud van een 359 00:19:12,700 --> 00:19:15,670 na 'n ander, insluitend 'n wysig Hyperlink 360 00:19:15,670 --> 00:19:17,577 Die inhoud van die bladsy te wysig. 361 00:19:17,577 --> 00:19:20,160 Normaalweg sou dit nie wees om 'n kwessie, aangesien 'n buite gebruiker sou 362 00:19:20,160 --> 00:19:24,320 'n naam en wagwoord in te voer, maar die CMS verifikasie stelsel, 363 00:19:24,320 --> 00:19:27,520 die aanmelding stelsel, het nie in ag neem 364 00:19:27,520 --> 00:19:30,980 gesofistikeerde inbraak tegnieke van Google Spider. 365 00:19:30,980 --> 00:19:31,700 Oeps. 366 00:19:31,700 --> 00:19:33,610 >> Soos dit blyk, Google Spider gebruik nie 367 00:19:33,610 --> 00:19:36,950 koekies, wat beteken dat dit kan maklik omseil 'n tjek vir die 368 00:19:36,950 --> 00:19:39,840 is aangeteken op koekie stel vals is. 369 00:19:39,840 --> 00:19:42,620 Dit is ook nie aandag te gee aan JavaScript, wat normaalweg 370 00:19:42,620 --> 00:19:45,170 vinnige en lei gebruikers wat nie aangemeld is nie. 371 00:19:45,170 --> 00:19:48,610 Dit beteken egter volg elke skakel op elke bladsy vind dit, 372 00:19:48,610 --> 00:19:51,700 insluitend diegene wat met Verwyder Page in die titel. 373 00:19:51,700 --> 00:19:52,650 Oeps. 374 00:19:52,650 --> 00:19:56,070 >> So wat beteken dit in meer tegniese, maar redelik toeganklik terme? 375 00:19:56,070 --> 00:19:58,340 Dit beteken net dat regdeur hul webwerf, 376 00:19:58,340 --> 00:20:02,287 hulle het URLs nie in teenstelling met die een wat jy kan sien in die probleem stel sewe. 377 00:20:02,287 --> 00:20:04,620 Onthou in die probleem stel sewe of weet probleem die sewe 378 00:20:04,620 --> 00:20:06,411 wat jy uitgedaag, onder andere, 379 00:20:06,411 --> 00:20:08,570 aandele namens gebruikers te verkoop. 380 00:20:08,570 --> 00:20:14,010 Maar die uitvoering van die funksie by wyse van kry via skakels in jou gebruiker 381 00:20:14,010 --> 00:20:16,880 koppelvlak, waarskynlik nie die slimste idee 382 00:20:16,880 --> 00:20:20,300 want as jou site is een of ander manier toeganklik óf deur 'n mens 383 00:20:20,300 --> 00:20:23,577 wie om te klik of koop 'n bot soos Google of 'n Spider 384 00:20:23,577 --> 00:20:26,160 as hulle genoem dat net kruip die web probeer indeks 385 00:20:26,160 --> 00:20:29,060 die web as 'n soektog, hulle kon baie maklik 386 00:20:29,060 --> 00:20:31,340 getref deur hierdie soort van URL. 387 00:20:31,340 --> 00:20:33,770 En dit is funksioneel gelykstaande aan, in hierdie geval, 388 00:20:33,770 --> 00:20:37,000 verkoop van alle aandele van Google. 389 00:20:37,000 --> 00:20:40,030 >> Nou eerlik, dit is heeltemal asinine dat die CMS 390 00:20:40,030 --> 00:20:43,240 gebruik JavaScript en koekies sy aanmelding stelsel te implementeer 391 00:20:43,240 --> 00:20:47,100 en nie doen wat die bediener kant, as julle doen en ook sal in PSet 7-- 392 00:20:47,100 --> 00:20:49,940 daar is 'n login.php file-- altyd, altyd, 393 00:20:49,940 --> 00:20:52,789 altyd sekuriteit moet wees gedoen op die bediener kant, 394 00:20:52,789 --> 00:20:56,080 nie op die kliënt se kant, want as dit artikel stel en jy kan jouself 395 00:20:56,080 --> 00:20:59,600 sien op 'n sekere punt, is dit triviaal vir 'n gebruiker, goed of sleg, 396 00:20:59,600 --> 00:21:02,860 om net af JavaScript nie koekies te noem. 397 00:21:02,860 --> 00:21:06,020 So dit is jou daaglikse WTF. 398 00:21:06,020 --> 00:21:07,970 >> Daar is nog een, wat is net 'n soort van scary, 399 00:21:07,970 --> 00:21:11,360 so ek sal noem dit as slegs as 'n lewe les. 400 00:21:11,360 --> 00:21:14,850 Wanneer jy 'n aansoek gebruik genoem soos Snapchat of die soos 401 00:21:14,850 --> 00:21:19,380 wat sê hierdie foto's slegs vir vyf sekondes, tien sekondes, of iets anders. 402 00:21:19,380 --> 00:21:21,680 Hulle is kortstondig Dit is absoluut nie die geval nie. 403 00:21:21,680 --> 00:21:25,670 Soos daar is geen manier, digitaal, 'n vorm van video te implementeer, 404 00:21:25,670 --> 00:21:30,150 of beeld of teks deel soos dat 'n ontvanger aan die ander kant 405 00:21:30,150 --> 00:21:31,660 kan nie een of ander manier red die data. 406 00:21:31,660 --> 00:21:34,300 >> In die mees naïewe manier, iemand kon sy selfoon neem. 407 00:21:34,300 --> 00:21:36,850 En hulle het 'n 10 sekonde venster terwyl op soek na 'n paar snap 408 00:21:36,850 --> 00:21:39,410 om net te neem 'n paar ander selfoon en foto dit, natuurlik. 409 00:21:39,410 --> 00:21:41,660 Sodat jy kan bewaar iets digitaal dat die pad. 410 00:21:41,660 --> 00:21:44,620 Sommige van julle weet hoe om te neem screenshots op jou selfoon. 411 00:21:44,620 --> 00:21:49,290 In werklikheid, as jy dit nie weet nie, besef dat ten minste Snapchat, 412 00:21:49,290 --> 00:21:51,040 en ek dink ander aansoeke om hierdie dae, 413 00:21:51,040 --> 00:21:53,720 ten minste jou vertel as die ontvanger het eintlik 414 00:21:53,720 --> 00:21:55,310 geneem om 'n kiekie van jou beeld. 415 00:21:55,310 --> 00:22:00,870 >> Maar erger nog, dit was die snappening, as iemand dit geskep het onlangs, 416 00:22:00,870 --> 00:22:04,680 waar sommige 100,000 breek vrygelaat 417 00:22:04,680 --> 00:22:09,310 in wat genoem word 'n stortvloed lêer op verskeie webwerwe uiteindelik. 418 00:22:09,310 --> 00:22:12,000 En dit bevat 'n hele klomp van private boodskappe en boodskappe. 419 00:22:12,000 --> 00:22:15,210 Dit blyk uit die meeste van hulle goed, so nie wat jy kan verwag. 420 00:22:15,210 --> 00:22:17,580 Maar omdat die mense gehad het gebruik om 'n derde party webwerf, 421 00:22:17,580 --> 00:22:20,270 teken met hul Snapchat gebruikersnaam en wagwoord en dan 422 00:22:20,270 --> 00:22:23,470 spaar al hul breek op die derde party webwerf. 423 00:22:23,470 --> 00:22:26,130 En dit was die derde party webwerf wat gekap is, 424 00:22:26,130 --> 00:22:30,710 wat net bedoel om iemand uitgepluis het hoe al 100,000 plus van die beelde te kry 425 00:22:30,710 --> 00:22:33,822 in hul eie hardeskyf vir die daaropvolgende deel. 426 00:22:33,822 --> 00:22:36,030 Eerlik, ook hier, dit is soort van asinine dat Snapchat 427 00:22:36,030 --> 00:22:39,360 is in so 'n wyse geïmplementeer wat 'n derde party kan sorteer van onderskep 428 00:22:39,360 --> 00:22:43,310 die data en dat dit nie gekoppel is aan jou eie toepassing wat uitgevoer word op die telefoon. 429 00:22:43,310 --> 00:22:46,947 Maar ook hier, besef dat hierdie dinge moet nie verrassend, 430 00:22:46,947 --> 00:22:49,030 of ten minste moet daar wees om 'n lewe les hier. 431 00:22:49,030 --> 00:22:52,220 As jy wil die tegniese besonderhede, gaan na hierdie URL is daar 432 00:22:52,220 --> 00:22:53,570 dit is in vandag se skyfies. 433 00:22:53,570 --> 00:23:00,960 Alle reg, enige vrae oor vandag se lewe lesse in CS? 434 00:23:00,960 --> 00:23:02,710 Draai dit af. 435 00:23:02,710 --> 00:23:04,970 Enigiets? 436 00:23:04,970 --> 00:23:06,301 Enigiets? 437 00:23:06,301 --> 00:23:09,050 Ek het 'n klomp mense te keur hul Snapchat of iets nou. 438 00:23:09,050 --> 00:23:11,690 >> Alle reg, sodat SQL, Structured Query Language. 439 00:23:11,690 --> 00:23:12,509 Kom ons draai hierdie. 440 00:23:12,509 --> 00:23:14,300 En ook, selfs al ons net krap 441 00:23:14,300 --> 00:23:16,310 die oppervlak van hierdie taal, sal ons gee jou 442 00:23:16,310 --> 00:23:18,930 genoeg van die taal in die vorm van PSet 7 443 00:23:18,930 --> 00:23:22,140 sodat jy kan 'n paar te pak redelik algemene funksies. 444 00:23:22,140 --> 00:23:24,912 Maar besef daar is 'n paar dinge wat ons nie van julle nie, 445 00:23:24,912 --> 00:23:27,120 maar hulle gaan wees belangrik kom finale projekte 446 00:23:27,120 --> 00:23:30,760 en sekerlik kom maak werklike webwerwe met werklike gebruikers 447 00:23:30,760 --> 00:23:32,040 is hierdie ontwerp besluit. 448 00:23:32,040 --> 00:23:34,460 >> Dit blyk dat in 'n MySQL databasis, jy 449 00:23:34,460 --> 00:23:37,460 het trosse van keuses soos die data tipes vir jou kolomme 450 00:23:37,460 --> 00:23:41,670 en ander dinge, maar jy moet ook Die keuse van 'n sogenaamde stoor 451 00:23:41,670 --> 00:23:44,570 enjin vir al jou data, die soort van lêer stelsel, 452 00:23:44,570 --> 00:23:46,700 As jy vertroud is, vir al jou data. 453 00:23:46,700 --> 00:23:48,830 Watter formaat is dit uiteindelik gestoor in? 454 00:23:48,830 --> 00:23:53,300 En die mees algemene, miskien, is MyiSAM en InnoDB, tegniese terme 455 00:23:53,300 --> 00:23:56,060 dat ons net sal omgee tot die mate dat 'n mens 456 00:23:56,060 --> 00:23:58,500 en een het nie die volgende funksie. 457 00:23:58,500 --> 00:24:00,390 >> Veronderstel dat jy 'n bietjie dorm yskas. 458 00:24:00,390 --> 00:24:03,030 En veronderstel dat jy en jou kamermaat, wat hierdie yskas deel, 459 00:24:03,030 --> 00:24:04,682 is regtig lief sê melk. 460 00:24:04,682 --> 00:24:07,140 En dit is, in werklikheid, hoe die storie pad terug aan my vertel 461 00:24:07,140 --> 00:24:10,890 in die dag wanneer Ek het 'n kursus genoem CS 161 Bedryfstelsels, wat 462 00:24:10,890 --> 00:24:12,580 insgelyks ondersoek hierdie onderwerp. 463 00:24:12,580 --> 00:24:13,760 So jy het die yskas. 464 00:24:13,760 --> 00:24:14,630 Jy is uit die melk. 465 00:24:14,630 --> 00:24:17,000 En jy by die huis kom, jou kamermaat se nog op die klas of wat ook al, 466 00:24:17,000 --> 00:24:19,208 en jy besluit ek gaan gaan uit en kry 'n paar melk. 467 00:24:19,208 --> 00:24:22,630 So jy naby die yskas, toesluit die koshuiskamer, gaan oorkant die straat 468 00:24:22,630 --> 00:24:25,330 te CVS of waar ook al, en kry in lyn melk te koop. 469 00:24:25,330 --> 00:24:28,960 >> Intussen het jou kamermaat by die huis uit die klas, kry in die koshuiskamer, 470 00:24:28,960 --> 00:24:31,802 maak die yskas, ook besef ooph, ons is uit melk. 471 00:24:31,802 --> 00:24:33,760 Sodat hy of sy sluit die yskas en dan gebeur 472 00:24:33,760 --> 00:24:35,610 om te gaan na die ander CVS, wat gebeur om te wees 473 00:24:35,610 --> 00:24:38,470 een blok weg van die ander CVS in die vierkante, en kry in lyn 474 00:24:38,470 --> 00:24:40,230 daar 'n paar melk te kry. 475 00:24:40,230 --> 00:24:42,524 Nou, natuurlik, 'n paar minute later, julle albei terug te kry, 476 00:24:42,524 --> 00:24:44,690 en die ergste van alle moontlike uitkomste gebeur het. 477 00:24:44,690 --> 00:24:45,792 Beide van julle het melk. 478 00:24:45,792 --> 00:24:47,500 En jy nie regtig soos melk wat veel. 479 00:24:47,500 --> 00:24:49,625 So een van hulle is net gaan versuur op 'n sekere punt. 480 00:24:49,625 --> 00:24:55,941 So nou het jy 'n oormatige hoeveelheid melk in die yskas omdat hoekom? 481 00:24:55,941 --> 00:24:57,072 >> [Onhoorbaar] 482 00:24:57,072 --> 00:24:59,780 David Malan: Ja, jy het nie een of ander manier met mekaar kommunikeer 483 00:24:59,780 --> 00:25:00,904 dat jy besig was om melk. 484 00:25:00,904 --> 00:25:04,320 So in die eenvoudigste maniere in die menslike wêreld, 485 00:25:04,320 --> 00:25:08,390 Hoe kan jy verhoed dat hierdie simpel scenario gebeur soos 486 00:25:08,390 --> 00:25:09,750 dat jy net eindig met een. 487 00:25:09,750 --> 00:25:10,840 Teks om dit, ja goed. 488 00:25:10,840 --> 00:25:12,877 Maar hoe anders? 489 00:25:12,877 --> 00:25:13,460 Post-it notas. 490 00:25:13,460 --> 00:25:14,626 David Malan: 'n Post-it nota. 491 00:25:14,626 --> 00:25:17,150 Enige vorm van kommunikasie wat vertel jou kamermaat 492 00:25:17,150 --> 00:25:18,670 gaan nie in die yskas vir melk. 493 00:25:18,670 --> 00:25:20,440 Ek gaan om te gaan vaccin op my eie. 494 00:25:20,440 --> 00:25:22,770 So jy een of ander manier moet hierdie hulpbron te sluit. 495 00:25:22,770 --> 00:25:27,180 Sodat ons kan maak this-- ons kan soort ruïneer die storie en verander in 'n CS storie 496 00:25:27,180 --> 00:25:30,360 waardeur dink van hierdie as net soos 'n veranderlike, wat die stoor van waarde. 497 00:25:30,360 --> 00:25:32,570 En nou, die waarde van melk is nul, 498 00:25:32,570 --> 00:25:35,410 wat jy nie wil hê om jou kamermaat daardie veranderlike te inspekteer 499 00:25:35,410 --> 00:25:38,730 en dan 'n besluit neem om hom of haarself gebaseer op die toestand van daardie veranderlike 500 00:25:38,730 --> 00:25:42,430 As jy in die proses van die verandering van die toestand van daardie veranderlike. 501 00:25:42,430 --> 00:25:46,140 >> So een van die lyne van SQL dat ons gee jou in PSet 7 spesifikasie 502 00:25:46,140 --> 00:25:47,310 is hierdie een hier. 503 00:25:47,310 --> 00:25:49,740 En ons spandeer nie 'n groot bedrag van die tyd om daaroor te praat. 504 00:25:49,740 --> 00:25:55,100 Maar dit blyk, as jy probeer sommige voorraad te koop in CS50 Finansies 505 00:25:55,100 --> 00:25:58,000 dat jy reeds sommige aandele van u 506 00:25:58,000 --> 00:26:01,750 wil in staat wees om 'n nommer te doen van die dinge wat dadelik saam. 507 00:26:01,750 --> 00:26:04,360 Jy wil in staat wees om effektief, op 'n hoë vlak, 508 00:26:04,360 --> 00:26:06,700 check alles reg, as ek wil meer aandele van Free te koop, 509 00:26:06,700 --> 00:26:08,780 die pennie voorraad ons praat oor in die spec, 510 00:26:08,780 --> 00:26:10,660 Ek wil eerste tjek hoeveel aandele ek het. 511 00:26:10,660 --> 00:26:11,810 En dink dit is vyf. 512 00:26:11,810 --> 00:26:14,600 En dink ek wil koop 10 meer, ek uiteindelik 513 00:26:14,600 --> 00:26:17,069 wil 15 aandele van voorraad te hê. 514 00:26:17,069 --> 00:26:18,360 So ek het twee vrae te vra. 515 00:26:18,360 --> 00:26:20,230 Wat is die toestand van die veranderlike? 516 00:26:20,230 --> 00:26:21,470 Wat is die toestand van die ry? 517 00:26:21,470 --> 00:26:22,970 Hoeveel aandele het ek op die oomblik? 518 00:26:22,970 --> 00:26:24,636 Dan moet jy wil om voort te gaan en werk dit. 519 00:26:24,636 --> 00:26:27,720 So wat is die analoog aan die melk in dat u die ry, 520 00:26:27,720 --> 00:26:30,730 en dan moet jy wil hê om dit op te dateer want as jy wil 10 aandele te koop, 521 00:26:30,730 --> 00:26:32,521 jy nie wil hê om te verander die ry tot 10, kan jy 522 00:26:32,521 --> 00:26:35,300 wil dit verander na 5 plus 10 of, natuurlik, 15. 523 00:26:35,300 --> 00:26:40,030 >> Hierdie lyn van die kode te verseker dat die twee konseptuele idees 524 00:26:40,030 --> 00:26:42,810 gebeur saam of glad nie. 525 00:26:42,810 --> 00:26:46,920 Niemand, insluitend 'n paar ander gebruiker wie aangeteken in die dieselfde webblad, 526 00:26:46,920 --> 00:26:49,900 kan een of ander manier onderbreek die nagaan van die ry 527 00:26:49,900 --> 00:26:52,960 en die opdatering van die ry, die kies en die werk as jy wil. 528 00:26:52,960 --> 00:26:57,360 En die sintaksis is nie super duidelik, maar hierdie een lyn, lank is dit is, 529 00:26:57,360 --> 00:27:01,150 verseker dat die twee operasies Gaan die veranderlike of check die ry 530 00:27:01,150 --> 00:27:04,660 en werk die ry gebeur atomies. 531 00:27:04,660 --> 00:27:06,849 >> Ag hier gaan ons weer. 532 00:27:06,849 --> 00:27:07,890 SMS-boodskap op my selfoon. 533 00:27:07,890 --> 00:27:09,954 So kom ons maak dit 'n bietjie meer beton. 534 00:27:09,954 --> 00:27:12,120 Veronderstel dat jy nie implementering van 'n yskas, 535 00:27:12,120 --> 00:27:16,400 en jy nie die implementering PSet 7 maar 'n werklike bank, 536 00:27:16,400 --> 00:27:20,000 of 'n OTM, 'n outomatiese teller Masjien, waardeur jy een of ander manier 537 00:27:20,000 --> 00:27:22,960 wil in staat wees om te bemagtig gebruikers geld oor te dra 538 00:27:22,960 --> 00:27:24,500 van een rekening na 'n ander. 539 00:27:24,500 --> 00:27:25,100 OK, hang. 540 00:27:25,100 --> 00:27:26,683 Ek gaan dit nou stom, dankie. 541 00:27:26,683 --> 00:27:30,450 So wil ons geld te beweeg van een rekening nommer 542 00:27:30,450 --> 00:27:33,600 in 'n ander rekening nommer, spesifiek $ 100. 543 00:27:33,600 --> 00:27:37,690 So dit is soort van 'n arbitrêre Byvoorbeeld, waarop jy die OTM, 544 00:27:37,690 --> 00:27:41,060 dalk wil twee SQL te voer navrae, trek van een rekening, 545 00:27:41,060 --> 00:27:42,430 en voeg by die ander rekening. 546 00:27:42,430 --> 00:27:46,766 Maar jy wil om te verseker dat hierdie twee lyne beide gebeur, of glad nie. 547 00:27:46,766 --> 00:27:48,640 Jy iets nie wil nie om onderbreek. 548 00:27:48,640 --> 00:27:51,440 Jy doen nie 'n paar slim slegte man een of ander manier staan ​​by die Bank van Amerika 549 00:27:51,440 --> 00:27:53,270 met twee kitsbanke in die voorkant van hom en een of ander manier 550 00:27:53,270 --> 00:27:55,270 soort van tik in die beveel op dieselfde tyd, 551 00:27:55,270 --> 00:28:01,230 hopelik probeer $ 200 in plaas af te trek van $ 100 en slegs met $ 100 gekrediteer. 552 00:28:01,230 --> 00:28:04,450 In kort, jy wil om dit te optree presies soos jy verwag. 553 00:28:04,450 --> 00:28:06,540 >> En die manier wat jy doen hierdie in SQL databasis 554 00:28:06,540 --> 00:28:09,350 jy draai in wat bekend as 'n transaksie. 555 00:28:09,350 --> 00:28:14,290 Letterlik in SQL, kan jy bel CS50 se navraag funksie met quote unquote begin 556 00:28:14,290 --> 00:28:15,370 transaksie. 557 00:28:15,370 --> 00:28:18,640 Dan kan jy enige aantal voer daaropvolgende SQL navrae, 558 00:28:18,640 --> 00:28:20,870 maar nie een van hulle te neem bring op die databasis 559 00:28:20,870 --> 00:28:25,880 totdat jy noem navraag quote unquote pleeg, as weer met behulp van PHP. 560 00:28:25,880 --> 00:28:29,810 En op hierdie wyse kan u verseker dat selfs as jy het 1000 gebruikers 561 00:28:29,810 --> 00:28:32,080 slaan jou databasis op dieselfde tyd, SQL 562 00:28:32,080 --> 00:28:34,540 belowe dat hierdie twee navrae sal wees 563 00:28:34,540 --> 00:28:36,740 geïmplementeer een reg na die ander. 564 00:28:36,740 --> 00:28:40,330 Sodat jy nie eindig met 'n oormaat van melk of die verkeerde bedrag, uiteindelik, 565 00:28:40,330 --> 00:28:40,830 geld. 566 00:28:40,830 --> 00:28:43,110 >> So hou dit in gedagte, nie soseer vir PSet 7 567 00:28:43,110 --> 00:28:45,250 maar vir die finale projekte as jy eintlik 568 00:28:45,250 --> 00:28:49,690 probeer data om rond te beweeg oor tafels as jy dalk hier. 569 00:28:49,690 --> 00:28:53,980 Maar selfs eenvoudiger en meer voor die hand liggend om te verstaan ​​met 'n voorbeeld 570 00:28:53,980 --> 00:28:54,860 is hierdie een hier. 571 00:28:54,860 --> 00:28:57,760 En iemand per e-pos ons oor dit net die ander dag 572 00:28:57,760 --> 00:28:59,600 toe hy sien iets soortgelyks aanlyn. 573 00:28:59,600 --> 00:29:03,480 >> So na my wete, die pen stelsel is nie kwesbaar vir hierdie aanval. 574 00:29:03,480 --> 00:29:06,637 En ek het geen idee of dit selfs gebruike die SQL databasis onder die kap. 575 00:29:06,637 --> 00:29:08,470 Maar laat ons dit gebruik vir ter wille van die bespreking. 576 00:29:08,470 --> 00:29:10,178 Hier is die skerm wat Harvard mense geneig 577 00:29:10,178 --> 00:29:13,620 om te sien wanneer te teken met hul Harvard ID-nommer en hul pen. 578 00:29:13,620 --> 00:29:19,020 En veronderstel dat die pen stelsel was in PHP en met 'n MySQL geïmplementeer 579 00:29:19,020 --> 00:29:22,000 databasis, die kode dat iemand kan geskryf het jare gelede 580 00:29:22,000 --> 00:29:23,270 mag lyk. 581 00:29:23,270 --> 00:29:25,230 Eerstens, verklaar 'n veranderlike genoem rekening. 582 00:29:25,230 --> 00:29:27,560 En net kry wat uit die NA superglobal. 583 00:29:27,560 --> 00:29:30,140 Dan kry 'n ander veranderlike genoem wagwoord en dieselfde doen. 584 00:29:30,140 --> 00:29:33,080 En dan net uit te voer hierdie lang navraag hier 585 00:29:33,080 --> 00:29:36,690 Kies ster van die gebruikers waar gebruikersnaam gelyk aan sulke 586 00:29:36,690 --> 00:29:38,510 wagwoord gelyk aan sulke. 587 00:29:38,510 --> 00:29:40,660 >> Let daarop dat die krullerige draadjies wat ek hier gebruik 588 00:29:40,660 --> 00:29:42,880 net beteken om PHP, gaan voor en plaasvervanger 589 00:29:42,880 --> 00:29:45,400 die waarde van die twee veranderlikes reg daar. 590 00:29:45,400 --> 00:29:50,090 Hulle is nie streng noodsaaklik is, maar hulle is geneig om subtiele sintaksfoute te vermy. 591 00:29:50,090 --> 00:29:53,650 So dit lyk heeltemal korrekte met die eerste oogopslag. 592 00:29:53,650 --> 00:29:54,240 En dit is. 593 00:29:54,240 --> 00:29:56,680 Jy kan implementeer om die pen stelsel in hierdie manier. 594 00:29:56,680 --> 00:30:00,460 >> Maar veronderstel dat 'n super slim en kwaadwillige student 595 00:30:00,460 --> 00:30:03,020 insette dit as sy of haar pen. 596 00:30:03,020 --> 00:30:05,550 So ek het die koeël verwyder tekens hier in die spot het, 597 00:30:05,550 --> 00:30:08,760 en ek het eintlik aan die lig gebring wat hy of sy tik kan wees. 598 00:30:08,760 --> 00:30:10,350 En dit is 'n bietjie vreemd. 599 00:30:10,350 --> 00:30:13,850 Maar wat spring uit by jou op potensieel kommerwekkende oor die gebruiker se insette, 600 00:30:13,850 --> 00:30:16,450 selfs as jy het geen idee wat 'n SQL-inspuiting aanval beteken. 601 00:30:16,450 --> 00:30:20,300 Waarom het hierdie kyk 'n bietjie fishy? 602 00:30:20,300 --> 00:30:21,050 Wat is dit? 603 00:30:21,050 --> 00:30:21,550 [Onhoorbaar] 604 00:30:21,550 --> 00:30:24,260 David Malan: Die of 'n bietjie verdag. 605 00:30:24,260 --> 00:30:26,310 In werklikheid, dit is 'n navraag van SQL. 606 00:30:26,310 --> 00:30:28,105 Sodat voorspel niks goeds. 607 00:30:28,105 --> 00:30:29,980 Die feit dat daar al hierdie enkele aanhalings 608 00:30:29,980 --> 00:30:32,646 there-- in werklikheid, een van die maklikste maniere sommige databasisse te breek 609 00:30:32,646 --> 00:30:35,880 is deur te tik in 'n naam soos O'Reilly wat 'n toespraak in dit 610 00:30:35,880 --> 00:30:38,600 want as die mens wat geskryf die kode agter die skerms 611 00:30:38,600 --> 00:30:41,570 nie in ag neem dat daar dalk enkele aanhalings in 'n gebruiker se 612 00:30:41,570 --> 00:30:45,060 insette, en hy of sy gebruik enkele aanhalings in hulle kode, 613 00:30:45,060 --> 00:30:46,040 slegte dinge kan gebeur. 614 00:30:46,040 --> 00:30:47,870 >> In werklikheid, erger nog, oorweeg dit. 615 00:30:47,870 --> 00:30:50,600 As dit was weer die kode dat iemand by Harvard jaar 616 00:30:50,600 --> 00:30:53,100 gelede geskryf het vir die pen stelsel, let op wat is 617 00:30:53,100 --> 00:30:56,220 oor te vervang raak vir gebruikersnaam en wagwoord 618 00:30:56,220 --> 00:30:59,780 As die gebruiker weer skroob as hul gebruikersnaam 619 00:30:59,780 --> 00:31:03,960 en dan een, twee, drie, vier, vyf, kwotasie of kwotasie unquote een gelykes 620 00:31:03,960 --> 00:31:04,660 Haal EEN. 621 00:31:04,660 --> 00:31:07,220 En sien wat is die sleutel hier is die gebruiker het nie 622 00:31:07,220 --> 00:31:09,900 begin om hul wagwoord of hul pen met 'n kwotasie. 623 00:31:09,900 --> 00:31:12,610 En hulle het nie geëindig dit met 'n aanhaling omdat hy of sy 624 00:31:12,610 --> 00:31:16,315 is die veronderstelling dat indien die programmeerder was nie so skerp, 625 00:31:16,315 --> 00:31:18,690 hulle gaan diegene te hê enkele aanhalings in hulle kode. 626 00:31:18,690 --> 00:31:19,860 >> So hier is die kode. 627 00:31:19,860 --> 00:31:23,820 En die vervanging van die nou kan gebeur, is hierdie. 628 00:31:23,820 --> 00:31:26,350 En ek het onderstreep wat die gebruiker getik. 629 00:31:26,350 --> 00:31:28,480 So voor, na. 630 00:31:28,480 --> 00:31:33,330 En sien wat is effens kommerwekkend nou oor die regter helfte van die SQL-kode? 631 00:31:33,330 --> 00:31:36,300 Dit is 'n bietjie meer kompleks, weliswaar, as die navrae wat ons gesien het. 632 00:31:36,300 --> 00:31:38,550 Maar dit kan nie moontlik 'n goeie ding as jy 633 00:31:38,550 --> 00:31:42,240 sê kies ster, wat kies alles van die gebruiker se tafel 634 00:31:42,240 --> 00:31:46,630 waar gebruikersnaam gelyk skroob en wagwoord is gelyk aan een, twee, drie, vier, 635 00:31:46,630 --> 00:31:49,610 vyf of een is gelyk aan een. 636 00:31:49,610 --> 00:31:53,860 Wat is die logiese implikasie van daardie laaste klousule vermoedelik? 637 00:31:53,860 --> 00:31:55,650 Dis net altyd waar nie. 638 00:31:55,650 --> 00:31:59,930 >> En omdat ons soort raai of uitgepluis deur trial en error 639 00:31:59,930 --> 00:32:02,760 dat die programmeerder wat het hierdie kode het nie 640 00:32:02,760 --> 00:32:07,250 verwag 'n mens of slegte persoon tik in aanhalingstekens so goed, 641 00:32:07,250 --> 00:32:10,350 ons kan sintakties voltooi die SQL navraag 642 00:32:10,350 --> 00:32:12,260 met iets nonsens maar iets wat 643 00:32:12,260 --> 00:32:15,930 is sintakties korrek wat altyd evalueer waar. 644 00:32:15,930 --> 00:32:19,130 So as hierdie kode gebruik word, te beantwoord Die vraag waar of vals moet 645 00:32:19,130 --> 00:32:22,930 hierdie gebruiker toegelaat word om die te slaag antwoord is altyd blykbaar gaan 646 00:32:22,930 --> 00:32:26,930 om waar te wees, want dit is altyd iets iets uit die databasis te kies 647 00:32:26,930 --> 00:32:29,280 want 'n mens natuurlik altyd gelyk is een. 648 00:32:29,280 --> 00:32:30,360 >> So, wat is die oplossing? 649 00:32:30,360 --> 00:32:33,290 Wel in PSet 7, het ons eintlik vermy alles saam. 650 00:32:33,290 --> 00:32:37,360 Ons gee jou 'n navraag funksie, en ons moedig jou vraagtekens te gebruik 651 00:32:37,360 --> 00:32:40,430 as plekhouers, soortgelyk in die gees te printf se% s, 652 00:32:40,430 --> 00:32:43,710 maar wat is die sleutel van die vraagtekens hier is as jy eintlik lees 653 00:32:43,710 --> 00:32:46,950 functions.php, waar ons navraag funksie geïmplementeer word, 654 00:32:46,950 --> 00:32:52,780 diegene vraagtekens is ontsnap, waardeur iets potensieel gevaarlike 655 00:32:52,780 --> 00:32:58,210 soos 'n enkele aanhaling is aangeskakel in 'n enkele aanhaling ontsnap. 656 00:32:58,210 --> 00:33:00,590 >> So dit is wat werklik gebeur as jy 657 00:33:00,590 --> 00:33:04,850 gebruik CS50 se navraag funksie of enige aantal van die derde party gratis biblioteke wat 658 00:33:04,850 --> 00:33:06,000 doen dieselfde. 659 00:33:06,000 --> 00:33:09,850 Maak nie saak nie in hierdie geval, in die groen, indien die gebruiker in 'n enkele aanhaling getik 660 00:33:09,850 --> 00:33:12,070 omdat die navraag funksie wat ons geskryf is 661 00:33:12,070 --> 00:33:15,120 gaan skuinsstrepe te voeg voor enige sodanige gevaarlike kwotasie. 662 00:33:15,120 --> 00:33:17,360 So dit is nie, in Trouens, gaan wettig wees. 663 00:33:17,360 --> 00:33:20,910 Dit is soos tik in 'n gek soek wagwoord wat is, natuurlik, gaan nie 664 00:33:20,910 --> 00:33:23,490 skroob se werklike wagwoord te wees. 665 00:33:23,490 --> 00:33:28,260 >> So het die afhaal vir CS50 is een, absoluut altyd iets gebruik 666 00:33:28,260 --> 00:33:30,860 soos CS50 se navraag funksie of die onderliggende biblioteek, 667 00:33:30,860 --> 00:33:32,560 wat gebeur genoem te word BOB. 668 00:33:32,560 --> 00:33:35,880 Maar nooit, nooit, nooit-kode doen soos hierdie 669 00:33:35,880 --> 00:33:39,472 sonder ontsnap of skrop soos hulle sê jou insette. 670 00:33:39,472 --> 00:33:42,430 En jy sal op 'n stadium waarskynlik kom oor 'n paar webwerf soos hierdie. 671 00:33:42,430 --> 00:33:46,060 Trouens, dit blyk die geval te wees soos by lughawens en hotelle in plekke 672 00:33:46,060 --> 00:33:48,880 waar hulle gratis Wi-Fi toegang wat jy hoef te meld by, 673 00:33:48,880 --> 00:33:51,010 hierdie webtuistes is altyd verskriklik geïmplementeer. 674 00:33:51,010 --> 00:33:55,680 En so 'n soort van pret by die huis oefening, nie vir kwaadwillige doeleindes of meer 675 00:33:55,680 --> 00:33:59,170 'n pret op die pad oefening, is om te tik 676 00:33:59,170 --> 00:34:02,850 'n toespraak, 'n enkele aanhaling, in 'n vorm op 'n webwerf 677 00:34:02,850 --> 00:34:03,810 en kyk wat gebeur. 678 00:34:03,810 --> 00:34:06,660 En as die bediener ineenstortings of gee jy 'n soort van fout boodskap, 679 00:34:06,660 --> 00:34:09,690 Dit kan baie goed wees dat iemand het nie verwag dit. 680 00:34:09,690 --> 00:34:15,239 En dan moet jy waarsku die behoorlike owerhede en gaan nie verder nie. 681 00:34:15,239 --> 00:34:20,843 >> So nou Julle moet hopelik hier verstaan ​​'n bietjie meer geek humor. 682 00:34:20,843 --> 00:34:24,120 >> [Gelag] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 David Malan: Jy weet jy is 'n geek. 685 00:34:29,070 --> 00:34:30,944 Vir die volgende paar jaar, sal jy onthou 686 00:34:30,944 --> 00:34:33,520 wat min Bobby tabelle As gevolg van hierdie spotprent hier. 687 00:34:33,520 --> 00:34:36,760 So hou dit in gedagte as ons konteks skakelaar 'n laaste keer 688 00:34:36,760 --> 00:34:38,770 vandag JavaScript. 689 00:34:38,770 --> 00:34:41,600 Ons het relatief min bestee tyd op die sintaks van PHP 690 00:34:41,600 --> 00:34:43,440 want dit is eintlik super soortgelyk aan C. 691 00:34:43,440 --> 00:34:47,300 En mooi genoeg, JavaScript te super soortgelyk aan C se sintaksis 692 00:34:47,300 --> 00:34:49,639 so goed soos ons sal sien in net 'n oomblik en as ons sal 693 00:34:49,639 --> 00:34:51,205 sien later vandeesweek in die besonder. 694 00:34:51,205 --> 00:34:54,080 Wat jy kan doen met hierdie taal, al is, is al hoe meer kragtige, 695 00:34:54,080 --> 00:34:55,790 veral met die API's. 696 00:34:55,790 --> 00:34:56,960 >> Maar eers 'n vinnige toer. 697 00:34:56,960 --> 00:35:00,450 So een, in JavaScript, daar is geen hoof funksie, wat is lekker. 698 00:35:00,450 --> 00:35:02,650 Soos met PHP, kan jy net skryf kode. 699 00:35:02,650 --> 00:35:04,310 Toestande lyk. 700 00:35:04,310 --> 00:35:07,100 En Boolse uitdrukkings mag lyk dit of soos hierdie. 701 00:35:07,100 --> 00:35:09,530 Skakelaars bestaan ​​nie, en hulle mag lyk. 702 00:35:09,530 --> 00:35:10,970 Vier sirkelroetes lyk. 703 00:35:10,970 --> 00:35:12,390 Terwyl sirkelroetes lyk. 704 00:35:12,390 --> 00:35:14,160 Doen genot lyk. 705 00:35:14,160 --> 00:35:16,850 En dan skikkings lyk hierdie, baie soortgelyk aan PHP. 706 00:35:16,850 --> 00:35:20,740 Maar let dat in JavaScript jy verklaar 'n veranderlike nie met 'n dollar 707 00:35:20,740 --> 00:35:25,190 teken nie met 'n data tipe, maar letterlik deur te sê var vir veranderlike voor dit. 708 00:35:25,190 --> 00:35:27,900 Dit word ook losweg getik in dat dit tipes, 709 00:35:27,900 --> 00:35:29,729 maar jy uitdruklik verklaar hulle nie. 710 00:35:29,729 --> 00:35:31,520 En dan 'n string, vir Byvoorbeeld, kan kyk 711 00:35:31,520 --> 00:35:34,350 soos hierdie, wat string geroep is in hierdie geval. 712 00:35:34,350 --> 00:35:35,410 En dan 'n voorwerp. 713 00:35:35,410 --> 00:35:37,010 En dit sal ons sien meer voor lank. 714 00:35:37,010 --> 00:35:41,470 En 'n voorwerp is dalk een van die mees algemeen gesien data strukture 715 00:35:41,470 --> 00:35:44,050 in 'n JavaScript gebaseer program, want dit kan 716 00:35:44,050 --> 00:35:46,680 om jou te assosieer arbitrêre sleutel waarde pare net 717 00:35:46,680 --> 00:35:51,240 soos PHP se assosiatiewe skikkings en net soos jou eie hash tafel 718 00:35:51,240 --> 00:35:54,042 of probeer as ons ' 'n paar weke terug. 719 00:35:54,042 --> 00:35:56,250 So laat ons eintlik sien wat ons kan doen met JavaScript. 720 00:35:56,250 --> 00:35:59,410 En in die besonder, is dit 'n wassery lys van eienskappe 721 00:35:59,410 --> 00:36:02,300 dat blaaiers het dat toelaat dat ons JavaScript te haak 722 00:36:02,300 --> 00:36:05,470 in 'n webwerf in die volgende manier. 723 00:36:05,470 --> 00:36:09,340 JavaScript word dikwels gebruik as 'n kliënt kant script taal. 724 00:36:09,340 --> 00:36:10,130 Dit is nie saamgestel. 725 00:36:10,130 --> 00:36:11,370 Dit is ook vertolk word. 726 00:36:11,370 --> 00:36:15,740 Maar in teenstelling met PHP, wat nou al op die bediener, in die web-bediener, 727 00:36:15,740 --> 00:36:18,220 of diep binnekant van die kliënte, JavaScript 728 00:36:18,220 --> 00:36:22,190 is anders in dat dit gewoonlik loop in die leser. 729 00:36:22,190 --> 00:36:26,060 >> So 'n JavaScript-kode wat jy begin skryf vir PSet 8, of jou finale projek 730 00:36:26,060 --> 00:36:29,890 of in die werklike wêreld is oor die algemeen gaan om gered te word op die bediener, absoluut 731 00:36:29,890 --> 00:36:33,110 in 'n dot HTML of dot JS vir JavaScript-lêer. 732 00:36:33,110 --> 00:36:35,770 Maar die leser gaan om af te laai wat JavaScript 733 00:36:35,770 --> 00:36:39,530 kode na jou eie voorbeeld van Chrome, of Internet Explorer, of Firefox, of wat ook al. 734 00:36:39,530 --> 00:36:43,870 En die kode is eintlik die gang te kry uitgevoer binnekant van jou eie leser. 735 00:36:43,870 --> 00:36:46,560 Net hierdie meer werklik te maak, laat ons sien dit in konkrete vorm. 736 00:36:46,560 --> 00:36:50,120 >> Ons het geen idee wat hierdie kode nie sonder om werklik deur te lees nie. 737 00:36:50,120 --> 00:36:52,670 Maar laat my gaan na Facebook.com sonder meld. 738 00:36:52,670 --> 00:37:00,440 Laat my gaan Element te inspekteer en gaan na, kom ons sê, Network en die bladsy te herlaai. 739 00:37:00,440 --> 00:37:04,150 En ons sal see-- laat my skuif herlaai die Page al die versoeke vir nuwe te kry. 740 00:37:04,150 --> 00:37:08,850 En die heel eerste lêer wat ek sien is CSS, CSS. 741 00:37:08,850 --> 00:37:10,880 Hier is die eerste JavaScript-lêer, en ek het 742 00:37:10,880 --> 00:37:14,600 geen idee wat dit doen nie, maar hier is 'n paar van die JavaScript-kode 743 00:37:14,600 --> 00:37:16,180 wat dryf Facebook. 744 00:37:16,180 --> 00:37:18,400 Dit is nie eens regtig dat openbaar om te vergroot. 745 00:37:18,400 --> 00:37:20,260 Dit is nog steeds net so nonsens. 746 00:37:20,260 --> 00:37:24,341 >> Maar jy sal nog daar onder sien, is daar selfs meer van hierdie JavaScript-lêers. 747 00:37:24,341 --> 00:37:24,840 Oeps. 748 00:37:24,840 --> 00:37:25,440 Dit is 'n ping. 749 00:37:25,440 --> 00:37:28,550 Kom ons gaan af 'n bietjie verder, verder, verder. 750 00:37:28,550 --> 00:37:29,894 Daar is een. 751 00:37:29,894 --> 00:37:31,238 Daar is een. 752 00:37:31,238 --> 00:37:31,880 Daar is een. 753 00:37:31,880 --> 00:37:35,820 >> So selfs al is Facebook, agter die tonele, is gedeeltelik in PHP geskryf 754 00:37:35,820 --> 00:37:39,100 en Facebook se eie weergawe daarvan, daar is 'n groot hoeveelheid van die JavaScript. 755 00:37:39,100 --> 00:37:41,330 Trouens, enige van die gesels wat jy doen op Facebook, 756 00:37:41,330 --> 00:37:45,520 enige van die inline tydlyn updates dit gebeur in real time, al wat 757 00:37:45,520 --> 00:37:47,944 word aangedryf deur JavaScript. 758 00:37:47,944 --> 00:37:48,444 Ja? 759 00:37:48,444 --> 00:37:50,235 >> Publiek: Ek is nie seker As dit is Facebook, 760 00:37:50,235 --> 00:37:53,624 maar ek het gedink dat Facebook ontwikkel hul eie in-huis-kode taal? 761 00:37:53,624 --> 00:37:54,540 David Malan: Hulle het. 762 00:37:54,540 --> 00:37:58,110 So dit is hoekom ek sê dat 'n afwyking van PHP genoem Hip Hop dat hulle eintlik 763 00:37:58,110 --> 00:38:03,440 meer funksies te sodanig dat wanneer Mark eerste geïmplementeer Facebook, 764 00:38:03,440 --> 00:38:04,710 dit is in PHP geskryf is. 765 00:38:04,710 --> 00:38:07,370 En dat die soort van het gebly die soort voorkant taal 766 00:38:07,370 --> 00:38:09,030 wat hulle gebruik vir veel van hul kodering, maar dit 767 00:38:09,030 --> 00:38:11,870 is nie 'n taal wat skale besonder goed miljarde 768 00:38:11,870 --> 00:38:12,630 mense. 769 00:38:12,630 --> 00:38:15,300 En so het hulle hul eie bygevoeg verbeterings agter die skerms. 770 00:38:15,300 --> 00:38:17,049 En hulle gebruik 'n aantal van ander tale 771 00:38:17,049 --> 00:38:19,170 vir verskeie stukke hul infrastruktuur. 772 00:38:19,170 --> 00:38:24,080 So ja, dit is 'n afwyking van wat ons nou ken as PHP. 773 00:38:24,080 --> 00:38:26,610 >> So laat ons neem 'n blik by 'n paar voorbeelde 774 00:38:26,610 --> 00:38:28,890 hoe kan ons JavaScript hier gebruik. 775 00:38:28,890 --> 00:38:32,530 In vandag se bron-kode, ons het 'n n klomp van die lêers, waarvan die eerste, 776 00:38:32,530 --> 00:38:34,090 laat ons genoem DOM nul. 777 00:38:34,090 --> 00:38:36,770 So DOM nul lyk soos volg. 778 00:38:36,770 --> 00:38:40,730 Laat my gaan in hierdie gids en maak domzero.html, 779 00:38:40,730 --> 00:38:44,970 die top van wat 'n doc tipe verklaring gesê hier kom HTML 5. 780 00:38:44,970 --> 00:38:46,440 En nou hier is 'n HTML tag. 781 00:38:46,440 --> 00:38:47,540 Hier is die hoof tag. 782 00:38:47,540 --> 00:38:49,210 En hier is wat nuut is vandag. 783 00:38:49,210 --> 00:38:52,620 >> Ons het nou 'n script tag binnekant van die hoof van die bladsy. 784 00:38:52,620 --> 00:38:55,290 En dit blykbaar nie baie min, maar kennisgewing 785 00:38:55,290 --> 00:38:58,410 wat ek gedefinieer n script, 'n JavaScript. 786 00:38:58,410 --> 00:39:01,050 En as 'n eenkant, aangesien dit is 'n algemene wanopvatting, 787 00:39:01,050 --> 00:39:05,220 JavaScript het absoluut niks te doen met Java, die taal 788 00:39:05,220 --> 00:39:08,010 dat sommige van julle dalk het in APCS geleer. 789 00:39:08,010 --> 00:39:10,480 Dit was meer van 'n bemarking ding as enigiets, 790 00:39:10,480 --> 00:39:12,980 ry die coattails Java jaar gelede. 791 00:39:12,980 --> 00:39:17,300 Maar JavaScript, niks te doen met Java, net so, en so lastig, 792 00:39:17,300 --> 00:39:18,480 verwarrend naam. 793 00:39:18,480 --> 00:39:21,890 >> So hier is hoe jy 'n funksie te verklaar in JavaScript, letterlik sê funksie, 794 00:39:21,890 --> 00:39:24,556 dan is die naam van die funksie, dan is enige argumente dit kon neem, 795 00:39:24,556 --> 00:39:25,530 net soos in PHP. 796 00:39:25,530 --> 00:39:28,990 Blyk in JavaScript, een van die mees irriterende funksies wat bestaan ​​is Alert. 797 00:39:28,990 --> 00:39:31,392 Dit is 'n klein venster wat sal pop-up en jy waarsku 798 00:39:31,392 --> 00:39:32,600 om 'n stuk van inligting. 799 00:39:32,600 --> 00:39:33,766 Dit is oor die algemeen afgekeur. 800 00:39:33,766 --> 00:39:35,980 Maar ons sal dit gebruik as ons eerste oefening hier. 801 00:39:35,980 --> 00:39:37,900 >> Let 'n paar kenmerke van JavaScript. 802 00:39:37,900 --> 00:39:41,524 Enkele aanhalings en dubbel aanhalings nie eintlik saak nie. 803 00:39:41,524 --> 00:39:43,690 Enkele aanhalings en dubbel aanhalings kan omgeruil word, 804 00:39:43,690 --> 00:39:46,220 terwyl dit in C, jy het om te gebruik dubbel aanhalings vir Strykers, 805 00:39:46,220 --> 00:39:48,150 en jy het twee enkel kwotasies vir karakters. 806 00:39:48,150 --> 00:39:51,150 In die JavaScript wêreld, baie mense, die meeste mense 807 00:39:51,150 --> 00:39:54,970 Gebruik aanhalingstekens rondom snare net omdat dit 'n stilistiese ding. 808 00:39:54,970 --> 00:39:58,330 Maar wat is die plus operateur hier wat ons nie gesien het nie voor? 809 00:39:58,330 --> 00:39:59,836 >> Publiek: concatenatie. 810 00:39:59,836 --> 00:40:00,960 David Malan: concatenatie. 811 00:40:00,960 --> 00:40:02,450 So C het nie eens hierdie. 812 00:40:02,450 --> 00:40:04,820 PHP het die dot-operateur, wat dit doen. 813 00:40:04,820 --> 00:40:09,710 JavaScript het die plus-operateur, wat verwarrend is net soos Java. 814 00:40:09,710 --> 00:40:11,440 Nou wat gaan hier aan? 815 00:40:11,440 --> 00:40:14,260 >> So hier is waar 'n basiese begrip van die foto 816 00:40:14,260 --> 00:40:17,010 Ons gooi 'n paar dae gelede kom in die spel. 817 00:40:17,010 --> 00:40:19,620 Onthou wanneer ons 'n eenvoudige weergawe van 'n HTML page-- 818 00:40:19,620 --> 00:40:20,830 dit het net gesê, hello wêreld. 819 00:40:20,830 --> 00:40:22,770 En dan het ons 'n boom het aan die regterkant, wat 820 00:40:22,770 --> 00:40:27,320 het 'n klomp van die reghoeke en lyne verbind hulle soos 'n stamboom. 821 00:40:27,320 --> 00:40:30,820 So wat is die sogenaamde DOM of Document Object Model. 822 00:40:30,820 --> 00:40:36,759 En dit blyk dat jy kan toegang reghoeke in die boom met sintaksis 823 00:40:36,759 --> 00:40:37,550 soos die volgende. 824 00:40:37,550 --> 00:40:41,370 Jy sê letterlik dokument, wat 'n spesiale globale veranderlike in 'n JavaScript 825 00:40:41,370 --> 00:40:45,890 program wat 'n funksie wat verband hou met dit wat jy kan toegang 826 00:40:45,890 --> 00:40:50,280 soortgelyk aan 'n struct, maar jy eenvoudig sê dot en dan die funksie se naam, 827 00:40:50,280 --> 00:40:52,390 kry element deur ID. 828 00:40:52,390 --> 00:40:55,460 >> Die element wat ek wil kry, is blykbaar haal unquote naam. 829 00:40:55,460 --> 00:40:57,150 En dan wil ek die waarde daarvan te kry. 830 00:40:57,150 --> 00:40:58,330 Nou kan ons onsself voor om. 831 00:40:58,330 --> 00:41:00,038 Ek is nie eens seker wat dit alles is oor. 832 00:41:00,038 --> 00:41:03,000 Kom ons vinnig uit na die HTML op die bladsy, wat is super eenvoudig. 833 00:41:03,000 --> 00:41:05,370 >> Kennis dat ek gedefinieer 'n vorm hier. 834 00:41:05,370 --> 00:41:07,940 KENNISGEWING Ek het dit gegee om 'n unieke ID, selfs al het ons nie gebruik 835 00:41:07,940 --> 00:41:08,870 hierdie kenmerk nie. 836 00:41:08,870 --> 00:41:11,300 Maar dit bestaan ​​in HTML. 837 00:41:11,300 --> 00:41:15,570 Jy kan uniek paar stuk identifiseer van HTML met 'n identifikasie soos hierdie. 838 00:41:15,570 --> 00:41:19,880 >> Kennis nou this-- blyk HTML ondersteun, per dat wasgoed lys 839 00:41:19,880 --> 00:41:22,490 'n oomblik gelede, 'n hele n klomp van die event handlers. 840 00:41:22,490 --> 00:41:25,060 En hierdie gebeurtenis hanteerder sê op dien. 841 00:41:25,060 --> 00:41:28,730 Op die gebruiker voorlegging van hierdie vorm, bel die volgende kode. 842 00:41:28,730 --> 00:41:31,360 En die kode wat gaan genoem word of uitgevoer word 843 00:41:31,360 --> 00:41:35,260 is presies dit, die Griekse funksie gevolg deur terugkeer vals. 844 00:41:35,260 --> 00:41:37,360 Alles anders moet redelik bekend is. 845 00:41:37,360 --> 00:41:42,050 >> Hier is 'n invoer van die tipe teks, wie se ID, in hierdie geval, gaan die naam wees. 846 00:41:42,050 --> 00:41:45,430 Ons het nie 'n werklike naam kenmerk nie hierdie time-- en 'n stuur-knoppie. 847 00:41:45,430 --> 00:41:48,330 So die bladsy lyk. 848 00:41:48,330 --> 00:41:52,890 En die gevolglike gedrag, Jy sal sien, lyk soos volg. 849 00:41:52,890 --> 00:41:56,940 Die bladsy is dit die plaaslike gasheer sê, hello David, skaars 'n mooi, 850 00:41:56,940 --> 00:41:58,340 manier om 'n gebruiker te groet. 851 00:41:58,340 --> 00:41:59,950 Maar wat eintlik aan die gang? 852 00:41:59,950 --> 00:42:01,360 >> Wel, kyk wat dit is. 853 00:42:01,360 --> 00:42:02,310 Dit is 'n teks veld. 854 00:42:02,310 --> 00:42:04,635 En volgens die HTML hier, het ek dit gegee om 855 00:42:04,635 --> 00:42:07,350 'n unieke identifikasie genoem quote unquote naam. 856 00:42:07,350 --> 00:42:09,770 Intussen, het ek gesê toe die gebruiker tik hierdie vorm 857 00:42:09,770 --> 00:42:13,820 deur slaan Tik of klik op die Stuur knoppie, skakel die funksie genoem Groet 858 00:42:13,820 --> 00:42:15,410 en dan terug Vals. 859 00:42:15,410 --> 00:42:16,870 Kom ons kyk na wat in trurat. 860 00:42:16,870 --> 00:42:20,590 Sien wanneer ek klik op stuur, die URL van die bladsy verander nie. 861 00:42:20,590 --> 00:42:22,420 Ikoon om die leser se het nie begin draai. 862 00:42:22,420 --> 00:42:27,050 Ek het nie iewers heen te gaan, en dit is letterlik, want ek het gesê terugkeer Vals. 863 00:42:27,050 --> 00:42:31,534 Terug Vals kortsluitings of stop die verstek gedrag van 'n vorm. 864 00:42:31,534 --> 00:42:33,700 Sodat dan laat ons met hierdie een laaste vraag. 865 00:42:33,700 --> 00:42:34,764 Wat beteken Groet doen? 866 00:42:34,764 --> 00:42:36,680 Wel, Groet glo noem 'n funksie genoem 867 00:42:36,680 --> 00:42:39,250 Alert, gaan in een lang argument wat 868 00:42:39,250 --> 00:42:43,950 die gevolg van concatenating saam om 'n n klomp van die substrings, hello komma ruimte, 869 00:42:43,950 --> 00:42:45,810 dan wat hierdie terugkeer. 870 00:42:45,810 --> 00:42:51,490 So dokument is soos 'n globale veranderlike wat die wortel van die boom, 871 00:42:51,490 --> 00:42:55,560 roep 'n spesiale funksie, anders nou bekend as 'n metode. 872 00:42:55,560 --> 00:42:57,650 'N funksie wat binnekant van 'n veranderlike is 873 00:42:57,650 --> 00:42:59,640 bekend as 'n metode in plaas van 'n funksie. 874 00:42:59,640 --> 00:43:01,570 >> So kry element deur ID. 875 00:43:01,570 --> 00:43:03,940 Wat element doen jy wil te kry deur sy ID? 876 00:43:03,940 --> 00:43:06,970 Haal unquote naam en dan spesifiek waardeer. 877 00:43:06,970 --> 00:43:12,000 So met ander woorde, wat die kode eenvoudig bevind dat die teks veld wie ID is die naam 878 00:43:12,000 --> 00:43:13,380 en dan kry sy waarde. 879 00:43:13,380 --> 00:43:16,460 So as ek dit te verander en sê Davin plaas van Dawid, 880 00:43:16,460 --> 00:43:20,670 en klik op stuur, nou is ons 'n groet vir Davin. 881 00:43:20,670 --> 00:43:22,890 >> Alle reg, sodat alles goed en wel. 882 00:43:22,890 --> 00:43:25,480 Maar laat ons kyk of ons kan maak dit 'n bietjie skoner aangesien net 883 00:43:25,480 --> 00:43:28,190 kode skryf soos dit is algemeen gaan frons word op. 884 00:43:28,190 --> 00:43:30,060 Dit gaan lyk vreesaanjaend. 885 00:43:30,060 --> 00:43:32,330 Maar wat is die eerste verskil wat jy hier kennis 886 00:43:32,330 --> 00:43:35,970 in hierdie weergawe, behalwe die naam verander in DOM een? 887 00:43:35,970 --> 00:43:41,110 Wat struktureel anders lyk oor hierdie teenoor die ander? 888 00:43:41,110 --> 00:43:41,932 Ja? 889 00:43:41,932 --> 00:43:43,890 Publiek: Is die vorm op top van die script nou? 890 00:43:43,890 --> 00:43:46,570 David Malan: Ja, die vorm is op die top van die script vir 'n paar snaakse rede. 891 00:43:46,570 --> 00:43:48,736 So wat is die eerste ding wat wat spring uit by my ook. 892 00:43:48,736 --> 00:43:50,990 En gelukkig ten minste, hierdie deel is identies. 893 00:43:50,990 --> 00:43:53,470 Dus is die enigste ding wat lyk om anders te wees is dit. 894 00:43:53,470 --> 00:43:55,296 >> So hier is wat netjies oor JavaScript 2. 895 00:43:55,296 --> 00:43:57,420 En dit maak dit moeilik om te verstaan ​​met die eerste oogopslag, 896 00:43:57,420 --> 00:44:00,670 veral vir finale projekte indien jy kyk na voorbeeld kode online, 897 00:44:00,670 --> 00:44:04,200 maar dit kom neer op 'n paar basiese sintaktiese funksies. 898 00:44:04,200 --> 00:44:06,230 Hier is weer eens dat globale veranderlike dokument. 899 00:44:06,230 --> 00:44:09,540 Hier is weer daardie metode of funksie wat sê jy die element deur ID. 900 00:44:09,540 --> 00:44:11,570 Hierdie keer het ek wil kry die ID genoem demo. 901 00:44:11,570 --> 00:44:12,490 Waar is dit? 902 00:44:12,490 --> 00:44:15,400 Dit is blykbaar reg Hier is die vorm self. 903 00:44:15,400 --> 00:44:20,010 >> En nou sien dat glo as ek terug te kry wat knoop van die boom wat 904 00:44:20,010 --> 00:44:22,940 verteenwoordig die vorm self, nie 'n teks veld, 905 00:44:22,940 --> 00:44:26,970 dit blyk dat vorm, wat knoop of reghoek van die boom, 906 00:44:26,970 --> 00:44:30,450 het wat ons sal 'n eiendom noem, baie, baie, baie soortgelyk 907 00:44:30,450 --> 00:44:35,390 in die gees van 'n struct in C. Dis net 'n lid data binnekant van die reghoek. 908 00:44:35,390 --> 00:44:38,300 >> So ek het die vorm hier, en ek heg, 909 00:44:38,300 --> 00:44:44,650 of ek toeken, sy op submit hanteerder of eerder op Stuur eiendom 910 00:44:44,650 --> 00:44:45,740 die volgende funksie. 911 00:44:45,740 --> 00:44:49,000 En dit is by verre die gekste ding tot dusver sintakties. 912 00:44:49,000 --> 00:44:53,610 Dit blyk in JavaScript en in PHP, en eerlik vir die saak in C, 913 00:44:53,610 --> 00:44:58,990 selfs al het ons dit nie doen nie, kan jy voeg naamlose, anonieme, of AKA lambda 914 00:44:58,990 --> 00:45:03,000 funksies wat nie 'n naam maar kan tog genoem word. 915 00:45:03,000 --> 00:45:07,050 >> So wat ek hier doen, is ek toeken hierdie On Stuur eiendom, wat 916 00:45:07,050 --> 00:45:14,330 is die binnekant van die node van my DOM boom, 'n funksie, funksie wyser as jy wil. 917 00:45:14,330 --> 00:45:16,310 Dit funksie het geen noem, maar dit beteken nie 918 00:45:16,310 --> 00:45:19,110 saak nie, want ons sal sien in 'n oomblik hoe om dit te noem. 919 00:45:19,110 --> 00:45:21,780 Wanneer hierdie funksie geroep word, hierdie kode sal uitgevoer word, dan 920 00:45:21,780 --> 00:45:24,210 valse teruggestuur, net soos voorheen. 921 00:45:24,210 --> 00:45:25,800 >> Maar let op wat ek gedoen het. 922 00:45:25,800 --> 00:45:27,830 Op hierdie punt in die storie, ek het 'n vorm. 923 00:45:27,830 --> 00:45:30,190 Dit het 'n unieke ID genoem demo. 924 00:45:30,190 --> 00:45:33,740 Hier het ek 'n script tag wat voer die volgende kode. 925 00:45:33,740 --> 00:45:37,720 Dit heg aan daardie knoop in die boom is dit op submit 926 00:45:37,720 --> 00:45:40,260 eiendom om hierdie funksie hier. 927 00:45:40,260 --> 00:45:44,310 En net uit die aard van hoe blaaiers werk, toe ek kliek nou dien of druk Enter, 928 00:45:44,310 --> 00:45:45,889 daardie funksie gaan genoem te raak. 929 00:45:45,889 --> 00:45:48,680 Dit maak nie 'n naam, want wat dit nodig het die klink omgee wat dit genoem. 930 00:45:48,680 --> 00:45:52,540 Die enigste keer dat dit ooit gaan kry genoem is toe ek stuur die vorm. 931 00:45:52,540 --> 00:45:55,130 Daar is geen rede vir my, die menslike ontwikkelaar, 932 00:45:55,130 --> 00:45:57,330 eintlik noem dit elders. 933 00:45:57,330 --> 00:46:00,720 >> Nou net as 'n teaser, asof dit nie omgee buig genoeg, 934 00:46:00,720 --> 00:46:03,330 Ons kan selfs maak hierdie lyk meer kriptiese behulp 935 00:46:03,330 --> 00:46:05,850 'n super gewilde biblioteek genoem jQuery. 936 00:46:05,850 --> 00:46:08,760 In werklikheid jQuery en JavaScript dikwels conflated. 937 00:46:08,760 --> 00:46:12,790 En wat ons gaan doen op Woensdag is begin die gebruik van hierdie taal en die biblioteke 938 00:46:12,790 --> 00:46:16,030 toenemend asynchrone te bou en dinamiese programme 939 00:46:16,030 --> 00:46:18,950 soos kaart kry aansoeke, aansoeke 940 00:46:18,950 --> 00:46:22,360 dat die webblad in die werklike werk tyd, baie soos Facebook of Gchat 941 00:46:22,360 --> 00:46:27,130 doen, en nie meer beperk om onsself te slaan Stuur 'n get of net post 942 00:46:27,130 --> 00:46:27,630 alleen. 943 00:46:27,630 --> 00:46:29,055 So ek sal jy sien op Woensdag. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [Speel van musiek] 946 00:46:35,550 --> 00:48:09,728