1 00:00:00,000 --> 00:00:01,940 >> [MUZIKO Ludante] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID Malan: Jen CS 50 kaj ĉi tiu estas la komenco de la semajno naŭ. 4 00:00:14,620 --> 00:00:18,240 Kaj kion ni opiniis, ke ni faru hodiaŭ ne nur fermi la ĉapitro sur lasta semajno 5 00:00:18,240 --> 00:00:22,670 materialo kie ni enfokusigis en servilo flanko ttt programado kun PHP kaj SQL, 6 00:00:22,670 --> 00:00:23,549 iu datumbazo ajxoj. 7 00:00:23,549 --> 00:00:25,590 Ni parolos pri iom da sekureco hodiaŭ kaj poste 8 00:00:25,590 --> 00:00:29,590 transiro al kliento flanko programado lingvo konata kiel Javascript. 9 00:00:29,590 --> 00:00:31,330 Sed unue, iom elacxeto. 10 00:00:31,330 --> 00:00:35,030 >> Vi eble memoras, ke sur Merkredo, mi ekiris 11 00:00:35,030 --> 00:00:37,550 skribi retejo kiu prenis en uzanto enigo 12 00:00:37,550 --> 00:00:41,120 per HTML formo kiu tiam stokitaj ke uzanto enigo nomoj, telefono 13 00:00:41,120 --> 00:00:43,124 nombroj kaj poŝtelefono portantoj en la datumbazo. 14 00:00:43,124 --> 00:00:45,540 Kaj tiam mi devis iom komando linio skripto skribita en PHP 15 00:00:45,540 --> 00:00:47,956 kiu supozis persisti super la vicoj en la datumbazo 16 00:00:47,956 --> 00:00:49,400 kaj sendu mesaĝojn de teksto. 17 00:00:49,400 --> 00:00:53,870 Malgraŭ pluraj, pluraj provoj, ni ne bonstata laborante por la fino. 18 00:00:53,870 --> 00:00:57,820 >> Do mi pasigis tiun tutan semajnon laboras sur tiu kodo akiri ni preterpasis la punkton 19 00:00:57,820 --> 00:01:01,220 kie ni cxesis, per ĉiuj Mi alvenis al la fino de la merkredo 20 00:01:01,220 --> 00:01:05,500 estis jena teksto mesaĝon el Margo mi baraktis, 21 00:01:05,500 --> 00:01:09,940 sekvata de teksto mesaĝo de alia samklasano, Vi havas tiu David. 22 00:01:09,940 --> 00:01:14,030 Sekvita de ĉi tiu, mirinde kuraĝiga. 23 00:01:14,030 --> 00:01:15,840 Plu iri, tre alentador. 24 00:01:15,840 --> 00:01:20,960 Mi alvenis preskaŭ ĝis then-- kaj tio estas la noto ni finis merkrede. 25 00:01:20,960 --> 00:01:25,850 Kaj tiam efektive eble mia favorito, post momento, tio venis. 26 00:01:25,850 --> 00:01:27,000 Malbenita Live Stream. 27 00:01:27,000 --> 00:01:31,080 >> Do hodiaŭ ni riparos tion per rapida rigardu kion mi faris tiam. 28 00:01:31,080 --> 00:01:35,440 Do ĉio ĉi kodo disponeblas linio de la pasinta semajno, semajno ok, 29 00:01:35,440 --> 00:01:36,300 fontkodo. 30 00:01:36,300 --> 00:01:39,425 Kaj vi vidos, ke mi trapasis, kaj mi fakte purigis tion iom. 31 00:01:39,425 --> 00:01:42,080 Mi prezentis paron aliaj trajtojn de SQL datumbazo. 32 00:01:42,080 --> 00:01:45,300 Ekzemple, anstataŭ simple portanto de var char 33 00:01:45,300 --> 00:01:47,310 mi kredas ke mi faris sur la muŝo pasintsemajne. 34 00:01:47,310 --> 00:01:49,820 Mi anstataŭe difinis kiel kio nomiĝas Enum. 35 00:01:49,820 --> 00:01:53,310 >> Kaj iu el vi eble vidis ĉi kiel ni esploris C. Enum estas reale 36 00:01:53,310 --> 00:01:56,820 esprimilo de C kie vi povas numeri tutan faskon da konstantoj 37 00:01:56,820 --> 00:01:59,640 kaj asigni ilin aŭtomata valoroj kiel unu, du, tri, kvar 38 00:01:59,640 --> 00:02:01,330 sen devi hard kodo nombroj. 39 00:02:01,330 --> 00:02:04,780 Do SQL subtenas la samajn, per se vi havas datumbazon kampo kiun vi nur 40 00:02:04,780 --> 00:02:09,389 deziras alpreni unu el finia valoroj, vi povas laŭvorte specifi ĝin 41 00:02:09,389 --> 00:02:13,120 kiel mi agis tie dum kvar populara usona celular portantoj. 42 00:02:13,120 --> 00:02:13,819 >> Do mi faris tion. 43 00:02:13,819 --> 00:02:16,610 Kaj mi faris plurajn ŝanĝojn nu, la plej grava el kiuj 44 00:02:16,610 --> 00:02:20,090 estis akiri email laboras ĉar recall, ke tiu programo baziĝis sur kiu 45 00:02:20,090 --> 00:02:23,470 ĝenerale nomita email al SMS enirejo, kiu estas ĝuste 46 00:02:23,470 --> 00:02:27,670 ornama maniero diri ke Verizon, kaj AT & T, kaj aliajn ulojn apogi servilon, 47 00:02:27,670 --> 00:02:30,740 per se ĝi ricevas retpoŝto, ĝi konvertas ĝin al SMS 48 00:02:30,740 --> 00:02:33,290 kaj etendanta tekston mesaĝon al ies telefonon. 49 00:02:33,290 --> 00:02:37,010 Do se mi faris ĉi ĝuste, tie estas nova kaj plibonigita formo 50 00:02:37,010 --> 00:02:39,259 kiu tuj parolos al nova kaj plibonigita kodon, kiun 51 00:02:39,259 --> 00:02:40,300 Vi povas ludi kun linio. 52 00:02:40,300 --> 00:02:44,140 Kaj espereble faros Mian telefono pepi en nur momento. 53 00:02:44,140 --> 00:02:47,240 >> Do unue, mi iros por tajpi en mia nomo. 54 00:02:47,240 --> 00:02:51,400 Due, mi ne fari cxi tiun fojon. 55 00:02:51,400 --> 00:02:53,920 Mi iras al vi Inspekti Elemento. 56 00:02:53,920 --> 00:02:56,710 Kaj ĉi tio estas nur etulon tiel mi ne 57 00:02:56,710 --> 00:02:59,250 Krei horoj de post produktado labori kiel mi faris lastan fojon. 58 00:02:59,250 --> 00:03:02,300 Tie nun estas mia telefonnumero. 59 00:03:02,300 --> 00:03:03,560 >> Mi elektas Verizon. 60 00:03:03,560 --> 00:03:10,260 Kaj tie, ni ŝalti ĉi mikrofono tie, kaj celi tion ĉe mia telefono tie. 61 00:03:10,260 --> 00:03:13,130 Mi tuj klaku Register, kiuj devus espereble 62 00:03:13,130 --> 00:03:14,530 metu gxin en la datumbazo. 63 00:03:14,530 --> 00:03:16,780 Nun mi tuj iros al la komandlinio programo, kiu 64 00:03:16,780 --> 00:03:20,825 Memoru nomata skalara oblikvo teksto, kaj transiras la fingrojn. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 Tie ni iras. 67 00:03:26,527 --> 00:03:27,501 >> [PHONE DINGS] 68 00:03:27,501 --> 00:03:28,962 >> [Aplaŭdo] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID Malan: Do pli amuza ol this-- ĝi estas amuza, kompreneble, se mi eniros en gxin. 71 00:03:34,940 --> 00:03:38,004 Sed ĝi estas pli amuza, mi pensis, ke ni kreis unu el tiuj filmoj momentoj 72 00:03:38,004 --> 00:03:40,420 kie kiel io vere malbona okazis en la mondo, 73 00:03:40,420 --> 00:03:42,860 kaj kiel ĉiuj NSA popola poŝtelefonoj komenci beeping 74 00:03:42,860 --> 00:03:44,860 kun teksto mesaĝojn atentigante ilin ĉi fakto. 75 00:03:44,860 --> 00:03:47,026 Do mi pensis, ni provus amuzi la saman tie, 76 00:03:47,026 --> 00:03:49,610 per ne uzanta datumbazon, Mi anstataŭe anticipe 77 00:03:49,610 --> 00:03:51,490 verkis programon kiu aspektas kiel ĉi. 78 00:03:51,490 --> 00:03:53,660 >> Tiu estas index.php-- Mi metis tiun kodon en linio 79 00:03:53,660 --> 00:03:56,710 kiel well-- kiu ŝajne nur bildigas form.php, 80 00:03:56,710 --> 00:04:00,990 uzante MVC stilo paradigmo ke ni raporti en pli detalo en problemo aro 81 00:04:00,990 --> 00:04:01,650 sep. 82 00:04:01,650 --> 00:04:02,910 Tiu formo estas sufiĉe simpla. 83 00:04:02,910 --> 00:04:06,634 Ĝi tuj submetiĝi al dosiero nomata here.php tra poŝto. 84 00:04:06,634 --> 00:04:09,300 Kaj estas ŝajne tuj demandos Mia nomo, kaj telefonnumero, 85 00:04:09,300 --> 00:04:11,400 kaj poste pere de la tn Elektu menuo, estas 86 00:04:11,400 --> 00:04:14,250 tuj donos al vi almenaŭ kvar populara usona celular portantoj, 87 00:04:14,250 --> 00:04:17,470 kaj do ebligas al vi efike preni asistencia alklakante ĉi tie. 88 00:04:17,470 --> 00:04:20,471 >> Kaj tie, dume, tuj prunti iujn de la kodo de lasta horo. 89 00:04:20,471 --> 00:04:22,553 Kaj se vi simple senkremigi ĉi, vi vidos ke ne estas 90 00:04:22,553 --> 00:04:23,900 tutan faskon de eraro kontrolanta. 91 00:04:23,900 --> 00:04:26,640 Sed la beleco fine estas ke ni ne skribas por datumbazo hodiaŭ. 92 00:04:26,640 --> 00:04:29,130 Ni teni ĝin simpla kaj simple sendo espereble 93 00:04:29,130 --> 00:04:32,190 teksta mesaĝo tra funkcion mi skribis dum la pasintaj kelkaj tagoj alvoko 94 00:04:32,190 --> 00:04:36,270 Teksto, kiu estas en funkcioj. php, kiu estas denove havebla rete. 95 00:04:36,270 --> 00:04:38,210 >> Do se vi volus partopreni en ĉi tio. 96 00:04:38,210 --> 00:04:40,190 Ni ne tuj estos stokante nenion. 97 00:04:40,190 --> 00:04:43,809 Iru al tiu URL tie en reala tempo. 98 00:04:43,809 --> 00:04:46,850 Ne enigu ĝin nur ankoraŭ, sed ni vidu se ni povas havi unu el tiuj filmoj 99 00:04:46,850 --> 00:04:49,830 momentoj kie ĉies poŝtelefono startas beeping, atendu nur 100 00:04:49,830 --> 00:04:53,580 fojo ĉi tiu jaro kontraste en 2011 kie tiu iris terure malbone. 101 00:04:53,580 --> 00:04:58,910 Kaj kiam vi iras al la adreso, Vi devus vidi súper simpla formo 102 00:04:58,910 --> 00:05:03,884 ke se vi havas nomon, poŝtelefono nombro, kaj celular portanto ke 103 00:05:03,884 --> 00:05:06,175 egalas la liston tie iri antaŭeniras kaj plenigu la formularon. 104 00:05:06,175 --> 00:05:07,880 Sed ne kolizias submit nur ankoraŭ. 105 00:05:07,880 --> 00:05:10,850 >> Formo tuj aspekti ĉi. 106 00:05:10,850 --> 00:05:13,660 Bonvolu tajpi vian nomon, telefonnumeron. 107 00:05:13,660 --> 00:05:17,670 OOP, iu tuj antaŭ la kurbo. 108 00:05:17,670 --> 00:05:18,170 Estas bone. 109 00:05:18,170 --> 00:05:19,340 OK, ĉies plenigis la formularon. 110 00:05:19,340 --> 00:05:21,400 Tio devus labori sur telefono, tro, se vi volas. 111 00:05:21,400 --> 00:05:23,695 Bone, en via markoj, get starigis, iru. 112 00:05:23,695 --> 00:05:24,195 Hit tie. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 Kio? 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 Mi ĵuras al Dio, mi provas tio multnombraj fojoj hodiaŭ. 119 00:05:40,250 --> 00:05:41,720 Vi havas ĝin? 120 00:05:41,720 --> 00:05:43,145 >> [Intermetante voĉoj] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID Malan: Bone, uzanto eraro eble. 123 00:05:49,560 --> 00:05:50,550 Tio estas du. 124 00:05:50,550 --> 00:05:53,300 Ĝi laboris por du el Kelkcent, tri, kvar. 125 00:05:53,300 --> 00:05:55,940 OK, tio estas bona. 126 00:05:55,940 --> 00:05:58,520 Kvar el kvin por korekteco kiom pri. 127 00:05:58,520 --> 00:05:59,810 >> Do kio ĵus okazis? 128 00:05:59,810 --> 00:06:02,727 Do supozeble, ne vidante vian ekranoj, kial povus esti ŝin errored? 129 00:06:02,727 --> 00:06:05,518 Estas probable, ke ni simple provante fari tro multajn rilatojn 130 00:06:05,518 --> 00:06:08,110 al Harvard mail server ĉiuj je fojon el la sama IP-adreso. 131 00:06:08,110 --> 00:06:10,740 Mi nur diveni ĉar mi ne havas la lukson de testado 132 00:06:10,740 --> 00:06:13,220 tiu kodo per kelkaj 300 homoj anticipe 133 00:06:13,220 --> 00:06:16,040 sed nun rimarkas ke ke almenaŭ devus 134 00:06:16,040 --> 00:06:18,250 ili atingis la laboron farita tiu tempo. 135 00:06:18,250 --> 00:06:22,880 >> Bone, do kial estas tiu tuta pli germane al kio okazas? 136 00:06:22,880 --> 00:06:24,900 Nu unue, rapida Paro de anoncoj. 137 00:06:24,900 --> 00:06:29,350 Do oni, se vi ŝatus aliĝi Chang, kaj Nick kaj aliaj ĉe lunĉo ĉi Rosa 138 00:06:29,350 --> 00:06:32,400 fari RSVP ĉe la kutima adreso tie. 139 00:06:32,400 --> 00:06:35,650 Se vi pensas koncentrante aŭ faranta malĉefa en CS, 140 00:06:35,650 --> 00:06:38,941 ĉu vi estas sophomore, aŭ freshman, aŭ eĉ junior aŭ altranga ĉe tiu punkto 141 00:06:38,941 --> 00:06:42,490 kaj ankoraŭ povas elpremi en la kursoj, rimarkas ke la inĝenierio lernejo 142 00:06:42,490 --> 00:06:45,620 kolektinto senpage Ben kaj Jerry glaciaĵo kaj konsiloj 143 00:06:45,620 --> 00:06:48,910 tiu merkredo baldaŭ post klaso je 4:00 ptm en la CS konstruaĵo 144 00:06:48,910 --> 00:06:49,771 ĉe Maxwell Dworkin. 145 00:06:49,771 --> 00:06:51,520 Se tio estas tro rapida sur la ekrano, nur iri 146 00:06:51,520 --> 00:06:55,260 al cs50.harvard.edu por ligilo al la Facebook evento 147 00:06:55,260 --> 00:06:57,140 kie vi povas vidi pli da detaloj. 148 00:06:57,140 --> 00:07:01,390 >> Dume, mi pensis, ke mi korektu unu alia afero mi goofed merkrede. 149 00:07:01,390 --> 00:07:04,400 Rezultas ke Marko ID en Facebook ne tri. 150 00:07:04,400 --> 00:07:05,230 Estis kvar. 151 00:07:05,230 --> 00:07:08,330 Rezultas li havis pli testo kontoj ol mi respondas. 152 00:07:08,330 --> 00:07:12,400 Sed kion tio sentis kiel ŝanco fari estas elsxiros URL kiel ĉi. 153 00:07:12,400 --> 00:07:16,680 >> Do rezultas ke Facebook havas API, Application Programming Interface, 154 00:07:16,680 --> 00:07:20,070 kiu estas mekanismo per kiu vi povas peti datumojn programmatically 155 00:07:20,070 --> 00:07:24,480 ĉe Facebook kaj reiri maŝino legeblajn informojn, ne retpaĝoj 156 00:07:24,480 --> 00:07:28,690 sed nur krudan teksto, io nomata Ĝavoskripto Objekto Skribmaniero. 157 00:07:28,690 --> 00:07:32,150 Kaj fakte, se mi vizitas URL zomi, implicite, 158 00:07:32,150 --> 00:07:34,960 tio estas Marco publike atingebla informo. 159 00:07:34,960 --> 00:07:37,430 >> Kaj la interesa detalo tie estas nur, ke lia ID 160 00:07:37,430 --> 00:07:40,670 Estas vere, la numero kvar, kion mi realigita tiel frue kiel mi faris tion. 161 00:07:40,670 --> 00:07:44,260 Vi povas fari tion mem, se vi scias via Facebook salutnomo se vi havas unu. 162 00:07:44,260 --> 00:07:45,440 Simple tajpu ĝin pinto. 163 00:07:45,440 --> 00:07:46,640 Kaj neniu el ĉi estas privata. 164 00:07:46,640 --> 00:07:48,670 Mi nur faras tion eĉ en la incógnito modo. 165 00:07:48,670 --> 00:07:49,900 Do mi eĉ ne estas ensalutinta. 166 00:07:49,900 --> 00:07:54,440 Kaj vi vidas, ke mi ŝajne estis uzanto nombro 6.454 167 00:07:54,440 --> 00:07:56,480 Facebook, kiu estas ne Domaĝe tiujn tagojn. 168 00:07:56,480 --> 00:07:59,900 Do ĉiuokaze, vi ankaux vidos aldonan informon tie. 169 00:07:59,900 --> 00:08:02,150 >> Kaj la utila aspekto de tiu estas kiu vin 170 00:08:02,150 --> 00:08:06,890 povus skribi vian propran programaron kiu iel integras datumoj ŝatas ĉi 171 00:08:06,890 --> 00:08:08,170 en via propra apliko. 172 00:08:08,170 --> 00:08:10,650 Vi povas kapabligi uzantoj ensalutu en vian retejon, 173 00:08:10,650 --> 00:08:14,190 Ne uzante sian propran uzantnomon kaj Pasvorto sed eble iliaj Facebook ensaluto 174 00:08:14,190 --> 00:08:16,170 kaj akiri informojn eĉ pri siaj amikoj, 175 00:08:16,170 --> 00:08:18,740 se aprobi tian, aŭ simila. 176 00:08:18,740 --> 00:08:21,430 Do rimarku ke CS50 ankaŭ havas iuj de liaj propraj APIs, 177 00:08:21,430 --> 00:08:24,620 unu por la kurso katalogo datumoj iuj por la brakumojn menuoj en la manĝoĉambro 178 00:08:24,620 --> 00:08:26,730 salonoj, ĉiuj konstruaĵoj kaj lokoj 179 00:08:26,730 --> 00:08:30,930 surterene ni havas API por tiel ke vi povas konsulti simile kaj alveni 180 00:08:30,930 --> 00:08:35,520 reen tekstajn datumojn kiuj povas integri en PHP, aŭ Ĝavoskripto, aŭ eĉ, 181 00:08:35,520 --> 00:08:38,320 kvankam malpli ofte, oni C bazita projektas finon. 182 00:08:38,320 --> 00:08:41,190 >> Ja antaŭ la fino projekto kelkaj limŝtonoj. 183 00:08:41,190 --> 00:08:42,980 Vi akiris retpoŝton de ni la alia tago. 184 00:08:42,980 --> 00:08:45,761 Rimarki, ke la propono Estas pro tiu venanta lundo. 185 00:08:45,761 --> 00:08:49,010 Ĝi ne estas nepre deviga, sed vi do bezonas ricevi vian instruadon kamaradoj 186 00:08:49,010 --> 00:08:51,260 aprobon antaŭ fari ajna ŝanĝojn poste. 187 00:08:51,260 --> 00:08:54,280 Kaj tiam antaŭen estas numeron de aliaj limŝtonoj. 188 00:08:54,280 --> 00:08:56,542 >> Do por turmentus vi ankaŭ kun iuj ebloj, 189 00:08:56,542 --> 00:08:58,250 ni havas amason da tiuj nuancon ampoloj. 190 00:08:58,250 --> 00:09:01,190 Kaj iujn el vi infanoj nun havas iom de tiuj en via dormejo ĉambron tiel. 191 00:09:01,190 --> 00:09:02,920 Kaj ankaux ili havas API. 192 00:09:02,920 --> 00:09:07,300 Do memoru tiujn duuma bulboj semajnoj antaŭ tiu Dan Bradley kaj Ansel 193 00:09:07,300 --> 00:09:08,780 Duff kreis por ni. 194 00:09:08,780 --> 00:09:12,560 Ili uzis programaro interfaco por tiu ampolo, kiuj nuntempe 195 00:09:12,560 --> 00:09:15,232 estas konektita al elektra kaj tiam tra senkabla 196 00:09:15,232 --> 00:09:17,690 estas konektita al malgranda afero nomata Ponto malsupren tie, 197 00:09:17,690 --> 00:09:21,280 kiel eta enkursigilo proprieta al tiu aparta mekanismo. 198 00:09:21,280 --> 00:09:26,540 >> Sed rezultu se mi scipovas sendu HTTP mesaĝojn, kiel ni ĉiuj nun fari, 199 00:09:26,540 --> 00:09:31,670 Mi povas sendi mesaĝon ŝatas tion tiu ampolo igi ĝin aŭ malŝalti 200 00:09:31,670 --> 00:09:34,000 aŭ fari ajnan numeron de aliaj operacioj sur ĝi. 201 00:09:34,000 --> 00:09:36,110 Rimarki ke ĝi ne ricevas, ne estas post. 202 00:09:36,110 --> 00:09:37,760 Ekzistas alia nomita posteno. 203 00:09:37,760 --> 00:09:39,630 Estas fakte kelkaj aliaj tiaj verboj. 204 00:09:39,630 --> 00:09:42,920 Sed rimarki tie estas vojo tie, slash API, slash nova programisto, 205 00:09:42,920 --> 00:09:44,990 slash lumo slash unu, slash stato. 206 00:09:44,990 --> 00:09:49,060 >> Tio ŝajne nur la irejo kiun la kompanio Philips, 207 00:09:49,060 --> 00:09:51,640 decidis vi devas bati kun HTTP peto 208 00:09:51,640 --> 00:09:55,010 Se vi volas ŝanĝi la staton de la bulbo uzante HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 Tiam rimarkos la malplenan linion. 210 00:09:56,380 --> 00:10:00,170 Kaj poste persiste kio aspektas kiel speco de tabelo de iu tipo, 211 00:10:00,170 --> 00:10:04,730 tiu fojo tuj nomos JavaScript Objekto Skribmaniero, aŭ Jason. 212 00:10:04,730 --> 00:10:08,000 Kaj kion vi vidas tie estas ke estas tri ŝlosilaj valoro paroj. 213 00:10:08,000 --> 00:10:09,115 >> Unu ŝlosila tuŝas. 214 00:10:09,115 --> 00:10:10,990 Kaj lia valoro ŝajne tuj estos vera. 215 00:10:10,990 --> 00:10:13,612 Brilo estas 128, kiu Estas ia int. 216 00:10:13,612 --> 00:10:15,820 Kaj tiam transiro tempo nulo, kiu ŝajne 217 00:10:15,820 --> 00:10:17,970 kiom longe tuj preni turni tion plu. 218 00:10:17,970 --> 00:10:19,890 >> Do nun tiu ampolo estas malŝaltita. 219 00:10:19,890 --> 00:10:22,880 Sed se mi faras ĝuste this-- lasu mi iru al iom Gvidfolio 220 00:10:22,880 --> 00:10:25,200 ke Dan starigis en advance-- kaj mi tuj 221 00:10:25,200 --> 00:10:27,920 antaŭeniri kaj kopii la sekva komando. 222 00:10:27,920 --> 00:10:30,200 Frizo, kiel kelkaj el vi eble kolektadis sur CS50 223 00:10:30,200 --> 00:10:35,080 Diskuti estas ilo kiel Telnet tiaj ke vi povas simuli HTTP petojn, 224 00:10:35,080 --> 00:10:36,360 specife metas. 225 00:10:36,360 --> 00:10:39,710 Mi povas sendi tiun datumon, specife kion ni ĵus 226 00:10:39,710 --> 00:10:43,430 vidis antaŭ momento specife al tiu URL super tie. 227 00:10:43,430 --> 00:10:46,310 Kaj tiam Curl tuj manipuli ĉiujn necesajn headers 228 00:10:46,310 --> 00:10:47,600 kaj sintaksanalizi ekzistas. 229 00:10:47,600 --> 00:10:54,700 >> Do kion mi devas fari estas kopii la jeonon terminalo fenestro kaj tiam batis eniri. 230 00:10:54,700 --> 00:10:56,000 Kaj la ampolo daŭras. 231 00:10:56,000 --> 00:10:59,060 Kaj tiu estas ĉiu irante tra mia komputilo sendrate 232 00:10:59,060 --> 00:11:01,960 iel malsupren al la ponto, kiu Estas tiam parolas al tiu ampolo. 233 00:11:01,960 --> 00:11:02,960 Mi povas fari ion alian. 234 00:11:02,960 --> 00:11:07,050 Mi povas fari tion iri ruĝa ekz. 235 00:11:07,050 --> 00:11:11,040 Mi povas ekzemple fari tion iri verdan. 236 00:11:11,040 --> 00:11:12,220 Mi povas trairigu blua. 237 00:11:12,220 --> 00:11:14,760 >> Kaj rimarki en ĉiu el tiuj petskribojn, ĉiuj, ke mi ŝanĝas 238 00:11:14,760 --> 00:11:18,540 estas la tn nuancon valoro efektive donu al ĝi iun koloron. 239 00:11:18,540 --> 00:11:20,320 Do lasu min alglui ĉi tiu en tiel. 240 00:11:20,320 --> 00:11:21,000 Nun estas blua. 241 00:11:21,000 --> 00:11:24,672 >> Kaj vi povas fari eĉ amatoro aferojn where-- ni iru al verda. 242 00:11:24,672 --> 00:11:26,630 Kaj mi povus tion faras Kompreneble, per mia propra kodo. 243 00:11:26,630 --> 00:11:30,670 Sed eĉ la API mem Elportas funky operacioj 244 00:11:30,670 --> 00:11:35,510 kiel tiu, kiu nun tedas ni por la proksima 30 sekundoj. 245 00:11:35,510 --> 00:11:39,170 >> Do jen unu guston de tio, kion vi povus faru kun API, ĉi tiu engaĝante 246 00:11:39,170 --> 00:11:40,010 ampoloj. 247 00:11:40,010 --> 00:11:42,510 Notu ke CS50 havas paron paroj de Google Vitra se vi volas 248 00:11:42,510 --> 00:11:45,380 ŝatus pritrakti ion kune tiuj linioj, Arduino Unos, kiu 249 00:11:45,380 --> 00:11:48,670 Estas eta komputiloj, esence, sur malgranda cirkvito tabulo 250 00:11:48,670 --> 00:11:50,470 ke vi povas konekti dratoj kaj aliaj aĵoj 251 00:11:50,470 --> 00:11:52,732 al kaj reale kontrolo via reala mondo medio. 252 00:11:52,732 --> 00:11:54,940 Kaj tiam estas paro de novaj ludiloj kiujn ni havas. 253 00:11:54,940 --> 00:11:59,294 Ĉi tiu laŭvorte ĵus alvenis la alia tago per poŝto, Myo braceleto. 254 00:11:59,294 --> 00:12:01,710 Kaj mi pensis, ke estas formo de Foriru ekscitita pri projektoj 255 00:12:01,710 --> 00:12:03,720 ke vi povu uzi kun tiu aparataro farus 256 00:12:03,720 --> 00:12:08,900 estu ludi ĉi mallonga klipo kiu uzas al turmentus ulojn 257 00:12:08,900 --> 00:12:10,500 ke ni nun vivas en la estonteco. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [MUZIKO Ludante] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID Malan: Do en nur kelkaj semajnoj, vi tro eblas ke malvarmeta en la CS50 foiro. 262 00:13:37,109 --> 00:13:39,150 Alia mekanismo kiu ni havas faskon de kiu ni 263 00:13:39,150 --> 00:13:42,090 feliĉaj prunti el por projektoj nomas mocio adaptilo. 264 00:13:42,090 --> 00:13:45,030 Tiu estas malgranda mekanismo USB konekti al komputilo kiu 265 00:13:45,030 --> 00:13:47,520 ebligas al vi interagas kun via portebla, Mac aŭ PC, 266 00:13:47,520 --> 00:13:51,570 kvazaŭ vi havis kiel Xbox Kinect kaj reale fari fizikan moviĝoj multe 267 00:13:51,570 --> 00:13:54,509 kiel ni vidas en ĉi vidado de la estonteco. 268 00:13:54,509 --> 00:13:56,505 >> [MUZIKO Ludante] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID Malan: Do eĉ se vi havas neniu ideo kiel io tia 271 00:15:06,260 --> 00:15:10,050 eble povus esti elpensitaj aŭ verkon sur aparataro nivelo, ne gravas. 272 00:15:10,050 --> 00:15:13,520 Eĉ post malmultaj monatoj de CS50, kaj komprenon de programado 273 00:15:13,520 --> 00:15:19,460 pli ĝenerale, kaj ttt programado pli ĵus, kaj tiam ankaŭ APIs kaj HTTP, 274 00:15:19,460 --> 00:15:21,830 vi havos aliron tra programaro APIs se vi 275 00:15:21,830 --> 00:15:24,680 do volas pruntepreni unu el tiuj aparatoj por fakte parolas al ŝi 276 00:15:24,680 --> 00:15:27,180 kaj ne devas maltrankviligi la suba efektivigo 277 00:15:27,180 --> 00:15:30,220 detalojn, kiu estas tute konsekvenca kun tiu nocio de layering 278 00:15:30,220 --> 00:15:33,610 abstraktaĵo ke ni vidita tra la semestro. 279 00:15:33,610 --> 00:15:37,990 >> Tiel ankaŭ dum la semajnfino, ekvidis paron pecoj de novaĵoj. 280 00:15:37,990 --> 00:15:40,640 Iri unue iru seminarioj se vi ŝatus lerni ion 281 00:15:40,640 --> 00:15:42,160 pli sur iu ajn nombro de temoj. 282 00:15:42,160 --> 00:15:43,340 Vidu la URL tie. 283 00:15:43,340 --> 00:15:45,890 Kaj ĉi tiu estis sendita al mi de Chang, kiu vin konas, 284 00:15:45,890 --> 00:15:47,850 Kiu estas videbligi nian armeon de elefantoj. 285 00:15:47,850 --> 00:15:49,910 Kaj estis ĉeftitolo jene. 286 00:15:49,910 --> 00:15:51,280 Mi timegas de mia nova TV. 287 00:15:51,280 --> 00:15:54,301 Kial mi estas timigita por defali aferon ankoraux vi estus tro. 288 00:15:54,301 --> 00:15:56,050 Do ni estas nun en la notas en la semestro, 289 00:15:56,050 --> 00:15:58,860 tro, kie eĉ se vi havas la plej eta de kompreno 290 00:15:58,860 --> 00:16:02,620 pri kiel la TTT funkcias, kaj HTTP, kaj sekureco, aĵoj kiel ĉi 291 00:16:02,620 --> 00:16:03,980 devus komenci kapti viajn okulojn. 292 00:16:03,980 --> 00:16:07,450 Sed ankaŭ, vi komprenos ĉu tio estas aŭ ne estas 293 00:16:07,450 --> 00:16:08,430 realaj minacoj. 294 00:16:08,430 --> 00:16:10,940 >> Do mi prenis kelkajn ekstraktojn de tiu artikolo ĉi tie. 295 00:16:10,940 --> 00:16:12,540 Kaj la historio estas kiel sekvas. 296 00:16:12,540 --> 00:16:14,300 Mi nun la posedanto de nova smart TV, kiu 297 00:16:14,300 --> 00:16:18,470 promesas transdoni streaming plurmedia enhavo, ludojn, app, 298 00:16:18,470 --> 00:16:21,450 sociaj rimedoj kaj interreto navigacio, aj kaj TV ankaŭ. 299 00:16:21,450 --> 00:16:24,410 La sola problemo estas, ke mi estas nun timu uzi ĝin, diras la aŭtoro. 300 00:16:24,410 --> 00:16:29,592 Vi estus, ankaŭ, se vi legas tra La 46 paĝoj privatecon politiko por via televido. 301 00:16:29,592 --> 00:16:31,800 La kvanto de datumoj ĉi afero recolecta estas miriga. 302 00:16:31,800 --> 00:16:35,710 Ĝi registras kie, kiam, kiel kaj por kiel longe vi uzas la televidon. 303 00:16:35,710 --> 00:16:38,190 Ĝi elmontras sekvado kuketojn, kiel ni diskutis, 304 00:16:38,190 --> 00:16:40,560 kaj lumturoj desegnita detekti kiam vi havas 305 00:16:40,560 --> 00:16:43,185 vidita apartan enhavon aŭ apartan retpoŝtan mesaĝon 306 00:16:43,185 --> 00:16:45,230 Se vi volas kontroli retpoŝton sur via televido. 307 00:16:45,230 --> 00:16:48,430 Ĝi registras la apps vi uzi, la retejojn vi vizitas, 308 00:16:48,430 --> 00:16:52,280 kaj kiel vi interagas kun la enhavo, fari cxiujn ke tra via inteligenta televido. 309 00:16:52,280 --> 00:16:55,470 Ankaux gxin creepier yet-- tio estas mia addition-- 310 00:16:55,470 --> 00:16:58,140 estas enkonstruita en ĉambro kun rekono facial. 311 00:16:58,140 --> 00:17:01,010 >> La celo estas provizi gesto kontrolo por la TV 312 00:17:01,010 --> 00:17:05,490 kaj ebligas al vi ensaluti por personigita konton uzante vian vizaĝon. 313 00:17:05,490 --> 00:17:08,940 Sur la upside, la bildoj estas savis la TV anstataŭ alŝutita 314 00:17:08,940 --> 00:17:09,940 al kompania servilo. 315 00:17:09,940 --> 00:17:12,520 Sur la malavantaĝo, interreto konektiĝi faras la tuta TV 316 00:17:12,520 --> 00:17:14,811 vundeblaj al hackers kiu pruvis la kapablecon 317 00:17:14,811 --> 00:17:16,700 preni kompletan kontrolon de la maŝino. 318 00:17:16,700 --> 00:17:20,880 >> Pli tumulti, kvazaŭ tio ne estis inteligenta sufiĉa, estas la mikrofono. 319 00:17:20,880 --> 00:17:23,599 La TV fanfaronas voĉo rekono trajto 320 00:17:23,599 --> 00:17:26,859 kiu permesas spektantojn kontroli la ekrano per voĉo ordonas. 321 00:17:26,859 --> 00:17:30,290 Sed la servo venas kun iom minaca averto. 322 00:17:30,290 --> 00:17:33,030 Bonvolu atenti ke, se via parolitaj vortoj inkluzivi 323 00:17:33,030 --> 00:17:36,210 personaj aŭ aliaj sentemaj informo, ke informoj 324 00:17:36,210 --> 00:17:40,310 estos inter la datumoj kaptitaj kaj transdonitaj al tria. 325 00:17:40,310 --> 00:17:40,870 Got tion? 326 00:17:40,870 --> 00:17:45,860 Ne diru personaj aŭ sentemaj stuff antaŭ via televidilo. 327 00:17:45,860 --> 00:17:47,280 >> Do tio estas vere por vera. 328 00:17:47,280 --> 00:17:50,530 Kaj estas malfacile ne vidi se vi iri al Best Buy aŭ kiel televidiloj 329 00:17:50,530 --> 00:17:51,030 tiuj tagoj. 330 00:17:51,030 --> 00:17:52,540 Ili ĉiuj inteligentaj iel. 331 00:17:52,540 --> 00:17:54,740 Kaj ili nun estas inteligenta kaj creepier. 332 00:17:54,740 --> 00:17:57,490 Kaj ili estas simple kolekti datumoj en manieroj kiuj ni parolis 333 00:17:57,490 --> 00:18:01,840 kaj poste alŝuti ĝin tra HTTP aŭ iu alia protokolo al iu servilo. 334 00:18:01,840 --> 00:18:05,720 >> Do tio estis de amuza artikolo en ĉi interreta paĝaro 335 00:18:05,720 --> 00:18:08,940 tie, kiuj parolis pri aparta cimon aŭ erara kodo 336 00:18:08,940 --> 00:18:11,340 ke ni efektive povas ligi en lasta semajno diskuto. 337 00:18:11,340 --> 00:18:15,730 Do tiu subtitolo estis kiel sekvas, la rakonto iras tien, 338 00:18:15,730 --> 00:18:18,720 Josh Breckman laboris kompanio kiu surteriĝis kontrakto 339 00:18:18,720 --> 00:18:22,390 disvolvi enhavo mastrumado sistemo, aŭ CMS kiam ili estas vokitaj, 340 00:18:22,390 --> 00:18:24,380 por sufiĉe granda registaro retejo. 341 00:18:24,380 --> 00:18:27,300 Multe de la projekto implikis disvolvante enhavo mastrumado sistemo 342 00:18:27,300 --> 00:18:29,840 tial oficistoj estus povis konstrui kaj subteni 343 00:18:29,840 --> 00:18:31,877 la ĉiam ŝanĝanta enhavo por ilia retejo. 344 00:18:31,877 --> 00:18:34,210 Aĵoj iris sufiĉe bone por kelkajn tagojn post iri vivas. 345 00:18:34,210 --> 00:18:37,020 Sed en tago ses, aĵoj ne iris tiel bone. 346 00:18:37,020 --> 00:18:39,500 Ĉiuj enhavo sur la retejo estis tute malaperis. 347 00:18:39,500 --> 00:18:42,950 Kaj ĉiujn paĝojn kondukis al la defaŭlta, bonvolu eniri enhavo retpaĝo. 348 00:18:42,950 --> 00:18:43,810 Whoops. 349 00:18:43,810 --> 00:18:46,080 Josh estis nomita por enketi kaj rimarkis 350 00:18:46,080 --> 00:18:49,390 ke oni aparte ĝenaj ekstera IP adreso havis 351 00:18:49,390 --> 00:18:53,380 aligxo kaj viŝis ĉiujn la enhavo sur la sistemo. 352 00:18:53,380 --> 00:18:56,290 >> La IP-adreso ne apartenis al iu eksterlande hacker fleksita 353 00:18:56,290 --> 00:18:58,340 sur detruante helpema registara informo. 354 00:18:58,340 --> 00:19:05,190 Ĝi decidis googlebot.com, Google tre propra retejo rampanta araneo. 355 00:19:05,190 --> 00:19:06,010 Whoops. 356 00:19:06,010 --> 00:19:09,150 Post iom da esplorado kaj grimpadi ĉirkaŭ trovi noncorrupt apogilo, 357 00:19:09,150 --> 00:19:10,180 Josh trovis la problemon. 358 00:19:10,180 --> 00:19:12,700 >> Uzanto estis kopiitaj kaj batitaj iun enhavon de unu 359 00:19:12,700 --> 00:19:15,670 paĝo al alia, inkludante redaktan hiperligilo 360 00:19:15,670 --> 00:19:17,577 redakti la enhavon de la paĝo. 361 00:19:17,577 --> 00:19:20,160 Normale tiu ne estus temo ekde ekstera uzanto 362 00:19:20,160 --> 00:19:24,320 bezonas entajpi nomon kaj pasvorton, sed la CMS autenticación sistemo, 363 00:19:24,320 --> 00:19:27,520 login sistemo, ne enkalkuli 364 00:19:27,520 --> 00:19:30,980 malnaiva hacking teknikojn de Google Araneo. 365 00:19:30,980 --> 00:19:31,700 Whoops. 366 00:19:31,700 --> 00:19:33,610 >> Kiel ĝi rezultas, Google Araneo ne uzas 367 00:19:33,610 --> 00:19:36,950 kuketoj, kio signifas ke ĝi povas facile preteriri ĉekon por 368 00:19:36,950 --> 00:19:39,840 estas ensalutinta en kuketo aro al esti malvera. 369 00:19:39,840 --> 00:19:42,620 Ĝi ankaŭ ne atentu Ĝavoskripto, kiu kutime 370 00:19:42,620 --> 00:19:45,170 suflori kaj redirect uzantoj kiuj ne estas ensalutinta. 371 00:19:45,170 --> 00:19:48,610 Ĝi tamen sekvi ĉiun hiperligilo pri ĉiu paĝo trovas, 372 00:19:48,610 --> 00:19:51,700 inkludante tiuj kun Forigi Paĝo en la titolo. 373 00:19:51,700 --> 00:19:52,650 Whoops. 374 00:19:52,650 --> 00:19:56,070 >> Do kion signifas tio en pli teknika sed sufiĉe atingebla terminoj? 375 00:19:56,070 --> 00:19:58,340 Tio simple signifas ke tra lia loko retejo, 376 00:19:58,340 --> 00:20:02,287 Ili havis URLoj ne kontraste kun ĉi tiu, kiu vi eble vidos en problemo starigis sep. 377 00:20:02,287 --> 00:20:04,620 Memoru en problemo starigis sep nek scios problemo starigis sep 378 00:20:04,620 --> 00:20:06,411 ke vi defiita, interalie, 379 00:20:06,411 --> 00:20:08,570 vendi akcioj nome de uzantoj. 380 00:20:08,570 --> 00:20:14,010 Sed efektivigo tiu karakterizaĵo de vojo de akiri tra hiperligiloj en via uzanto 381 00:20:14,010 --> 00:20:16,880 Interfaco, verŝajne ne la plej inteligenta ideo 382 00:20:16,880 --> 00:20:20,300 ĉar se via retejo estas iel alirebla aŭ per homa 383 00:20:20,300 --> 00:20:23,577 Kiu estas klakante ĉirkaŭe aŭ aĉeti bot kiel Google aŭ Spider 384 00:20:23,577 --> 00:20:26,160 kiam ili estas nomitaj tio estas nur trenante la retejo provas indekso 385 00:20:26,160 --> 00:20:29,060 la retejon kiel serĉilon, ili povis tre facile 386 00:20:29,060 --> 00:20:31,340 batita tra ricevi ĉi tiun klason de URL. 387 00:20:31,340 --> 00:20:33,770 Kaj tio estas funkcie samvaloras, tiukaze 388 00:20:33,770 --> 00:20:37,000 vendante ĉiuj agoj de Google. 389 00:20:37,000 --> 00:20:40,030 >> Nun sincere, estas tute asinine ke la CMS 390 00:20:40,030 --> 00:20:43,240 uzita JavaScript kaj kuketojn implementar lia ensaluto sistemo 391 00:20:43,240 --> 00:20:47,100 kaj ne faras tion servilo flanko, kiel vi uloj faras kaj faros en PSet 7-- 392 00:20:47,100 --> 00:20:49,940 tie estas login.php file-- ĉiam, ĉiam, 393 00:20:49,940 --> 00:20:52,789 ĉiam sekureco devus esti farita sur la servilo flanko 394 00:20:52,789 --> 00:20:56,080 ne sur la kliento flanko ĉar, kiel tiu artikolo sugestas kaj eble vi mem 395 00:20:56,080 --> 00:20:59,600 vidi en iu punkto, ĝi estas bagatela por uzanto, bonaj aŭ malbonaj, 396 00:20:59,600 --> 00:21:02,860 por simple malŝalti Ĝavoskripto Ne mencii kuketojn. 397 00:21:02,860 --> 00:21:06,020 Do kiu estas via ĉiutaga WTF. 398 00:21:06,020 --> 00:21:07,970 >> Ekzistas unu pli, kio estas ĝuste speco de timigas, 399 00:21:07,970 --> 00:21:11,360 do mi dankinde se nur kiel vivo leciono. 400 00:21:11,360 --> 00:21:14,850 Kiam ajn vi uzas apliko nomita kiel Snapchat aŭ simila 401 00:21:14,850 --> 00:21:19,380 kiu diras tiujn fotojn nur daŭri kvin sekundoj, dek sekundoj, aŭ whatnot. 402 00:21:19,380 --> 00:21:21,680 Ili estas efemeraj Tio estas absolute ne estas la kazo. 403 00:21:21,680 --> 00:21:25,670 Kiel ne estas maniero, ciferece, implementar iu formo de vídeo, 404 00:21:25,670 --> 00:21:30,150 aŭ bildo, aŭ teksta dividante tiajn ke ricevanto sur la alia fino 405 00:21:30,150 --> 00:21:31,660 ne povas iel savi la datumojn. 406 00:21:31,660 --> 00:21:34,300 >> En la plej naiva maniero, iu povis preni sian telefonon. 407 00:21:34,300 --> 00:21:36,850 Kaj ili havas 10 dua fenestro dum rigardante kelkaj snap 408 00:21:36,850 --> 00:21:39,410 por simple prenu alian telefonon kaj foti ĝin, evidente. 409 00:21:39,410 --> 00:21:41,660 Do vi povas antaŭgardi io cifereca tiamaniere. 410 00:21:41,660 --> 00:21:44,620 Kelkaj el vi scias kiel preni ekrankopioj de via telefono. 411 00:21:44,620 --> 00:21:49,290 Fakte, se vi ne scias tion, rimarkas ke almenaŭ Snapchat, 412 00:21:49,290 --> 00:21:51,040 kaj mi opinias, aliaj aplikoj tiuj tagoj, 413 00:21:51,040 --> 00:21:53,720 almenaŭ al vi se la ricevonto havas reale 414 00:21:53,720 --> 00:21:55,310 prenita ekrankopio de via bildo. 415 00:21:55,310 --> 00:22:00,870 >> Sed malbona ankoraŭ, tiu estis la snappening, kiel iu stampis ŝin ĵus, 416 00:22:00,870 --> 00:22:04,680 kie iuj 100.000 punto estis liberigitaj 417 00:22:04,680 --> 00:22:09,310 en kio nomas torento dosieron sur diversaj retejoj finfine. 418 00:22:09,310 --> 00:22:12,000 Kaj tiuj enhavis tutajn faskon de privataj mesaĝoj kaj afiŝojn. 419 00:22:12,000 --> 00:22:15,210 Ĝi rezultas plejparte benigna, tial ne kion vi povus atendi. 420 00:22:15,210 --> 00:22:17,580 Sed ĉar la homo havis uzata tria paĝo, 421 00:22:17,580 --> 00:22:20,270 ensalutadon iliaj Snapchat salutnomon kaj pasvorton kaj tiam 422 00:22:20,270 --> 00:22:23,470 ŝparante ĉiuj iliaj punto sur tiu tria paĝo. 423 00:22:23,470 --> 00:22:26,130 Kaj okazis, ke la tria partio retejo kiu estis hackeado, 424 00:22:26,130 --> 00:22:30,710 kio ĝuste signifis iu supozis, kiom akiri ĉiuj 100.000 pli de tiuj bildoj 425 00:22:30,710 --> 00:22:33,822 en siajn proprajn malmola disko por posta interŝanĝo. 426 00:22:33,822 --> 00:22:36,030 Sincere, tie ankaŭ, ĝi estas speco de asinine ke Snapchat 427 00:22:36,030 --> 00:22:39,360 implementa en tia vojo ke tria okupiĝos de detranĉo 428 00:22:39,360 --> 00:22:43,310 la datumoj kaj ke ĝi ne estas ligita al via propra apliko kuras sur la telefono. 429 00:22:43,310 --> 00:22:46,947 Sed ĉi tie ankaŭ rimarkas, ke tiuj aferoj ne kaptos vin per surprizo, 430 00:22:46,947 --> 00:22:49,030 aŭ almenaŭ ne devus esti vivo lecionon tie. 431 00:22:49,030 --> 00:22:52,220 Se vi ŝatus la teknika detaloj, iru al tiu URL tie 432 00:22:52,220 --> 00:22:53,570 tio estas en hodiaŭa diapozitivoj. 433 00:22:53,570 --> 00:23:00,960 Bone, demandojn pri hodiaŭa vivo lecionoj en CS? 434 00:23:00,960 --> 00:23:02,710 Turnu ke ekstere. 435 00:23:02,710 --> 00:23:04,970 Io ajn? 436 00:23:04,970 --> 00:23:06,301 Io ajn? 437 00:23:06,301 --> 00:23:09,050 Mi havas multe da homoj kontrolanta ilia Snapchat aŭ iu jam. 438 00:23:09,050 --> 00:23:11,690 >> Bone, do SQL, Strukturita Query Language. 439 00:23:11,690 --> 00:23:12,509 Ni envolver ĉi. 440 00:23:12,509 --> 00:23:14,300 Kaj same, kvankam Ni nur skrapi 441 00:23:14,300 --> 00:23:16,310 La surfaco de tiu lingvo, ni donos al vi 442 00:23:16,310 --> 00:23:18,930 sufiĉe de la lingvo en formo de PSet 7 443 00:23:18,930 --> 00:23:22,140 por ke vi povu pritrakti iujn sufiĉe komuna funcionalidad. 444 00:23:22,140 --> 00:23:24,912 Sed realigi estas kelkaj tion ni ne postulos de vi, 445 00:23:24,912 --> 00:23:27,120 sed tuj estos grava veni fino projektoj 446 00:23:27,120 --> 00:23:30,760 kaj certe venas farante reala retejojn kun realaj uzantoj 447 00:23:30,760 --> 00:23:32,040 Estas ĉi tiu dezajno decido. 448 00:23:32,040 --> 00:23:34,460 >> Ĝi rezultas ke en MySQL datenbazo, vi 449 00:23:34,460 --> 00:23:37,460 havas aroj da elektoj kiel la datumtipoj vian kolumnoj 450 00:23:37,460 --> 00:23:41,670 kaj aliaj aferoj, sed vi ankaŭ havas la elekto de tiel nomataj stokado 451 00:23:41,670 --> 00:23:44,570 motoro por ĉiuj viaj datumoj, la varo de dosiersistemo, 452 00:23:44,570 --> 00:23:46,700 se vi estas familiara, por ĉiuj viaj datumoj. 453 00:23:46,700 --> 00:23:48,830 Kio formato ĝi finfine stokitaj en? 454 00:23:48,830 --> 00:23:53,300 Kaj la plej komuna, eble, estis MyiSAM kaj InnoDB, teknikaj terminoj 455 00:23:53,300 --> 00:23:56,060 ke ni devos zorgi pri nur ĝis la punkto kiu havas 456 00:23:56,060 --> 00:23:58,500 kaj oni ne devas La jenaj karakterizaĵo. 457 00:23:58,500 --> 00:24:00,390 >> Supozu ke vi havas iom dormejo fridujo. 458 00:24:00,390 --> 00:24:03,030 Kaj supozu ke vi kaj via kompano, kiuj dividas ĉi fridujo, 459 00:24:03,030 --> 00:24:04,682 Estas vere ŝatis ekzemple lakto. 460 00:24:04,682 --> 00:24:07,140 Kaj tio estas, fakte, kiel la rakonto estis rakontita al mi vojon reen 461 00:24:07,140 --> 00:24:10,890 en la tago, kiam Mi prenis kurson nomata CS 161 Operating Systems, kiu 462 00:24:10,890 --> 00:24:12,580 simile esploras ĉi temo. 463 00:24:12,580 --> 00:24:13,760 Do vi havas ĉi fridujo. 464 00:24:13,760 --> 00:24:14,630 Vi estas ekster la lakton. 465 00:24:14,630 --> 00:24:17,000 Kaj vi venis hejmen, via kompano La ankoraŭ en klaso aŭ kio estu, 466 00:24:17,000 --> 00:24:19,208 kaj vi decidas Mi tuj eliru kaj akiri lakton. 467 00:24:19,208 --> 00:24:22,630 Do vi fermas la fridujo, lockup la dormejo ĉambro, iri trans la straton 468 00:24:22,630 --> 00:24:25,330 al CVS aux kie ajn kaj ricevi en linio por aĉeti lakton. 469 00:24:25,330 --> 00:24:28,960 >> Dume, via kompano ricevas hejmo de klaso, metas en la dormejo ĉambro, 470 00:24:28,960 --> 00:24:31,802 malfermas la fridujon, ankaŭ rimarkas ooph, ni estas el lakto. 471 00:24:31,802 --> 00:24:33,760 Do li aŭ ŝi fermas la fridujo kaj tiam okazas 472 00:24:33,760 --> 00:24:35,610 iri al la alia CVS, kio okazas al esti 473 00:24:35,610 --> 00:24:38,470 unu bloko for de la aliaj CVS en la placo, kaj metas en linio 474 00:24:38,470 --> 00:24:40,230 tie por akiri lakton. 475 00:24:40,230 --> 00:24:42,524 Nun, kompreneble, kelkajn minutojn poste, vi ambaŭ reiri, 476 00:24:42,524 --> 00:24:44,690 kaj la plej malbona de ĉiuj eblaj rezultoj okazis. 477 00:24:44,690 --> 00:24:45,792 Ambaŭ vi havas lakton. 478 00:24:45,792 --> 00:24:47,500 Kaj vi ne vere kiel lakto kiu multe. 479 00:24:47,500 --> 00:24:49,625 Do unu el ili estas ĝuste tuj Sour je iu punkto. 480 00:24:49,625 --> 00:24:55,941 Do nun vi havas troan kvanton da lakto en la fridujo ĉiuj ĉar kial? 481 00:24:55,941 --> 00:24:57,072 >> [Inaudible] 482 00:24:57,072 --> 00:24:59,780 DAVID Malan: Jes, vi ne iel interkomuniki 483 00:24:59,780 --> 00:25:00,904 ke vi akiri lakton. 484 00:25:00,904 --> 00:25:04,320 Do, en la plej simpla de manierojn en la homa mondo, 485 00:25:04,320 --> 00:25:08,390 kiom povus vin eviti ĉi stulta scenaro okazas tiaj 486 00:25:08,390 --> 00:25:09,750 ke vi nur finos kun tiu. 487 00:25:09,750 --> 00:25:10,840 Teksto ilin, jes bone. 488 00:25:10,840 --> 00:25:12,877 Sed kiel alie? 489 00:25:12,877 --> 00:25:13,460 Post-it notoj. 490 00:25:13,460 --> 00:25:14,626 DAVID Malan: post-it noto. 491 00:25:14,626 --> 00:25:17,150 Ajna formo de komunikado kiu rakontas via kompano 492 00:25:17,150 --> 00:25:18,670 ne iru en la fridujo por lakto. 493 00:25:18,670 --> 00:25:20,440 Mi tuj iros restock sur mia propra. 494 00:25:20,440 --> 00:25:22,770 Do vi iel bezonas ŝlosi tiu rimedo. 495 00:25:22,770 --> 00:25:27,180 Do ni povas fari this-- ni povas ia ruinigi la rakonto kaj igi CS rakonto 496 00:25:27,180 --> 00:25:30,360 per pensi pri tio kiel ĝuste kiel variablo, kiu stoki iu valoro. 497 00:25:30,360 --> 00:25:32,570 Kaj nun, la valoron de lakto estas nulo, 498 00:25:32,570 --> 00:25:35,410 kion vi ne deziras ke viaj kompano inspekti ke variablo 499 00:25:35,410 --> 00:25:38,730 kaj tiam preni decidon li aŭ ŝi bazita sur la stato de tiu variablo 500 00:25:38,730 --> 00:25:42,430 Se vi estas en la procezo de ŝanĝi la staton de tiu variablo. 501 00:25:42,430 --> 00:25:46,140 >> Do unu el la linioj de SQL ke ni doni vin en PSet 7 specifo 502 00:25:46,140 --> 00:25:47,310 Estas ĉi tie. 503 00:25:47,310 --> 00:25:49,740 Kaj ni ne elspezi grandegan kvanto de tempo paroli pri ĝi. 504 00:25:49,740 --> 00:25:55,100 Sed rezultas, se vi provas aĉeti iun stoko en CS50 Financoj 505 00:25:55,100 --> 00:25:58,000 ke vi jam havas iuj agoj de vi 506 00:25:58,000 --> 00:26:01,750 deziras povi fari nombro aferoj tuj kune. 507 00:26:01,750 --> 00:26:04,360 Vi volas povi efektive, sur alta nivelo, 508 00:26:04,360 --> 00:26:06,700 kontrolu bone, se mi volas aĉeti pli agoj de Libera, 509 00:26:06,700 --> 00:26:08,780 la penny stock ni raporti en la spec, 510 00:26:08,780 --> 00:26:10,660 Mi volas unue ĉeko kiom agoj mi havas. 511 00:26:10,660 --> 00:26:11,810 Kaj supozu estas kvin. 512 00:26:11,810 --> 00:26:14,600 Kaj supozu mi volas aĉeti 10 pli, mi finfine 513 00:26:14,600 --> 00:26:17,069 volas havi 15 agoj de stock. 514 00:26:17,069 --> 00:26:18,360 Do mi devas demandi du demandojn. 515 00:26:18,360 --> 00:26:20,230 Kio estas la stato de la variablo? 516 00:26:20,230 --> 00:26:21,470 Kio estas la stato de la vico? 517 00:26:21,470 --> 00:26:22,970 Kiom da agoj mi havas nuntempe? 518 00:26:22,970 --> 00:26:24,636 Tiam vi volas iri antaŭen kaj ĝisdatigi ĝin. 519 00:26:24,636 --> 00:26:27,720 Do tio estas la analoga al la lakto en kiu vi kontrolu la vico, 520 00:26:27,720 --> 00:26:30,730 kaj tiam vi volas ĝisdatigi ĝin ĉar se vi volas aĉeti 10 kotizoj, 521 00:26:30,730 --> 00:26:32,521 Vi ne volas ŝanĝi la vico 10, vi 522 00:26:32,521 --> 00:26:35,300 volas ŝanĝi ĝin al 5 plus 10 aŭ, kompreneble, 15. 523 00:26:35,300 --> 00:26:40,030 >> Ĉi tiu linio de kodo certigas ke tiuj du ideoj conceptuales 524 00:26:40,030 --> 00:26:42,810 okazi kune aŭ ne. 525 00:26:42,810 --> 00:26:46,920 Neniu, inkludante iuj aliaj uzanto Kiu estas ensalutita en la sama paĝo, 526 00:26:46,920 --> 00:26:49,900 povas iel interrompi la kontrolado de la vico 527 00:26:49,900 --> 00:26:52,960 kaj la ĝisdatigo de la vico, la elekti kaj la ĝisdatigo se vi volas. 528 00:26:52,960 --> 00:26:57,360 Kaj la sintakso estas súper evidentaj, sed ĉi tiu linio, estas longe estas, 529 00:26:57,360 --> 00:27:01,150 certigas ke tiuj du operacioj kontrolu la variablo aŭ kontroli la vico 530 00:27:01,150 --> 00:27:04,660 kaj ĝisdatigi la vico okazi atomically. 531 00:27:04,660 --> 00:27:06,849 >> Ho jen ni reiru. 532 00:27:06,849 --> 00:27:07,890 Teksto mesaĝo sur mia telefono. 533 00:27:07,890 --> 00:27:09,954 Do ni faru ĉi tion Iom pli konkreta. 534 00:27:09,954 --> 00:27:12,120 Supozu ke vi ne efektivigo fridujo, 535 00:27:12,120 --> 00:27:16,400 kaj vi ne implementar PSet 7 sed reala banko, 536 00:27:16,400 --> 00:27:20,000 aŭ ATM, aŭtomata Teller Maŝino, per kiu vi iel 537 00:27:20,000 --> 00:27:22,960 deziras povos plivigligi uzantoj transferir mono 538 00:27:22,960 --> 00:27:24,500 de unu konto al alia. 539 00:27:24,500 --> 00:27:25,100 OK, pendas sur. 540 00:27:25,100 --> 00:27:26,683 Mi iras al enmudecer ĉi nun, dankon. 541 00:27:26,683 --> 00:27:30,450 Do ni volas movi monon de unu konto nombro 542 00:27:30,450 --> 00:27:33,600 en malsaman konton nombro, specife $ 100. 543 00:27:33,600 --> 00:27:37,690 Do ĉi tiu estas speco de arbitran Ekzemple, per ĝi, la ATM, 544 00:27:37,690 --> 00:27:41,060 eble volas ekzekuti du SQL pridemandojn, subtrahi de unu konto, 545 00:27:41,060 --> 00:27:42,430 kaj aldoni al la alia konto. 546 00:27:42,430 --> 00:27:46,766 Sed vi volas certigi ke tiuj du liniojn tiel okazi aŭ ne. 547 00:27:46,766 --> 00:27:48,640 Vi ne volas ion akiranta interrompita. 548 00:27:48,640 --> 00:27:51,440 Vi do ne iaj inteligentaj malbona ulo iel staras ĉe Banko de Ameriko 549 00:27:51,440 --> 00:27:53,270 kun du ATMs antaŭ li kaj iel 550 00:27:53,270 --> 00:27:55,270 ia tajpante en la komandas samtempe, 551 00:27:55,270 --> 00:28:01,230 espereble provas dedukti $ 200 anstataŭe de $ 100 kaj nur havanta $ 100 akreditita. 552 00:28:01,230 --> 00:28:04,450 Mallonge, vi volas ke ĉi tio kondutas precize kiel vi atendas. 553 00:28:04,450 --> 00:28:06,540 >> Kaj la vojon vi faras tiu en SQL datumbazo 554 00:28:06,540 --> 00:28:09,350 vi envolver ĝin en kio estas nomita transakcio. 555 00:28:09,350 --> 00:28:14,290 Laŭvorte en SQL, vi povas nomi CS50 la informpeto funkcio kun citaĵo unquote komenco 556 00:28:14,290 --> 00:28:15,370 transakcio. 557 00:28:15,370 --> 00:28:18,640 Tiam vi povas ekzekuti ajnan numeron de posta SQL pridemandojn, 558 00:28:18,640 --> 00:28:20,870 sed neniu el ili prenu efekto en la datumbazo 559 00:28:20,870 --> 00:28:25,880 ĝis vi nomas informpeto citaĵo unquote commit, se denove uzante PHP. 560 00:28:25,880 --> 00:28:29,810 Kaj en tiu maniero, vi povas certigi ke eĉ se vi havas 1,000 uzantoj ĉiuj 561 00:28:29,810 --> 00:28:32,080 bati vian datumbazon samtempe, SQL 562 00:28:32,080 --> 00:28:34,540 promesos ke tiuj du pridemandojn estos 563 00:28:34,540 --> 00:28:36,740 implementado unu tuj post la alia. 564 00:28:36,740 --> 00:28:40,330 Do vi ne finos kun troo de lakto aŭ malĝusta kvanto, finfine, 565 00:28:40,330 --> 00:28:40,830 mono. 566 00:28:40,830 --> 00:28:43,110 >> Tiel konservi ĉi tio en menso, Ne tiel por PSet 7 567 00:28:43,110 --> 00:28:45,250 sed por fina projektoj Se vi reale 568 00:28:45,250 --> 00:28:49,690 provante movi datumojn ĉirkaŭ trans tabloj kiel vi povus tie. 569 00:28:49,690 --> 00:28:53,980 Sed eble eĉ pli simpla kaj pli evidenta kompreni kun ekzemplo 570 00:28:53,980 --> 00:28:54,860 Estas ĉi tie. 571 00:28:54,860 --> 00:28:57,760 Kaj iu retpoŝtis ni pri tio tute alia tago 572 00:28:57,760 --> 00:28:59,600 kiam li vidis ion similan en linio. 573 00:28:59,600 --> 00:29:03,480 >> Do laŭ mia scio, la pinglo sistemo ne estas vundebla al tiu atako. 574 00:29:03,480 --> 00:29:06,637 Mi havas neniun ideon se ĝi eĉ uzoj la SQL datumbazo sub la kapuĉo. 575 00:29:06,637 --> 00:29:08,470 Sed ni uzas ĝin por pro diskuto. 576 00:29:08,470 --> 00:29:10,178 Jen la ekrano kiu Harvard ulojn inklinas 577 00:29:10,178 --> 00:29:13,620 vidi kiam ensalutadon kun siaj Harvard ID nombro kaj iliaj pinglo. 578 00:29:13,620 --> 00:29:19,020 Kaj supozu ke la pinglo sistemo estis implementado en PHP kaj MySQL 579 00:29:19,020 --> 00:29:22,000 datenbazo, la kodo ke iu eble skribita jarojn 580 00:29:22,000 --> 00:29:23,270 povus aspekti kiel ĉi. 581 00:29:23,270 --> 00:29:25,230 Unue, deklari variablon nomis uzantnomon. 582 00:29:25,230 --> 00:29:27,560 Kaj simple akiri tiun de la POST superglobal. 583 00:29:27,560 --> 00:29:30,140 Tiam akiri alian variablon nomita pasvorton kaj fari same. 584 00:29:30,140 --> 00:29:33,080 Kaj tiam simple ekzekuti tiu longa informpeto tie, 585 00:29:33,080 --> 00:29:36,690 select stelo de uzantoj kie uzantonomo egalas tia kaj tia 586 00:29:36,690 --> 00:29:38,510 kaj pasvorto egalas tian kaj tian. 587 00:29:38,510 --> 00:29:40,660 >> Rimarku ke la frizita krampoj mi uzis ĉi tie 588 00:29:40,660 --> 00:29:42,880 nur signifus PHP, iru antaŭen kaj anstataŭanto 589 00:29:42,880 --> 00:29:45,400 la valoro de tiuj du variabloj pravas. 590 00:29:45,400 --> 00:29:50,090 Ili ne estas strikte necesa, sed inklinas eviti subtila sintaksaj eraroj. 591 00:29:50,090 --> 00:29:53,650 Do tiu aspektas tute korekta unuavide. 592 00:29:53,650 --> 00:29:54,240 Kaj ĝi estas. 593 00:29:54,240 --> 00:29:56,680 Vi povus apliki la pinglo sistemo tiamaniere. 594 00:29:56,680 --> 00:30:00,460 >> Sed supozu, ke la super inteligenta kaj malica studento 595 00:30:00,460 --> 00:30:03,020 enigo ĉi kiel lia aŭ ŝia pinglo. 596 00:30:03,020 --> 00:30:05,550 Do mi forigis la kuglon signoj tie en la imita supren, 597 00:30:05,550 --> 00:30:08,760 kaj mi fakte malkaŝis kion li aŭ ŝi povus esti tajpadon. 598 00:30:08,760 --> 00:30:10,350 Kaj estas iom stranga. 599 00:30:10,350 --> 00:30:13,850 Sed kion elsaltas ĉe vi en potenciale preocupante pri la uzanto enigo, 600 00:30:13,850 --> 00:30:16,450 eĉ se vi havas neniun ideon kio SQL injekto atako signifas. 601 00:30:16,450 --> 00:30:20,300 Kial tio aspektas iom suspektinda? 602 00:30:20,300 --> 00:30:21,050 Kio estas tio? 603 00:30:21,050 --> 00:30:21,550 [Inaudible] 604 00:30:21,550 --> 00:30:24,260 DAVID Malan: La aŭ estas iom suspektema. 605 00:30:24,260 --> 00:30:26,310 Fakte, tio estas ŝlosilvorto de SQL. 606 00:30:26,310 --> 00:30:28,105 Por ke ne aŭguras bone. 607 00:30:28,105 --> 00:30:29,980 La fakto ke ekzistas ĉiuj tiuj solan citaĵoj 608 00:30:29,980 --> 00:30:32,646 there-- fakte, unu el la plej facilaj manierojn rompi iuj datumbazoj 609 00:30:32,646 --> 00:30:35,880 Estas tajpante en nomo kiel O'Reilly kiu havas apostrofon en ĝi 610 00:30:35,880 --> 00:30:38,600 ĉar se la homo kiu verkis la kodo malantaŭ la scenoj 611 00:30:38,600 --> 00:30:41,570 ne enkalkuli ke eble sola citaĵoj en uzanto 612 00:30:41,570 --> 00:30:45,060 enigo, kaj li aŭ ŝi uzas sola citaĵoj en sian kodon, 613 00:30:45,060 --> 00:30:46,040 malbonaj aferoj povas okazi. 614 00:30:46,040 --> 00:30:47,870 >> Fakte, plej malbona ankoraŭ, pripensu tion. 615 00:30:47,870 --> 00:30:50,600 Se tio estis denove la kodo ke iu ĉe Harvard jaroj 616 00:30:50,600 --> 00:30:53,100 antaŭ skribis por la pinglo sistemo, rimarki kio estas 617 00:30:53,100 --> 00:30:56,220 al get anstataŭigita por salutnomon kaj pasvorton 618 00:30:56,220 --> 00:30:59,780 se la uzanto tipoj denove skroob kiel ilia salutnomo 619 00:30:59,780 --> 00:31:03,960 kaj tiam unu, du, tri, kvar, kvin, citaĵo aŭ citaĵo unquote unu egaluloj 620 00:31:03,960 --> 00:31:04,660 citi unu. 621 00:31:04,660 --> 00:31:07,220 Kaj rimarki kio estas ŝlosila jen la uzanto ne 622 00:31:07,220 --> 00:31:09,900 Komencis lian pasvorton aŭ ilia pinglo kun kurzo. 623 00:31:09,900 --> 00:31:12,610 Kaj ili ne finis gxin kun citaĵo ĉar li aŭ ŝi 624 00:31:12,610 --> 00:31:16,315 estas supozante ke se la programisto ne estis tiel akra, 625 00:31:16,315 --> 00:31:18,690 ili tuj havos tiujn sola citaĵoj en sia kodo. 626 00:31:18,690 --> 00:31:19,860 >> Do jen la kodon. 627 00:31:19,860 --> 00:31:23,820 Kaj la anstataŭo ke povus nun okazi estas tiu. 628 00:31:23,820 --> 00:31:26,350 Kaj mi substrekis kion la uzanto tajpita en. 629 00:31:26,350 --> 00:31:28,480 Do antaŭ, post. 630 00:31:28,480 --> 00:31:33,330 Kaj rimarki kio estas milde preocupante nun pri la dekstran duonon de ĉi SQL kodo? 631 00:31:33,330 --> 00:31:36,300 Ĝi estas iom pli kompleksa, rekoni, ol la pridemandojn ni vidis. 632 00:31:36,300 --> 00:31:38,550 Sed tio ne povas eble estus bona afero se vi estas 633 00:31:38,550 --> 00:31:42,240 dirante select stelo, kiu estas unuarangaj ĉion de la uzanto tablo 634 00:31:42,240 --> 00:31:46,630 kie salutnomo egalas skroob kaj Pasvorto egalas unu, du, tri, kvar, 635 00:31:46,630 --> 00:31:49,610 kvin aŭ unu egalas unu. 636 00:31:49,610 --> 00:31:53,860 Kio estas la logika implico de tiu lasta klaŭzo supozeble? 637 00:31:53,860 --> 00:31:55,650 Estas nur ĉiam vera. 638 00:31:55,650 --> 00:31:59,930 >> Kaj ĉar ni ia divenis aŭ eltrovis per provo kaj eraro 639 00:31:59,930 --> 00:32:02,760 ke la programador kiu skribis ĉi kodo ne 640 00:32:02,760 --> 00:32:07,250 anticipi homa aŭ malbona persono tajpado per apostrofoj tiel, 641 00:32:07,250 --> 00:32:10,350 ni povas sintakse kompletigi la SQL query 642 00:32:10,350 --> 00:32:12,260 kun ion sensencan sed iu kiu 643 00:32:12,260 --> 00:32:15,930 estas sintakse malĝusta kiu ĉiam taksas al vera. 644 00:32:15,930 --> 00:32:19,130 Do se tiu kodo estas uzata por respondi la demando vera aŭ malvera devus 645 00:32:19,130 --> 00:32:22,930 tiu uzanto estos permesita pasi, La respondo ĉiam ŝajne irante 646 00:32:22,930 --> 00:32:26,930 esti vera ĉar tio estas ĉiam irante elekti ion el la datumbazo 647 00:32:26,930 --> 00:32:29,280 ĉar unu kompreneble ĉiam egalas unu. 648 00:32:29,280 --> 00:32:30,360 >> Do kio estas la solvo? 649 00:32:30,360 --> 00:32:33,290 Nu en PSet 7, ni reale eviti ĉi ĉiuj kune. 650 00:32:33,290 --> 00:32:37,360 Ni donas vin konsulto funkcio, kaj ni kuraĝigi vin uzi demandosignojn 651 00:32:37,360 --> 00:32:40,430 kiel anstataŭaĵojn, simila spirite al printf estas% s 652 00:32:40,430 --> 00:32:43,710 sed kio estas ŝlosilo pri la demando markoj jen se vi efektive tralegi 653 00:32:43,710 --> 00:32:46,950 functions.php, kie nia informpeto funkcio estas implementado, 654 00:32:46,950 --> 00:32:52,780 tiuj demandosignojn savitoj, per io potenciale danĝeraj 655 00:32:52,780 --> 00:32:58,210 kiel sola citaĵo renversigxis enen eskapis sola citaĵo. 656 00:32:58,210 --> 00:33:00,590 >> Do tio estas kio estas vere okazas se vi 657 00:33:00,590 --> 00:33:04,850 uzi CS50 la informpeto funkcio aŭ ajna nombro de triaj libera bibliotekoj kiuj 658 00:33:04,850 --> 00:33:06,000 fari same. 659 00:33:06,000 --> 00:33:09,850 Ne gravas en tiu ĉi kazo, en verda, se la uzanto tajpita en simpla citaĵo 660 00:33:09,850 --> 00:33:12,070 ĉar la informpeto funkcio kiun ni skribis estas 661 00:33:12,070 --> 00:33:15,120 tuj aldonos deklivajn streketojn antaŭe tian danĝeran citaĵo. 662 00:33:15,120 --> 00:33:17,360 Do tio ne estas, Fakte, tuj estos legit. 663 00:33:17,360 --> 00:33:20,910 Ĉi tio estas kiel tajpado en freneza rigardante Pasvorto tio kompreneble ne tuj 664 00:33:20,910 --> 00:33:23,490 esti skroob la reala pasvorton. 665 00:33:23,490 --> 00:33:28,260 >> Do la takeaway por CS50 estas unu, absolute ĉiam uzi ion 666 00:33:28,260 --> 00:33:30,860 kiel CS50 la informpeto funkcio aŭ la suba biblioteko, 667 00:33:30,860 --> 00:33:32,560 kio okazas al nomi PDO. 668 00:33:32,560 --> 00:33:35,880 Sed neniam, neniam, neniam faros kodo kiel ĉi 669 00:33:35,880 --> 00:33:39,472 sen eskapi aŭ frotante kiel oni diras via enigoj. 670 00:33:39,472 --> 00:33:42,430 Kaj vi iam verŝajne ektrovas iun retejon kiel ĉi. 671 00:33:42,430 --> 00:33:46,060 Fakte, ŝajnas esti la kazo kiel en flughavenoj kaj hoteloj en lokoj 672 00:33:46,060 --> 00:33:48,880 kie havas liberan Wi-Fi aliro kiu vi devas ensaluti, 673 00:33:48,880 --> 00:33:51,010 tiuj retejoj estas ĉiam horore implementado. 674 00:33:51,010 --> 00:33:55,680 Do ia amuza hejme ekzercon, ne pro malicaj intencoj aŭ pli 675 00:33:55,680 --> 00:33:59,170 de amuza survoje ekzerco, estas simple tajpi 676 00:33:59,170 --> 00:34:02,850 apostrofo, sola citaĵo, en formo de iu retpaĝaro 677 00:34:02,850 --> 00:34:03,810 kaj vidu kio okazas. 678 00:34:03,810 --> 00:34:06,660 Kaj se la servilo frakasas aŭ donas vi ian erarmesaĝo, 679 00:34:06,660 --> 00:34:09,690 ĝi povas tre bone esti ke iu ne anticipis tion. 680 00:34:09,690 --> 00:34:15,239 Kaj tiam vi devus alarmi la taŭga aŭtoritatoj kaj duan fojon. 681 00:34:15,239 --> 00:34:20,843 >> Do nun vi uloj devus espereble kompreni iom pli geek humuro tie. 682 00:34:20,843 --> 00:34:24,120 >> [Ridado] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID Malan: Vi scias ke vi estas geek. 685 00:34:29,070 --> 00:34:30,944 Por la sekvaj jaroj, vi rememoros 686 00:34:30,944 --> 00:34:33,520 kiu iom Bobby Tabloj estas pro tiu karikaturo tie. 687 00:34:33,520 --> 00:34:36,760 Observu do, ke en menso kiel ni kunteksto ŝaltilo lasta fojo 688 00:34:36,760 --> 00:34:38,770 hodiaŭ Javascript. 689 00:34:38,770 --> 00:34:41,600 Ni pasigis relative malgrandan tempo sur la sintakso de PHP 690 00:34:41,600 --> 00:34:43,440 ĉar ĝi estas reale súper simila al C. 691 00:34:43,440 --> 00:34:47,300 Kaj bonguste sufiĉe, Ĝavoskripto tro Estas súper simila al C sintakso 692 00:34:47,300 --> 00:34:49,639 tiel kiel ni vidas en nur momento kaj kiel ni 693 00:34:49,639 --> 00:34:51,205 vidu poste tiun semajnon en aparta. 694 00:34:51,205 --> 00:34:54,080 Kion vi povas fari kun tiu ĉi lingvo, tamen, estas des pli potenca, 695 00:34:54,080 --> 00:34:55,790 precipe kun APIs. 696 00:34:55,790 --> 00:34:56,960 >> Sed unue rapida ĝiras. 697 00:34:56,960 --> 00:35:00,450 Do, en JavaScript, ekzistas neniu ĉefa funkcio, kiu estas bela. 698 00:35:00,450 --> 00:35:02,650 Kiel kun PHP, vi povas simple skribi kodon. 699 00:35:02,650 --> 00:35:04,310 Kondiĉoj aspekti ĉi. 700 00:35:04,310 --> 00:35:07,100 Kaj Bulea esprimoj multobligita aspektas kiel tiu aŭ kiel tiu. 701 00:35:07,100 --> 00:35:09,530 Ŝaltiloj ekzistas, kaj ili povus aspekti kiel ĉi. 702 00:35:09,530 --> 00:35:10,970 Kvar maŝojn aspekti ĉi. 703 00:35:10,970 --> 00:35:12,390 Dum maŝojn aspekti ĉi. 704 00:35:12,390 --> 00:35:14,160 Ĉu Momentoj aspekti ĉi. 705 00:35:14,160 --> 00:35:16,850 Kaj tiam arrays aspekti tiu, tre simila al PHP. 706 00:35:16,850 --> 00:35:20,740 Sed rimarki, ke en JavaScript vin deklari variablon ne kun dolaro 707 00:35:20,740 --> 00:35:25,190 subskribi, ne kun datumtipo sed laŭvorte dirante var por variablo antaŭ ĝi. 708 00:35:25,190 --> 00:35:27,900 Ankaux gxi malstrikte tajpita en tiu havas tipoj, 709 00:35:27,900 --> 00:35:29,729 sed vi ne eksplicite deklaras ilin. 710 00:35:29,729 --> 00:35:31,520 Kaj tiam ŝnuro, por Ekzemple, eble rigardu 711 00:35:31,520 --> 00:35:34,350 tiel, ke kordoj vokite s en tiu kazo. 712 00:35:34,350 --> 00:35:35,410 Kaj tiam objekto. 713 00:35:35,410 --> 00:35:37,010 Kaj jen ni vidos pli antaŭ longe. 714 00:35:37,010 --> 00:35:41,470 Kaj objekto estas eble unu el la plej komune vidataj datumstrukturoj 715 00:35:41,470 --> 00:35:44,050 en JavaScript bazita programo ĉar ĝi permesas 716 00:35:44,050 --> 00:35:46,680 vi asocii arbitra ŝlosila valoro paroj nur 717 00:35:46,680 --> 00:35:51,240 kiel PHP la asociaj tabeloj kaj ĝuste kiel viaj propraj hash tablo 718 00:35:51,240 --> 00:35:54,042 aŭ provu kiel ni implementado kelkaj semajnoj reen. 719 00:35:54,042 --> 00:35:56,250 Do ni efektive vidas kion ni povas fari kun JavaScript. 720 00:35:56,250 --> 00:35:59,410 Kaj precipe, tiu estas lavbutiko lerta de karakterizaĵoj 721 00:35:59,410 --> 00:36:02,300 ke retumiloj havas tiun ni permesos conectarse Ĝavoskripto 722 00:36:02,300 --> 00:36:05,470 en retejo de la sekva modo. 723 00:36:05,470 --> 00:36:09,340 JavaScript estas ofte uzata kiel kliento flanko skripta lingvo. 724 00:36:09,340 --> 00:36:10,130 Ĝi ne estas kompilitaj. 725 00:36:10,130 --> 00:36:11,370 Ankaux gxi interpretita. 726 00:36:11,370 --> 00:36:15,740 Sed kontraste PHP, kiu estis kuranta sur la servilo, en la ttt-servilo, 727 00:36:15,740 --> 00:36:18,220 aŭ profunda ene de la klientoj, Ĝavoskripto 728 00:36:18,220 --> 00:36:22,190 estas malsama ĉar ĝi kutime kuras en la navegador. 729 00:36:22,190 --> 00:36:26,060 >> Do ajna kodo JavaScript vi komencas skribi por PSet 8, aŭ via fina projekto, 730 00:36:26,060 --> 00:36:29,890 aŭ en la reala mondo estas ĝenerale irante esti savitaj en la servilo, absolute 731 00:36:29,890 --> 00:36:33,110 en dot HTML aŭ punkto JS por JavaScript dosiero. 732 00:36:33,110 --> 00:36:35,770 Sed la retumilo tuj elŝuti kiujn Ĝavoskripto 733 00:36:35,770 --> 00:36:39,530 kodo por via propra petskribo de Chrome, aŭ ie, aŭ Firefox, aŭ kion ajn. 734 00:36:39,530 --> 00:36:43,870 Kaj la kodo estas vere tuj akiri ekzekutitaj ene de via propra retumilo. 735 00:36:43,870 --> 00:36:46,560 Nur por fari tion pli realaj, ni vidas ĉi tion en konkreta formo. 736 00:36:46,560 --> 00:36:50,120 >> Ni havas neniun ideon kio tiu kodo faras sen vere legado tra ĝi. 737 00:36:50,120 --> 00:36:52,670 Sed permesu al mi iri al Facebook.com sen ensalutadon. 738 00:36:52,670 --> 00:37:00,440 Lasu min iri inspekti Elemento kaj iri al, diru, Reto kaj reŝarĝi la paĝon. 739 00:37:00,440 --> 00:37:04,150 Kaj ni see-- lasu min movi Reŝarĝi la Paĝo akiri ĉiujn petojn por novaj. 740 00:37:04,150 --> 00:37:08,850 Kaj la unua dosiero mi vidas estas CSS CSS. 741 00:37:08,850 --> 00:37:10,880 Jen la unua JavaScript dosiero, kaj mi havas 742 00:37:10,880 --> 00:37:14,600 neniun ideon kio tiu faras, sed ĉi tie Estas iuj de la JavaScript kodo 743 00:37:14,600 --> 00:37:16,180 kiu pelas Facebook. 744 00:37:16,180 --> 00:37:18,400 Estas eĉ ne vere ke malkaŝante zomi. 745 00:37:18,400 --> 00:37:20,260 Ĝi estas ankoraŭ same absurda. 746 00:37:20,260 --> 00:37:24,341 >> Sed vi vidos eĉ malsupre, ekzistas eĉ pli de tiuj JavaScript dosierojn. 747 00:37:24,341 --> 00:37:24,840 Whoops. 748 00:37:24,840 --> 00:37:25,440 Tio estas ping. 749 00:37:25,440 --> 00:37:28,550 Mallevigxu iom plu, plu, plu. 750 00:37:28,550 --> 00:37:29,894 Ekzistas unu. 751 00:37:29,894 --> 00:37:31,238 Ekzistas unu. 752 00:37:31,238 --> 00:37:31,880 Ekzistas unu. 753 00:37:31,880 --> 00:37:35,820 >> Do kvankam Facebook, malantaŭ la scenoj, estas skribita parte en PHP 754 00:37:35,820 --> 00:37:39,100 kaj Facebook propra versio gxiajn tie estas grandega kvanto de Ĝavoskripto. 755 00:37:39,100 --> 00:37:41,330 Fakte, neniu el la babili vi faras en Facebook, 756 00:37:41,330 --> 00:37:45,520 iu el la inline timeline ĝisdatigoj kiuj okazas en reala tempo, ĉiuj kiuj 757 00:37:45,520 --> 00:37:47,944 estas pelita de Ĝavoskripto. 758 00:37:47,944 --> 00:37:48,444 Yeah? 759 00:37:48,444 --> 00:37:50,235 >> Publiko: Mi ne certas se tio estas Facebook, 760 00:37:50,235 --> 00:37:53,624 sed mi pensas ke Facebook disvolvis ilia propra interna kodo lingvon? 761 00:37:53,624 --> 00:37:54,540 DAVID Malan: ili faris. 762 00:37:54,540 --> 00:37:58,110 Do tio estas kial mi diras varianco de PHP nomita Hip Hop ke ili reale 763 00:37:58,110 --> 00:38:03,440 aldonis karakterizaĵojn al tia ke kiam Markon unua implementado Facebook 764 00:38:03,440 --> 00:38:04,710 Ĝi estis skribita en PHP. 765 00:38:04,710 --> 00:38:07,370 Kaj tiu speco de restis la varo de antaŭa fino lingvo 766 00:38:07,370 --> 00:38:09,030 ke oni uzu por tre iliaj kodigon, sed 767 00:38:09,030 --> 00:38:11,870 Ne estis, ke lingvo skvamojn aparte bone miliardoj 768 00:38:11,870 --> 00:38:12,630 de personoj. 769 00:38:12,630 --> 00:38:15,300 Kaj tiel ili aldonis siajn proprajn plibonigoj malantaŭ la scenoj. 770 00:38:15,300 --> 00:38:17,049 Kaj ili uzos ajnan numeron de aliaj lingvoj 771 00:38:17,049 --> 00:38:19,170 por diversaj pecoj de siajn infrastrukturon. 772 00:38:19,170 --> 00:38:24,080 Do jes, ĝi estas varianco de kion ni nun scias kiel PHP. 773 00:38:24,080 --> 00:38:26,610 >> Do ni rigardu en paro de ekzemploj 774 00:38:26,610 --> 00:38:28,890 de kiel ni povus uzi JavaScript tie. 775 00:38:28,890 --> 00:38:32,530 En hodiaŭa fontkodo, ni havas faskon de dosieroj, la unua el kiuj, 776 00:38:32,530 --> 00:38:34,090 ni nomas DOM nulo. 777 00:38:34,090 --> 00:38:36,770 Do DOM nulo aspektas jene. 778 00:38:36,770 --> 00:38:40,730 Lasu min iri en tiun dosierujon kaj malfermu domzero.html, 779 00:38:40,730 --> 00:38:44,970 la supro de kiuj havas doc tipo deklaron jene tie venas HTML 5. 780 00:38:44,970 --> 00:38:46,440 Kaj nun jen la HTML-etikedo. 781 00:38:46,440 --> 00:38:47,540 Jen la kapo etikedo. 782 00:38:47,540 --> 00:38:49,210 Kaj jen kio novas hodiaŭ. 783 00:38:49,210 --> 00:38:52,620 >> Ni nun havas skripton etikedo ene de la kapo de la paĝo. 784 00:38:52,620 --> 00:38:55,290 Kaj tio ŝajne faras tre malmulte, sed avizo 785 00:38:55,290 --> 00:38:58,410 ke mi difinis skripto, JavaScript. 786 00:38:58,410 --> 00:39:01,050 Kaj kiel flanken, ĉar tiu Estas komuna eraro, 787 00:39:01,050 --> 00:39:05,220 JavaScript devas absolute nenion fari kun Java, la lingvo 788 00:39:05,220 --> 00:39:08,010 ke iuj el vi povus lernis en APCs. 789 00:39:08,010 --> 00:39:10,480 Ĝi estis pli de marketing afero ol io, 790 00:39:10,480 --> 00:39:12,980 rajdante la coattails Java jarojn. 791 00:39:12,980 --> 00:39:17,300 Sed JavaScript, neniel rilatas al Java, ĝuste simile, kaj annoyingly, 792 00:39:17,300 --> 00:39:18,480 konfuze nomita. 793 00:39:18,480 --> 00:39:21,890 >> Do jen kiel vi rakontos funkcio en JavaScript, laŭvorte diras funkcio, 794 00:39:21,890 --> 00:39:24,556 tiam la nomo de la funkcio, tiam ajna argumentoj eble prenos, 795 00:39:24,556 --> 00:39:25,530 ĝuste kiel en PHP. 796 00:39:25,530 --> 00:39:28,990 Rezultas en JavaScript, unu el la plej ĝena funkcioj kiuj ekzistas estas Alert. 797 00:39:28,990 --> 00:39:31,392 Tiu estas malgranda fenestro kiu estos popo kaj alarmi vi 798 00:39:31,392 --> 00:39:32,600 iu peco de informo. 799 00:39:32,600 --> 00:39:33,766 Ĝi estas ĝenerale malaprobita. 800 00:39:33,766 --> 00:39:35,980 Sed ni uzu ĝin kiel nia unua ekzerco tie. 801 00:39:35,980 --> 00:39:37,900 >> Rimarki kelkajn trajtojn de Ĝavoskripto. 802 00:39:37,900 --> 00:39:41,524 Sola citaĵoj kaj duoblaj citiloj Ne vere gravas anymore. 803 00:39:41,524 --> 00:39:43,690 Sola citaĵoj kaj duobla citiloj povas esti interŝanĝita, 804 00:39:43,690 --> 00:39:46,220 dum en C, oni devas uzi citiloj por kordoj, 805 00:39:46,220 --> 00:39:48,150 kaj vi havas du solajn citas por signojn. 806 00:39:48,150 --> 00:39:51,150 En la Ĝavoskripto mondo, multaj personoj, la plimulto de homoj 807 00:39:51,150 --> 00:39:54,970 uzi solan citaĵoj ĉirkaŭ kordoj simple ĉar ĝi estas stila afero. 808 00:39:54,970 --> 00:39:58,330 Sed kio estas la pli operatoro tie, kiun ni ne vidis antaŭe? 809 00:39:58,330 --> 00:39:59,836 >> Publiko: kunmeto. 810 00:39:59,836 --> 00:40:00,960 DAVID Malan: kunmeto. 811 00:40:00,960 --> 00:40:02,450 Do C eĉ ne havas tiun. 812 00:40:02,450 --> 00:40:04,820 PHP havas la skalara operatoro, kiu tion faras. 813 00:40:04,820 --> 00:40:09,710 Ĝavoskripto havas la pli operatoro, kiu konfuze estas simple kiel Java. 814 00:40:09,710 --> 00:40:11,440 Nun kio okazas ĉi tie? 815 00:40:11,440 --> 00:40:14,260 >> Do tie estas kie baza kompreno de tiu bildo 816 00:40:14,260 --> 00:40:17,010 ni ĵetis supren paro tagoj venas en ludon. 817 00:40:17,010 --> 00:40:19,620 Rememoru kiam ni havis simplan versio de HTML page-- 818 00:40:19,620 --> 00:40:20,830 ĝi nur diris, saluton mondo. 819 00:40:20,830 --> 00:40:22,770 Kaj tiam ni tiris arbo dekstren, kio 820 00:40:22,770 --> 00:40:27,320 havis amaseton da ortanguloj kaj linioj konektante ilin kiel familio arbo. 821 00:40:27,320 --> 00:40:30,820 Do tio estas la tn DOM aŭ Document Object Model. 822 00:40:30,820 --> 00:40:36,759 Kaj ĝi rezultas ke vi povas aliri ortanguloj en tiu arbo kun sintakso 823 00:40:36,759 --> 00:40:37,550 kiel sekva. 824 00:40:37,550 --> 00:40:41,370 Vi laŭvorte diras dokumento, kiu estas speciala tutmonda variablo en Ĝavoskripto 825 00:40:41,370 --> 00:40:45,890 programo kiu havas funkcion asociita kun ĝi, ke vi povas aliri 826 00:40:45,890 --> 00:40:50,280 simila al struct, sed vi simple diru dot kaj tiam la funkcia nomo, 827 00:40:50,280 --> 00:40:52,390 ricevas elementon de ID. 828 00:40:52,390 --> 00:40:55,460 >> La elemento Mi volas ricevi estas ŝajne citi unquote nomo. 829 00:40:55,460 --> 00:40:57,150 Kaj tiam mi volas trovi ĝian valoron. 830 00:40:57,150 --> 00:40:58,330 Nun ni ricevas antaŭ ni. 831 00:40:58,330 --> 00:41:00,038 Mi eĉ ne certas kion ĉiuj ĉi estas pri. 832 00:41:00,038 --> 00:41:03,000 Ni rapide antaŭen al la HTML de la paĝo, kiu estas súper simpla. 833 00:41:03,000 --> 00:41:05,370 >> Rimarki ke mi difinis Formo malsupren tie. 834 00:41:05,370 --> 00:41:07,940 Notice Mi transdonas gxin unika ID, kvankam ni ne uzis 835 00:41:07,940 --> 00:41:08,870 tiu atributo antaŭe. 836 00:41:08,870 --> 00:41:11,300 Sed tio ekzistas en HTML. 837 00:41:11,300 --> 00:41:15,570 Vi povas unike identigi iujn chunk de HTML kun identificador ŝatas ĉi. 838 00:41:15,570 --> 00:41:19,880 >> Notice nun this-- rezultas HTML Elportas, po ke lavbutiko listo 839 00:41:19,880 --> 00:41:22,490 antaŭ momento, tuta faskon da okazaĵo manipuladores. 840 00:41:22,490 --> 00:41:25,060 Kaj tiu evento traktilo diras sur submetiĝi. 841 00:41:25,060 --> 00:41:28,730 Sur la uzanto submetiĝo de tiu formo, alvoki la sekvan kodon. 842 00:41:28,730 --> 00:41:31,360 Kaj la kodo kiu okazas esti nomita aŭ ekzekutitaj 843 00:41:31,360 --> 00:41:35,260 Estas ĝuste tio, la greka funkcio sekvita reveno falsa. 844 00:41:35,260 --> 00:41:37,360 Ĉio alia devus esti bela familiara. 845 00:41:37,360 --> 00:41:42,050 >> Jen enigo de tipo teksto, kies ID, en tiu kazo, estas iranta esti nomo. 846 00:41:42,050 --> 00:41:45,430 Ni ne havas la veran nomon atributo ĉi time-- kaj submeto-butonon. 847 00:41:45,430 --> 00:41:48,330 Do la sekvonta pagxo aspektas kiel ĉi. 848 00:41:48,330 --> 00:41:52,890 Kaj la rezultanta konduto, vi vidos, aspektas kiel ĉi. 849 00:41:52,890 --> 00:41:56,940 La paĝo lokaj gastigantoj diras, saluton Davido, malfacile oni estetike agrablaj 850 00:41:56,940 --> 00:41:58,340 maniero saluti uzanto. 851 00:41:58,340 --> 00:41:59,950 Sed kio vere okazas? 852 00:41:59,950 --> 00:42:01,360 >> Nu, konsideru kia estas. 853 00:42:01,360 --> 00:42:02,310 Ĉi tiu estas teksto kampo. 854 00:42:02,310 --> 00:42:04,635 Kaj laŭ la HTML, mi donis ĝin 855 00:42:04,635 --> 00:42:07,350 identificador sola nomita citaĵo unquote nomo. 856 00:42:07,350 --> 00:42:09,770 Dume, mi diris kiam la uzanto prezentas ĉi formon 857 00:42:09,770 --> 00:42:13,820 batante Enter aŭ klakante la Submit butonon vokas la funkcion nomita Salutu 858 00:42:13,820 --> 00:42:15,410 kaj tiam revenu Falsaj. 859 00:42:15,410 --> 00:42:16,870 Ni konsideru tiujn inverse. 860 00:42:16,870 --> 00:42:20,590 Rimarki kiam mi klakas Submetu, la URL de ĉi tiu paĝo ne ŝanĝas. 861 00:42:20,590 --> 00:42:22,420 La retumilo icon ne komencis ŝpini. 862 00:42:22,420 --> 00:42:27,050 Mi ne iras ie, kaj tio estas laŭvorte ĉar mi diris reveni falsaj. 863 00:42:27,050 --> 00:42:31,534 Reiru Falsaj fuŝkontaktoj aŭ haltoj la defaŭlta konduto de formo. 864 00:42:31,534 --> 00:42:33,700 Tial do lasas nin kun ĉi tiu lasta demando. 865 00:42:33,700 --> 00:42:34,764 Kion Salutu fari? 866 00:42:34,764 --> 00:42:36,680 Nu, Salutu ŝajne nomas funkcion nomita 867 00:42:36,680 --> 00:42:39,250 Atentigo, pasas en unu longa argumento tio 868 00:42:39,250 --> 00:42:43,950 la rezulto de concatenando kune faskon de Pitono, saluton komo spaco, 869 00:42:43,950 --> 00:42:45,810 tiam ajn tiu revenas. 870 00:42:45,810 --> 00:42:51,490 Do dokumento estas kiel tutmonda variablo tiun radikon de tiu arbo, 871 00:42:51,490 --> 00:42:55,560 nomante speciala funkcio, alie nun konata kiel metodo. 872 00:42:55,560 --> 00:42:57,650 Funkcio tio ene de variablo estas 873 00:42:57,650 --> 00:42:59,640 nomita metodo anstataŭ funkcio. 874 00:42:59,640 --> 00:43:01,570 >> Do nepre elementon de ID. 875 00:43:01,570 --> 00:43:03,940 Kio elemento vi volas akiri por lia IRU? 876 00:43:03,940 --> 00:43:06,970 Citi unquote nomon kaj tiam specife taksas. 877 00:43:06,970 --> 00:43:12,000 Do alivorte, ke kodo simple Trovas la teksto kampo kies ID estas nomo 878 00:43:12,000 --> 00:43:13,380 kaj do ricevas sian valoron. 879 00:43:13,380 --> 00:43:16,460 Do se mi ŝanĝas ĉi kaj diru Davin anstataŭ David 880 00:43:16,460 --> 00:43:20,670 kaj alklaku Submetu, nun ni havi saluto por Davin. 881 00:43:20,670 --> 00:43:22,890 >> Bone, do ĉiuj fajnan kaj bonan. 882 00:43:22,890 --> 00:43:25,480 Sed ni vidu se ni povas fari tio iom purigisto ekde simple 883 00:43:25,480 --> 00:43:28,190 skribi kodon kiel tio Ĝenerale tuj estos malaprobita. 884 00:43:28,190 --> 00:43:30,060 Tiu tuj serĉos timinda. 885 00:43:30,060 --> 00:43:32,330 Sed kio estas la unua diferenco, ke vi rimarku tie 886 00:43:32,330 --> 00:43:35,970 en tiu versio krom la enoficigos ŝanĝante al DOM unu? 887 00:43:35,970 --> 00:43:41,110 Kio strukture aspektas malsama pri tiu kontre la aliaj? 888 00:43:41,110 --> 00:43:41,932 Yeah? 889 00:43:41,932 --> 00:43:43,890 Publiko: Ĉu la formo sur supro de la skripto nun? 890 00:43:43,890 --> 00:43:46,570 DAVID Malan: Jes, la formo estas supre de la skripto por iu kurioza kialo. 891 00:43:46,570 --> 00:43:48,736 Do tio estas la unua aĵo kiuj elsaltas ĉe mi, ankaŭ. 892 00:43:48,736 --> 00:43:50,990 Kaj dankeme almenaŭ, tiu parto estas identaj. 893 00:43:50,990 --> 00:43:53,470 Do la sola afero kiu ŝajnas esti malsama estas tiu. 894 00:43:53,470 --> 00:43:55,296 >> Do jen kio estas neta pri Ĝavoskripto 2. 895 00:43:55,296 --> 00:43:57,420 Kaj faras malfacile kompreni unuavide, 896 00:43:57,420 --> 00:44:00,670 speciale por fina projektoj se Vi rigardata specimenon kodo linio, 897 00:44:00,670 --> 00:44:04,200 sed bolas malsupren al kelkaj baza sintaksa karakterizaĵoj. 898 00:44:04,200 --> 00:44:06,230 Jen denove estas ke tutmonda variablo dokumento. 899 00:44:06,230 --> 00:44:09,540 Jen denove estas tiu metodo aŭ funkcio kiu diras akiri la elemento de ID. 900 00:44:09,540 --> 00:44:11,570 Ĉi tiu fojo mi volas akiri la ID nomita demo. 901 00:44:11,570 --> 00:44:12,490 Kie ĝi estas? 902 00:44:12,490 --> 00:44:15,400 Tio ŝajne dekstra tie, la formo mem. 903 00:44:15,400 --> 00:44:20,010 >> Kaj nun rimarkis ke ŝajne, se mi reiri ke nodo el la arbo 904 00:44:20,010 --> 00:44:22,940 reprezentas la formo mem, ne teksta kampo 905 00:44:22,940 --> 00:44:26,970 Ĝi rezultas ke formo, ke nodo aŭ rektangulo el la arbo, 906 00:44:26,970 --> 00:44:30,450 havas, kion ni nomas propraĵo, tre, tre, tre simila 907 00:44:30,450 --> 00:44:35,390 spirite al struct en C. Estas nur datuma membro ene de tiu rektangulo. 908 00:44:35,390 --> 00:44:38,300 >> Do mi havas la formon ĉi tie, kaj mi kunigante, 909 00:44:38,300 --> 00:44:44,650 aŭ mi asignanta, lia On Submit traktilo aŭ prefere On Proponu propraĵo 910 00:44:44,650 --> 00:44:45,740 La jena funkcio. 911 00:44:45,740 --> 00:44:49,000 Kaj tio estas, de for, la plej freneza afero tiel malproksime sintakse. 912 00:44:49,000 --> 00:44:53,610 Rezultas en JavaScript kaj en PHP, kaj sincere, cetere en C, 913 00:44:53,610 --> 00:44:58,990 eĉ se ni ne faros, vi povas aldonu sennoma, anonima, aŭ AKA lambda 914 00:44:58,990 --> 00:45:03,000 funkcioj kiuj ne havas nomon sed povas nomi tamen. 915 00:45:03,000 --> 00:45:07,050 >> Do kion mi faras ĉi tie estas mi asignanta ĉi On Proponu posedaĵo, kiun 916 00:45:07,050 --> 00:45:14,330 estas ene de tiu nodo miaj DOM ligno; funkcio, Funkcio montrilo se vi volas. 917 00:45:14,330 --> 00:45:16,310 Ke funkcio ne havas nomo, sed tio ne 918 00:45:16,310 --> 00:45:19,110 gravas ĉar ni vidos en momento kiel nomi ĝin. 919 00:45:19,110 --> 00:45:21,780 Kiam tiu funkcio estas vokita, tiu kodo prenas ekzekutitaj, tiam 920 00:45:21,780 --> 00:45:24,210 falsa redonas ĝuste kiel antaŭe. 921 00:45:24,210 --> 00:45:25,800 >> Sed rimarki kion mi faris. 922 00:45:25,800 --> 00:45:27,830 Ĉe tiu punkto en la rakonton, mi havas formon. 923 00:45:27,830 --> 00:45:30,190 Ĝi estas akiris unikan ID nomita demo. 924 00:45:30,190 --> 00:45:33,740 Cxi tie, mi havas skripton etikedo kiu ekzekutas la sekva kodo. 925 00:45:33,740 --> 00:45:37,720 Ĝi atribuas al tiu nodo en La arbo estas Sur Submit 926 00:45:37,720 --> 00:45:40,260 propraĵo tiu funkcio ĉi tie. 927 00:45:40,260 --> 00:45:44,310 Kaj ĝuste per naturo de kiel foliumiloj funkcias, Kiam mi nun klaku Proponu aŭ batis Enter, 928 00:45:44,310 --> 00:45:45,889 domadministranto tuj get nomata. 929 00:45:45,889 --> 00:45:48,680 Ĝi ne bezonas nomon pro kiu la heck zorgas kio ĝi estas nomata. 930 00:45:48,680 --> 00:45:52,540 La nura tempo iam tuj akiri nomita estas kiam mi sendi la formularon. 931 00:45:52,540 --> 00:45:55,130 Ne estas bezono por mi la homa programisto, 932 00:45:55,130 --> 00:45:57,330 efektive nomas ĝin aliloke. 933 00:45:57,330 --> 00:46:00,720 >> Nun kiel teaser, kvazaŭ ne gravas klinante sufiĉe, 934 00:46:00,720 --> 00:46:03,330 ni povas eĉ fari tiun aspektas pli kamufla uzanta 935 00:46:03,330 --> 00:46:05,850 súper populara biblioteko nomita jQuery. 936 00:46:05,850 --> 00:46:08,760 Fakte jQuery kaj JavaScript Ofte conflated. 937 00:46:08,760 --> 00:46:12,790 Kaj kion ni faros merkrede estas komenco uzante tiun lingvon kaj tiuj bibliotekoj 938 00:46:12,790 --> 00:46:16,030 konstrui pli nesinkrona kaj dinamikaj aplikoj 939 00:46:16,030 --> 00:46:18,950 kiel mapo atingi aplikaĵoj, aplikoj 940 00:46:18,950 --> 00:46:22,360 ke ĝisdatigi la retpaĝon en reala tempo, multe kiel Facebook aŭ Gchat 941 00:46:22,360 --> 00:46:27,130 faru, kaj ne plu nur pri batante Proponu per get aŭ nur post 942 00:46:27,130 --> 00:46:27,630 sole. 943 00:46:27,630 --> 00:46:29,055 Do mi vidos vin merkredon. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [MUZIKO Ludante] 946 00:46:35,550 --> 00:48:09,728