1 00:00:00,000 --> 00:00:01,940 >> [Musikken afspilles] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID MALAN: Dette er CS 50, og dette er begyndelsen af ​​uge ni. 4 00:00:14,620 --> 00:00:18,240 Og hvad vi troede, vi ville gøre i dag, er ikke kun lukke kapitlet om sidste uges 5 00:00:18,240 --> 00:00:22,670 materiale, hvor vi fokuserede på server side webprogrammering med PHP og SQL, 6 00:00:22,670 --> 00:00:23,549 nogle database stuff. 7 00:00:23,549 --> 00:00:25,590 Vi vil tale om lidt af sikkerhed i dag og derefter 8 00:00:25,590 --> 00:00:29,590 overgang til en klient side programmering sprog er kendt som JavaScript. 9 00:00:29,590 --> 00:00:31,330 Men først, nogle forløsning. 10 00:00:31,330 --> 00:00:35,030 >> Du husker måske, at der på Onsdag Jeg fastsat 11 00:00:35,030 --> 00:00:37,550 at skrive en hjemmeside, tog i brugerens input 12 00:00:37,550 --> 00:00:41,120 ved en HTML-form og lagres derefter at brugeren indtaste navne, telefon 13 00:00:41,120 --> 00:00:43,124 numre, og mobiltelefon luftfartsselskaber i databasen. 14 00:00:43,124 --> 00:00:45,540 Og så havde jeg en lille kommando line script skrevet i PHP 15 00:00:45,540 --> 00:00:47,956 der skulle gentage over rækkerne i databasen 16 00:00:47,956 --> 00:00:49,400 og sende SMS-beskeder. 17 00:00:49,400 --> 00:00:53,870 Trods adskillige, flere forsøg, vi fik ikke at arbejderklassen ved udgangen. 18 00:00:53,870 --> 00:00:57,820 >> Så jeg brugt hele denne uge arbejder på denne kode for at få os forbi det punkt 19 00:00:57,820 --> 00:01:01,220 hvor vi slap, hvorved alle Jeg fik ved udgangen onsdag 20 00:01:01,220 --> 00:01:05,500 var denne tekstbesked fra Margo som jeg kæmpede, 21 00:01:05,500 --> 00:01:09,940 efterfulgt af en SMS-besked fra en anden klassekammerat, Du har fået denne David. 22 00:01:09,940 --> 00:01:14,030 Efterfulgt af denne ene, vidunderligt opmuntrende. 23 00:01:14,030 --> 00:01:15,840 Holdt på igangværende, meget opmuntrende. 24 00:01:15,840 --> 00:01:20,960 Jeg fik næsten det indtil then-- og det er den tone, vi endte på onsdag. 25 00:01:20,960 --> 00:01:25,850 Og så faktisk måske min favorit, et øjeblik senere, kom ind. 26 00:01:25,850 --> 00:01:27,000 Damn Live Stream. 27 00:01:27,000 --> 00:01:31,080 >> Så i dag, vi løse dette med en hurtig se på, hvad jeg har gjort siden. 28 00:01:31,080 --> 00:01:35,440 Så alt dette kodeks er til rådighed online fra sidste uges, uge ​​otte, 29 00:01:35,440 --> 00:01:36,300 kildekode. 30 00:01:36,300 --> 00:01:39,425 Og du vil se, at jeg gik igennem, og jeg faktisk ryddet op tingene en smule. 31 00:01:39,425 --> 00:01:42,080 Jeg introducerede et par andre funktioner i en SQL-database. 32 00:01:42,080 --> 00:01:45,300 For eksempel, snarere end bare gøre bærer af var char 33 00:01:45,300 --> 00:01:47,310 som jeg tror, ​​jeg gjorde på flue i sidste uge. 34 00:01:47,310 --> 00:01:49,820 Jeg stedet definerede det som hvad der kaldes en enum. 35 00:01:49,820 --> 00:01:53,310 >> Og nogle af jer måske har set denne som vi udforsket C. Enum er faktisk 36 00:01:53,310 --> 00:01:56,820 en funktion af C, hvor man kan opregne en hel bunke af konstanter 37 00:01:56,820 --> 00:01:59,640 og tildele dem automatiske værdier, som en, to, tre, fire 38 00:01:59,640 --> 00:02:01,330 uden at skulle hårde kodenumre. 39 00:02:01,330 --> 00:02:04,780 Så SQL understøtter den samme, idet såfremt du har en database felt, at du kun 40 00:02:04,780 --> 00:02:09,389 ønsker at tage på en af ​​finite værdier, kan du bogstaveligt talt angive det 41 00:02:09,389 --> 00:02:13,120 som jeg har gjort der for fire populære amerikanske cellphone luftfartsselskaber. 42 00:02:13,120 --> 00:02:13,819 >> Så jeg gjorde det. 43 00:02:13,819 --> 00:02:16,610 Og jeg foretaget en række ændringer som godt, hvoraf de vigtigste 44 00:02:16,610 --> 00:02:20,090 var at få e-mail arbejde, fordi tilbagekaldelse, at dette program har påberåbt sig som 45 00:02:20,090 --> 00:02:23,470 generelt kaldes en mail til SMS gateway, som er lige 46 00:02:23,470 --> 00:02:27,670 en fancy måde at sige, at Verizon, og AT & T, og andre folk støtter en server, 47 00:02:27,670 --> 00:02:30,740 hvorved, hvis den modtager email, det konverterer det til SMS 48 00:02:30,740 --> 00:02:33,290 og sender en tekst besked til en anden persons telefon. 49 00:02:33,290 --> 00:02:37,010 Så hvis jeg gjorde det korrekt, her er en ny og forbedret form, 50 00:02:37,010 --> 00:02:39,259 der kommer til at tale med ny og forbedret kode, som 51 00:02:39,259 --> 00:02:40,300 du kan spille med online. 52 00:02:40,300 --> 00:02:44,140 Og det vil forhåbentlig gøre min telefon bip på bare et øjeblik. 53 00:02:44,140 --> 00:02:47,240 >> Så det første, vil jeg skrive mit navn. 54 00:02:47,240 --> 00:02:51,400 For det andet, jeg ikke vil at gøre det denne gang. 55 00:02:51,400 --> 00:02:53,920 Jeg har tænkt mig at gøre Undersøg Element. 56 00:02:53,920 --> 00:02:56,710 Og dette er blot en lille ting, så jeg ikke 57 00:02:56,710 --> 00:02:59,250 oprette timers postproduktion arbejde som jeg gjorde sidste gang. 58 00:02:59,250 --> 00:03:02,300 Der nu er mit telefonnummer. 59 00:03:02,300 --> 00:03:03,560 >> Jeg vælger Verizon. 60 00:03:03,560 --> 00:03:10,260 Og her, lad os slå denne mikrofon her, og sigter dette på min telefon her. 61 00:03:10,260 --> 00:03:13,130 Jeg har tænkt mig at klikke på Register, som bør forhåbentlig 62 00:03:13,130 --> 00:03:14,530 sætte det ind i databasen. 63 00:03:14,530 --> 00:03:16,780 Nu vil jeg gå til kommandolinje program, som 64 00:03:16,780 --> 00:03:20,825 tilbagekaldelse blev kaldt dot skråstreg tekst, og krydse dine fingre. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 Her går vi. 67 00:03:26,527 --> 00:03:27,501 >> [Telefonnummer dings] 68 00:03:27,501 --> 00:03:28,962 >> [Applaus] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID MALAN: Så sjovere end denne-- det er sjovt, selvfølgelig, hvis jeg kommer ind i det. 71 00:03:34,940 --> 00:03:38,004 Men det er mere sjovt, tænkte jeg, hvis vi skabt en af ​​disse film øjeblikke 72 00:03:38,004 --> 00:03:40,420 hvor som noget virkelig slemt er sket i verden, 73 00:03:40,420 --> 00:03:42,860 og ligesom alle NSA folks mobiltelefoner begynder at bippe 74 00:03:42,860 --> 00:03:44,860 med tekstbeskeder gøre dem opmærksomme på dette faktum. 75 00:03:44,860 --> 00:03:47,026 Så jeg troede, vi ville forsøge at genskabe den samme her, 76 00:03:47,026 --> 00:03:49,610 hvorved ikke bruger en database, I stedet på forhånd 77 00:03:49,610 --> 00:03:51,490 skrev et program, der ligner dette. 78 00:03:51,490 --> 00:03:53,660 >> Dette er en index.php-- og jeg sætter denne kode online 79 00:03:53,660 --> 00:03:56,710 som well-- der tilsyneladende bare gør form.php, 80 00:03:56,710 --> 00:04:00,990 ved hjælp af en MVC stil paradigme, vi tale om mere detaljeret i problem sæt 81 00:04:00,990 --> 00:04:01,650 syv. 82 00:04:01,650 --> 00:04:02,910 Denne formular er temmelig simpel. 83 00:04:02,910 --> 00:04:06,634 Det kommer til at underkaste sig en fil kaldet here.php via posten. 84 00:04:06,634 --> 00:04:09,300 Og det er tilsyneladende vil bede efter et navn og et telefonnummer, 85 00:04:09,300 --> 00:04:11,400 og derefter via såkaldte Vælg menu, det er 86 00:04:11,400 --> 00:04:14,250 vil give dig mindst fire populære amerikanske cellphone luftfartsselskaber, 87 00:04:14,250 --> 00:04:17,470 og derefter give dig mulighed for effektivt tage fremmøde ved at klikke her. 88 00:04:17,470 --> 00:04:20,471 >> Og her, i mellemtiden, vil låne nogle af koden fra sidste gang. 89 00:04:20,471 --> 00:04:22,553 Og hvis du bare skimme dette, vil du se, at der er 90 00:04:22,553 --> 00:04:23,900 en hel masse fejlkontrol. 91 00:04:23,900 --> 00:04:26,640 Men skønheden i slutningen er, at vi ikke skrive til en database i dag. 92 00:04:26,640 --> 00:04:29,130 Vi holder det simpelt og bare sende forhåbentlig 93 00:04:29,130 --> 00:04:32,190 en SMS-besked via funktion jeg skrev løbet af de seneste par dage opkald 94 00:04:32,190 --> 00:04:36,270 Tekst, som er i funktioner. php, hvilket igen er tilgængelig online. 95 00:04:36,270 --> 00:04:38,210 >> Så hvis du gerne vil deltage i dette. 96 00:04:38,210 --> 00:04:40,190 Vi kommer ikke til at være lagre noget. 97 00:04:40,190 --> 00:04:43,809 Gå til denne URL her i realtid. 98 00:04:43,809 --> 00:04:46,850 Må ikke indsende det bare endnu, men lad os se, om vi kan få en af ​​disse film 99 00:04:46,850 --> 00:04:49,830 øjeblikke, hvor alles cellphone begynder at bippe, forhåbentlig bare 100 00:04:49,830 --> 00:04:53,580 når dette år i modsætning til i 2011 hvor det gik grueligt galt. 101 00:04:53,580 --> 00:04:58,910 Og når du går til denne adresse, bør du se en super simpel formular 102 00:04:58,910 --> 00:05:03,884 at hvis du har et navn, en mobiltelefon nummer og en mobiltelefon bærer, 103 00:05:03,884 --> 00:05:06,175 matcher listen der, gå videre og udfyld formularen. 104 00:05:06,175 --> 00:05:07,880 Men du behøver ikke ramt indsende endnu. 105 00:05:07,880 --> 00:05:10,850 >> Formularen kommer til at se sådan ud. 106 00:05:10,850 --> 00:05:13,660 Værsgo og skriv dit navn, telefonnummer. 107 00:05:13,660 --> 00:05:17,670 OOP, nogen kommer foran kurven. 108 00:05:17,670 --> 00:05:18,170 Det er OK. 109 00:05:18,170 --> 00:05:19,340 OK, alle har udfyldt formularen. 110 00:05:19,340 --> 00:05:21,400 Dette bør arbejde på en telefon, også, hvis du ønsker. 111 00:05:21,400 --> 00:05:23,695 Okay, på dine karakterer, få sæt, gå. 112 00:05:23,695 --> 00:05:24,195 Hit her. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 Hvad? 115 00:05:27,775 --> 00:05:31,140 116 00:05:31,140 --> 00:05:31,640 Nej. 117 00:05:31,640 --> 00:05:34,410 118 00:05:34,410 --> 00:05:40,250 Jeg sværger til Gud, testede jeg dette flere gange i dag. 119 00:05:40,250 --> 00:05:41,720 Du fik det? 120 00:05:41,720 --> 00:05:43,145 >> [Indskyde VOICES] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID MALAN: OK, brugerfejl måske. 123 00:05:49,560 --> 00:05:50,550 Det er to. 124 00:05:50,550 --> 00:05:53,300 Det virkede for to ud af en få hundrede, tre, fire. 125 00:05:53,300 --> 00:05:55,940 OK, det er godt. 126 00:05:55,940 --> 00:05:58,520 Fire ud af fem for Korrekthed hvordan omkring. 127 00:05:58,520 --> 00:05:59,810 >> Så hvad skete der lige? 128 00:05:59,810 --> 00:06:02,727 Så formentlig, uden at se din skærme, hvorfor kunne det have errored? 129 00:06:02,727 --> 00:06:05,518 Det er nok, at vi var lige forsøger at gøre for mange forbindelser 130 00:06:05,518 --> 00:06:08,110 Harvard mailserver alle på gang fra den samme IP-adresse. 131 00:06:08,110 --> 00:06:10,740 Jeg er bare gætte da jeg gjorde ikke har den luksus test 132 00:06:10,740 --> 00:06:13,220 denne kode med nogle 300 mennesker i forvejen 133 00:06:13,220 --> 00:06:16,040 men for nu indser, at at mindst bør 134 00:06:16,040 --> 00:06:18,250 har fået jobbet gjort denne gang. 135 00:06:18,250 --> 00:06:22,880 >> Okay, så hvorfor er alt dette mere relevant for, hvad der foregår? 136 00:06:22,880 --> 00:06:24,900 Nå først, en hurtig par meddelelser. 137 00:06:24,900 --> 00:06:29,350 Så en, hvis du gerne vil tilslutte Chang, og Nick, og andre til frokost denne fredag, 138 00:06:29,350 --> 00:06:32,400 gøre RSVP på det sædvanlige URL der. 139 00:06:32,400 --> 00:06:35,650 Hvis du tænker på at koncentrere i eller laver en sekundær i CS, 140 00:06:35,650 --> 00:06:38,941 uanset om du er en sophomore eller freshman, eller endda junior eller senior på dette punkt 141 00:06:38,941 --> 00:06:42,490 og kan stadig klemme i kurserne, indse, at den tekniske skole 142 00:06:42,490 --> 00:06:45,620 samler gratis Ben og Jerrys is og rådgivning 143 00:06:45,620 --> 00:06:48,910 denne onsdag kort efter klassen 4:00 PM i CS bygning 144 00:06:48,910 --> 00:06:49,771 på Maxwell Dworkin. 145 00:06:49,771 --> 00:06:51,520 Hvis dette er for hurtig på skærmen, bare gå 146 00:06:51,520 --> 00:06:55,260 at cs50.harvard.edu for en link til Facebook-event 147 00:06:55,260 --> 00:06:57,140 hvor du kan se flere detaljer. 148 00:06:57,140 --> 00:07:01,390 >> I mellemtiden, jeg troede, jeg ville korrigere en anden ting jeg goofed på onsdag. 149 00:07:01,390 --> 00:07:04,400 Viser sig, at Mark ID på Facebook var ikke tre. 150 00:07:04,400 --> 00:07:05,230 Det var fire. 151 00:07:05,230 --> 00:07:08,330 Slår ud af at han havde mere test konti, end jeg husker. 152 00:07:08,330 --> 00:07:12,400 Men hvad dette følte ligesom en lejlighed at gøre, er at trække op en URL som denne. 153 00:07:12,400 --> 00:07:16,680 >> Så det viser sig, at Facebook har en API Application Programming Interface, 154 00:07:16,680 --> 00:07:20,070 som er en mekanisme, hvorved man kan anmode om data programmatisk 155 00:07:20,070 --> 00:07:24,480 på Facebook og komme tilbage maskine læsbare oplysninger, ikke websider 156 00:07:24,480 --> 00:07:28,690 men bare rå tekst, noget kaldet JavaScript Object Notation. 157 00:07:28,690 --> 00:07:32,150 Og i virkeligheden, hvis jeg besøger dette URL, og zoome ind, som standard, 158 00:07:32,150 --> 00:07:34,960 dette er Mark offentligt tilgængelig information. 159 00:07:34,960 --> 00:07:37,430 >> Og interessant detalje her er bare, at hans ID 160 00:07:37,430 --> 00:07:40,670 er faktisk nummer fire, som jeg realiseres, så snart jeg gjorde dette. 161 00:07:40,670 --> 00:07:44,260 Du kan gøre dette selv, hvis du kender din Facebook-brugernavn, hvis du har en. 162 00:07:44,260 --> 00:07:45,440 Bare skriv det op toppen er der. 163 00:07:45,440 --> 00:07:46,640 Og intet af dette er privat. 164 00:07:46,640 --> 00:07:48,670 Jeg er bare at gøre dette selv i inkognitotilstand. 165 00:07:48,670 --> 00:07:49,900 Så jeg ikke engang logget ind. 166 00:07:49,900 --> 00:07:54,440 Og du ser, at jeg tilsyneladende var brugernummer 6.454 167 00:07:54,440 --> 00:07:56,480 på Facebook, som ikke er alt for dårlig i disse dage. 168 00:07:56,480 --> 00:07:59,900 Så alligevel, vil du også se yderligere oplysninger der. 169 00:07:59,900 --> 00:08:02,150 >> Og nyttigt aspekt heraf er, at man 170 00:08:02,150 --> 00:08:06,890 kunne skrive din egen software, en eller anden måde integrerer data som denne 171 00:08:06,890 --> 00:08:08,170 ind i din egen applikation. 172 00:08:08,170 --> 00:08:10,650 Du kan give brugere til logge ind på din hjemmeside, 173 00:08:10,650 --> 00:08:14,190 ikke bruger deres egne brugerdefinerede brugernavn og kodeord, men måske deres Facebook login 174 00:08:14,190 --> 00:08:16,170 og få oplysninger selv om deres venner, 175 00:08:16,170 --> 00:08:18,740 hvis de godkender sådan eller lignende. 176 00:08:18,740 --> 00:08:21,430 Så bemærk, at CS50, også, har nogle af sine egne API'er 177 00:08:21,430 --> 00:08:24,620 én til kursuskatalog data nogle for hugs menuer i spisesalen 178 00:08:24,620 --> 00:08:26,730 haller, alle af bygninger og steder 179 00:08:26,730 --> 00:08:30,930 på campus, vi har en API for såvel at du kan forespørge på samme måde og få 180 00:08:30,930 --> 00:08:35,520 tilbage tekstlige data, som du kan integrere ind i en PHP eller JavaScript, eller endog, 181 00:08:35,520 --> 00:08:38,320 om end mindre hyppigt, en C baseret afgangsprojekt. 182 00:08:38,320 --> 00:08:41,190 >> Faktisk forud for den endelige projekt er et par milepæle. 183 00:08:41,190 --> 00:08:42,980 Du fik en e-mail fra os den anden dag. 184 00:08:42,980 --> 00:08:45,761 Indse, at forslaget skyldes denne kommende mandag. 185 00:08:45,761 --> 00:08:49,010 Det er ikke nødvendigvis bindende, men du behøver at modtage din undervisning stipendiater 186 00:08:49,010 --> 00:08:51,260 godkendelse før ændringer derefter. 187 00:08:51,260 --> 00:08:54,280 Og så videre er en række andre milepæle. 188 00:08:54,280 --> 00:08:56,542 >> Så for at drille dig, også, med nogle muligheder, 189 00:08:56,542 --> 00:08:58,250 vi har en masse disse hue pærer. 190 00:08:58,250 --> 00:09:01,190 Og nogle af jer nu har nogle af disse i dit kollegieværelse så godt. 191 00:09:01,190 --> 00:09:02,920 Og de har også en API. 192 00:09:02,920 --> 00:09:07,300 Så husker de binære pærer uger siden, at Dan Bradley og Ansel 193 00:09:07,300 --> 00:09:08,780 Duff skabt til os. 194 00:09:08,780 --> 00:09:12,560 De brugte en software interface til denne pære, som i øjeblikket 195 00:09:12,560 --> 00:09:15,232 er sluttet til strøm og derefter via trådløs 196 00:09:15,232 --> 00:09:17,690 er forbundet til en lille ting kaldet Bridge hernede, 197 00:09:17,690 --> 00:09:21,280 som en lille router proprietær til denne enhed. 198 00:09:21,280 --> 00:09:26,540 >> Men det viser sig, hvis jeg ved, hvordan man sende HTTP-beskeder, som vi alle gør nu, 199 00:09:26,540 --> 00:09:31,670 Jeg kan sende en besked som denne til at denne pære til at slå den til eller fra 200 00:09:31,670 --> 00:09:34,000 eller gøre et vilkårligt antal andre operationer på det. 201 00:09:34,000 --> 00:09:36,110 Bemærk, at det ikke er få, er det ikke skrive. 202 00:09:36,110 --> 00:09:37,760 Der er en anden kaldet put. 203 00:09:37,760 --> 00:09:39,630 Der er faktisk et par andre sådanne verber. 204 00:09:39,630 --> 00:09:42,920 Men bemærk at der er en sti der, slash API, skråstreg ny udvikler, 205 00:09:42,920 --> 00:09:44,990 slash lys, skråstreg én, skråstreg stat. 206 00:09:44,990 --> 00:09:49,060 >> Det er tilsyneladende kun den sti, at selskabet, Philips, 207 00:09:49,060 --> 00:09:51,640 besluttet, at du nødt til at slå med en HTTP-anmodning 208 00:09:51,640 --> 00:09:55,010 hvis du ønsker at ændre tilstanden af pæren ved hjælp af HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 Så opdager den tomme linje. 210 00:09:56,380 --> 00:10:00,170 Og så endelig, hvad der ligner form af et array af en slags, 211 00:10:00,170 --> 00:10:04,730 dette igen kommer til at hedde JavaScript Object Notation, eller Jason. 212 00:10:04,730 --> 00:10:08,000 Og hvad du ser her, er, at der er tre Nøgleværdiparrene. 213 00:10:08,000 --> 00:10:09,115 >> Én nøgle kaldes på. 214 00:10:09,115 --> 00:10:10,990 Og dens værdi tilsyneladende kommer til at være sandt. 215 00:10:10,990 --> 00:10:13,612 Lysstyrken er 128, som er en slags int. 216 00:10:13,612 --> 00:10:15,820 Og derefter overgangen tid er nul, hvilket er åbenbart 217 00:10:15,820 --> 00:10:17,970 hvor lang tid det kommer til at tage at slå denne ting på. 218 00:10:17,970 --> 00:10:19,890 >> Så lige nu er denne pære er slukket. 219 00:10:19,890 --> 00:10:22,880 Men hvis jeg gør præcis denne-- lade mig gå til en lille snyde ark 220 00:10:22,880 --> 00:10:25,200 at Dan oprettet i advance-- og jeg har tænkt mig 221 00:10:25,200 --> 00:10:27,920 at gå videre og kopiere følgende kommando. 222 00:10:27,920 --> 00:10:30,200 Curl, som nogle af jer måske har forstået på CS50 223 00:10:30,200 --> 00:10:35,080 Diskuter er et hjælpeprogram ligesom Telnet sådan at du kan simulere HTTP-anmodninger, 224 00:10:35,080 --> 00:10:36,360 specifikt sætter. 225 00:10:36,360 --> 00:10:39,710 Jeg kan sende disse data, specifikt, hvad vi lige 226 00:10:39,710 --> 00:10:43,430 oplevede for et øjeblik siden specifikt til denne webadresse herovre. 227 00:10:43,430 --> 00:10:46,310 Og derefter Curl kommer til at håndtere alle de nødvendige headers 228 00:10:46,310 --> 00:10:47,600 og parsing der af. 229 00:10:47,600 --> 00:10:54,700 >> Så alt hvad jeg skal gøre, er at kopiere denne ind et terminal vindue og derefter trykke Enter. 230 00:10:54,700 --> 00:10:56,000 Og pæren går. 231 00:10:56,000 --> 00:10:59,060 Og det er alt sammen går igennem min computer trådløst 232 00:10:59,060 --> 00:11:01,960 måde ned til broen, som Derefter taler til denne pære. 233 00:11:01,960 --> 00:11:02,960 Jeg kan gøre noget andet. 234 00:11:02,960 --> 00:11:07,050 Jeg kan gøre denne ting gå rød f.eks. 235 00:11:07,050 --> 00:11:11,040 Jeg kan for eksempel gøre denne ting gå grøn. 236 00:11:11,040 --> 00:11:12,220 Jeg kan gøre det gå blå. 237 00:11:12,220 --> 00:11:14,760 >> Og mærke i hver af disse forekomster, alle, at jeg ændrer 238 00:11:14,760 --> 00:11:18,540 er den såkaldte nuance værdi faktisk give det lidt farve. 239 00:11:18,540 --> 00:11:20,320 Så lad mig indsætte denne ene i så godt. 240 00:11:20,320 --> 00:11:21,000 Nu er det blå. 241 00:11:21,000 --> 00:11:24,672 >> Og du kan gøre endnu mere avanceret ting where-- lad os gå til grøn. 242 00:11:24,672 --> 00:11:26,630 Og jeg kunne gøre dette af kursus med min egen kode. 243 00:11:26,630 --> 00:11:30,670 Men selv API selv understøtter funky operationer 244 00:11:30,670 --> 00:11:35,510 som dette, vil der nu gider os for de næste 30 sekunder. 245 00:11:35,510 --> 00:11:39,170 >> Så det er en forsmag på, hvad du måske gøre med et API, denne ene involverer 246 00:11:39,170 --> 00:11:40,010 pærer. 247 00:11:40,010 --> 00:11:42,510 Bemærk, at CS50 har et par par af Google Glass, hvis du vil 248 00:11:42,510 --> 00:11:45,380 gerne at tackle noget sammen disse linjer, Arduino Uno, som 249 00:11:45,380 --> 00:11:48,670 er bittesmå computere, i det væsentlige, på en lille printplade 250 00:11:48,670 --> 00:11:50,470 at du kan tilslutte ledninger og andet 251 00:11:50,470 --> 00:11:52,732 til og faktisk kontrol Deres virkelige verden miljø. 252 00:11:52,732 --> 00:11:54,940 Og så er der et par af nye legetøj, som vi har. 253 00:11:54,940 --> 00:11:59,294 Denne ene bogstaveligt talt bare ankom anden dag med posten, en Myo armbind. 254 00:11:59,294 --> 00:12:01,710 Og jeg troede, at det er en måde at få dig ophidset om projekter 255 00:12:01,710 --> 00:12:03,720 at du kan bruge med denne hardware ville 256 00:12:03,720 --> 00:12:08,900 være at spille dette kort klip at de bruger til at drille folk 257 00:12:08,900 --> 00:12:10,500 at vi nu lever i fremtiden. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [Musikken afspilles] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID MALAN: Så på blot et par uger, du også kan være så cool på CS50 fair. 262 00:13:37,109 --> 00:13:39,150 Anden enhed, som vi har en masse, at vi er 263 00:13:39,150 --> 00:13:42,090 glade for at låne ud til projekter kaldes en motion controller. 264 00:13:42,090 --> 00:13:45,030 Dette er en lille USB-enhed du opretter forbindelse til en computer, 265 00:13:45,030 --> 00:13:47,520 giver dig mulighed for at interagere med din bærbare computer, Mac eller PC, 266 00:13:47,520 --> 00:13:51,570 som om du havde ligesom en Xbox Kinect og faktisk gøre fysiske bevægelser meget 267 00:13:51,570 --> 00:13:54,509 ligesom vi ser i dette vision for fremtiden. 268 00:13:54,509 --> 00:13:56,505 >> [Musikken afspilles] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID MALAN: Så selvom du har ingen idé om, hvordan sådan noget 271 00:15:06,260 --> 00:15:10,050 kunne muligvis være opfundet eller arbejde på hardware-niveau, uanset. 272 00:15:10,050 --> 00:15:13,520 Selv efter blot et par måneder af CS50, og en forståelse af programmering 273 00:15:13,520 --> 00:15:19,460 mere generelt, og webprogrammering mere nylig, og så også API'er, og HTTP, 274 00:15:19,460 --> 00:15:21,830 du har adgang via software API'er, hvis du 275 00:15:21,830 --> 00:15:24,680 ønsker at låne en af ​​disse enheder til rent faktisk at tale med det 276 00:15:24,680 --> 00:15:27,180 og ikke behøver at bekymre sig om den underliggende implementering 277 00:15:27,180 --> 00:15:30,220 detaljer, som er helt overensstemmelse med denne opfattelse af lagdeling 278 00:15:30,220 --> 00:15:33,610 en abstraktion, som vi har set over hele semesteret. 279 00:15:33,610 --> 00:15:37,990 >> Så også i weekenden, så et par stykker af nyheder. 280 00:15:37,990 --> 00:15:40,640 Gå først, gå til seminarer, hvis du gerne vil lære noget 281 00:15:40,640 --> 00:15:42,160 mere på et vilkårligt antal emner. 282 00:15:42,160 --> 00:15:43,340 Se URL'en der. 283 00:15:43,340 --> 00:15:45,890 Og denne ene blev sendt til mig ved Chang, hvem du kender, 284 00:15:45,890 --> 00:15:47,850 hvem der udskriver vores hær af elefanter. 285 00:15:47,850 --> 00:15:49,910 Og det var en overskrift som følger. 286 00:15:49,910 --> 00:15:51,280 Jeg er rædselsslagen for mit nye TV. 287 00:15:51,280 --> 00:15:54,301 Hvorfor jeg er bange for at slå denne ting på og du ville være for. 288 00:15:54,301 --> 00:15:56,050 Så vi er nu på det pege i semesteret, 289 00:15:56,050 --> 00:15:58,860 også, hvor selv hvis du har den mindste forståelse 290 00:15:58,860 --> 00:16:02,620 hvordan nettet fungerer, og HTTP, og sikkerhed, ting som dette 291 00:16:02,620 --> 00:16:03,980 bør begynde at fange din interesse. 292 00:16:03,980 --> 00:16:07,450 Men også, vil du forstå hvorvidt disse ting er eller ikke 293 00:16:07,450 --> 00:16:08,430 egentlige trusler. 294 00:16:08,430 --> 00:16:10,940 >> Så jeg tog et par uddrag fra denne artikel her. 295 00:16:10,940 --> 00:16:12,540 Og historien er som følger. 296 00:16:12,540 --> 00:16:14,300 Jeg er nu ejer af en ny Smart TV, som 297 00:16:14,300 --> 00:16:18,470 lover at levere streaming multimedieindhold, spil, app, 298 00:16:18,470 --> 00:16:21,450 sociale medier og internet browsing, oh og TV også. 299 00:16:21,450 --> 00:16:24,410 Det eneste problem er, at jeg nu bange for at bruge det, siger forfatteren. 300 00:16:24,410 --> 00:16:29,592 Du ville være, også, hvis du læser igennem 46 side privacy policy til dit TV. 301 00:16:29,592 --> 00:16:31,800 Mængden af ​​data denne ting indsamler er overvældende. 302 00:16:31,800 --> 00:16:35,710 Den logger hvor, hvornår, hvordan og hvor længe du bruger TV'et. 303 00:16:35,710 --> 00:16:38,190 Det sætter tracking cookies, som vi har diskuteret, 304 00:16:38,190 --> 00:16:40,560 og beacons designet at opdage, når du har 305 00:16:40,560 --> 00:16:43,185 set bestemt indhold eller en særlig e-mail 306 00:16:43,185 --> 00:16:45,230 hvis du ønsker at tjekke e-mail på dit TV. 307 00:16:45,230 --> 00:16:48,430 Den registrerer de programmer, du bruge de websteder, du besøger, 308 00:16:48,430 --> 00:16:52,280 og hvordan du interagerer med indhold, gør alt dette via din Smart TV. 309 00:16:52,280 --> 00:16:55,470 Det er også, creepier yet-- det er min addition-- 310 00:16:55,470 --> 00:16:58,140 har et indbygget kamera med ansigtsgenkendelse. 311 00:16:58,140 --> 00:17:01,010 >> Formålet er at give gestus kontrol til TV 312 00:17:01,010 --> 00:17:05,490 og gøre det muligt for dig at logge på personlig konto ved hjælp af dit ansigt. 313 00:17:05,490 --> 00:17:08,940 På opsiden, billederne er gemt på tv i stedet for uploadet 314 00:17:08,940 --> 00:17:09,940 til en corporate server. 315 00:17:09,940 --> 00:17:12,520 På negativsiden internettet forbindelse gør hele TV 316 00:17:12,520 --> 00:17:14,811 sårbare over for hackere, der have demonstreret evne 317 00:17:14,811 --> 00:17:16,700 at tage fuld kontrol over maskinen. 318 00:17:16,700 --> 00:17:20,880 >> Mere bekymrende, som om det ikke var smart nok, er mikrofonen. 319 00:17:20,880 --> 00:17:23,599 TV kan prale af en stemme feature genkendelse 320 00:17:23,599 --> 00:17:26,859 der tillader seerne til at styre skærmen med stemmekommandoer. 321 00:17:26,859 --> 00:17:30,290 Men tjenesten leveres med en temmelig ildevarslende advarsel. 322 00:17:30,290 --> 00:17:33,030 Vær opmærksom på, at hvis dine talte ord omfatter 323 00:17:33,030 --> 00:17:36,210 personlige eller andre følsomme information, at information 324 00:17:36,210 --> 00:17:40,310 vil være blandt de indsamlede data og overføres til en tredjepart. 325 00:17:40,310 --> 00:17:40,870 Fik det? 326 00:17:40,870 --> 00:17:45,860 Må ikke sige personlige eller følsomme kram foran dit TV. 327 00:17:45,860 --> 00:17:47,280 >> Så dette er faktisk for alvor. 328 00:17:47,280 --> 00:17:50,530 Og det er svært ikke at se, hvis du gå til Best Buy eller lignende til TV 329 00:17:50,530 --> 00:17:51,030 disse dage. 330 00:17:51,030 --> 00:17:52,540 De er alle smart i en eller anden måde. 331 00:17:52,540 --> 00:17:54,740 Og de får smartere og creepier. 332 00:17:54,740 --> 00:17:57,490 Og de er simpelthen at indsamle data på måder, som vi har talt om 333 00:17:57,490 --> 00:18:01,840 og derefter uploade den via HTTP eller en anden protokol til nogle server. 334 00:18:01,840 --> 00:18:05,720 >> Så dette var en sjov artiklen i dette online website 335 00:18:05,720 --> 00:18:08,940 her, som talte om en særlig fejl eller fejlagtige kode 336 00:18:08,940 --> 00:18:11,340 at vi faktisk kan binde i sidste uges diskussion. 337 00:18:11,340 --> 00:18:15,730 Så denne overskrift var som følger historien går her, 338 00:18:15,730 --> 00:18:18,720 Josh Breckman arbejdede for en selskab, der landede en kontrakt 339 00:18:18,720 --> 00:18:22,390 at udvikle et content management system eller CMS som de kaldes, 340 00:18:22,390 --> 00:18:24,380 for en temmelig stor regering hjemmeside. 341 00:18:24,380 --> 00:18:27,300 Meget af den involverede projekt udvikle et content management system 342 00:18:27,300 --> 00:18:29,840 så medarbejderne ville være stand til at opbygge og vedligeholde 343 00:18:29,840 --> 00:18:31,877 den stadigt skiftende indhold til deres site. 344 00:18:31,877 --> 00:18:34,210 Tingene gik temmelig godt for et par dage efter går live. 345 00:18:34,210 --> 00:18:37,020 Men på dag seks, tingene gik ikke så godt. 346 00:18:37,020 --> 00:18:39,500 Alt indhold på webstedet havde helt forsvundet. 347 00:18:39,500 --> 00:18:42,950 Og alle sider førte til standard, angiv indhold webside. 348 00:18:42,950 --> 00:18:43,810 Hovsa. 349 00:18:43,810 --> 00:18:46,080 Josh blev kaldt ind til undersøge og bemærket 350 00:18:46,080 --> 00:18:49,390 at en særlig generende eksterne IP-adresse havde 351 00:18:49,390 --> 00:18:53,380 gået i og udgår alle indholdet på systemet. 352 00:18:53,380 --> 00:18:56,290 >> IP-adressen ikke hørte til nogle oversøiske hacker bøjet 353 00:18:56,290 --> 00:18:58,340 på at ødelægge hjælpsom offentlig information. 354 00:18:58,340 --> 00:19:05,190 Det besluttede at googlebot.com, Googles helt egen web-crawling edderkop. 355 00:19:05,190 --> 00:19:06,010 Hovsa. 356 00:19:06,010 --> 00:19:09,150 Efter en smule forskning og scrambling rundt for at finde en noncorrupt backup, 357 00:19:09,150 --> 00:19:10,180 Josh fandt problemet. 358 00:19:10,180 --> 00:19:12,700 >> En bruger havde kopieret og indsat noget indhold fra en 359 00:19:12,700 --> 00:19:15,670 side til en anden, herunder en Edit Hyperlink 360 00:19:15,670 --> 00:19:17,577 at redigere indholdet på siden. 361 00:19:17,577 --> 00:19:20,160 Normalt ville dette ikke være et spørgsmål, da en ekstern bruger ville 362 00:19:20,160 --> 00:19:24,320 nødt til at indtaste et navn og en adgangskode, men CMS authentication system, 363 00:19:24,320 --> 00:19:27,520 login-system, ikke tager hensyn til 364 00:19:27,520 --> 00:19:30,980 sofistikerede hacking teknikker til Google Spider. 365 00:19:30,980 --> 00:19:31,700 Hovsa. 366 00:19:31,700 --> 00:19:33,610 >> Da det viser sig, Google Spider bruger ikke 367 00:19:33,610 --> 00:19:36,950 cookies, hvilket betyder, at det kan nemt omgå en check på 368 00:19:36,950 --> 00:19:39,840 er logget på cookie sæt at være falsk. 369 00:19:39,840 --> 00:19:42,620 Det betyder heller ikke opmærksomme på JavaScript, som normalt ville 370 00:19:42,620 --> 00:19:45,170 tilskynde og omdirigere brugere der er ikke logget ind. 371 00:19:45,170 --> 00:19:48,610 Det betyder dog følge hvert hyperlink på hver side, det finder, 372 00:19:48,610 --> 00:19:51,700 herunder dem med Slet side i titlen. 373 00:19:51,700 --> 00:19:52,650 Hovsa. 374 00:19:52,650 --> 00:19:56,070 >> Så hvad betyder det i mere tekniske men temmelig tilgængelige vilkår? 375 00:19:56,070 --> 00:19:58,340 Det betyder blot, at hele deres hjemmeside, 376 00:19:58,340 --> 00:20:02,287 de havde URL'er ikke ulig denne, der du kan se i problem sæt syv. 377 00:20:02,287 --> 00:20:04,620 Recall i problem sæt syv eller kender i problemet sæt syv 378 00:20:04,620 --> 00:20:06,411 at du er udfordret, bl.a. 379 00:20:06,411 --> 00:20:08,570 at sælge aktier på vegne af brugere. 380 00:20:08,570 --> 00:20:14,010 Men gennemførelsen af ​​denne funktion ved måde af får via hyperlinks i dit bruger 381 00:20:14,010 --> 00:20:16,880 interface, sandsynligvis ikke den smarteste idé 382 00:20:16,880 --> 00:20:20,300 fordi hvis dit websted er en eller anden måde tilgængelig enten af ​​et menneske 383 00:20:20,300 --> 00:20:23,577 hvem der klikker rundt eller købe en bot ligesom Googles eller en Spider 384 00:20:23,577 --> 00:20:26,160 som de kaldes, det er bare gennemgang af internettet forsøger at indeksere 385 00:20:26,160 --> 00:20:29,060 internettet som en søgemaskine, de kunne meget nemt 386 00:20:29,060 --> 00:20:31,340 hit via få denne form for URL. 387 00:20:31,340 --> 00:20:33,770 Og det er funktionelt svarende til i dette tilfælde, 388 00:20:33,770 --> 00:20:37,000 sælge alle aktier i Google. 389 00:20:37,000 --> 00:20:40,030 >> Nu ærligt, det er helt asinine at CMS 390 00:20:40,030 --> 00:20:43,240 Brugte JavaScript og cookies at gennemføre sin login-system 391 00:20:43,240 --> 00:20:47,100 og ikke at gøre det server side, som du fyre gøre og vil i pset 7-- 392 00:20:47,100 --> 00:20:49,940 der er en login.php file-- altid, altid, 393 00:20:49,940 --> 00:20:52,789 altid sikkerhed bør være udført på serveren side, 394 00:20:52,789 --> 00:20:56,080 ikke på klientsiden, fordi, som det artikel antyder, og du kan selv 395 00:20:56,080 --> 00:20:59,600 se på et tidspunkt, er det trivielt for en bruger, god eller dårlig, 396 00:20:59,600 --> 00:21:02,860 bare slukke JavaScript for ikke at nævne cookies. 397 00:21:02,860 --> 00:21:06,020 Så det er dit daglige WTF. 398 00:21:06,020 --> 00:21:07,970 >> Der er en mere, som er bare lidt skræmmende, 399 00:21:07,970 --> 00:21:11,360 så jeg vil hvis nævne det kun som et liv lektion. 400 00:21:11,360 --> 00:21:14,850 Når du bruger et program kaldet ligesom Snapchat eller lignende 401 00:21:14,850 --> 00:21:19,380 der siger disse fotos kun vare fem sekunder, ti sekunder eller whatnot. 402 00:21:19,380 --> 00:21:21,680 De er flygtig Det er absolut ikke tilfældet. 403 00:21:21,680 --> 00:21:25,670 Ligesom der er ingen måde, digitalt, at gennemføre en form for video, 404 00:21:25,670 --> 00:21:30,150 eller billede, eller tekstmæssige deler sådan at modtageren i den anden ende 405 00:21:30,150 --> 00:21:31,660 kan ikke en eller anden måde gemme dataene. 406 00:21:31,660 --> 00:21:34,300 >> I den mest naive måde nogen kunne tage deres telefon. 407 00:21:34,300 --> 00:21:36,850 Og de har en 10 anden vindue mens du kigger på nogle snap 408 00:21:36,850 --> 00:21:39,410 at bare tage et andet telefonnummer og fotografere det, naturligvis. 409 00:21:39,410 --> 00:21:41,660 Så du kan bevare noget digitalt på den måde. 410 00:21:41,660 --> 00:21:44,620 Nogle af jer ved, hvordan man tager screenshots på din telefon. 411 00:21:44,620 --> 00:21:49,290 I virkeligheden, hvis du ikke kender denne, indse, at mindst Snapchat, 412 00:21:49,290 --> 00:21:51,040 og jeg tror, ​​andre applikationer i disse dage, 413 00:21:51,040 --> 00:21:53,720 i det mindste fortælle dig, hvis modtageren har faktisk 414 00:21:53,720 --> 00:21:55,310 taget et screenshot af dit billede. 415 00:21:55,310 --> 00:22:00,870 >> Men værre endnu, dette var snappening, som nogen opfandt det for nylig, 416 00:22:00,870 --> 00:22:04,680 hvor nogle 100.000 snaps var blevet frigivet 417 00:22:04,680 --> 00:22:09,310 i, hvad der kaldes en torrent-fil på forskellige hjemmesider i sidste ende. 418 00:22:09,310 --> 00:22:12,000 Og disse indeholdt en hel masse af private beskeder og indlæg. 419 00:22:12,000 --> 00:22:15,210 Det viser sig, de fleste af dem godartet, så ikke hvad man kunne forvente. 420 00:22:15,210 --> 00:22:17,580 Men fordi folk havde brugt en tredjeparts websted, 421 00:22:17,580 --> 00:22:20,270 logge ind med deres Snapchat brugernavn og adgangskode, og derefter 422 00:22:20,270 --> 00:22:23,470 besparelse alle deres snaps på denne tredjeparts websted. 423 00:22:23,470 --> 00:22:26,130 Og det var denne tredjemand hjemmeside, der blev hacket, 424 00:22:26,130 --> 00:22:30,710 som netop betød nogen regnet ud, hvordan at få alle 100.000 plus på disse billeder 425 00:22:30,710 --> 00:22:33,822 ind i deres egen harddisk for efterfølgende deling. 426 00:22:33,822 --> 00:22:36,030 Helt ærligt, også her, det er sortering af tåbelige at Snapchat 427 00:22:36,030 --> 00:22:39,360 gennemføres på en sådan måde, at en tredjepart kan sortere af intercept 428 00:22:39,360 --> 00:22:43,310 data, og at det ikke er bundet til din eget program, der kører på telefonen. 429 00:22:43,310 --> 00:22:46,947 Men også her er klar over, at disse tingene skal ikke fange dig som en overraskelse, 430 00:22:46,947 --> 00:22:49,030 eller i det mindste der bør være et liv lektion i her. 431 00:22:49,030 --> 00:22:52,220 Hvis du gerne vil den tekniske detaljer, gå til denne URL der 432 00:22:52,220 --> 00:22:53,570 der er i dagens dias. 433 00:22:53,570 --> 00:23:00,960 Okay, spørgsmål om nutidens liv lektioner i CS? 434 00:23:00,960 --> 00:23:02,710 Slå det fra. 435 00:23:02,710 --> 00:23:04,970 Noget overhovedet? 436 00:23:04,970 --> 00:23:06,301 Noget overhovedet? 437 00:23:06,301 --> 00:23:09,050 Jeg har fået en masse af folk tjekker deres Snapchat eller noget nu. 438 00:23:09,050 --> 00:23:11,690 >> Okay, så SQL, Structured Query Language. 439 00:23:11,690 --> 00:23:12,509 Lad os wrap dette. 440 00:23:12,509 --> 00:23:14,300 Og også, selvom vi bare skrabe 441 00:23:14,300 --> 00:23:16,310 overfladen af ​​denne sprog, giver vi dig 442 00:23:16,310 --> 00:23:18,930 nok af sprog i form af pset 7 443 00:23:18,930 --> 00:23:22,140 så du kan løse nogle temmelig fælles funktionalitet. 444 00:23:22,140 --> 00:23:24,912 Men indse der er et par ting, vi ikke kræver af dig, 445 00:23:24,912 --> 00:23:27,120 men de kommer til at være vigtigt komme afgangsprojekter 446 00:23:27,120 --> 00:23:30,760 og helt sikkert komme gøre faktiske hjemmesider med faktiske brugere 447 00:23:30,760 --> 00:23:32,040 er dette design beslutning. 448 00:23:32,040 --> 00:23:34,460 >> Det viser sig, at i en MySQL-database, du 449 00:23:34,460 --> 00:23:37,460 har klaser af valg ligesom datatyperne for dine kolonner 450 00:23:37,460 --> 00:23:41,670 og andre ting, men du har også valget af en såkaldt opbevaring 451 00:23:41,670 --> 00:23:44,570 motor til alle dine data, slags filsystemet, 452 00:23:44,570 --> 00:23:46,700 hvis du er fortrolig, for alle dine data. 453 00:23:46,700 --> 00:23:48,830 Hvilket format er det i sidste ende er gemt i? 454 00:23:48,830 --> 00:23:53,300 Og den mest almindelige, måske, har været MyISAM og InnoDB, fagudtryk 455 00:23:53,300 --> 00:23:56,060 at vi interesserer os kun i det omfang, at man har 456 00:23:56,060 --> 00:23:58,500 og man ikke har følgende funktion. 457 00:23:58,500 --> 00:24:00,390 >> Antag, at du har en lille dorm køleskab. 458 00:24:00,390 --> 00:24:03,030 Og formoder, at du og din roommate, der deler dette køleskab, 459 00:24:03,030 --> 00:24:04,682 er virkelig glad for at sige mælk. 460 00:24:04,682 --> 00:24:07,140 Og dette er i virkeligheden, hvordan Historien blev fortalt mig vej tilbage 461 00:24:07,140 --> 00:24:10,890 i dag, da jeg tog et kursus kaldet CS 161 Operating Systems, som 462 00:24:10,890 --> 00:24:12,580 ligeledes udforsker dette emne. 463 00:24:12,580 --> 00:24:13,760 Så du har fået denne køleskab. 464 00:24:13,760 --> 00:24:14,630 Du er ude af mælk. 465 00:24:14,630 --> 00:24:17,000 Og du kommer hjem, din værelseskammerat stadig på klasse eller hvad, 466 00:24:17,000 --> 00:24:19,208 og du beslutter jeg har tænkt mig at gå ud og få noget mælk. 467 00:24:19,208 --> 00:24:22,630 Så du lukker køleskabet, lockup kollegieværelse, gå på tværs af gaden 468 00:24:22,630 --> 00:24:25,330 til CVS eller hvor, og få i kø for at købe nogle mælk. 469 00:24:25,330 --> 00:24:28,960 >> I mellemtiden, din værelseskammerat kommer hjem fra klassen, kommer ind i kollegieværelse, 470 00:24:28,960 --> 00:24:31,802 åbner køleskabet, også indser ooph, vi er ude af mælk. 471 00:24:31,802 --> 00:24:33,760 Så han eller hun lukker køleskab og så sker 472 00:24:33,760 --> 00:24:35,610 at gå til den anden CVS, hvilket sker for at være 473 00:24:35,610 --> 00:24:38,470 en blok væk fra de andre CVS på pladsen, og får på linje 474 00:24:38,470 --> 00:24:40,230 der for at få nogle mælk. 475 00:24:40,230 --> 00:24:42,524 Nu, selvfølgelig, et par minutter senere, kan du både få tilbage, 476 00:24:42,524 --> 00:24:44,690 og værst af alle mulige resultater, der er sket. 477 00:24:44,690 --> 00:24:45,792 Begge du har mælk. 478 00:24:45,792 --> 00:24:47,500 Og du ikke rigtig som mælk så meget. 479 00:24:47,500 --> 00:24:49,625 Så en af ​​dem er lige vil sur på et tidspunkt. 480 00:24:49,625 --> 00:24:55,941 Så nu har du en stor mængde af mælk i køleskabet alt fordi hvorfor? 481 00:24:55,941 --> 00:24:57,072 >> [Uhørligt] 482 00:24:57,072 --> 00:24:59,780 DAVID MALAN: Ja, du gjorde ikke anden måde kommunikere med hinanden 483 00:24:59,780 --> 00:25:00,904 at du var at få mælk. 484 00:25:00,904 --> 00:25:04,320 Så på enkleste måder i den menneskelige verden, 485 00:25:04,320 --> 00:25:08,390 hvordan kan du undgå denne tåbelige scenario sker sådan 486 00:25:08,390 --> 00:25:09,750 at du kun ender med en. 487 00:25:09,750 --> 00:25:10,840 Tekst dem, ja god. 488 00:25:10,840 --> 00:25:12,877 Men hvordan ellers? 489 00:25:12,877 --> 00:25:13,460 Post-it noter. 490 00:25:13,460 --> 00:25:14,626 DAVID MALAN: A Post-it note. 491 00:25:14,626 --> 00:25:17,150 Enhver form for kommunikation der fortæller din roommate 492 00:25:17,150 --> 00:25:18,670 ikke gå ind i køleskabet for mælk. 493 00:25:18,670 --> 00:25:20,440 Jeg har tænkt mig at gå genpåfyldning på min egen. 494 00:25:20,440 --> 00:25:22,770 Så du en eller anden måde har brug for at låse denne ressource. 495 00:25:22,770 --> 00:25:27,180 Så vi kan gøre denne-- vi kan slags ødelægge historien og forvandles til en CS historie 496 00:25:27,180 --> 00:25:30,360 hvorved tænke på dette som ligesom en variable, som lagrer en vis værdi. 497 00:25:30,360 --> 00:25:32,570 Og lige nu er det værdien af ​​mælk er nul, 498 00:25:32,570 --> 00:25:35,410 som du ikke ønsker din roommate at inspicere den pågældende variabel 499 00:25:35,410 --> 00:25:38,730 og derefter træffe en beslutning ham eller hende selv baseret på tilstanden af ​​denne variabel 500 00:25:38,730 --> 00:25:42,430 hvis du er i færd med at at ændre status for denne variabel. 501 00:25:42,430 --> 00:25:46,140 >> Så en af ​​de strækninger i SQL, som vi give dig i pset 7 specifikation 502 00:25:46,140 --> 00:25:47,310 er dette en her. 503 00:25:47,310 --> 00:25:49,740 Og vi bruger ikke en enorm mængde tid på at tale om det. 504 00:25:49,740 --> 00:25:55,100 Men det viser sig, hvis du forsøger at købe nogle aktier i CS50 finans 505 00:25:55,100 --> 00:25:58,000 at du allerede har nogle aktier, du 506 00:25:58,000 --> 00:26:01,750 ønsker at være i stand til at gøre en række af ting med det samme sammen. 507 00:26:01,750 --> 00:26:04,360 Du ønsker at være i stand til effektivt, på et højt niveau, 508 00:26:04,360 --> 00:26:06,700 tjek okay, hvis jeg vil at købe flere aktier i Free, 509 00:26:06,700 --> 00:26:08,780 penny stock vi taler om i spec, 510 00:26:08,780 --> 00:26:10,660 Jeg ønsker først at kontrollere hvor mange aktier jeg har. 511 00:26:10,660 --> 00:26:11,810 Og formoder, det er fem. 512 00:26:11,810 --> 00:26:14,600 Og formoder jeg ønsker at købe 10 mere, jeg i sidste ende 513 00:26:14,600 --> 00:26:17,069 ønsker at have 15 aktier i bestanden. 514 00:26:17,069 --> 00:26:18,360 Så jeg er nødt til at stille to spørgsmål. 515 00:26:18,360 --> 00:26:20,230 Hvad er status for den variable? 516 00:26:20,230 --> 00:26:21,470 Hvad er status for rækken? 517 00:26:21,470 --> 00:26:22,970 Hvor mange aktier har jeg i øjeblikket? 518 00:26:22,970 --> 00:26:24,636 Så du ønsker at gå videre og opdatere den. 519 00:26:24,636 --> 00:26:27,720 Så det er den analoge til den mælk i, at du kontrollerer rækken, 520 00:26:27,720 --> 00:26:30,730 og så du ønsker at opdatere den fordi hvis du ønsker at købe 10 aksjer, 521 00:26:30,730 --> 00:26:32,521 du ikke ønsker at ændre rækken til 10, du 522 00:26:32,521 --> 00:26:35,300 ønsker at ændre det til 5 plus 10 eller, selvfølgelig, 15. 523 00:26:35,300 --> 00:26:40,030 >> Denne linje kode sikrer, at disse to konceptuelle ideer 524 00:26:40,030 --> 00:26:42,810 ske sammen eller slet ikke. 525 00:26:42,810 --> 00:26:46,920 Ingen, heller ikke nogle andre bruger der har logget ind på samme hjemmeside, 526 00:26:46,920 --> 00:26:49,900 eller anden måde kan afbryde kontrol af rækken 527 00:26:49,900 --> 00:26:52,960 og ajourføring af rækken, den vælge og opdateringen, hvis du vil. 528 00:26:52,960 --> 00:26:57,360 Og syntaksen er ikke super oplagt, men denne ene linje, der længe er det, 529 00:26:57,360 --> 00:27:01,150 sikrer, at de to operationer kontrollere variabel eller kontrollere rækken 530 00:27:01,150 --> 00:27:04,660 og opdatere rækken ske atomically. 531 00:27:04,660 --> 00:27:06,849 >> Oh her vi gå igen. 532 00:27:06,849 --> 00:27:07,890 Sms på min telefon. 533 00:27:07,890 --> 00:27:09,954 Så lad os gøre dette til en lidt mere konkret. 534 00:27:09,954 --> 00:27:12,120 Antag, at du ikke er gennemførelse af et køleskab, 535 00:27:12,120 --> 00:27:16,400 og du er ikke at gennemføre Pset 7, men en faktisk bank, 536 00:27:16,400 --> 00:27:20,000 eller en ATM, en Automated Teller Maskine, hvor du eller anden måde 537 00:27:20,000 --> 00:27:22,960 vil være i stand til at give brugere at overføre penge 538 00:27:22,960 --> 00:27:24,500 fra en konto til en anden. 539 00:27:24,500 --> 00:27:25,100 OK, hænge på. 540 00:27:25,100 --> 00:27:26,683 Jeg har tænkt mig at slå det nu, tak. 541 00:27:26,683 --> 00:27:30,450 Så vi ønsker at flytte penge fra en konto nummer 542 00:27:30,450 --> 00:27:33,600 i en anden konto antal, specifikt 100 dollars. 543 00:27:33,600 --> 00:27:37,690 Så dette er sådan en vilkårlig eksempel, hvor du, ATM, 544 00:27:37,690 --> 00:27:41,060 måske ønsker at udføre to SQL forespørgsler, trække fra en konto, 545 00:27:41,060 --> 00:27:42,430 og tilføje til den anden konto. 546 00:27:42,430 --> 00:27:46,766 Men du ønsker at sikre, at disse to linjer både ske eller slet ikke. 547 00:27:46,766 --> 00:27:48,640 Du ønsker ikke noget blive afbrudt. 548 00:27:48,640 --> 00:27:51,440 Du behøver ikke nogle smarte skidt fyr en eller anden måde står på Bank of America 549 00:27:51,440 --> 00:27:53,270 med to pengeautomater foran ham og på en måde 550 00:27:53,270 --> 00:27:55,270 slags skrive i kommandoer på samme tid, 551 00:27:55,270 --> 00:28:01,230 forhåbentlig forsøger at fratrække 200 dollars i stedet på $ 100 og kun have $ 100 krediteret. 552 00:28:01,230 --> 00:28:04,450 Kort sagt, du ønsker, at dette opfører sig præcis som du forventer. 553 00:28:04,450 --> 00:28:06,540 >> Og den måde, du gør dette i SQL database 554 00:28:06,540 --> 00:28:09,350 du pak det i, hvad der er kaldes en transaktion. 555 00:28:09,350 --> 00:28:14,290 Bogstaveligt talt i SQL, kan du ringe CS50 s søgefunktion med citat citat slut begyndelse 556 00:28:14,290 --> 00:28:15,370 transaktion. 557 00:28:15,370 --> 00:28:18,640 Derefter kan du udføre et vilkårligt antal efterfølgende SQL-forespørgsler, 558 00:28:18,640 --> 00:28:20,870 men ingen af ​​dem tage Virkning på databasen 559 00:28:20,870 --> 00:28:25,880 indtil du kalder query citat Citat slut begå, hvis igen ved hjælp af PHP. 560 00:28:25,880 --> 00:28:29,810 Og på denne måde kan du sikre, at selvom du har 1.000 brugere alle 561 00:28:29,810 --> 00:28:32,080 ramme din database på samme tid, SQL 562 00:28:32,080 --> 00:28:34,540 vil love, at disse to forespørgsler vil være 563 00:28:34,540 --> 00:28:36,740 implementeret en ret efter den anden. 564 00:28:36,740 --> 00:28:40,330 Så du ikke ender med overskud af mælk eller det forkerte beløb, i sidste ende, 565 00:28:40,330 --> 00:28:40,830 penge. 566 00:28:40,830 --> 00:28:43,110 >> Så holde dette i tankerne, ikke så meget for pset 7 567 00:28:43,110 --> 00:28:45,250 men for de endelige projekter hvis du rent faktisk 568 00:28:45,250 --> 00:28:49,690 forsøger at flytte data rundt på tværs af tabeller som du måske her. 569 00:28:49,690 --> 00:28:53,980 Men måske endnu enklere og mere vanskeligt at forstå med et eksempel 570 00:28:53,980 --> 00:28:54,860 er dette en her. 571 00:28:54,860 --> 00:28:57,760 Og nogen emailet os om dette blot den anden dag 572 00:28:57,760 --> 00:28:59,600 da han så noget lignende online. 573 00:28:59,600 --> 00:29:03,480 >> Så vidt jeg ved, den pin-systemet er ikke sårbare over for dette angreb. 574 00:29:03,480 --> 00:29:06,637 Og jeg har ingen idé om det overhovedet anvendelser SQL-databasen under motorhjelmen. 575 00:29:06,637 --> 00:29:08,470 Men lad os bruge det til skyld diskussion. 576 00:29:08,470 --> 00:29:10,178 Her er den skærm, der Harvard folk har en tendens til 577 00:29:10,178 --> 00:29:13,620 at se, når du logger ind med deres Harvard ID-nummer og deres pin. 578 00:29:13,620 --> 00:29:19,020 Og formoder at stiften systemet var implementeret i PHP og med en MySQL 579 00:29:19,020 --> 00:29:22,000 database, koden at nogen kunne have skriftlige år siden 580 00:29:22,000 --> 00:29:23,270 kunne se sådan ud. 581 00:29:23,270 --> 00:29:25,230 Først erklære en variabel kaldet brugernavn. 582 00:29:25,230 --> 00:29:27,560 Og bare få det fra POST superglobal. 583 00:29:27,560 --> 00:29:30,140 Så får en anden variabel kaldet password og gøre det samme. 584 00:29:30,140 --> 00:29:33,080 Og så bare eksekvere denne lange forespørgsel her, 585 00:29:33,080 --> 00:29:36,690 Vælg stjerne fra brugerne, hvor brugernavn lig sådan og sådan 586 00:29:36,690 --> 00:29:38,510 og adgangskode lig sådan og sådan. 587 00:29:38,510 --> 00:29:40,660 >> Bemærk, at krøllede seler jeg har brugt her 588 00:29:40,660 --> 00:29:42,880 bare betyder for PHP, gå fremad og erstatning 589 00:29:42,880 --> 00:29:45,400 værdien af ​​de to variabler lige der. 590 00:29:45,400 --> 00:29:50,090 De er ikke strengt nødvendigt, men de har tendens til at undgå subtile syntaksfejl. 591 00:29:50,090 --> 00:29:53,650 Så dette ser helt korrekt ved første øjekast. 592 00:29:53,650 --> 00:29:54,240 Og det er. 593 00:29:54,240 --> 00:29:56,680 Du kunne gennemføre pin system på denne måde. 594 00:29:56,680 --> 00:30:00,460 >> Men formoder, at en super smart og ondsindet student 595 00:30:00,460 --> 00:30:03,020 input dette som hans eller hendes pin. 596 00:30:03,020 --> 00:30:05,550 Så jeg har fjernet kuglen skilte her i mock up, 597 00:30:05,550 --> 00:30:08,760 og jeg har faktisk afsløret hvad han eller hun kan være at skrive. 598 00:30:08,760 --> 00:30:10,350 Og det er lidt mærkeligt. 599 00:30:10,350 --> 00:30:13,850 Men hvad springer ud på dig på potentielt bekymrende om brugerens input, 600 00:30:13,850 --> 00:30:16,450 selv hvis du ikke har nogen idé om, hvad en SQL-injektion angreb betyder. 601 00:30:16,450 --> 00:30:20,300 Hvorfor dette ser lidt fishy? 602 00:30:20,300 --> 00:30:21,050 Hvad er det? 603 00:30:21,050 --> 00:30:21,550 [Uhørligt] 604 00:30:21,550 --> 00:30:24,260 DAVID MALAN: Den eller er lidt mistænksom. 605 00:30:24,260 --> 00:30:26,310 I virkeligheden, det er et nøgleord fra SQL. 606 00:30:26,310 --> 00:30:28,105 Så det lover ikke godt. 607 00:30:28,105 --> 00:30:29,980 Den omstændighed, at der er alle disse enkelte anførselstegn 608 00:30:29,980 --> 00:30:32,646 there-- faktisk en af ​​de letteste måder at bryde nogle databaser 609 00:30:32,646 --> 00:30:35,880 er ved at skrive et navn som O'Reilly der har en apostrof i det 610 00:30:35,880 --> 00:30:38,600 fordi hvis menneske, der skrev koden bag kulisserne 611 00:30:38,600 --> 00:30:41,570 tager ikke højde for, at der kan være enkelte citater i en brugers 612 00:30:41,570 --> 00:30:45,060 input, og han eller hun bruger enlige citater i deres kode, 613 00:30:45,060 --> 00:30:46,040 dårlige ting kan ske. 614 00:30:46,040 --> 00:30:47,870 >> Faktisk værre endnu, overveje dette. 615 00:30:47,870 --> 00:30:50,600 Hvis dette var igen koden at en person på Harvard år 616 00:30:50,600 --> 00:30:53,100 siden skrev til stiften systemet, mærke, hvad der er 617 00:30:53,100 --> 00:30:56,220 ved at få substitueret om brugernavn og adgangskode 618 00:30:56,220 --> 00:30:59,780 hvis brugeren skriver i igen skroob som deres brugernavn 619 00:30:59,780 --> 00:31:03,960 og derefter en, to, tre, fire, fem, citat eller citat Citat slut en er lig 620 00:31:03,960 --> 00:31:04,660 citere en. 621 00:31:04,660 --> 00:31:07,220 Og læg mærke til, hvad der er nøglen her er brugeren ikke har 622 00:31:07,220 --> 00:31:09,900 startede deres adgangskode eller deres pin med et citat. 623 00:31:09,900 --> 00:31:12,610 Og de der ikke er afsluttet den med et citat, fordi han eller hun 624 00:31:12,610 --> 00:31:16,315 antager, at hvis programmør var ikke så skarp, 625 00:31:16,315 --> 00:31:18,690 de vil have dem, enlige citater i deres kode. 626 00:31:18,690 --> 00:31:19,860 >> Så her er koden. 627 00:31:19,860 --> 00:31:23,820 Og substitution, måske nu ske, er dette. 628 00:31:23,820 --> 00:31:26,350 Og jeg har understreget, hvad brugeren har indtastet. 629 00:31:26,350 --> 00:31:28,480 Så før, efter. 630 00:31:28,480 --> 00:31:33,330 Og læg mærke til, hvad der er mildt bekymrende nu om den højre halvdel af denne SQL-kode? 631 00:31:33,330 --> 00:31:36,300 Det er lidt mere kompliceret, ganske vist, end de forespørgsler, vi har set. 632 00:31:36,300 --> 00:31:38,550 Men dette kan ikke muligvis være en god ting, hvis du er 633 00:31:38,550 --> 00:31:42,240 siger vælg stjerne, som er at vælge alt fra brugerens tabel 634 00:31:42,240 --> 00:31:46,630 hvor brugernavn er lig skroob og kodeord lig med en, to, tre, fire, 635 00:31:46,630 --> 00:31:49,610 fem eller et lig én. 636 00:31:49,610 --> 00:31:53,860 Hvad er den logiske konsekvenser af denne sidste bestemmelse formentlig? 637 00:31:53,860 --> 00:31:55,650 Det er bare altid sandt. 638 00:31:55,650 --> 00:31:59,930 >> Og fordi vi har en slags gættet eller regnet ud ved trial and error 639 00:31:59,930 --> 00:32:02,760 at programmøren, der skrev denne kode ikke 640 00:32:02,760 --> 00:32:07,250 foregribe et menneske eller dårligt menneske skrive i enkelte anførselstegn så godt, 641 00:32:07,250 --> 00:32:10,350 vi kan syntaktisk fuldføre SQL-forespørgsel 642 00:32:10,350 --> 00:32:12,260 med noget meningsløse men noget der 643 00:32:12,260 --> 00:32:15,930 er syntaktisk forkert der altid evalueres til sand. 644 00:32:15,930 --> 00:32:19,130 Så hvis denne kode anvendes til at besvare spørgsmålet sandt eller falsk, bør 645 00:32:19,130 --> 00:32:22,930 denne bruger tillades at passere, det Svaret er altid tilsyneladende vil 646 00:32:22,930 --> 00:32:26,930 til at være sandt, fordi det altid vil at vælge noget fra databasen 647 00:32:26,930 --> 00:32:29,280 fordi man jo altid lig én. 648 00:32:29,280 --> 00:32:30,360 >> Så hvad er løsningen? 649 00:32:30,360 --> 00:32:33,290 Godt i pset 7, vi faktisk undgå dette alle sammen. 650 00:32:33,290 --> 00:32:37,360 Vi giver dig en søgefunktion, og vi opfordre dig til at bruge spørgsmålstegn 651 00:32:37,360 --> 00:32:40,430 som pladsholdere, der ligner i ånden til printf s% s, 652 00:32:40,430 --> 00:32:43,710 men hvad er nøglen om spørgsmålstegnene her er, hvis du rent faktisk læst igennem 653 00:32:43,710 --> 00:32:46,950 functions.php, hvor vores query funktion er gennemført, 654 00:32:46,950 --> 00:32:52,780 disse spørgsmålstegn er undsluppet, hvorved noget potentielt farligt 655 00:32:52,780 --> 00:32:58,210 som en apostrof er slået i en flygtet ét tilbud. 656 00:32:58,210 --> 00:33:00,590 >> Så dette er, hvad der er virkelig sker, hvis du 657 00:33:00,590 --> 00:33:04,850 bruge CS50 forespørgsel funktion eller en række af tredjeparts frie biblioteker, 658 00:33:04,850 --> 00:33:06,000 gøre det samme. 659 00:33:06,000 --> 00:33:09,850 Betyder ikke noget i denne sag, i grøn, hvis brugeren har indtastet en apostrof 660 00:33:09,850 --> 00:33:12,070 fordi forespørgslen funktion, som vi skrev er 661 00:33:12,070 --> 00:33:15,120 kommer til at tilføje backslashes før en sådan farlig citat. 662 00:33:15,120 --> 00:33:17,360 Så dette er ikke i Faktisk kommer til at være legit. 663 00:33:17,360 --> 00:33:20,910 Det er ligesom at skrive i en vanvittig leder adgangskode, der er, selvfølgelig, vil ikke 664 00:33:20,910 --> 00:33:23,490 at være skroob s egentlige adgangskode. 665 00:33:23,490 --> 00:33:28,260 >> Så takeaway for CS50 er én, absolut altid bruge noget 666 00:33:28,260 --> 00:33:30,860 ligesom CS50 forespørgsel funktion eller den underliggende bibliotek, 667 00:33:30,860 --> 00:33:32,560 hvilket sker for at blive kaldt BOB. 668 00:33:32,560 --> 00:33:35,880 Men aldrig, aldrig, aldrig gøre kode som denne 669 00:33:35,880 --> 00:33:39,472 uden at flygte eller skrubbe som de siger dine input. 670 00:33:39,472 --> 00:33:42,430 Og du vil på et tidspunkt sandsynligvis komme på tværs af nogle hjemmeside som denne. 671 00:33:42,430 --> 00:33:46,060 Faktisk ser det ud til at være tilfældet ligesom i lufthavne og hoteller i steder 672 00:33:46,060 --> 00:33:48,880 hvor de har gratis Wi-Fi adgang, som du er nødt til at logge på, 673 00:33:48,880 --> 00:33:51,010 disse websteder er altid grueligt gennemføres. 674 00:33:51,010 --> 00:33:55,680 Og så en slags sjov derhjemme motion, ikke til skadelige formål eller mere 675 00:33:55,680 --> 00:33:59,170 af en sjov på vejen motion, er at bare skrive 676 00:33:59,170 --> 00:34:02,850 en apostrof, et enkelt tilbud, til en form på nogle hjemmeside 677 00:34:02,850 --> 00:34:03,810 og se hvad der sker. 678 00:34:03,810 --> 00:34:06,660 Og hvis serveren går ned eller giver du en slags fejlmeddelelse, 679 00:34:06,660 --> 00:34:09,690 kan det meget vel være, at nogen har ikke forudset dette. 680 00:34:09,690 --> 00:34:15,239 Og så skal du advare korrekte myndigheder og fortsætte længere. 681 00:34:15,239 --> 00:34:20,843 >> Så nu jer vil forhåbentlig forstå lidt mere nørd humor her. 682 00:34:20,843 --> 00:34:24,120 >> [Latter] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID MALAN: Du ved du er en nørd. 685 00:34:29,070 --> 00:34:30,944 For de næste mange år, vil du huske 686 00:34:30,944 --> 00:34:33,520 der lidt Bobby Tables er på grund af denne tegneserie her. 687 00:34:33,520 --> 00:34:36,760 Så holder det i tankerne, som vi kontekst skifte en sidste gang 688 00:34:36,760 --> 00:34:38,770 i dag til JavaScript. 689 00:34:38,770 --> 00:34:41,600 Vi har brugt relativt lidt tid på syntaksen i PHP 690 00:34:41,600 --> 00:34:43,440 fordi det er faktisk super ligner C. 691 00:34:43,440 --> 00:34:47,300 Og pænt nok, JavaScript også er super lig C syntaks 692 00:34:47,300 --> 00:34:49,639 såvel som vi vil se i bare et øjeblik, og da vi får 693 00:34:49,639 --> 00:34:51,205 se senere i denne uge i særdeleshed. 694 00:34:51,205 --> 00:34:54,080 Hvad du kan gøre med dette sprog, Men så meget desto mere magtfulde, 695 00:34:54,080 --> 00:34:55,790 især med API. 696 00:34:55,790 --> 00:34:56,960 >> Men først en hurtig rundvisning. 697 00:34:56,960 --> 00:35:00,450 Så man, i JavaScript, der er ingen vigtigste funktion, hvilket er rart. 698 00:35:00,450 --> 00:35:02,650 Som med PHP, kan du bare skrive kode. 699 00:35:02,650 --> 00:35:04,310 Betingelser ligne dette. 700 00:35:04,310 --> 00:35:07,100 Og boolske udtryk måske se sådan ud eller lignende dette. 701 00:35:07,100 --> 00:35:09,530 Skifter eksisterer, og de kunne se sådan ud. 702 00:35:09,530 --> 00:35:10,970 Fire loops se sådan ud. 703 00:35:10,970 --> 00:35:12,390 Mens loops se sådan ud. 704 00:35:12,390 --> 00:35:14,160 Gør whiles se sådan ud. 705 00:35:14,160 --> 00:35:16,850 Og derefter arrays ligner dette er meget lig PHP. 706 00:35:16,850 --> 00:35:20,740 Men bemærk, at det i JavaScript dig erklære en variabel ikke med en dollar 707 00:35:20,740 --> 00:35:25,190 underskrive, ikke med en datatype men bogstaveligt ved at sige var for variabel før det. 708 00:35:25,190 --> 00:35:27,900 Det er for løst maskinskrevet i, at det har typer, 709 00:35:27,900 --> 00:35:29,729 men du behøver ikke eksplicit erklære dem. 710 00:35:29,729 --> 00:35:31,520 Og så en snor, for Eksempelvis kan se 711 00:35:31,520 --> 00:35:34,350 som dette, at streng blive kaldt s i dette tilfælde. 712 00:35:34,350 --> 00:35:35,410 Og derefter et objekt. 713 00:35:35,410 --> 00:35:37,010 Og disse vil vi se mere inden længe. 714 00:35:37,010 --> 00:35:41,470 Og et objekt er måske en af ​​de ses hyppigst datastrukturer 715 00:35:41,470 --> 00:35:44,050 i en JavaScript-baseret program, fordi det giver 716 00:35:44,050 --> 00:35:46,680 du at knytte vilkårlige Nøgleværdiparrene bare 717 00:35:46,680 --> 00:35:51,240 ligesom PHP associative arrays og ligesom din egen hashtabel 718 00:35:51,240 --> 00:35:54,042 eller prøve så vi implementeret et par uger tilbage. 719 00:35:54,042 --> 00:35:56,250 Så lad os faktisk se, hvad vi kan gøre med JavaScript. 720 00:35:56,250 --> 00:35:59,410 Og i særdeleshed, er det et vaskeri liste over funktioner 721 00:35:59,410 --> 00:36:02,300 at browsere har at tillade os at tilslutte JavaScript 722 00:36:02,300 --> 00:36:05,470 i et websted på følgende måde. 723 00:36:05,470 --> 00:36:09,340 JavaScript bruges ofte som en client side scripting sprog. 724 00:36:09,340 --> 00:36:10,130 Det er ikke kompileret. 725 00:36:10,130 --> 00:36:11,370 Det også bliver fortolket. 726 00:36:11,370 --> 00:36:15,740 Men i modsætning til PHP, som har kørt på serveren, i web-server, 727 00:36:15,740 --> 00:36:18,220 eller dybt inde i den klienter, JavaScript 728 00:36:18,220 --> 00:36:22,190 er anderledes, idet den normalt kører i browseren. 729 00:36:22,190 --> 00:36:26,060 >> Så enhver JavaScript-kode, du begynde at skrive for pset 8 eller din endelige projekt, 730 00:36:26,060 --> 00:36:29,890 eller i den virkelige verden er generelt går skal gemmes på serveren, absolut 731 00:36:29,890 --> 00:36:33,110 i en prik HTML eller dot JS til JavaScript-fil. 732 00:36:33,110 --> 00:36:35,770 Men browseren går at downloade, at JavaScript 733 00:36:35,770 --> 00:36:39,530 kode til din egen udgave af Chrome, eller IE eller Firefox, eller hvad. 734 00:36:39,530 --> 00:36:43,870 Og koden er faktisk kommer til at få henrettet indersiden af ​​din egen browser. 735 00:36:43,870 --> 00:36:46,560 Blot for at gøre dette mere reel, lad os se det i konkret form. 736 00:36:46,560 --> 00:36:50,120 >> Vi har ingen idé om, hvad denne kode gør uden egentlig at læse igennem den. 737 00:36:50,120 --> 00:36:52,670 Men lad mig gå til Facebook.com uden at logge ind. 738 00:36:52,670 --> 00:37:00,440 Lad mig gå til at inspicere Element og gå til, lad os sige, Netværk og genindlæse siden. 739 00:37:00,440 --> 00:37:04,150 Og vi vil see-- lad mig skifte Reload den Side at få alle de anmodninger til nye. 740 00:37:04,150 --> 00:37:08,850 Og den allerførste fil jeg ser, er CSS, CSS. 741 00:37:08,850 --> 00:37:10,880 Her er den første JavaScript-fil, og jeg har 742 00:37:10,880 --> 00:37:14,600 ingen idé om, hvad det betyder, men her er nogle af JavaScript-koden 743 00:37:14,600 --> 00:37:16,180 der driver Facebook. 744 00:37:16,180 --> 00:37:18,400 Det er ikke engang virkelig, at afslører at zoome ind. 745 00:37:18,400 --> 00:37:20,260 Det er stadig lige så meningsløst. 746 00:37:20,260 --> 00:37:24,341 >> Men du vil se endnu dernede, er der endnu mere af disse JavaScript-filer. 747 00:37:24,341 --> 00:37:24,840 Hovsa. 748 00:37:24,840 --> 00:37:25,440 Det er en ping. 749 00:37:25,440 --> 00:37:28,550 Lad os gå lidt ned yderligere, endvidere yderligere. 750 00:37:28,550 --> 00:37:29,894 Der er én. 751 00:37:29,894 --> 00:37:31,238 Der er én. 752 00:37:31,238 --> 00:37:31,880 Der er én. 753 00:37:31,880 --> 00:37:35,820 >> Så selvom Facebook, bag scener, der er skrevet i en del i PHP 754 00:37:35,820 --> 00:37:39,100 og Facebooks egen version heraf, der er en enorm mængde af JavaScript. 755 00:37:39,100 --> 00:37:41,330 Faktisk kan enhver af de chatter du gør på Facebook, 756 00:37:41,330 --> 00:37:45,520 nogen af ​​de inline tidslinje opdateringer at ske i real tid, alt dette 757 00:37:45,520 --> 00:37:47,944 drives af JavaScript. 758 00:37:47,944 --> 00:37:48,444 Ja? 759 00:37:48,444 --> 00:37:50,235 >> PUBLIKUM: Jeg er ikke sikker hvis dette er Facebook, 760 00:37:50,235 --> 00:37:53,624 men jeg troede, at Facebook er udviklet deres eget in-house kodesprog? 761 00:37:53,624 --> 00:37:54,540 DAVID MALAN: De gjorde. 762 00:37:54,540 --> 00:37:58,110 Så det er derfor, jeg siger en varians PHP kaldet Hip Hop, at de faktisk 763 00:37:58,110 --> 00:38:03,440 tilføjet funktioner til sådan, at når Mark først implementeret Facebook, 764 00:38:03,440 --> 00:38:04,710 det var skrevet i PHP. 765 00:38:04,710 --> 00:38:07,370 Og den slags er forblevet slags forenden sprog 766 00:38:07,370 --> 00:38:09,030 at de bruger for meget af deres kodning, men det 767 00:38:09,030 --> 00:38:11,870 har ikke været et sprog, der er skalerer særlig godt til milliarder 768 00:38:11,870 --> 00:38:12,630 mennesker. 769 00:38:12,630 --> 00:38:15,300 Og så har de tilføjet deres egen forbedringer bag kulisserne. 770 00:38:15,300 --> 00:38:17,049 Og de bruge et vilkårligt antal andre sprog 771 00:38:17,049 --> 00:38:19,170 for forskellige dele af deres infrastruktur. 772 00:38:19,170 --> 00:38:24,080 Så ja, det er en varians hvad vi nu kender som PHP. 773 00:38:24,080 --> 00:38:26,610 >> Så lad os tage et kig på et par eksempler 774 00:38:26,610 --> 00:38:28,890 af, hvordan vi kan bruge JavaScript her. 775 00:38:28,890 --> 00:38:32,530 I dagens kildekode, har vi en masse filer, hvoraf den første, 776 00:38:32,530 --> 00:38:34,090 lad os kaldet DOM nul. 777 00:38:34,090 --> 00:38:36,770 Så DOM nul ser ud som følger. 778 00:38:36,770 --> 00:38:40,730 Lad mig gå ind i denne mappe og åbne op domzero.html, 779 00:38:40,730 --> 00:38:44,970 hvis top har en doc typen erklæring siger her kommer HTML 5. 780 00:38:44,970 --> 00:38:46,440 Og nu her er et HTML-tag. 781 00:38:46,440 --> 00:38:47,540 Her er hovedet tag. 782 00:38:47,540 --> 00:38:49,210 Og her er hvad der er nyt i dag. 783 00:38:49,210 --> 00:38:52,620 >> Vi har nu et script-tag indersiden af ​​hovedet på siden. 784 00:38:52,620 --> 00:38:55,290 Og denne tilsyneladende gør meget lidt, men varsel 785 00:38:55,290 --> 00:38:58,410 at jeg har defineret en script, et JavaScript. 786 00:38:58,410 --> 00:39:01,050 Og som en side, eftersom dette er en udbredt misforståelse, 787 00:39:01,050 --> 00:39:05,220 JavaScript har absolut intet at gøre med Java, sproget 788 00:39:05,220 --> 00:39:08,010 at nogle af jer måske har lært i APCS. 789 00:39:08,010 --> 00:39:10,480 Det var mere af en markedsføringstilladelse ting end noget andet, 790 00:39:10,480 --> 00:39:12,980 Ridning frakkeskøderne af Java år siden. 791 00:39:12,980 --> 00:39:17,300 Men JavaScript, intet at gøre med Java, bare på samme måde, og irriterende, 792 00:39:17,300 --> 00:39:18,480 forvirrende navngivet. 793 00:39:18,480 --> 00:39:21,890 >> Så her er, hvordan du erklærer en funktion i JavaScript, bogstaveligt sige funktion, 794 00:39:21,890 --> 00:39:24,556 derefter navnet på den funktion, så nogen argumenter, det kan tage, 795 00:39:24,556 --> 00:39:25,530 ligesom i PHP. 796 00:39:25,530 --> 00:39:28,990 Slår ud i JavaScript, en af ​​de mest irriterende funktioner, der findes, er Alert. 797 00:39:28,990 --> 00:39:31,392 Dette er et lille vindue, vil poppe op og advare dig 798 00:39:31,392 --> 00:39:32,600 til nogle stykke information. 799 00:39:32,600 --> 00:39:33,766 Det er generelt ildeset. 800 00:39:33,766 --> 00:39:35,980 Men vi vil bruge det som vores første øvelse her. 801 00:39:35,980 --> 00:39:37,900 >> Læg mærke til et par funktioner i JavaScript. 802 00:39:37,900 --> 00:39:41,524 Enkelte anførselstegn og dobbelte anførselstegn faktisk ikke noget længere. 803 00:39:41,524 --> 00:39:43,690 Enlige citater og dobbelt citater kan ombyttes, 804 00:39:43,690 --> 00:39:46,220 hvorimod i C, er du nødt til at bruge dobbelte anførselstegn i strenge, 805 00:39:46,220 --> 00:39:48,150 og du har to single citater for tegn. 806 00:39:48,150 --> 00:39:51,150 I JavaScript verden, mange mennesker, de fleste mennesker 807 00:39:51,150 --> 00:39:54,970 Brug enkelt anførselstegn omkring strygere bare fordi det er en stilistisk ting. 808 00:39:54,970 --> 00:39:58,330 Men hvad er plus operatør her, som vi ikke har set før? 809 00:39:58,330 --> 00:39:59,836 >> PUBLIKUM: Sammenkædning. 810 00:39:59,836 --> 00:40:00,960 DAVID MALAN: Sammenkædning. 811 00:40:00,960 --> 00:40:02,450 Så C ikke engang har dette. 812 00:40:02,450 --> 00:40:04,820 PHP har dot operatør, som gør dette. 813 00:40:04,820 --> 00:40:09,710 JavaScript har plus operatør, som forvirrende er ligesom Java. 814 00:40:09,710 --> 00:40:11,440 Nu, hvad der foregår her? 815 00:40:11,440 --> 00:40:14,260 >> Så her er, hvor en grundlæggende forståelse af det billede 816 00:40:14,260 --> 00:40:17,010 vi kastede op et par dage siden kommer i spil. 817 00:40:17,010 --> 00:40:19,620 Husk, når vi havde en enkel version af et HTML page-- 818 00:40:19,620 --> 00:40:20,830 det bare sagde hej verden. 819 00:40:20,830 --> 00:40:22,770 Og så trak vi et træ til højre, som 820 00:40:22,770 --> 00:40:27,320 havde en flok af rektangler og linjer forbinde dem ligesom et stamtræ. 821 00:40:27,320 --> 00:40:30,820 Så det er det såkaldte DOM eller Document Object Model. 822 00:40:30,820 --> 00:40:36,759 Og det viser sig, at du kan få adgang rektangler i det træ med syntaks 823 00:40:36,759 --> 00:40:37,550 som følgende. 824 00:40:37,550 --> 00:40:41,370 Du bogstaveligt talt sige dokument, som er en særlig global variabel i et JavaScript 825 00:40:41,370 --> 00:40:45,890 program, der har en funktion forbundet med det, at du kan få adgang til 826 00:40:45,890 --> 00:40:50,280 ligner en struct, men du simpelthen sige prik og derefter funktionens navn, 827 00:40:50,280 --> 00:40:52,390 få element af ID. 828 00:40:52,390 --> 00:40:55,460 >> Elementet jeg ønsker at få, er tilsyneladende citerer citat slut navn. 829 00:40:55,460 --> 00:40:57,150 Og så jeg ønsker at få sin værdi. 830 00:40:57,150 --> 00:40:58,330 Nu får vi foran os selv. 831 00:40:58,330 --> 00:41:00,038 Jeg er ikke engang sikker på, hvad alt dette handler om. 832 00:41:00,038 --> 00:41:03,000 Lad os hurtigt frem til HTML på den side, som er super enkel. 833 00:41:03,000 --> 00:41:05,370 >> Bemærk, at jeg har defineret En form hernede. 834 00:41:05,370 --> 00:41:07,940 Bemærk, at jeg har givet det en unik ID, selvom vi ikke har brugt 835 00:41:07,940 --> 00:41:08,870 denne attribut før. 836 00:41:08,870 --> 00:41:11,300 Men det findes i HTML. 837 00:41:11,300 --> 00:41:15,570 Du kan entydigt identificere nogle luns af HTML med en identifikator som denne. 838 00:41:15,570 --> 00:41:19,880 >> Notice nu denne-- viser sig HTML støtter, pr at vasketøj liste 839 00:41:19,880 --> 00:41:22,490 for et øjeblik siden, en hel bundt af hændelseshandlere. 840 00:41:22,490 --> 00:41:25,060 Og denne begivenhed handleren siger på send. 841 00:41:25,060 --> 00:41:28,730 På brugerens indsendelse af dette formularen, ring følgende kode. 842 00:41:28,730 --> 00:41:31,360 Og den kode, der kommer at blive kaldt eller henrettes 843 00:41:31,360 --> 00:41:35,260 er netop dette, den græske funktion efterfulgt af tilbagevenden falsk. 844 00:41:35,260 --> 00:41:37,360 Alt andet burde være temmelig velkendt. 845 00:41:37,360 --> 00:41:42,050 >> Her er et input af typen tekst, hvis ID, i dette tilfælde, vil være navn. 846 00:41:42,050 --> 00:41:45,430 Vi har ikke en faktiske navn attribut denne time-- og en indsende knap. 847 00:41:45,430 --> 00:41:48,330 Så den side ligner denne. 848 00:41:48,330 --> 00:41:52,890 Og den resulterende adfærd, du vil se, ligner dette. 849 00:41:52,890 --> 00:41:56,940 Siden, den lokale værter siger goddag David, næppe en æstetisk 850 00:41:56,940 --> 00:41:58,340 måde at hilse en bruger. 851 00:41:58,340 --> 00:41:59,950 Men hvad der rent faktisk sker? 852 00:41:59,950 --> 00:42:01,360 >> Nå, overveje, hvad det er. 853 00:42:01,360 --> 00:42:02,310 Dette er et tekstfelt. 854 00:42:02,310 --> 00:42:04,635 Og ifølge den HTML her, jeg har givet det 855 00:42:04,635 --> 00:42:07,350 en entydig identifikator kaldet citat citat slut navn. 856 00:42:07,350 --> 00:42:09,770 I mellemtiden, jeg har sagt, når brugeren sender denne formular 857 00:42:09,770 --> 00:42:13,820 ved at trykke på Enter eller klikke på Submit knap, kalder funktionen kaldet Greet 858 00:42:13,820 --> 00:42:15,410 og derefter vende tilbage Falsk. 859 00:42:15,410 --> 00:42:16,870 Lad os betragte dem i omvendt rækkefølge. 860 00:42:16,870 --> 00:42:20,590 Læg mærke til, når jeg klikker på Send, den URL for siden ændres ikke. 861 00:42:20,590 --> 00:42:22,420 Browseren ikon ikke starte med at dreje. 862 00:42:22,420 --> 00:42:27,050 Jeg ikke gå nogen steder, og det er bogstaveligt talt, fordi jeg sagde tilbage Falsk. 863 00:42:27,050 --> 00:42:31,534 Return false kortslutninger eller stop standard opførsel af en formular. 864 00:42:31,534 --> 00:42:33,700 Så derefter efterlader os med dette et sidste spørgsmål. 865 00:42:33,700 --> 00:42:34,764 Hvad betyder Greet gøre? 866 00:42:34,764 --> 00:42:36,680 Nå, Hils tilsyneladende kalder en funktion kaldet 867 00:42:36,680 --> 00:42:39,250 Alert, passerer en lang argument, der er 868 00:42:39,250 --> 00:42:43,950 resultatet af at sammenkæde sammen en bundt af delstrenge, hej komma plads, 869 00:42:43,950 --> 00:42:45,810 så uanset dette afkast. 870 00:42:45,810 --> 00:42:51,490 Så dokument er som en global variabel til roden af ​​det træ, 871 00:42:51,490 --> 00:42:55,560 kalde en særlig funktion, ellers nu kendt som metode. 872 00:42:55,560 --> 00:42:57,650 En funktion, der er inde i en variabel er 873 00:42:57,650 --> 00:42:59,640 kaldes en metode i stedet for en funktion. 874 00:42:59,640 --> 00:43:01,570 >> Så få element af ID. 875 00:43:01,570 --> 00:43:03,940 Hvad element gør du ønsker at komme med sit ID? 876 00:43:03,940 --> 00:43:06,970 Citat citat slut navn og så specifikt værdi. 877 00:43:06,970 --> 00:43:12,000 Så med andre ord, at koden simpelthen finder tekstfeltet hvis ID er navn 878 00:43:12,000 --> 00:43:13,380 og derefter får sin værdi. 879 00:43:13,380 --> 00:43:16,460 Så hvis jeg skulle ændre dette og sige Davin i stedet for David, 880 00:43:16,460 --> 00:43:20,670 og klik på Send, vi nu have en hilsen til Davin. 881 00:43:20,670 --> 00:43:22,890 >> Okay, så alt fint og godt. 882 00:43:22,890 --> 00:43:25,480 Men lad os se om vi kan gøre dette lidt renere da bare 883 00:43:25,480 --> 00:43:28,190 skrive kode som dette er generelt vil blive ildeset. 884 00:43:28,190 --> 00:43:30,060 Dette kommer til at se mere skræmmende. 885 00:43:30,060 --> 00:43:32,330 Men hvad er det første forskel, at du noterer her 886 00:43:32,330 --> 00:43:35,970 i denne version udover nominalismer til DOM én? 887 00:43:35,970 --> 00:43:41,110 Hvad strukturelt ser anderledes om dette versus den anden? 888 00:43:41,110 --> 00:43:41,932 Ja? 889 00:43:41,932 --> 00:43:43,890 PUBLIKUM: Er formularen på toppen af ​​scriptet nu? 890 00:43:43,890 --> 00:43:46,570 DAVID MALAN: Ja, formen er på toppen af scriptet for nogle nysgerrige årsag. 891 00:43:46,570 --> 00:43:48,736 Så det er den første ting der springer ud på mig, også. 892 00:43:48,736 --> 00:43:50,990 Og heldigvis mindste denne del er identiske. 893 00:43:50,990 --> 00:43:53,470 Så den eneste, der synes at være anderledes er dette. 894 00:43:53,470 --> 00:43:55,296 >> Så her er hvad der er pæne om JavaScript 2. 895 00:43:55,296 --> 00:43:57,420 Og det gør det svært at forstå ved første øjekast, 896 00:43:57,420 --> 00:44:00,670 især for de endelige projekter, hvis du kigger på prøve kode online, 897 00:44:00,670 --> 00:44:04,200 men det kan koges ned til nogle grundlæggende syntaktiske funktioner. 898 00:44:04,200 --> 00:44:06,230 Også her er, at global variabel dokument. 899 00:44:06,230 --> 00:44:09,540 Her igen er den metode eller funktion der siger få elementet efter ID. 900 00:44:09,540 --> 00:44:11,570 Denne gang vil jeg få ID kaldet demo. 901 00:44:11,570 --> 00:44:12,490 Hvor er det? 902 00:44:12,490 --> 00:44:15,400 Det er tilsyneladende ret her, selve formularen. 903 00:44:15,400 --> 00:44:20,010 >> Og nu se, at der tilsyneladende hvis jeg komme tilbage, at node fra det træ, 904 00:44:20,010 --> 00:44:22,940 betegner form selv, ikke et tekstfelt, 905 00:44:22,940 --> 00:44:26,970 det viser sig, at form, node eller rektangel fra træet, 906 00:44:26,970 --> 00:44:30,450 har, hvad vi kalder en ejendom, meget, meget, meget ens 907 00:44:30,450 --> 00:44:35,390 i ånden til en struct i C. Det er bare en data medlem på indersiden af ​​dette rektangel. 908 00:44:35,390 --> 00:44:38,300 >> Så jeg har fået den form, her, og jeg vedhæfte, 909 00:44:38,300 --> 00:44:44,650 eller jeg tildele til sin On Indsend handleren eller snarere på Indsend ejendom 910 00:44:44,650 --> 00:44:45,740 følgende funktion. 911 00:44:45,740 --> 00:44:49,000 Og det er langt, den skøreste ting hidtil syntaktisk. 912 00:44:49,000 --> 00:44:53,610 Det viser sig i JavaScript og i PHP, og helt ærligt for den sags skyld i C, 913 00:44:53,610 --> 00:44:58,990 selv om vi ikke gør det, kan du tilføje navnløs, anonym, eller AKA lambda 914 00:44:58,990 --> 00:45:03,000 funktioner, der ikke har et navn men kan kaldes alligevel. 915 00:45:03,000 --> 00:45:07,050 >> Så hvad jeg gør her, er jeg tildele dette på Send ejendom, som 916 00:45:07,050 --> 00:45:14,330 er inde i denne knude i mit DOM-træet, en funktion, funktion pointer, hvis du vil. 917 00:45:14,330 --> 00:45:16,310 Denne funktion har ingen navn, men det betyder ikke 918 00:45:16,310 --> 00:45:19,110 noget, fordi vi vil se i et øjeblik, hvordan man kalde det. 919 00:45:19,110 --> 00:45:21,780 Når denne funktion kaldes, denne kode bliver henrettet, så 920 00:45:21,780 --> 00:45:24,210 false returneres ligesom før. 921 00:45:24,210 --> 00:45:25,800 >> Men bemærk, hvad jeg har gjort. 922 00:45:25,800 --> 00:45:27,830 På dette punkt i historie, jeg har en form. 923 00:45:27,830 --> 00:45:30,190 Det har fået et unikt id kaldet demo. 924 00:45:30,190 --> 00:45:33,740 Hernede har jeg et script-tag der udfører følgende kode. 925 00:45:33,740 --> 00:45:37,720 Det binder sig til denne node i træet til det er på Indsend 926 00:45:37,720 --> 00:45:40,260 ejendom denne funktion her. 927 00:45:40,260 --> 00:45:44,310 Og netop i kraft af, hvordan browsere fungerer, når jeg nu klikke på Send eller tryk på Enter, 928 00:45:44,310 --> 00:45:45,889 denne funktion kommer til at blive kaldt. 929 00:45:45,889 --> 00:45:48,680 Det behøver ikke et navn, fordi der dælen bekymrer sig, hvad det hedder. 930 00:45:48,680 --> 00:45:52,540 Den eneste gang det nogensinde kommer til at få kaldes, er, når jeg indsender formularen. 931 00:45:52,540 --> 00:45:55,130 Der er ikke behov for mig, den menneskelige udvikler, 932 00:45:55,130 --> 00:45:57,330 til rent faktisk at kalde det noget andet. 933 00:45:57,330 --> 00:46:00,720 >> Nu bare som en teaser, som om det ikke var sindet bøjning nok, 934 00:46:00,720 --> 00:46:03,330 vi kan endda gøre dette se mere kryptiske hjælp 935 00:46:03,330 --> 00:46:05,850 en super populær bibliotek kaldet jQuery. 936 00:46:05,850 --> 00:46:08,760 Faktisk jQuery og JavaScript ofte smelter sammen. 937 00:46:08,760 --> 00:46:12,790 Og hvad vi vil gøre på onsdag er starten ved hjælp af dette sprog og disse biblioteker 938 00:46:12,790 --> 00:46:16,030 at bygge mere og mere asynkron og dynamiske applikationer 939 00:46:16,030 --> 00:46:18,950 ligesom kort at få applikationer, applikationer 940 00:46:18,950 --> 00:46:22,360 at opdatere websiden i real tid, ligesom Facebook eller Gchat 941 00:46:22,360 --> 00:46:27,130 gøre, og ikke længere begrænse os til Rammer Indsend med en get eller bare indlæg 942 00:46:27,130 --> 00:46:27,630 alene. 943 00:46:27,630 --> 00:46:29,055 Så jeg vil se dig på onsdag. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [Musikken afspilles] 946 00:46:35,550 --> 00:48:09,728