1 00:00:00,000 --> 00:00:01,940 >> [REPRODUCCIÓ DE MÚSICA] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID Malan: Aquest és CS 50, i aquest és el començament de la setmana nou. 4 00:00:14,620 --> 00:00:18,240 I el que nosaltres pensem que ho fem avui no és només tancar el capítol de la setmana del passat 5 00:00:18,240 --> 00:00:22,670 material d'on ens centrem en el servidor programació web lateral amb PHP i SQL, 6 00:00:22,670 --> 00:00:23,549 una mica de matèria de base de dades. 7 00:00:23,549 --> 00:00:25,590 Parlarem una mica de avui de seguretat i després 8 00:00:25,590 --> 00:00:29,590 transició a una programació del costat del client llenguatge conegut com JavaScript. 9 00:00:29,590 --> 00:00:31,330 Però primer, una mica de redempció. 10 00:00:31,330 --> 00:00:35,030 >> Vostè pot recordar que en Dimecres, em vaig disposar 11 00:00:35,030 --> 00:00:37,550 per escriure una pàgina web que va prendre a l'entrada de l'usuari 12 00:00:37,550 --> 00:00:41,120 per un formulari HTML que després s'emmagatzema que els noms d'entrada de l'usuari, telèfon 13 00:00:41,120 --> 00:00:43,124 números, i el telèfon mòbil portadors a la base de dades. 14 00:00:43,124 --> 00:00:45,540 I després vaig tenir una mica d'ordre script de línia escrit en PHP 15 00:00:45,540 --> 00:00:47,956 que se suposava que iterar sobre les files a la base de dades 16 00:00:47,956 --> 00:00:49,400 i enviar missatges de text. 17 00:00:49,400 --> 00:00:53,870 Malgrat diversos, de diversos intents, ens no va aconseguir que el treball per al final. 18 00:00:53,870 --> 00:00:57,820 >> Així que em vaig passar tota la setmana de treball en aquest codi per dur-nos més enllà del punt 19 00:00:57,820 --> 00:01:01,220 on ho vam deixar, amb la qual cosa tot Vaig arribar al final de dimecres 20 00:01:01,220 --> 00:01:05,500 Va ser aquest missatge de text de Margo mentre lluitava, 21 00:01:05,500 --> 00:01:09,940 seguit per un missatge de text des d'un altre company de classe, tens aquesta David. 22 00:01:09,940 --> 00:01:14,030 Seguit per aquest, meravellosament encoratjadora. 23 00:01:14,030 --> 00:01:15,840 Va seguir endavant, molt encoratjador. 24 00:01:15,840 --> 00:01:20,960 Gairebé ho vaig aconseguir fins llavors-- i aquesta és la nota que vam acabar dimecres. 25 00:01:20,960 --> 00:01:25,850 I a continuació, en realitat potser el meu preferit, un moment després, aquest va entrar. 26 00:01:25,850 --> 00:01:27,000 Maleïda sigui directe corrent. 27 00:01:27,000 --> 00:01:31,080 >> Així que avui, podem solucionar aquest problema amb una ràpida mira el que he fet des de llavors. 28 00:01:31,080 --> 00:01:35,440 Així que tot el codi està disponible en línia des de la setmana passada, la setmana 8, 29 00:01:35,440 --> 00:01:36,300 codi font. 30 00:01:36,300 --> 00:01:39,425 I veuràs que jo vaig passar, i en realitat em vaig netejar una mica les coses. 31 00:01:39,425 --> 00:01:42,080 Jo vaig presentar un parell altre característiques d'una base de dades SQL. 32 00:01:42,080 --> 00:01:45,300 Per exemple, en lloc de només fer transportista de carbó var 33 00:01:45,300 --> 00:01:47,310 com crec que ho vaig fer sobre la marxa la setmana passada. 34 00:01:47,310 --> 00:01:49,820 Jo en canvi el va definir com el que s'anomena una enumeració. 35 00:01:49,820 --> 00:01:53,310 >> I alguns de vosaltres heu vist aquest com vam explorar C. Enum és en realitat 36 00:01:53,310 --> 00:01:56,820 una característica de C on es pot enumerar un munt de constants 37 00:01:56,820 --> 00:01:59,640 i assignar-los valors automàtics, com un, dos, tres, quatre 38 00:01:59,640 --> 00:02:01,330 sense necessitat de números de codi dur. 39 00:02:01,330 --> 00:02:04,780 Així SQL admet la mateixa, de manera que si Té un camp de base de dades que només 40 00:02:04,780 --> 00:02:09,389 voler prendre en una de finit valors, pot literalment especificar 41 00:02:09,389 --> 00:02:13,120 com ho he fet allà per quatre portadors populars de telèfons mòbils dels Estats Units. 42 00:02:13,120 --> 00:02:13,819 >> Així que vaig fer això. 43 00:02:13,819 --> 00:02:16,610 I he fet una sèrie de canvis com així, la més important de les quals 44 00:02:16,610 --> 00:02:20,090 era aconseguir email funcionant perquè el record, que aquest programa es va basar en la qual 45 00:02:20,090 --> 00:02:23,470 generalment anomenat un correu electrònic a Porta d'entrada de SMS, que és només 46 00:02:23,470 --> 00:02:27,670 una forma elegant de dir que Verizon, i AT & T, i altres persones suporten un servidor, 47 00:02:27,670 --> 00:02:30,740 per la qual cosa si rep correu electrònic, que converteix SMS 48 00:02:30,740 --> 00:02:33,290 i envia un text missatge al telèfon d'algú. 49 00:02:33,290 --> 00:02:37,010 Així que si ho vaig fer correctament, aquí és una forma nova i millorada 50 00:02:37,010 --> 00:02:39,259 que va a parlar amb nova i millorada codi, que 51 00:02:39,259 --> 00:02:40,300 es pot jugar amb línia. 52 00:02:40,300 --> 00:02:44,140 I és d'esperar que el meu xiulet telèfon en un moment. 53 00:02:44,140 --> 00:02:47,240 >> Així que en primer lloc, vaig a escriure el meu nom. 54 00:02:47,240 --> 00:02:51,400 En segon lloc, jo no vaig per fer això en aquesta ocasió. 55 00:02:51,400 --> 00:02:53,920 Jo faré Inspeccionar Element. 56 00:02:53,920 --> 00:02:56,710 I això és només una poca cosa, així que no ho faig 57 00:02:56,710 --> 00:02:59,250 crear hores de post-producció Treball com ho vaig fer l'última vegada. 58 00:02:59,250 --> 00:03:02,300 Ara és el meu número de telèfon. 59 00:03:02,300 --> 00:03:03,560 >> Vaig a seleccionar Verizon. 60 00:03:03,560 --> 00:03:10,260 I aquí, centrarem en aquest micròfon aquí, i l'objectiu està en el meu telèfon aquí. 61 00:03:10,260 --> 00:03:13,130 Vaig a fer clic Registre, que ha d'esperar 62 00:03:13,130 --> 00:03:14,530 el va posar a la base de dades. 63 00:03:14,530 --> 00:03:16,780 Ara em vaig a anar a la programa de línia de comandes, el que 64 00:03:16,780 --> 00:03:20,825 retir es diu barra de punts text, i creuar els dits. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 Aquí anem. 67 00:03:26,527 --> 00:03:27,501 >> [DINGS TELÈFON] 68 00:03:27,501 --> 00:03:28,962 >> [Aplaudiments] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID Malan: Així que més divertit que esto-- és divertit, és clar, si em fico en ella. 71 00:03:34,940 --> 00:03:38,004 Però és més divertit, vaig pensar, si creat un d'aquests moments de la pel·lícula 72 00:03:38,004 --> 00:03:40,420 on com una cosa realment dolent ha passat en el món, 73 00:03:40,420 --> 00:03:42,860 i com totes les persones de la NSA els telèfons mòbils comencen a sonar 74 00:03:42,860 --> 00:03:44,860 amb missatges de text alertant a aquest fet. 75 00:03:44,860 --> 00:03:47,026 Així que vaig pensar en provar per recrear el mateix aquí, 76 00:03:47,026 --> 00:03:49,610 pel que no s'utilitza una base de dades, I en lloc per endavant 77 00:03:49,610 --> 00:03:51,490 va escriure un programa que s'assembla a això. 78 00:03:51,490 --> 00:03:53,660 >> Aquest és un index.php-- i jo vaig posar el codi en línia 79 00:03:53,660 --> 00:03:56,710 com bé-- que pel que sembla només fa que form.php, 80 00:03:56,710 --> 00:04:00,990 usant un paradigma estil MVC que parlar amb més detall en conjunt problema 81 00:04:00,990 --> 00:04:01,650 Set. 82 00:04:01,650 --> 00:04:02,910 Aquesta forma és bastant simple. 83 00:04:02,910 --> 00:04:06,634 Es va a sotmetre a una arxiu anomenat here.php per correu. 84 00:04:06,634 --> 00:04:09,300 I està pel que sembla va a demanar per a un nom i un número de telèfon, 85 00:04:09,300 --> 00:04:11,400 i després a través de l'anomenada Seleccioneu el menú, que és 86 00:04:11,400 --> 00:04:14,250 donarà com a mínim quatre portadors populars de telèfons mòbils dels Estats Units, 87 00:04:14,250 --> 00:04:17,470 i després permetre que vostè efectivament prendre l'assistència fent clic aquí. 88 00:04:17,470 --> 00:04:20,471 >> I aquí, per la seva banda, va a demanar prestat part del codi de l'última vegada. 89 00:04:20,471 --> 00:04:22,553 I si vostè acaba de fullejar aquest, veuràs que hi ha 90 00:04:22,553 --> 00:04:23,900 un munt de comprovació d'errors. 91 00:04:23,900 --> 00:04:26,640 Però la bellesa al final és que no estem escrivint a una base de dades en l'actualitat. 92 00:04:26,640 --> 00:04:29,130 Estem fer que sigui senzill i només espero que l'enviament de 93 00:04:29,130 --> 00:04:32,190 un missatge de text a través de la funció I va escriure en els últims dies de trucades 94 00:04:32,190 --> 00:04:36,270 Text, que està en funcions. php, que és de nou disponible en línia. 95 00:04:36,270 --> 00:04:38,210 >> Així que si t'agradaria participar en això. 96 00:04:38,210 --> 00:04:40,190 No anem a guardar res. 97 00:04:40,190 --> 00:04:43,809 Aneu a aquesta URL aquí en temps real. 98 00:04:43,809 --> 00:04:46,850 No enviar de moment, però anem a veure si podem tenir un d'aquests pel·lícula 99 00:04:46,850 --> 00:04:49,830 moments en què el telèfon mòbil de tot el món comença a sonar, amb sort només 100 00:04:49,830 --> 00:04:53,580 un cop aquest any a diferència d'en 2011 on aquest va sortir horriblement malament. 101 00:04:53,580 --> 00:04:58,910 I una vegada que vostè va a aquesta direcció, vostè ha de veure una forma súper senzilla 102 00:04:58,910 --> 00:05:03,884 que si vostè té un nom, un telèfon mòbil nombre, i un vehicle mòbil que 103 00:05:03,884 --> 00:05:06,175 coincideix amb la llista d'aquí, anar endavant i omplir el formulari. 104 00:05:06,175 --> 00:05:07,880 Però no colpejar a presentar de moment. 105 00:05:07,880 --> 00:05:10,850 >> La forma tindrà aquest aspecte. 106 00:05:10,850 --> 00:05:13,660 Seguir endavant i escriure el seu nom, número de telèfon. 107 00:05:13,660 --> 00:05:17,670 Oop, algú va per davant de la corba. 108 00:05:17,670 --> 00:05:18,170 Està bé. 109 00:05:18,170 --> 00:05:19,340 Bé, tot el món està ple el formulari. 110 00:05:19,340 --> 00:05:21,400 Això hauria de funcionar en un telèfon, també, si ho desitja. 111 00:05:21,400 --> 00:05:23,695 Molt bé, en les seves marques, llestos, ja. 112 00:05:23,695 --> 00:05:24,195 Hit Aquí. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 Què? 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 Ho juro per Déu, he provat aquest diverses vegades avui. 119 00:05:40,250 --> 00:05:41,720 Ho tens? 120 00:05:41,720 --> 00:05:43,145 >> [Interposant VEUS] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID Malan: OK, potser un error de l'usuari. 123 00:05:49,560 --> 00:05:50,550 Això és dues. 124 00:05:50,550 --> 00:05:53,300 Es va treballar per a dos de cadascuna pocs centenars, tres, quatre. 125 00:05:53,300 --> 00:05:55,940 OK, això és bo. 126 00:05:55,940 --> 00:05:58,520 Quatre de cada cinc per Què hi ha de la correcció. 127 00:05:58,520 --> 00:05:59,810 >> Llavors, ¿què ha passat? 128 00:05:59,810 --> 00:06:02,727 Així que, presumiblement, sense veure el seu pantalles, Per què podria haver-hi molts errors? 129 00:06:02,727 --> 00:06:05,518 És probable que estàvem tractant de fer massa connexions 130 00:06:05,518 --> 00:06:08,110 al servidor de correu de la Universitat de Harvard en tot un cop des de la mateixa adreça IP. 131 00:06:08,110 --> 00:06:10,740 Només estic endevinant ja que jo no ho vaig fer el luxe de la prova 132 00:06:10,740 --> 00:06:13,220 aquest codi amb alguns 300 persones d'antelació 133 00:06:13,220 --> 00:06:16,040 però per ara adonar-se que que almenys ha de 134 00:06:16,040 --> 00:06:18,250 han aconseguit la feina feta en aquesta ocasió. 135 00:06:18,250 --> 00:06:22,880 >> Molt bé, així que per què és això tot el més afí al que està passant? 136 00:06:22,880 --> 00:06:24,900 Bé en primer lloc, una ràpida parell d'anuncis. 137 00:06:24,900 --> 00:06:29,350 Així que un, si vol unir-se a Chang, i Nick, i altres persones en el dinar d'aquest divendres, 138 00:06:29,350 --> 00:06:32,400 fer de RSVP a l'adreça URL habitual allà. 139 00:06:32,400 --> 00:06:35,650 Si vostè està pensant en concentrar- o fer una secundària en CS, 140 00:06:35,650 --> 00:06:38,941 si vostè és un estudiant de segon any, estudiant de primer any o, o fins i tot menor o major en aquest moment 141 00:06:38,941 --> 00:06:42,490 i encara pot esprémer en els cursos, adonar-se que l'escola d'enginyeria 142 00:06:42,490 --> 00:06:45,620 està reunint de forma gratuïta i Ben Gelat de Jerry i consells 143 00:06:45,620 --> 00:06:48,910 això poc després de classe dimecres a les 4:00 PM en l'edifici CS 144 00:06:48,910 --> 00:06:49,771 en Maxwell Dworkin. 145 00:06:49,771 --> 00:06:51,520 Si aquesta és massa ràpid a la pantalla, només ha d'anar 146 00:06:51,520 --> 00:06:55,260 a cs50.harvard.edu per a una enllaç a l'esdeveniment a Facebook 147 00:06:55,260 --> 00:06:57,140 on es poden veure més detalls. 148 00:06:57,140 --> 00:07:01,390 >> Mentrestant, jo pensava que anava a corregir una altra cosa que va ficar la pota dimecres. 149 00:07:01,390 --> 00:07:04,400 Resulta que aquest ID de Mark a Facebook no va ser tres. 150 00:07:04,400 --> 00:07:05,230 Eren les quatre. 151 00:07:05,230 --> 00:07:08,330 Resulta que ell tenia més prova comptes del que recorden. 152 00:07:08,330 --> 00:07:12,400 Però el que aquest se sentia com una oportunitat de fer és tirar d'una URL com aquesta. 153 00:07:12,400 --> 00:07:16,680 >> Així resulta que Facebook té un API, Application Programming Interface, 154 00:07:16,680 --> 00:07:20,070 que és un mecanisme mitjançant el qual es poden sol·licitar dades mitjançant programació 155 00:07:20,070 --> 00:07:24,480 a Facebook i tornar màquina informació llegible, no pàgines web 156 00:07:24,480 --> 00:07:28,690 però el text només prima, una mica anomenat JavaScript Object Notation. 157 00:07:28,690 --> 00:07:32,150 I de fet, si torno a visitar aquesta URL, i un zoom, per defecte, 158 00:07:32,150 --> 00:07:34,960 aquest és Mark públicament informació accessible. 159 00:07:34,960 --> 00:07:37,430 >> I el detall interessant aquí és només que el seu ID 160 00:07:37,430 --> 00:07:40,670 és de fet, el número quatre, que em es va donar compte tan aviat com ho vaig fer aquesta. 161 00:07:40,670 --> 00:07:44,260 Pot fer-ho vostè mateix si vostè sap el seu nom d'usuari de Facebook, si vostè té un. 162 00:07:44,260 --> 00:07:45,440 Només has d'escriure fins a dalt allà. 163 00:07:45,440 --> 00:07:46,640 I res d'això és privat. 164 00:07:46,640 --> 00:07:48,670 Només estic fent això fins i tot en la manera d'incògnit. 165 00:07:48,670 --> 00:07:49,900 Així que ni tan sols estic inscrit. 166 00:07:49,900 --> 00:07:54,440 I vostè està veient que jo pel que sembla era el número d'usuari 6454 167 00:07:54,440 --> 00:07:56,480 a Facebook, que no és tan malament aquests dies. 168 00:07:56,480 --> 00:07:59,900 Així que de totes maneres, també veurà informació addicional allà. 169 00:07:59,900 --> 00:08:02,150 >> I l'aspecte útil que és que vostè 170 00:08:02,150 --> 00:08:06,890 podria escriure el seu propi programari que d'alguna manera s'integra dades com aquest 171 00:08:06,890 --> 00:08:08,170 en la seva pròpia aplicació. 172 00:08:08,170 --> 00:08:10,650 Pot permetre als usuaris a entreu al seu lloc web, 173 00:08:10,650 --> 00:08:14,190 no usar el seu propi nom d'usuari personalitzada i però potser la contrasenya d'inici de sessió de Facebook 174 00:08:14,190 --> 00:08:16,170 i obtenir informació fins i tot sobre els seus amics, 175 00:08:16,170 --> 00:08:18,740 si aproven tals, o similar. 176 00:08:18,740 --> 00:08:21,430 Així en compte que CS50, també, té algunes de les seves pròpies APIs, 177 00:08:21,430 --> 00:08:24,620 una per a les dades del catàleg suposat, alguns dels menús d'abraçades al menjador 178 00:08:24,620 --> 00:08:26,730 sales, totes de la edificis i llocs 179 00:08:26,730 --> 00:08:30,930 al campus tenim una API per tal que es pot consultar de manera similar i obtenir 180 00:08:30,930 --> 00:08:35,520 dades textual d'esquena que pot integrar en un PHP o JavaScript, o fins i tot, 181 00:08:35,520 --> 00:08:38,320 encara que amb menor freqüència, 01:00 C basa projecte final. 182 00:08:38,320 --> 00:08:41,190 >> De fet abans de la final projecte són unes fites. 183 00:08:41,190 --> 00:08:42,980 Tens un email de nosaltres l'altre dia. 184 00:08:42,980 --> 00:08:45,761 Adonar-se que la proposta cal el dilluns. 185 00:08:45,761 --> 00:08:49,010 No és necessàriament vinculant, però que no necessitarà rebre els seus companys d'ensenyament 186 00:08:49,010 --> 00:08:51,260 aprovació abans de fer qualsevol canvi a partir de llavors. 187 00:08:51,260 --> 00:08:54,280 I després per davant són un nombre d'altres fites. 188 00:08:54,280 --> 00:08:56,542 >> Així que per burlar de vostè, també, amb algunes possibilitats, 189 00:08:56,542 --> 00:08:58,250 tenim un munt de aquestes bombetes Hue. 190 00:08:58,250 --> 00:09:01,190 I alguns de vostès ara tenen alguns d'aquests a la seva habitació de la residència també. 191 00:09:01,190 --> 00:09:02,920 I ells també tenen una API. 192 00:09:02,920 --> 00:09:07,300 Així recordar aquestes setmanes bulbs binaris Fa que Dan Bradley i Ansel 193 00:09:07,300 --> 00:09:08,780 Duff ha creat per a nosaltres. 194 00:09:08,780 --> 00:09:12,560 Van utilitzar una interfície de programari per aquesta bombeta, que en aquest moment 195 00:09:12,560 --> 00:09:15,232 està connectat a l'electricitat i després a través de wireless 196 00:09:15,232 --> 00:09:17,690 està connectat a una petita cosa anomenat el Pont d'aquí baix, 197 00:09:17,690 --> 00:09:21,280 com un petit propietari del router a aquest dispositiu en particular. 198 00:09:21,280 --> 00:09:26,540 >> Però resulta que si sé com enviar missatges HTTP, com tots ho fem ara, 199 00:09:26,540 --> 00:09:31,670 Puc enviar un missatge com aquest a aquesta bombeta per encendre o apagat 200 00:09:31,670 --> 00:09:34,000 o fer qualsevol nombre de altres operacions en ell. 201 00:09:34,000 --> 00:09:36,110 Tingueu en compte que no és arribar, no és POST. 202 00:09:36,110 --> 00:09:37,760 Hi ha una altra que es diu put. 203 00:09:37,760 --> 00:09:39,630 De fet, hi ha alguns altres tals verbs. 204 00:09:39,630 --> 00:09:42,920 Però noti que hi ha un camí allà, slash API, retallar nou desenvolupador, 205 00:09:42,920 --> 00:09:44,990 reduir la llum, retallar un, slash estat. 206 00:09:44,990 --> 00:09:49,060 >> Això és pel que sembla només el camí que la companyia, Philips, 207 00:09:49,060 --> 00:09:51,640 va decidir vostè ha de colpejar amb una petició HTTP 208 00:09:51,640 --> 00:09:55,010 si vostè vol canviar l'estat de la bombeta utilitzant HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 Després noti la línia en blanc. 210 00:09:56,380 --> 00:10:00,170 I després, finalment, el que sembla classe d'una gran varietat d'una espècie, 211 00:10:00,170 --> 00:10:04,730 aquesta vegada serà anomenat JavaScript Object Notation, o Jason. 212 00:10:04,730 --> 00:10:08,000 I el que es veu aquí és que hi ha tres parells de valors clau. 213 00:10:08,000 --> 00:10:09,115 >> Una de les claus està cridada. 214 00:10:09,115 --> 00:10:10,990 I el seu valor aparentment serà veritat. 215 00:10:10,990 --> 00:10:13,612 La brillantor és 128, el qual és una espècie de int. 216 00:10:13,612 --> 00:10:15,820 I llavors el temps de transició és zero, que és aparentment 217 00:10:15,820 --> 00:10:17,970 quant de temps prendre per convertir això en alguna cosa. 218 00:10:17,970 --> 00:10:19,890 >> Així que ara mateix aquesta bombeta està apagada. 219 00:10:19,890 --> 00:10:22,880 Però si ho faig exactament esto-- deixar me'n vaig a un full de trucs poc 220 00:10:22,880 --> 00:10:25,200 que Dan va crear a advance-- i vaig 221 00:10:25,200 --> 00:10:27,920 seguir endavant i copiar la següent comanda. 222 00:10:27,920 --> 00:10:30,200 Curl, com alguns de vostès podria haver recollit en CS50 223 00:10:30,200 --> 00:10:35,080 Discutir és una utilitat com Telnet, com que pot simular les peticions HTTP, 224 00:10:35,080 --> 00:10:36,360 posa específicament. 225 00:10:36,360 --> 00:10:39,710 Puc enviar aquestes dades, específicament el que acabem de 226 00:10:39,710 --> 00:10:43,430 vam veure fa un moment concret a aquesta URL aquí. 227 00:10:43,430 --> 00:10:46,310 I després Curl va a utilitzar totes les capçaleres necessàries 228 00:10:46,310 --> 00:10:47,600 i analitzar d'allà. 229 00:10:47,600 --> 00:10:54,700 >> Així que tot el que he de fer és copiar això a una finestra de terminal i després premeu Enter. 230 00:10:54,700 --> 00:10:56,000 I la bombeta s'encén. 231 00:10:56,000 --> 00:10:59,060 I tot això està passant per el meu equip de manera sense fil 232 00:10:59,060 --> 00:11:01,960 d'alguna manera fins al pont, que llavors està parlant amb aquesta bombeta. 233 00:11:01,960 --> 00:11:02,960 Jo puc fer una altra cosa. 234 00:11:02,960 --> 00:11:07,050 Puc fer aquesta cosa anar de color vermell, per exemple. 235 00:11:07,050 --> 00:11:11,040 Per exemple que puc fer aquesta cosa anar verd. 236 00:11:11,040 --> 00:11:12,220 Jo puc fer que es vagi blau. 237 00:11:12,220 --> 00:11:14,760 >> I noti en cada un d'aquests casos, tot el que estic canviant 238 00:11:14,760 --> 00:11:18,540 és l'anomenat valor de matís a realment donar-li una mica de color. 239 00:11:18,540 --> 00:11:20,320 Així que permetin-me pega aquest un endins també. 240 00:11:20,320 --> 00:11:21,000 Ara és el blau. 241 00:11:21,000 --> 00:11:24,672 >> I vostè pot fer encara més elegant coses where-- Anem a anar a verd. 242 00:11:24,672 --> 00:11:26,630 I jo podria fer això de per descomptat amb el meu propi codi. 243 00:11:26,630 --> 00:11:30,670 Però fins i tot la pròpia API dóna suport a les operacions de funky 244 00:11:30,670 --> 00:11:35,510 com aquest, que ara es molestaran nosaltres durant els pròxims 30 segons. 245 00:11:35,510 --> 00:11:39,170 >> Així que això és una mostra del que et poden veure amb una API, el qual va involucrar a 246 00:11:39,170 --> 00:11:40,010 bombetes. 247 00:11:40,010 --> 00:11:42,510 Tingueu en compte que CS50 té un parell parells de Google Glass Per 248 00:11:42,510 --> 00:11:45,380 agradaria per fer front a alguna cosa al llarg aquestes línies, Arduino Uns, que 249 00:11:45,380 --> 00:11:48,670 són diminuts ordinadors, essencialment, en una placa de circuit petit 250 00:11:48,670 --> 00:11:50,470 que es pot connectar cables i altres coses 251 00:11:50,470 --> 00:11:52,732 per al control i de fet el seu entorn real. 252 00:11:52,732 --> 00:11:54,940 I després hi ha un parell de joguines noves que tenim. 253 00:11:54,940 --> 00:11:59,294 Aquest literalment acaba d'arribar el un altre dia per correu, un Myo braçal. 254 00:11:59,294 --> 00:12:01,710 I jo que pensava que és una manera de que et entusiasma sobre els projectes 255 00:12:01,710 --> 00:12:03,720 que vostè pot utilitzar amb aquest maquinari faria 256 00:12:03,720 --> 00:12:08,900 ser per jugar aquest clip curt que utilitzen per a burlar-se de la gent 257 00:12:08,900 --> 00:12:10,500 que ara estem vivint en el futur. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [REPRODUCCIÓ DE MÚSICA] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID Malan: Així que en tan sols unes setmanes, vostè també pot ser que fresc a la fira CS50. 262 00:13:37,109 --> 00:13:39,150 Un altre dispositiu que ens tenen un munt de que som 263 00:13:39,150 --> 00:13:42,090 feliç de donar per a projectes es diu un controlador de moviment. 264 00:13:42,090 --> 00:13:45,030 Es tracta d'un petit dispositiu USB es connecta a un equip que 265 00:13:45,030 --> 00:13:47,520 li permet interactuar amb el seu ordinador portàtil, Mac o PC, 266 00:13:47,520 --> 00:13:51,570 com si vostè tenia com una Xbox Kinect i en realitat fer moviments físics molt 267 00:13:51,570 --> 00:13:54,509 com veiem en aquest visió del futur. 268 00:13:54,509 --> 00:13:56,505 >> [REPRODUCCIÓ DE MÚSICA] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID Malan: Així que encara que té ni idea de com alguna cosa així 271 00:15:06,260 --> 00:15:10,050 possiblement podria ser inventat o treball a nivell de maquinari, no importa. 272 00:15:10,050 --> 00:15:13,520 Fins i tot després de només uns mesos de CS50, i una comprensió de la programació 273 00:15:13,520 --> 00:15:19,460 més en general, i la programació web més Recentment, i després també les API, i HTTP, 274 00:15:19,460 --> 00:15:21,830 vostè tindrà accés a través de API de programari si 275 00:15:21,830 --> 00:15:24,680 no volen demanar prestat un d'aquests dispositius de parlar amb ell 276 00:15:24,680 --> 00:15:27,180 i no haver de preocupar-se de la implementació subjacent 277 00:15:27,180 --> 00:15:30,220 detalls, que és completament d'acord amb aquesta noció d'estratificació 278 00:15:30,220 --> 00:15:33,610 una abstracció que hem vist al llarg del semestre. 279 00:15:33,610 --> 00:15:37,990 >> Així també el cap de setmana, vam veure un parell de peces de notícies. 280 00:15:37,990 --> 00:15:40,640 Vagi en primer lloc, anar a seminaris si li agradaria aprendre alguna cosa 281 00:15:40,640 --> 00:15:42,160 més en qualsevol nombre de temes. 282 00:15:42,160 --> 00:15:43,340 Veure la URL allà. 283 00:15:43,340 --> 00:15:45,890 I aquest va ser enviat a jo per Chang, que ja saps, 284 00:15:45,890 --> 00:15:47,850 que està imprimint al nostre exèrcit d'elefants. 285 00:15:47,850 --> 00:15:49,910 I era un titular com segueix. 286 00:15:49,910 --> 00:15:51,280 Estic aterrida del meu nou televisor. 287 00:15:51,280 --> 00:15:54,301 Per què tinc por de convertir aquest cosa en la qual vostè i seria massa. 288 00:15:54,301 --> 00:15:56,050 Així que ara estem en el apuntar en el semestre, 289 00:15:56,050 --> 00:15:58,860 també, on fins i tot si vostè té la menor d'entesa 290 00:15:58,860 --> 00:16:02,620 de com funciona la web, i HTTP, i de seguretat, aquest tipus de coses 291 00:16:02,620 --> 00:16:03,980 ha de començar a captar la seva atenció. 292 00:16:03,980 --> 00:16:07,450 Però també, vas a entendre si aquestes coses són o no són 293 00:16:07,450 --> 00:16:08,430 les amenaces reals. 294 00:16:08,430 --> 00:16:10,940 >> Així que vaig prendre alguns extractes d'aquest article aquí. 295 00:16:10,940 --> 00:16:12,540 I la història és la següent. 296 00:16:12,540 --> 00:16:14,300 Ara sóc l'amo de una nova televisió intel·ligent, que 297 00:16:14,300 --> 00:16:18,470 promet lliurar en streaming continguts multimèdia, jocs, aplicacions, 298 00:16:18,470 --> 00:16:21,450 mitjans de comunicació social i d'Internet navegació, ah i la televisió també. 299 00:16:21,450 --> 00:16:24,410 L'únic problema és que estic ara por d'usar-lo, diu l'autor. 300 00:16:24,410 --> 00:16:29,592 Vostè seria, també, si vostè llegeix a través de el 46 pàgina política de privacitat per a la seva televisor. 301 00:16:29,592 --> 00:16:31,800 La quantitat de dades d'aquesta recull cosa és sorprenent. 302 00:16:31,800 --> 00:16:35,710 Registra on, quan, com, i per quant de temps s'utilitza el televisor. 303 00:16:35,710 --> 00:16:38,190 S'hi estableixen les galetes de rastreig, com hem discutit, 304 00:16:38,190 --> 00:16:40,560 i fars dissenyats per detectar quan es té 305 00:16:40,560 --> 00:16:43,185 contingut particular vist o un missatge de correu electrònic en particular 306 00:16:43,185 --> 00:16:45,230 si desitja consultar el correu electrònic al seu televisor. 307 00:16:45,230 --> 00:16:48,430 Registra les aplicacions que utilitzar, els llocs web que visita, 308 00:16:48,430 --> 00:16:52,280 i la forma d'interactuar amb el contingut, fent tot això a través de la seva televisió intel·ligent. 309 00:16:52,280 --> 00:16:55,470 També, yet-- esgarrifós aquesta és la meva addition-- 310 00:16:55,470 --> 00:16:58,140 té una càmera incorporada amb reconeixement facial. 311 00:16:58,140 --> 00:17:01,010 >> El propòsit és proporcionar control de gestos per a la TV 312 00:17:01,010 --> 00:17:05,490 i li permeten iniciar una sessió a compte utilitzant el seu rostre personalitzat. 313 00:17:05,490 --> 00:17:08,940 Pel costat positiu, les imatges són guardat a la televisió en comptes de pujada 314 00:17:08,940 --> 00:17:09,940 a un servidor de l'empresa. 315 00:17:09,940 --> 00:17:12,520 A la banda negativa, l'Internet connexió fa que tota la TV 316 00:17:12,520 --> 00:17:14,811 vulnerables als hackers que han demostrat la capacitat 317 00:17:14,811 --> 00:17:16,700 prendre el control complet de la màquina. 318 00:17:16,700 --> 00:17:20,880 >> Més preocupant, com si això no fos prou intel·ligent, és el micròfon. 319 00:17:20,880 --> 00:17:23,599 El televisor té una veu funció de reconeixement 320 00:17:23,599 --> 00:17:26,859 que permet als espectadors a controlar la pantalla amb les ordres de veu. 321 00:17:26,859 --> 00:17:30,290 Però el servei ve amb una advertència en lloc de mal averany. 322 00:17:30,290 --> 00:17:33,030 Tingueu en compte que si les seves paraules parlades inclouen 323 00:17:33,030 --> 00:17:36,210 personal o un altre sensible informació, que la informació 324 00:17:36,210 --> 00:17:40,310 serà un de les dades capturades i transmesa a un tercer. 325 00:17:40,310 --> 00:17:40,870 Va aconseguir que? 326 00:17:40,870 --> 00:17:45,860 No diguis personal o confidencial coses al davant del seu televisor. 327 00:17:45,860 --> 00:17:47,280 >> Així que això és en realitat de veritat. 328 00:17:47,280 --> 00:17:50,530 I és difícil no veure si anar a Best Buy o similar per a televisors 329 00:17:50,530 --> 00:17:51,030 en aquests dies. 330 00:17:51,030 --> 00:17:52,540 Tots són intel·ligents, d'alguna manera. 331 00:17:52,540 --> 00:17:54,740 I que van a obtenir més intel·ligent i més esgarrifós. 332 00:17:54,740 --> 00:17:57,490 I estan simplement la recopilació de dades de manera que les que hem parlat 333 00:17:57,490 --> 00:18:01,840 i després pujar-lo a través d'HTTP o algun altre protocol a algun servidor. 334 00:18:01,840 --> 00:18:05,720 >> Així que aquest era d'un article de la diversió en aquest lloc web en línia 335 00:18:05,720 --> 00:18:08,940 aquí, que parlaven d'un particular, error o codi equivocat 336 00:18:08,940 --> 00:18:11,340 que en realitat podem lligar en el debat de la setmana passada. 337 00:18:11,340 --> 00:18:15,730 Així que aquest títol era com segueix, la història va aquí, 338 00:18:15,730 --> 00:18:18,720 Josh Breckman treballar per a una empresa que va obtenir un contracte 339 00:18:18,720 --> 00:18:22,390 per a desenvolupar una gestió de continguts sistema, o CMS com se'ls anomena, 340 00:18:22,390 --> 00:18:24,380 per a un lloc web del govern bastant gran. 341 00:18:24,380 --> 00:18:27,300 Gran part del projecte va consistir en el desenvolupament d'un sistema de gestió de continguts 342 00:18:27,300 --> 00:18:29,840 perquè els empleats serien capaç de construir i mantenir 343 00:18:29,840 --> 00:18:31,877 el sempre canviant contingut per al seu lloc. 344 00:18:31,877 --> 00:18:34,210 Les coses van anar força bé per pocs dies després d'anar en viu. 345 00:18:34,210 --> 00:18:37,020 Però en el sisè dia, les coses no anaven tan bé. 346 00:18:37,020 --> 00:18:39,500 Tot el contingut de la lloc web s'havia esvaït per complet. 347 00:18:39,500 --> 00:18:42,950 I totes les pàgines van portar a l'omissió, si us plau entrar a la pàgina web de contingut. 348 00:18:42,950 --> 00:18:43,810 Vaja. 349 00:18:43,810 --> 00:18:46,080 Josh va ser cridat per investigar i es va adonar 350 00:18:46,080 --> 00:18:49,390 que un particularment problemàtic adreça IP externa va tenir 351 00:18:49,390 --> 00:18:53,380 entrat i eliminat tots el contingut en el sistema. 352 00:18:53,380 --> 00:18:56,290 >> L'adreça IP no pertanyia a algun estranger doblegada pirata informàtic 353 00:18:56,290 --> 00:18:58,340 a destruir útil la informació del govern. 354 00:18:58,340 --> 00:19:05,190 Es va resoldre googlebot.com, Molt pròpia web de rastreig d'aranya de Google. 355 00:19:05,190 --> 00:19:06,010 Vaja. 356 00:19:06,010 --> 00:19:09,150 Després d'una mica de recerca i codificació voltant per trobar una còpia de seguretat no corrupta, 357 00:19:09,150 --> 00:19:10,180 Josh va trobar el problema. 358 00:19:10,180 --> 00:19:12,700 >> Un usuari havia copiat i enganxat una mica de contingut d'un 359 00:19:12,700 --> 00:19:15,670 pàgina a una altra, incloent 1 Modificar enllaç 360 00:19:15,670 --> 00:19:17,577 per editar el contingut de la pàgina. 361 00:19:17,577 --> 00:19:20,160 Normalment això no seria una problema ja que un usuari extern faria 362 00:19:20,160 --> 00:19:24,320 que hagi de introduir un nom i una contrasenya, però el sistema d'autenticació de CMS, 363 00:19:24,320 --> 00:19:27,520 el sistema d'inici de sessió, no tenir en compte 364 00:19:27,520 --> 00:19:30,980 pirateria informàtica sofisticada tècniques d'aranya de Google. 365 00:19:30,980 --> 00:19:31,700 Vaja. 366 00:19:31,700 --> 00:19:33,610 >> Com a resultat, Google Aranya no utilitza 367 00:19:33,610 --> 00:19:36,950 galetes, que significa que pot passar per alt fàcilment un xec per la 368 00:19:36,950 --> 00:19:39,840 es registra en el conjunt de la galeta és falsa. 369 00:19:39,840 --> 00:19:42,620 Així mateix, no presta atenció a JavaScript, el que faria normalment 370 00:19:42,620 --> 00:19:45,170 impulsar i redirigir als usuaris que no s'ha entrat. 371 00:19:45,170 --> 00:19:48,610 No obstant això, si segueix cada hipervincle a totes les pàgines que troba, 372 00:19:48,610 --> 00:19:51,700 incloent aquells amb Eliminar pàgina al títol. 373 00:19:51,700 --> 00:19:52,650 Vaja. 374 00:19:52,650 --> 00:19:56,070 >> Llavors, què significa això en la més termes tècnics, però bastant accessible? 375 00:19:56,070 --> 00:19:58,340 Només vol dir que a través de la seva pàgina web, 376 00:19:58,340 --> 00:20:02,287 tenien adreces URL no a diferència d'aquest que és possible que vegi en un problema establert set. 377 00:20:02,287 --> 00:20:04,620 Recordem en problema estableix set o sap de problemes en set 378 00:20:04,620 --> 00:20:06,411 que suposa un repte, entre altres coses, 379 00:20:06,411 --> 00:20:08,570 per vendre accions en nom dels usuaris. 380 00:20:08,570 --> 00:20:14,010 Però l'aplicació d'aquesta funció per mitjà d'obtenir a través d'hipervincles en el seu usuari 381 00:20:14,010 --> 00:20:16,880 interfície, probablement no la idea més intel·ligent 382 00:20:16,880 --> 00:20:20,300 perquè si el seu lloc és d'alguna manera accessibles ja sigui per un humà 383 00:20:20,300 --> 00:20:23,577 que està fent clic voltant o comprar un bot com Google o d'una aranya 384 00:20:23,577 --> 00:20:26,160 com se'ls anomena això és només rastreig de la web tractant d'índex 385 00:20:26,160 --> 00:20:29,060 la web com un motor de cerca, que podien molt fàcilment 386 00:20:29,060 --> 00:20:31,340 colpejar a través d'aconseguir aquest tipus d'URL. 387 00:20:31,340 --> 00:20:33,770 I això és funcionalment equivalent a, en aquest cas, 388 00:20:33,770 --> 00:20:37,000 la venda de totes les accions de Google. 389 00:20:37,000 --> 00:20:40,030 >> Ara, francament, és completament asnal que el CMS 390 00:20:40,030 --> 00:20:43,240 usats JavaScript i galetes per implementar el seu sistema d'inici de sessió 391 00:20:43,240 --> 00:20:47,100 i no fer que el costat del servidor, com vostès existeixen i que en PSet 7-- 392 00:20:47,100 --> 00:20:49,940 hi ha un login.php file-- sempre, sempre, 393 00:20:49,940 --> 00:20:52,789 sempre la seguretat ha de ser fet en el costat del servidor, 394 00:20:52,789 --> 00:20:56,080 no en el costat del client, ja que, com aquest article suggereix i és possible que vostè mateix 395 00:20:56,080 --> 00:20:59,600 veure en algun moment, és trivial per a un usuari, bo o dolent, 396 00:20:59,600 --> 00:21:02,860 que només ha de desactivar JavaScript per no parlar de les cookies. 397 00:21:02,860 --> 00:21:06,020 Així que aquest és el seu WTF diari. 398 00:21:06,020 --> 00:21:07,970 >> N'hi ha un més, el que és només una mica de por, 399 00:21:07,970 --> 00:21:11,360 així que vaig a esmentar que si només com una lliçó de vida. 400 00:21:11,360 --> 00:21:14,850 Cada vegada que s'utilitza una aplicació anomenat com Snapchat o similar 401 00:21:14,850 --> 00:21:19,380 que diu que aquestes fotos només duren cinc segons, 10 segons, o el que sigui. 402 00:21:19,380 --> 00:21:21,680 Són efímers Això és absolutament no és el cas. 403 00:21:21,680 --> 00:21:25,670 De la mateixa manera que no hi ha forma, digitalment, per posar en pràctica alguna forma de vídeo, 404 00:21:25,670 --> 00:21:30,150 o imatge, o textual compartir aquesta que un receptor en l'altre extrem 405 00:21:30,150 --> 00:21:31,660 no pot d'alguna manera guardar les dades. 406 00:21:31,660 --> 00:21:34,300 >> En la forma més ingènua, algú podria prendre el seu telèfon. 407 00:21:34,300 --> 00:21:36,850 I tenen una segona finestra 10 mentre mira a algun complement 408 00:21:36,850 --> 00:21:39,410 que acaba de prendre algun altre telèfon i fotografiar, òbviament. 409 00:21:39,410 --> 00:21:41,660 Així que vostè pot preservar una mica digitalment d'aquesta manera. 410 00:21:41,660 --> 00:21:44,620 Alguns de vostès saben com prendre captures de pantalla en el seu telèfon. 411 00:21:44,620 --> 00:21:49,290 De fet, si vostè no sap això, adonar-se que almenys Snapchat, 412 00:21:49,290 --> 00:21:51,040 i crec que una altra aplicacions d'aquests dies, 413 00:21:51,040 --> 00:21:53,720 almenys si el dir destinatari té en realitat 414 00:21:53,720 --> 00:21:55,310 pres una captura de pantalla de la imatge. 415 00:21:55,310 --> 00:22:00,870 >> Però pitjor encara, aquest va ser el snappening, com algú encunyat recentment, 416 00:22:00,870 --> 00:22:04,680 on alguns 100000 fermalls de pressió havia estat posat en llibertat 417 00:22:04,680 --> 00:22:09,310 en el que s'anomena un arxiu torrent en diversos llocs web en última instància. 418 00:22:09,310 --> 00:22:12,000 I aquests contenien un munt de missatges privats i missatges. 419 00:22:12,000 --> 00:22:15,210 Resulta la majoria d'ells benigna, pel que no és el que es podria esperar. 420 00:22:15,210 --> 00:22:17,580 Però com que la gent tenia fet servir un lloc web de tercers, 421 00:22:17,580 --> 00:22:20,270 entrant amb el seu Snapchat nom d'usuari i contrasenya i, a continuació 422 00:22:20,270 --> 00:22:23,470 guardar tots els seus fermalls de pressió en aquest lloc web de tercers. 423 00:22:23,470 --> 00:22:26,130 I va ser aquest tercer lloc web que va ser hackejat, 424 00:22:26,130 --> 00:22:30,710 que només volia dir que algú va descobrir com per obtenir tota 100.000 més d'aquestes imatges 425 00:22:30,710 --> 00:22:33,822 en el seu propi disc dur per compartir subsegüent. 426 00:22:33,822 --> 00:22:36,030 Francament, aquí també, és una espècie de asnal que Snapchat 427 00:22:36,030 --> 00:22:39,360 s'implementa de manera que un tercer pot classificar d'intercepció 428 00:22:39,360 --> 00:22:43,310 les dades i que no està lligada a la seva pròpia aplicació que s'executa al telèfon. 429 00:22:43,310 --> 00:22:46,947 Però aquí, també, adonar-se que aquests les coses no li han d'agafar per sorpresa, 430 00:22:46,947 --> 00:22:49,030 o almenys, ha d'haver ser una lliçó de vida aquí. 431 00:22:49,030 --> 00:22:52,220 Si desitja el tècnic detalls, vagi a aquesta URL no 432 00:22:52,220 --> 00:22:53,570 això és en les diapositives d'avui. 433 00:22:53,570 --> 00:23:00,960 Molt bé, alguna pregunta sobre lliçons de la vida d'avui en dia a CS? 434 00:23:00,960 --> 00:23:02,710 Al seu torn que fos. 435 00:23:02,710 --> 00:23:04,970 Qualsevol cosa en absolut? 436 00:23:04,970 --> 00:23:06,301 Qualsevol cosa en absolut? 437 00:23:06,301 --> 00:23:09,050 Tinc una gran quantitat de persones que es registren seva Snapchat o alguna cosa ara. 438 00:23:09,050 --> 00:23:11,690 >> Molt bé, de manera que SQL, Structured Query Language. 439 00:23:11,690 --> 00:23:12,509 Anem a embolicar això. 440 00:23:12,509 --> 00:23:14,300 I també, encara que només estem rascant 441 00:23:14,300 --> 00:23:16,310 la superfície d'aquest idioma, li donarem 442 00:23:16,310 --> 00:23:18,930 suficient de la llengua en forma de PSet juliol 443 00:23:18,930 --> 00:23:22,140 perquè pugui fer front a alguns funcionalitat bastant comú. 444 00:23:22,140 --> 00:23:24,912 Però s'adonen que hi ha un parell coses que no requerim de vostès, 445 00:23:24,912 --> 00:23:27,120 però que seran important venir projectes finals 446 00:23:27,120 --> 00:23:30,760 i sens dubte venir fent real llocs web amb usuaris reals 447 00:23:30,760 --> 00:23:32,040 És aquesta decisió de disseny. 448 00:23:32,040 --> 00:23:34,460 >> Resulta que en una base de dades MySQL, 449 00:23:34,460 --> 00:23:37,460 tenir raïms d'opcions com els tipus de dades per a les columnes 450 00:23:37,460 --> 00:23:41,670 i altres coses, però també tenen l'elecció d'una trucada d'emmagatzematge 451 00:23:41,670 --> 00:23:44,570 motor per a totes les seves dades, el tipus de sistema de fitxers, 452 00:23:44,570 --> 00:23:46,700 si està familiaritzat, per totes les seves dades. 453 00:23:46,700 --> 00:23:48,830 En quin format es l'emmagatzema en última instància, a? 454 00:23:48,830 --> 00:23:53,300 I la més comuna, potser, ha estat MyISAM i InnoDB, els termes tècnics 455 00:23:53,300 --> 00:23:56,060 que anem a preocupem només en la mesura que un té 456 00:23:56,060 --> 00:23:58,500 i un no té la següent funció. 457 00:23:58,500 --> 00:24:00,390 >> Suposem que vostè té una petita nevera dormitori. 458 00:24:00,390 --> 00:24:03,030 I suposem que vostè i el seu company de quart, que comparteixen aquesta nevera, 459 00:24:03,030 --> 00:24:04,682 són molt aficionat a la llet per exemple. 460 00:24:04,682 --> 00:24:07,140 I aquest és, de fet, la forma en història va ser explicada a mi camí de tornada 461 00:24:07,140 --> 00:24:10,890 en el dia en que vaig prendre un curs anomenat CS 161 sistemes operatius, el que 462 00:24:10,890 --> 00:24:12,580 explora de manera similar aquest tema. 463 00:24:12,580 --> 00:24:13,760 Així que tens aquesta nevera. 464 00:24:13,760 --> 00:24:14,630 Estàs fora de la llet. 465 00:24:14,630 --> 00:24:17,000 I arribes a casa, el seu company de quart de encara a classe o el que sigui, 466 00:24:17,000 --> 00:24:19,208 i decideix que vaig a sortir i aconseguir una mica de llet. 467 00:24:19,208 --> 00:24:22,630 Així es tanca la nevera, el bloqueig l'habitació de la residència, anar a l'altre costat del carrer 468 00:24:22,630 --> 00:24:25,330 a CVS o on sigui, i obtenir a la fila per comprar una mica de llet. 469 00:24:25,330 --> 00:24:28,960 >> Mentrestant, el seu company de cambra arriba a casa de la classe, es fica a l'habitació de la residència, 470 00:24:28,960 --> 00:24:31,802 obre la nevera, també s'adona ooph, estem fora de la llet. 471 00:24:31,802 --> 00:24:33,760 Així que ell o ella es tanca la nevera i després succeeix 472 00:24:33,760 --> 00:24:35,610 per anar a l'altra CVS, que passa a ser 473 00:24:35,610 --> 00:24:38,470 a una quadra de distància dels altres CVS a la plaça, i es posa en línia 474 00:24:38,470 --> 00:24:40,230 Per arribar una mica de llet. 475 00:24:40,230 --> 00:24:42,524 Bé, és clar, uns pocs minuts més tard, els dos tornis, 476 00:24:42,524 --> 00:24:44,690 i el pitjor de tot és possible resultats ha succeït. 477 00:24:44,690 --> 00:24:45,792 Tots dos tenen llet. 478 00:24:45,792 --> 00:24:47,500 I no ho fa realment com la llet que molt. 479 00:24:47,500 --> 00:24:49,625 Així que un d'ells és just va a agrir en algun moment. 480 00:24:49,625 --> 00:24:55,941 Així que ara vostè té una quantitat excessiva de llet a la nevera tot perquè ¿per què? 481 00:24:55,941 --> 00:24:57,072 >> [Inaudible] 482 00:24:57,072 --> 00:24:59,780 DAVID Malan: Sí, no ho vas fer comunicar-se d'alguna manera un amb l'altre 483 00:24:59,780 --> 00:25:00,904 que vostè estava rebent la llet. 484 00:25:00,904 --> 00:25:04,320 Així que en el més simple de maneres en el món humà, 485 00:25:04,320 --> 00:25:08,390 ¿Com podria evitar aquest ximple escenari succeeixi tal 486 00:25:08,390 --> 00:25:09,750 que només acaba amb un. 487 00:25:09,750 --> 00:25:10,840 Text ells, sí bo. 488 00:25:10,840 --> 00:25:12,877 Però, ¿com si no? 489 00:25:12,877 --> 00:25:13,460 Notes Post-it. 490 00:25:13,460 --> 00:25:14,626 DAVID Malan: Una nota de post-it. 491 00:25:14,626 --> 00:25:17,150 Qualsevol forma de comunicació que li diu al seu company de quart 492 00:25:17,150 --> 00:25:18,670 no entrar a la nevera per a la llet. 493 00:25:18,670 --> 00:25:20,440 Vaig a anar a repoblar pel meu compte. 494 00:25:20,440 --> 00:25:22,770 Així que d'alguna manera necessita per bloquejar aquest recurs. 495 00:25:22,770 --> 00:25:27,180 Així que podem fer esto-- podem tipus de arruïnar la història i convertir-se en una història de CS 496 00:25:27,180 --> 00:25:30,360 de manera que pensar en això com simplement com un variable, que està emmagatzemant una certa valor. 497 00:25:30,360 --> 00:25:32,570 I en aquest moment, la valor de la llet és zero, 498 00:25:32,570 --> 00:25:35,410 que vostè no desitja que el seu company de quart per inspeccionar aquesta variable 499 00:25:35,410 --> 00:25:38,730 i després prendre una decisió d'ell o ella basant-se en l'estat d'aquesta variable 500 00:25:38,730 --> 00:25:42,430 si vostè està en el procés de canviar l'estat d'aquesta variable. 501 00:25:42,430 --> 00:25:46,140 >> Així que una de les línies de SQL que entregar-li en PSet especificació juliol 502 00:25:46,140 --> 00:25:47,310 és aquest d'aquí. 503 00:25:47,310 --> 00:25:49,740 I no gastem una enorme quantitat de temps parlant d'això. 504 00:25:49,740 --> 00:25:55,100 Però resulta que, si vostè està tractant per comprar algunes accions en les finances CS50 505 00:25:55,100 --> 00:25:58,000 que ja té algunes accions de, vostè 506 00:25:58,000 --> 00:26:01,750 vull ser capaç de fer un nombre de les coses a l'instant junts. 507 00:26:01,750 --> 00:26:04,360 Vols ser capaç de efectivament, en un alt nivell, 508 00:26:04,360 --> 00:26:06,700 comprovar bé, si vull per comprar més accions de gratuït, 509 00:26:06,700 --> 00:26:08,780 l'acció de penic que parlar en l'especificació, 510 00:26:08,780 --> 00:26:10,660 Vull primer xec el nombre d'accions que tinc. 511 00:26:10,660 --> 00:26:11,810 I suposo que és de cinc. 512 00:26:11,810 --> 00:26:14,600 I suposo que vull comprar 10 més, en última instància, 513 00:26:14,600 --> 00:26:17,069 vull tenir 15 accions. 514 00:26:17,069 --> 00:26:18,360 Així que he de fer dues preguntes. 515 00:26:18,360 --> 00:26:20,230 Quin és l'estat de la variable? 516 00:26:20,230 --> 00:26:21,470 Quin és l'estat de la fila? 517 00:26:21,470 --> 00:26:22,970 Quantes accions no tinc actualment? 518 00:26:22,970 --> 00:26:24,636 Llavors vostè vol seguir endavant i actualitzar-lo. 519 00:26:24,636 --> 00:26:27,720 Així que aquest és l'anàleg a la llet en que comprovi la fila, 520 00:26:27,720 --> 00:26:30,730 i llavors vostè vol actualitzar- perquè si vostè vol comprar 10 accions, 521 00:26:30,730 --> 00:26:32,521 vostè no desitja canviar la fila a 10, que 522 00:26:32,521 --> 00:26:35,300 voler canviar a 5 més de 10 o, per descomptat, 15. 523 00:26:35,300 --> 00:26:40,030 >> Aquesta línia de codi garanteix que aquestes dues idees conceptuals 524 00:26:40,030 --> 00:26:42,810 ocórrer junts o no en absolut. 525 00:26:42,810 --> 00:26:46,920 Ningú, incloent a algun altre usuari que ha iniciat sessió en el mateix lloc web, 526 00:26:46,920 --> 00:26:49,900 d'alguna manera es pot interrompre la comprovació de la fila 527 00:26:49,900 --> 00:26:52,960 i l'actualització de la fila, la seleccionar i l'actualització si es vol. 528 00:26:52,960 --> 00:26:57,360 I la sintaxi no és molt obvi, però aquesta línia, sempre s'és, 529 00:26:57,360 --> 00:27:01,150 assegura que aquestes dues operacions comprovi la variable o comprovi la fila 530 00:27:01,150 --> 00:27:04,660 i actualitzar la fila succeeixi atòmicament. 531 00:27:04,660 --> 00:27:06,849 >> Oh, aquí anem de nou. 532 00:27:06,849 --> 00:27:07,890 Missatge de text en el meu telèfon. 533 00:27:07,890 --> 00:27:09,954 Així que anem a fer d'aquest un poc més concret. 534 00:27:09,954 --> 00:27:12,120 Suposem que vostè no és l'aplicació d'un refrigerador, 535 00:27:12,120 --> 00:27:16,400 i no s'està implementant PSet 7, però un banc real, 536 00:27:16,400 --> 00:27:20,000 o un caixer automàtic, un caixer automàtic Màquina, pel qual vostè d'alguna manera 537 00:27:20,000 --> 00:27:22,960 vull ser capaç de donar poder els usuaris transferir diners 538 00:27:22,960 --> 00:27:24,500 d'un compte a una altra. 539 00:27:24,500 --> 00:27:25,100 Acceptar, espera. 540 00:27:25,100 --> 00:27:26,683 Vaig a silenciar això ara, gràcies. 541 00:27:26,683 --> 00:27:30,450 Així que volem moure diners d'un número de compte 542 00:27:30,450 --> 00:27:33,600 en un compte diferent nombre, específicament 100 dòlars. 543 00:27:33,600 --> 00:27:37,690 Així que això és una espècie d'una arbitrària exemple, pel que vostè, el caixer automàtic, 544 00:27:37,690 --> 00:27:41,060 pot ser que desitgi per executar dos SQL consultes, restar d'un compte, 545 00:27:41,060 --> 00:27:42,430 i afegir a l'altre compte. 546 00:27:42,430 --> 00:27:46,766 Però vostè vol assegurar-se que aquests dues línies tant ocorren o no en absolut. 547 00:27:46,766 --> 00:27:48,640 No vol que alguna cosa sent interromput. 548 00:27:48,640 --> 00:27:51,440 No fa una mica de dolent de la pel·lícula intel·ligent d'alguna manera que es col·loca al Bank of America 549 00:27:51,440 --> 00:27:53,270 amb dos caixers automàtics davant d'ell i d'alguna manera 550 00:27:53,270 --> 00:27:55,270 espècie d'escriure al ordres a la vegada, 551 00:27:55,270 --> 00:28:01,230 amb sort tractant de deduir $ 200 en lloc de $ 100 i només té $ 100 acreditats. 552 00:28:01,230 --> 00:28:04,450 En poques paraules, vostè vol que això comportar-se exactament com vostè espera. 553 00:28:04,450 --> 00:28:06,540 >> I la forma de fer aquesta base de dades en SQL és 554 00:28:06,540 --> 00:28:09,350 que es col·loca en el que és anomenat una transacció. 555 00:28:09,350 --> 00:28:14,290 Literalment en SQL, pot trucar CS50 de funció de consulta amb cita inici fi de la cita 556 00:28:14,290 --> 00:28:15,370 transacció. 557 00:28:15,370 --> 00:28:18,640 A continuació, pot executar qualsevol nombre de consultes SQL subsegüents, 558 00:28:18,640 --> 00:28:20,870 però cap d'ells pren efectuar sobre la base de dades 559 00:28:20,870 --> 00:28:25,880 fins que cridi consulta entre cometes comprometre, si de nou usant PHP. 560 00:28:25,880 --> 00:28:29,810 I d'aquesta manera, vostè pot assegurar-se que fins i tot si vostè té 1.000 usuaris de tot 561 00:28:29,810 --> 00:28:32,080 colpejar a la base de dades al mateix temps, SQL 562 00:28:32,080 --> 00:28:34,540 li prometo que aquests dues consultes seran 563 00:28:34,540 --> 00:28:36,740 implementat una rere l'altra. 564 00:28:36,740 --> 00:28:40,330 Així que vostè no acaba amb l'excés de llet o la quantitat equivocada, en última instància, 565 00:28:40,330 --> 00:28:40,830 de diners. 566 00:28:40,830 --> 00:28:43,110 >> Així que tingui això en compte, no tant per PSet juliol 567 00:28:43,110 --> 00:28:45,250 però per a projectes fi de carrera si ets realment 568 00:28:45,250 --> 00:28:49,690 tractant de moure les dades al voltant de a través de les taules com pot ser que aquí. 569 00:28:49,690 --> 00:28:53,980 Però potser encara més simple i més obvi per a entendre amb un exemple 570 00:28:53,980 --> 00:28:54,860 és aquest d'aquí. 571 00:28:54,860 --> 00:28:57,760 I algú ens envia per correu electrònic sobre això l'altre dia 572 00:28:57,760 --> 00:28:59,600 quan va veure alguna cosa similar en línia. 573 00:28:59,600 --> 00:29:03,480 >> Així que, que jo sàpiga, el sistema pin no és vulnerable a aquest atac. 574 00:29:03,480 --> 00:29:06,637 I no tinc ni idea de si fins i tot usos la base de dades de SQL sota el capó. 575 00:29:06,637 --> 00:29:08,470 Però farem servir per En nom de la discussió. 576 00:29:08,470 --> 00:29:10,178 Aquí hi ha la pantalla que Gent de Harvard tendeixen 577 00:29:10,178 --> 00:29:13,620 per veure en iniciar sessió amb el seu Nombre d'identificació de Harvard i el seu PIN. 578 00:29:13,620 --> 00:29:19,020 I suposem que el sistema de passador fora implementat en PHP i MySQL amb un 579 00:29:19,020 --> 00:29:22,000 base de dades, el codi que algú Fa anys que podria haver escrit 580 00:29:22,000 --> 00:29:23,270 podria tenir aquest aspecte. 581 00:29:23,270 --> 00:29:25,230 En primer lloc, declarar una anomenat nom d'usuari variable. 582 00:29:25,230 --> 00:29:27,560 I així aconseguir que a partir de la superglobal POST. 583 00:29:27,560 --> 00:29:30,140 A continuació, obtenir una altra variable anomenat contrasenya i fer el mateix. 584 00:29:30,140 --> 00:29:33,080 I després simplement executar aquesta llarga consulta aquí, 585 00:29:33,080 --> 00:29:36,690 seleccioneu l'estrella dels usuaris ON nom d'usuari és igual a tal i tal 586 00:29:36,690 --> 00:29:38,510 i la contrasenya és igual a tal i tal. 587 00:29:38,510 --> 00:29:40,660 >> Tingueu present que el arrissat suports que he fet servir aquí 588 00:29:40,660 --> 00:29:42,880 només significa que PHP, vagi endavant i substitut 589 00:29:42,880 --> 00:29:45,400 el valor dels dos les variables just aquí. 590 00:29:45,400 --> 00:29:50,090 No són estrictament necessaris, però que tendeixen a evitar errors de sintaxi subtils. 591 00:29:50,090 --> 00:29:53,650 Així que això sembla completament correcta a primera vista. 592 00:29:53,650 --> 00:29:54,240 I ho és. 593 00:29:54,240 --> 00:29:56,680 Es podria aplicar el sistema de passador d'aquesta manera. 594 00:29:56,680 --> 00:30:00,460 >> Però suposem que un super estudiant intel·ligent i maliciós 595 00:30:00,460 --> 00:30:03,020 d'entrada això com el seu PIN. 596 00:30:03,020 --> 00:30:05,550 Així que m'he tret la bala signes aquí a la maqueta, 597 00:30:05,550 --> 00:30:08,760 i jo he fet vaig revelar el que ell o ella podria ser escriure. 598 00:30:08,760 --> 00:30:10,350 I és una mica estrany. 599 00:30:10,350 --> 00:30:13,850 Però el que salta a la vista a potencialment preocupant sobre la entrada de l'usuari, 600 00:30:13,850 --> 00:30:16,450 encara que no té idea del que un atac d'injecció SQL significa. 601 00:30:16,450 --> 00:30:20,300 Per què aquesta mirada una mica a peix? 602 00:30:20,300 --> 00:30:21,050 Què és això? 603 00:30:21,050 --> 00:30:21,550 [Inaudible] 604 00:30:21,550 --> 00:30:24,260 DAVID Malan: El o és una mica sospitós. 605 00:30:24,260 --> 00:30:26,310 De fet, aquesta és una paraula clau de SQL. 606 00:30:26,310 --> 00:30:28,105 Així que no augura res de bo. 607 00:30:28,105 --> 00:30:29,980 El fet que hi ha totes aquestes cites individuals 608 00:30:29,980 --> 00:30:32,646 allà-- de fet, un dels més fàcils maneres de trencar algunes bases de dades 609 00:30:32,646 --> 00:30:35,880 és escrivint un nom com O'Reilly que té un apòstrof-hi 610 00:30:35,880 --> 00:30:38,600 perquè si l'ésser humà que va escriure el codi darrere de les escenes 611 00:30:38,600 --> 00:30:41,570 no té en compte que hi ha podria ser cometes simples en un usuari de 612 00:30:41,570 --> 00:30:45,060 d'entrada, i ell o ella està utilitzant cometes simples en el seu codi, 613 00:30:45,060 --> 00:30:46,040 les coses dolentes poden passar. 614 00:30:46,040 --> 00:30:47,870 >> De fet, pitjor encara, consideri això. 615 00:30:47,870 --> 00:30:50,600 Si això va ser de nou el codi que algú a Harvard anys 616 00:30:50,600 --> 00:30:53,100 Fa va escriure per al passador sistema, observi el que està 617 00:30:53,100 --> 00:30:56,220 a punt de ser substituït per nom d'usuari i contrasenya 618 00:30:56,220 --> 00:30:59,780 si l'usuari escriu en el nou skroob com el seu nom d'usuari 619 00:30:59,780 --> 00:31:03,960 i després d'un, dos, tres, quatre, cinc, cita o entre cometes un és igual a 620 00:31:03,960 --> 00:31:04,660 citar-ne un. 621 00:31:04,660 --> 00:31:07,220 I noti el que és clau aquí està l'usuari no ha 622 00:31:07,220 --> 00:31:09,900 començat la seva contrasenya o el seu pin amb una cita. 623 00:31:09,900 --> 00:31:12,610 I no han acabat amb una cita perquè ell o ella 624 00:31:12,610 --> 00:31:16,315 està assumint que si el programador no era tan aguda, 625 00:31:16,315 --> 00:31:18,690 que han de tenir els cometes simples en el seu codi. 626 00:31:18,690 --> 00:31:19,860 >> Així que aquí està el codi. 627 00:31:19,860 --> 00:31:23,820 I que la substitució ara podria passar és això. 628 00:31:23,820 --> 00:31:26,350 I he subratllat el l'usuari ha teclejat. 629 00:31:26,350 --> 00:31:28,480 Així que abans, després. 630 00:31:28,480 --> 00:31:33,330 I noti el que és lleugerament preocupant ara sobre la meitat dreta d'aquest codi SQL? 631 00:31:33,330 --> 00:31:36,300 És una mica més complex, cal reconèixer-ho, de les consultes que hem vist. 632 00:31:36,300 --> 00:31:38,550 Però això no pot ser una bona cosa si vostè és 633 00:31:38,550 --> 00:31:42,240 dient seleccioneu estrella, que és selecte tot, des de la taula de l'usuari 634 00:31:42,240 --> 00:31:46,630 on nom d'usuari és igual skroob i contrasenya és igual a un, dos, tres, quatre, 635 00:31:46,630 --> 00:31:49,610 cinc o un és igual a un. 636 00:31:49,610 --> 00:31:53,860 Quina és la implicació lògica d'aquesta última clàusula presumiblement? 637 00:31:53,860 --> 00:31:55,650 És només sempre és cert. 638 00:31:55,650 --> 00:31:59,930 >> I perquè hem espècie d'endevinar o descobert per assaig i error 639 00:31:59,930 --> 00:32:02,760 que el programador que escriure el codi no ho va fer 640 00:32:02,760 --> 00:32:07,250 anticipar una persona humana o dolent escriure entre cometes simples, així, 641 00:32:07,250 --> 00:32:10,350 podem sintàcticament completar la consulta SQL 642 00:32:10,350 --> 00:32:12,260 amb alguna cosa sense sentit però una cosa que 643 00:32:12,260 --> 00:32:15,930 és sintàcticament incorrecta que sempre s'avalua com a veritable. 644 00:32:15,930 --> 00:32:19,130 Així que si aquest codi es fa servir per respondre la pregunta veritable o falsa hauria 645 00:32:19,130 --> 00:32:22,930 es permetrà a aquest usuari a passar, la resposta està sempre aparentment va 646 00:32:22,930 --> 00:32:26,930 per ser veritat, perquè això sempre va per seleccionar una mica de la base de dades 647 00:32:26,930 --> 00:32:29,280 perquè un per descomptat és igual a un sempre. 648 00:32:29,280 --> 00:32:30,360 >> Llavors, ¿quina és la solució? 649 00:32:30,360 --> 00:32:33,290 Bé en PSet 7, que en realitat evitar això tots junts. 650 00:32:33,290 --> 00:32:37,360 Li donem una funció de consulta, i nosaltres l'animem a utilitzar signes d'interrogació 651 00:32:37,360 --> 00:32:40,430 com a marcadors de posició, de manera similar en esperit al de printf% s, 652 00:32:40,430 --> 00:32:43,710 però el que és clau sobre els signes d'interrogació aquí és si realment llegeixi 653 00:32:43,710 --> 00:32:46,950 functions.php, on el nostre funció de consulta s'implementa, 654 00:32:46,950 --> 00:32:52,780 aquests signes d'interrogació es van escapar, per la qual cosa res potencialment perillós 655 00:32:52,780 --> 00:32:58,210 com una cometa simple s'activa en una cita única escapat. 656 00:32:58,210 --> 00:33:00,590 >> Així que això és el que hi ha realment està succeint si 657 00:33:00,590 --> 00:33:04,850 utilitzar la funció de cerca de CS50 o qualsevol nombre de biblioteques gratuïtes de tercers que 658 00:33:04,850 --> 00:33:06,000 fer el mateix. 659 00:33:06,000 --> 00:33:09,850 No importa en aquest cas, en verd, si l'usuari ha teclejat en una única cotització 660 00:33:09,850 --> 00:33:12,070 perquè la consulta funció que escrivim és 661 00:33:12,070 --> 00:33:15,120 va a afegir barres invertides abans la cotització perillós. 662 00:33:15,120 --> 00:33:17,360 Així que això no és, en De fet, serà de fiar. 663 00:33:17,360 --> 00:33:20,910 Això és com escriure en un boig buscant contrasenya que és, per descomptat, no va 664 00:33:20,910 --> 00:33:23,490 estar contrasenya real de skroob. 665 00:33:23,490 --> 00:33:28,260 >> Així que el menjar per emportar per CS50 és un, absolutament sempre usar alguna cosa 666 00:33:28,260 --> 00:33:30,860 com a funció de consulta de l'CS50 o la biblioteca subjacent, 667 00:33:30,860 --> 00:33:32,560 que passa a anomenar DOP. 668 00:33:32,560 --> 00:33:35,880 Però mai, mai, mai fer un codi com aquest 669 00:33:35,880 --> 00:33:39,472 sense escapar o fregar com diuen les seves entrades. 670 00:33:39,472 --> 00:33:42,430 I en algun punt, probablement, venir a través d'un lloc web com aquest. 671 00:33:42,430 --> 00:33:46,060 De fet, sembla ser el cas com en els aeroports i hotels a llocs 672 00:33:46,060 --> 00:33:48,880 on tenen internet Wi-Fi l'accés que vostè ha d'iniciar sessió en, 673 00:33:48,880 --> 00:33:51,010 aquests llocs web són sempre horriblement implementat. 674 00:33:51,010 --> 00:33:55,680 I així, una mena de diversió en exercici a la llar, no amb fins maliciosos o més 675 00:33:55,680 --> 00:33:59,170 d'una diversió a la carretera exercici, és que només has d'escriure 676 00:33:59,170 --> 00:34:02,850 un apòstrof, una sola cita, en una forma en algun lloc web 677 00:34:02,850 --> 00:34:03,810 i veure què passa. 678 00:34:03,810 --> 00:34:06,660 I si el servidor cau o es dóna vostè algun tipus de missatge d'error, 679 00:34:06,660 --> 00:34:09,690 pot molt ben ser que algú no ha previst aquesta. 680 00:34:09,690 --> 00:34:15,239 I a continuació, vostè ha d'alertar a l'adequada autoritats i no continuarà. 681 00:34:15,239 --> 00:34:20,843 >> Així que ara vostès han d'esperar entendre una mica més d'humor del friki aquí. 682 00:34:20,843 --> 00:34:24,120 >> [El] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID Malan: Vostè sap que vostè és un friki. 685 00:34:29,070 --> 00:34:30,944 Per als propers anys, que recordaran 686 00:34:30,944 --> 00:34:33,520 qui tauletes Bobby és perquè d'aquest dibuix animat aquí. 687 00:34:33,520 --> 00:34:36,760 Així que tingues-ho en compte a mesura que canvi de context per última vegada 688 00:34:36,760 --> 00:34:38,770 avui per JavaScript. 689 00:34:38,770 --> 00:34:41,600 Hem passat relativament poc temps en la sintaxi de PHP 690 00:34:41,600 --> 00:34:43,440 perquè en realitat súper similar a C. 691 00:34:43,440 --> 00:34:47,300 I molt bé prou, massa JavaScript és super similar a la sintaxi de C 692 00:34:47,300 --> 00:34:49,639 així com veurem en un moment, i com anem a 693 00:34:49,639 --> 00:34:51,205 veure més endavant aquesta setmana en particular. 694 00:34:51,205 --> 00:34:54,080 Què es pot fer amb aquest llenguatge, però, és encara més potent, 695 00:34:54,080 --> 00:34:55,790 especialment amb APIs. 696 00:34:55,790 --> 00:34:56,960 >> Però primer una visita ràpida. 697 00:34:56,960 --> 00:35:00,450 Així que un, en JavaScript, no hi ha sense funció principal, que és agradable. 698 00:35:00,450 --> 00:35:02,650 Igual que amb PHP, vostè pot escriure el codi. 699 00:35:02,650 --> 00:35:04,310 Condicions veuen així. 700 00:35:04,310 --> 00:35:07,100 I expressions booleanes poden veurà així o així. 701 00:35:07,100 --> 00:35:09,530 Hi ha interruptors, i podria tenir aquest aspecte. 702 00:35:09,530 --> 00:35:10,970 Quatre bucles es veuen així. 703 00:35:10,970 --> 00:35:12,390 Mentre que els bucles es veuen així. 704 00:35:12,390 --> 00:35:14,160 Faci estones tenir aquest aspecte. 705 00:35:14,160 --> 00:35:16,850 I a continuació, les matrius s'assemblen això, molt similar a PHP. 706 00:35:16,850 --> 00:35:20,740 Però noti, que en JavaScript que declarar una variable no amb un dòlar 707 00:35:20,740 --> 00:35:25,190 signar, no amb un tipus de dades, però, literalment, dient var per a la variable abans. 708 00:35:25,190 --> 00:35:27,900 És també s'escriu lliurement en què té tipus, 709 00:35:27,900 --> 00:35:29,729 però no declara explícitament. 710 00:35:29,729 --> 00:35:31,520 I després una cadena, per exemple, pot tenir un aspecte 711 00:35:31,520 --> 00:35:34,350 així, aquesta cadena ser cridat s en aquest cas. 712 00:35:34,350 --> 00:35:35,410 I després un objecte. 713 00:35:35,410 --> 00:35:37,010 I aquests que veurem més en poc temps. 714 00:35:37,010 --> 00:35:41,470 I un objecte és potser un dels més comunament vist estructures de dades 715 00:35:41,470 --> 00:35:44,050 basat en un JavaScript programa perquè permet 716 00:35:44,050 --> 00:35:46,680 associar arbitrària parells de valors clau només 717 00:35:46,680 --> 00:35:51,240 com arrays associatius de PHP i de la mateixa manera que la seva pròpia taula hash 718 00:35:51,240 --> 00:35:54,042 o tractar com implementem fa unes setmanes. 719 00:35:54,042 --> 00:35:56,250 Així que anem a veure el que en realitat que podem fer amb JavaScript. 720 00:35:56,250 --> 00:35:59,410 I en particular, és a dir una llarga llista de característiques 721 00:35:59,410 --> 00:36:02,300 que els navegadors han de ens permeten enganxar JavaScript 722 00:36:02,300 --> 00:36:05,470 en un lloc web de la següent manera. 723 00:36:05,470 --> 00:36:09,340 JavaScript s'utilitza sovint com un costat del client llenguatge de scripting. 724 00:36:09,340 --> 00:36:10,130 No és compilat. 725 00:36:10,130 --> 00:36:11,370 És també s'interpreta. 726 00:36:11,370 --> 00:36:15,740 Però a diferència de PHP, que ha estat funcionant al servidor, a la web, 727 00:36:15,740 --> 00:36:18,220 o molt dins de la clients, JavaScript 728 00:36:18,220 --> 00:36:22,190 és diferent en què en general s'executa al navegador. 729 00:36:22,190 --> 00:36:26,060 >> Pel que qualsevol codi JavaScript de començar a escriure per PSet 8, o el projecte final, 730 00:36:26,060 --> 00:36:29,890 o en el món real que generalment es va per a ser salvat en el servidor, absolutament 731 00:36:29,890 --> 00:36:33,110 HTML en un punt o de punt JS d'arxiu JavaScript. 732 00:36:33,110 --> 00:36:35,770 No obstant això, el navegador va descarregar JavaScript 733 00:36:35,770 --> 00:36:39,530 codi a la seva pròpia instància de Chrome, o IE, o Firefox, o el que sigui. 734 00:36:39,530 --> 00:36:43,870 I el codi és en realitat va a aconseguir executat a l'interior del seu propi navegador. 735 00:36:43,870 --> 00:36:46,560 Només per fer-ho més real, anem a veure això en forma concreta. 736 00:36:46,560 --> 00:36:50,120 >> No tenim idea del que fa el codi sense realment llegir a través d'ell. 737 00:36:50,120 --> 00:36:52,670 Però me n'aniré a Facebook.com sense iniciar sessió. 738 00:36:52,670 --> 00:37:00,440 Déjame anar a inspeccionar Element i anar a, diguem, Xarxa i recarregar la pàgina. 739 00:37:00,440 --> 00:37:04,150 I anem a veure- permetin-me moc a carregar la Pàgina de aconseguir les peticions al nou. 740 00:37:04,150 --> 00:37:08,850 I el primer arxiu que veig és CSS, CSS. 741 00:37:08,850 --> 00:37:10,880 Aquí hi ha la primera JavaScript arxiu, i tinc 742 00:37:10,880 --> 00:37:14,600 ni idea del que això fa, però aquí és una part del codi JavaScript 743 00:37:14,600 --> 00:37:16,180 que impulsa Facebook. 744 00:37:16,180 --> 00:37:18,400 Ni tan sols és veritat que revelant per apropar. 745 00:37:18,400 --> 00:37:20,260 Segueix sent igual d'absurd. 746 00:37:20,260 --> 00:37:24,341 >> Però veuràs, fins i tot per sota, hi ha fins i tot més d'aquests arxius JavaScript. 747 00:37:24,341 --> 00:37:24,840 Vaja. 748 00:37:24,840 --> 00:37:25,440 Això és un ping. 749 00:37:25,440 --> 00:37:28,550 Baixem una mica A més, encara més, encara més. 750 00:37:28,550 --> 00:37:29,894 N'hi ha un. 751 00:37:29,894 --> 00:37:31,238 N'hi ha un. 752 00:37:31,238 --> 00:37:31,880 N'hi ha un. 753 00:37:31,880 --> 00:37:35,820 >> Així que tot i que Facebook, darrere de la escenes, està escrit en part en PHP 754 00:37:35,820 --> 00:37:39,100 i la pròpia versió dels mateixos de Facebook, hi ha una enorme quantitat de JavaScript. 755 00:37:39,100 --> 00:37:41,330 De fet, qualsevol de les xerrant fas a Facebook, 756 00:37:41,330 --> 00:37:45,520 qualsevol de les actualitzacions de la línia de temps en línia que això succeeixi en temps real, tot això 757 00:37:45,520 --> 00:37:47,944 és impulsat per JavaScript. 758 00:37:47,944 --> 00:37:48,444 Sí? 759 00:37:48,444 --> 00:37:50,235 >> AUDIÈNCIA: No estic segur si això és Facebook, 760 00:37:50,235 --> 00:37:53,624 però vaig pensar que Facebook ha desenvolupat el seu propi llenguatge de codi a la casa? 761 00:37:53,624 --> 00:37:54,540 DAVID Malan: Ho van fer. 762 00:37:54,540 --> 00:37:58,110 Així que per això dic una variació de PHP anomenat Hip Hop que, efectivament, 763 00:37:58,110 --> 00:38:03,440 característiques afegides a tal que quan Marc va implementar per primera vegada a Facebook, 764 00:38:03,440 --> 00:38:04,710 que va ser escrit en PHP. 765 00:38:04,710 --> 00:38:07,370 I aquest tipus de s'ha mantingut el tipus de llenguatge extrem frontal 766 00:38:07,370 --> 00:38:09,030 que utilitzen per a molt de la seva codificació, però 767 00:38:09,030 --> 00:38:11,870 no ha estat un llenguatge que és escales particularment bé a milers de milions 768 00:38:11,870 --> 00:38:12,630 de les persones. 769 00:38:12,630 --> 00:38:15,300 I pel que han afegit el seu propi millores darrere de les escenes. 770 00:38:15,300 --> 00:38:17,049 I utilitzen qualsevol nombre d'altres idiomes 771 00:38:17,049 --> 00:38:19,170 per a diverses peces de la seva infraestructura. 772 00:38:19,170 --> 00:38:24,080 Així que sí, és una variació de el que avui coneixem com PHP. 773 00:38:24,080 --> 00:38:26,610 >> Així que donem una ullada en un parell d'exemples 774 00:38:26,610 --> 00:38:28,890 de com podem utilitzar JavaScript aquí. 775 00:38:28,890 --> 00:38:32,530 En el codi font d'avui, tenim una munt d'arxius, el primer dels quals, 776 00:38:32,530 --> 00:38:34,090 anem anomenat DOM zero. 777 00:38:34,090 --> 00:38:36,770 Així DOM zero es veu de la següent manera. 778 00:38:36,770 --> 00:38:40,730 Déjame anar en aquest directori i obrir domzero.html, 779 00:38:40,730 --> 00:38:44,970 la part superior dels quals té un tipus de doc declaració, dient aquí ve HTML 5. 780 00:38:44,970 --> 00:38:46,440 I ara aquí hi ha una etiqueta HTML. 781 00:38:46,440 --> 00:38:47,540 Aquí hi ha l'etiqueta del cap. 782 00:38:47,540 --> 00:38:49,210 I això és el que hi ha de nou avui. 783 00:38:49,210 --> 00:38:52,620 >> Ara tenim una etiqueta de script a l'interior del cap de la pàgina. 784 00:38:52,620 --> 00:38:55,290 I això pel que sembla fa molt poc, però avís 785 00:38:55,290 --> 00:38:58,410 que he definit una guió, un JavaScript. 786 00:38:58,410 --> 00:39:01,050 I com un part, ja que aquesta És un error comú, 787 00:39:01,050 --> 00:39:05,220 JavaScript té absolutament res a veure amb Java, el llenguatge 788 00:39:05,220 --> 00:39:08,010 que alguns de vostès podrien han après a la SCCA. 789 00:39:08,010 --> 00:39:10,480 Va ser més d'una comercialització cosa de tot, 790 00:39:10,480 --> 00:39:12,980 muntar els faldons de Java fa anys. 791 00:39:12,980 --> 00:39:17,300 Però JavaScript, res a veure amb Java, només de manera similar, i molest, 792 00:39:17,300 --> 00:39:18,480 confusament anomenat. 793 00:39:18,480 --> 00:39:21,890 >> Així que aquí està com es declara una funció en JavaScript, dir, literalment, la funció, 794 00:39:21,890 --> 00:39:24,556 llavors el nom de la funció, llavors qualsevol arguments podria adoptar, 795 00:39:24,556 --> 00:39:25,530 igual que en PHP. 796 00:39:25,530 --> 00:39:28,990 Resulta que en JavaScript, una de les més funcions molestos que hi ha és un avís. 797 00:39:28,990 --> 00:39:31,392 Aquesta és una petita finestra que s'obrirà i que l'avisi 798 00:39:31,392 --> 00:39:32,600 en certa peça d'informació. 799 00:39:32,600 --> 00:39:33,766 És generalment mal vist. 800 00:39:33,766 --> 00:39:35,980 Però el farem servir com el nostre primer exercici aquí. 801 00:39:35,980 --> 00:39:37,900 >> Observi algunes funcions de JavaScript. 802 00:39:37,900 --> 00:39:41,524 Les cometes simples i cometes dobles no importa en realitat més. 803 00:39:41,524 --> 00:39:43,690 Les cometes simples i dobles cites es poden intercanviar, 804 00:39:43,690 --> 00:39:46,220 mentre que en C, vostè ha d'utilitzar cometes dobles per a les cadenes, 805 00:39:46,220 --> 00:39:48,150 i vostè té dues individuals Cotitzacions de caràcters. 806 00:39:48,150 --> 00:39:51,150 En el món de JavaScript moltes persones, la majoria de la gent 807 00:39:51,150 --> 00:39:54,970 utilitzar cometes simples al voltant de les cadenes només perquè és una cosa estilística. 808 00:39:54,970 --> 00:39:58,330 Però quin és l'operador més aquí, que no hem vist abans? 809 00:39:58,330 --> 00:39:59,836 >> AUDIÈNCIA: la concatenació. 810 00:39:59,836 --> 00:40:00,960 DAVID Malan: concatenació. 811 00:40:00,960 --> 00:40:02,450 Així que C no té ni tan sols això. 812 00:40:02,450 --> 00:40:04,820 PHP té l'operador punt, que fa això. 813 00:40:04,820 --> 00:40:09,710 JavaScript té l'operador més, que confusament és com Java. 814 00:40:09,710 --> 00:40:11,440 Ara, què està passant aquí? 815 00:40:11,440 --> 00:40:14,260 >> Així que aquí és on un bàsic la comprensió que la imatge 816 00:40:14,260 --> 00:40:17,010 ens tirem un parell Fa dies entra en joc. 817 00:40:17,010 --> 00:40:19,620 Recordes quan vam tenir un senzill versió d'un HTML page-- 818 00:40:19,620 --> 00:40:20,830 que acaba de dir, hola món. 819 00:40:20,830 --> 00:40:22,770 I després dibuixem un arbre a la dreta, que 820 00:40:22,770 --> 00:40:27,320 tenia un munt de rectangles i línies connectant-los com un arbre genealògic. 821 00:40:27,320 --> 00:40:30,820 Així que aquesta és l'anomenada DOM o Document Object Model. 822 00:40:30,820 --> 00:40:36,759 I resulta que es pot accedir rectangles en l'arbre amb la sintaxi 823 00:40:36,759 --> 00:40:37,550 com la següent. 824 00:40:37,550 --> 00:40:41,370 Vostè, literalment, diu el document, que és un variable global especial en JavaScript 825 00:40:41,370 --> 00:40:45,890 programa que té una funció associada a ella que es pot accedir 826 00:40:45,890 --> 00:40:50,280 similar a una estructura, sinó que simplement dir punt i després el nom de la funció, 827 00:40:50,280 --> 00:40:52,390 obtenir element per ID. 828 00:40:52,390 --> 00:40:55,460 >> L'element que vull aconseguir és aparentment citar nom final de la cita. 829 00:40:55,460 --> 00:40:57,150 I després vull obtenir el seu valor. 830 00:40:57,150 --> 00:40:58,330 Ara estem arribant davant de nosaltres mateixos. 831 00:40:58,330 --> 00:41:00,038 Ni tan sols estic segur del que tot això es tracta. 832 00:41:00,038 --> 00:41:03,000 Anem a avançar ràpidament al HTML a La pàgina, que és super simple. 833 00:41:03,000 --> 00:41:05,370 >> Tingueu en compte que he definit Un formulari aquí baix. 834 00:41:05,370 --> 00:41:07,940 Tingueu en compte que he fet un únic Identificació, tot i que no hem fet servir 835 00:41:07,940 --> 00:41:08,870 aquest atribut abans. 836 00:41:08,870 --> 00:41:11,300 Però això existeix en HTML. 837 00:41:11,300 --> 00:41:15,570 Vostè pot identificar de forma exclusiva alguns tros d'HTML amb un identificador com aquest. 838 00:41:15,570 --> 00:41:19,880 >> Avís ara esto-- resulta HTML dóna suport, perquè la llista de bugaderia 839 00:41:19,880 --> 00:41:22,490 Fa un moment, en el seu conjunt munt de controladors d'esdeveniments. 840 00:41:22,490 --> 00:41:25,060 I aquest controlador d'esdeveniments, diu a enviar. 841 00:41:25,060 --> 00:41:28,730 En la presentació d'aquest usuari forma, truqui al següent codi. 842 00:41:28,730 --> 00:41:31,360 I el codi que va de ser cridat o executats 843 00:41:31,360 --> 00:41:35,260 és exactament això, el grec funció seguit de retorn fals. 844 00:41:35,260 --> 00:41:37,360 Tota la resta ha de estar bastant familiaritzat. 845 00:41:37,360 --> 00:41:42,050 >> Aquí és una entrada de tipus text, el ID, en aquest cas, serà nom. 846 00:41:42,050 --> 00:41:45,430 No tenim un atribut real nom aquest temps-- i un botó d'enviament. 847 00:41:45,430 --> 00:41:48,330 Així que la pàgina resultant s'assembla a això. 848 00:41:48,330 --> 00:41:52,890 I el comportament resultant, veuràs, són aquestes. 849 00:41:52,890 --> 00:41:56,940 La pàgina que alberga locals diu, hola David, tot just un estèticament agradable 850 00:41:56,940 --> 00:41:58,340 manera de saludar a un usuari. 851 00:41:58,340 --> 00:41:59,950 Però el que realment està passant? 852 00:41:59,950 --> 00:42:01,360 >> Bé, tingui en compte el que és això. 853 00:42:01,360 --> 00:42:02,310 Aquest és un camp de text. 854 00:42:02,310 --> 00:42:04,635 I d'acord amb la HTML aquí, m'he adonat 855 00:42:04,635 --> 00:42:07,350 un identificador únic anomenat cotització nom final de la cita. 856 00:42:07,350 --> 00:42:09,770 Mentrestant, el que he dit quan l'usuari envia aquest formulari 857 00:42:09,770 --> 00:42:13,820 per prement Enter o feu clic al Presentar botó, truqueu a la funció anomenada Greet 858 00:42:13,820 --> 00:42:15,410 i després tornar Fals. 859 00:42:15,410 --> 00:42:16,870 Anem a considerar els de darrere. 860 00:42:16,870 --> 00:42:20,590 Observi quan feu clic a Enviar, el URL d'aquesta pàgina no canvia. 861 00:42:20,590 --> 00:42:22,420 La icona del navegador no començar a girar. 862 00:42:22,420 --> 00:42:27,050 Jo no vaig enlloc, i això és literalment, perquè vaig dir: return false. 863 00:42:27,050 --> 00:42:31,534 Tornar circuits o parades curtes falsos el comportament predeterminat d'un formulari. 864 00:42:31,534 --> 00:42:33,700 Així que després ens deixa amb aquesta última pregunta. 865 00:42:33,700 --> 00:42:34,764 Què fa Greet? 866 00:42:34,764 --> 00:42:36,680 Bé, pel que sembla Greet crida a una funció anomenada 867 00:42:36,680 --> 00:42:39,250 Alerta, passa en una llarg argument que és 868 00:42:39,250 --> 00:42:43,950 el resultat de la concatenació d'un conjunt manat de subcadenes, hola espai coma, 869 00:42:43,950 --> 00:42:45,810 llavors tot el que aquest torni. 870 00:42:45,810 --> 00:42:51,490 Així que el document és com un mundial variable perquè l'arrel d'aquest arbre, 871 00:42:51,490 --> 00:42:55,560 cridar a una funció especial, en cas contrari ara conegut com a mètode. 872 00:42:55,560 --> 00:42:57,650 Una funció que és a l'interior d'una variable és 873 00:42:57,650 --> 00:42:59,640 anomenat mètode en lloc d'una funció. 874 00:42:59,640 --> 00:43:01,570 >> Així que element per ID. 875 00:43:01,570 --> 00:43:03,940 Quin element té vostè que vulgui obtenir per la seva ID? 876 00:43:03,940 --> 00:43:06,970 Cita nom i fi de la cita llavors el valor específicament. 877 00:43:06,970 --> 00:43:12,000 Així, en altres paraules, que el codi simplement es troba el camp de text el ID és el nom 878 00:43:12,000 --> 00:43:13,380 i després obté el seu valor. 879 00:43:13,380 --> 00:43:16,460 Així que si jo fos a canviar aquesta i dir Davin en lloc de David, 880 00:43:16,460 --> 00:43:20,670 i feu clic a Enviar, ara ens tenir una salutació de Davin. 881 00:43:20,670 --> 00:43:22,890 >> Molt bé, així que tot bé i bo. 882 00:43:22,890 --> 00:43:25,480 Però anem a veure si podem fer aquesta una mica més net ja que només 883 00:43:25,480 --> 00:43:28,190 escriure codi com aquest és en general, serà mal vist. 884 00:43:28,190 --> 00:43:30,060 Això es va a veure més aterridor. 885 00:43:30,060 --> 00:43:32,330 Però, ¿què és el primer diferència que nota aquí 886 00:43:32,330 --> 00:43:35,970 en aquesta versió, a més de la nomenar canviar a DOM un? 887 00:43:35,970 --> 00:43:41,110 El que estructuralment es veu diferent sobre aquest enfront de l'altra? 888 00:43:41,110 --> 00:43:41,932 Sí? 889 00:43:41,932 --> 00:43:43,890 AUDIÈNCIA: És la forma en la part superior de la seqüència de comandaments ara? 890 00:43:43,890 --> 00:43:46,570 DAVID Malan: Sí, és la forma en la part superior de la seqüència de comandaments, per alguna raó curiosa. 891 00:43:46,570 --> 00:43:48,736 Així que això és el primer que salta a mi, també. 892 00:43:48,736 --> 00:43:50,990 I per sort, almenys, aquesta part és idèntica. 893 00:43:50,990 --> 00:43:53,470 Així que l'única cosa que sembla a ser diferent és la següent. 894 00:43:53,470 --> 00:43:55,296 >> Així que aquí està el que està ordenat sobre JavaScript febrer. 895 00:43:55,296 --> 00:43:57,420 I que fa que sigui difícil entendre a primera vista, 896 00:43:57,420 --> 00:44:00,670 especialment per a projectes de final si vostè està buscant en el codi d'exemple en línia, 897 00:44:00,670 --> 00:44:04,200 sinó que es redueix a alguns característiques sintàctiques bàsiques. 898 00:44:04,200 --> 00:44:06,230 Aquí de nou és que document variable global. 899 00:44:06,230 --> 00:44:09,540 Aquí de nou és que el mètode o funció que diu obtenir l'element d'identificació. 900 00:44:09,540 --> 00:44:11,570 Aquesta vegada vull obtenir l'ID de trucada de demostració. 901 00:44:11,570 --> 00:44:12,490 On és això? 902 00:44:12,490 --> 00:44:15,400 Això és pel que sembla la dreta aquí, el propi formulari. 903 00:44:15,400 --> 00:44:20,010 >> I ara compte que pel que sembla si tornar aquest node de l'arbre que 904 00:44:20,010 --> 00:44:22,940 representa la forma en si, no és un camp de text, 905 00:44:22,940 --> 00:44:26,970 resulta que la forma, que node o rectangle des de l'arbre, 906 00:44:26,970 --> 00:44:30,450 té el que anem a cridar a una propietat, molt, molt, molt similar 907 00:44:30,450 --> 00:44:35,390 en esperit a una estructura en C. És només un membre de dades dins d'aquest rectangle. 908 00:44:35,390 --> 00:44:38,300 >> Així que tinc la forma aquí, i estic adjuntant, 909 00:44:38,300 --> 00:44:44,650 o estic assignant, a la seva Submit gestor o més aviat a Envia a la propietat 910 00:44:44,650 --> 00:44:45,740 la següent funció. 911 00:44:45,740 --> 00:44:49,000 I aquest és, de lluny, el més boig El fins ara sintàcticament. 912 00:44:49,000 --> 00:44:53,610 Resulta que en JavaScript i en PHP, i, francament, per al cas en C, 913 00:44:53,610 --> 00:44:58,990 tot i que no ho fem, es pot afegir sense nom, anònim o conegut com lambda 914 00:44:58,990 --> 00:45:03,000 funcions que no tenen un nom però pot ser cridat, però. 915 00:45:03,000 --> 00:45:07,050 >> Així que el que estic fent aquí és que estic assignant Enviar aquesta a la propietat, que 916 00:45:07,050 --> 00:45:14,330 és dins d'aquest node del meu arbre DOM, 1 funció, punter de funció si es vol. 917 00:45:14,330 --> 00:45:16,310 Aquesta funció no té nom, però això no ho fa 918 00:45:16,310 --> 00:45:19,110 importa perquè anem a veure en un moment com cridar-ho. 919 00:45:19,110 --> 00:45:21,780 Quan aquesta funció es diu, aquest codi és executat, llavors 920 00:45:21,780 --> 00:45:24,210 fals es retorna la mateixa manera que abans. 921 00:45:24,210 --> 00:45:25,800 >> Però noto el que he fet. 922 00:45:25,800 --> 00:45:27,830 En aquest punt en el història, tinc un formulari. 923 00:45:27,830 --> 00:45:30,190 Té un identificador únic anomenat de demostració. 924 00:45:30,190 --> 00:45:33,740 Aquí sota, tinc una etiqueta script que executa el següent codi. 925 00:45:33,740 --> 00:45:37,720 S'uneix a aquest node en l'arbre que està a Enviar 926 00:45:37,720 --> 00:45:40,260 propietat aquesta funció aquí. 927 00:45:40,260 --> 00:45:44,310 I només per la naturalesa de com funcionen els navegadors, quan ara faig clic a Envia o premeu Enter, 928 00:45:44,310 --> 00:45:45,889 que la funció serà cridat. 929 00:45:45,889 --> 00:45:48,680 No necessita un nom que ja diables li importa com es diu. 930 00:45:48,680 --> 00:45:52,540 L'única vegada que mai va a arribar anomenat és quan va presentar el formulari. 931 00:45:52,540 --> 00:45:55,130 No hi ha necessitat per a mi, el desenvolupador humà, 932 00:45:55,130 --> 00:45:57,330 que en realitat cridar-ho en qualsevol altre lloc. 933 00:45:57,330 --> 00:46:00,720 >> Ara només com un reclam, com si això no importaria flexió suficient, 934 00:46:00,720 --> 00:46:03,330 fins i tot podem fer que aquesta buscar usant més críptic 935 00:46:03,330 --> 00:46:05,850 una biblioteca superpopular anomenat jQuery. 936 00:46:05,850 --> 00:46:08,760 De fet jQuery i JavaScript sovint es fusionat. 937 00:46:08,760 --> 00:46:12,790 ¿I què farem el dimecres és d'inici l'ús d'aquest llenguatge i aquestes biblioteques 938 00:46:12,790 --> 00:46:16,030 per a construir cada vegada asíncron i aplicacions dinàmiques 939 00:46:16,030 --> 00:46:18,950 com aconseguir un mapa aplicacions, aplicacions 940 00:46:18,950 --> 00:46:22,360 actualitzar la pàgina web en béns temps, de la mateixa manera que Facebook o Gchat 941 00:46:22,360 --> 00:46:27,130 fer, i ja no limitar-nos a hitting Presentar per una trobada o simplement ja 942 00:46:27,130 --> 00:46:27,630 sol. 943 00:46:27,630 --> 00:46:29,055 Així que vaig a veure't dimecres. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [REPRODUCCIÓ DE MÚSICA] 946 00:46:35,550 --> 00:48:09,728