1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH Blumberg: Hola a tots. 3 00:00:07,030 --> 00:00:09,530 Anem a començar només un parell de minuts abans 4 00:00:09,530 --> 00:00:11,738 ja que tenim molt de material per passar. 5 00:00:11,738 --> 00:00:12,790 Sóc Hannah. 6 00:00:12,790 --> 00:00:13,865 Sóc un TF. 7 00:00:13,865 --> 00:00:16,239 Maria es va a unir nosaltres en només un parell de minuts. 8 00:00:16,239 --> 00:00:17,560 És professora de la secció de la dreta abans. 9 00:00:17,560 --> 00:00:19,351 Ensenyo secció dreta després, de manera que anem 10 00:00:19,351 --> 00:00:21,200 per mantenir-lo a l'hora i mitja. 11 00:00:21,200 --> 00:00:25,490 >> Així com es veurà aquí, tenim prou alguns temes que han de passar, 12 00:00:25,490 --> 00:00:27,200 així que anirem una mica més ràpid. 13 00:00:27,200 --> 00:00:31,140 Però si en algun moment diem alguna cosa massa ràpid o no entén, 14 00:00:31,140 --> 00:00:33,170 no dubti en interrompre amb preguntes. 15 00:00:33,170 --> 00:00:36,610 Volem ser capaços de fer d'això una revisar sessió tan útil per a tots vostès 16 00:00:36,610 --> 00:00:37,973 com sigui possible. 17 00:00:37,973 --> 00:00:38,920 Impressionant. 18 00:00:38,920 --> 00:00:41,650 >> Així que anem a saltar a la dreta dins amb alguns temes que en realitat 19 00:00:41,650 --> 00:00:46,980 molt, molt breument coberta per al qüestionari de 0 en la revisió sessió de prova 0. 20 00:00:46,980 --> 00:00:48,840 Així que a partir de llistes enllaçades. 21 00:00:48,840 --> 00:00:52,090 Així que segur de tindre alguna coneixements bàsics sobre llistes enllaçades 22 00:00:52,090 --> 00:00:55,110 i se senten còmodes fent algunes de les operacions bàsiques. 23 00:00:55,110 --> 00:00:58,560 >> Així que per opinar, vinculat llistes són millors que les matrius 24 00:00:58,560 --> 00:01:01,020 perquè poden créixer de forma dinàmica. 25 00:01:01,020 --> 00:01:03,300 Així que hem de gran avantatge. 26 00:01:03,300 --> 00:01:06,031 Hem vist els usaven en taules hash quan 27 00:01:06,031 --> 00:01:08,280 no sé exactament quants coses que voldran 28 00:01:08,280 --> 00:01:10,900 per inserir en la nostra estructura de dades. 29 00:01:10,900 --> 00:01:15,700 Malauradament, tenim peces de la llista enllaçada tot de memòria, 30 00:01:15,700 --> 00:01:20,820 així que no serem necessàriament capaç de fer l'accés constant de temps 31 00:01:20,820 --> 00:01:22,502 a qualsevol element de la llista enllaçada. 32 00:01:22,502 --> 00:01:24,210 Per tal de trobar una particular, element, ens 33 00:01:24,210 --> 00:01:26,510 haver de repetir tot el així des del principi. 34 00:01:26,510 --> 00:01:30,610 Així que tenir en compte que la major part del operacions bàsiques són omega d'1. 35 00:01:30,610 --> 00:01:32,130 Així inserit és només va a prendre 1. 36 00:01:32,130 --> 00:01:37,520 Eliminar va a prendre n ja que han d'anar a buscar a la llista. 37 00:01:37,520 --> 00:01:39,260 I la recerca podria prendre, en el pitjor, n. 38 00:01:39,260 --> 00:01:42,330 No podem fer alguna cosa com recerca binària en una llista enllaçada 39 00:01:42,330 --> 00:01:45,101 Ja que no podem simplement saltar l'atzar per al medi. 40 00:01:45,101 --> 00:01:45,600 Fresc. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Impressionant. 43 00:01:48,960 --> 00:01:50,270 >> Una mica de piles. 44 00:01:50,270 --> 00:01:53,980 Això, de nou, va aparèixer en concurs 0, de manera que ha de ser súper còmode amb ell. 45 00:01:53,980 --> 00:01:57,210 Però per a les piles, li demanem que recordar una pila de safates. 46 00:01:57,210 --> 00:01:59,940 I va ser primer en entrar, últim a sortir. 47 00:01:59,940 --> 00:02:02,272 Així apilem les coses a la pila, i després 48 00:02:02,272 --> 00:02:04,980 si estem tractant de prendre alguna cosa off-- que anomenem fent esclatar fora 49 00:02:04,980 --> 00:02:06,581 el stack-- venim de la part superior. 50 00:02:06,581 --> 00:02:09,289 I si volem posar una mica a la pila, l'anomenem empenyent. 51 00:02:09,289 --> 00:02:13,170 Pel que sempre va a estar creixent des del fons com una pila de safates. 52 00:02:13,170 --> 00:02:14,540 Impressionant. 53 00:02:14,540 --> 00:02:17,607 >> Hem implementat piles vistos amb les dues llistes enllaçades i matrius. 54 00:02:17,607 --> 00:02:19,440 Si està implementant amb matrius, desitja 55 00:02:19,440 --> 00:02:22,350 per assegurar-se de no perdre de vista tant la mida i la capacitat. 56 00:02:22,350 --> 00:02:27,540 Així mida serà la corrent nombre de coses a la pica, 57 00:02:27,540 --> 00:02:32,900 mentre que la capacitat és el nombre total de coses que pot emmagatzemar a la pica. 58 00:02:32,900 --> 00:02:34,220 Fresc. 59 00:02:34,220 --> 00:02:35,767 >> Molt similar, tenim cues. 60 00:02:35,767 --> 00:02:38,850 En aquest cas, en lloc de pensar una pica de safates, pensa en una línia. 61 00:02:38,850 --> 00:02:40,697 Això va ser primer en entrar, primer en sortir. 62 00:02:40,697 --> 00:02:42,780 Així que si vostè està fent cua per alguna cosa a la botiga, 63 00:02:42,780 --> 00:02:46,920 esperem que la persona per primera vegada en línia serà ajudat a primera. 64 00:02:46,920 --> 00:02:49,350 >> En lloc de dir empenta i pop com ho fem per a la pila, 65 00:02:49,350 --> 00:02:52,000 ens limitem a dir enqueue i treure de la cua. 66 00:02:52,000 --> 00:02:54,970 I de nou, si vostè és implementar això amb una matriu, 67 00:02:54,970 --> 00:02:56,720 hem de seguir la pista de no només la mida 68 00:02:56,720 --> 00:03:02,390 i la capacitat, sinó també el cap, que serà el front de la nostra cua. 69 00:03:02,390 --> 00:03:03,010 Fresc. 70 00:03:03,010 --> 00:03:05,770 Teniu alguna pregunta sobre res d'això? 71 00:03:05,770 --> 00:03:06,320 Impressionant. 72 00:03:06,320 --> 00:03:07,640 La dreta mòbil endavant. 73 00:03:07,640 --> 00:03:08,564 >> OK, taules hash. 74 00:03:08,564 --> 00:03:10,605 Aquí és on comença a aconseguir realment interessant. 75 00:03:10,605 --> 00:03:14,150 Així que una taula hash és una implementació d'una matriu associativa. 76 00:03:14,150 --> 00:03:16,700 Així que bàsicament el que va passar és que tenim tot això d'entrada, 77 00:03:16,700 --> 00:03:18,750 i li donem a un hash funció que diu, 78 00:03:18,750 --> 00:03:21,840 OK, aquí és on en el taula hash pertany. 79 00:03:21,840 --> 00:03:24,860 >> Així que la funció hash més simple que hem vist està dient, 80 00:03:24,860 --> 00:03:28,170 OK, suposem que volem posar cadenes a la nostra taula hash. 81 00:03:28,170 --> 00:03:30,870 I una idea molt simple podia dir, OK, 82 00:03:30,870 --> 00:03:34,350 anem a ordenar pel primera lletra de la paraula. 83 00:03:34,350 --> 00:03:37,570 Així que vostè pot veure aquí, prenem el plàtan, el sotmetem a una funció hash, 84 00:03:37,570 --> 00:03:40,190 i diu, bé, això ha d'anar a l'índex 1. 85 00:03:40,190 --> 00:03:45,120 >> Així podem pensar essencialment en un hash taula com un munt de diferents cubs. 86 00:03:45,120 --> 00:03:49,880 I cada un d'aquests cubs va per sostenir el cap d'una llista enllaçada. 87 00:03:49,880 --> 00:03:55,030 I en aquesta llista enllaçada és on podem realment posar diferents peces de dades. 88 00:03:55,030 --> 00:03:57,820 >> Així busseig una mica més en una funció hash, aquí està 89 00:03:57,820 --> 00:03:59,870 l'exemple que acabo de descrit en el que acaba de dir, 90 00:03:59,870 --> 00:04:02,460 OK, pren la primera lletra de la paraula i estem 91 00:04:02,460 --> 00:04:03,990 solucionarà el problema en els cubs. 92 00:04:03,990 --> 00:04:08,490 Així que, presumiblement, hi haurà 26 cubs, un per cada lletra de l'alfabet. 93 00:04:08,490 --> 00:04:10,090 Per què no és això una gran funció hash? 94 00:04:10,090 --> 00:04:13,461 El que fa que aquest no ideal? 95 00:04:13,461 --> 00:04:13,960 Sí. 96 00:04:13,960 --> 00:04:15,790 >> AUDIÈNCIA: Vas tenir col·lisions. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH Blumberg: Sí, exactament. 98 00:04:16,390 --> 00:04:18,000 Vas a haver col·lisions. 99 00:04:18,000 --> 00:04:18,954 Així que això és una cosa. 100 00:04:18,954 --> 00:04:21,620 I parlarem de com podem arreglar les col·lisions en tan sols uns segons. 101 00:04:21,620 --> 00:04:23,980 Un altre problema amb aquest en particular funció hash 102 00:04:23,980 --> 00:04:25,980 és que el nostre diferent cubs seran 103 00:04:25,980 --> 00:04:28,960 de prou dràsticament diferents mides. 104 00:04:28,960 --> 00:04:33,840 >> Sabem que hi ha molt mes paraules que comencen amb A de X, 105 00:04:33,840 --> 00:04:38,980 així que tindrem molt cubs desequilibrades en la nostra taula hash. 106 00:04:38,980 --> 00:04:40,050 Fresc. 107 00:04:40,050 --> 00:04:41,340 Així que sí, anem a tornar a el punt de col·lisions. 108 00:04:41,340 --> 00:04:42,900 Què fem si hi ha una col·lisió? 109 00:04:42,900 --> 00:04:44,490 >> Tenim un parell d'opcions diferents. 110 00:04:44,490 --> 00:04:47,600 Així que un, per la qual cosa suposem que estem tractant posar baia a la nostra taula hash. 111 00:04:47,600 --> 00:04:50,370 I veiem, oh, volem per dir-ho en l'índex 1, 112 00:04:50,370 --> 00:04:52,070 però plàtan ja hi viu. 113 00:04:52,070 --> 00:04:53,110 Què farem? 114 00:04:53,110 --> 00:04:54,560 Tenim dues opcions principals. 115 00:04:54,560 --> 00:04:58,050 >> El número u és el que podem dir, OK, no hi ha lloc en l'índex 1, 116 00:04:58,050 --> 00:05:03,210 però seguirem buscant a través fins que puguem trobar un altre lloc obert. 117 00:05:03,210 --> 00:05:08,490 Així que anem a dir, OK, anem a posar-lo en el punt 3. 118 00:05:08,490 --> 00:05:09,240 Aquesta és una opció. 119 00:05:09,240 --> 00:05:11,470 D'això se'n diu sondeig lineal. 120 00:05:11,470 --> 00:05:15,500 >> I una segona opció està dient, bé, bé, farem cada un d'aquests cubs 121 00:05:15,500 --> 00:05:17,470 ser caps de llistes enllaçades. 122 00:05:17,470 --> 00:05:21,910 I està bé si hi ha més d'una cosa en una galleda. 123 00:05:21,910 --> 00:05:23,820 Només anem a annexar a la part frontal. 124 00:05:23,820 --> 00:05:26,032 Així que aquí es pot veure, està bé, quan inserim baia, que 125 00:05:26,032 --> 00:05:28,240 acaba de prendre plàtan, tipus de empès sobre una mica 126 00:05:28,240 --> 00:05:29,842 i va llançar una baia allà. 127 00:05:29,842 --> 00:05:31,050 I això és també totalment bé. 128 00:05:31,050 --> 00:05:32,830 Això es coneix com encadenament separat. 129 00:05:32,830 --> 00:05:38,100 Vostè pot pensar en això com una mena de una sèrie de caps de llistes enllaçades. 130 00:05:38,100 --> 00:05:41,950 Teniu alguna pregunta respecte picada taules, funcions de hash? 131 00:05:41,950 --> 00:05:44,290 Impressionant. 132 00:05:44,290 --> 00:05:45,470 >> Els arbres i els intents. 133 00:05:45,470 --> 00:05:47,287 Així que un arbre és qualsevol tipus de l'estructura de dades 134 00:05:47,287 --> 00:05:49,453 en la qual hi ha una espècie de la jerarquia o algun tipus 135 00:05:49,453 --> 00:05:51,247 de classificar als seus diferents objectes. 136 00:05:51,247 --> 00:05:53,580 I això es convertirà en súper clar quan veiem un exemple. 137 00:05:53,580 --> 00:05:56,960 I vam veure intents, al llarg amb taules hash, en pset5-- 138 00:05:56,960 --> 00:06:00,700 que, de nou, joc totalment justa per a aquest quiz-- de dades com un altre 139 00:06:00,700 --> 00:06:03,110 estructures que podem emmagatzemar diferents coses. 140 00:06:03,110 --> 00:06:06,782 En el cas de diccionari, ens van guardar un munt de paraules. 141 00:06:06,782 --> 00:06:08,240 Així que donem una ullada a alguns arbres. 142 00:06:08,240 --> 00:06:10,190 Així que aquest és un exemple d'un arbre. 143 00:06:10,190 --> 00:06:13,105 Té un tipus d'estructura, que l'estructura jeràrquica, 144 00:06:13,105 --> 00:06:15,920 on es pot veure que aquest node 1 a la part superior 145 00:06:15,920 --> 00:06:20,750 té algun tipus de rang per sobre de 2 i 3, que estan per sobre de 4, 5, i 6 i 7, 146 00:06:20,750 --> 00:06:22,860 que estan per sobre de 8 i 9. 147 00:06:22,860 --> 00:06:25,210 Així que això és tot el que volem dir amb un arbre, pel que pot només tipus 148 00:06:25,210 --> 00:06:26,660 d'imaginar això en el seu cap. 149 00:06:26,660 --> 00:06:29,050 >> Ara, tenim un parell de arbres més especialitzats. 150 00:06:29,050 --> 00:06:31,070 Així que un exemple és un arbre binari. 151 00:06:31,070 --> 00:06:33,290 I un arbre binari és, de nou, només serà 152 00:06:33,290 --> 00:06:37,040 una estructura de dades amb algun tipus de jerarquia, però cada un dels nodes 153 00:06:37,040 --> 00:06:38,650 pot tenir com a màxim dos fills. 154 00:06:38,650 --> 00:06:41,530 Aquí és on la paraula binària ve. 155 00:06:41,530 --> 00:06:43,410 Així que aquest és un exemple d'un arbre binari. 156 00:06:43,410 --> 00:06:45,720 Així que aquesta és una categoria més petita d'arbres. 157 00:06:45,720 --> 00:06:48,960 >> Ara anem a arribar encara més específic i parlar binària trees-- recerca binària 158 00:06:48,960 --> 00:06:51,310 arbres, més bé. 159 00:06:51,310 --> 00:06:56,430 Així que aquí la idea és no només fa cada node té com a màxim dos fills, 160 00:06:56,430 --> 00:07:00,300 però tots els nens a la esquerra seran més petits 161 00:07:00,300 --> 00:07:03,450 i tots els nens a la dreta van a ser més gran. 162 00:07:03,450 --> 00:07:05,890 Així notar en només nostra arbre binari, hi ha 163 00:07:05,890 --> 00:07:08,650 cap relació entre els nombres. 164 00:07:08,650 --> 00:07:12,990 Però en la nostra recerca binària arbre, veiem, OK, aquí està 44. 165 00:07:12,990 --> 00:07:17,080 I cada número a l'esquerra 44 és més petita i tot a la dreta 166 00:07:17,080 --> 00:07:17,920 és més gran. 167 00:07:17,920 --> 00:07:20,130 >> I això val en cada nivell de l'arbre. 168 00:07:20,130 --> 00:07:24,810 Així que aquí, aquesta és menor que 22 i això és més gran que 22. 169 00:07:24,810 --> 00:07:26,390 I això és arbre binari de cerca. 170 00:07:26,390 --> 00:07:28,900 Per què pensem que es diu un arbre de cerca binària? 171 00:07:28,900 --> 00:07:30,651 Què algoritme Què et recorda? 172 00:07:30,651 --> 00:07:31,650 AUDIÈNCIA: Hi binària. 173 00:07:31,650 --> 00:07:32,480 HANNAH Blumberg: Hi binària. 174 00:07:32,480 --> 00:07:35,150 Perquè si vostè està buscant un nombre particular en aquest arbre, 175 00:07:35,150 --> 00:07:38,800 en cada punt, només pot tocar mig fora de l'arbre, la qual cosa és genial. 176 00:07:38,800 --> 00:07:43,800 I perquè ens va a donar una mica que s'assembla molt a la recerca binària. 177 00:07:43,800 --> 00:07:45,870 Qualsevol pregunta? 178 00:07:45,870 --> 00:07:47,570 Molt bé, fresc. 179 00:07:47,570 --> 00:07:48,560 >> Molt bé, ho intenta. 180 00:07:48,560 --> 00:07:49,657 Favorit de tots. 181 00:07:49,657 --> 00:07:51,990 Així que aquest és l'exemple que hem vist un munt de classe. 182 00:07:51,990 --> 00:07:54,710 I de nou, això és només una altra manera que podem emmagatzemar dades. 183 00:07:54,710 --> 00:07:57,530 En el cas de diccionari, de nou, aquest és només va a ser cadenes. 184 00:07:57,530 --> 00:08:00,870 Així que anem a veure el que en realitat això s'assembla a un nivell lleugerament inferior. 185 00:08:00,870 --> 00:08:03,690 >> Així que anem a fer una ullada en un node en un trie. 186 00:08:03,690 --> 00:08:07,532 I veiem, està bé, no va ser un valor booleà i un node, 187 00:08:07,532 --> 00:08:09,170 un punter a un node. 188 00:08:09,170 --> 00:08:11,400 I veiem que la Boole es diu is_word. 189 00:08:11,400 --> 00:08:13,490 Per tant, bàsicament, això és va correspondre 190 00:08:13,490 --> 00:08:16,750 a aquests petits triangles que diu, si vostè ha arribat aquí, 191 00:08:16,750 --> 00:08:19,100 que ha trobat una paraula completa. 192 00:08:19,100 --> 00:08:23,670 >> Sabem que "Turing" sobre aquí hi ha una paraula completa, 193 00:08:23,670 --> 00:08:28,030 mentre que només T-O-R no és una paraula perquè no veiem aquest petit delta. 194 00:08:28,030 --> 00:08:31,440 I aquest petit delta, de nou, correspon a aquesta is_word, 195 00:08:31,440 --> 00:08:34,480 aquest is_word booleana. 196 00:08:34,480 --> 00:08:36,320 I després tenim una gran varietat dels nens. 197 00:08:36,320 --> 00:08:39,860 Així que en cada nivell, tenir un node en particular, 198 00:08:39,860 --> 00:08:42,470 i que els punts de node a un conjunt de tot l'alfabet. 199 00:08:42,470 --> 00:08:44,346 >> Així es pot veure, de nou, en aquest picture-- estic 200 00:08:44,346 --> 00:08:48,170 seguirà saltant cap enrere i forth-- que aquesta matriu a la part superior 201 00:08:48,170 --> 00:08:51,640 té un munt de diferents nodes que surten. 202 00:08:51,640 --> 00:08:57,140 Té 26 anys, o 27 si vols per incloure un caràcter addicional. 203 00:08:57,140 --> 00:09:01,320 I això ens dóna una manera d'emmagatzemar les nostres dades 204 00:09:01,320 --> 00:09:04,450 de manera que es poden mirava que vostè pot mirar cap amunt súper ràpid. 205 00:09:04,450 --> 00:09:06,650 Quin és el temps de recerca d'un trie? 206 00:09:06,650 --> 00:09:07,970 >> AUDIÈNCIA: [inaudible]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH Blumberg: Sí. 208 00:09:08,300 --> 00:09:09,550 En teoria, és temps constant. 209 00:09:09,550 --> 00:09:13,230 Només va ser de la mida de la paraula que voleu cercar. 210 00:09:13,230 --> 00:09:15,950 Fins i tot si afegim un trilió Més paraules per a la nostra trie, 211 00:09:15,950 --> 00:09:18,160 no va a portar-nos més temps per determinar 212 00:09:18,160 --> 00:09:19,690 si una paraula donada és al trie. 213 00:09:19,690 --> 00:09:21,412 Així que això és realment agradable. 214 00:09:21,412 --> 00:09:23,697 >> AUDIÈNCIA: Acabes inicialitzar aquesta matriu? 215 00:09:23,697 --> 00:09:24,780 S'ha perdut un punt o dos. 216 00:09:24,780 --> 00:09:26,130 Pots parlar això per un segon? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH Blumberg: És clar, és clar. 218 00:09:26,680 --> 00:09:27,590 Bona pregunta. 219 00:09:27,590 --> 00:09:31,140 La pregunta era, ens tenen una matriu que és 220 00:09:31,140 --> 00:09:34,180 va tenir estrelles node com a diferència de node sol, oi? 221 00:09:34,180 --> 00:09:35,180 Fresc. 222 00:09:35,180 --> 00:09:37,990 Així que aquí el que estem dient és la nostra matriu és simplement 223 00:09:37,990 --> 00:09:40,035 serà punters a altres matrius. 224 00:09:40,035 --> 00:09:42,910 Així que ha essentially-- quin tipus de se sent com una llista enllaçada d'aquesta manera 225 00:09:42,910 --> 00:09:46,620 on cada un d'aquests nens simplement apunt al següent node. 226 00:09:46,620 --> 00:09:49,030 >> I la forma en què nosaltres determinar realment, bé, està bé, 227 00:09:49,030 --> 00:09:52,320 hem itera a través d'un sencer paraula, és aquesta paraula al diccionari, 228 00:09:52,320 --> 00:09:54,476 acabem de comprovar això is_word. 229 00:09:54,476 --> 00:09:55,100 Molt bona pregunta. 230 00:09:55,100 --> 00:09:55,675 Sí. 231 00:09:55,675 --> 00:09:56,216 AUDIÈNCIA: OK. 232 00:09:56,216 --> 00:09:57,470 Llavors, quin era el temps d'execució per al trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH Blumberg: És clar. 234 00:09:58,386 --> 00:10:01,852 Així que el temps d'execució per a un trie de cerca va a ser la constant de temps. 235 00:10:01,852 --> 00:10:04,310 Així que només va a ser el nombre de lletres de la paraula. 236 00:10:04,310 --> 00:10:06,310 No és dependent de la mida del diccionari 237 00:10:06,310 --> 00:10:09,510 o la mida de l'estructura de dades. 238 00:10:09,510 --> 00:10:12,170 Així que aquí està un exemple una mica més simple. 239 00:10:12,170 --> 00:10:15,430 >> En aquest cas, es pot veure que la paraula ratpenat està en el diccionari 240 00:10:15,430 --> 00:10:18,900 i vostè té zoom, però no tenir alguna cosa com zoològic. 241 00:10:18,900 --> 00:10:20,050 Com podríem fer zoològic? 242 00:10:20,050 --> 00:10:24,276 Com ens sumem al nostre zoològic diccionari, al nostre trie? 243 00:10:24,276 --> 00:10:24,776 Sí. 244 00:10:24,776 --> 00:10:27,014 >> AUDIÈNCIA: Fer is_word cert per al [inaudible]. 245 00:10:27,014 --> 00:10:27,930 HANNAH Blumberg: Good. 246 00:10:27,930 --> 00:10:31,731 Llavors diríem Z-O-O, i llavors tindríem que vulgueu comprovar fora d'aquesta caixa també. 247 00:10:31,731 --> 00:10:32,230 Gran. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Comparem breument intenta front taules hash. 250 00:10:37,930 --> 00:10:39,770 Tries són realment grans perquè, com hem dit, 251 00:10:39,770 --> 00:10:41,610 que proporcionen les operacions de recerca en temps constant. 252 00:10:41,610 --> 00:10:44,285 No obstant això, la gran desavantatge és que són gegantins. 253 00:10:44,285 --> 00:10:46,160 Vostè pot obtenir el sentit, fins i tot amb només mirar-lo, 254 00:10:46,160 --> 00:10:48,454 que prendrà una enorme quantitat de memòria. 255 00:10:48,454 --> 00:10:50,620 Així que van a ser molt més gran que les taules hash, 256 00:10:50,620 --> 00:10:52,270 però que van a donar ens temps de cerca molt més ràpid. 257 00:10:52,270 --> 00:10:54,478 Així que aquesta és la classe de la seva compensació, el que t'importa, 258 00:10:54,478 --> 00:10:57,350 si es tracta de la velocitat o la memòria. 259 00:10:57,350 --> 00:11:02,251 Teniu alguna pregunta sobre res d'això, totes les estructures de dades C. 260 00:11:02,251 --> 00:11:02,750 Bonic. 261 00:11:02,750 --> 00:11:03,250 D'ACORD. 262 00:11:03,250 --> 00:11:07,322 Anem a passar a un petit poc de desenvolupament web amb Maria. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 D'ACORD. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH Blumberg: Vostè pot utilitzar el meu ordinador portàtil. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Niça. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 D'acord, guai. 269 00:11:14,912 --> 00:11:17,120 A mesura que avancem ara al web desenvolupament, parlem una mica 270 00:11:17,120 --> 00:11:20,680 sobre el canvi de permisos d'arxius i directoris 271 00:11:20,680 --> 00:11:24,190 de manera que pot ser accessible a altres usuaris, per al món, 272 00:11:24,190 --> 00:11:28,640 i perquè puguem veure com Bàsicament podem transmetre- 273 00:11:28,640 --> 00:11:32,600 quan desenvolupem coses com llocs web que sobretot hem estat fent. 274 00:11:32,600 --> 00:11:36,400 >> Així vam veure la comanda chmod, que és la manera de canvi, bàsicament. 275 00:11:36,400 --> 00:11:39,300 Això és una ordre Linux i modifica els permisos d'accés 276 00:11:39,300 --> 00:11:40,410 dels objectes del sistema d'arxius. 277 00:11:40,410 --> 00:11:43,370 I un objecte del sistema d'arxius és només un directori, un arxiu, 278 00:11:43,370 --> 00:11:46,810 res que pugui canviar els permisos de. 279 00:11:46,810 --> 00:11:53,750 >> Així que per veure els permisos d'arxius, teclegem la comanda ls, llista, -l. 280 00:11:53,750 --> 00:11:56,500 I quan escrivim això, sol veure alguns permisos 281 00:11:56,500 --> 00:11:59,660 aquesta mirada alguna cosa així com aquest davant d'un nom de directori. 282 00:11:59,660 --> 00:12:01,260 Així que d es correspon al directori. 283 00:12:01,260 --> 00:12:05,930 I després tenim tres tríades que, bàsicament, 284 00:12:05,930 --> 00:12:11,675 consulteu els permisos de qualsevol un usuari, un grup, o del món. 285 00:12:11,675 --> 00:12:16,490 >> Els tipus de permisos que podem tenir per aquests tres grups de persones 286 00:12:16,490 --> 00:12:20,830 són o bé r per a lectura, w per escriure, i x per executar. 287 00:12:20,830 --> 00:12:23,650 I podem tenir les de el grup i el món també. 288 00:12:23,650 --> 00:12:26,940 El més complicat és que de vegades quan teclegem la comanda chmod, 289 00:12:26,940 --> 00:12:32,960 ens escrigui algun nombre que consistia en tres bits. 290 00:12:32,960 --> 00:12:36,990 Així que podríem fer com 777 i que bàsicament 291 00:12:36,990 --> 00:12:40,450 a què es refereix el valor afegit de cadascuna d'aquestes tríades 292 00:12:40,450 --> 00:12:45,060 perquè r es referiria a 4, w faria es refereixen a 2, i x es referirien a 1, 293 00:12:45,060 --> 00:12:50,020 així que quan se sumen, cada un dels nombres s'enfonsaria a un nombre acumulat 294 00:12:50,020 --> 00:12:52,750 a un valor acumulat entre 0 i 7. 295 00:12:52,750 --> 00:12:55,150 Així també podríem tenir 0 de cap permís en absolut. 296 00:12:55,150 --> 00:12:58,200 I que en el fons ens donaria els permisos per a l'usuari, ja sigui 297 00:12:58,200 --> 00:13:00,450 el grup, o el món. 298 00:13:00,450 --> 00:13:02,620 Té preguntes sobre aquest fins al moment? 299 00:13:02,620 --> 00:13:05,331 >> AUDIÈNCIA: Vostè va dir Read era 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Sí. 301 00:13:06,164 --> 00:13:07,568 AUDIÈNCIA: [inaudible]. 302 00:13:07,568 --> 00:13:08,504 HANNAH Blumberg: Sí. 303 00:13:08,504 --> 00:13:11,790 AUDIÈNCIA: I després afegint tots aquells altres ho indiqui el seu número. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Sí. 305 00:13:12,665 --> 00:13:14,970 Sí. 306 00:13:14,970 --> 00:13:17,810 Aquestes són les grans preguntes. 307 00:13:17,810 --> 00:13:20,490 Preciós. 308 00:13:20,490 --> 00:13:25,340 A continuació, ens va ficar en HTML i un poc més sobre el desenvolupament web. 309 00:13:25,340 --> 00:13:27,990 Així HTML només significa HyperText Markup Language. 310 00:13:27,990 --> 00:13:30,460 I aquest és el marge de benefici llenguatge que és una norma 311 00:13:30,460 --> 00:13:32,720 que s'usa per a crear pàgines web. 312 00:13:32,720 --> 00:13:35,750 >> Es diu un llenguatge de marques perquè no és en realitat compilat. 313 00:13:35,750 --> 00:13:40,310 No diu com algun codi ha ser executat ni res d'això. 314 00:13:40,310 --> 00:13:44,800 Simplement delinea i descriu com 1 web 315 00:13:44,800 --> 00:13:46,840 pàgina ha de configurar- amb cadascun dels seus elements 316 00:13:46,840 --> 00:13:48,460 i com han de mirar cap a l'usuari. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Algunes de les etiquetes HTML que ens se'n va anar per dalt són els següents. 319 00:13:57,110 --> 00:14:00,500 Tots els nostres documents HTML començar amb el DOCTYPE html. 320 00:14:00,500 --> 00:14:02,550 Llavors sempre tenim l'etiqueta html. 321 00:14:02,550 --> 00:14:03,930 Tenim un cap i un cos. 322 00:14:03,930 --> 00:14:07,890 I és important que HTML té aquest tipus d'estructura imbricada 323 00:14:07,890 --> 00:14:09,280 perquè és molt clar. 324 00:14:09,280 --> 00:14:13,200 I llavors es fa molt clar quan haurà d'obrir i tancar de fet les etiquetes. 325 00:14:13,200 --> 00:14:18,400 I sempre necessitem per tancar etiquetes que hem obert. 326 00:14:18,400 --> 00:14:23,170 >> I aquí tenim alguns dels tipus de les coses per davant que volem tenir. 327 00:14:23,170 --> 00:14:26,580 Així tenim, per exemple, el títol de CS50. 328 00:14:26,580 --> 00:14:31,980 I després que en realitat pot vincular un full d'estil 329 00:14:31,980 --> 00:14:34,030 que defineix la forma en què estil del nostre lloc web. 330 00:14:34,030 --> 00:14:35,650 És a dir CSS. 331 00:14:35,650 --> 00:14:39,320 Anem a anar-hi en el pròxim parell de diapositives també. 332 00:14:39,320 --> 00:14:42,580 >> Dins del cos, establim algunes classes i els identificadors. 333 00:14:42,580 --> 00:14:45,860 I com un recordatori, una vegada més, IDs són únics i classes 334 00:14:45,860 --> 00:14:47,390 poden ser assignats a diversos elements. 335 00:14:47,390 --> 00:14:52,110 I això només vol dir que podem utilitzar les classes i els identificadors 336 00:14:52,110 --> 00:14:55,860 dins d'una altra structures-- així, per exemple, dins dels arxius CSS o l'estil 337 00:14:55,860 --> 00:15:00,940 sheets-- per referir-se a elements específics i bàsicament diem que volem que l'estil 338 00:15:00,940 --> 00:15:03,280 o dissenyar algun element d'alguna manera en particular. 339 00:15:03,280 --> 00:15:06,440 I ens referim a ells per seus identificadors i classes. 340 00:15:06,440 --> 00:15:09,870 I també podem fer referència a diferents coses per les etiquetes, així, 341 00:15:09,870 --> 00:15:13,830 però identificadors i classes només ens donen una versatilitat i el que específicament ens 342 00:15:13,830 --> 00:15:15,850 vulgui consultar. 343 00:15:15,850 --> 00:15:19,620 >> Tan sols un exemple. 344 00:15:19,620 --> 00:15:22,730 Podem, de nou, en el termini un arxiu CSS en el qual 345 00:15:22,730 --> 00:15:25,770 voleu definir alguns style-- ho colors, fonts, 346 00:15:25,770 --> 00:15:30,340 i coses així que-- podem definir l'estil d'un cos. 347 00:15:30,340 --> 00:15:32,640 Així que el definiria per tot el cos de l'etiqueta. 348 00:15:32,640 --> 00:15:36,160 Però llavors també podem definir un estil per a un #title. 349 00:15:36,160 --> 00:15:40,390 I de nou, el hashtag es refereix a la nostra ID i el punt es refereix a la nostra classe. 350 00:15:40,390 --> 00:15:44,760 >> I després pels .info, ens També pot establir alguns atributs. 351 00:15:44,760 --> 00:15:49,750 I una altra vegada, quan tornem, vam tenir la nostra classe anomenada informació i el nostre títol ID. 352 00:15:49,750 --> 00:15:53,422 I podem veure que ens referim que els #title i .info. 353 00:15:53,422 --> 00:15:55,380 AUDIÈNCIA: Diries Etiqueta [? adoptar-? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Ho sento? 355 00:15:55,725 --> 00:15:58,120 AUDIÈNCIA: Diries Etiqueta [? adoptar-? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: Hashtag significa ID, per la #title 357 00:16:01,400 --> 00:16:07,890 es refereix a qualsevol elements tenir aquest ID anomenat títol. 358 00:16:07,890 --> 00:16:10,735 I llavors el punt correspon a una classe. 359 00:16:10,735 --> 00:16:14,590 Així .info es refereix a aquest element perquè té la informació de classe. 360 00:16:14,590 --> 00:16:15,090 Sí. 361 00:16:15,090 --> 00:16:17,905 >> AUDIÈNCIA: Per què has distingir-los en l'HTML? 362 00:16:17,905 --> 00:16:20,985 Per què diu certes coses són Identificacions i certes coses són de classe? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: Això és només fins usted-- 364 00:16:22,610 --> 00:16:24,151 HANNAH Blumberg: Repeteix la pregunta. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, ho sento. 366 00:16:25,370 --> 00:16:29,480 Per què ens distingim certs elements com identificacions i altres elements com les classes? 367 00:16:29,480 --> 00:16:34,760 Això és només perquè és molt sovint una opció de disseny. 368 00:16:34,760 --> 00:16:38,520 Li dóna una gran quantitat de versatilitat en ser 369 00:16:38,520 --> 00:16:43,250 capaç de dir vull que aquest article específic tenir aquest ID perquè volen 370 00:16:43,250 --> 00:16:45,300 de fer un munt de coses amb ell, i jo només 371 00:16:45,300 --> 00:16:50,010 voleu definir un estil, cert estil o color que sigui per a aquest element. 372 00:16:50,010 --> 00:16:52,630 I la manera de fer-ho és simplement donant-li un ID. 373 00:16:52,630 --> 00:16:55,060 >> I després si vull tenir un parell de diferents articles 374 00:16:55,060 --> 00:16:58,940 que ha de, en lloc de anar i establir their-- 375 00:16:58,940 --> 00:17:03,840 en lloc de fer-ho per etiqueta perquè l'etiqueta faria 376 00:17:03,840 --> 00:17:07,369 establir la cèl·lula per a tota l'etiqueta per cada vegada que s'usa aquesta etiqueta, 377 00:17:07,369 --> 00:17:09,740 pot definir una classe per diversos elements. 378 00:17:09,740 --> 00:17:15,109 I després simplement accedir a aquesta classe i dir Vull l'estil d'aquesta classe d'aquesta manera. 379 00:17:15,109 --> 00:17:17,579 >> I de nou, la classe pot haver-hi diversos articles diferents 380 00:17:17,579 --> 00:17:21,150 i la identificació ha de ser únic. 381 00:17:21,150 --> 00:17:21,849 Grans preguntes. 382 00:17:21,849 --> 00:17:25,339 Alguna altra pregunta? 383 00:17:25,339 --> 00:17:26,220 OK, impressionant. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Un cop més, es tracta de com aquests selectors es fa referència en CSS, amb el hashtag, 386 00:17:35,330 --> 00:17:40,031 amb el punt, o sense res per assignant l'estil d'alguna etiqueta, 387 00:17:40,031 --> 00:17:40,530 com el cos. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 I aquí tenim al general sintaxi de com es fa això. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Per repetir algunes de les millors pràctiques per a HTML i CSS, 392 00:17:55,680 --> 00:17:59,170 tenim que, de nou, a prop de tot les etiquetes HTML que es poden obrir. 393 00:17:59,170 --> 00:18:03,950 I el que et recomanem fer per als seus projectes finals, 394 00:18:03,950 --> 00:18:10,560 així com per CS50 Finances, és fer Assegureu-vos que tots els de la seva HTML valida. 395 00:18:10,560 --> 00:18:12,920 I això es fa amb la W3 Validator. 396 00:18:12,920 --> 00:18:16,940 >> I llavors el que vam fer i el que es recomana fer 397 00:18:16,940 --> 00:18:19,790 se separa l'estil, per la qual CSS de HTML marcat. 398 00:18:19,790 --> 00:18:24,210 Així que qualsevol cosa que es relaciona amb com la teva pàgina va a veure visualment 399 00:18:24,210 --> 00:18:27,330 i com va a ser modificada ha d'anar en un document CSS. 400 00:18:27,330 --> 00:18:33,880 I llavors el seu marge de benefici dient com les coses estan en relació entre si és HTML, 401 00:18:33,880 --> 00:18:37,550 i que ha d'anar dins de dels documents HTML. 402 00:18:37,550 --> 00:18:38,590 Qualsevol pregunta? 403 00:18:38,590 --> 00:18:39,226 MHM. 404 00:18:39,226 --> 00:18:42,628 >> AUDIÈNCIA: Què és exactament que està passant amb la validació pàgina 405 00:18:42,628 --> 00:18:47,945 quan estem validant el HTML que [inaudible] va crear? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Així que-- penses. 407 00:18:49,850 --> 00:18:53,020 Llavors, què està passant amb la validació de la pàgina 408 00:18:53,020 --> 00:18:55,570 i ¿per què hem de fer això? 409 00:18:55,570 --> 00:18:59,180 Bàsicament, hem de fer això perquè moltes vegades, el seu navegador, 410 00:18:59,180 --> 00:19:01,390 si no tanques una etiqueta o alguna cosa així, 411 00:19:01,390 --> 00:19:05,680 el teu navegador és encara va a representar una pàgina i encara podria funcionar, 412 00:19:05,680 --> 00:19:10,840 però és la millor pràctica per assegurar-se que vostè té, de nou, va tancar totes les seves etiquetes, 413 00:19:10,840 --> 00:19:13,190 que tots els seus elements són la forma en què haurien de ser, 414 00:19:13,190 --> 00:19:18,470 i, bàsicament, que és pel convencions que vénen predeterminats. 415 00:19:18,470 --> 00:19:21,970 >> És, de nou, només un El que vostè ha 416 00:19:21,970 --> 00:19:24,040 ha d'aprendre a fer, en lloc de tenir 417 00:19:24,040 --> 00:19:25,696 codi descuidat i coses per l'estil. 418 00:19:25,696 --> 00:19:26,688 Sí. 419 00:19:26,688 --> 00:19:27,680 Oh, ho sento. 420 00:19:27,680 --> 00:19:29,221 Vaig pensar que estava criant la seva mà. 421 00:19:29,221 --> 00:19:31,240 AUDIÈNCIA: No, jo era [inaudible]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> AUDIÈNCIA: Gràcies. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Per descomptat, gràcies. 425 00:19:36,181 --> 00:19:41,680 Així que de nou, passant de com la informació es transfereix 426 00:19:41,680 --> 00:19:44,630 i models de comunicació per transferir informació. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP només significa Transmissió Protocol de control i IP 429 00:19:48,600 --> 00:19:51,260 es refereix al Protocol d'Internet. 430 00:19:51,260 --> 00:19:54,275 I això només es refereix a les dades de forma es lliura. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Si tenim algunes dades que necessita lliurat a usted-- pel 433 00:20:02,710 --> 00:20:06,770 vostè fa una sol·licitud per a un determinat servidor. 434 00:20:06,770 --> 00:20:09,800 Per exemple, quan tractar d'accedir cs50.net, 435 00:20:09,800 --> 00:20:12,420 fem una sol·licitud a el servidor CS50 i ens 436 00:20:12,420 --> 00:20:14,720 veiem que volem arribar aquest tipus d'informació. 437 00:20:14,720 --> 00:20:19,294 I a continuació, es basen en aquest protocol per com es lliura aquesta informació, 438 00:20:19,294 --> 00:20:21,460 el servidor proporciona informació de nou a nosaltres, el client. 439 00:20:21,460 --> 00:20:25,590 I llavors som capaços de veure la informació de la pàgina 440 00:20:25,590 --> 00:20:26,390 i després usar-lo. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Llavors Protocol de transferència d'hipertext és només un altre protocol o conjunt 443 00:20:33,050 --> 00:20:37,470 de les convencions que defineix com el navegador web i el servidor web 444 00:20:37,470 --> 00:20:38,890 ha de comunicar-se. 445 00:20:38,890 --> 00:20:43,730 I posar tot això junts, HTTP, de nou, 446 00:20:43,730 --> 00:20:50,960 simplement defineix com defineix aquest hipertext pel HTML que hem estat treballant és, 447 00:20:50,960 --> 00:20:59,500 com ha de ser lliurat a vostè i qual cosa les dades que es lliura a vostè 448 00:20:59,500 --> 00:21:00,540 arriba a tu. 449 00:21:00,540 --> 00:21:05,990 >> I per això, si vostès recordin d'una classe, teníem un munt de peticions 450 00:21:05,990 --> 00:21:08,970 i teníem un munt de sintaxi per a aquestes sol·licituds que estem 451 00:21:08,970 --> 00:21:10,250 passarà ara. 452 00:21:10,250 --> 00:21:13,270 Així que de nou, quan enviem una sol·licitud a un servidor, 453 00:21:13,270 --> 00:21:15,920 hem de definir un parell de coses. 454 00:21:15,920 --> 00:21:18,520 Així que hem de trobar el tipus de la sol·licitud que estem configurant. 455 00:21:18,520 --> 00:21:22,180 I de nou, tenim, per exemple, GET és un tipus de mètode 456 00:21:22,180 --> 00:21:25,290 que tenim a la nostra petició. 457 00:21:25,290 --> 00:21:31,710 >> I després HTTP / 1.1 és només el protocol que estem utilitzant actualment. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 La majoria de les vegades, això va al protocol que estem utilitzant. 460 00:21:36,890 --> 00:21:40,290 Així que si vostè té una pregunta igual que en el qüestionari. 461 00:21:40,290 --> 00:21:43,120 Això és els convenis que tenim fins ara. 462 00:21:43,120 --> 00:21:46,580 >> Barra invertida es refereix a quin tipus de les coses que estem demanant. 463 00:21:46,580 --> 00:21:52,810 Llavors, el nostre amfitrió és, per exemple, en aquest cas, estem tractant d'anar a google.com. 464 00:21:52,810 --> 00:21:57,070 Així que aquest és el valor d'un host. 465 00:21:57,070 --> 00:21:59,330 Aquest és un tipus de sol·licitud que podrien ser enviats. 466 00:21:59,330 --> 00:22:02,890 >> I llavors un tipus de resposta que podrien ser enviat, de nou, basat en aquest protocol, 467 00:22:02,890 --> 00:22:05,190 és més, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Així que aquesta és la versió HTTP de nou. 469 00:22:07,150 --> 00:22:09,730 200 OK és només el codi d'estat. 470 00:22:09,730 --> 00:22:12,860 I això bé és només una frase sobre la base que el codi d'estat. 471 00:22:12,860 --> 00:22:15,520 >> I llavors el Content-Type es refereix al tipus 472 00:22:15,520 --> 00:22:20,295 que es retorna a vostè que és per a aquesta pàgina web que vostè rep 473 00:22:20,295 --> 00:22:22,570 i que el seu navegador pot fer després. 474 00:22:22,570 --> 00:22:24,401 I això és text / html. 475 00:22:24,401 --> 00:22:26,660 >> AUDIÈNCIA: Què significa 1.1? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: Això és només el Versió de-- oh, què vol dir 1.1? 477 00:22:29,910 --> 00:22:37,075 Això és només la versió, l'HTTP versió d'un protocol que estem utilitzant. 478 00:22:37,075 --> 00:22:37,700 Molt bona pregunta. 479 00:22:37,700 --> 00:22:38,366 Altres preguntes? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> AUDIÈNCIA: Podries resumir Content-Type molt ràpid? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Perquè és el que el servidor. 483 00:22:48,150 --> 00:22:51,020 el tipus d'informació-- ho és tipus de contingut van ser les preguntes. 484 00:22:51,020 --> 00:22:53,400 Així que era el tipus de informació que s'obté de tornada 485 00:22:53,400 --> 00:22:58,200 des del servidor, el tipus de dades que el navegador pot llavors 486 00:22:58,200 --> 00:23:00,604 rendeixes que utilitzeu. 487 00:23:00,604 --> 00:23:03,020 AUDIÈNCIA: ¿Això és el que aquest protocol que està dient que fer? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Ho sento? 489 00:23:03,390 --> 00:23:05,380 AUDIÈNCIA: És això el que diu el protocol? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: El protocol-- 491 00:23:05,915 --> 00:23:07,940 AUDIÈNCIA: --¿Què el Content-Type és o què-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: El protocol es basa en-- quin és el protocol que li diu? 493 00:23:12,040 --> 00:23:16,070 Això és només la forma que aquesta informació 494 00:23:16,070 --> 00:23:18,610 va ser lliurat a vostè, basat de quin tipus de protocol 495 00:23:18,610 --> 00:23:21,830 Es va obtenir aquesta informació lliurat de nou a vostè. 496 00:23:21,830 --> 00:23:23,500 ¿Això té sentit una mena de? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH Blumberg: Vostè pot pensar en el protocol 499 00:23:30,070 --> 00:23:33,300 com A-- Crec que el professor Malan va descriure 500 00:23:33,300 --> 00:23:36,910 a la classe com una mena de A-- és com l'equivalent de handshaking humà. 501 00:23:36,910 --> 00:23:44,930 Dir, com, hey, sóc una comanda i jo saber manejar HTTP de la versió 1.1. 502 00:23:44,930 --> 00:23:48,770 I llavors el servidor diu, oh, bé, hi ha jo-- i tots dos. 503 00:23:48,770 --> 00:23:51,337 També sé com tractar amb HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 I jo vaig a donar fer una còpia d'algun contingut. 505 00:23:53,170 --> 00:23:56,230 En aquest cas, es va en ser de tipus text / html. 506 00:23:56,230 --> 00:23:58,480 Així que és una espècie de només una forma d'ells per communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: És només confirmant que ets 508 00:24:00,480 --> 00:24:03,290 tant seguint el mateix protocol i que tant 509 00:24:03,290 --> 00:24:06,620 el client i la manera server-- el navegador i el server-- 510 00:24:06,620 --> 00:24:09,280 tipus de saps el que ets parlant i tenen 511 00:24:09,280 --> 00:24:12,557 la convenció per al pas de dades. 512 00:24:12,557 --> 00:24:17,022 >> AUDIÈNCIA: Així que el Content-Type parcialment: el text Content-Type / html-- que és 513 00:24:17,022 --> 00:24:18,521 una part separada del mateix missatge? 514 00:24:18,521 --> 00:24:20,509 O és part de, diguem, 200? 515 00:24:20,509 --> 00:24:22,010 Té 200 els dic que o és-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 diu tot ha anat bé. 517 00:24:23,770 --> 00:24:27,900 I després el tipus de contingut és una espècie de part separada del mateix missatge, 518 00:24:27,900 --> 00:24:34,274 i dient el que jo tornat té aquest tipus de text / html. 519 00:24:34,274 --> 00:24:35,690 És simplement donar més informació. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Té alguna cosa que afegir? 522 00:24:39,995 --> 00:24:40,495 D'ACORD. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> Alguna altra pregunta sobre això? 525 00:24:46,530 --> 00:24:48,370 Impressionant. 526 00:24:48,370 --> 00:24:54,070 Així que alguns altres estats HTTP que que vam poder aconseguir, a més de 200 OK, 527 00:24:54,070 --> 00:24:59,500 Els que hem vist potser possiblement molts són 403 i 404. 528 00:24:59,500 --> 00:25:05,190 Així que 404, si intentaves Accés cosa que no existeix. 529 00:25:05,190 --> 00:25:10,460 Així, per exemple, si Conjunts de processadors CS50 Finances, 530 00:25:10,460 --> 00:25:15,640 si haguessis estat rendint quote.html i vostè no té aquest arxiu, 531 00:25:15,640 --> 00:25:19,740 sinó que havia quote.php, que donaria lloc a un 404 no trobat 532 00:25:19,740 --> 00:25:21,600 perquè l'arxiu podria no existir. 533 00:25:21,600 --> 00:25:25,690 >> Per a un 403 prohibit, que es refereix als permisos. 534 00:25:25,690 --> 00:25:31,150 Així que si algun arxiu no és llegible pel món, vostè pot ser que aconsegueixi un 403 tornat. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Alguns altres que vostè pot ser get-- 301 Mogut permanentment; 537 00:25:37,810 --> 00:25:41,300 302, que es troba; 304, modificat; 400, Sol·licitud Malo; 538 00:25:41,300 --> 00:25:47,330 i Error intern del servidor per després 500 i 503, Servei no disponible. 539 00:25:47,330 --> 00:25:48,140 Sí. 540 00:25:48,140 --> 00:25:51,490 >> AUDIÈNCIA: Serà que ens espera memoritzar tots aquests estats? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: Tindria en el teu full de trucs. 542 00:25:53,739 --> 00:25:55,146 [El] 543 00:25:55,146 --> 00:25:59,954 AUDIÈNCIA: Estem esperàvem saber el que desencadena cada un? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: ¿Ho són? 545 00:26:00,995 --> 00:26:03,870 HANNAH Blumberg: Per als que hem executar into-- així que la pregunta era-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Són esperaven saber el que cada un d'aquests estats 547 00:26:08,010 --> 00:26:09,330 codis podria ser desencadenada per? 548 00:26:09,330 --> 00:26:13,240 Així que per als que hem fet servir i va córrer cap a, jo diria que sí. 549 00:26:13,240 --> 00:26:16,610 Així que hem vist definitivament 200 Acceptar i donat conferències en conjunts de processadors. 550 00:26:16,610 --> 00:26:19,071 Hem vist 403, 404. 551 00:26:19,071 --> 00:26:20,550 Per altres? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH Blumberg: ho faria diuen 500 sembla un joc just. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, si. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH Blumberg: Sí. 555 00:26:24,246 --> 00:26:27,006 Només tenen un sentit general del que els causa. 556 00:26:27,006 --> 00:26:28,880 I també amb només aquestes noms, pot tipus de 557 00:26:28,880 --> 00:26:32,890 com fer una conjectura com al que realment els va causar. 558 00:26:32,890 --> 00:26:36,919 Per exemple, moure de manera permanent, probablement l'arxiu s'ha mogut de forma permanent. 559 00:26:36,919 --> 00:26:39,328 >> AUDIÈNCIA: Però en un anterior examen, de manera que hi havia una 560 00:26:39,328 --> 00:26:41,050 Com esperes que respondre a això? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH Blumberg: Això valia zero punts. 562 00:26:42,883 --> 00:26:45,870 La pregunta sobre 418 a la tetera és tècnicament un estat HTTP, 563 00:26:45,870 --> 00:26:47,090 però va valer la pena zero punts. 564 00:26:47,090 --> 00:26:48,320 Òbviament, vostè no està S'espera que conèixer-los. 565 00:26:48,320 --> 00:26:49,670 >> AUDIÈNCIA: És un de veritat? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH Blumberg: És un veritable un, però no vol dir res. 567 00:26:51,970 --> 00:26:52,700 És només una broma. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 La gent d'Internet són divertits. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: Grans preguntes, nois. 571 00:26:59,680 --> 00:27:01,452 Alguna altra pregunta? 572 00:27:01,452 --> 00:27:04,891 >> AUDIÈNCIA: Quin és l'error intern del servidor? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: Interna error de servidor només 574 00:27:06,640 --> 00:27:10,050 vol dir que ha estat incapaç de comunicar-se 575 00:27:10,050 --> 00:27:13,400 amb el servidor per alguna raó. 576 00:27:13,400 --> 00:27:15,400 Així que no és necessàriament cosa que té a veure 577 00:27:15,400 --> 00:27:19,170 amb el client o alguna cosa per l'estil. 578 00:27:19,170 --> 00:27:22,170 Jo no conec cap exemple específic que hem anat a explicar, 579 00:27:22,170 --> 00:27:23,000 però si. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH Blumberg: És clar. 581 00:27:23,250 --> 00:27:25,625 Així, per exemple, com anem a diu que estava treballant mashup 582 00:27:25,625 --> 00:27:30,440 i un servidor de Google va baixar per a alguns raó, un tall d'energia, diguem. 583 00:27:30,440 --> 00:27:33,400 Això seria un servidor intern error o algun tipus de-- agrades 584 00:27:33,400 --> 00:27:34,630 no obtenir una resposta de tornada. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Sí. 586 00:27:35,260 --> 00:27:37,050 És només quan estàs incapaç de comunicar-se 587 00:27:37,050 --> 00:27:40,299 amb el servidor per alguna raó perquè d'ella baixant o alguna altra raó. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Així que saltar en PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, a diferència d'HTML, és un llenguatge de programació. 591 00:27:49,930 --> 00:27:54,820 I vam començar a usar-lo perquè és molt útil per al desenvolupament web. 592 00:27:54,820 --> 00:27:56,940 >> Primer fem servir en CS50 Finances. 593 00:27:56,940 --> 00:28:02,240 I, bàsicament, ens ajuda a portar junts aquesta marcat, el disseny, 594 00:28:02,240 --> 00:28:07,460 i la forma en què realment utilitzem la informació per mostrar les coses en una pàgina web. 595 00:28:07,460 --> 00:28:11,870 Així PHP en si vol dir PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 així que és una backnorym recursiva per si mateix. 597 00:28:15,360 --> 00:28:22,330 I l'obertura de les etiquetes per a PHP que l'esquerra i fletxes dreta amb els signes d'interrogació 598 00:28:22,330 --> 00:28:23,060 i php. 599 00:28:23,060 --> 00:28:25,890 >> Així que ja hem vist un munt d'ell. 600 00:28:25,890 --> 00:28:29,150 Ara, només anirem algunes de les coses bàsiques sobre ella. 601 00:28:29,150 --> 00:28:32,280 Així que amb PHP, la variable noms comencen amb el signe de dòlar. 602 00:28:32,280 --> 00:28:35,660 No especifiquem, de nou, escrigui més d'una variable. 603 00:28:35,660 --> 00:28:38,450 Igual que vam fer amb C, no necessitem fer això. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Podem fer un munt de diferents coses amb variables. 606 00:28:44,490 --> 00:28:47,750 Podem posar-los junts concatenant ells 607 00:28:47,750 --> 00:28:52,900 amb la notació de punts, el que no podíem fer en C de nou. 608 00:28:52,900 --> 00:28:57,490 Un cop més, tenim una mica més de versatilitat amb PHP en termes de variables. 609 00:28:57,490 --> 00:29:00,080 Un cop més, no tenim una funció principal. 610 00:29:00,080 --> 00:29:03,370 >> I PHP s'interpreta en contraposició a compilat, 611 00:29:03,370 --> 00:29:09,970 Així que el que vam fer per als arxius de C, no hem de fer això per a PHP. 612 00:29:09,970 --> 00:29:15,440 Però més aviat, la forma en que l'idioma s'executa per si mateix, s'interpreta. 613 00:29:15,440 --> 00:29:18,550 I després es passen lliurement simplement vol dir que tenim 614 00:29:18,550 --> 00:29:22,490 no ha d'especificar una variable tipus i els tipus de variables 615 00:29:22,490 --> 00:29:25,415 s'entenen en temps d'execució. 616 00:29:25,415 --> 00:29:29,185 >> AUDIÈNCIA: Però el que va fer dir amb la concatenació de punts? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: És clar. 618 00:29:30,060 --> 00:29:37,660 Quan volem posar les coses junts-- pel que si teníem alguna variable que 619 00:29:37,660 --> 00:29:41,500 tingut el valor de 3 i vam tenir una altra variable que tenia el valor de cadena, 620 00:29:41,500 --> 00:29:45,920 podríem posar les variables juntes posant un punt en entre elles 621 00:29:45,920 --> 00:29:46,970 i la concatenació d'ells. 622 00:29:46,970 --> 00:29:52,670 O podríem crear un anomenat nom de la variable 623 00:29:52,670 --> 00:29:56,900 i posar junts per concatenar dues cadenes. 624 00:29:56,900 --> 00:30:00,680 >> Així que si tinguéssim una cadena en doble cotitzacions i ens van posar un punt després que, 625 00:30:00,680 --> 00:30:03,660 i després vam tenir una altra cadena, que crearia una cadena per complet. 626 00:30:03,660 --> 00:30:05,242 >> AUDIÈNCIA: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA LETÒNIA: Va ser clar? 628 00:30:06,450 --> 00:30:07,099 AUDIÈNCIA: Sí. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Sí. 631 00:30:08,766 --> 00:30:11,146 >> AUDIÈNCIA: Quan vostè diu interpretat en lloc de compilat, 632 00:30:11,146 --> 00:30:14,160 estàs parlant no ho fa han de ser el més específic quan 633 00:30:14,160 --> 00:30:15,906 es tracta de PHP enfront de C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Quan diem interpretat en oposició a compilat, 636 00:30:20,710 --> 00:30:21,850 ¿Què volem dir? 637 00:30:21,850 --> 00:30:26,220 Així que això significa que no necessitem arxius executables per executar PHP. 638 00:30:26,220 --> 00:30:29,870 Això vol dir que s'executa com va. 639 00:30:29,870 --> 00:30:31,650 Això té sentit? 640 00:30:31,650 --> 00:30:32,495 Una mica més. 641 00:30:32,495 --> 00:30:34,620 HANNAH Blumberg: ¿Així que pot pensar en un intèrpret 642 00:30:34,620 --> 00:30:38,980 com un altre programa que és responsable per anar línia per línia en PHP 643 00:30:38,980 --> 00:30:42,745 i en realitat executar-lo, en oposició a compilar tot baix a binari. 644 00:30:42,745 --> 00:30:46,050 En realitat, no vol dir res sobre com específica que hem de ser. 645 00:30:46,050 --> 00:30:49,470 Encara hem de ser precisos, i no ho fem oblidi el seu punt i coma, i assegureu-vos 646 00:30:49,470 --> 00:30:51,470 vostè té el seu signe de dòlar, i coses per l'estil. 647 00:30:51,470 --> 00:30:52,240 Bona pregunta. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Sí. 649 00:30:53,115 --> 00:30:55,590 Així línia per línia, com a diferència amb els arxius de C, 650 00:30:55,590 --> 00:30:59,100 hem de fer que tota la final abans que realment podem executar-lo. 651 00:30:59,100 --> 00:31:00,360 Aquesta és la principal diferència. 652 00:31:00,360 --> 00:31:02,655 Però, de nou, no podem realment ser menys específic. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Així matrius en PHP representen en realitat un mapa ordenat. 655 00:31:13,950 --> 00:31:17,550 >> Així que els valors de les matrius associades a les tecles. 656 00:31:17,550 --> 00:31:23,350 Les dues maneres de declarar una array, basat en aquesta sintaxi, 657 00:31:23,350 --> 00:31:26,380 podem ser més explícita en dir que tenim una matriu 658 00:31:26,380 --> 00:31:31,010 i tenim aquest key1 que s'assigna a aquest valor1, valor2 key2 que s'assigna. 659 00:31:31,010 --> 00:31:34,660 O simplement podem crear una matriu que conté els valors en si 660 00:31:34,660 --> 00:31:38,360 i després les tecles són entesa d'una manera. 661 00:31:38,360 --> 00:31:40,000 Per a qualsevol dubte sobre això? 662 00:31:40,000 --> 00:31:42,500 >> Audiència: Quines serien les claus estar en el segon exemple? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: Per exemple, és només les claus en això no fan necessàriament 667 00:31:55,780 --> 00:31:56,550 fer una diferència. 668 00:31:56,550 --> 00:32:01,720 Ells simplement definir com es pot utilitzar els valors dins d'ella. 669 00:32:01,720 --> 00:32:08,660 Així que si teníem un foreach bucle en PHP que ho faria 670 00:32:08,660 --> 00:32:14,760 ens permet anar a través de tots els valors, podem anar a través de tots els valors, 671 00:32:14,760 --> 00:32:19,570 fins i tot si teníem o no havíem definit una tecla específica en el lloc de 672 00:32:19,570 --> 00:32:20,820 sintaxi anterior. 673 00:32:20,820 --> 00:32:23,460 >> Així que fins i tot amb aquest tipus de la matriu, que encara podia 674 00:32:23,460 --> 00:32:26,260 tenir un bucle foreach que va a través de cada 675 00:32:26,260 --> 00:32:31,240 dels valors de la clau en la matriu. 676 00:32:31,240 --> 00:32:36,180 Així que la sintaxi d'un foreach llaç, vam començar amb una matriu. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Aquesta variable $ arr és la nostra gamma actual que definim a la diapositiva anterior 679 00:32:43,900 --> 00:32:47,550 com a valor que va, literalment, a través de cada un dels valors, 680 00:32:47,550 --> 00:32:50,122 independentment de si vam tenir una clau o no. 681 00:32:50,122 --> 00:32:53,080 I llavors podem fer alguna cosa amb el valor a l'interior del bucle foreach. 682 00:32:53,080 --> 00:32:57,730 Així que de nou, si tinguéssim un arsenal com això aquí created-- 683 00:32:57,730 --> 00:33:03,270 així que tenim la clau de foo i el valor de bar, la clau de Baz i el valor de qux-- 684 00:33:03,270 --> 00:33:09,730 podem tenir un bucle foreach que passa per matriu com a valor clau 685 00:33:09,730 --> 00:33:11,900 i després fer alguna cosa amb la clau i / o valor. 686 00:33:11,900 --> 00:33:15,980 Però no ho fem sempre necessàriament ha de tenir un foreach bucles que 687 00:33:15,980 --> 00:33:19,410 passa a través de la matriu com un mapa clau de valor. 688 00:33:19,410 --> 00:33:26,060 Podem passar pel array bucle foreach com a valor. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH Blumberg: I ​​crec que A-- era la seva pregunta, el que 690 00:33:28,990 --> 00:33:31,229 és l'índex implícit? 691 00:33:31,229 --> 00:33:31,895 AUDIÈNCIA: Una mica. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH Blumberg: Sí, sí. 694 00:33:33,406 --> 00:33:36,150 Així que, bàsicament, si no s'especifica 1 clau, que serà 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Sí. 696 00:33:37,140 --> 00:33:41,718 Igual que amb C, és zero indexats si no s'especifica la clau. 697 00:33:41,718 --> 00:33:42,384 AUDIÈNCIA: Ho sentim. 698 00:33:42,384 --> 00:33:43,827 Podries intentar parlar una mica més fort? 699 00:33:43,827 --> 00:33:45,270 Estic tenint una mica de problemes per sentir tot. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: ho sento molt. 701 00:33:46,478 --> 00:33:48,439 Sí, és clar. 702 00:33:48,439 --> 00:33:50,230 Així que és el que vols de mi per repassar de nou? 703 00:33:50,230 --> 00:33:51,680 O és esto-- 704 00:33:51,680 --> 00:33:54,930 AUDIÈNCIA: Així que en l'anterior si slide-- vostè podria tornar per un segon. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Per descomptat, ho sento. 706 00:33:57,313 --> 00:33:59,237 AUDIÈNCIA: Així que el segon array aquí no 707 00:33:59,237 --> 00:34:04,135 semblen tenir un valor de clau, una mena de [? causalitat. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Cert, cert. 709 00:34:05,343 --> 00:34:07,608 AUDIÈNCIA: Llavors, com funciona això quan vostè diu que és tot o res. 710 00:34:07,608 --> 00:34:08,969 Per a mi, això sembla 1 [? foo?] ja. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Sí, sí. 712 00:34:10,093 --> 00:34:12,969 Així que de nou, es tracta d'una mapa ordenat en aquest sentit 713 00:34:12,969 --> 00:34:15,639 que no s'entenen, per exemple, els índexs 714 00:34:15,639 --> 00:34:20,159 aquí es pot entendre com a 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Un cop més, això és tenir els índexs és el nostre equivalent 716 00:34:25,929 --> 00:34:28,980 de tenir tecles mapejades en valors. 717 00:34:28,980 --> 00:34:34,710 Així que si la nostra clau va ser 0-- ho sento. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH Blumberg: No, Hi ha apuntar-aquí. 719 00:34:36,524 --> 00:34:36,929 En realitat és molt agradable. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: Això és genial. 721 00:34:37,460 --> 00:34:38,260 D'ACORD. 722 00:34:38,260 --> 00:34:49,489 Així que de nou, $ arr 0 seria la clau per al valor 1. 723 00:34:49,489 --> 00:34:51,138 0 seria la clau per al valor 1. 724 00:34:51,138 --> 00:34:51,971 AUDIÈNCIA: Ho sento. 725 00:34:51,971 --> 00:34:53,190 És invisible. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH Blumberg: Molt bé, no importa. 727 00:34:53,659 --> 00:34:54,980 Chalk era una mala idea. 728 00:34:54,980 --> 00:34:58,030 Em retracte. 729 00:34:58,030 --> 00:35:01,425 Vostè pot pensar en les tecles com mapes 0 al valor 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Sí. 731 00:35:02,300 --> 00:35:04,630 Així que aquest és 0, és a dir 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Aquestes poden ser les claus. 733 00:35:05,760 --> 00:35:10,020 Vostè pot pensar en ells com-- si. 734 00:35:10,020 --> 00:35:12,740 Així que en lloc de tenir claus explícites, són 735 00:35:12,740 --> 00:35:17,180 tipus d'entendre com sent els índexs a partir de 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 El guix no va ajudar. 738 00:35:24,820 --> 00:35:25,722 Sí. 739 00:35:25,722 --> 00:35:30,914 >> AUDIÈNCIA: Per al bucle foreach, si volíem veure el com el valor, 740 00:35:30,914 --> 00:35:33,245 ho faria només índex automàticament a 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Sí. 742 00:35:34,120 --> 00:35:35,745 Seria anar a través de cada un dels valors. 743 00:35:35,745 --> 00:35:39,130 AUDIÈNCIA: [inaudible] com 0 o caldria acaba de fer de 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Hauries dir, com a signe de dòlar i després 745 00:35:43,710 --> 00:35:46,266 algun nom de variable, el valor. 746 00:35:46,266 --> 00:35:47,182 AUDIÈNCIA: [inaudible]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Ho sento? 749 00:35:50,964 --> 00:35:52,839 AUDIÈNCIA: Ho sento, estic tractant de recordar. 750 00:35:52,839 --> 00:35:57,190 Com vostè que si vostè pot fer-ho automàticament la indexació és de 0? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Llavors, com ho faries si vostè no té els noms claus específiques? 752 00:36:00,780 --> 00:36:01,710 >> AUDIÈNCIA: Sí. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: vostè acaba de define-- només dir-te a tu mateix com un nom. 754 00:36:07,820 --> 00:36:17,950 Així que en els seus conjunts de processadors, vostès podrien recordi $ row foreach com $ files, 755 00:36:17,950 --> 00:36:24,610 hem creat nosaltres mateixos aquests $ fila dient volem passar per fila com $ files. 756 00:36:24,610 --> 00:36:28,360 Tot i que no teníem aquesta $ explícita files definides, 757 00:36:28,360 --> 00:36:31,990 poguéssim anar i diuen que això pot ser la clau, 758 00:36:31,990 --> 00:36:33,615 i només ha d'anar a través de cada un dels valors. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> AUDIÈNCIA: Així és el valor d'una variable nova estem creant per emmagatzemar [inaudible]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Així que no és inherentment una nova variable. 763 00:36:49,990 --> 00:37:00,310 És una variable que fa referència a la a l'interior de la matriu a cada un d'ells. 764 00:37:00,310 --> 00:37:02,060 HANNAH Blumberg: És un nou nom de la variable. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Sí, és un nou nom de la variable, 766 00:37:04,018 --> 00:37:06,680 però no és inherently-- si. 767 00:37:06,680 --> 00:37:08,950 És només una nova variable que es pot fer això. 768 00:37:08,950 --> 00:37:12,680 Llavors, com fem que vam fer $ Remar com $ files, files 769 00:37:12,680 --> 00:37:17,980 era un nou nom de la variable que podria crear en el nostre bucle foreach. 770 00:37:17,980 --> 00:37:22,065 No ha de preexistir abans d'això. 771 00:37:22,065 --> 00:37:25,777 >> AUDIÈNCIA: Podria passar pel lògica per a cada un, utilitzant el exemple allà? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: MHM. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Oh, ho sento. 775 00:37:32,080 --> 00:37:33,780 Aquí està l'exemple. 776 00:37:33,780 --> 00:37:34,280 És clar. 777 00:37:34,280 --> 00:37:38,950 Així que per a cada array-- el això vol dir anar a aquesta matriu 778 00:37:38,950 --> 00:37:43,930 com a clau value-- que està passant de passar per aquesta matriu 779 00:37:43,930 --> 00:37:49,480 i primer anar a buscar foo, la foo clau i la barra de valor. 780 00:37:49,480 --> 00:37:51,570 I després en el segon iteració del bucle for, 781 00:37:51,570 --> 00:37:55,090 que passarà i prendre el baz clau i el qux valor. 782 00:37:55,090 --> 00:38:00,512 I llavors vostè pot fer alguna cosa amb qualsevol d'ells o tots dos d'ells. 783 00:38:00,512 --> 00:38:03,488 >> AUDIÈNCIA: Així que la idea darrere de que té un punt clau per al valor, 784 00:38:03,488 --> 00:38:07,470 ¿Què és el que acaben l'accés? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: Quina és la idea i tenir un senyalador clau per valorar? 786 00:38:10,680 --> 00:38:16,400 És només una altra convenció, un altre forma de recórrer la matriu 787 00:38:16,400 --> 00:38:22,600 i ser capaç d'accedir a qualsevol dels clau o el valor o tots dos i utilitzar-los. 788 00:38:22,600 --> 00:38:27,100 >> AUDIÈNCIA: Quin és el paper de la ordenar que el foreach s'executa en? 789 00:38:27,100 --> 00:38:29,250 Així que si haguéssim d'afegir elements a la matriu després, 790 00:38:29,250 --> 00:38:32,140 hauria qui seran els primers crida a la matriu foreach, 791 00:38:32,140 --> 00:38:33,750 o seria més tard? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Llavors, què és la finalitat que el foreach 793 00:38:37,770 --> 00:38:39,210 bucle passa per una sèrie de? 794 00:38:39,210 --> 00:38:42,220 Passa a través de la primera element per a l'últim element, 795 00:38:42,220 --> 00:38:43,400 fins a l'últim element afegit. 796 00:38:43,400 --> 00:38:48,020 Si afegiu elements més tard, ho farien accessed-- ser els primers elements serien 797 00:38:48,020 --> 00:38:51,410 ser visitada com la primera elements de la matriu, 798 00:38:51,410 --> 00:38:57,620 i després t'agradaria anar a través de cada un els elements com una mena de ordered-- 799 00:38:57,620 --> 00:39:02,930 no un ordenat, però la forma en què que s'han posat a la matriu. 800 00:39:02,930 --> 00:39:06,855 >> AUDIÈNCIA: Llavors nous elements s'afegeixen més tard? 801 00:39:06,855 --> 00:39:10,680 Així que estan added-- seran el els últims al [? iteració. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: Nous elements can-- Bàsicament, quan s'afegeixen nous elements, 803 00:39:14,280 --> 00:39:16,520 es van afegir a la final de la matriu? 804 00:39:16,520 --> 00:39:17,632 >> AUDIÈNCIA: Sí. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Crec que si. 806 00:39:18,840 --> 00:39:20,850 Sí. 807 00:39:20,850 --> 00:39:24,330 I després, amb el seu bucle foreach, després d'afegir nous elements 808 00:39:24,330 --> 00:39:26,790 i vostè va a través d'ells, els nous elements faria 809 00:39:26,790 --> 00:39:30,930 ser accessed-- el nou element, si és agregat última, seria accedir passat. 810 00:39:30,930 --> 00:39:34,416 >> AUDIÈNCIA: Pots donar un exemple d'alguna cosa que faria [inaudible] 811 00:39:34,416 --> 00:39:37,404 amb una mica de valor com [inaudible] o el valor, 812 00:39:37,404 --> 00:39:38,910 agrada com et dóna format això? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: És clar. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 Puc donar un exemple del que que faríem amb el valor? 816 00:39:46,410 --> 00:39:52,440 Així que el que vostès podrien estar familiaritzats amb és que hem passat per una sèrie 817 00:39:52,440 --> 00:39:55,380 i bàsicament imprès cadascun dels elements, 818 00:39:55,380 --> 00:40:00,910 per exemple, com a part d'una llista ordenada o alguna cosa d'això. 819 00:40:00,910 --> 00:40:02,674 ¿Això té sentit o volem A-- 820 00:40:02,674 --> 00:40:04,340 AUDIÈNCIA: Podem imprimir aquests valors fora? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Sí, podríem imprimir i després bàsicament $ valor perquè en 822 00:40:13,220 --> 00:40:16,570 aquest valor específic, que seria imprimir el valor dins d'ella. 823 00:40:16,570 --> 00:40:20,150 Així que si estàvem en la nostra primera iteració de la mateixa i imprimim $ valor, 824 00:40:20,150 --> 00:40:23,775 estaríem imprimint bar. 825 00:40:23,775 --> 00:40:27,020 >> AUDIÈNCIA: Hi ha també són per bucles en PHP o simplement bucles foreach? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: No també per bucles en PHP. 827 00:40:30,430 --> 00:40:33,399 I la seva lògica és sobretot el mateix que el que vostè ha estat acostumat. 828 00:40:33,399 --> 00:40:34,690 AUDIÈNCIA: Pel que el seu valor és nul. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: És com el mateix. 830 00:40:35,090 --> 00:40:35,590 Sí. 831 00:40:35,590 --> 00:40:37,747 AUDIÈNCIA: només vaig a preguntar. 832 00:40:37,747 --> 00:40:39,695 Així que quan es declara un matriu, no cal 833 00:40:39,695 --> 00:40:42,617 per dir-li el que la mida que va a ser, el que significa que vostè pot simplement 834 00:40:42,617 --> 00:40:44,417 afegir i treure elements de [inaudible]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Sí. 836 00:40:45,250 --> 00:40:45,750 Sí. 837 00:40:45,750 --> 00:40:46,251 Exactament. 838 00:40:46,251 --> 00:40:48,875 Quan declarem una matriu, que no cal dir quina mida és, 839 00:40:48,875 --> 00:40:51,022 així que només podem afegir elements en ell més endavant també. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 Més preguntes? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Per tant portant PHP i HTML junts, el que hem seen-- així, 844 00:41:05,950 --> 00:41:15,130 Per exemple, en aquest exemple, tenim un formulari HTML que té un camp d'entrada. 845 00:41:15,130 --> 00:41:18,830 >> I el camp d'entrada és anomenar només i llavors té un botó Envia. 846 00:41:18,830 --> 00:41:26,040 I quan es prem el Presentar botó, en el nostre fitxer hello.php, 847 00:41:26,040 --> 00:41:32,130 perquè el mètode per a la forma és aconseguir, podem accedir al que estigui a nom de 848 00:41:32,130 --> 00:41:40,360 per aquesta obtenir la variable global que és-- la sintaxi és $ _GET. 849 00:41:40,360 --> 00:41:44,520 I després podem accedir a qualsevol que sigui el entrada de l'usuari a l'interior d'aquesta forma per al nom 850 00:41:44,520 --> 00:41:47,410 especificant el nom d'aquest camp. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> Alguna altra pregunta o qualsevol preguntes sobre aquest exemple específic? 853 00:41:55,060 --> 00:41:58,275 >> AUDIÈNCIA: On és el PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Aquí. 855 00:41:59,150 --> 00:42:01,150 Així que aquesta és la nostra etiqueta d'obertura per al PHP. 856 00:42:01,150 --> 00:42:01,530 >> AUDIÈNCIA: Oh, dreta. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Sí. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH Blumberg :? El = és la taquigrafia perquè aquesta és PHP i amb prou feines ressò. 860 00:42:09,609 --> 00:42:10,150 AUDIÈNCIA: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Sí, ho sento. 862 00:42:10,720 --> 00:42:12,040 Hi hauria d'haver deixat clar. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH Blumberg: Imprimeix. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: És només la funció que ens permet imprimir alguna cosa. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Molt bona pregunta. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Així going-- si. 869 00:42:25,495 --> 00:42:31,940 >> AUDIÈNCIA: ¿Va a ser bastant una mica de codificació manual de PHP i HTML 870 00:42:31,940 --> 00:42:33,450 el qüestionari 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: No pot ser un bona quantitat d'interpretació 873 00:42:38,810 --> 00:42:43,330 de PHP i HTML, no necessàriament com una enorme quantitat de codificació, 874 00:42:43,330 --> 00:42:46,960 encara que potser hagi d'escriure una bucle foreach, però, un bucle for. 875 00:42:46,960 --> 00:42:49,790 Qualsevol dels bucles que ens cobrir aquí és un joc just. 876 00:42:49,790 --> 00:42:51,889 I això és sobre tot això. 877 00:42:51,889 --> 00:42:53,430 HANNAH Blumberg: Jo estaria preparat. 878 00:42:53,430 --> 00:42:57,010 De la mateixa manera que els demanem que escriure un munt de funcions C en concurs 0, 879 00:42:57,010 --> 00:42:59,766 Jo estaria disposat a fer el mateixa en PHP i JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Sí. 881 00:43:00,640 --> 00:43:03,210 HANNAH Blumberg: Jo diria que 1 poc-- com no estem 882 00:43:03,210 --> 00:43:06,251 farà que escriviu un enorme HTML pàgina perquè això és una mica 883 00:43:06,251 --> 00:43:08,240 tediós, però és possible que tingui parts. 884 00:43:08,240 --> 00:43:09,310 Això és joc totalment just. 885 00:43:09,310 --> 00:43:11,082 Com a petita pàgina HTML, totalment just. 886 00:43:11,082 --> 00:43:11,623 AUDIÈNCIA: OK. 887 00:43:11,623 --> 00:43:13,814 Què tal en JavaScript també? 888 00:43:13,814 --> 00:43:14,730 HANNAH Blumberg: Sí. 889 00:43:14,730 --> 00:43:15,250 Presa fàcil de JavaScript. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Sí. 891 00:43:15,635 --> 00:43:16,801 Això és joc completament just. 892 00:43:16,801 --> 00:43:19,280 HANNAH Blumberg: Anem a arribar a la de com 10 minuts. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, de nou, Structured Query Language. 894 00:43:23,750 --> 00:43:28,651 Bàsicament ens permet gestionar les dades en una gestió de base de dades relacional 895 00:43:28,651 --> 00:43:29,150 sistema. 896 00:43:29,150 --> 00:43:31,149 Això significa que només bàsicament que tenim en algun lloc 897 00:43:31,149 --> 00:43:37,980 per emmagatzemar algunes dades que podríem voler utilitzar en un lloc web o en alguna altra forma. 898 00:43:37,980 --> 00:43:42,190 I després tenim les consultes per obtenir informació de la nostra base de dades, 899 00:43:42,190 --> 00:43:44,320 o per inserir informació en ells. 900 00:43:44,320 --> 00:43:47,560 Gran part de la ACTUALITZACIÓ ones-- comú, INSERT, SELECT i DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Així que per UPDATE, aquesta és la sintaxi per a l'actualització de dades en una base de dades. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 L'actualització d'aquesta taula anomenada taula dient SET, 904 00:43:57,340 --> 00:44:04,170 podem establir alguns valors en tot files a la igualtat d'alguna cosa més. 905 00:44:04,170 --> 00:44:09,410 Així també podem especificar algunes específiques entrades que volem modificar 906 00:44:09,410 --> 00:44:11,240 i que pot ser utilitzant WHERE. 907 00:44:11,240 --> 00:44:16,380 I podem especificar que només volem modificar algunes files on la casa per, 908 00:44:16,380 --> 00:44:19,830 si tinguéssim una taula d'estudiants i tots els estudiants tenien casa, 909 00:44:19,830 --> 00:44:24,890 pel que només seria modificar alguns valors on una casa és igual Currier, 910 00:44:24,890 --> 00:44:25,430 per exemple. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Per INSERT, podem inserir certs valors en una taula. 913 00:44:31,800 --> 00:44:35,150 Així INSERT INTO taula, i després els valors, 914 00:44:35,150 --> 00:44:39,080 i després entre parèntesi, especifiquem que els valors que voleu inserir. 915 00:44:39,080 --> 00:44:43,220 Així INSERT INTO taula, col1 i col2, el valor és val1 i val2. 916 00:44:43,220 --> 00:44:48,930 Així que aquesta s'insereix bàsicament una nova fila en una taula que conté els valors 1 i 2 917 00:44:48,930 --> 00:44:50,850 en les columnes 1 i 2. 918 00:44:50,850 --> 00:44:54,760 >> I després anirem un exemple ràpid de com es veu això 919 00:44:54,760 --> 00:44:56,310 de la mateixa manera que a la nostra base de dades una mica. 920 00:44:56,310 --> 00:44:58,685 Però aquesta consulta final que I Crec que anirem, 921 00:44:58,685 --> 00:45:01,450 SELECT, només ens permet per seleccionar dades d'una taula 922 00:45:01,450 --> 00:45:03,080 a la possibilitat d'utilitzar-lo després. 923 00:45:03,080 --> 00:45:05,830 I la forma en què fem això és que simplement guardar-lo en alguna variable. 924 00:45:05,830 --> 00:45:07,780 I llavors podem possiblement utilitzar-lo de nou. 925 00:45:07,780 --> 00:45:10,260 >> Així estrelles SELECT significa seleccionar tot. 926 00:45:10,260 --> 00:45:13,280 Això és només una abreviatura per a la selecció de tots. 927 00:45:13,280 --> 00:45:19,760 FROM taula WHERE, estem buscant per a algunes condicions específiques, 928 00:45:19,760 --> 00:45:22,290 de manera que la columna és igual a alguna cosa, per exemple. 929 00:45:22,290 --> 00:45:24,410 Si l'únic que volíem seleccionar tot de la taula, 930 00:45:24,410 --> 00:45:28,400 això només selecciona totes les columnes i totes les files d'una taula. 931 00:45:28,400 --> 00:45:32,040 >> I després DELETE FROM taula ON col és igual a alguna cosa, 932 00:45:32,040 --> 00:45:36,440 això només elimina alguns fila de la nostra taula 933 00:45:36,440 --> 00:45:38,860 on tenim algunes condicions específiques. 934 00:45:38,860 --> 00:45:41,870 En aquest cas, les condicions són la columna és igual a alguna cosa. 935 00:45:41,870 --> 00:45:43,460 Tan sols un exemple ràpid d'això. 936 00:45:43,460 --> 00:45:49,100 Si tenim aquesta taula aquí i nosaltres inserir-lo en una taula, aquests valors, 937 00:45:49,100 --> 00:45:50,400 això seria inserir una nova fila. 938 00:45:50,400 --> 00:45:56,380 I si tinguéssim increment automàtic, això seria acaba d'incrementar el nostre ID de 0 a 1 a 2. 939 00:45:56,380 --> 00:46:00,010 >> Si seleccionem tots dels estudiants, que simplement retorna tots els camps i totes les files. 940 00:46:00,010 --> 00:46:02,430 On any és més gran o igual a 2.016, 941 00:46:02,430 --> 00:46:04,390 això seria simplement tornar Hannah i jo. 942 00:46:04,390 --> 00:46:08,360 I després si només seleccionem Identificació de l'any i l'any dels estudiants 943 00:46:08,360 --> 00:46:11,710 on la casa és Cabot House, que seria, de nou, tornar a Hannah i jo. 944 00:46:11,710 --> 00:46:14,430 >> Llavors, si hem esborrat dels estudiants on nom és igual a Rob, 945 00:46:14,430 --> 00:46:16,760 això seria eliminar tota la fila. 946 00:46:16,760 --> 00:46:19,696 I després, si ens fixem el nom, estudiants ACTUALITZACIÓ 947 00:46:19,696 --> 00:46:21,570 Nom del conjunt és igual a Daven ON casa és igual 948 00:46:21,570 --> 00:46:27,010 Cabot House, que va anar a aquestes files i després actualitzar el nom. 949 00:46:27,010 --> 00:46:31,470 >> I després d'uns tipus de dades SQL són CHAR, VARCHAR, INT, i surar. 950 00:46:31,470 --> 00:46:32,760 Aquests són joc just. 951 00:46:32,760 --> 00:46:36,740 M'agradaria anar una altra vegada i assegureu-vos que sap 952 00:46:36,740 --> 00:46:40,930 i tenir-los en el seu full de trucs, el que cada un d'aquests personatges 953 00:46:40,930 --> 00:46:44,140 s'han utilitzat per, el que els va utilitzar en els seus conjunts de processadors, 954 00:46:44,140 --> 00:46:48,050 i assegureu-vos que vostè està familiaritzat i còmode amb haver de triar 955 00:46:48,050 --> 00:46:51,450 de diferents tipus de dades en el conjunt de processadors. 956 00:46:51,450 --> 00:46:51,950 Sí. 957 00:46:51,950 --> 00:46:54,300 >> AUDIÈNCIA: Quin va ser emmagatzemada aquesta taula? 958 00:46:54,300 --> 00:46:57,119 Sí, on s'emmagatzema aquest quadre? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Bé, en aquest moment, no s'emmagatzema. 960 00:46:59,160 --> 00:47:00,700 De totes maneres, on s'emmagatzema aquest quadre? 961 00:47:00,700 --> 00:47:04,503 Però pot ser emmagatzemada en una base de dades SQL. 962 00:47:04,503 --> 00:47:07,330 >> AUDIÈNCIA: ¿I on és la base de dades SQL? 963 00:47:07,330 --> 00:47:11,200 A l'ordinador, en línia en algun lloc, el servidor? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: Pot ser un sèrie de coses diferents. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH Blumberg: Hem interconnectat amb Taules SQL majoria amb phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Així que el que podíem demanar un servidor emmagatzemar per a nosaltres. 967 00:47:22,060 --> 00:47:23,830 Podríem emmagatzemar-los en el nostre propi ordinador. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: Això és decisió com vols que ho faci per tu mateix. 969 00:47:27,950 --> 00:47:30,075 Però hem estat emmagatzemant ells, com s'esmenta Hannah, 970 00:47:30,075 --> 00:47:31,755 en phpMyAdmin, que és en línia. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 I llavors la forma en què fem servir PHP i SQL, que l'emmagatzemen 973 00:47:39,280 --> 00:47:43,450 en alguna variable el que hem preguntat per. 974 00:47:43,450 --> 00:47:48,370 >> Així que si tenim Selecciona-ho tot en la història on user_id és igual a l'identificador de sessió, 975 00:47:48,370 --> 00:47:53,900 això seria seleccionar totes les files per a la persona específica que 976 00:47:53,900 --> 00:47:58,327 està connectat a partir de la història taula i les ordena en files. 977 00:47:58,327 --> 00:48:00,410 Un bon aspecte saber és que la funció de consulta del CS50 978 00:48:00,410 --> 00:48:02,180 protegeix contra etiquetes d'injecció SQL. 979 00:48:02,180 --> 00:48:07,420 Això només vol dir que s'assegura l'entrada que s'introdueix és correcte 980 00:48:07,420 --> 00:48:09,920 i que la persona que està entrant a l'entrada 981 00:48:09,920 --> 00:48:15,100 No està tractant d'entrada d'alguna maliciosa codi o bé caure les nostres taules 982 00:48:15,100 --> 00:48:17,305 o esborrar tot dins de la nostra base de dades. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Una visió ràpida de la Model Model View Controller, 985 00:48:23,400 --> 00:48:27,360 és només una forma d'organitzar i pensant en codi. 986 00:48:27,360 --> 00:48:29,100 És més, un paradigma de disseny. 987 00:48:29,100 --> 00:48:33,380 El que això significa és que can-- i és una bona pràctica 988 00:48:33,380 --> 00:48:37,790 per separar les diferents parts del nostre codi i el que 989 00:48:37,790 --> 00:48:40,530 controlar en aquestes tres paradigmes. 990 00:48:40,530 --> 00:48:46,700 >> Així que el nostre punt de vista és el més sovint la nostra plantilles, el nostre disseny, la forma 991 00:48:46,700 --> 00:48:48,260 que establim com es veu el nostre codi. 992 00:48:48,260 --> 00:48:55,190 Això és sobretot nostres arxius CSS i la forma que definim el disseny del nostre codi, 993 00:48:55,190 --> 00:48:55,710 bàsicament. 994 00:48:55,710 --> 00:48:59,280 El nostre controlador és sobretot el que que hem estat fent amb els arxius PHP. 995 00:48:59,280 --> 00:49:03,030 Així que de nou, en col·laboració amb la informació que tenim 996 00:49:03,030 --> 00:49:06,700 i definir com aquest informació s'utilitza, 997 00:49:06,700 --> 00:49:10,660 i després passar aquesta informació ja sigui a la vista o el model. 998 00:49:10,660 --> 00:49:13,880 I el model, la forma en què hem estat utilitzant és a dir ha estat la nostra base de dades, 999 00:49:13,880 --> 00:49:17,510 pel que la nostra informació és emmagatzemat pel que té alguna part 1000 00:49:17,510 --> 00:49:21,490 per viure, i qualsevol dels codi que es refereix a la forma 1001 00:49:21,490 --> 00:49:25,410 que obtenim aquesta informació o la manera que actualitzem aquesta informació. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Així que en el model MVC, HTTP les sol·licituds s'envien a un servidor web. 1004 00:49:33,200 --> 00:49:36,220 A continuació, el controlador interpreta la sol·licitud del usuari 1005 00:49:36,220 --> 00:49:38,260 i després valida l'entrada de l'usuari. 1006 00:49:38,260 --> 00:49:41,580 És opcional que tenim el controlador comunicar- 1007 00:49:41,580 --> 00:49:44,000 amb un model, de manera que alguna cosa com la nostra base de dades 1008 00:49:44,000 --> 00:49:47,500 o alguna altra funcionalitat que transmet informació. 1009 00:49:47,500 --> 00:49:50,340 I finalment, el controlador passa la informació a la vista 1010 00:49:50,340 --> 00:49:52,090 de manera que pugui ser rendit i que pot 1011 00:49:52,090 --> 00:49:55,860 es fan visibles a qualsevol persona l'accés a la pàgina web. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> Qualsevol pregunta? 1014 00:50:01,340 --> 00:50:01,840 Impressionant. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Així que de nou, el model, la seva funció, de nou, 1017 00:50:08,469 --> 00:50:11,260 és l'emmagatzematge persistent de la informació, la gestió i organització de les dades. 1018 00:50:11,260 --> 00:50:13,890 I el que hem vist fins ara és la base de dades MySQL 1019 00:50:13,890 --> 00:50:16,200 i els arxius de dades que es poden utilitzar. 1020 00:50:16,200 --> 00:50:20,580 >> Veure, presentació d'informació a l'usuari, la interfície d'usuari, o interfície d'usuari. 1021 00:50:20,580 --> 00:50:22,350 I l'exemple d'això és HTML. 1022 00:50:22,350 --> 00:50:23,950 I llavors podríem tenir PHP mínima. 1023 00:50:23,950 --> 00:50:28,360 Així que per a un bucle que itera sobre les dades que s'imprimeixen 1024 00:50:28,360 --> 00:50:30,720 és part de la vista, com es en comparació amb el controlador. 1025 00:50:30,720 --> 00:50:35,660 I llavors molts dels nostres arxius PHP caure en la categoria de controlador. 1026 00:50:35,660 --> 00:50:38,410 Simplement maneja peticions dels usuaris i obté informació a partir del model. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Saltant en el Document Model d'objectes, això només 1029 00:50:45,590 --> 00:50:47,700 es refereix a la forma en HTML s'organitzen documents. 1030 00:50:47,700 --> 00:50:51,600 I estan organitzats en un arbre estructura que té una jerarquia. 1031 00:50:51,600 --> 00:50:56,720 Així que si tenim accés a [inaudible] la representació del document, 1032 00:50:56,720 --> 00:51:02,750 podem treballar amb el document, igual que manipulem objectes bàsicament. 1033 00:51:02,750 --> 00:51:06,630 >> I per fer això una poc més clara, quan 1034 00:51:06,630 --> 00:51:10,540 tenim un munt de la nostra diferents etiquetes responen 1035 00:51:10,540 --> 00:51:12,590 a diferents rutes al nostre arbre. 1036 00:51:12,590 --> 00:51:17,070 I a continuació, per a aquest exemple, tenir el node de document de partida. 1037 00:51:17,070 --> 00:51:20,010 Tenim, llavors, el nostre node HTML que es divideix en cap i cos. 1038 00:51:20,010 --> 00:51:22,810 Head té títol i després títol conté hola, món. 1039 00:51:22,810 --> 00:51:24,860 I el nostre cos només conté hola, món també. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Així que qualsevol pregunta sobre qualsevol dels coses que hem cobert fins ara? 1042 00:51:31,900 --> 00:51:35,891 I si no, va a Hannah fer-se càrrec amb JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Impressionant. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH Blumberg: OK, fresc. 1045 00:51:37,473 --> 00:51:40,980 Si hi ha una cosa que ve amb PHP o HTML, o qualsevol de les coses que Maria cobert, 1046 00:51:40,980 --> 00:51:42,700 sempre podem fer una pausa. 1047 00:51:42,700 --> 00:51:46,430 Ho estem fent millor en una altra vegada, tan impressionant. 1048 00:51:46,430 --> 00:51:48,770 I només per tornar molt ràpid a aquesta, 1049 00:51:48,770 --> 00:51:51,010 si ens fixem en tots els examen de l'any passat, aquesta 1050 00:51:51,010 --> 00:51:54,120 sorgeix mateixes: aquí és una mica d'HTML, fan d'aquest diagrama. 1051 00:51:54,120 --> 00:51:58,380 O aquí està aquest diagrama, fer una mica de HTML, de manera que definitivament practicar això. 1052 00:51:58,380 --> 00:52:01,500 I llavors aquesta és una GARANTITS pregunta que vostè pot fer-ho bé. 1053 00:52:01,500 --> 00:52:02,000 Fresc. 1054 00:52:02,000 --> 00:52:04,510 Així que anem a parlar de JavaScript i com és una mica 1055 00:52:04,510 --> 00:52:09,130 diferent de llenguatges com PHP i C, els dos idiomes que vam veure abans. 1056 00:52:09,130 --> 00:52:10,780 Així que el número u, està vagament escrit. 1057 00:52:10,780 --> 00:52:14,630 Això és com PHP, però a diferència de C. 1058 00:52:14,630 --> 00:52:15,890 >> És un llenguatge interpretat. 1059 00:52:15,890 --> 00:52:19,870 Un cop més, això és com PHP, a diferència de C. I això 1060 00:52:19,870 --> 00:52:24,630 ens permetrà servei- que funciona molt bé amb les pàgines web. 1061 00:52:24,630 --> 00:52:28,350 Això permetrà que nosaltres manipulem el contingut i com es veu 1062 00:52:28,350 --> 00:52:30,300 i el que fa. 1063 00:52:30,300 --> 00:52:32,330 >> Anem a veure una mica d'Ajax. 1064 00:52:32,330 --> 00:52:36,140 Ens permet comunicar-nos de manera asíncrona amb diferents servidors 1065 00:52:36,140 --> 00:52:37,950 i obtenir informació. 1066 00:52:37,950 --> 00:52:42,820 I això és el que realment separa JavaScript des de PHP i C 1067 00:52:42,820 --> 00:52:45,590 és que és del costat del client. 1068 00:52:45,590 --> 00:52:49,860 Tant PHP i C són normalment del costat del servidor. 1069 00:52:49,860 --> 00:52:51,960 >> En la seva major part i gairebé íntegrament el que 1070 00:52:51,960 --> 00:52:53,900 que hem vist, almenys en aquesta classe, JavaScript 1071 00:52:53,900 --> 00:52:57,040 actua sobre el costat del client, el que significa que el navegador és en realitat 1072 00:52:57,040 --> 00:52:58,597 responsable d'executar. 1073 00:52:58,597 --> 00:53:01,180 I això vol dir que no ho fem necessitat d'interactuar amb el servidor. 1074 00:53:01,180 --> 00:53:04,380 Pel que significa que pot ser molt més ràpid perquè és en realitat només és Chrome, 1075 00:53:04,380 --> 00:53:10,420 és Safari, és Firefox, el que utilitzar realment el funcionament del seu JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> AUDIÈNCIA: Què significa asíncrona? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH Blumberg: Ah, el Què significa asíncrona? 1078 00:53:13,620 --> 00:53:14,250 Molt bona pregunta. 1079 00:53:14,250 --> 00:53:17,890 Asincrónicamente designa totes així, el contingut en què 1080 00:53:17,890 --> 00:53:22,140 utilitzem és, OK, ens estan creant una pàgina web 1081 00:53:22,140 --> 00:53:23,860 i hem d'aconseguir una mica d'informació. 1082 00:53:23,860 --> 00:53:28,250 Així que amb l'exemple de mashup, alguna informació que pot ser que desitgem 1083 00:53:28,250 --> 00:53:30,580 és títols dels articles. 1084 00:53:30,580 --> 00:53:33,330 Ara, could-- un lloc és fer-ho de forma sincrònica 1085 00:53:33,330 --> 00:53:37,940 i això significa let de parar, anar a buscar l'article, 1086 00:53:37,940 --> 00:53:41,275 aconseguir l'article de tornada, i després render, però això seria molt lent. 1087 00:53:41,275 --> 00:53:44,150 Això seria una mala experiència d'usuari perquè vostè acaba d'estar assegut 1088 00:53:44,150 --> 00:53:46,630 aquí esperant per alguna cosa que respondre. 1089 00:53:46,630 --> 00:53:50,020 >> De manera asíncrona que significa anem seguir anant sobre el nostre negoci, 1090 00:53:50,020 --> 00:53:52,529 la prestació a la pàgina, i li enviarem una petició de 1091 00:53:52,529 --> 00:53:54,570 Això és una cosa que va a succeir en el fons. 1092 00:53:54,570 --> 00:53:57,610 Crec que utilitzem l'exemple de conferència de trucar a Rob i dient: 1093 00:53:57,610 --> 00:53:59,980 Hey, pots veure això per a mi i tornar a mi, 1094 00:53:59,980 --> 00:54:02,870 en lloc de només em espera al telèfon. 1095 00:54:02,870 --> 00:54:07,020 Així de forma asíncrona significa que succeeix en el fons de distància de nosaltres 1096 00:54:07,020 --> 00:54:08,676 en paral · lel. 1097 00:54:08,676 --> 00:54:10,400 >> Molt bona pregunta. 1098 00:54:10,400 --> 00:54:11,830 Alguna cosa més? 1099 00:54:11,830 --> 00:54:12,330 Gran. 1100 00:54:12,330 --> 00:54:15,020 Anem a saltar molt més en peticions asíncrones amb Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> AUDIÈNCIA: El JavaScript-- ¿d'on ve caure amb el model-vista-controlador? 1102 00:54:18,287 --> 00:54:19,620 HANNAH Blumberg: Molt bona pregunta. 1103 00:54:19,620 --> 00:54:23,320 D'on ve la tardor JavaScript amb el model-vista-controlador? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Suposo que pot fall-- pel que no solen 1106 00:54:28,350 --> 00:54:31,340 agradaria aixafar en què paradigma, però suposo que jo diria, 1107 00:54:31,340 --> 00:54:34,280 OK, així JavaScript en realitat va a permetre 1108 00:54:34,280 --> 00:54:37,587 nosaltres per recopilar dades, interpretar les dades, en realitat fer 1109 00:54:37,587 --> 00:54:38,920 coses significatives amb les dades. 1110 00:54:38,920 --> 00:54:41,100 D'aquesta manera, és molt similar al de control. 1111 00:54:41,100 --> 00:54:43,900 >> Però també ens va a permetre mostrar coses i coses d'impressió. 1112 00:54:43,900 --> 00:54:47,021 D'aquesta manera, és molt similar a la vista. 1113 00:54:47,021 --> 00:54:47,520 Sí. 1114 00:54:47,520 --> 00:54:51,710 Així que és una cosa així com PHP en on pot espècie de ser alhora. 1115 00:54:51,710 --> 00:54:53,330 Bona pregunta. 1116 00:54:53,330 --> 00:54:55,209 Alguna cosa més? 1117 00:54:55,209 --> 00:54:56,000 Molt bé, impressionant. 1118 00:54:56,000 --> 00:54:57,120 La dreta mòbil endavant. 1119 00:54:57,120 --> 00:54:59,110 >> Així que anem a veure un exemple de com podem utilitzar 1120 00:54:59,110 --> 00:55:02,250 JavaScript en un dels nostres programes web. 1121 00:55:02,250 --> 00:55:05,680 Així que vaig a considerar aquesta index.html amb un munt d'HTML. 1122 00:55:05,680 --> 00:55:08,800 I ho vull centrar-se en és aquesta etiqueta script. 1123 00:55:08,800 --> 00:55:13,280 I això ho diu, està bé, vull córrer alguns JavaScript i aquí és on viu. 1124 00:55:13,280 --> 00:55:15,400 Viu en hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> I molt semblant a CSS, podríem posar JavaScript al HTML. 1126 00:55:21,120 --> 00:55:24,000 Per què podríem voler separar a terme? 1127 00:55:24,000 --> 00:55:24,500 Sí. 1128 00:55:24,500 --> 00:55:25,486 >> AUDIÈNCIA: més fàcil tornar a escriure? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH Blumberg: Sí. 1130 00:55:26,402 --> 00:55:28,450 És més fàcil d'utilitzar a través de diferents pàgines web. 1131 00:55:28,450 --> 00:55:29,980 Manté les coses més net. 1132 00:55:29,980 --> 00:55:32,090 És només una bona pràctica. 1133 00:55:32,090 --> 00:55:32,590 Impressionant. 1134 00:55:32,590 --> 00:55:33,930 Bona resposta. 1135 00:55:33,930 --> 00:55:36,690 Així que bo, així que això va per ser el nostre index.html. 1136 00:55:36,690 --> 00:55:39,430 I llavors aquí és la nostra diminut arxiu JavaScript. 1137 00:55:39,430 --> 00:55:42,410 >> I tot el que diu és alerta Hola, món. 1138 00:55:42,410 --> 00:55:46,040 Així que el que succeeix és quan aquesta pàgina renders-- 1139 00:55:46,040 --> 00:55:49,680 així que si vas a qualsevol lloc web aquest és-- tot el que succeirà 1140 00:55:49,680 --> 00:55:53,330 es dirà, OK, estic va a executar el codi JavaScript. 1141 00:55:53,330 --> 00:55:56,370 I el codi JavaScript només diu alerta Hola, món. 1142 00:55:56,370 --> 00:55:59,090 Així que vaig a aconseguir aquest petit i agradable emergent. 1143 00:55:59,090 --> 00:56:00,360 >> Fresc? 1144 00:56:00,360 --> 00:56:04,746 Això és una cosa així com el nostre primer JavaScript programa, la nostra Hola, món. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Vegem una mica més sobre el que la sintaxi de JavaScript sembla. 1147 00:56:12,190 --> 00:56:16,330 I concretament, anem a comparar a C i PHP, el que hem vist abans. 1148 00:56:16,330 --> 00:56:20,610 >> En JavaScript, tindrem var, el nom de la variable, i després 1149 00:56:20,610 --> 00:56:21,690 el seu valor real. 1150 00:56:21,690 --> 00:56:26,170 I no especifiquem un tipus, simplement com en PHP, però molt al contrari que en C. 1151 00:56:26,170 --> 00:56:28,850 Així, per exemple, si volíem per emmagatzemar el valor 50, 1152 00:56:28,850 --> 00:56:32,490 en C, hauríem de dir, escolta, C, vull un nombre enter, 1153 00:56:32,490 --> 00:56:35,076 Vaig a dir- I, i el seu valor és 50. 1154 00:56:35,076 --> 00:56:36,450 En PHP, és una mica més fàcil. 1155 00:56:36,450 --> 00:56:41,880 Nosaltres diem, escolta, vull una variable crida i i el seu valor és 50. 1156 00:56:41,880 --> 00:56:45,890 Molt similar, en JavaScript, que dic hey, jo vull una variable anomenada i, 1157 00:56:45,890 --> 00:56:47,080 el seu valor és 50. 1158 00:56:47,080 --> 00:56:52,140 Cada vegada que ús posterior I, jo no necessito escriure var. 1159 00:56:52,140 --> 00:56:53,810 És només que a partir d'aquest moment. 1160 00:56:53,810 --> 00:56:58,660 De la mateixa manera, en C, on una vegada que diem int i, només ha d'utilitzar i. 1161 00:56:58,660 --> 00:57:00,340 Fresc? 1162 00:57:00,340 --> 00:57:01,800 Tot bé. 1163 00:57:01,800 --> 00:57:03,710 >> Passant als bucles, afortunadament, aquests gairebé 1164 00:57:03,710 --> 00:57:06,720 miro exactly-- Crec que són exactament el mateix que el 1165 00:57:06,720 --> 00:57:09,799 bucles van a semblar en una mena C, on el bucle for 1166 00:57:09,799 --> 00:57:11,840 va tenir de tres parts-- 1 inicialització, 1167 00:57:11,840 --> 00:57:13,640 una condició, i una actualització. 1168 00:57:13,640 --> 00:57:15,340 Un bucle while, es veu exactament el mateix. 1169 00:57:15,340 --> 00:57:16,390 Ens adonem una condició. 1170 00:57:16,390 --> 00:57:18,264 >> I una do while, de nou, exactament de la mateixa. 1171 00:57:18,264 --> 00:57:20,190 Li donem una condició. 1172 00:57:20,190 --> 00:57:24,510 Diguem que volia repetir over-- Jo volia fer alguna cosa cinc vegades. 1173 00:57:24,510 --> 00:57:27,840 En C, podríem escriure per init i és igual a 0. 1174 00:57:27,840 --> 00:57:30,480 i és menor que 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 L'única diferència, en JavaScript, en comptes de dir int i és igual a 0, 1176 00:57:34,240 --> 00:57:36,820 diem var i és igual a 0. 1177 00:57:36,820 --> 00:57:38,370 Bonic. 1178 00:57:38,370 --> 00:57:41,320 Aquesta és l'única diferència. 1179 00:57:41,320 --> 00:57:43,200 Teniu alguna pregunta sobre res d'això? 1180 00:57:43,200 --> 00:57:44,160 Sí. 1181 00:57:44,160 --> 00:57:48,480 >> AUDIÈNCIA: Llavors en PHP, que és el mateix cosa, a excepció sinó com una variable? 1182 00:57:48,480 --> 00:57:49,564 O era un exemple var? 1183 00:57:49,564 --> 00:57:50,480 HANNAH Blumberg: Sí. 1184 00:57:50,480 --> 00:57:52,310 Així que en PHP, que va ser un signe de dòlar. 1185 00:57:52,310 --> 00:57:59,450 Així que va a $ i és igual 0, $ i és menor que 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Molt bona pregunta. 1187 00:58:02,490 --> 00:58:04,570 >> Ara anem a parlar de declaracions de funcions. 1188 00:58:04,570 --> 00:58:07,010 En C, quan declarem 1 funció, que li vam donar un nom 1189 00:58:07,010 --> 00:58:08,490 i li vam donar alguns paràmetres. 1190 00:58:08,490 --> 00:58:10,670 I al principi, escrivim el tipus. 1191 00:58:10,670 --> 00:58:12,440 En JavaScript, tot el que has de fer és escriure 1192 00:58:12,440 --> 00:58:15,080 la funció de paraula clau que diu, hey, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Estic a punt de definir una funció. 1194 00:58:16,570 --> 00:58:18,520 >> En aquest cas, té nom de suma. 1195 00:58:18,520 --> 00:58:20,820 I pren dos arguments, x i y. 1196 00:58:20,820 --> 00:58:23,280 Cal notar que no ens importa sobre els tipus de xi y. 1197 00:58:23,280 --> 00:58:26,280 I igual que C, tenim aquest retorn de paraules clau, 1198 00:58:26,280 --> 00:58:29,140 pel que podem fer alguna cosa com return x i y. 1199 00:58:29,140 --> 00:58:32,540 >> I ara, una vegada que hem escrit aquesta primera funció, es pot utilitzar en qualsevol suma. 1200 00:58:32,540 --> 00:58:34,740 I això és totalment bé. 1201 00:58:34,740 --> 00:58:37,530 Una cosa realment bo de JavaScript que és molt a diferència de C 1202 00:58:37,530 --> 00:58:40,770 és que les funcions es ser tractats com a valors. 1203 00:58:40,770 --> 00:58:43,895 Pel que podem fer alguna cosa així aquí on suposo cobreixo aquest up-- 1204 00:58:43,895 --> 00:58:46,400 Em vaig cobrir la suma var parcialment: i que acabem de dir 1205 00:58:46,400 --> 00:58:49,850 funció de xi és igual de retorn x més i. 1206 00:58:49,850 --> 00:58:52,140 >> Això és el que s'anomenaria una funció anònima. 1207 00:58:52,140 --> 00:58:53,920 És una funció sense nom. 1208 00:58:53,920 --> 00:58:56,290 Mentre aquesta funció diu suma, bla, bla, bla, 1209 00:58:56,290 --> 00:58:59,340 això seria simplement dir funció. 1210 00:58:59,340 --> 00:59:02,020 Però ara tot i que tinc aquesta funció anònima, 1211 00:59:02,020 --> 00:59:03,630 aquesta funció és en realitat un valor. 1212 00:59:03,630 --> 00:59:05,160 Podem tractar-lo com un valor. 1213 00:59:05,160 --> 00:59:10,180 >> Així que podem guardar en una variable de la mateixa manera podríem emmagatzemar 50 en una variable. 1214 00:59:10,180 --> 00:59:13,870 Així que podem dir, OK, vull una variables, es diu suma, 1215 00:59:13,870 --> 00:59:16,011 i és aquesta funció. 1216 00:59:16,011 --> 00:59:18,760 Així que aquestes dues coses són en realitat va a fer exactament el mateix, 1217 00:59:18,760 --> 00:59:21,576 però la sintaxi és una mica diferent i una espècie de nota de la diversió. 1218 00:59:21,576 --> 00:59:22,076 Sí. 1219 00:59:22,076 --> 00:59:25,548 >> AUDIÈNCIA: Pel que podria trucar a un funció que va ser anònima dient: 1220 00:59:25,548 --> 00:59:28,244 suma suports 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH Blumberg: Sí. 1222 00:59:29,160 --> 00:59:32,280 Vostè pot trucar a aquest anònim funcionen de la mateixa manera. 1223 00:59:32,280 --> 00:59:33,350 Faries suma (2, 5);. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Això seria totalment bé. 1226 00:59:38,200 --> 00:59:41,575 >> Si jo no vaig fer suma var és igual funció, si m'acaba d'eliminar 1227 00:59:41,575 --> 00:59:45,480 esto-- Sé que és a la mà, però pretenc He eliminat esto-- continuació 1228 00:59:45,480 --> 00:59:46,964 aquesta funció és una espècie de simplement desaparegut. 1229 00:59:46,964 --> 00:59:49,630 Mai es pot utilitzar de nou perquè vostè no té un nom per a ell. 1230 00:59:49,630 --> 00:59:53,497 És difícil referir-se a alguna cosa vostè no sap com cridar-ho. 1231 00:59:53,497 --> 00:59:54,080 Bona pregunta. 1232 00:59:54,080 --> 00:59:54,580 Sí. 1233 00:59:54,580 --> 00:59:59,580 >> AUDIÈNCIA: Es pot fer referència a la suma de altres llocs amb el valor de x més i? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH Blumberg: Pot vostè suma de referència en altres llocs 1235 01:00:01,940 --> 01:00:03,360 amb el valor de x més i? 1236 01:00:03,360 --> 01:00:05,130 No estic del tot segur del que vols dir. 1237 01:00:05,130 --> 01:00:10,582 >> AUDIÈNCIA: Així que el teu passat semi-anònim funció és la suma és igual a aquest 1238 01:00:10,582 --> 01:00:14,452 funció anònima, per la qual cosa suma és ara una variable que can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH Blumberg: Correcte. 1240 01:00:15,410 --> 01:00:18,980 Així suma és la variable, però és actually-- 1241 01:00:18,980 --> 01:00:23,770 així suma és una variable el valor és la funció. 1242 01:00:23,770 --> 01:00:27,030 Així que és una funció, que és una mena de una cosa estranya per embolicar el seu cap al voltant 1243 01:00:27,030 --> 01:00:29,880 des que hem estat jugant amb C i no es pot fer això en C. 1244 01:00:29,880 --> 01:00:32,679 Però ara podem trucar a sumar la mateixa manera que podríem anomenar suma aquí. 1245 01:00:32,679 --> 01:00:33,220 AUDIÈNCIA: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH Blumberg: Sí. 1247 01:00:33,970 --> 01:00:34,553 Bona pregunta. 1248 01:00:34,553 --> 01:00:35,438 Sí. 1249 01:00:35,438 --> 01:00:39,862 >> AUDIÈNCIA: ¿Així que no fem servir el prototips en PHP o JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH Blumberg: No, no cal utilitzar prototips, 1251 01:00:42,070 --> 01:00:43,880 especialment en JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Així que una cosa mala pràctica que sóc dirà que vostè no ha de fer 1253 01:00:49,380 --> 01:00:52,620 és que vostè no ha d'escriure var i = 50. 1254 01:00:52,620 --> 01:00:54,840 Es podia començar a fer i = 50. 1255 01:00:54,840 --> 01:00:57,490 I només faria que una variable global. 1256 01:00:57,490 --> 01:01:00,550 >> És molt mala pràctica Mai dic explícitament var i, 1257 01:01:00,550 --> 01:01:01,800 però és una cosa que pot fer. 1258 01:01:01,800 --> 01:01:03,591 L'intèrpret no és va a cridar a vostè. 1259 01:01:03,591 --> 01:01:05,920 Javascript és bastant similar, vostè pot fer el que vulgui. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Oh, ho sento. 1262 01:01:09,800 --> 01:01:10,300 Hi ha dues. 1263 01:01:10,300 --> 01:01:12,150 En els pantalons de color taronja. 1264 01:01:12,150 --> 01:01:13,190 Endavant. 1265 01:01:13,190 --> 01:01:14,390 >> AUDIÈNCIA: No, tu primer. 1266 01:01:14,390 --> 01:01:16,765 >> AUDIÈNCIA: No, jo estava dient Jo no tenia la meva mà. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 D'ACORD. 1269 01:01:20,748 --> 01:01:26,604 Així que si anés a cridar aquesta primera vegada, ara resumir, 1270 01:01:26,604 --> 01:01:29,864 en diem la mateixa manera, X, i, com cada vegada? 1271 01:01:29,864 --> 01:01:30,780 HANNAH Blumberg: Sí. 1272 01:01:30,780 --> 01:01:32,572 Així que aquests dos essencialment fer el mateix. 1273 01:01:32,572 --> 01:01:35,113 AUDIÈNCIA: ¿I quina és l'avantatge de la utilització d'un o altre? 1274 01:01:35,113 --> 01:01:37,500 HANNAH Blumberg: Cap avantatge de la utilització d'un o l'altre. 1275 01:01:37,500 --> 01:01:40,080 Només volia mostrar de dos diferents peces de la sintaxi. 1276 01:01:40,080 --> 01:01:42,770 Moltes vegades en l'anonimat funcions tenen un propòsit 1277 01:01:42,770 --> 01:01:48,220 és si l'argument a un altre funció ha de ser una funció. 1278 01:01:48,220 --> 01:01:50,600 I veurem que, en només un segon amb l'Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Així que si això no té cap sentit, deseu-lo a la part posterior del cap. 1280 01:01:53,577 --> 01:01:55,660 Aquí és on un anònim funció podria ser útil 1281 01:01:55,660 --> 01:01:58,284 perquè no és realment val la pena donant-li un nom ja que estem just 1282 01:01:58,284 --> 01:01:59,443 utilitzarà una vegada. 1283 01:01:59,443 --> 01:02:00,370 Sí. 1284 01:02:00,370 --> 01:02:03,635 >> AUDIÈNCIA: Si x i i canvi posterior en endavant, es resumeixen canviar també? 1285 01:02:03,635 --> 01:02:06,510 HANNAH Blumberg: Si x i el canvi i més endavant, es resumeixen canviar també? 1286 01:02:06,510 --> 01:02:08,840 Així que això és en realitat jo pensar en alguna cosa que és, 1287 01:02:08,840 --> 01:02:12,260 de nou, només se sent molt diferent de C. Això no és un valor. 1288 01:02:12,260 --> 01:02:13,620 No és 5. 1289 01:02:13,620 --> 01:02:15,550 És només la pròpia funció. 1290 01:02:15,550 --> 01:02:19,110 Així que tan aviat com vostè li dóna els paràmetres, llavors vostè realment va a calcular un valor. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: I llavors vostè pot cridar a la funció 1292 01:02:21,193 --> 01:02:23,272 i el fan servir per aconseguir una mica de valor. 1293 01:02:23,272 --> 01:02:24,230 HANNAH Blumberg: Correcte. 1294 01:02:24,230 --> 01:02:25,250 Exactament. 1295 01:02:25,250 --> 01:02:25,863 Sí. 1296 01:02:25,863 --> 01:02:27,946 >> AUDIÈNCIA: Llavors, si només emmagatzemar-lo en la variable, 1297 01:02:27,946 --> 01:02:31,430 com var x és igual a quantitat de dos values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH Blumberg: Sí. 1299 01:02:32,420 --> 01:02:35,320 Així que vostè podria fer var sum és igual a la suma de dos valors. 1300 01:02:35,320 --> 01:02:37,670 Sí. 1301 01:02:37,670 --> 01:02:38,680 Alguna altra pregunta? 1302 01:02:38,680 --> 01:02:39,642 Sí. 1303 01:02:39,642 --> 01:02:42,047 >> AUDIÈNCIA: Però faria que confondre suma i la suma? 1304 01:02:42,047 --> 01:02:45,062 Igual que si vostè crida a la seva suma variable Com diria vostè a la suma funció? 1305 01:02:45,062 --> 01:02:45,895 HANNAH Blumberg: Mm. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Si vostè va fer alguna cosa de la mateixa manera que, la suma és igual a la suma de 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> AUDIÈNCIA: Sí. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH Blumberg: Crec que seria sobreescriure el valor de la suma. 1310 01:02:56,465 --> 01:02:59,290 Així que una altra interessant El que passa JavaScript 1311 01:02:59,290 --> 01:03:02,950 és que una sola variable pot prendre en un munt de diferents tipus. 1312 01:03:02,950 --> 01:03:03,790 Les males pràctiques. 1313 01:03:03,790 --> 01:03:06,280 Vostè no ha de fer alguna cosa com el que acaba de dir. 1314 01:03:06,280 --> 01:03:10,240 >> Però en C, si i és igual a un nombre enter, 1315 01:03:10,240 --> 01:03:13,570 sabem que mai és va a convertir-se en una cadena. 1316 01:03:13,570 --> 01:03:15,670 Aquest no és el cas en JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Sí, bona pregunta. 1318 01:03:17,770 --> 01:03:20,151 Alguna cosa més? 1319 01:03:20,151 --> 01:03:20,650 Tot bé. 1320 01:03:20,650 --> 01:03:21,850 Fer tot just a temps. 1321 01:03:21,850 --> 01:03:23,050 Mantenir en marxa. 1322 01:03:23,050 --> 01:03:25,200 Tot bé. 1323 01:03:25,200 --> 01:03:27,780 >> Si ens fixem en una matriu en JavaScript, aquí està 1324 01:03:27,780 --> 01:03:30,250 un exemple ràpid d'una matriu de cadenes. 1325 01:03:30,250 --> 01:03:31,967 I matrius poden créixer dinàmicament. 1326 01:03:31,967 --> 01:03:33,675 No tenen una grandària fixa de la mateixa manera 1327 01:03:33,675 --> 01:03:37,990 que ho fan en C. Podem accedir al elements amb només els claudàtors. 1328 01:03:37,990 --> 01:03:41,720 >> Això es veu molt semblant a PHP i molt com C, en el qual podem dir que, en aquest cas, 1329 01:03:41,720 --> 01:03:48,360 si volia la paraula JavaScript, ho faria no arr claudàtors amb un 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 I llavors, si vostè recorda en C quan volia aconseguir la longitud d'una matriu, 1332 01:03:55,390 --> 01:03:56,820 que era realment molest. 1333 01:03:56,820 --> 01:03:58,460 Però en JavaScript, super fàcil. 1334 01:03:58,460 --> 01:03:59,910 Tot el que fem, .length. 1335 01:03:59,910 --> 01:04:01,120 Li dóna les longituds. 1336 01:04:01,120 --> 01:04:01,892 Això és. 1337 01:04:01,892 --> 01:04:03,140 >> AUDIÈNCIA: Això és simple. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH Blumberg: Sí, fa la seva vida molt més fàcil. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, no objeto-- allà. 1341 01:04:11,560 --> 01:04:15,480 Objectes en JavaScript sensació molt com estructures en C 1342 01:04:15,480 --> 01:04:18,280 i matrius associatives en PHP. 1343 01:04:18,280 --> 01:04:20,270 Així que el que hem vist una molt és JSON, que 1344 01:04:20,270 --> 01:04:23,150 és sinònim de JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 I és bàsicament una manera d'estructurar les nostres dades. 1346 01:04:25,550 --> 01:04:27,880 >> Així que anem a veure un exemple, probablement el més fàcil. 1347 01:04:27,880 --> 01:04:32,540 Així que aquí està un exemple d'un objecte que emmagatzema la classe, CS50. 1348 01:04:32,540 --> 01:04:37,790 I quan dic classe, em refereixo per descomptat, No com-- sí, el curs, CS50. 1349 01:04:37,790 --> 01:04:40,730 I veuràs que tot en l'objecte 1350 01:04:40,730 --> 01:04:43,526 va ser continguda entre claus. 1351 01:04:43,526 --> 01:04:48,260 >> I vam començar a associar noms de camp o les tecles amb els diferents valors. 1352 01:04:48,260 --> 01:04:52,920 Així que vostè pot començar a veure com aquest tipus de se sent com una matriu associativa en PHP. 1353 01:04:52,920 --> 01:04:57,450 Així que anem a associar el camp o el nom de clau, per descomptat, amb la cadena, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Tindrem un instructor. 1356 01:04:59,940 --> 01:05:00,940 Tindrem TFS. 1357 01:05:00,940 --> 01:05:05,240 Tindrem el nombre de conjunts de processadors i anem haver gravat. 1358 01:05:05,240 --> 01:05:10,720 I una cosa fresca a destacar és tot aquestes coses tenen diferents tipus, 1359 01:05:10,720 --> 01:05:12,020 i això és totalment bé. 1360 01:05:12,020 --> 01:05:15,330 >> Està bé per a un objecte, de fet, que probablement l'esperat per a un objecte 1361 01:05:15,330 --> 01:05:19,620 tenir una combinació de cadenes i números i booleans i arrays 1362 01:05:19,620 --> 01:05:23,420 i tot el que podria vol tenir dins del seu objecte. 1363 01:05:23,420 --> 01:05:28,570 I tingui en compte que aquests van a ser els noms o les claus, i llavors només 1364 01:05:28,570 --> 01:05:30,300 configurar igual amb una mica de còlon. 1365 01:05:30,300 --> 01:05:32,015 >> AUDIÈNCIA: Què significa exactament JSON? 1366 01:05:32,015 --> 01:05:33,890 HANNAH Blumberg: Què exactament què significa JSON? 1367 01:05:33,890 --> 01:05:36,470 JSON simplement vol dir JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 És només una manera de formatar. 1369 01:05:38,430 --> 01:05:40,040 Sí. 1370 01:05:40,040 --> 01:05:41,800 És una manera de formatar les nostres dades. 1371 01:05:41,800 --> 01:05:43,620 >> En C, és estructures. 1372 01:05:43,620 --> 01:05:45,800 En PHP, és matrius associatives. 1373 01:05:45,800 --> 01:05:47,120 En JavaScript, tenim objectes. 1374 01:05:47,120 --> 01:05:48,969 >> AUDIÈNCIA: Llavors CS50 és un objecte? 1375 01:05:48,969 --> 01:05:51,010 HANNAH Blumberg: CS50 és l'objecte en aquest cas. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Ara, com fer que realment l'accés aquests camps o canviar aquests camps. 1378 01:05:57,880 --> 01:06:03,920 Per exemple, suposem que vam decidir que volies un menys pset aquest semestre. 1379 01:06:03,920 --> 01:06:06,300 En lloc de nou, estem només va a tenir vuit. 1380 01:06:06,300 --> 01:06:08,240 Com podem canviar això? 1381 01:06:08,240 --> 01:06:09,436 >> Oh, de manera equivocada. 1382 01:06:09,436 --> 01:06:11,060 Hi ha dues maneres en què podem fer això. 1383 01:06:11,060 --> 01:06:13,490 El número u és amb el punt notació i número dos 1384 01:06:13,490 --> 01:06:15,750 és amb la notació de claudàtors. 1385 01:06:15,750 --> 01:06:19,720 Així, per exemple, si volgut canviar o accés 1386 01:06:19,720 --> 01:06:26,820 el camp de conjunts de processadors al nostre objecte CS50, el que jo faria és CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 pel que el nom de l'objecte dot el nom del camp o la tecla. 1388 01:06:30,770 --> 01:06:37,120 >> Molt similar, és exactament equivalent a fer CS50, i després 1389 01:06:37,120 --> 01:06:42,050 entre claudàtors, conjunts de processadors. 1390 01:06:42,050 --> 01:06:42,837 Fresc? 1391 01:06:42,837 --> 01:06:44,298 Sí. 1392 01:06:44,298 --> 01:06:47,707 >> AUDIÈNCIA: Així és JSON tècnicament JavaScript, 1393 01:06:47,707 --> 01:06:51,814 tot i que en els conjunts de processadors que separar terme [inaudible]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH Blumberg: És clar. 1395 01:06:52,730 --> 01:06:56,290 Llavors la pregunta és, són JavaScript i JSON equivalent? 1396 01:06:56,290 --> 01:07:00,750 Així JSON és notació, bàsicament, la forma en què escrivim 1397 01:07:00,750 --> 01:07:02,700 un objecte de JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Així que no són exactament el mateix. 1399 01:07:05,190 --> 01:07:08,950 >> Jo diria JavaScript, hi ha són objectes en JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON pren aquests objectes i els imprimeix i els mostra 1401 01:07:12,590 --> 01:07:15,160 o els emmagatzema d'una manera agradable. 1402 01:07:15,160 --> 01:07:18,110 Així que JSON no és una programació llenguatge de la forma en què JavaScript està. 1403 01:07:18,110 --> 01:07:20,900 És només la notació per els nostres objectes en JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Sí. 1405 01:07:21,400 --> 01:07:24,144 >> AUDIÈNCIA: Llavors, què [Inaudible] completar? 1406 01:07:24,144 --> 01:07:25,060 HANNAH Blumberg: És clar. 1407 01:07:25,060 --> 01:07:27,727 Així que això en realitat no fa res. 1408 01:07:27,727 --> 01:07:28,935 Això és només una forma d'accedir. 1409 01:07:28,935 --> 01:07:31,393 Així que diguem que volíem canviar el nombre de conjunts de problemes 1410 01:07:31,393 --> 01:07:32,450 9-8. 1411 01:07:32,450 --> 01:07:34,383 El que fem és fer alguna cosa com CS50.psets = 8;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Sí, bona pregunta. 1414 01:07:39,400 --> 01:07:40,733 Això és només per mostrar que la sintaxi. 1415 01:07:40,733 --> 01:07:43,620 En realitat no fer res útil. 1416 01:07:43,620 --> 01:07:46,085 Qualsevol pregunta? 1417 01:07:46,085 --> 01:07:48,210 La dreta mòbil endavant. 1418 01:07:48,210 --> 01:07:51,960 >> Així que anem a veure un exemple ràpid de com Treballa JavaScript perquè et vaig dir que 1419 01:07:51,960 --> 01:07:55,170 fa totes aquestes coses genials i ens permet modificar pàgines web. 1420 01:07:55,170 --> 01:07:56,970 Anem a veure realment en acció. 1421 01:07:56,970 --> 01:07:59,850 Així que pren, per exemple, aquest arxiu HTML. 1422 01:07:59,850 --> 01:08:04,350 >> I el que vull li permet centrar-se en és aquesta etiqueta particular, que és un botó, 1423 01:08:04,350 --> 01:08:06,182 amb search_button Identificació. 1424 01:08:06,182 --> 01:08:08,670 És només a la pàgina. 1425 01:08:08,670 --> 01:08:10,690 Així que ara anem a veure què en realitat podem fer. 1426 01:08:10,690 --> 01:08:12,560 >> Bé, suposem que quan fer clic en aquest botó, 1427 01:08:12,560 --> 01:08:16,010 volem fer una alert-- ha fet clic al botó. 1428 01:08:16,010 --> 01:08:17,840 Anem a veure com podem fer això. 1429 01:08:17,840 --> 01:08:23,869 Així window.onload-- això no és una cosa que has vist a classe, per tant, 1430 01:08:23,869 --> 01:08:26,180 no es necessita saber per a la prova. 1431 01:08:26,180 --> 01:08:33,660 Però això bàsicament diu, OK, anomenada aquesta funció quan es carrega la finestra. 1432 01:08:33,660 --> 01:08:35,080 >> Així que això és només una mica de codi de configuració. 1433 01:08:35,080 --> 01:08:36,390 No et preocupis tant per això. 1434 01:08:36,390 --> 01:08:39,170 El que vull que permet centrar-se en és aquí. 1435 01:08:39,170 --> 01:08:44,020 Diem searchButton var és igual document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Així com vostè pot imaginar, el que això fa és que diu, 1437 01:08:46,450 --> 01:08:50,920 OK, anar a buscar l'element amb search_button ID. 1438 01:08:50,920 --> 01:08:52,790 I ara hem de element real i estic 1439 01:08:52,790 --> 01:08:56,279 va a emmagatzemar en un searchButton variable. 1440 01:08:56,279 --> 01:09:00,651 I ara podem realment utilitzar aquest element i canviar-lo, o accedir als seus valors, 1441 01:09:00,651 --> 01:09:01,359 coses així. 1442 01:09:01,359 --> 01:09:04,649 De fet, podem començar a comprometre amb la pàgina web. 1443 01:09:04,649 --> 01:09:10,330 >> Així que aquí vaig a dir, OK, ara que tinc aquest botó, quan es fa clic, 1444 01:09:10,330 --> 01:09:12,859 cridar a aquesta funció anònima. 1445 01:09:12,859 --> 01:09:16,811 Així que aquí és on l'anonimat funcions es tornen útils. 1446 01:09:16,811 --> 01:09:18,060 I què fa la funció? 1447 01:09:18,060 --> 01:09:20,529 Bé, simplement crida a això funció d'alerta i diu, 1448 01:09:20,529 --> 01:09:22,910 ha fet clic al botó Cercar. 1449 01:09:22,910 --> 01:09:29,670 >> Llavors, què passarà si vaig a on vulgui aquest codi HTML viu i feu clic al botó, 1450 01:09:29,670 --> 01:09:33,729 Vaig a buscar una mica d'alerta de luxe que diu que ha fet clic al botó. 1451 01:09:33,729 --> 01:09:40,710 Així que les coses que se centren en aquí-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 aconsegueix una HTML particular, element amb l'ID donat. 1453 01:09:44,960 --> 01:09:48,529 I ara podem establir el que hauria de succeir quan 1454 01:09:48,529 --> 01:09:50,702 aquest element en particular es fa clic. 1455 01:09:50,702 --> 01:09:52,670 >> AUDIÈNCIA: Hem de posar tot això en? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH Blumberg: Ho sento? 1457 01:09:53,162 --> 01:09:55,130 >> AUDIÈNCIA: Hem de codificar físicament tot això? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH Blumberg: ¿Hem de codificar físicament tot això? 1459 01:09:56,340 --> 01:09:56,839 Sí. 1460 01:09:56,839 --> 01:09:58,120 ¿No és això una mica molest? 1461 01:09:58,120 --> 01:10:00,032 Es tracta d'una gran quantitat de codi. 1462 01:10:00,032 --> 01:10:01,574 >> AUDIÈNCIA: Vostè podria importar alguna cosa. 1463 01:10:01,574 --> 01:10:02,532 HANNAH Blumberg: Correcte. 1464 01:10:02,532 --> 01:10:03,610 Podríem fer servir alguna cosa. 1465 01:10:03,610 --> 01:10:08,140 I en particular: oh, és em diu que he de ensenyar secció. 1466 01:10:08,140 --> 01:10:11,061 En particular, anem a utilitzar la biblioteca jQuery, 1467 01:10:11,061 --> 01:10:13,060 perquè això era realment llarg i molt molest 1468 01:10:13,060 --> 01:10:16,860 i vull ser capaç de simplificar- i fer-lo més curt i més fàcil d'escriure. 1469 01:10:16,860 --> 01:10:19,810 >> Així que jQuery és una biblioteca JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Així que JavaScript està la programació idioma; jQuery és una biblioteca. 1471 01:10:24,930 --> 01:10:27,190 I fa un munt de coses més fàcils. 1472 01:10:27,190 --> 01:10:33,230 Fa que canviar i va a través d' un document HTML molt més fàcil. 1473 01:10:33,230 --> 01:10:35,030 >> Fa que els esdeveniments de manipulació més fàcil. 1474 01:10:35,030 --> 01:10:37,580 Això fa més fàcil l'animació i fa més fàcil l'Ajax. 1475 01:10:37,580 --> 01:10:40,140 Així que anem a saltar en dues de aquestes coses ara mateix. 1476 01:10:40,140 --> 01:10:40,900 Disculpa'm. 1477 01:10:40,900 --> 01:10:42,620 Abans de fer-ho, algunes sintaxi bàsica. 1478 01:10:42,620 --> 01:10:46,870 >> Això és el que més crida a la biblioteca jQuery sembla. 1479 01:10:46,870 --> 01:10:50,520 Utilitzem aquest dòlar sign-- cap senyal de connexió a PHP, 1480 01:10:50,520 --> 01:10:56,030 inconvenient-- simplement el nom d'una selector, punt, i després una acció. 1481 01:10:56,030 --> 01:10:58,860 Així que anem a veure una mica de exemples concrets d'això. 1482 01:10:58,860 --> 01:11:02,980 >> Així que aquesta realitat és la mateixa codi de la diapositiva esdeveniment. 1483 01:11:02,980 --> 01:11:08,740 Així que aquesta cosa llarga, lleig es converteix en aquesta molt millor, una mica més petit. 1484 01:11:08,740 --> 01:11:10,370 Així que anem a tractar de descompondre'l. 1485 01:11:10,370 --> 01:11:17,090 Això diu, OK, jQuery-- aquest dòlar sign-- jQuery, trobar-me la finestra. 1486 01:11:17,090 --> 01:11:18,480 Així que aquest és el de selecció. 1487 01:11:18,480 --> 01:11:21,800 >> Quan es carrega, truqueu a aquesta funció. 1488 01:11:21,800 --> 01:11:23,880 Així que això és tot per dins. 1489 01:11:23,880 --> 01:11:24,380 D'ACORD. 1490 01:11:24,380 --> 01:11:25,740 Fins ara, tot bé? 1491 01:11:25,740 --> 01:11:26,750 Tot bé. 1492 01:11:26,750 --> 01:11:32,970 >> Ara, jQuery, me la trobi cosa amb search_button ID. 1493 01:11:32,970 --> 01:11:36,090 I el que es fa clic, cridar a aquesta funció. 1494 01:11:36,090 --> 01:11:37,900 I llavors aquesta funció de exactament de la mateixa. 1495 01:11:37,900 --> 01:11:41,052 Només fer una mica d'alerta, ha fet clic al botó Cercar. 1496 01:11:41,052 --> 01:11:42,650 >> Així que és molt agradable. 1497 01:11:42,650 --> 01:11:46,260 Realment condensa i simplifica el nostre codi. 1498 01:11:46,260 --> 01:11:49,030 Com sé que és search_button ID 1499 01:11:49,030 --> 01:11:50,960 i no com a classe search_button? 1500 01:11:50,960 --> 01:11:52,024 >> AUDIÈNCIA: Hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH Blumberg: Sí. 1502 01:11:52,940 --> 01:11:56,450 Aquest símbol de hash, és com CSS. 1503 01:11:56,450 --> 01:12:00,080 Així que recorda, amb CSS, quan volgut seleccionar alguna cosa per ID, 1504 01:12:00,080 --> 01:12:01,590 hem utilitzat el signe lliura. 1505 01:12:01,590 --> 01:12:05,400 I quan volíem per seleccionar alguna cosa per classe, utilitzem el punt. 1506 01:12:05,400 --> 01:12:06,870 Gran. 1507 01:12:06,870 --> 01:12:08,230 Té sentit? 1508 01:12:08,230 --> 01:12:11,500 Així que se suposa que jQuery acaba de fer la nostra vida més fàcil. 1509 01:12:11,500 --> 01:12:12,000 Sí. 1510 01:12:12,000 --> 01:12:15,660 >> AUDIÈNCIA: Així que estic una mica confós pel que fa per al funcionament de la funció anònima. 1511 01:12:15,660 --> 01:12:19,027 Vostè ho nomena aquest anonymouse funció, la funció? 1512 01:12:19,027 --> 01:12:20,594 Com es diu? 1513 01:12:20,594 --> 01:12:21,510 HANNAH Blumberg: És clar. 1514 01:12:21,510 --> 01:12:25,812 Així que la funció és només una paraula clau que diu: Estic a punt de definir una funció. 1515 01:12:25,812 --> 01:12:26,520 AUDIÈNCIA: Oh, OK. 1516 01:12:26,520 --> 01:12:27,353 HANNAH Blumberg: OK? 1517 01:12:27,353 --> 01:12:32,120 I després li passem com argument A-- tirem 1518 01:12:32,120 --> 01:12:37,040 aquest un-- interior per a la funció de clic. 1519 01:12:37,040 --> 01:12:39,420 Així que sí, de manera que la funció, aquesta funció anònima, 1520 01:12:39,420 --> 01:12:40,910 es converteix en un argument real. 1521 01:12:40,910 --> 01:12:43,632 Així que recordi en JavaScript, que pot tractar funcions com a valors. 1522 01:12:43,632 --> 01:12:44,340 AUDIÈNCIA: Oh, OK. 1523 01:12:44,340 --> 01:12:45,256 HANNAH Blumberg: Sí. 1524 01:12:45,256 --> 01:12:46,035 M'agrada que "oh". 1525 01:12:46,035 --> 01:12:47,490 Niça. 1526 01:12:47,490 --> 01:12:49,915 Altres preguntes? 1527 01:12:49,915 --> 01:12:50,505 Temps? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Good. 1529 01:12:51,380 --> 01:12:52,760 Bé. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH Blumberg: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Alguns jQuery útil ràpida. 1532 01:12:55,720 --> 01:12:57,559 Jo no vaig a anar a través de tots ells. 1533 01:12:57,559 --> 01:12:59,350 Aquestes diapositives seran amunt en línia una mica 1534 01:12:59,350 --> 01:13:02,040 més tard, perquè pugui comprovar que fos una mica més tard. 1535 01:13:02,040 --> 01:13:07,120 Però bàsicament, el general patró es manté en la que diem, 1536 01:13:07,120 --> 01:13:11,510 OK, bé, jQuery, aquí està la meva selector i llavors aquí és una acció. 1537 01:13:11,510 --> 01:13:15,940 I vostè pot fer coses com l'accés al valor d'un formulari, accedeix mica d'HTML, 1538 01:13:15,940 --> 01:13:19,195 control del que succeeix quan l'usuari presenta una forma, coses així. 1539 01:13:19,195 --> 01:13:20,106 Sí. 1540 01:13:20,106 --> 01:13:22,090 >> AUDIÈNCIA: Així que en el examen, necessitarem 1541 01:13:22,090 --> 01:13:25,066 saber bastant de la documentació de jQuery. 1542 01:13:25,066 --> 01:13:31,018 Així que atès que copiar / enganxar el jQuery documentació per a la nostra fulla de trucs, 1543 01:13:31,018 --> 01:13:32,506 On està el límit? 1544 01:13:32,506 --> 01:13:33,957 Com quants què necessitem saber? 1545 01:13:33,957 --> 01:13:35,290 HANNAH Blumberg: Molt bona pregunta. 1546 01:13:35,290 --> 01:13:37,765 La pregunta és essencialment atès que 1547 01:13:37,765 --> 01:13:41,330 no pot accedir a la documentació de jQuery durant la prova, quant ha de 1548 01:13:41,330 --> 01:13:41,830 saber? 1549 01:13:41,830 --> 01:13:45,540 No esperaríem que vinguis amb alguna funció aleatòria 1550 01:13:45,540 --> 01:13:47,240 que es pot esperar per Google. 1551 01:13:47,240 --> 01:13:52,930 >> Les coses que són un blanc legítim són el faria dir només una mica de la sintaxi general, 1552 01:13:52,930 --> 01:13:58,310 ser capaç de seleccionar i per ID per class-- així com CSS. 1553 01:13:58,310 --> 01:14:01,876 I llavors les funcions reals si mateixos, que el més probable és que et diuen. 1554 01:14:01,876 --> 01:14:02,376 Sí. 1555 01:14:02,376 --> 01:14:05,591 >> AUDIÈNCIA: Llavors, quan es selecciona per classe significaria punt. 1556 01:14:05,591 --> 01:14:06,840 HANNAH Blumberg: Sí, exactament. 1557 01:14:06,840 --> 01:14:07,340 Bé. 1558 01:14:07,340 --> 01:14:10,461 Quan es selecciona per classe, que va que es esquitxen en lloc del signe lliura. 1559 01:14:10,461 --> 01:14:10,960 Sí. 1560 01:14:10,960 --> 01:14:12,710 >> AUDIÈNCIA: Vols que repassar la diferència 1561 01:14:12,710 --> 01:14:14,310 entre la selecció per ID i per classe? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH Blumberg: És clar. 1563 01:14:14,560 --> 01:14:17,510 La diferència entre seleccionar Identificació i seleccionant per classe. 1564 01:14:17,510 --> 01:14:20,685 Així com va dir Maria a poc abans, hi ha 1565 01:14:20,685 --> 01:14:26,280 Només hi pot haver un element HTML amb una identificació donada, mentre que la classe, 1566 01:14:26,280 --> 01:14:29,740 ens permet agrupar un munt de diferents elements junts, 1567 01:14:29,740 --> 01:14:34,300 així que les coses que es relacionen, però no exactament el mateix. 1568 01:14:34,300 --> 01:14:35,685 Això respon a la pregunta? 1569 01:14:35,685 --> 01:14:36,200 Impressionant. 1570 01:14:36,200 --> 01:14:37,194 Sí. 1571 01:14:37,194 --> 01:14:40,680 >> AUDIÈNCIA: Què passa si vostè té múltiples coses que estan en la mateixa classe? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH Blumberg: Què passa si té diverses coses que 1573 01:14:42,150 --> 01:14:43,280 són la mateixa classe? 1574 01:14:43,280 --> 01:14:45,829 Així, per exemple, si estem simplement usant JavaScript pur, 1575 01:14:45,829 --> 01:14:48,120 ens agradaria fer alguna cosa com document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 I llavors el que realment fa és Retorna una matriu d'elements. 1578 01:14:56,320 --> 01:14:59,517 >> I cal qualsevol iterar sobre ells o trobar quin d'ells vol. 1579 01:14:59,517 --> 01:15:01,350 No va a donar que un sol element. 1580 01:15:01,350 --> 01:15:03,450 Es va a donar una matriu d'elements. 1581 01:15:03,450 --> 01:15:05,280 Molt bona pregunta. 1582 01:15:05,280 --> 01:15:07,700 Alguna cosa més? 1583 01:15:07,700 --> 01:15:09,520 Impressionant. 1584 01:15:09,520 --> 01:15:12,860 >> Així que crec que si estàs familiaritzat amb qualsevol jQuery que has vist al conjunt de processadors, 1585 01:15:12,860 --> 01:15:15,600 vostè ha de ser bo per anar. 1586 01:15:15,600 --> 01:15:16,325 Pregunta? 1587 01:15:16,325 --> 01:15:17,610 Oh, no. 1588 01:15:17,610 --> 01:15:18,859 Realment he de ensenyar. 1589 01:15:18,859 --> 01:15:19,358 Relaxeu-vos. 1590 01:15:19,358 --> 01:15:20,035 Estarà bé. 1591 01:15:20,035 --> 01:15:20,660 Arribaré. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Anem a parlar d'Ajax. 1594 01:15:26,870 --> 01:15:31,350 Així Ajax serà A-- així, anem a començar amb el que representa. 1595 01:15:31,350 --> 01:15:32,350 És un acrònim. 1596 01:15:32,350 --> 01:15:35,855 Significa asíncrona JavaScript i XML. 1597 01:15:35,855 --> 01:15:39,800 I XML és bàsicament serà [Inaudible] amb un tipus de les nostres dades. 1598 01:15:39,800 --> 01:15:42,100 Però no hem realment utilitzat XML. 1599 01:15:42,100 --> 01:15:43,430 En lloc d'això, només ha d'utilitzar JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Així que, bàsicament, és algunes data-- asíncron, JavaScript, i dades, 1601 01:15:48,350 --> 01:15:50,040 en aquest cas, JSON. 1602 01:15:50,040 --> 01:15:52,820 I el nostre objectiu, com hem esmentat una mica abans, 1603 01:15:52,820 --> 01:15:56,880 és ser capaç de fer una sol·licitud, ha fer aquesta petició 1604 01:15:56,880 --> 01:16:00,700 l'hora de la fons, però segueixen 1605 01:16:00,700 --> 01:16:02,550 fer el que estàvem intenció de fer. 1606 01:16:02,550 --> 01:16:06,650 I després, quan aquesta informació és llest, llavors anem a incorporar-lo. 1607 01:16:06,650 --> 01:16:08,470 >> Així que anem a veure el que aquest en realitat sembla. 1608 01:16:08,470 --> 01:16:11,210 I això, vostè hauria de ser una mica familiaritzat 1609 01:16:11,210 --> 01:16:13,680 des pset8, el que vostè acaba de fer a. 1610 01:16:13,680 --> 01:16:16,200 Així que aquí està una jQuery vàlida funció que podríem 1611 01:16:16,200 --> 01:16:18,250 volen saber sobre-- aquest signe dòlar. 1612 01:16:18,250 --> 01:16:21,500 Pel que diu la funció jQuery, .getJson. 1613 01:16:21,500 --> 01:16:25,020 >> I què fa aquesta funció és realitza un URL i alguns parameters-- 1614 01:16:25,020 --> 01:16:28,000 així que crec que en el cas de pset8, era com, 1615 01:16:28,000 --> 01:16:33,520 la URL era articles.php i la paràmetres ha estat GO = una mica de codi postal. 1616 01:16:33,520 --> 01:16:41,580 I diu, bé, fer una petició a aquest URL amb els paràmetres donats. 1617 01:16:41,580 --> 01:16:43,480 I això només passa. 1618 01:16:43,480 --> 01:16:47,730 >> Quan acabi, és ja sigui va a completar amb èxit 1619 01:16:47,730 --> 01:16:49,370 o que va a fallar. 1620 01:16:49,370 --> 01:16:53,480 Així que aquest és l'equivalent de trucada Rob i li demana que faci alguna cosa. 1621 01:16:53,480 --> 01:17:00,260 I després, quan torna a trucar, està bé dirà que he acabat o vaig fallar. 1622 01:17:00,260 --> 01:17:04,030 >> Així que en el cas que vostè és fet, dius, OK, he acabat. 1623 01:17:04,030 --> 01:17:05,980 I llavors es crida a aquesta funció. 1624 01:17:05,980 --> 01:17:08,915 En aquest cas, serà un funció que pren una mica d'informació. 1625 01:17:08,915 --> 01:17:12,890 El que ens preocupem en general és de dades, les dades que en realitat estàvem vam tornar 1626 01:17:12,890 --> 01:17:15,900 com a resultat de l'anomenada .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> I vostè pot fer alguna cosa amb ell. 1628 01:17:17,470 --> 01:17:23,670 Així que en el cas de pset8, exhibim com una llista. 1629 01:17:23,670 --> 01:17:29,050 Falla serà una funció això es diu si falla la petició 1630 01:17:29,050 --> 01:17:30,450 per qualsevol raó. 1631 01:17:30,450 --> 01:17:35,104 I en el cas de pset8, acabem console.log ella. 1632 01:17:35,104 --> 01:17:36,020 Per a qualsevol dubte sobre això? 1633 01:17:36,020 --> 01:17:36,300 Sí. 1634 01:17:36,300 --> 01:17:39,633 >> AUDIÈNCIA: Podem fer servir la funció theta en lloc de la funció, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH Blumberg: És clar. 1637 01:17:44,380 --> 01:17:46,713 Així que sí, crec que en el conjunt de processadors, que acabem de veure les dades de la funció. 1638 01:17:46,713 --> 01:17:48,700 Així que és només ell-- sí, a D'acord. 1639 01:17:48,700 --> 01:17:50,510 Això és el que vam veure en el conjunt de processadors. 1640 01:17:50,510 --> 01:17:51,480 Això és totalment bé. 1641 01:17:51,480 --> 01:17:54,210 >> Aquests són només si volies per treure més informació, 1642 01:17:54,210 --> 01:17:57,190 aquestes són les coses que vostè podria aconseguir de .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Bona pregunta. 1644 01:17:59,040 --> 01:17:59,706 Alguna cosa més? 1645 01:17:59,706 --> 01:18:00,206 Sí. 1646 01:18:00,206 --> 01:18:01,787 >> AUDIÈNCIA: Llavors .getJSON és Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH Blumberg: OK. 1648 01:18:02,620 --> 01:18:05,700 Així que aquest és el tipus de part difícil. 1649 01:18:05,700 --> 01:18:12,390 És una funció jQuery que permet tu per fer trucades asíncrones. 1650 01:18:12,390 --> 01:18:16,080 I aquestes trucades asíncrones, això és el que hem estat referint com Ajax. 1651 01:18:16,080 --> 01:18:16,850 Sí. 1652 01:18:16,850 --> 01:18:20,185 Això em va portar un temps molt llarg per separi quan jo era un estudiant. 1653 01:18:20,185 --> 01:18:21,560 AUDIÈNCIA: Pots dir això una altra vegada? 1654 01:18:21,560 --> 01:18:22,476 HANNAH Blumberg: Sí. 1655 01:18:22,476 --> 01:18:23,630 Puc dir això una altra vegada? 1656 01:18:23,630 --> 01:18:29,010 Aquesta funció .getJSON, és una funció jQuery. 1657 01:18:29,010 --> 01:18:31,970 I que va a fer una trucada asincrònica. 1658 01:18:31,970 --> 01:18:35,700 I aquestes trucades asíncrones, hem es refereix a aquells com l'Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> Alguna altra pregunta? 1661 01:18:41,872 --> 01:18:43,330 Tenim només un parell de minuts per al final. 1662 01:18:43,330 --> 01:18:45,080 I Maria va acabar amb la seguretat 1663 01:18:45,080 --> 01:18:47,464 i després ens anem que es tracta només de fer. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Awesome, OK. 1665 01:18:48,630 --> 01:18:54,030 Així que això és-- només pren un parell de segons per mirar per sobre d'aquest. 1666 01:18:54,030 --> 01:18:56,750 I això no és una cosa realment gran. 1667 01:18:56,750 --> 01:18:59,430 I algú pot dir-me per què? 1668 01:18:59,430 --> 01:19:05,650 Què està passant a foo i podrà poder potencialment resultar en una cosa dolenta, 1669 01:19:05,650 --> 01:19:06,770 i com es diu? 1670 01:19:06,770 --> 01:19:07,270 Sí. 1671 01:19:07,270 --> 01:19:10,391 AUDIÈNCIA: Si l'argument que és aprovada en més de 12 personatges, 1672 01:19:10,391 --> 01:19:11,454 podria desbordar-se. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Correcte. 1674 01:19:12,370 --> 01:19:14,180 Perfecte. 1675 01:19:14,180 --> 01:19:15,384 Com es diu? 1676 01:19:15,384 --> 01:19:16,300 Vostè acaba d'esmentar que. 1677 01:19:16,300 --> 01:19:16,840 >> AUDIÈNCIA: Desbordament de memòria intermèdia. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Sí, buffer overflow. 1679 01:19:18,381 --> 01:19:21,230 Així que això és una cosa que nosaltres referir-se com desbordament de memòria intermèdia. 1680 01:19:21,230 --> 01:19:25,500 I veiem que dins de foo, hem definit el nostre buffer, c, 1681 01:19:25,500 --> 01:19:27,240 amb una mida de 12. 1682 01:19:27,240 --> 01:19:32,680 No obstant això, en principal, no ho fem comprovar de cap manera en absolut 1683 01:19:32,680 --> 01:19:36,480 si el argv1-- de manera que va ser el segon argument. 1684 01:19:36,480 --> 01:19:39,630 No vam comprovar si el mida de la mateixa és apropiada. 1685 01:19:39,630 --> 01:19:43,380 >> Així que si teníem un usuari especialment maliciós 1686 01:19:43,380 --> 01:19:47,170 de posar en un cert argument que era més de 12, i després potencialment 1687 01:19:47,170 --> 01:19:50,850 més enllà dels límits d'aquesta argument, tenia una mica de codi executable 1688 01:19:50,850 --> 01:19:55,570 que ell estava tractant de fer una cosa dolenta amb ella; després d'això, el que passaria, 1689 01:19:55,570 --> 01:19:59,310 anul·laria el retorn direcció de la funció foo, 1690 01:19:59,310 --> 01:20:04,370 fent que la funció per quan tornar a executar aquest codi. 1691 01:20:04,370 --> 01:20:07,540 I llavors les coses dolentes poden succeir. 1692 01:20:07,540 --> 01:20:09,850 Té això sentit per a tothom? 1693 01:20:09,850 --> 01:20:12,424 >> I com podem protegir contra això? 1694 01:20:12,424 --> 01:20:13,090 Alguna suggerència? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Bàsicament, a l'interior de potencialment foo, com 1697 01:20:21,890 --> 01:20:28,294 podem comprovar per assegurar que això no pot passar? 1698 01:20:28,294 --> 01:20:33,879 >> AUDIÈNCIA: Si s'excedeix la mida 12, vostè assignar memòria addicional? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Suggeriment és, assignar memòria addicional de la mida excedida. 1700 01:20:37,170 --> 01:20:39,800 En realitat, podem fer alguna cosa una molt més simple que això. 1701 01:20:39,800 --> 01:20:44,870 Només podem obtenir la longitud de la cadena l'argument que s'introdueix, 1702 01:20:44,870 --> 01:20:48,590 comprovar si és menys que o igual a 12-- 1703 01:20:48,590 --> 01:20:50,790 que és el que volem de ser perquè no volem 1704 01:20:50,790 --> 01:20:52,373 que excedeixi dels límits del nostre buffer. 1705 01:20:52,373 --> 01:20:55,690 I després, si no ho fa, ens pot treballar amb l'argument. 1706 01:20:55,690 --> 01:21:00,296 I després, si ho fa, realment volem a Yello potencialment en l'usuari. 1707 01:21:00,296 --> 01:21:01,670 Però així és com ho faríem això. 1708 01:21:01,670 --> 01:21:02,443 Sí. 1709 01:21:02,443 --> 01:21:04,360 >> AUDIÈNCIA: Podria vostè explicar ràpida veritable memcpy? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, ho sento. 1711 01:21:05,443 --> 01:21:06,040 Sí. 1712 01:21:06,040 --> 01:21:11,290 Memcpy pren ho és-- ho sento, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy pren el que sigui a la barra, el que sigui es passa 1714 01:21:15,850 --> 01:21:18,050 en foo com l'argument de la línia d'ordres. 1715 01:21:18,050 --> 01:21:19,440 Així que prendrà argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 es diu bar aquí. 1717 01:21:21,420 --> 01:21:24,453 Així que prendrà bar i que va a copiar al c. 1718 01:21:24,453 --> 01:21:25,402 >> AUDIÈNCIA: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: I va copy-- el tercer argument simplement es refereix 1720 01:21:28,360 --> 01:21:30,601 al molt que va a copiar al c. 1721 01:21:30,601 --> 01:21:31,142 AUDIÈNCIA: Ah. 1722 01:21:31,142 --> 01:21:33,030 Així que d'aquest còpia tots de la mateixa a continuació. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Sí, està copiant tot. 1724 01:21:34,310 --> 01:21:34,810 Sí. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 En primer lloc, ens assegurem que la barra no és igual a NULL perquè és un punter. 1727 01:21:41,910 --> 01:21:44,680 Després tenim la longitud de la cadena de la barra. 1728 01:21:44,680 --> 01:21:47,530 Ens assegurem que és menys d'o igual a 12. 1729 01:21:47,530 --> 01:21:50,070 I després perquè hem assegurat, podem realitat 1730 01:21:50,070 --> 01:21:53,122 memcpy i estar segur que això està bé. 1731 01:21:53,122 --> 01:21:53,705 Qualsevol pregunta? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Gran. 1734 01:21:58,690 --> 01:22:00,400 Tinc dues preguntes de vertader o fals. 1735 01:22:00,400 --> 01:22:05,470 Pot algú dir-me immediatament si són vertaderes o falses? 1736 01:22:05,470 --> 01:22:07,460 Sí, és fals. 1737 01:22:07,460 --> 01:22:07,960 Exactament. 1738 01:22:07,960 --> 01:22:09,330 Tots dos són falses. 1739 01:22:09,330 --> 01:22:12,682 Així, utilitzant una sola contrasenya Mai és bona idea 1740 01:22:12,682 --> 01:22:14,890 perquè si algú sap la seva contrasenya, poden simplement 1741 01:22:14,890 --> 01:22:16,260 accedir a totes les seves altres comptes. 1742 01:22:16,260 --> 01:22:19,260 I després icones fan res per garantir la seguretat. 1743 01:22:19,260 --> 01:22:24,900 Generalment Hem de buscar HTTPS en lloc de HTTP i la URL. 1744 01:22:24,900 --> 01:22:28,560 >> I alguns altres tipus de atacs que hem esmentat, 1745 01:22:28,560 --> 01:22:31,390 que David ha esmentat en donar una conferència, els atacs d'injecció SQL. 1746 01:22:31,390 --> 01:22:37,310 Ja vam veure que si no-- la Funció de consulta CS50 s'assegura que SQL 1747 01:22:37,310 --> 01:22:39,530 no poden produir atacs d'injecció. 1748 01:22:39,530 --> 01:22:42,640 Però si no estàvem usant CS50, Ho van dir ells "en consulta" 1749 01:22:42,640 --> 01:22:46,830 caldria assegurar-se que el l'entrada de l'usuari no és en realitat alguns SQL 1750 01:22:46,830 --> 01:22:49,670 consulta que farà que tots els les nostres taules que es retirin 1751 01:22:49,670 --> 01:22:54,070 o una cosa dolenta ocórrer amb la nostra base de dades. 1752 01:22:54,070 --> 01:22:56,790 >> Segrest de sessió és un altre tipus d'atac 1753 01:22:56,790 --> 01:23:05,940 això succeeix quan algun mal persona utilitza la sessió d'alguna víctima 1754 01:23:05,940 --> 01:23:08,740 ID per accedir a la informació d'accés. 1755 01:23:08,740 --> 01:23:13,620 Així, un exemple molt trivial que és com si tenim un ordinador públic, 1756 01:23:13,620 --> 01:23:21,120 llavors la mala persona obre una sessió i després han galetes que es guarden. 1757 01:23:21,120 --> 01:23:23,380 I les galetes no canvien per a la sessió. 1758 01:23:23,380 --> 01:23:27,620 >> Després tenim la víctima entrar i després iniciar sessió al lloc web. 1759 01:23:27,620 --> 01:23:30,290 Les galetes no canvien durant un cert període de sessions. 1760 01:23:30,290 --> 01:23:33,060 I llavors la víctima es registra en la pàgina web i després se'n va. 1761 01:23:33,060 --> 01:23:36,190 I llavors la persona que es remunta a continuació, pot seguir utilitzant el seu ID de sessió 1762 01:23:36,190 --> 01:23:37,430 per accedir a la seva informació. 1763 01:23:37,430 --> 01:23:40,050 Així que això és un exemple de el que podria succeir. 1764 01:23:40,050 --> 01:23:45,570 >> I llavors jo no em preocuparia massa sobre el codi ni res específic 1765 01:23:45,570 --> 01:23:49,270 així que podria causar això, però tenir algun tipus d'idea del que 1766 01:23:49,270 --> 01:23:51,400 les variables involucrades en aquesta són. 1767 01:23:51,400 --> 01:23:53,897 I llavors la manipulació de capçalera dades és un altre tipus d'atac 1768 01:23:53,897 --> 01:23:55,230 que té David ha parlat. 1769 01:23:55,230 --> 01:23:59,730 I que només es refereix a el que pot passar quan 1770 01:23:59,730 --> 01:24:04,300 la resposta, l'HTTP resposta dins de la nostra capçalera 1771 01:24:04,300 --> 01:24:05,720 no està desinfectat adequadament. 1772 01:24:05,720 --> 01:24:14,340 >> I qualsevol dels fields-- per exemple, si algú sobreescriu una de la capçalera 1773 01:24:14,340 --> 01:24:18,860 valors que contenen res més el que han de contain-- i realitat 1774 01:24:18,860 --> 01:24:22,720 contenir, per exemple, un 200 Acceptar codi d'estat, llavors 1775 01:24:22,720 --> 01:24:26,890 podrien fer maliciós coses quan no se suposa que. 1776 01:24:26,890 --> 01:24:30,815 Però jo no em preocuparia massa molt sobre el codi específic 1777 01:24:30,815 --> 01:24:34,110 que poden implicar que això, només una espècie d'entesa 1778 01:24:34,110 --> 01:24:37,290 coses d'alt nivell així. 1779 01:24:37,290 --> 01:24:39,570 >> Crec que això és tot que hem de cobrir. 1780 01:24:39,570 --> 01:24:40,090 Increïble. 1781 01:24:40,090 --> 01:24:43,310 Algú té alguna pregunta sobre qualsevol de les coses que cobrim? 1782 01:24:43,310 --> 01:24:44,213 Sí. 1783 01:24:44,213 --> 01:24:48,077 >> AUDIÈNCIA: Així que una mena de pregunta més logístic. 1784 01:24:48,077 --> 01:24:53,400 El contingut es va centrar principalment en les coses després de concurs 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: Així pregunta és, és el contingut 1786 01:24:55,730 --> 01:24:59,720 centrat principalment en les coses segons qüestionari 1? 1787 01:24:59,720 --> 01:25:06,070 Per tant el focus està en després de qüestionari 1, amb l'excepció 1788 01:25:06,070 --> 01:25:10,914 que hem de centrar-nos en les coses en pset5 i moltes de les estructures de dades 1789 01:25:10,914 --> 01:25:11,580 que cobrim. 1790 01:25:11,580 --> 01:25:14,300 I no podem dir que estem pot ignorar res abans 1791 01:25:14,300 --> 01:25:17,120 que pel fet que es basa en ella també. 1792 01:25:17,120 --> 01:25:21,845 >> Així que concentra't en això, a més de material de pset5 com incloure enllaços llistes, piles, 1793 01:25:21,845 --> 01:25:23,720 cues, i tot que Hannah es va acostar. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH Blumberg: Correcte. 1795 01:25:24,050 --> 01:25:27,450 Sí, ens vam anar totes les coses C al principi, molt ràpidament. 1796 01:25:27,450 --> 01:25:29,090 Però assegureu-vos de revisar això. 1797 01:25:29,090 --> 01:25:32,700 Tornar enrere i veure el qüestionari 0 opinió. 1798 01:25:32,700 --> 01:25:36,110 >> Un parell notes més logístics, només mentre nosaltres tenim la seva atenció. 1799 01:25:36,110 --> 01:25:39,100 Tindrem hores d'oficina tant dilluns i dimarts a la nit. 1800 01:25:39,100 --> 01:25:41,540 Ells van a estar a MD 119. 1801 01:25:41,540 --> 01:25:44,220 Això és tot en el lloc web, de manera que si vostè no escolta, no es preocupi. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA 8:30-11:00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH Blumberg: Sí, de 8:30 a 11:00. 1804 01:25:46,260 --> 01:25:46,910 Estarem allà. 1805 01:25:46,910 --> 01:25:48,368 Estarem allà per respondre preguntes. 1806 01:25:48,368 --> 01:25:49,480 És bastant fred i divertit. 1807 01:25:49,480 --> 01:25:53,240 Vostès poden fer qualsevol pregunta que té en concurs 1. 1808 01:25:53,240 --> 01:25:55,740 I prova 1 està en Dimecres, així que bona sort. 1809 01:25:55,740 --> 01:25:59,770 Si vostè té alguna pregunta, potser venir a parlar amb nosaltres aquí un a un. 1810 01:25:59,770 --> 01:26:00,880 Fresc. 1811 01:26:00,880 --> 01:26:01,630 Moltes gràcies. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Moltes gràcies, nois. 1813 01:26:02,880 --> 01:26:03,480 >> AUDIÈNCIA: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [Aplaudiments] 1815 01:26:05,930 --> 01:26:07,530