1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [REPRODUCCIÓ DE MÚSICA] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Hola a tots. 5 00:00:12,700 --> 00:00:15,866 Gràcies nois per venir a terme en el clima desagradable per a un concurs 6 00:00:15,866 --> 00:00:16,910 revisar sessió. 7 00:00:16,910 --> 00:00:20,020 Com vostès saben, concurs un és aquest dimecres. 8 00:00:20,020 --> 00:00:22,209 Així que anirem a través d'un munt de temes. 9 00:00:22,209 --> 00:00:24,000 DAVIN: Hey, puc dir una cosa molt ràpid? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Sí, Davin va a dir alguna cosa molt ràpid. 11 00:00:25,215 --> 00:00:25,780 DAVIN: Ho sento. 12 00:00:25,780 --> 00:00:29,490 Només molt ràpid, si té preguntes sobre el concurs, pot connectar-se a Internet. 13 00:00:29,490 --> 00:00:32,420 Anar a 2.014 qüestionari un, sobre el qüestionari. 14 00:00:32,420 --> 00:00:34,680 Té la logística sobre on anar, quan anar. 15 00:00:34,680 --> 00:00:38,100 Si vostè està inscrit simultàniament, estem tindrà un concurs de maquillatge a les 5:30. 16 00:00:38,100 --> 00:00:40,350 O si vostè em va enviar un problema, vostè té algun un altre problema. 17 00:00:40,350 --> 00:00:42,640 Però 05:30 és el maquillatge vegada el dimecres. 18 00:00:42,640 --> 00:00:44,540 Però si vostè té preguntes, preguntes generals, 19 00:00:44,540 --> 00:00:45,748 línia té tota la logística. 20 00:00:45,748 --> 00:00:47,690 Així que tira primer. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Awesome. 22 00:00:49,070 --> 00:00:53,030 Així que aquí està la gran llista de temes que anirem a través de l'actualitat. 23 00:00:53,030 --> 00:00:57,390 Vaig a cobrir la totalitat de la C coses, que és la primera columna. 24 00:00:57,390 --> 00:01:00,710 Així les coses C que cobert després de concurs zero. 25 00:01:00,710 --> 00:01:05,459 A partir d'una llista enllaçada, que inclou punters. 26 00:01:05,459 --> 00:01:07,668 >> Molt bé, així que va veure això en l'última sessió de revisió, 27 00:01:07,668 --> 00:01:10,000 així que vaig a anar a través de això és una mica més ràpid. 28 00:01:10,000 --> 00:01:13,500 Només aixeca la mà si em vols frenar o tractar alguna cosa més. 29 00:01:13,500 --> 00:01:17,150 Però utilitzem llistes enllaçades perquè vam començar a C amb matrius. 30 00:01:17,150 --> 00:01:20,920 I matrius són grans, però la problema és que tenen una mida fixa. 31 00:01:20,920 --> 00:01:24,925 Les llistes enllaçades ens permeten crear mida dinàmicament les estructures de dades. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> I tenim les nostres operacions bàsiques, inserir, eliminar i buscar. 34 00:01:32,320 --> 00:01:36,780 I podem fer-ho de inserció en pitjor cas de temps constant 35 00:01:36,780 --> 00:01:39,140 si ens posem en el començament mateix. 36 00:01:39,140 --> 00:01:45,220 Esborrar i cercar, pitjor cas gran oh de temps n. 37 00:01:45,220 --> 00:01:47,140 Així que de nou, només per donar la volta a través d'aquestes imatges, 38 00:01:47,140 --> 00:01:50,860 Sé que vam veure aquests últims temps, però nosaltres vol estar al dia de la nostra llista enllaçada 39 00:01:50,860 --> 00:01:53,440 mitjançant el seguiment de la cap de la nostra llista enllaçada. 40 00:01:53,440 --> 00:01:55,580 Perquè sabem que cadascun dels nostres nodes 41 00:01:55,580 --> 00:01:58,610 només va a apuntar a la node següent a la nostra llista enllaçada. 42 00:01:58,610 --> 00:02:00,460 >> Així que aquesta és la forma en que fem un seguiment. 43 00:02:00,460 --> 00:02:02,910 Tot i que aquests no són peces contínues de la memòria, 44 00:02:02,910 --> 00:02:07,410 els podem trobar per només seguint les fletxes diferents. 45 00:02:07,410 --> 00:02:09,800 Aquí està la nostra estructura per a un node de llista enllaçada. 46 00:02:09,800 --> 00:02:11,440 Ho vam veure per última vegada. 47 00:02:11,440 --> 00:02:13,080 Tenim el nostre node d'estructura. 48 00:02:13,080 --> 00:02:14,340 I té dues propietats. 49 00:02:14,340 --> 00:02:17,020 Número u, l'actual valor que desitja emmagatzemar. 50 00:02:17,020 --> 00:02:18,290 En aquest cas, es tracta d'un nombre enter. 51 00:02:18,290 --> 00:02:21,100 Podria ser una cadena, podria ser un char, el que vulguis. 52 00:02:21,100 --> 00:02:24,710 I després, hem de seguir la pista de el següent node a la nostra llista enllaçada. 53 00:02:24,710 --> 00:02:29,797 Així que serà un punter al següent node. 54 00:02:29,797 --> 00:02:31,880 Si estaves fent recerca, com he dit abans, 55 00:02:31,880 --> 00:02:34,900 vostè hauria de seguir les seves fletxes cap avall. 56 00:02:34,900 --> 00:02:40,720 Inserció, no perdre d'on la resta de la seva llista és. 57 00:02:40,720 --> 00:02:44,150 I voleu redirigir el cap perquè apunti al nostre nou element, que 58 00:02:44,150 --> 00:02:46,640 en aquest cas és un, i després un apuntarà 59 00:02:46,640 --> 00:02:49,480 per a la resta de la llista enllaçada. 60 00:02:49,480 --> 00:02:52,996 Així que de nou, sé que això és una mica mica d'una repetició de la prova de zero. 61 00:02:52,996 --> 00:02:55,370 Així que hem de tenir molta cura sobre l'ordre en què es 62 00:02:55,370 --> 00:03:00,390 fer aquests assenyalaments, així que no ho fem perdre la pista de la part posterior de la llista. 63 00:03:00,390 --> 00:03:04,122 OK, qualsevol pregunta amb simplement enllaçada llistes? 64 00:03:04,122 --> 00:03:06,060 Impressionant, OK, fresc. 65 00:03:06,060 --> 00:03:09,410 >> Així que ara, anirem a alguna cosa només una mica més complicat, 66 00:03:09,410 --> 00:03:10,920 doblement enllaçada llistes. 67 00:03:10,920 --> 00:03:13,680 Així que a més de mantenir pista de la següent node, 68 00:03:13,680 --> 00:03:16,220 també volem fer un seguiment del node anterior. 69 00:03:16,220 --> 00:03:19,580 I això ens permet, si som en algun moment de la nostra llista enllaçada, 70 00:03:19,580 --> 00:03:23,110 no només anar cap endavant, però també recórrer cap enrere. 71 00:03:23,110 --> 00:03:25,220 Perquè com vam veure en una llista simplement enllaçada, 72 00:03:25,220 --> 00:03:27,980 si estiguéssim en algun node, i de sobte, vam decidir, 73 00:03:27,980 --> 00:03:30,160 En realitat, jo vull anar a el dret node abans de mi, 74 00:03:30,160 --> 00:03:32,034 vostè hauria d'anar a per totes el camí de tornada al capdavant 75 00:03:32,034 --> 00:03:35,710 i recórrer fins a trobar el node que estava buscant. 76 00:03:35,710 --> 00:03:37,680 >> Així que això fa que les coses una mica més fàcil que a nosaltres 77 00:03:37,680 --> 00:03:39,670 tractant de repetir a través de la nostra llista enllaçada. 78 00:03:39,670 --> 00:03:47,870 Però ens obliga a fer un seguiment d'un més punter, de manera que una estrella més node. 79 00:03:47,870 --> 00:03:50,830 Molt bé, així que aquí ve la part divertida. 80 00:03:50,830 --> 00:03:55,600 Anem a practicar la implementació eliminar les llistes doblement enllaçades. 81 00:03:55,600 --> 00:03:58,660 Així que això és una cosa que és joc totalment just per al concurs. 82 00:03:58,660 --> 00:04:00,750 Va aparèixer en les proves anteriors. 83 00:04:00,750 --> 00:04:04,220 Així que definitivament estar preparat per codificar una mica en C. 84 00:04:04,220 --> 00:04:07,900 No oblidis que amb tota aquest divertit PHP i JavaScript, 85 00:04:07,900 --> 00:04:10,560 encara hem de recordar fer C. Així que posar al dia que 86 00:04:10,560 --> 00:04:12,146 si et sents oxidat. 87 00:04:12,146 --> 00:04:14,580 >> Molt bé, anem a veure si podem fer això. 88 00:04:14,580 --> 00:04:16,312 Acceptar, fresc. 89 00:04:16,312 --> 00:04:18,600 Així que anem a tractar editar dreta aquí, 90 00:04:18,600 --> 00:04:20,707 i espero que això va segons el previst. 91 00:04:20,707 --> 00:04:23,915 Molt bé, algú vol donar-me un suggeriment pel que fa a la forma en què hauria de començar? 92 00:04:23,915 --> 00:04:27,030 L'únic cas que sóc decisions és que jo ja 93 00:04:27,030 --> 00:04:30,180 tenen una estructura definida, el un que va mostrar en l'última pàgina, 94 00:04:30,180 --> 00:04:31,420 en l'última diapositiva. 95 00:04:31,420 --> 00:04:39,250 I estic emmagatzemant el cap de la meva vinculat Llista d'alguna punter diu llista. 96 00:04:39,250 --> 00:04:42,190 Algú vol em va començar? 97 00:04:42,190 --> 00:04:45,410 >> AUDIÈNCIA: Pot crear una nova node trucar a través de la llista? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Awesome, per la qual crearem 99 00:04:46,410 --> 00:04:47,951 un nou node a arrossegar per la llista. 100 00:04:47,951 --> 00:04:48,570 M'agrada això. 101 00:04:48,570 --> 00:04:50,799 Vaig a trucar ella punter si això està bé. 102 00:04:50,799 --> 00:04:52,340 I on ha de començar originalment? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> AUDIÈNCIA: Probablement en el cap de la llista. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Beautiful. 106 00:05:00,590 --> 00:05:03,670 Volem començar al cap, que Li vaig dir que serà emmagatzemat a la llista. 107 00:05:03,670 --> 00:05:04,170 Impressionant. 108 00:05:04,170 --> 00:05:05,220 Fins ara, tot bé. 109 00:05:05,220 --> 00:05:08,260 I ara, el nostre objectiu és recórrer la llista 110 00:05:08,260 --> 00:05:12,870 fins que trobem el node amb valor n que volem eliminar. 111 00:05:12,870 --> 00:05:13,540 D'acord? 112 00:05:13,540 --> 00:05:15,910 >> Així que ara és la part on volem recórrer. 113 00:05:15,910 --> 00:05:19,488 Pot algú suggerir un manera de recórrer? 114 00:05:19,488 --> 00:05:20,979 >> AUDIÈNCIA: Un bucle. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: Un bucle. 116 00:05:21,840 --> 00:05:22,620 M'encanta. 117 00:05:22,620 --> 00:05:25,550 En concret, podem intentar un bucle while. 118 00:05:25,550 --> 00:05:30,919 Acceptar, i sabem que hem arribat Al final de la nostra llista quan què? 119 00:05:30,919 --> 00:05:32,210 AUDIÈNCIA: Quan punter és nul. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Quan punter és nul. 121 00:05:33,418 --> 00:05:34,320 Bella, m'encanta. 122 00:05:34,320 --> 00:05:35,110 Acceptar, fresc. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Així que ho sento si el meu delimitador cotilla és tipus de caure fora de la pantalla. 125 00:05:43,190 --> 00:05:44,090 El vam portar de tornada. 126 00:05:44,090 --> 00:05:46,610 Acceptar, fresc. 127 00:05:46,610 --> 00:05:48,690 Què segueix? 128 00:05:48,690 --> 00:05:51,950 >> Així que sabem que volem eliminar el node que té un valor n. 129 00:05:51,950 --> 00:05:56,340 Així que anem a veure el cas en en realitat ens trobem al nostre node. 130 00:05:56,340 --> 00:05:57,840 Llavors, com anava jo a comprovar que? 131 00:05:57,840 --> 00:06:02,210 Jo només diria que si punter i, a continuació, si jo que desitgi obtenir el valor de punter, 132 00:06:02,210 --> 00:06:08,940 Acabo do fletxa n, és igual a n, el paràmetre 133 00:06:08,940 --> 00:06:14,490 que vam donar a aquesta funció, el node que volem eliminar realitat. 134 00:06:14,490 --> 00:06:17,090 Qualsevol pregunta de fins fins aquí? 135 00:06:17,090 --> 00:06:18,360 Bé. 136 00:06:18,360 --> 00:06:24,140 OK, així que ara anem a dibuixar una imatge ràpida al tauler per tal de visualitzar això. 137 00:06:24,140 --> 00:06:30,710 >> Així que diguem que no és el nostre node encantadora. 138 00:06:30,710 --> 00:06:34,480 I té un valor, només vaig a dir quatre. 139 00:06:34,480 --> 00:06:40,340 I apunta la següent node a la nostra llista enllaçada. 140 00:06:40,340 --> 00:06:42,220 I no hi ha res abans. 141 00:06:42,220 --> 00:06:45,800 Així que tenim el nostre anterior apuntant al no-res. 142 00:06:45,800 --> 00:06:48,110 En aquest cas, apuntem cap enrere. 143 00:06:48,110 --> 00:06:50,960 Bé, només la creació de la meva llista enllaçada per aquí. 144 00:06:50,960 --> 00:06:53,630 I tenim una llista que apunta a aquesta estructura, per començar. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Vaig a dibuixar un més per A més a més. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 D'acord. 149 00:07:06,117 --> 00:07:07,480 Vaig a assenyalar això endavant. 150 00:07:07,480 --> 00:07:09,550 I vaig a assenyalar que un de nou. 151 00:07:09,550 --> 00:07:10,360 Vaja, ho sento. 152 00:07:10,360 --> 00:07:12,710 Sí, tinc això a l'inrevés. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Fes-ho de nou. 155 00:07:16,967 --> 00:07:18,330 Bé, allà anem. 156 00:07:18,330 --> 00:07:19,910 Molt bé, ho tinc. 157 00:07:19,910 --> 00:07:21,780 OK, aquí està la nostra imatge. 158 00:07:21,780 --> 00:07:24,860 >> Acceptar, pel que volem considerar dos casos. 159 00:07:24,860 --> 00:07:27,330 El primer cas és si el node que volem eliminar 160 00:07:27,330 --> 00:07:29,420 és en el començament mateix de la nostra llista. 161 00:07:29,420 --> 00:07:34,070 I llavors, el segon cas que volem a considerar és si es tracta de qualsevol altre lloc. 162 00:07:34,070 --> 00:07:37,660 Entenc que aquesta totalment desordenat dibuix amb tot el meu esborrat, 163 00:07:37,660 --> 00:07:40,400 però espero que tractarem de aclarir això amb una mica de codi. 164 00:07:40,400 --> 00:07:45,450 >> OK, així que anem a cobrir el cas on trobem el nostre node, 165 00:07:45,450 --> 00:07:48,900 i és per inici de la nostra llista enllaçada. 166 00:07:48,900 --> 00:07:50,810 Algú em dóna un suggeriment aquí quant al 167 00:07:50,810 --> 00:07:54,684 Que he de fer per eliminar realment el nostre node? 168 00:07:54,684 --> 00:07:55,970 És una mica difícil. 169 00:07:55,970 --> 00:07:56,470 D'acord? 170 00:07:56,470 --> 00:07:59,628 >> AUDIÈNCIA: Vostè ha de prendre la node que seria abans que es 171 00:07:59,628 --> 00:08:01,794 i fer que apunti a un que seria després d'ella, 172 00:08:01,794 --> 00:08:03,004 i prendre el node que seria després d'ell i fer 173 00:08:03,004 --> 00:08:04,554 que apunti al node abans d'ella. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Exactament. 175 00:08:05,220 --> 00:08:10,640 OK, així que aquest és el cas where-- tenim dos casos. 176 00:08:10,640 --> 00:08:14,100 Tenim el cas que el node que estem buscant 177 00:08:14,100 --> 00:08:18,270 és la part davantera de la llista. 178 00:08:18,270 --> 00:08:23,110 Acceptar i, a continuació el cas que vostè descrit és una altra cosa, no? 179 00:08:23,110 --> 00:08:24,500 És un altre lloc a la llista. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Així que vostè ha dit, hem de mirar el node anterior, 182 00:08:32,840 --> 00:08:36,500 i fer que el node anterior apuntar al següent node. 183 00:08:36,500 --> 00:08:40,510 Així que diguem que estem tractant de treure 5 184 00:08:40,510 --> 00:08:43,059 en el meu dibuix molt desordenat per aquí. 185 00:08:43,059 --> 00:08:47,530 Volem assegurar-nos que 4 ara apunta a sis. 186 00:08:47,530 --> 00:08:49,590 De quatre a sis punts pròxims. 187 00:08:49,590 --> 00:08:52,150 I dels sis punts anteriors a quatre. 188 00:08:52,150 --> 00:08:53,960 Aquest és el nostre objectiu aquí, oi? 189 00:08:53,960 --> 00:08:56,150 Això és el que crec que acaba de dir per allà. 190 00:08:56,150 --> 00:08:58,450 >> OK, així que anem a aconseguir aquesta primera peça. 191 00:08:58,450 --> 00:09:02,300 Anem a fer el que el punter anterior anterior. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Així ha d'assenyalar de quatre al costat de què? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Exactament, en aquest cas, sis. 196 00:09:14,900 --> 00:09:18,470 Així que hem de dir punter, al costat. 197 00:09:18,470 --> 00:09:20,600 D'acord? 198 00:09:20,600 --> 00:09:21,150 Bé. 199 00:09:21,150 --> 00:09:24,870 Així que anem a desfer-nos d'aquesta imatge lletja i tractar de dibuixar un un una mica més agradable. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Tenim el nostre cap llista aquí. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 I que apunta al primer node la nostra llista enllaçada, el que hem dit és de quatre. 204 00:09:42,740 --> 00:09:45,620 Aquí està el nostre segon node, cinc. 205 00:09:45,620 --> 00:09:47,307 I el nostre tercer node, 6. 206 00:09:47,307 --> 00:09:50,265 Només tracte de dibuixar el mateix exacte imatge, només una mica més neta. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, així que el pròxim quatre originalment apunta a cinc. 209 00:09:56,280 --> 00:09:58,620 De cinc a sis punts pròxims. 210 00:09:58,620 --> 00:10:00,170 De sis punts anteriors a cinc. 211 00:10:00,170 --> 00:10:02,470 I de cinc punts anteriors a quatre. 212 00:10:02,470 --> 00:10:03,360 Així que molt millor! 213 00:10:03,360 --> 00:10:04,530 Acceptar, fresc. 214 00:10:04,530 --> 00:10:07,770 >> Així que ara, el que vam fer just aquí, aquesta línia de codi, 215 00:10:07,770 --> 00:10:12,680 que diu punter anterior següent, així que què vol dir això? 216 00:10:12,680 --> 00:10:17,540 Això vol dir que si estem veient 5, aneu al node anterior, 217 00:10:17,540 --> 00:10:21,970 i és el proper ha ara punt a cinc del pròxim. 218 00:10:21,970 --> 00:10:27,840 Així que, essencialment, el que està fent és això esborrant aquesta fletxa 219 00:10:27,840 --> 00:10:29,640 i el que és saltar dreta sobre cinc. 220 00:10:29,640 --> 00:10:31,360 Queda clar? 221 00:10:31,360 --> 00:10:33,200 Sé que pot ser una mica dubtós. 222 00:10:33,200 --> 00:10:34,480 Veig alguns moviments de cap. 223 00:10:34,480 --> 00:10:35,390 Això és bo. 224 00:10:35,390 --> 00:10:36,670 Acceptar, fresc. 225 00:10:36,670 --> 00:10:39,590 Ara, quin és el següent pas? 226 00:10:39,590 --> 00:10:42,060 >> He restableix la propera. 227 00:10:42,060 --> 00:10:45,297 Ara, que una altra fletxa Què he de canviar? 228 00:10:45,297 --> 00:10:46,130 Aquesta d'aquí. 229 00:10:46,130 --> 00:10:47,560 De sis anteriors. 230 00:10:47,560 --> 00:10:50,620 No volem sis de l'anterior perquè apunti a cinc més. 231 00:10:50,620 --> 00:10:54,580 Volem que apunti a quatre. 232 00:10:54,580 --> 00:10:56,190 ¿Aquesta imatge té sentit? 233 00:10:56,190 --> 00:10:58,370 Així que ara realment podem tenir 5. 234 00:10:58,370 --> 00:10:59,370 Així que anem a aquesta peça. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 Què he de fer abans que jo restablir sis anterior a quatre? 237 00:11:11,180 --> 00:11:14,360 ¿Idees allà? 238 00:11:14,360 --> 00:11:17,369 >> AUDIÈNCIA: Llibertat per als nodes entre ells establint-la en nul? 239 00:11:17,369 --> 00:11:17,910 HANNAH: Cool. 240 00:11:17,910 --> 00:11:21,100 En definitiva, el nostre objectiu final és serà per alliberar el node. 241 00:11:21,100 --> 00:11:22,490 Pel que podem fer això aquí. 242 00:11:22,490 --> 00:11:23,540 Punter gratuït. 243 00:11:23,540 --> 00:11:24,810 Absolutament. 244 00:11:24,810 --> 00:11:29,160 Però fins i tot abans d'això, anem a sol-- nostre dret gol 245 00:11:29,160 --> 00:11:38,730 aquí és fixar punter proper anterior igual al punter anterior. 246 00:11:38,730 --> 00:11:40,760 Sé que això s'està cobert. 247 00:11:40,760 --> 00:11:45,440 OK, anem a take-- fresc. 248 00:11:45,440 --> 00:11:46,990 Tot món pot veure aquesta línia de fons? 249 00:11:46,990 --> 00:11:47,840 O és molt petita? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Així que abans que executem aquesta línia aquí, volem 252 00:11:54,300 --> 00:11:58,375 per assegurar-se que punter pròxim no és nul. 253 00:11:58,375 --> 00:12:00,500 Perquè si punter següent és null, quin tipus d'error 254 00:12:00,500 --> 00:12:02,727 obtindré quan intento referència a un punter nul? 255 00:12:02,727 --> 00:12:03,560 AUDIÈNCIA: culpa Seg. 256 00:12:03,560 --> 00:12:05,660 HANNAH: Una fallada s, bonic. 257 00:12:05,660 --> 00:12:09,690 OK, així que si això no és null, llavors podrem restablir. 258 00:12:09,690 --> 00:12:14,420 I tenim sis punts de nou a quatre. 259 00:12:14,420 --> 00:12:17,440 Preguntes fins aquest punt? 260 00:12:17,440 --> 00:12:17,940 Sí? 261 00:12:17,940 --> 00:12:19,814 >> AUDIÈNCIA: En la seva primera if, oi 262 00:12:19,814 --> 00:12:23,817 significa tenir la fletxa següent, o [inaudible]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: Jo volia dir punter de fletxa n. 264 00:12:25,150 --> 00:12:30,270 Així que, bàsicament, el que estic tractant de fer és a dir, el node actual que sóc 265 00:12:30,270 --> 00:12:34,100 iteració en el node actual que Estic mirant, estic emmagatzemant en punter. 266 00:12:34,100 --> 00:12:37,630 I jo vull saber punter de valor, que en aquest cas és n. 267 00:12:37,630 --> 00:12:39,500 I vull veure, és el node que estic buscant 268 00:12:39,500 --> 00:12:42,790 per al node que estic amb l'objectiu d'eliminar? 269 00:12:42,790 --> 00:12:47,657 Així que per això tenim aquí punter n. 270 00:12:47,657 --> 00:12:49,857 >> AUDIÈNCIA: Així que la fletxa que va a n, s'estableix el valor 271 00:12:49,857 --> 00:12:52,058 i deseu-lo en un node anomenat n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: Així que és com si jo sóc passant per aquesta llista enllaçada 274 00:12:58,820 --> 00:13:00,310 i apuntant a cinc. 275 00:13:00,310 --> 00:13:03,600 Si vull aconseguir aquest valor, si Vull arribar a aquest nombre, 5, 276 00:13:03,600 --> 00:13:06,400 He de fer punter de fletxa n. 277 00:13:06,400 --> 00:13:06,900 Refredar? 278 00:13:06,900 --> 00:13:07,900 Sí. 279 00:13:07,900 --> 00:13:11,200 >> AUDIÈNCIA: és n el nom de la variable? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Sí. 281 00:13:11,700 --> 00:13:14,870 Així que si ens llancem de nou 1 diapositiva, n és el nom 282 00:13:14,870 --> 00:13:18,660 del valor dins de la node a la nostra llista enllaçada. 283 00:13:18,660 --> 00:13:21,510 I sé que pot ser una mica mica confús perquè també 284 00:13:21,510 --> 00:13:24,680 estan demanant la cosa que volem esborrar n. 285 00:13:24,680 --> 00:13:26,717 Així que aquí és on que una línia ve. 286 00:13:26,717 --> 00:13:27,671 Sí? 287 00:13:27,671 --> 00:13:31,010 >> AUDIÈNCIA: Què tens [Inaudible] com funcionen? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Un punter [inaudible]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Segur. 291 00:13:37,520 --> 00:13:40,027 Estàs parlant de-- quina línia? 292 00:13:40,027 --> 00:13:41,526 AUDIÈNCIA: L'última línia [inaudible]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: És clar, a D'acord. 295 00:13:45,250 --> 00:13:48,540 Així que donem una ullada a la imatge en Per tractar d'explicar això. 296 00:13:48,540 --> 00:13:51,030 Ho sento, per al càmera, la pregunta era 297 00:13:51,030 --> 00:13:54,580 podem explicar punter fletxa al costat del punter anterior. 298 00:13:54,580 --> 00:14:01,510 OK, així que diguem que estem en cinc i el nostre objectiu és eliminar 05:00. 299 00:14:01,510 --> 00:14:07,240 Així punter següent, que d'aquests tres nodes ens dóna això? 300 00:14:07,240 --> 00:14:10,840 Això ens porta a la sisena node, oi? 301 00:14:10,840 --> 00:14:16,490 >> OK, així que ara estem demanant per prèvia dels sis. 302 00:14:16,490 --> 00:14:17,060 D'acord? 303 00:14:17,060 --> 00:14:20,210 I estem restablint aquesta perquè sigui igual a quatre, 304 00:14:20,210 --> 00:14:23,214 que va passar a ser de cinc de l'anterior. 305 00:14:23,214 --> 00:14:25,180 Ho sé, és super difícil seguir la pista. 306 00:14:25,180 --> 00:14:29,286 Realment recomano dibuixar imatges si tens una pregunta com aquesta. 307 00:14:29,286 --> 00:14:30,242 Sí? 308 00:14:30,242 --> 00:14:32,617 >> AUDIÈNCIA: És la raó per la qual no tenim un [inaudible]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Exactament. 311 00:14:38,570 --> 00:14:44,800 Per tant el dubte era, per què fer nosaltres no necessitem comprovar aquí? 312 00:14:44,800 --> 00:14:48,160 Per què no hem de comprovar que punter anterior no és igual a null? 313 00:14:48,160 --> 00:14:50,070 I és perquè hem ja separada fora 314 00:14:50,070 --> 00:14:52,490 el cas si el punter en el començament mateix. 315 00:14:52,490 --> 00:14:54,060 Molt bona pregunta. 316 00:14:54,060 --> 00:14:56,880 Alguna cosa més sobre això? 317 00:14:56,880 --> 00:14:57,380 Acceptar, fresc. 318 00:14:57,380 --> 00:14:58,360 Així que anem a acabar cap amunt. 319 00:14:58,360 --> 00:14:59,890 Ja gairebé hem arribat. 320 00:14:59,890 --> 00:15:01,310 >> I què si està al capdavant? 321 00:15:01,310 --> 00:15:03,360 I si en lloc de intentar eliminar 05:00, 322 00:15:03,360 --> 00:15:06,240 que realment volíem eliminar 04:00? 323 00:15:06,240 --> 00:15:07,270 Què hauria de fer? 324 00:15:07,270 --> 00:15:09,610 Bé, vull reiniciar el meu cap per a què? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Crit ell cap a fora? 327 00:15:15,585 --> 00:15:16,710 AUDIÈNCIA: El que després d'ella. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Beautiful. 329 00:15:17,460 --> 00:15:26,430 OK, així que volem que enumerem estar apuntant al que el nostre punter següent node és. 330 00:15:26,430 --> 00:15:29,040 Bé. 331 00:15:29,040 --> 00:15:30,810 I només per la completesa bé, ho faríem 332 00:15:30,810 --> 00:15:35,590 que vulgueu comprovar que mentre la nostra llista no és nul, mentre la nostra llista no és 333 00:15:35,590 --> 00:15:42,730 buit, llavors volem establir la nostra anterior igual a zero. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Pregunta fins ara? 336 00:15:50,230 --> 00:15:53,205 A un pas de--? 337 00:15:53,205 --> 00:15:55,530 >> AUDIÈNCIA: Seria si llista no és igual a null? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Sí, tens tota la raó. 339 00:15:56,950 --> 00:15:58,130 Ho sento molt. 340 00:15:58,130 --> 00:16:00,040 Està llista no és igual a null. 341 00:16:00,040 --> 00:16:01,915 Impressionant. 342 00:16:01,915 --> 00:16:04,245 Tractant de portar tot això a la pantalla. 343 00:16:04,245 --> 00:16:06,870 És una espècie de caure. 344 00:16:06,870 --> 00:16:07,730 Ho sento, nois. 345 00:16:07,730 --> 00:16:11,874 I per últim però no menys important, tot que hem de fer és canvi. 346 00:16:11,874 --> 00:16:12,840 D'acord. 347 00:16:12,840 --> 00:16:15,400 Això va ser molt abarrotat en molt ràpidament. 348 00:16:15,400 --> 00:16:16,800 Tome un segon per mirar això una altra vegada. 349 00:16:16,800 --> 00:16:18,216 Digues-me si tens alguna pregunta. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 Sí? 352 00:16:20,732 --> 00:16:26,940 >> AUDIÈNCIA: Si la llista està en el cap, llavors-- esperar, no importa. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, bo. 354 00:16:27,700 --> 00:16:30,987 Així que això és si la llista està al capdavant, ho remenem al inserim. 355 00:16:30,987 --> 00:16:31,486 Sí? 356 00:16:31,486 --> 00:16:33,777 >> AUDIÈNCIA: Pot explicar la primera sentència if nou? 357 00:16:33,777 --> 00:16:36,149 Si el punter a n és igual a n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Segur. 359 00:16:36,690 --> 00:16:42,780 Per això el nostre objectiu de tota aquesta funció és per esborrar el node que té valor n. 360 00:16:42,780 --> 00:16:47,460 Així que si ens trobem, ja que estem iteració mitjançant la nostra llista, 361 00:16:47,460 --> 00:16:51,770 el node amb el valor de n, que és el que vol eliminar. 362 00:16:51,770 --> 00:16:57,286 Així que tot l'esborrat succeeix dins d'aquest gran if. 363 00:16:57,286 --> 00:16:58,593 Això té sentit? 364 00:16:58,593 --> 00:16:59,480 Fresc. 365 00:16:59,480 --> 00:16:59,990 Sí? 366 00:16:59,990 --> 00:17:02,864 >> AUDIÈNCIA: Potser el que no es pot veure , Però no també necessita una línia 367 00:17:02,864 --> 00:17:06,024 per desplaçar-se per la llista? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Awesome. 369 00:17:06,690 --> 00:17:10,896 Anem a portar això una mica, i anem a llançar aquest dret a la part inferior. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Potser el consell hagués estat una mica millor idea. 372 00:17:15,490 --> 00:17:17,829 Llavors, com anava jo a moure el punter cap endavant? 373 00:17:17,829 --> 00:17:20,184 >> AUDIÈNCIA: Punter iguals punter més un. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Beautiful. 375 00:17:21,599 --> 00:17:25,050 Així que ens permet continuar la iteració a través. 376 00:17:25,050 --> 00:17:26,251 D'acord. 377 00:17:26,251 --> 00:17:27,750 AUDIÈNCIA: no hi hauria una cosa? 378 00:17:27,750 --> 00:17:29,028 HANNAH: Una vegada més? 379 00:17:29,028 --> 00:17:32,444 AUDIÈNCIA: No hauria una cosa després de la gran edat si 380 00:17:32,444 --> 00:17:35,519 declaració [inaudible]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: Quina part? 382 00:17:36,310 --> 00:17:38,350 Ho sento. 383 00:17:38,350 --> 00:17:41,800 >> AUDIÈNCIA: El recorregut, ¿No hauria d'haver una cosa? 384 00:17:41,800 --> 00:17:43,550 HANNAH: Absolutament podria tenir un més. 385 00:17:43,550 --> 00:17:46,930 Perquè tinc el dret de retorn allà, vostè no necessita una cosa. 386 00:17:46,930 --> 00:17:48,760 Però sí, bona pregunta. 387 00:17:48,760 --> 00:17:50,170 Bé, no? 388 00:17:50,170 --> 00:17:52,878 AUDIÈNCIA: Podem pensar punter que es mou a través de la llista 389 00:17:52,878 --> 00:17:56,610 com prendre en el valor de cada node a la llista? 390 00:17:56,610 --> 00:18:00,650 O hem de pensar en ell com tipus de externa a la llista? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: Qualsevol dels dos està bé, crec. 392 00:18:02,350 --> 00:18:05,880 La forma en què m'imagino que és Dic, OK, estic punter. 393 00:18:05,880 --> 00:18:06,520 I aquest sóc jo. 394 00:18:06,520 --> 00:18:07,150 Aquesta és la meva mà. 395 00:18:07,150 --> 00:18:09,960 Vaig a assenyalar el diferent coses que vull per recórrer. 396 00:18:09,960 --> 00:18:12,270 En primer lloc, vaig a assenyalar al capdavant de la llista. 397 00:18:12,270 --> 00:18:14,144 I això em diu que sóc va a apuntar a quatre. 398 00:18:14,144 --> 00:18:18,060 I així a mi, ser externa a la llista, Puc assenyalar cadascun d'aquests elements. 399 00:18:18,060 --> 00:18:19,520 Així que penso en mi mateix com punter. 400 00:18:19,520 --> 00:18:21,645 AUDIÈNCIA: Així que quan s'elimina un d'aquests elements, 401 00:18:21,645 --> 00:18:23,404 elimina a si mateix, per dir-ho. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Exactament. 403 00:18:24,070 --> 00:18:25,920 Així s'elimina la cosa vostè està assenyalant. 404 00:18:25,920 --> 00:18:28,340 Així, en l'exemple que vam veure on som 405 00:18:28,340 --> 00:18:31,670 intentar eliminar 05:00, quan estic apuntant a cinc, 406 00:18:31,670 --> 00:18:34,200 Vull esborrar la El que estic assenyalant. 407 00:18:34,200 --> 00:18:35,870 Exactament. 408 00:18:35,870 --> 00:18:36,577 Sí? 409 00:18:36,577 --> 00:18:39,410 AUDIÈNCIA: Ens hem fet càrrec de la cas en què n no és a la llista? 410 00:18:39,410 --> 00:18:40,460 HANNAH: Si n no és a la llista? 411 00:18:40,460 --> 00:18:43,501 Tot el que passarà és que ets va a recórrer i iterate 412 00:18:43,501 --> 00:18:47,616 a través, i després, vas per arribar a ser punter nul, 413 00:18:47,616 --> 00:18:48,990 i després vas a fer. 414 00:18:48,990 --> 00:18:50,812 >> AUDIÈNCIA: Llavors, tenim per tornar alguna cosa? 415 00:18:50,812 --> 00:18:51,520 HANNAH: Podríem. 416 00:18:51,520 --> 00:18:54,500 La manera que si es defineix aquest funció, només dic que torni 417 00:18:54,500 --> 00:18:55,770 anul·larà independentment. 418 00:18:55,770 --> 00:18:58,360 Però vostè podria tenir alguna cosa com tornar un enter, 419 00:18:58,360 --> 00:19:00,920 i faci que sigui tornar 1 negatiu si falla. 420 00:19:00,920 --> 00:19:03,070 Una cosa per l'estil. 421 00:19:03,070 --> 00:19:04,494 Preguntes con-- sí? 422 00:19:04,494 --> 00:19:05,410 AUDIÈNCIA: [inaudible]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Ho sento? 424 00:19:05,993 --> 00:19:07,419 AUDIÈNCIA: [inaudible]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Segur. 426 00:19:07,960 --> 00:19:11,730 Així que aquesta és la actual-- una vegada que hem fet tot aquest treball de moure 427 00:19:11,730 --> 00:19:16,530 totes aquestes fletxes voltant, tot el nostre objectiu era desfer-se del node 428 00:19:16,530 --> 00:19:18,230 que estem buscant. 429 00:19:18,230 --> 00:19:21,610 Així que en aquest cas, alliberant punter, si estic apuntant a cinc, 430 00:19:21,610 --> 00:19:24,670 és com esborrar aquest node central. 431 00:19:24,670 --> 00:19:27,250 Aquesta és la part punter lliure. 432 00:19:27,250 --> 00:19:29,090 Això té sentit? 433 00:19:29,090 --> 00:19:31,390 >> AUDIÈNCIA: Així que fins i tot pensat No [inaudible]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: Així que va assumir al principi vam tenir alguna llista que va ser ya-- 435 00:19:36,060 --> 00:19:37,220 havien posat això junts. 436 00:19:37,220 --> 00:19:39,761 Així que per tal de construir aquest llista, Van haver [inaudible]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Fresc. 439 00:19:42,750 --> 00:19:44,490 Qualsevol altra cosa amb això? 440 00:19:44,490 --> 00:19:46,386 Sí? 441 00:19:46,386 --> 00:19:49,204 >> AUDIÈNCIA: Què passa si la llista no és igual la línia nul·la? 442 00:19:49,204 --> 00:19:49,704 [Inaudible]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH: Just aquí? 445 00:19:53,080 --> 00:19:53,840 AUDIÈNCIA: Sí. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, tot el que estic fent és que m'estic assegurant de 447 00:19:57,370 --> 00:20:03,250 que abans de tractar d'eliminar la referència de la llista, abans d'intentar accedir a l'anterior, 448 00:20:03,250 --> 00:20:07,210 Jo vull estar segur que no és nul·la pel que no entenc una fallada seg. 449 00:20:07,210 --> 00:20:08,400 Fresc. 450 00:20:08,400 --> 00:20:10,820 >> OK, jo sé que això era bastant molt per passar. 451 00:20:10,820 --> 00:20:14,950 Així que aquesta diapositiva serà posat a la seva disposició. 452 00:20:14,950 --> 00:20:17,341 Així que vostè pot anar a través d'ell amb més detall. 453 00:20:17,341 --> 00:20:17,841 Sí? 454 00:20:17,841 --> 00:20:19,749 >> AUDIÈNCIA: Per què la llista [inaudible]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Segur. 457 00:20:24,670 --> 00:20:27,390 Així llista realment apunta aquest element aquí, 458 00:20:27,390 --> 00:20:29,200 el primer element de la llista. 459 00:20:29,200 --> 00:20:30,748 Per tant, no pot tenir una anterior. 460 00:20:30,748 --> 00:20:31,736 Sí? 461 00:20:31,736 --> 00:20:35,194 >> AUDIÈNCIA: La punta punter a la mateixa adreça a la memòria? 462 00:20:35,194 --> 00:20:38,404 ¿Apunta a la mateixa direcció a la memòria com el node 463 00:20:38,404 --> 00:20:40,640 que està assenyalant? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Sí, apunta a aquest node a la memòria. 465 00:20:43,865 --> 00:20:47,190 >> AUDIÈNCIA: Dret, per la qual quan [inaudible]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: D'alguna manera, sí. 467 00:20:50,580 --> 00:20:51,280 D'acord. 468 00:20:51,280 --> 00:20:52,997 Molt bé, anem a passar amb això. 469 00:20:52,997 --> 00:20:55,330 I si vostè té més preguntes, quedar-se a l'extrem, 470 00:20:55,330 --> 00:20:57,130 i podem passar per això una altra vegada. 471 00:20:57,130 --> 00:20:58,120 Acceptar, fresc. 472 00:20:58,120 --> 00:21:00,490 Ara, hem de seguir endavant per discutir taules, intents, 473 00:21:00,490 --> 00:21:04,940 i arbres, que tens súper familiaritzats en p-5 set, corrector ortogràfic. 474 00:21:04,940 --> 00:21:11,020 >> Així taula hash és només una matriu amb llistes lligades senzilles 475 00:21:11,020 --> 00:21:14,050 o doblement enllaçada llistes que surten. 476 00:21:14,050 --> 00:21:16,380 Així que tenim algun tipus de matriu associativa. 477 00:21:16,380 --> 00:21:21,280 I com sabem quin d'aquests arrays galledes per entrar, 478 00:21:21,280 --> 00:21:24,137 utilitzem una funció hash. 479 00:21:24,137 --> 00:21:26,470 Així que en aquest cas, pot algú endevinar el que la funció hash 480 00:21:26,470 --> 00:21:28,636 seria només sobre la base d'alguns de l'entrada i sortida? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> AUDIÈNCIA: Nombre Carta de l'alfabet. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Exactament. 484 00:21:33,860 --> 00:21:36,160 Només els posa en ordre alfabètic. 485 00:21:36,160 --> 00:21:39,280 Tot el que s'inicia amb una A es posa en la primera cubeta. 486 00:21:39,280 --> 00:21:43,340 Tot amb un B es posa al segon cub, etc., i així successivament. 487 00:21:43,340 --> 00:21:45,620 Impressionant, OK. 488 00:21:45,620 --> 00:21:48,980 I una funció de hash és qualsevol funció que té en una paraula 489 00:21:48,980 --> 00:21:51,910 i li dirà el que cullerot que pertany a. 490 00:21:51,910 --> 00:21:55,150 Així que l'entrada en el nostre array que pertany a. 491 00:21:55,150 --> 00:21:58,080 >> Així que cada vegada que dono el meu hash de funcionar una paraula, 492 00:21:58,080 --> 00:22:00,660 em deu explicar la mateixa col·locar cada vegada. 493 00:22:00,660 --> 00:22:03,270 Així que si fem servir la funció hash de la diapositiva anterior 494 00:22:03,270 --> 00:22:05,950 on som classificació per la primera lletra de l'alfabet, 495 00:22:05,950 --> 00:22:08,230 cada vegada que li dono al meu funció hash "poma" 496 00:22:08,230 --> 00:22:10,180 sempre em de retornar 0. 497 00:22:10,180 --> 00:22:12,890 Així que si jo tinc una poma per posar en el meu taula hash, 498 00:22:12,890 --> 00:22:17,700 si li dono "poma" a la meva funció hash, ha de dir, anar el va posar en va 0. 499 00:22:17,700 --> 00:22:19,980 Si estic a la recerca d'una poma al meu taula hash 500 00:22:19,980 --> 00:22:24,340 i dic, on Apple podria viu, li demana a la seva funció hash. 501 00:22:24,340 --> 00:22:26,900 I diu, aneu a la cullera 0. 502 00:22:26,900 --> 00:22:29,150 Bé? 503 00:22:29,150 --> 00:22:32,660 Preguntes amb funcions hash? 504 00:22:32,660 --> 00:22:34,570 Impressionant. 505 00:22:34,570 --> 00:22:37,320 >> Aquí és una mica més explicació detallada 506 00:22:37,320 --> 00:22:39,570 del que una funció hash podria ser similar. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Bé. 509 00:22:42,960 --> 00:22:45,960 Ara, el problema de coixinet funcions és en un món ideal, 510 00:22:45,960 --> 00:22:48,870 només tindríem una cosa a cada cub. 511 00:22:48,870 --> 00:22:50,900 Però, en realitat, no hi ha no només una paraula 512 00:22:50,900 --> 00:22:54,280 que comença amb A. No hi ha només una paraula que comença per B. Així 513 00:22:54,280 --> 00:22:56,960 en aquest cas, si de sobte aconseguir "baia" 514 00:22:56,960 --> 00:22:58,710 i volem posar- en la nostra taula hash, 515 00:22:58,710 --> 00:23:03,640 i veiem, oh, no, el banana és ja hi és, què farem? 516 00:23:03,640 --> 00:23:05,900 >> Bé, tenim dues opcions. 517 00:23:05,900 --> 00:23:07,990 La primera opció és sondeig lineal, que 518 00:23:07,990 --> 00:23:11,100 només significa anar a buscar la següent cub buit. 519 00:23:11,100 --> 00:23:14,100 Aneu a buscar l'entrada següent matriu buida. 520 00:23:14,100 --> 00:23:15,750 I només cal posar "baia" allà. 521 00:23:15,750 --> 00:23:18,880 Així que sé que se suposa que anar amb plàtan en va un. 522 00:23:18,880 --> 00:23:22,155 Però només cal posar en una galleda de tres, perquè debades 3 és buit. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Una altra opció és probablement el que s'implementa 525 00:23:26,680 --> 00:23:29,220 en el seu p-set, en el qual tingut encadenament separat. 526 00:23:29,220 --> 00:23:33,990 Així que cadascun dels seus cubs, cadascun dels elements de la matriu, 527 00:23:33,990 --> 00:23:38,410 no només manté una paraules, però en realitat manté un punter a una llista de paraules. 528 00:23:38,410 --> 00:23:41,880 Així que si vostè tenia plàtan en la seva taula hash 529 00:23:41,880 --> 00:23:44,740 i de sobte et volies afegir baia, cap problema. 530 00:23:44,740 --> 00:23:51,110 Només ha d'afegir la baia al final, o per Al principi de la seva llista enllaçada. 531 00:23:51,110 --> 00:23:54,040 Acceptar, impressionant. 532 00:23:54,040 --> 00:23:58,490 Preguntes amb haixix taules abans que segueixi? 533 00:23:58,490 --> 00:23:59,850 >> Bé. 534 00:23:59,850 --> 00:24:01,070 Els arbres i els tries. 535 00:24:01,070 --> 00:24:07,980 OK, així que aquesta era una altra opció per a l'aplicació de diccionari. 536 00:24:07,980 --> 00:24:09,100 Es podria haver fet un intent. 537 00:24:09,100 --> 00:24:13,420 Així que és un tipus especial d'arbre que es comporta com una taula hash de diversos nivells. 538 00:24:13,420 --> 00:24:16,862 Així podràs veure el panorama on es té una matriu que 539 00:24:16,862 --> 00:24:19,320 apunta a un munt d'arrays que apunten a un munt d'arrays 540 00:24:19,320 --> 00:24:20,390 que apunten a un munt d'arranjaments. 541 00:24:20,390 --> 00:24:23,140 I anem a veure exactament el que es veuria en una diapositiva futur. 542 00:24:23,140 --> 00:24:26,070 I més en general, un arbre és qualsevol estructura de dades 543 00:24:26,070 --> 00:24:29,710 en el qual les dades són organitzada en alguna jerarquia. 544 00:24:29,710 --> 00:24:32,610 Llavors, on vam veure que tenim algun tipus d'entesa 545 00:24:32,610 --> 00:24:36,130 d'un nivell superior, un nivell superior, 1 següent nivell, un següent nivell. 546 00:24:36,130 --> 00:24:39,690 Així que aquest és probablement el més clar amb alguns exemples específics. 547 00:24:39,690 --> 00:24:40,880 Així que aquí està el nostre arbre. 548 00:24:40,880 --> 00:24:42,970 Es pot veure que té nivells particulars 549 00:24:42,970 --> 00:24:45,480 que vam començar amb aquest node arrel, un. 550 00:24:45,480 --> 00:24:47,640 I podem anar cap avall a través del nostre arbre. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Un arbre binari és una tipus particular d'arbre. 553 00:24:53,910 --> 00:24:56,770 I l'única especificació per a un arbre binari 554 00:24:56,770 --> 00:25:01,130 és que cada node té en la majoria de dues fulles. 555 00:25:01,130 --> 00:25:03,960 Així que vostè no va a veure cap d'aquests nodes tenen tres o quatre 556 00:25:03,960 --> 00:25:06,880 o algun altre nombre de fulls. 557 00:25:06,880 --> 00:25:11,310 I després encara més específic és un arbre binari de cerca 558 00:25:11,310 --> 00:25:18,010 on cada node a l'esquerra de la node tindrà un valor més petit. 559 00:25:18,010 --> 00:25:21,180 I cada valor a la dret serà més gran. 560 00:25:21,180 --> 00:25:26,900 Així que si veus 44 és la nostra arrel, a l'esquerra, 11, 22, i 33 561 00:25:26,900 --> 00:25:28,940 són tots menys de la nostra arrel. 562 00:25:28,940 --> 00:25:33,890 I a la dreta són tots nombres bigger-- 66, 55 i 77. 563 00:25:33,890 --> 00:25:37,380 I aquesta propietat és vàlid en tots els nivells de l'arbre. 564 00:25:37,380 --> 00:25:42,690 >> Així que quan anem a 22, 11, i 33, sent 11 565 00:25:42,690 --> 00:25:46,950 és menor que 22 i 33 és més gran que 22. 566 00:25:46,950 --> 00:25:50,160 I això fa que sigui més fàcil la recerca perquè si estem buscant un nombre, 567 00:25:50,160 --> 00:25:53,877 sabem exactament què branca per seguir cap avall. 568 00:25:53,877 --> 00:25:56,210 Així que això ha de recordar 01:00 mica de cerca binària. 569 00:25:56,210 --> 00:25:56,967 Sí? 570 00:25:56,967 --> 00:25:58,835 >> AUDIÈNCIA: Així que quan estàs descrivint binari, 571 00:25:58,835 --> 00:26:00,587 li va dir que té com a màxim dos fulls? 572 00:26:00,587 --> 00:26:01,170 HANNAH: Mm-hm. 573 00:26:01,170 --> 00:26:02,580 AUDIÈNCIA: Podria tenir menys? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Sí. 575 00:26:03,121 --> 00:26:06,720 Així que diguem, per exemple, no tenir un nombre parell de coses 576 00:26:06,720 --> 00:26:11,791 i que no podia omplir totes les seves fulles, que està bé si un té un. 577 00:26:11,791 --> 00:26:12,290 D'acord? 578 00:26:12,290 --> 00:26:12,789 Impressionant. 579 00:26:12,789 --> 00:26:15,930 Alguna altra pregunta sobre els arbres? 580 00:26:15,930 --> 00:26:16,670 D'acord. 581 00:26:16,670 --> 00:26:20,110 >> Tornar als nostres països com jo estava parlant voltant d'una mica més d'hora, 582 00:26:20,110 --> 00:26:23,900 com tenim aquestes matrius multi-nivell. 583 00:26:23,900 --> 00:26:26,280 Així que en aquest cas, vam començar a la part superior. 584 00:26:26,280 --> 00:26:29,030 I podem seguir qualsevol paraula donada baix. 585 00:26:29,030 --> 00:26:30,780 Així que diguem que volíem buscar Turing. 586 00:26:30,780 --> 00:26:34,380 Comencem a T, seguir cap avall a un array que conté O, 587 00:26:34,380 --> 00:26:37,350 i segueixi cap avall fins que arribar a aquest petit delta que 588 00:26:37,350 --> 00:26:39,060 ens diu, sí, trobem una paraula. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 És clar en intents? 591 00:26:44,120 --> 00:26:48,138 Qualsevol cosa per anar-hi? 592 00:26:48,138 --> 00:26:48,908 Sí? 593 00:26:48,908 --> 00:26:51,866 AUDIÈNCIA: El símbol del delta d'ocupar espai en l'intent? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Sí, així que no ho fa necessàriament tan sols necessita ser un delta. 595 00:26:54,532 --> 00:26:57,760 Però necessitem alguna manera de explicar la nostra computer-- ho sento, 596 00:26:57,760 --> 00:27:01,130 perquè sapiguem que la RTU no és una paraula. 597 00:27:01,130 --> 00:27:04,180 Perquè anem a dir que no tenim aquest concepte d'un delta, aquest concepte 598 00:27:04,180 --> 00:27:09,850 de felicitacions, has trobat una paraula, seria anar a través i iterar T-O-R, 599 00:27:09,850 --> 00:27:11,300 i després dir, impressionant, el vaig trobar! 600 00:27:11,300 --> 00:27:12,670 Ha de ser una paraula. 601 00:27:12,670 --> 00:27:13,720 Però en realitat no és. 602 00:27:13,720 --> 00:27:15,310 Volem que tot Turing sigui una paraula. 603 00:27:15,310 --> 00:27:17,760 Així que hem de tenir alguna cosa en el final que diu, felicitacions, 604 00:27:17,760 --> 00:27:19,051 que ha trobat una paraula legítima. 605 00:27:19,051 --> 00:27:21,680 AUDIÈNCIA: Així que si vostè tenia com 26 lletres en l'alfabet, 606 00:27:21,680 --> 00:27:24,560 vostè realment té 27 tecles en el seu intent? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Awesome, si. 608 00:27:26,010 --> 00:27:28,210 Així que en realitat, crec que serà en la següent diapositiva. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 On si vostè té un node en el seu intent, ets 611 00:27:32,880 --> 00:27:35,800 tindrà 27 fills en lloc de 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Qualsevol pregunta amb això? 614 00:27:40,050 --> 00:27:40,550 Sí? 615 00:27:40,550 --> 00:27:44,569 AUDIÈNCIA: Per què els països ocupen tan molt espai [inaudible] a mesura que avança? 616 00:27:44,569 --> 00:27:47,629 Per què es considera que [inaudible]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Segur. 618 00:27:48,170 --> 00:27:48,790 Tornem. 619 00:27:48,790 --> 00:27:52,350 La pregunta és, per què són països molt més grans 620 00:27:52,350 --> 00:27:54,620 que alguna cosa com una taula hash. 621 00:27:54,620 --> 00:27:57,790 Així que per a cada un d'aquests nivells, encara que no es dibuixen aquí, 622 00:27:57,790 --> 00:28:01,250 has de tenir els 26 caràcters. 623 00:28:01,250 --> 00:28:04,420 I la raó per la qual no es pot dic, oh, però igual que per Turing, I 624 00:28:04,420 --> 00:28:07,570 no cal tenir qualsevol dels mateixes coses en el nivell d'U Bé, 625 00:28:07,570 --> 00:28:11,390 si de sobte volgués afegir cosa que era com T-H, 626 00:28:11,390 --> 00:28:14,800 que havia necessitat de tenir la capacitat d'afegir la paraula. 627 00:28:14,800 --> 00:28:17,330 Així, per cada una sola lletra, vostè va a tenir 628 00:28:17,330 --> 00:28:19,730 a tenir un munt de matrius que surten. 629 00:28:19,730 --> 00:28:24,060 Així que vostè pot veure com es posava molt gran, molt ràpid. 630 00:28:24,060 --> 00:28:26,560 Alguna altra pregunta? 631 00:28:26,560 --> 00:28:28,980 Bé. 632 00:28:28,980 --> 00:28:29,832 Sí? 633 00:28:29,832 --> 00:28:33,210 >> AUDIÈNCIA: Quan és paï- més ràpid que les taules hash? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Quan són paï- més ràpid que les taules hash? 635 00:28:36,280 --> 00:28:39,120 Així que si has tingut una molt funció hash dolent. 636 00:28:39,120 --> 00:28:41,840 Així que diguem que jo estava com, aquí està la seva funció hash. 637 00:28:41,840 --> 00:28:43,660 No importa el que la paraula em dones, jo sempre estic 638 00:28:43,660 --> 00:28:47,740 posarà en ordre l'entrada 0. 639 00:28:47,740 --> 00:28:52,000 I així acabem amb només posar tot en una llista llarga vinculat gran. 640 00:28:52,000 --> 00:28:58,740 I així, un temps de recerca prendria en el pitjor n si és al final de la nostra llista. 641 00:28:58,740 --> 00:29:03,150 Amb l'intent, només hem de iterar a través de les lletres de la paraula. 642 00:29:03,150 --> 00:29:07,080 Així que fins i tot si hem afegit un munt Més paraules per al nostre intent, 643 00:29:07,080 --> 00:29:09,620 no ens portaria més temps per trobar una paraula en particular. 644 00:29:09,620 --> 00:29:11,750 >> Tot el que hem de fer és, per exemple, en aquest cas, 645 00:29:11,750 --> 00:29:17,170 diguem que estem buscant zoom, ens tornaríem a tenir per repetir 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, quatre lletres. 647 00:29:19,840 --> 00:29:22,250 Així que això és només el longitud de la paraula de zoom. 648 00:29:22,250 --> 00:29:25,400 No importa quants més paraules que posen en aquest intent. 649 00:29:25,400 --> 00:29:30,225 Sempre podem aconseguir- en aquests quatre passos. 650 00:29:30,225 --> 00:29:31,215 Impressionant. 651 00:29:31,215 --> 00:29:32,205 Sí? 652 00:29:32,205 --> 00:29:34,185 >> AUDIÈNCIA: Llavors [inaudible] és una matriu, no? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 AUDIÈNCIA: Si ets a la recerca de [inaudible], 655 00:29:37,155 --> 00:29:40,929 hauries d'anar a través de seu arsenal per trobar [inaudible]? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Segur. 657 00:29:41,470 --> 00:29:44,000 AUDIÈNCIA: Això no prenen més temps? 658 00:29:44,000 --> 00:29:46,370 HANNAH: Si vaig a dir que la meva matriu és sempre 659 00:29:46,370 --> 00:29:49,250 serà A, B, C, D, E, F, G, bla, bla, bla, 660 00:29:49,250 --> 00:29:51,630 així que si jo sempre sé que és en el mateix ordre exacte, 661 00:29:51,630 --> 00:29:53,880 si jo sempre sé que és en ordre alfabètic, 662 00:29:53,880 --> 00:29:57,860 Jo només puc dir que O és el nombre fulano de tal en l'alfabet. 663 00:29:57,860 --> 00:29:59,620 Només saltar a aquest lloc. 664 00:29:59,620 --> 00:30:01,860 Perquè recorda, amb matrius, podem accedir 665 00:30:01,860 --> 00:30:06,590 qualsevol element d'aquesta matriu en constant temps si sabem on estem mirant. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 Sí? 668 00:30:09,580 --> 00:30:12,005 >> AUDIÈNCIA: En l'anterior llisqui [inaudible] 27, 669 00:30:12,005 --> 00:30:14,430 però 26 per al primer. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Ho sento? 671 00:30:15,400 --> 00:30:18,800 >> AUDIÈNCIA: No és la primera un 0, de manera que no seria el 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: És clar, per això quan diem que el 27, que és donarem nosaltres índexs de 0-26. 673 00:30:24,900 --> 00:30:28,220 Però si realment comptar aquests cap a fora, que serà 27. 674 00:30:28,220 --> 00:30:30,007 Bona pregunta. 675 00:30:30,007 --> 00:30:30,590 Una mica més? 676 00:30:30,590 --> 00:30:31,200 Sí? 677 00:30:31,200 --> 00:30:34,420 >> AUDIÈNCIA: Així són paï- més lent que les taules hash? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: Tries seran, en teoria, més ràpid que les taules hash 679 00:30:37,920 --> 00:30:39,760 però ocupen més memòria. 680 00:30:39,760 --> 00:30:40,534 Sí? 681 00:30:40,534 --> 00:30:41,450 AUDIÈNCIA: [inaudible]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Ho sento, no et sento. 684 00:30:47,484 --> 00:30:48,400 AUDIÈNCIA: [inaudible]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0 a 25 li dóna 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: 0 a 25 faria donar-li 26, dreta. 688 00:30:56,958 --> 00:30:58,457 >> AUDIÈNCIA: I llavors [inaudible]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Correcte. 690 00:30:59,040 --> 00:31:04,760 Així que el nombre que estem especificant és el nombre de coses a la nostra matriu. 691 00:31:04,760 --> 00:31:07,260 Així que si tenim 27, és ens donarà 0 692 00:31:07,260 --> 00:31:10,620 fins al 26, que donarà ens espai per, en aquest cas, 693 00:31:10,620 --> 00:31:12,770 No estic incloent un apòstrof. 694 00:31:12,770 --> 00:31:17,040 Així que estem rebent del 0 al 25 són les primeres 26 lletres de l'alfabet, 695 00:31:17,040 --> 00:31:18,990 o les 26 lletres de l'alfabet. 696 00:31:18,990 --> 00:31:21,190 I després que el passat cosa, a l'entrada 26, és 697 00:31:21,190 --> 00:31:24,598 serà el xec marca o el delta. 698 00:31:24,598 --> 00:31:26,960 Una mica més? 699 00:31:26,960 --> 00:31:29,130 Impressionant. 700 00:31:29,130 --> 00:31:30,020 Vaig perdre el meu espai. 701 00:31:30,020 --> 00:31:31,020 Acceptar, fresc. 702 00:31:31,020 --> 00:31:33,240 >> Així que ja toquem en això. 703 00:31:33,240 --> 00:31:37,430 Però la gran compensació entre països i taules hash 704 00:31:37,430 --> 00:31:39,720 és que intenta proporcionar, en teoria, constant mirar cap amunt 705 00:31:39,720 --> 00:31:42,890 vegades, però utilitzen una gran quantitat de memòria. 706 00:31:42,890 --> 00:31:46,495 Molt bé, ara tenim una mica estructures menys complicades, 707 00:31:46,495 --> 00:31:49,640 i haurem acabat amb C, i mourem cap a la dreta al llarg. 708 00:31:49,640 --> 00:31:51,930 >> Així piles, vam veure aquest en la conferència en la qual 709 00:31:51,930 --> 00:31:55,020 tenir alguna cosa com un pila de safates on 710 00:31:55,020 --> 00:31:57,330 l'última cosa que posar a la pila que està passant 711 00:31:57,330 --> 00:31:59,500 per ser el primer que es treu. 712 00:31:59,500 --> 00:32:02,880 Així que això és el que realment defineix una pila és que l'últim que es va posar en 713 00:32:02,880 --> 00:32:06,080 serà el primer cosa que enlairar-se. 714 00:32:06,080 --> 00:32:09,279 I la terminologia que fem servir si ens anem a posar alguna cosa, 715 00:32:09,279 --> 00:32:12,070 si anem a afegir alguna cosa a la nostra pila, en diem que empènyer. 716 00:32:12,070 --> 00:32:14,970 I si prenem alguna cosa apagat, en diem popping. 717 00:32:14,970 --> 00:32:17,080 I si anem a aplicar una pila, ens 718 00:32:17,080 --> 00:32:20,660 necessita estar segur de no perdre de vista la mida i la capacitat. 719 00:32:20,660 --> 00:32:24,940 Així que el nombre total d'elements que podem sostenir i el nombre actual d'elements 720 00:32:24,940 --> 00:32:27,880 que estem duent a terme. 721 00:32:27,880 --> 00:32:29,885 >> I de forma molt similar, tenim cues. 722 00:32:29,885 --> 00:32:34,510 I l'única diferència és en lloc de amb les piles, 723 00:32:34,510 --> 00:32:37,630 vam dir l'última cosa que posem en és el primer que ens llevem. 724 00:32:37,630 --> 00:32:40,940 Així que amb les cues, la El primer que posem en 725 00:32:40,940 --> 00:32:43,129 serà el El primer que ens porti a terme. 726 00:32:43,129 --> 00:32:45,420 Així que això és com si vostè és realment fent cua en una botiga 727 00:32:45,420 --> 00:32:48,140 i que està sent ajudat, llavors la primera persona de la fila 728 00:32:48,140 --> 00:32:50,880 hauria de ser la primera persona a ser ajudat. 729 00:32:50,880 --> 00:32:52,220 Així que això seria una cua. 730 00:32:52,220 --> 00:32:55,880 >> Així que hem de fer un seguiment de la mida, la capacitat, i el cap ja que estem 731 00:32:55,880 --> 00:33:01,130 va a portar a tots de la part frontal de la llista en lloc de la part posterior. 732 00:33:01,130 --> 00:33:03,480 Les preguntes sobre això? 733 00:33:03,480 --> 00:33:06,330 Qualsevol pregunta C que li estan molestant? 734 00:33:06,330 --> 00:33:09,590 Les estructures de dades, res d'això divertit? 735 00:33:09,590 --> 00:33:10,530 Molt bé, fresc. 736 00:33:10,530 --> 00:33:14,120 Així que vaig a lliurar-la a Alison a saltar en una mica més de la programació. 737 00:33:14,120 --> 00:33:15,965 >> ALISON: Oh, ja veurem. 738 00:33:15,965 --> 00:33:17,370 Anem a veure el bé que faig aquí. 739 00:33:17,370 --> 00:33:21,410 Bé, vaig a tractar de volar a través d'aquestes coses, nois. 740 00:33:21,410 --> 00:33:24,540 Hannah va ser molt fons sobre totes les seves coses. 741 00:33:24,540 --> 00:33:26,900 Vaig a tractar de donar que una visió general ràpida ràfega 742 00:33:26,900 --> 00:33:31,290 perquè puguem arribar a Davin amb tot les divertides JavaScript i seguretat les coses 743 00:33:31,290 --> 00:33:33,380 que potser en realitat volen saber més sobre. 744 00:33:33,380 --> 00:33:36,600 >> Bé, com va dir Hannah, si vostè té alguna pregunta, 745 00:33:36,600 --> 00:33:39,170 Vaig massa ràpid, si us plau, m'ho saber. 746 00:33:39,170 --> 00:33:42,114 Vaig a respondre a les preguntes que siguin necessàries. 747 00:33:42,114 --> 00:33:45,280 Així que per començar, anem a començar amb probablement una de les primeres coses 748 00:33:45,280 --> 00:33:48,730 que va aprendre amb la web programació, permisos. 749 00:33:48,730 --> 00:33:52,720 Així chmod, nois hauria d'haver estat mestres en això amb tot el web 750 00:33:52,720 --> 00:33:54,870 programació que tens estat fent últimament. 751 00:33:54,870 --> 00:33:57,320 És bàsicament una ordre que canvia els permisos 752 00:33:57,320 --> 00:34:00,779 o els permisos d'accés dels nostres objectes del sistema d'arxius. 753 00:34:00,779 --> 00:34:02,570 Per descomptat, en realitat veure aquests, si estàs 754 00:34:02,570 --> 00:34:04,910 tenir cap problema amb ells durant els seus butlletins de problemes, 755 00:34:04,910 --> 00:34:11,460 que pugui haver utilitzat ls -l, que és llarg, per obtenir el tipus de vista d'aquest tipus, 756 00:34:11,460 --> 00:34:14,209 on realment es visualitzen tots els permisos per a un arxiu. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> I en realitat, només anirem a través bastant ràpid només bonica 759 00:34:20,732 --> 00:34:21,940 molt el que cada un d'ells significa. 760 00:34:21,940 --> 00:34:24,481 Així que hem d aquí, que només representa el directori. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Òbviament aquí, veiem rwx, que és de lectura, escriptura, i executable. 763 00:34:31,739 --> 00:34:37,090 Aquests també poden ser representats en forma de bits, que anem a entrar a la pàgina següent. 764 00:34:37,090 --> 00:34:40,699 Així que cada tríada que vam veure aquí, per la qual cosa és tres tríades. 765 00:34:40,699 --> 00:34:48,120 Hem rwx, r res x i r res x per a aquest primer arxiu. 766 00:34:48,120 --> 00:34:49,690 És aquesta estructura general. 767 00:34:49,690 --> 00:34:50,940 >> Així que tenim algun directori. 768 00:34:50,940 --> 00:34:53,999 Tenim alguns grups d'usuaris amb aquests permisos. 769 00:34:53,999 --> 00:34:57,040 Alguns grup que té aquests permisos, i un món que té un permís. 770 00:34:57,040 --> 00:34:59,420 Vostè pot pensar en això com una tríada. 771 00:34:59,420 --> 00:35:01,130 Vostè pot pensar en això com tres bits. 772 00:35:01,130 --> 00:35:04,060 Així que poden contenir valors en qualsevol lloc des de 0 fins a 773 00:35:04,060 --> 00:35:07,350 a 7, que és per què de vegades vam haver fas chmod 774 00:35:07,350 --> 00:35:17,510 600 en comptes de chmod rw el que sigui. 775 00:35:17,510 --> 00:35:19,170 Anem a entrar en un exemple allà. 776 00:35:19,170 --> 00:35:24,260 Però, bàsicament, es pot pensar d'aquests, ja sigui com només rwx, 777 00:35:24,260 --> 00:35:28,520 o es pot pensar en ells com alguns número on aquest primer aquí 778 00:35:28,520 --> 00:35:31,480 representa un nombre entre 0 i 7, aquest segon 1 779 00:35:31,480 --> 00:35:33,970 representa un nombre entre 0 i 7, i la tercera 780 00:35:33,970 --> 00:35:38,245 representa un nombre entre 0 i 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r té un valor de 4. w té un valor de 2, i x 782 00:35:42,700 --> 00:35:49,230 té un valor d'1, de manera que aquest permís aquí chmod 700. 783 00:35:49,230 --> 00:35:53,520 Perquè en aquest cas aquí, es diu que haver el primer bit no es va bolcar sobre. 784 00:35:53,520 --> 00:35:55,380 Així disposem de 4 per a lectura. 785 00:35:55,380 --> 00:35:58,730 El segon bit es va encendre per w, que és 2, de manera que ara tenim 6. 786 00:35:58,730 --> 00:36:02,070 I el tercer bit s'inverteix en per x, que és 1, pel que tenim 7. 787 00:36:02,070 --> 00:36:04,820 I, per descomptat, el nostre grup i el nostre món són cada un 0. 788 00:36:04,820 --> 00:36:07,770 Així que aquest és també el equivalent a chmod 700. 789 00:36:07,770 --> 00:36:12,081 I sens dubte prova a comprendre el mapatge entre ells. 790 00:36:12,081 --> 00:36:14,080 No estic segur de si té pujar en una prova abans, 791 00:36:14,080 --> 00:36:18,590 però seria una pregunta que jo podria demanar. 792 00:36:18,590 --> 00:36:22,110 >> Només una mica anant encara més en chmod aquí, aquí 793 00:36:22,110 --> 00:36:27,730 és la molt general estructura d'una trucada chmod. 794 00:36:27,730 --> 00:36:29,500 Així que per descomptat, hem chmod aquí. 795 00:36:29,500 --> 00:36:34,410 Les referències, el que això es refereix al fet que és que estem donant aquests permisos a 796 00:36:34,410 --> 00:36:36,570 o que estem prenent aquests Permisos de distància de. 797 00:36:36,570 --> 00:36:44,330 Així que tenim una aquí als permisos, com li hem donat a vostè chmod a + X, 798 00:36:44,330 --> 00:36:45,440 com veurem aviat. 799 00:36:45,440 --> 00:36:48,460 un sol significa donar a aquests específics permisos a tothom. 800 00:36:48,460 --> 00:36:49,600 Donar-los a tots. 801 00:36:49,600 --> 00:36:55,370 Pel que podria molt bé tenir o més x o més x g o o més x o múltiple 802 00:36:55,370 --> 00:36:55,870 dels mateixos. 803 00:36:55,870 --> 00:36:59,280 Així que la primera part és sempre serà referències. 804 00:36:59,280 --> 00:37:03,220 Qui som nosaltres donant aquests permisos a, o que estem prenent lluny de? 805 00:37:03,220 --> 00:37:04,850 >> El segon és l'operador. 806 00:37:04,850 --> 00:37:07,350 Així que vostès han tractat sobretot amb avantatge. 807 00:37:07,350 --> 00:37:12,140 Això dóna permisos a qualsevol que vostè els està donant, 808 00:37:12,140 --> 00:37:14,840 mentre que menys, lògicament, els elimina. 809 00:37:14,840 --> 00:37:16,880 Així que res massa terrible allà. 810 00:37:16,880 --> 00:37:23,060 I llavors les maneres és el que parlem amb la lectura, escriptura o execució. 811 00:37:23,060 --> 00:37:29,070 Així que un plus x significa donar executable permisos a tothom. 812 00:37:29,070 --> 00:37:33,430 I després, per descomptat, en la qual arxiu o directori específic. 813 00:37:33,430 --> 00:37:33,980 D'acord? 814 00:37:33,980 --> 00:37:36,010 Tothom bo amb chmod? 815 00:37:36,010 --> 00:37:37,850 No està malament? 816 00:37:37,850 --> 00:37:42,417 >> OK, així HTML, algun de vostès està edat suficient A-- edat MySpace? 817 00:37:42,417 --> 00:37:44,750 Vaig enviar aquesta al meu secció, i, literalment, la meitat de les persones 818 00:37:44,750 --> 00:37:45,790 em va mirar com si estigués boig. 819 00:37:45,790 --> 00:37:47,498 I jo estava com, nois, no estem tan vell. 820 00:37:47,498 --> 00:37:48,910 Vingui. 821 00:37:48,910 --> 00:37:53,360 Així HyperText Markup Language, sincerament, és només una forma per a vostè 822 00:37:53,360 --> 00:37:57,990 per mostrar certes coses a la web. 823 00:37:57,990 --> 00:37:59,210 Així que és un llenguatge de marques. 824 00:37:59,210 --> 00:38:00,640 No és un llenguatge de script. 825 00:38:00,640 --> 00:38:02,160 No hi ha lògica en ella. 826 00:38:02,160 --> 00:38:05,710 És simplement per canviar el Apareix manera una mica. 827 00:38:05,710 --> 00:38:07,670 OK, així que això és un important distinció de fer. 828 00:38:07,670 --> 00:38:12,030 És considerat com un llenguatge de marques, no és un llenguatge de scripting. 829 00:38:12,030 --> 00:38:15,100 >> Així que aquí tenim les nostres etiquetes HTML. 830 00:38:15,100 --> 00:38:20,390 En aquesta diapositiva són probablement la major part del els que vostè ha de conèixer 831 00:38:20,390 --> 00:38:22,390 i ser molt còmode. 832 00:38:22,390 --> 00:38:25,700 Així que, òbviament, tenim nostra etiqueta HTML, que 833 00:38:25,700 --> 00:38:29,930 designa que tot en entre aquests dos hi haurà HTML. 834 00:38:29,930 --> 00:38:33,070 Tenim una mica d'enllaç, que òbviament li donarà 835 00:38:33,070 --> 00:38:34,990 un enllaç a una pàgina web externa. 836 00:38:34,990 --> 00:38:37,520 Alguns títol, dins del nostre cap aquí. 837 00:38:37,520 --> 00:38:40,020 I tenim el nostre cos amb h1, que és una capçalera, 838 00:38:40,020 --> 00:38:42,260 per el que va a fer que sigui agradable i en negreta i més gran. 839 00:38:42,260 --> 00:38:46,040 I després, tenim alguns p, que és un paràgraf. 840 00:38:46,040 --> 00:38:49,000 Probablement hauria de saber i estar familiaritzat amb les coses 841 00:38:49,000 --> 00:38:54,030 com la forma d'inserir una imatge, són Hi ha altres classes de capçalera? 842 00:38:54,030 --> 00:38:57,240 Definitivament, m'agradaria ser còmode amb div. 843 00:38:57,240 --> 00:39:00,840 Així aquests tenen la majoria de les etiquetes que vostè ha d'estar familiaritzat. 844 00:39:00,840 --> 00:39:04,370 Però, és clar, com tot a la CS 50, la llista no és exhaustiva. 845 00:39:04,370 --> 00:39:08,200 Així que assegureu-vos de posar al dia això. 846 00:39:08,200 --> 00:39:13,260 >> CSS, per CSS, si algun de vostès miren el meu seminari de fa dues setmanes, 847 00:39:13,260 --> 00:39:16,250 és en realitat una forma l'estil de la seva pàgina web? 848 00:39:16,250 --> 00:39:18,950 OK, així que tenim un llenguatge de marques. 849 00:39:18,950 --> 00:39:23,220 HTML, que s'encarrega de només el text i on podria estar a la pàgina. 850 00:39:23,220 --> 00:39:25,760 Però CSS és realment el que fa que sigui bonica. 851 00:39:25,760 --> 00:39:30,690 Vostè podria tenir aquests en la seva HTML arxius, però com anem a parlar més tard, 852 00:39:30,690 --> 00:39:32,660 Estic bastant segur que podria ser la següent diapositiva, que 853 00:39:32,660 --> 00:39:35,620 És una pràctica comuna, i en realitat pràctica que realment ens animem, 854 00:39:35,620 --> 00:39:40,670 perquè vostè mantingui els van separar quan parlar de MVC i tot aquest paradigma. 855 00:39:40,670 --> 00:39:42,490 Això és realment el que això alimenta. 856 00:39:42,490 --> 00:39:46,110 >> Així CSS és només una manera de fan que les coses es veuen bastant. 857 00:39:46,110 --> 00:39:50,500 Les coses aquí, com cos i #title i .info, 858 00:39:50,500 --> 00:39:54,340 aquests són anomenats selectors i el que fan és seleccionar coses específiques 859 00:39:54,340 --> 00:39:59,260 dins del seu arxiu HTML i aplicar qualsevol estil, 860 00:39:59,260 --> 00:40:04,090 qualsevol classe de coses que desitja, a aquest element específic de la seva web 861 00:40:04,090 --> 00:40:04,590 pàgina. 862 00:40:04,590 --> 00:40:08,820 Així que aquí tenim una color de fons i un color 863 00:40:08,820 --> 00:40:12,450 i una família de fonts que està sent aplicat al que està en el cos. 864 00:40:12,450 --> 00:40:15,530 Així que si mirem cap enrere aquí, no s'aplicaria al títol. 865 00:40:15,530 --> 00:40:22,340 Només s'aplicaria al que és en aquests selectors cos, d'acord? 866 00:40:22,340 --> 00:40:25,250 >> Amb el títol aquí, això és serà el mateix, 867 00:40:25,250 --> 00:40:28,410 el color del text sent blau només va 868 00:40:28,410 --> 00:40:33,870 per afectar el que està dins els selectors de títol. 869 00:40:33,870 --> 00:40:36,580 Així com informació aquí, el text serà de color rosa, 870 00:40:36,580 --> 00:40:38,600 de qualsevol informació, que està just aquí. 871 00:40:38,600 --> 00:40:40,860 Així que l'únic que seria color de rosa en aquesta pàgina 872 00:40:40,860 --> 00:40:44,100 és la data, dilluns, novembre 17, 2014. 873 00:40:44,100 --> 00:40:48,770 OK, així que CSS és només una manera de tenir més control over-- si? 874 00:40:48,770 --> 00:40:51,850 >> AUDIÈNCIA: Per què tens utilitzar el hash amb el títol? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: Diapositiva següent, prometo! 876 00:40:55,170 --> 00:40:56,810 Anem a arribar-hi. 877 00:40:56,810 --> 00:40:59,830 Així que és per això que hem de fer servir hash. 878 00:40:59,830 --> 00:41:03,429 Així selectors assumeixen tres principals formes de parlar amb vostès sobre. 879 00:41:03,429 --> 00:41:05,595 Jo fyou vull aprendre més, hi ha molt per aquí. 880 00:41:05,595 --> 00:41:07,540 Hi ha una gran documentació CSS. 881 00:41:07,540 --> 00:41:12,680 Hi ha un nom d'etiqueta, que té a veure amb només els seus etiquetes normals en HTML. 882 00:41:12,680 --> 00:41:17,210 Així h1, p, div, h2, aquest tipus de coses. 883 00:41:17,210 --> 00:41:20,320 I només podem anomenar aquells com és. 884 00:41:20,320 --> 00:41:22,650 Així que com veiem aquí amb cos, és una etiqueta normal. 885 00:41:22,650 --> 00:41:26,660 Així que podem cos només cal posar quan estem parlant al nostre arxiu CSS. 886 00:41:26,660 --> 00:41:29,730 >> Amb títol, tota la raó per la qual té aquest hash és que tenim el que és 887 00:41:29,730 --> 00:41:31,010 considerat un identificador. 888 00:41:31,010 --> 00:41:35,400 Així que una identificació ha de ser sempre únic a la seva pàgina HTML 889 00:41:35,400 --> 00:41:37,930 de manera que quan vostè està referint-se a ella, 890 00:41:37,930 --> 00:41:41,990 saps que només et refereixes a una cosa específica. 891 00:41:41,990 --> 00:41:46,270 Així que en aquest cas aquí, amb el nostre h1 aquí, CS 50 sessió de revisió, 892 00:41:46,270 --> 00:41:47,810 tenim un id de títol. 893 00:41:47,810 --> 00:41:54,280 Així doncs, per referir-se només a la tros del nostre HTML, fem un títol hash. 894 00:41:54,280 --> 00:41:58,080 Només per conveni, els ID es designen amb un hash al davant d'ells. 895 00:41:58,080 --> 00:42:01,650 De la mateixa manera, veiem informació que aquí hi ha una classe. 896 00:42:01,650 --> 00:42:06,070 I així, la classe amb CSS és designada com una mena de punt 897 00:42:06,070 --> 00:42:08,895 o dot el que la classe és. 898 00:42:08,895 --> 00:42:10,850 Així que en aquest cas aquí, és informació. 899 00:42:10,850 --> 00:42:13,090 >> Així que em retracte. 900 00:42:13,090 --> 00:42:16,200 Tots dos d'aquests seria rosa per al nostre CSS aquí 901 00:42:16,200 --> 00:42:18,430 perquè tots dos tenen una classe d'informació. 902 00:42:18,430 --> 00:42:23,070 I en el nostre arxiu CSS, hem designat que qualsevol cosa amb una classe d'info 903 00:42:23,070 --> 00:42:24,120 haurà de ser de color rosa. 904 00:42:24,120 --> 00:42:25,968 Té això sentit? 905 00:42:25,968 --> 00:42:27,435 Sí? 906 00:42:27,435 --> 00:42:30,731 >> AUDIÈNCIA: Si es va a fer tot en el cos blanc, 907 00:42:30,731 --> 00:42:32,814 i després intenta fer alguna cosa al seu interior blau, 908 00:42:32,814 --> 00:42:34,770 caldria causar problemes? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: Així és CSS fulles d'estil en cascada. 910 00:42:37,310 --> 00:42:40,730 Així que qualsevol cosa és cap al part inferior tindrà prioritat. 911 00:42:40,730 --> 00:42:44,080 Així que si vostè fa alguna cosa amb el cos, i fas tot el blanc, 912 00:42:44,080 --> 00:42:49,300 i més tard canvia el títol o canvia el text dins del cos, 913 00:42:49,300 --> 00:42:50,560 sobreescriu això. 914 00:42:50,560 --> 00:42:55,360 Així que qualsevol cosa cap a la part inferior tindrà prioritat. 915 00:42:55,360 --> 00:42:56,730 Sí? 916 00:42:56,730 --> 00:42:59,627 >> Audiència: I IDs són únics, però les classes poden ser més? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Correcte. 918 00:43:00,210 --> 00:43:06,320 Així que els ID han de ser únics, i les classes poden consulteu tantes coses com li agradaria. 919 00:43:06,320 --> 00:43:07,580 Alguna altra pregunta? 920 00:43:07,580 --> 00:43:09,800 Sí. 921 00:43:09,800 --> 00:43:11,210 >> AUDIÈNCIA: [inaudible]. 922 00:43:11,210 --> 00:43:13,509 Em pregunto si això fa la diferència. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Ho sento, ¿Quina era la pregunta? 924 00:43:15,217 --> 00:43:18,960 AUDIÈNCIA: Hi ha petites "F" i capital "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: Així que la diferència entre els petits "f" i capital "F" 926 00:43:21,440 --> 00:43:22,606 no ha de fer una diferència. 927 00:43:22,606 --> 00:43:26,330 Així que "f" serà el 15 de qualsevol manera. 928 00:43:26,330 --> 00:43:28,130 Fresc, tota la resta? 929 00:43:28,130 --> 00:43:29,930 Tothom bo, CSS? 930 00:43:29,930 --> 00:43:30,850 Sí? 931 00:43:30,850 --> 00:43:31,790 >> AUDIÈNCIA: Ho sento. 932 00:43:31,790 --> 00:43:35,550 Es pot tenir una classe i una identificació? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Sí, es pot. 934 00:43:38,030 --> 00:43:40,420 Les coses poden tenir tant una classe i un ID. 935 00:43:40,420 --> 00:43:44,670 I recomano encaridament provar aquests pel seu compte. 936 00:43:44,670 --> 00:43:50,480 CSS vostè aprendrà millor amb només fer alguna cosa, la pàgina web molt simple, 937 00:43:50,480 --> 00:43:53,440 l'elaboració d'una mica de CSS, i just veure com interactuen. 938 00:43:53,440 --> 00:43:56,970 I obtindrà una molt bona, sentit intuïtiu de com funciona. 939 00:43:56,970 --> 00:43:58,810 >> Bé, tothom bo amb CSS? 940 00:43:58,810 --> 00:44:01,280 Ets tot va a fer bells llocs web amb CSS ara. 941 00:44:01,280 --> 00:44:05,460 OK, millors pràctiques, només coses a tenir en compte, les coses 942 00:44:05,460 --> 00:44:09,810 que-- és per això que atraquemos que per al dissenyador i tot això. 943 00:44:09,810 --> 00:44:11,820 Així que tanca totes les seves etiquetes HTML. 944 00:44:11,820 --> 00:44:14,840 Així que si vostè té un cos obert, ha d'haver un cos prop. 945 00:44:14,840 --> 00:44:18,180 Si vostè té un apartat obert, ha d'haver un paràgraf a prop. 946 00:44:18,180 --> 00:44:19,555 Revisi per veure la seva pàgina valida. 947 00:44:19,555 --> 00:44:23,330 Vostès han d'estar molt familiaritzat amb això des p-7 set 948 00:44:23,330 --> 00:44:26,350 amb CS 50 finances amb el validador W3. 949 00:44:26,350 --> 00:44:28,340 I com vaig dir abans, un dels nostres grans paradigmes 950 00:44:28,340 --> 00:44:33,780 es separa el seu estil amb CSS del seu marge de benefici, que és HTML. 951 00:44:33,780 --> 00:44:36,900 I després, per descomptat, tenim aquest gran XKCD aquí baix. 952 00:44:36,900 --> 00:44:38,280 Yay, alleujament còmic! 953 00:44:38,280 --> 00:44:41,340 >> Acceptar, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Entre aquests i HTTP, bàsicament són dos protocols. 955 00:44:44,650 --> 00:44:46,810 Així que vostè podria pensar d'ells com un conjunt de regles 956 00:44:46,810 --> 00:44:50,110 que regeixen la forma en les coses moure a través d'internet. 957 00:44:50,110 --> 00:44:53,410 Així de control de transmissió protocol o protocol d'Internet, 958 00:44:53,410 --> 00:44:57,280 és només una manera d'assegurar-se que que les dades es posa a on va 959 00:44:57,280 --> 00:45:00,030 i que sabem si que mai ens falta de dades. 960 00:45:00,030 --> 00:45:03,520 Així que si vostès pensen tornar a la conferència fa un parell de setmanes amb David 961 00:45:03,520 --> 00:45:06,980 on vam tenir quatre sobres, que van ser tots comptats com un de quatre, 962 00:45:06,980 --> 00:45:11,300 dos quatre, tres de quatre, quatre de 4, això és només un conjunt de regles. 963 00:45:11,300 --> 00:45:13,830 Nosaltres vam dir, OK, sempre que estem l'enviament de més d'un paquet, 964 00:45:13,830 --> 00:45:16,610 anem a numerar amb el que el nombre és 965 00:45:16,610 --> 00:45:19,040 i quants total que es l'usuari ha de rebre. 966 00:45:19,040 --> 00:45:22,540 >> I això és només el que diu està rebent les dades si es 967 00:45:22,540 --> 00:45:26,120 han aconseguit tot, o si alguna cosa es va perdre en el camí. 968 00:45:26,120 --> 00:45:28,840 I han de demanar una altra vegada. 969 00:45:28,840 --> 00:45:31,140 Això és en realitat un conjunt de regles. 970 00:45:31,140 --> 00:45:33,650 Així com es pot pensar en ell, d'acord? 971 00:45:33,650 --> 00:45:37,700 I també, que especifica el port, el qual vostès can-- sé durant la conferència, 972 00:45:37,700 --> 00:45:39,170 tenien tota una llista de ports. 973 00:45:39,170 --> 00:45:41,630 Però nosaltres no els tenim aquí ara mateix. 974 00:45:41,630 --> 00:45:45,290 >> Protocol de transferència d'hipertext Així és, de nou, és un altre protocol. 975 00:45:45,290 --> 00:45:48,630 Així que és un altre conjunt de regles que governar, en aquest cas, 976 00:45:48,630 --> 00:45:51,130 com es transfereix l'hipertext. 977 00:45:51,130 --> 00:45:54,340 Així que només permet als navegadors parlar amb els servidors web. 978 00:45:54,340 --> 00:45:56,910 I com hem dit aquí, és com a presa de contacte humà. 979 00:45:56,910 --> 00:46:00,480 És només una forma de governar com el servidor web és 980 00:46:00,480 --> 00:46:02,690 va a interactuar amb el navegador. 981 00:46:02,690 --> 00:46:05,660 I tenim només un parell d'exemples. 982 00:46:05,660 --> 00:46:09,100 Tenim algunes peticions aquí on GET és el mètode. 983 00:46:09,100 --> 00:46:13,760 Tenim HTTP 1.1, que és versió de protocol per a nosaltres. 984 00:46:13,760 --> 00:46:17,230 I després, l'amfitrió, que és el que en realitat estem tractant d'accedir. 985 00:46:17,230 --> 00:46:21,800 I llavors, com es veu aquí, obtenir alguna resposta amb aquest 200 986 00:46:21,800 --> 00:46:25,032 Acceptar com el nostre codi de resposta HTTP. 987 00:46:25,032 --> 00:46:27,240 Tenim una gran llista que vaig per aixecar en un segon 988 00:46:27,240 --> 00:46:29,430 que vostès han d'estar familiaritzats amb. 989 00:46:29,430 --> 00:46:35,750 I nosaltres tenim aquest tipus de contingut de text / HTML, que es limita a dir quin tipus de dades 990 00:46:35,750 --> 00:46:39,990 estem rebent des del servidor, d'acord? 991 00:46:39,990 --> 00:46:44,230 Aquest amfitrió i aquest tipus de contingut són part de les capçaleres HTTP. 992 00:46:44,230 --> 00:46:49,610 Vostè pot tenir pocs o tan poc com necessària per al context del 993 00:46:49,610 --> 00:46:50,580 vostè està tractant. 994 00:46:50,580 --> 00:46:53,371 De vegades, vostè té un munt de informació procedent del seu servidor. 995 00:46:53,371 --> 00:46:56,040 Potser estan sol·licitant molt d'informació de l'usuari. 996 00:46:56,040 --> 00:46:57,600 Varia en funció del context. 997 00:46:57,600 --> 00:47:01,144 Si ens fixem en CS 50 Estudi, hi ha molt més en això. 998 00:47:01,144 --> 00:47:03,060 Però tenim un munt d'aconseguir a través, així que em vaig 999 00:47:03,060 --> 00:47:05,760 anar a la dreta per davant si això està bé amb vosaltres? 1000 00:47:05,760 --> 00:47:07,960 Fresc. 1001 00:47:07,960 --> 00:47:08,460 Espereu. 1002 00:47:08,460 --> 00:47:11,182 Definitivament he de tota llista de-- eh! 1003 00:47:11,182 --> 00:47:13,140 No sé per què això és tot el camí fins aquí. 1004 00:47:13,140 --> 00:47:15,660 Vaig pensar que literalment vaig mudar mentre estava sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> DAVIN: Vols ensenyar? 1006 00:47:16,540 --> 00:47:17,420 O vols que t'ho ensenyo? 1007 00:47:17,420 --> 00:47:20,010 >> AUDIÈNCIA: Vaig pensar que podríem simplement mostrar a començar. 1008 00:47:20,010 --> 00:47:22,210 Vull dir, vostè pot entrar en encara més, però jo 1009 00:47:22,210 --> 00:47:26,030 va pensar que tenia més sentit des que estava parlant només d'estats HTTP. 1010 00:47:26,030 --> 00:47:28,200 Així que aquí està la llista completa. 1011 00:47:28,200 --> 00:47:31,730 Suposo que el que passarà és Davin va a anar-hi més tard. 1012 00:47:31,730 --> 00:47:35,330 Però hi ha una llista completa un Mostra el gust per venir. 1013 00:47:35,330 --> 00:47:41,640 Bé, anem a blow-- això va ser un curs intensiu de PHP com cap altre. 1014 00:47:41,640 --> 00:47:44,874 >> Així PHP, preprocessador d'hipertext, és un backronym recursiva, 1015 00:47:44,874 --> 00:47:46,540 el que significa que va ser nomenat una altra cosa. 1016 00:47:46,540 --> 00:47:49,050 I després hi havia com, aquest en realitat no té sentit. 1017 00:47:49,050 --> 00:47:52,210 Així que només nomenen it-- i era un acrònim, 1018 00:47:52,210 --> 00:47:54,840 de manera que només ho va fer PHP preprocessador d'hipertext, que 1019 00:47:54,840 --> 00:47:55,980 simplement no té sentit. 1020 00:47:55,980 --> 00:47:57,714 Història divertida. 1021 00:47:57,714 --> 00:47:58,880 És un llenguatge de programació. 1022 00:47:58,880 --> 00:48:02,360 Així que per molt a fer èmfasi que HTML no és un llenguatge de programació, 1023 00:48:02,360 --> 00:48:05,350 és un llenguatge de marques, PHP és un llenguatge de programació. 1024 00:48:05,350 --> 00:48:07,422 Com saps que això és perquè no és lògica. 1025 00:48:07,422 --> 00:48:08,380 Hi ha condicionals. 1026 00:48:08,380 --> 00:48:12,750 Tenim les variables, mentre que nosaltres tenir cap d'aquestes coses en HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Molt bé, llavors tenim aquesta petita poc aquí que és com un gust de PHP. 1028 00:48:16,960 --> 00:48:20,510 Així el bàsic, noms de variables començar amb un signe de dòlar. 1029 00:48:20,510 --> 00:48:21,500 Hi ha molta gent que li agrada. 1030 00:48:21,500 --> 00:48:22,371 Recorda a nosaltres diners. 1031 00:48:22,371 --> 00:48:22,995 Tot és genial. 1032 00:48:22,995 --> 00:48:25,280 Tots volem PHP. 1033 00:48:25,280 --> 00:48:28,020 Així que no especifiquem 1 Tipus de més de variable. 1034 00:48:28,020 --> 00:48:29,995 Es determina en temps d'execució. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 L'intèrpret serà, oh, només haurem de córrer a través, 1037 00:48:35,890 --> 00:48:39,565 i d'acord amb el context, Anem a veure quins tipus de tipus 1038 00:48:39,565 --> 00:48:41,560 aquestes variables han de tenir. 1039 00:48:41,560 --> 00:48:42,815 No hi ha funció principal. 1040 00:48:42,815 --> 00:48:43,690 Les coses van a funcionar. 1041 00:48:43,690 --> 00:48:47,851 Vostès amb la seva importació en el seu última p-set, t'adonaràs d'això. 1042 00:48:47,851 --> 00:48:49,350 No hi havia realment una funció principal. 1043 00:48:49,350 --> 00:48:52,070 Vostè acaba d'escriure el que que volia passar. 1044 00:48:52,070 --> 00:48:53,280 I només va succeir. 1045 00:48:53,280 --> 00:48:56,760 Així que això és PHP per a vostè. 1046 00:48:56,760 --> 00:48:59,180 >> Les matrius són molt similars. 1047 00:48:59,180 --> 00:49:01,270 Encara tenim aquest suport. 1048 00:49:01,270 --> 00:49:05,940 Aquí, tenim alguna variable diu arr, i és igual 1049 00:49:05,940 --> 00:49:08,540 A-- tenim la nostra normalitat notació de claudàtors. 1050 00:49:08,540 --> 00:49:10,630 I tenim algun valor clau. 1051 00:49:10,630 --> 00:49:14,630 I la gran diferència entre C i PHP arrays 1052 00:49:14,630 --> 00:49:19,330 és que podem tenir aquest associate-- podem associar valors a les tecles. 1053 00:49:19,330 --> 00:49:22,440 Així que en lloc de només tenir una matriu que està indexat 1054 00:49:22,440 --> 00:49:26,630 pel nombre o la posició d'aquest element de la matriu, 1055 00:49:26,630 --> 00:49:29,060 en realitat podem associar amb una clau. 1056 00:49:29,060 --> 00:49:36,700 On podem dir, OK, vull el que sigui valor s'associa amb la fruita. 1057 00:49:36,700 --> 00:49:39,280 I potser tenim la fruita va anar a plàtan. 1058 00:49:39,280 --> 00:49:41,760 Així que tornaria plàtan per a nosaltres. 1059 00:49:41,760 --> 00:49:44,100 >> Però bàsicament, el més cosa de gran abast sobre aquest 1060 00:49:44,100 --> 00:49:47,960 és que si vostès recordin la demostració de la conferència en la qual, bàsicament, 1061 00:49:47,960 --> 00:49:53,050 abecedari reescriure en PHP, i recerca era-- era realment li agrada, 1062 00:49:53,050 --> 00:49:55,007 no existeix aquesta clau? 1063 00:49:55,007 --> 00:49:56,590 Això és molt amable de la potència de la mateixa. 1064 00:49:56,590 --> 00:49:58,560 Vostè no necessita iterar a través de la seva matriu. 1065 00:49:58,560 --> 00:50:00,311 No necessita saber el que l'espai que es troba. 1066 00:50:00,311 --> 00:50:01,976 Podria ser al final o el principi. 1067 00:50:01,976 --> 00:50:04,790 Com sempre que se sàpiga la clau que està associada amb el valor, 1068 00:50:04,790 --> 00:50:09,740 PHP només pot escopir aquest valor còpia a la dreta en vostè, ¿d'acord? 1069 00:50:09,740 --> 00:50:12,960 >> I després, també només tenir només perquè 1070 00:50:12,960 --> 00:50:16,750 pot tenir parells de valors clau no vol dir que vostè hagi de fer. 1071 00:50:16,750 --> 00:50:19,180 També es pot simplement crear una matriu normal, com aquí, 1072 00:50:19,180 --> 00:50:21,540 a la part inferior, on és només un, dos, tres, quatre. 1073 00:50:21,540 --> 00:50:22,510 Aquests són els nostres valors. 1074 00:50:22,510 --> 00:50:25,320 I de fet, les seves tecles són els índexs. 1075 00:50:25,320 --> 00:50:26,830 Així que la clau per a una seria zero. 1076 00:50:26,830 --> 00:50:28,610 La clau per a dues seria un. 1077 00:50:28,610 --> 00:50:31,910 Així successivament i així successivament, llevat assigna explícitament una clau, 1078 00:50:31,910 --> 00:50:34,630 vostè podria suposar que el valor és sols el seu índex. 1079 00:50:34,630 --> 00:50:37,290 Té això sentit per a tothom? 1080 00:50:37,290 --> 00:50:38,070 No hi ha preguntes? 1081 00:50:38,070 --> 00:50:38,930 Impressionant. 1082 00:50:38,930 --> 00:50:44,420 >> Acceptar, foreach és una manera de iterar a través de les seves matrius. 1083 00:50:44,420 --> 00:50:47,490 Així que tenim alguna cosa aquí, només l'estructura general. 1084 00:50:47,490 --> 00:50:51,020 Així foreach, el nom de la nostra matriu, com ho 1085 00:50:51,020 --> 00:50:53,930 que voleu marcar cada element en la matriu, 1086 00:50:53,930 --> 00:50:57,270 i podem fer alguna cosa amb aquest element o amb aquest valor. 1087 00:50:57,270 --> 00:50:58,680 Així que tenim un exemple aquí. 1088 00:50:58,680 --> 00:51:05,770 Tenim un associativa matriu amb aquestes dues entrades 1089 00:51:05,770 --> 00:51:10,080 amb la barra està associada amb foo i qux està associat amb baz. 1090 00:51:10,080 --> 00:51:12,180 Així tecles són foo i baz. 1091 00:51:12,180 --> 00:51:13,650 Els valors són bar i qux. 1092 00:51:13,650 --> 00:51:18,560 Així foreach, tenim la nostra gamma aquí, com el parell de valors clau. 1093 00:51:18,560 --> 00:51:21,560 Això ens permet l'accés la clau i valor. 1094 00:51:21,560 --> 00:51:23,680 Potser el que desitja que el valor, en el cas 1095 00:51:23,680 --> 00:51:27,640 vostè podria fer com arr com $ valor, i llavors 1096 00:51:27,640 --> 00:51:30,640 s'acaba d'accedir al valor com iterar a través. 1097 00:51:30,640 --> 00:51:32,600 Però potser, per alguna raó, desitja que la clau, 1098 00:51:32,600 --> 00:51:35,460 que és per això que vaig triar aquest exemple al seu lloc. 1099 00:51:35,460 --> 00:51:40,240 Així que en realitat es pot manipular clau i el valor en aquest cas. 1100 00:51:40,240 --> 00:51:41,070 D'acord? 1101 00:51:41,070 --> 00:51:41,905 Pregunta? 1102 00:51:41,905 --> 00:51:44,279 >> AUDIÈNCIA: Si volies només manipular la clau, es 1103 00:51:44,279 --> 00:51:45,910 que has de fer foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: Correcte. 1105 00:51:47,360 --> 00:51:50,560 Així que si volies manipular només la clau, 1106 00:51:50,560 --> 00:51:53,680 vostè encara necessita aquest sintaxi, perquè si només 1107 00:51:53,680 --> 00:51:56,930 tenir arr com una cosa, com una cosa, que és 1108 00:51:56,930 --> 00:52:00,070 suposarà que desitja el valor, no la clau. 1109 00:52:00,070 --> 00:52:06,780 Així que si mai prou feines té igual arr com, potser això és com $ element, 1110 00:52:06,780 --> 00:52:11,670 que suposarà que vostè està demanant per només el valor en cada punt. 1111 00:52:11,670 --> 00:52:13,879 Si voleu explícitament a fer alguna cosa amb la clau, 1112 00:52:13,879 --> 00:52:16,170 encara que no va a fer qualsevol cosa amb el valor, 1113 00:52:16,170 --> 00:52:18,430 necessita aquesta estructura que tenim aquí 1114 00:52:18,430 --> 00:52:22,330 on vostè està demanant explícitament tant per a la clau i el valor. 1115 00:52:22,330 --> 00:52:24,170 Molt bona pregunta. 1116 00:52:24,170 --> 00:52:25,940 Una mica més? 1117 00:52:25,940 --> 00:52:27,490 Fresc. 1118 00:52:27,490 --> 00:52:29,911 >> Molt bé, PHP i HTML. 1119 00:52:29,911 --> 00:52:31,410 Oh, estem de tornada a la p-7 set de nou. 1120 00:52:31,410 --> 00:52:35,380 Així que això ha de ser una mica familiar. 1121 00:52:35,380 --> 00:52:41,760 Així que aquesta és una forma simple d'HTML que té un nom d'entrada de hola. 1122 00:52:41,760 --> 00:52:43,820 I veiem que tenim el nostre mètode de GET. 1123 00:52:43,820 --> 00:52:47,430 I si recordem de la nostra p-set, quan es presenti aquesta manera, 1124 00:52:47,430 --> 00:52:58,130 envia una matriu anomenada $ _GET que té tots aquests inputs o variables de 1125 00:52:58,130 --> 00:53:00,490 la forma que ha d'estar manipulat en el nostre PHP. 1126 00:53:00,490 --> 00:53:03,320 Així, en aquest cas, l'usuari posaria en nom seu. 1127 00:53:03,320 --> 00:53:04,370 Sostenen que. 1128 00:53:04,370 --> 00:53:07,810 I veiem que tenim una mica de varietat aquí. 1129 00:53:07,810 --> 00:53:09,080 Tenim la nostra gamma GET. 1130 00:53:09,080 --> 00:53:11,510 I estem accedint el nom. 1131 00:53:11,510 --> 00:53:15,070 >> Així que diu, està bé, dóna'm el valor que està associada amb el nom, 1132 00:53:15,070 --> 00:53:16,550 nomenar a ser la clau aquí. 1133 00:53:16,550 --> 00:53:21,400 I que els mapes directament al que vam dir el nostre nom d'entrada és. 1134 00:53:21,400 --> 00:53:28,960 Així que això li estava donant la clau del estarà en el seu arsenal aquí. 1135 00:53:28,960 --> 00:53:31,220 Té això sentit per a tothom? 1136 00:53:31,220 --> 00:53:32,070 Sí? 1137 00:53:32,070 --> 00:53:36,240 >> AUDIÈNCIA: El nom en GET refereixen a la línia estada en [inaudible]? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: Es refereix a això aquí. 1139 00:53:37,740 --> 00:53:43,840 Així que aquest camp aquí, es refereix a aquest nom aquí. 1140 00:53:43,840 --> 00:53:47,800 Així que això podria haver estat nomenat com el nombre de telèfon, o el que sigui. 1141 00:53:47,800 --> 00:53:51,790 Aquest nom diu en realitat, el que estàs trucant aquest camp? 1142 00:53:51,790 --> 00:53:53,600 Com es va a consulteu aquest camp? 1143 00:53:53,600 --> 00:53:57,670 I aquest nom és com en realitat, estem dient aquest camp es diu nom. 1144 00:53:57,670 --> 00:53:59,224 Això és el que anem a accedir-hi. 1145 00:53:59,224 --> 00:54:02,070 >> AUDIÈNCIA: Així se sent, nom d'entrada és igual a Bob, i- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: Correcte, llavors vostè obtindria Bob allà baix. 1147 00:54:04,380 --> 00:54:06,090 Exactament. 1148 00:54:06,090 --> 00:54:07,800 Tothom cool? 1149 00:54:07,800 --> 00:54:10,990 Molt bé, així que realitza front POST, aquestes són les dues formes principals 1150 00:54:10,990 --> 00:54:14,880 que passem les dades en una petició HTTP. 1151 00:54:14,880 --> 00:54:17,370 Vostès haurien d'haver vist tots dos amb sort. 1152 00:54:17,370 --> 00:54:20,940 Així que amb GET, la informació es fa passar a través de la URL. 1153 00:54:20,940 --> 00:54:23,490 Així que si alguna vegada Google recerques, YouTube, 1154 00:54:23,490 --> 00:54:25,130 probablement notar una mica de signe d'interrogació. 1155 00:54:25,130 --> 00:54:28,230 I llavors, totes les paraules que acaba de posar en allà. 1156 00:54:28,230 --> 00:54:31,410 I PAL passa les dades en el cos del missatge HTTP. 1157 00:54:31,410 --> 00:54:36,922 Així que a diferència GET, quin tipus de compte que les dades s'oculta per a l'usuari. 1158 00:54:36,922 --> 00:54:38,630 Però el que és realment important entendre 1159 00:54:38,630 --> 00:54:44,040 és que això segueix sent tan insegur com GET. 1160 00:54:44,040 --> 00:54:48,780 L'analogia que m'agrada utilitzar és si que tingui el seu número de compte bancari 1161 00:54:48,780 --> 00:54:52,795 i ho escrius a l'exterior de un sobre, que és bastant insegur. 1162 00:54:52,795 --> 00:54:55,920 Si hagués d'escriure en un tros de paper i el va posar dins del sobre, 1163 00:54:55,920 --> 00:54:58,850 que segueix sent molt insegur perquè tot el que has de fer és obrir que fins 1164 00:54:58,850 --> 00:55:03,480 i mirar el contingut real del missatge per veure això. 1165 00:55:03,480 --> 00:55:08,310 Així que això és "ocult", i la gent li agrada Crec que és segur, però no és veritat. 1166 00:55:08,310 --> 00:55:11,000 I estic segur que ho farà Davin entrar en això més, potser. 1167 00:55:11,000 --> 00:55:12,850 Però és un important distinció per fer 1168 00:55:12,850 --> 00:55:15,820 i una cosa molt bona per comprendre. 1169 00:55:15,820 --> 00:55:19,220 >> Acceptar, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Totes les coses que que hem vist fins fa poc! 1171 00:55:22,220 --> 00:55:25,400 Així que és bàsicament dissenyat, òbviament, per a la gestió de dades. 1172 00:55:25,400 --> 00:55:30,560 Vostès tenien molta experiència amb això en les seves taules amb PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 I hi ha quatre consultes comuns que volem que vostès sàpiguen. 1174 00:55:34,100 --> 00:55:37,304 Així que no hi ha actualització, inserció, seleccionar i esborrar. 1175 00:55:37,304 --> 00:55:38,970 Així que assegura't de saber els realment bé. 1176 00:55:38,970 --> 00:55:40,960 Anem a anar a través d'ells molt ràpid. 1177 00:55:40,960 --> 00:55:44,340 >> Així que actualitzar, de veritat, com ho es podria pensar que el fa, 1178 00:55:44,340 --> 00:55:46,740 només actualitza les dades a la base de dades. 1179 00:55:46,740 --> 00:55:48,750 Així que tenim algun exemple aquí. 1180 00:55:48,750 --> 00:55:53,310 Aquest és el general estructura d'una consulta d'actualització. 1181 00:55:53,310 --> 00:55:56,150 Així que actualitzem la taula que estem parlant. 1182 00:55:56,150 --> 00:56:00,520 I volem establir certa valors, certes columnes 1183 00:56:00,520 --> 00:56:02,600 igual a valors específics. 1184 00:56:02,600 --> 00:56:07,500 Així que això només actualitza la taula, el canvi valors en totes les files d'aquest cas. 1185 00:56:07,500 --> 00:56:13,690 Així que en aquesta d'aquí sota, una real exemple, tenim insert-- ho sento. 1186 00:56:13,690 --> 00:56:17,630 Això diapositiva avançat sense jo me n'adonés. 1187 00:56:17,630 --> 00:56:22,230 >> Així que aquesta taula d'actualitzacions configurat col1 igual a val1 on és la casa és igual a "adober". 1188 00:56:22,230 --> 00:56:25,300 El que aquest fa és només canvia, només 1189 00:56:25,300 --> 00:56:28,130 actualitza aquests valors en llocs específics. 1190 00:56:28,130 --> 00:56:32,300 Així que en aquest primer, canvia aquests valors de tot a la seva taula, 1191 00:56:32,300 --> 00:56:32,860 D'acord? 1192 00:56:32,860 --> 00:56:35,820 Es canviarà aquesta columna per a cada entrada única, 1193 00:56:35,820 --> 00:56:37,020 per cada filera. 1194 00:56:37,020 --> 00:56:40,840 Però aquesta on, vostè podria pensar en ell com un qualificador. 1195 00:56:40,840 --> 00:56:44,020 Així que només canviarà en llocs molt específics. 1196 00:56:44,020 --> 00:56:47,840 Així que en p-7 set, quan potser actualitzada la quantitat de diners en efectiu 1197 00:56:47,840 --> 00:56:53,050 que el seu usuari tenia, probablement tenia alguns on ID és igual d'ID de sessió, oi? 1198 00:56:53,050 --> 00:56:55,280 >> Com que no vol canviar la quantitat de diners en efectiu 1199 00:56:55,280 --> 00:56:57,630 per cada persona que va ser l'ús del seu lloc web. 1200 00:56:57,630 --> 00:57:00,480 Vostè volia canviar per un persona específica, sent aquesta persona 1201 00:57:00,480 --> 00:57:02,410 qui estava usant en aquest moment. 1202 00:57:02,410 --> 00:57:04,320 Dret? 1203 00:57:04,320 --> 00:57:07,510 OK, així que inserir, inserció certs valors a les taules. 1204 00:57:07,510 --> 00:57:11,650 Això és com quan estàs la creació d'un nou usuari. 1205 00:57:11,650 --> 00:57:14,240 L'estructura general aquí està inserir en qualsevol taula 1206 00:57:14,240 --> 00:57:15,680 estem parlant. 1207 00:57:15,680 --> 00:57:18,910 Els valors, que són els valors que realment volem inserir. 1208 00:57:18,910 --> 00:57:23,060 OK, així com el veiem aquí, han inserir a la taula. 1209 00:57:23,060 --> 00:57:27,790 Això és amb columnes específiques els seus valors correspost. 1210 00:57:27,790 --> 00:57:29,940 Així que això diu, inserit una nova fila que conté 1211 00:57:29,940 --> 00:57:33,660 valors val1 i val2 sota aquestes columnes específiques. 1212 00:57:33,660 --> 00:57:39,240 >> Així que potser només vol omplir a la meitat de les coses en aquesta fila. 1213 00:57:39,240 --> 00:57:41,150 Això és el que aquesta part aquí li permet fer. 1214 00:57:41,150 --> 00:57:43,280 Et permet en realitat determinar quina part. 1215 00:57:43,280 --> 00:57:44,244 Sí? 1216 00:57:44,244 --> 00:57:52,150 >> AUDIÈNCIA: Pot vostè només [inaudible] cel·les de la fila [inaudible]? 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: Si només ompli certes parts de la seva fila, 1218 00:57:55,000 --> 00:57:57,480 la resta de les cèl·lules són només buida. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Sempre que els permetin estar buit, no és un problema. 1221 00:58:05,660 --> 00:58:09,570 Si intenta accedir-hi, és tornarà algun element buit. 1222 00:58:09,570 --> 00:58:13,850 Però és important saber que en certes taules, 1223 00:58:13,850 --> 00:58:16,690 Han de ser permès a ser nul. 1224 00:58:16,690 --> 00:58:18,890 És possible que hagi trobat amb un problema durant la seva p-setembre 1225 00:58:18,890 --> 00:58:21,320 perquè no deixem cap dels seus valors siguin nuls. 1226 00:58:21,320 --> 00:58:26,110 Però vostè pot especificar una valor opcional a la seva taula. 1227 00:58:26,110 --> 00:58:29,640 >> OK, seleccioneu, de manera que aquest és només una forma d'aconseguir 1228 00:58:29,640 --> 00:58:33,790 dades específiques d'una taula en algun identificador que desitgi. 1229 00:58:33,790 --> 00:58:37,990 Així que seleccioneu estrella de la taula on col és igual a alguna cosa només significa, 1230 00:58:37,990 --> 00:58:43,820 dóna'm totes les dades associades on aquesta columna específica és cert. 1231 00:58:43,820 --> 00:58:49,020 Així que l'estrella en aquest cas ho farà tornar tota la fila per a vostè, ¿d'acord? 1232 00:58:49,020 --> 00:58:54,880 >> I llavors, en aquest cas, seleccioneu l'estrella de taula només et dóna tota la taula. 1233 00:58:54,880 --> 00:58:58,940 I després, eliminar, òbviament, només esborra la fila de la taula. 1234 00:58:58,940 --> 00:59:01,320 Així que eliminar de la taula, qualsevol taula que estem 1235 00:59:01,320 --> 00:59:06,830 referència, on alguns específics identificador o alguna condició és vertadera. 1236 00:59:06,830 --> 00:59:07,720 Sí? 1237 00:59:07,720 --> 00:59:08,700 >> AUDIÈNCIA: Pregunta. 1238 00:59:08,700 --> 00:59:10,699 Per què s'utilitza doble cotitzacions, i si 1239 00:59:10,699 --> 00:59:13,600 fer cometes simples o dobles cotitzacions, fa alguna diferència? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: Les cometes dobles o cometes simples no fa una diferència en SQL. 1241 00:59:18,235 --> 00:59:19,610 Em va semblar veure una altra pregunta. 1242 00:59:19,610 --> 00:59:20,814 Sí? 1243 00:59:20,814 --> 00:59:25,070 >> AUDIÈNCIA: No l'afecta el que aconsegueix escapar de la consulta? 1244 00:59:25,070 --> 00:59:27,945 >> ALISON: Rob? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: Què entén vostè per escapat de la consulta? 1246 00:59:31,410 --> 00:59:36,870 >> AUDIÈNCIA: Si algú té un consulta única en forma de-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Si algú posar una cometa simple en, 1248 00:59:39,862 --> 00:59:43,560 llavors tot el temps que estiguis desinfecció la seva entrada, llavors no importa. 1249 00:59:43,560 --> 00:59:46,205 Però si vostè està utilitzant un sol cita i vostè està incorrectament 1250 00:59:46,205 --> 00:59:47,914 escapar dels seus inputs, llavors sí, necessiten 1251 00:59:47,914 --> 00:59:51,079 posar una cometa simple per tal de trencar el seu codi. si fa servir cometes dobles, 1252 00:59:51,079 --> 00:59:53,580 que necessiten per posar un doble Citant a trencar el codi. 1253 00:59:53,580 --> 00:59:56,163 Però mentre t'escapes coses correctament, no importa. 1254 00:59:56,163 --> 00:59:59,220 Només traduirà per al símbol correcte de totes maneres. 1255 00:59:59,220 --> 01:00:02,332 >> AUDIÈNCIA: Què significa escapament? 1256 01:00:02,332 --> 01:00:04,040 ALISON: Bé, com desinfectant i escapament. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 L'examen que tenim, el gran XKCD còmic que tiri cap amunt on vostè té, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: És l'última diapositiva. 1261 01:00:16,670 --> 01:00:18,500 ALISON: És l'última diapositiva, en realitat? 1262 01:00:18,500 --> 01:00:20,200 Déu meu. 1263 01:00:20,200 --> 01:00:21,780 Allà anem, perfecte. 1264 01:00:21,780 --> 01:00:27,900 OK, així que bàsicament, es pot injectar alguna cosa en aquesta consulta SQL 1265 01:00:27,900 --> 01:00:30,560 on es trenca la seva codi, o com David va mostrar 1266 01:00:30,560 --> 01:00:38,460 a classe, si tenim alguna sola cita 1 és igual a 1 i si en el nostre codi, 1267 01:00:38,460 --> 01:00:41,230 simplement copiem directament que a, i tenim una cometa simple que acaba, 1268 01:00:41,230 --> 01:00:44,740 el que passa és que obtenim alguna expressió que 1269 01:00:44,740 --> 01:00:48,680 s'avalua a cert que ho farà deixar que algú entri a la base de dades 1270 01:00:48,680 --> 01:00:51,720 i obtenir dades que ens no volen que ells reben. 1271 01:00:51,720 --> 01:00:54,240 Així desinfecció de les entrades només significa assegurant 1272 01:00:54,240 --> 01:00:57,680 que estem escapant aquests personatges i designant 1273 01:00:57,680 --> 01:01:01,720 com caràcters i no les coses que s'ha de permetre 1274 01:01:01,720 --> 01:01:04,990 s'ha de prendre literalment com la nostra sentència SQL. 1275 01:01:04,990 --> 01:01:09,980 >> Així que el més gran que hem dit que vostès han d'estar usant 1276 01:01:09,980 --> 01:01:13,650 eren HTML caràcters especials, que és una cosa 1277 01:01:13,650 --> 01:01:15,730 que és possible que vulgueu fer una ullada a. 1278 01:01:15,730 --> 01:01:17,240 Acceptar, eliminar. 1279 01:01:17,240 --> 01:01:19,450 Els tipus de dades, tot això serà en línia. 1280 01:01:19,450 --> 01:01:23,510 Ja que hem deixat 15 minuts, estic només va a anar a la dreta a través d'aquest. 1281 01:01:23,510 --> 01:01:28,500 PHP i SQL, bàsicament es tracta de només vam tenir una funció de consulta que 1282 01:01:28,500 --> 01:01:31,520 ajudar a protegir contra aquests atacs maliciosos. 1283 01:01:31,520 --> 01:01:33,970 Així que cada vegada que utilitzi consulta, ens assegurem 1284 01:01:33,970 --> 01:01:36,560 que les coses van ser desinfectats i altres coses. 1285 01:01:36,560 --> 01:01:41,070 >> MVC és només un paradigma de disseny, així model, vista, controlador. 1286 01:01:41,070 --> 01:01:44,200 És només una manera de mantenir les coses agradable i dividit de la mateixa manera 1287 01:01:44,200 --> 01:01:47,100 que tendim a factoritzar codi cap a fora en funcions. 1288 01:01:47,100 --> 01:01:53,390 Això és només un marc de disseny web que li permet fer el mateix. 1289 01:01:53,390 --> 01:01:54,760 Vaig a ometre aquest. 1290 01:01:54,760 --> 01:01:58,530 >> Això és una cosa que jo seria súper còmoda amb. 1291 01:01:58,530 --> 01:02:01,132 És un petit gran taula. 1292 01:02:01,132 --> 01:02:03,090 Et dóna la funció exemple del model. 1293 01:02:03,090 --> 01:02:05,473 Només estic passant per això perquè jo realment volen Davin per poder parlar. 1294 01:02:05,473 --> 01:02:07,140 Si té alguna pregunta, si us plau fóssiu lliure. 1295 01:02:07,140 --> 01:02:07,931 Vaig a ser aquí després. 1296 01:02:07,931 --> 01:02:10,360 Només ha de venir a parlar amb mi. 1297 01:02:10,360 --> 01:02:13,380 Amb això, tenim estats HTTP. 1298 01:02:13,380 --> 01:02:16,270 I Davin va a bufar a través d'aquest en 15 minuts. 1299 01:02:16,270 --> 01:02:17,560 Això serà gran. 1300 01:02:17,560 --> 01:02:18,893 >> DAVIN: OK. 1301 01:02:18,893 --> 01:02:20,312 Uh, el seu micròfon? 1302 01:02:20,312 --> 01:02:22,210 Sí. 1303 01:02:22,210 --> 01:02:23,336 Ho sento. 1304 01:02:23,336 --> 01:02:24,460 ALISON: Manera de preparar-se. 1305 01:02:24,460 --> 01:02:25,335 DAVIN: No, estic llest. 1306 01:02:25,335 --> 01:02:25,860 Estic llest. 1307 01:02:25,860 --> 01:02:28,790 Anem a fer això. 1308 01:02:28,790 --> 01:02:29,290 Està llest. 1309 01:02:29,290 --> 01:02:30,041 D'acord. 1310 01:02:30,041 --> 01:02:30,540 Ho sento. 1311 01:02:30,540 --> 01:02:31,664 Vessar cafè en mi mateix. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 No sé si estic més malestar que em veig ximple, 1314 01:02:38,210 --> 01:02:40,600 o que jo no tinc el cafè més. 1315 01:02:40,600 --> 01:02:44,480 De tota manera, només un anunci ràpid sobre el full que vostès tenen. 1316 01:02:44,480 --> 01:02:47,994 Així que aquest full que vostès tenen no és el funcionari el que hi ha al qüestionari. 1317 01:02:47,994 --> 01:02:49,660 Aquest és l'oficial del que hi ha al qüestionari. 1318 01:02:49,660 --> 01:02:52,520 A més, en el lloc web, li diem que, OK, això serà al qüestionari. 1319 01:02:52,520 --> 01:02:55,020 Així que a la petita fulla de trucs que té, no oficial. 1320 01:02:55,020 --> 01:02:56,690 I hi ha errors en ella. 1321 01:02:56,690 --> 01:03:01,490 Així que millor no només ha d'utilitzar cegament. 1322 01:03:01,490 --> 01:03:04,390 Així que sí, això és tot. 1323 01:03:04,390 --> 01:03:05,980 Així que entrarem en això molt ràpid. 1324 01:03:05,980 --> 01:03:07,420 >> Així estats HTTP. 1325 01:03:07,420 --> 01:03:10,430 Llavors, què passa quan el pàgina web, tot està bé. 1326 01:03:10,430 --> 01:03:11,144 Acceptar Tot està bé. 1327 01:03:11,144 --> 01:03:13,310 Tot torna a vostè de la manera que ho desitgi. 1328 01:03:13,310 --> 01:03:15,370 Vostè obté un 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, on hem vist que 301 abans? 1330 01:03:19,250 --> 01:03:20,890 Espera, què passa? 1331 01:03:20,890 --> 01:03:23,250 Ho sento. 1332 01:03:23,250 --> 01:03:24,980 Vam veure conferència estany i durant seguretat. 1333 01:03:24,980 --> 01:03:30,690 Així que durant la seguretat, de manera que si David va teclejar http i després contractar cs50.net, 1334 01:03:30,690 --> 01:03:31,940 vas a veure 301 es va moure. 1335 01:03:31,940 --> 01:03:32,440 Per què? 1336 01:03:32,440 --> 01:03:35,570 Com que va a redirigir vostè automàticament al nostre HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> Així que 301 es van traslladar, només és bàsicament una redirecció. 1338 01:03:38,649 --> 01:03:40,190 I vostè pot pensar-hi com aquest. 1339 01:03:40,190 --> 01:03:43,790 Qualsevol dels estats que comencen amb de 2, aquests són com, OK, tot està bé. 1340 01:03:43,790 --> 01:03:46,530 Qualsevol dels estats que s'inicien amb 3, aquests són redirecció. 1341 01:03:46,530 --> 01:03:49,571 Els estats que comencen amb 4, que els mitjans hi ha algun tipus d'error de client. 1342 01:03:49,571 --> 01:03:52,440 Els estats que comencen amb 5, això és algun tipus d'error al servidor. 1343 01:03:52,440 --> 01:03:54,680 Així que tipus de trenques els estats així. 1344 01:03:54,680 --> 01:03:59,120 Així que 304 no sense modificar, pel que en la seva server.c p-sets, així que diguem que vostè 1345 01:03:59,120 --> 01:04:00,600 cat.html carregat. 1346 01:04:00,600 --> 01:04:03,360 Tot torna, vostè aconsegueix 200S, OK, genial. 1347 01:04:03,360 --> 01:04:04,540 >> Diguem que vostè és refrescat. 1348 01:04:04,540 --> 01:04:07,310 Bé, dins d'aquest cat.html, tens un JPEG. 1349 01:04:07,310 --> 01:04:09,520 Bé, això no és JPEG posarà a carregar. 1350 01:04:09,520 --> 01:04:12,140 No va a publicar un altre Sol·licitud GET al servidor, 1351 01:04:12,140 --> 01:04:13,980 i després obtenir tota aquesta informació. 1352 01:04:13,980 --> 01:04:17,560 Es va a simplement ser: aquesta imatge és serà emmagatzemat en memòria cau en l'equip. 1353 01:04:17,560 --> 01:04:19,540 I perquè la imatge serà un 304. 1354 01:04:19,540 --> 01:04:20,720 Així que no ha estat modificat. 1355 01:04:20,720 --> 01:04:24,600 Si a continuació, tancar, és clar galetes i, a continuació, renovi 1356 01:04:24,600 --> 01:04:27,490 i tractar de carregar la pàgina de nou, vas a veure 200S. 1357 01:04:27,490 --> 01:04:28,910 No vas a veure que 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, sol·licitud incorrecta, béns ràpid, com si 1359 01:04:32,340 --> 01:04:34,880 anaven a enviar una JSON objecte al servidor 1360 01:04:34,880 --> 01:04:38,090 i el seu objecte JSON era incorrecta, veuràs una cosa així. 1361 01:04:38,090 --> 01:04:39,000 403, prohibit. 1362 01:04:39,000 --> 01:04:40,330 Quan veure un prohibit? 1363 01:04:40,330 --> 01:04:41,394 Probablement Probablement? 1364 01:04:41,394 --> 01:04:42,060 AUDIÈNCIA: Chmod. 1365 01:04:42,060 --> 01:04:42,950 DAVIN: Chmod, si. 1366 01:04:42,950 --> 01:04:44,730 Així que vostè no ha establert permisos correctament. 1367 01:04:44,730 --> 01:04:45,577 404, no hi ha cap comentari. 1368 01:04:45,577 --> 01:04:46,410 És que no hi ha. 1369 01:04:46,410 --> 01:04:48,670 Així que si escriviu l'URL equivocat. 1370 01:04:48,670 --> 01:04:53,500 500, error intern del servidor, el servidor probablement no es va configurar correctament. 1371 01:04:53,500 --> 01:04:56,260 Alguna cosa no en el seu final, però alguna cosa al costat del servidor. 1372 01:04:56,260 --> 01:04:57,240 I 503? 1373 01:04:57,240 --> 01:04:59,502 Molta gent va veure 503s en l'última p-set. 1374 01:04:59,502 --> 01:05:00,460 Quan passarà? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Vaig escoltar murmuris. 1377 01:05:05,660 --> 01:05:07,767 >> AUDIÈNCIA: Quan Google decideix que ets un robot. 1378 01:05:07,767 --> 01:05:10,350 DAVIN: Sí, quan Google decideix vostè és un robot, s'obté 503s. 1379 01:05:10,350 --> 01:05:11,560 Així que això és una sobrecàrrega. 1380 01:05:11,560 --> 01:05:14,620 Si ha sol·licitat des del servidor massa, en general és temporal. 1381 01:05:14,620 --> 01:05:15,560 I la majoria de vostès expliquen d'ell. 1382 01:05:15,560 --> 01:05:16,185 Així que vesteix 503. 1383 01:05:16,185 --> 01:05:19,282 És possible que hagi pres una mica ruptura, llavors els 503s van ser, 1384 01:05:19,282 --> 01:05:20,490 i tot estava bé. 1385 01:05:20,490 --> 01:05:26,640 >> Gabe: Molt ràpid, quan es deixi vostès 500 en conjunt, probablement, aquest últim problema? 1386 01:05:26,640 --> 01:05:27,954 Sí? 1387 01:05:27,954 --> 01:05:30,906 >> AUDIÈNCIA: En general, si el servidor té un arxiu extraviat 1388 01:05:30,906 --> 01:05:34,650 o [inaudible] la seva màquina [inaudible]. 1389 01:05:34,650 --> 01:05:38,870 >> Gabe: Pel que podria ser una configuració problema en el seu PHP del vostre servidor. 1390 01:05:38,870 --> 01:05:42,250 Però podria ser alguna cosa com un punt i coma que el seu oblidar. 1391 01:05:42,250 --> 01:05:44,130 Si estàs escrivint PHP, una sintaxi incorrecta 1392 01:05:44,130 --> 01:05:46,000 podria aconseguir alguna cosa així. 1393 01:05:46,000 --> 01:05:46,960 D'acord? 1394 01:05:46,960 --> 01:05:48,610 >> DAVIN: Cool. 1395 01:05:48,610 --> 01:05:51,180 Vols que faci només fins AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> Gabe: [inaudible]. 1397 01:05:52,950 --> 01:05:53,450 DAVIN: OK. 1398 01:05:53,450 --> 01:05:54,230 Llavors quin és el DOM? 1399 01:05:54,230 --> 01:05:55,290 Què significa per DOM? 1400 01:05:55,290 --> 01:05:56,990 >> AUDIÈNCIA: model d'objectes de document. 1401 01:05:56,990 --> 01:05:57,490 DAVIN: Nice. 1402 01:05:57,490 --> 01:06:00,775 I per què ens agrada? 1403 01:06:00,775 --> 01:06:02,670 Impressionant. 1404 01:06:02,670 --> 01:06:06,651 Dret, de manera que només ens permet l'accés l'HTML, accedeixi a la nostra pàgina molt ràpidament. 1405 01:06:06,651 --> 01:06:07,150 Per què? 1406 01:06:07,150 --> 01:06:09,980 Com que estem tractant al nostre pàgina, tractant als nostres etiquetes HTML, 1407 01:06:09,980 --> 01:06:11,730 tractar tot com si fossin objectes. 1408 01:06:11,730 --> 01:06:13,710 Si els estem tractant com són objectes, llavors, què podem fer? 1409 01:06:13,710 --> 01:06:15,210 Bé, podem trucar a funcions en ells. 1410 01:06:15,210 --> 01:06:16,460 I això és important per què? 1411 01:06:16,460 --> 01:06:19,200 Bé, doncs utilitzarem JavaScript per actualitzar el nostre HTML, 1412 01:06:19,200 --> 01:06:20,500 actualitzar aquests objectes. 1413 01:06:20,500 --> 01:06:23,869 Així que si els tractem com a objectes, llavors podem trucar a funcions en ells. 1414 01:06:23,869 --> 01:06:26,660 Vaig a entrar en això una mica més quan vaig a JavaScript 1415 01:06:26,660 --> 01:06:30,510 però tots vostès han vist com document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Així que el document és la seva element, aconsegueix element d'identificació, 1417 01:06:32,870 --> 01:06:35,087 pel que anem a cercar per alguna identificació en una etiqueta HTML. 1418 01:06:35,087 --> 01:06:36,920 I després, pot fer-ho alguna cosa més que això. 1419 01:06:36,920 --> 01:06:40,089 Per exemple, com document.body, llavors vostè pot afegir nen. 1420 01:06:40,089 --> 01:06:41,630 Així que vas a trobar el document. 1421 01:06:41,630 --> 01:06:42,340 Vostè té el document. 1422 01:06:42,340 --> 01:06:43,629 Trobaràs el cos. 1423 01:06:43,629 --> 01:06:44,420 Vostè va trobar el cos. 1424 01:06:44,420 --> 01:06:46,545 I llavors, vas a trucar a alguna funció en ell. 1425 01:06:46,545 --> 01:06:50,312 Així annexar nen, i pot annexar una mica d'HTML a l'extrem interior del seu cos. 1426 01:06:50,312 --> 01:06:52,520 Així que, bàsicament, no ets més que tractar-la com un objecte. 1427 01:06:52,520 --> 01:06:54,515 Vostè està tractant HTML etiquetes com un objecte. 1428 01:06:54,515 --> 01:06:57,071 I fa que sigui molt fàcil i ràpid per anar a través d'ells. 1429 01:06:57,071 --> 01:06:59,070 Però també li permet per cridar a funcions en ells 1430 01:06:59,070 --> 01:07:04,410 així que vostè pot manipular i canviar els elements. 1431 01:07:04,410 --> 01:07:10,162 >> Gabe: Tenint en compte això, per què és tan JavaScript un llenguatge agradable per interactuar amb HTML? 1432 01:07:10,162 --> 01:07:12,870 Les probabilitats són, quan les persones triaven l'idioma del navegador, 1433 01:07:12,870 --> 01:07:14,990 pel costat del client, Javascript és realment agradable, 1434 01:07:14,990 --> 01:07:16,765 que és molt bo en la manipulació d'objectes. 1435 01:07:16,765 --> 01:07:20,620 I els objectes són una mena de els objectes que apareixen en l'HTML, 1436 01:07:20,620 --> 01:07:23,940 així que és molt fàcil per a JavaScript fer aquest tipus de manipulació. 1437 01:07:23,940 --> 01:07:24,440 DAVIN: Nice. 1438 01:07:24,440 --> 01:07:25,670 Així que aquí és només un exemple. 1439 01:07:25,670 --> 01:07:29,020 Així que crec que en el concurs de l'any passat, o potser fa dos anys, 1440 01:07:29,020 --> 01:07:30,840 Li ha demanat per crear un arbre. 1441 01:07:30,840 --> 01:07:32,660 Així que això és exactament el que fa. 1442 01:07:32,660 --> 01:07:34,255 Així es comença amb el document. 1443 01:07:34,255 --> 01:07:36,130 I després que, bàsicament, només cal veure les etiquetes. 1444 01:07:36,130 --> 01:07:38,100 Així que si ens fixem, ens començar amb una etiqueta HTML. 1445 01:07:38,100 --> 01:07:41,660 I llavors, s'obté pistes sobre com a fer això sobre la base de la sagnia. 1446 01:07:41,660 --> 01:07:43,870 Tan amable cap de sucursals fora. 1447 01:07:43,870 --> 01:07:46,242 Cap a dins, tenim una altra etiqueta de títol. 1448 01:07:46,242 --> 01:07:47,450 Així doncs, tenim una etiqueta de títol. 1449 01:07:47,450 --> 01:07:49,760 I dins d'això, tenim una mica de corda. 1450 01:07:49,760 --> 01:07:52,210 I així representem una cadena en un cercle. 1451 01:07:52,210 --> 01:07:54,010 I totes les etiquetes estan a les places. 1452 01:07:54,010 --> 01:07:56,270 >> I si ens fixem, si pensar en això com un arbre, 1453 01:07:56,270 --> 01:07:58,730 i diguem que és HTML un pare, llavors cap i el cos 1454 01:07:58,730 --> 01:07:59,772 seran germans. 1455 01:07:59,772 --> 01:08:01,813 Tots dos seran fills d'aquest pare. 1456 01:08:01,813 --> 01:08:03,620 Així que perquè són dos germans, que són 1457 01:08:03,620 --> 01:08:06,590 serà una espècie de banda entre si en el nostre model d'arbre. 1458 01:08:06,590 --> 01:08:08,590 I després, que, bàsicament, fer exactament el mateix. 1459 01:08:08,590 --> 01:08:13,512 Així que no és difícil, però hem demanat aquest tipus de preguntes abans de la prova. 1460 01:08:13,512 --> 01:08:15,220 Gabe: Algú té preguntes fins ara? 1461 01:08:15,220 --> 01:08:16,357 És bo? 1462 01:08:16,357 --> 01:08:16,856 DAVIN: Cool. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript bé, les coses bones. 1465 01:08:21,600 --> 01:08:24,069 Així JavaScript, el que és JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Bé, JavaScript és-- és complicat, però aquests 1467 01:08:28,370 --> 01:08:30,727 són alguns dels aspectes més destacats que vostè ha de tenir en compte. 1468 01:08:30,727 --> 01:08:31,810 En primer lloc, està vagament escriu. 1469 01:08:31,810 --> 01:08:33,529 Què vol dir això? 1470 01:08:33,529 --> 01:08:35,596 Així que PHP era-- sí, què passa? 1471 01:08:35,596 --> 01:08:39,854 >> AUDIÈNCIA: No ha de explícitament Estat del tipus de variable que és. 1472 01:08:39,854 --> 01:08:40,479 DAVIN: Perfecte. 1473 01:08:40,479 --> 01:08:43,270 Així que ell va dir que vostè no ha de explicitar el tipus de variable. 1474 01:08:43,270 --> 01:08:44,160 Això és exactament correcte. 1475 01:08:44,160 --> 01:08:49,700 Així que en C, si tingués int i és igual a 50, després en PHP, és com aquest, $ i, 1476 01:08:49,700 --> 01:08:50,550 és igual a 50. 1477 01:08:50,550 --> 01:08:54,319 Després, en JavaScript ¿Quina seria la trucada? 1478 01:08:54,319 --> 01:08:55,260 Var, oi? 1479 01:08:55,260 --> 01:08:56,566 Seria com var i és igual a 50. 1480 01:08:56,566 --> 01:08:58,649 Però vostè no ha de ser com, OK, això és un int. 1481 01:08:58,649 --> 01:09:00,350 OK, això és una cadena. 1482 01:09:00,350 --> 01:09:01,731 No hi ha necessitat de fer això. 1483 01:09:01,731 --> 01:09:02,939 És un llenguatge interpretat. 1484 01:09:02,939 --> 01:09:04,904 Llavors, què significa això? 1485 01:09:04,904 --> 01:09:06,340 >> AUDIÈNCIA: No compilat. 1486 01:09:06,340 --> 01:09:10,470 >> DAVIN: Què no compila vol dir? 1487 01:09:10,470 --> 01:09:11,392 Sí? 1488 01:09:11,392 --> 01:09:15,336 >> AUDIÈNCIA: No té reestructurar el codi 1489 01:09:15,336 --> 01:09:18,294 perquè estigui llest per l'equip per executar-lo. 1490 01:09:18,294 --> 01:09:23,144 És només pren en el moment de l'execució i l'ordinador [inaudible]. 1491 01:09:23,144 --> 01:09:25,560 DAVIN: Sí, per el que va a passar a través d'un intèrpret. 1492 01:09:25,560 --> 01:09:26,750 Però tens raó. 1493 01:09:26,750 --> 01:09:28,319 Així que vostè mai va compilar, oi? 1494 01:09:28,319 --> 01:09:30,399 Quan vostè estava fent la seva PHP i JavaScript, 1495 01:09:30,399 --> 01:09:31,365 mai vas cridar compilació. 1496 01:09:31,365 --> 01:09:33,779 Mai es diu alguna cosa així com fer ni res d'això. 1497 01:09:33,779 --> 01:09:34,800 Això és perquè s'interpreta. 1498 01:09:34,800 --> 01:09:37,319 Així que cada vegada que passa pel navegador, que passa a través d'un intèrpret. 1499 01:09:37,319 --> 01:09:40,370 I això va a interpretar just a temps real immediatament per a vostè. 1500 01:09:40,370 --> 01:09:43,770 Quins són alguns aspectes positius i negatius a tenir un llenguatge interpretat 1501 01:09:43,770 --> 01:09:45,258 i que té un llenguatge compilat? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Així compiling-- sí, què passa? 1504 01:09:50,540 --> 01:09:52,444 >> AUDIÈNCIA: Interpretat és més lent. 1505 01:09:52,444 --> 01:09:53,319 DAVIN: En quin sentit? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> AUDIÈNCIA: Després compilar, no té 1508 01:09:59,091 --> 01:10:04,400 fer cap pas addicional per executar que, mentre que aquest [inaudible]. 1509 01:10:04,400 --> 01:10:05,570 >> DAVIN: Dreta, perfecte. 1510 01:10:05,570 --> 01:10:08,386 Així que el que ha dit és bàsicament que la compilació, 1511 01:10:08,386 --> 01:10:10,760 de compilació, vostè té una gran quantitat de costos inicials, oi? 1512 01:10:10,760 --> 01:10:11,760 Vas a compilar. 1513 01:10:11,760 --> 01:10:13,750 Però després de compilar-lo, el compilador va a optimitzar-lo. 1514 01:10:13,750 --> 01:10:14,840 Serà ràpid. 1515 01:10:14,840 --> 01:10:16,170 Es va a bàsicament ser el més ràpid que pot ser. 1516 01:10:16,170 --> 01:10:18,830 Amb la interpretació, mai haver de cost inicial. 1517 01:10:18,830 --> 01:10:22,260 Més aviat, serà una mica més lent cada vegada que interpretes. 1518 01:10:22,260 --> 01:10:24,940 I hauràs de interpretar cada vegada. 1519 01:10:24,940 --> 01:10:27,114 Així que en lloc de tenir aquest un cost de temps, ara que ets 1520 01:10:27,114 --> 01:10:29,530 haurà de interpretar cada vegada que la pàgina fa. 1521 01:10:29,530 --> 01:10:31,890 >> Així que els intèrprets són bones perquè vostè no ha de compilar, 1522 01:10:31,890 --> 01:10:33,980 però són dolents en què cada el temps es carrega la pàgina, és 1523 01:10:33,980 --> 01:10:35,771 haurà de interpretar aquesta JavaScript. 1524 01:10:35,771 --> 01:10:40,520 I es va a córrer una mica més lent que si anés a compilar. 1525 01:10:40,520 --> 01:10:43,044 Permet communicate-- Oh, espera. 1526 01:10:43,044 --> 01:10:44,960 S'utilitza per manipular el el contingut i l'aparença. 1527 01:10:44,960 --> 01:10:46,043 Acabem de parlar sobre això. 1528 01:10:46,043 --> 01:10:47,250 Utilitza el DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, entrarem en AJAX en una mica. 1530 01:10:49,930 --> 01:10:51,520 I llavors, és el costat del client. 1531 01:10:51,520 --> 01:10:53,110 Així que PHP és del costat del servidor. 1532 01:10:53,110 --> 01:10:54,360 JavaScript és el costat del client. 1533 01:10:54,360 --> 01:10:57,780 Què són positius a això? 1534 01:10:57,780 --> 01:10:58,280 Diu ella. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 És més ràpid, oi? 1537 01:11:02,780 --> 01:11:05,282 Perquè vostè no té A-- és més ràpid. 1538 01:11:05,282 --> 01:11:07,490 No ha de comunicar amb algun altre dispositiu. 1539 01:11:07,490 --> 01:11:08,790 Si no ets més que en el seu client, mai estàs 1540 01:11:08,790 --> 01:11:11,280 va haver d'anar a veure el que hi ha al servidor 1541 01:11:11,280 --> 01:11:13,150 i després informar o alguna cosa per l'estil. 1542 01:11:13,150 --> 01:11:15,410 Així costat del client tendeix a ser una mica més ràpid. 1543 01:11:15,410 --> 01:11:17,910 >> Gabe: Sí, però això no vol dir que PHP és 1544 01:11:17,910 --> 01:11:20,440 més ràpid que JavaScript ni res per l'estil. 1545 01:11:20,440 --> 01:11:23,270 Corren una mica en la mateixa velocitat, ja que tots dos són 1546 01:11:23,270 --> 01:11:24,490 llenguatges interpretats. 1547 01:11:24,490 --> 01:11:26,680 El que és lent aquí hi ha la petició. 1548 01:11:26,680 --> 01:11:28,870 Així que en realitat estàs passant tot el camí al Brasil 1549 01:11:28,870 --> 01:11:31,460 per obtenir alguna informació que hi viu. 1550 01:11:31,460 --> 01:11:34,590 Però PHP i JavaScript, que tipus de córrer a la mateixa velocitat. 1551 01:11:34,590 --> 01:11:37,930 No és que un és més ràpid que l'altre. 1552 01:11:37,930 --> 01:11:40,600 Això, també, pregunta amb trampa aquí. 1553 01:11:40,600 --> 01:11:47,338 Així JavaScript mai es converteix en codi de màquina, veritable o fals? 1554 01:11:47,338 --> 01:11:48,590 >> AUDIÈNCIA: Fals. 1555 01:11:48,590 --> 01:11:49,090 Gabe: Fals. 1556 01:11:49,090 --> 01:11:51,298 Ha de convertir-se en màquina codi perquè el codi màquina és 1557 01:11:51,298 --> 01:11:53,210 l'únic que la màquina entén. 1558 01:11:53,210 --> 01:11:55,800 Tot i que no està compilat, encara esdevé codi de màquina 1559 01:11:55,800 --> 01:11:59,120 perquè l'intèrpret és només un programa que va línia per línia 1560 01:11:59,120 --> 01:12:02,170 i transforma aquesta línia en cosa que l'ordinador entén. 1561 01:12:02,170 --> 01:12:02,825 D'acord? 1562 01:12:02,825 --> 01:12:03,325 Fresc. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> DAVIN: Aquesta és només una molt bàsica hola programa JavaScript món. 1565 01:12:12,890 --> 01:12:15,590 Així que no sé si: vostè ha vist això. 1566 01:12:15,590 --> 01:12:17,630 Però només tens HTML aquí. 1567 01:12:17,630 --> 01:12:21,020 I en lloc d'haver de posar el codi JavaScript a les etiquetes de script, 1568 01:12:21,020 --> 01:12:22,810 pel que normalment el va posar al cap. 1569 01:12:22,810 --> 01:12:24,030 Vostè té etiquetes de script. 1570 01:12:24,030 --> 01:12:24,870 Se li cauen allà. 1571 01:12:24,870 --> 01:12:28,350 Tot el que hem fet aquí és que hem vinculat en-- així que ens hem vinculat en un arxiu JavaScript 1572 01:12:28,350 --> 01:12:29,137 com aquest. 1573 01:12:29,137 --> 01:12:30,470 I que tots vostès han fet això, oi? 1574 01:12:30,470 --> 01:12:34,740 Així que quan ho estava utilitzant jQuery i underscore.js en l'última p-set, 1575 01:12:34,740 --> 01:12:38,700 vostè no té un munt de codi en les etiquetes de script, si cap. 1576 01:12:38,700 --> 01:12:41,415 Vostè podria fer això, però en el seu lloc estàs vinculant en. 1577 01:12:41,415 --> 01:12:43,540 I va associar a tal com ho fa amb CSS. 1578 01:12:43,540 --> 01:12:50,186 Per tant, només fa que sigui més fàcil de llegir pel el seu codi no és com 1.000 línies de llarg 1579 01:12:50,186 --> 01:12:52,310 amb un munt de funcions que és possible que no utilitzeu. 1580 01:12:52,310 --> 01:12:53,518 >> En el seu lloc, simplement enllaçar a. 1581 01:12:53,518 --> 01:12:55,050 Es compartimenta ella. 1582 01:12:55,050 --> 01:13:00,110 És com escriure algun fitxer de capçalera, i a continuació, inclòs l'arxiu de capçalera en C. 1583 01:13:00,110 --> 01:13:01,620 Penseu en això com aquest. 1584 01:13:01,620 --> 01:13:02,680 Llavors, què fa això? 1585 01:13:02,680 --> 01:13:04,560 Bé, això funcionarà. 1586 01:13:04,560 --> 01:13:05,410 Es va a alertar. 1587 01:13:05,410 --> 01:13:08,020 Així que vas a aconseguir una mica pop-up anomenada hola món. 1588 01:13:08,020 --> 01:13:11,420 Una pregunta ràpida, tot just prova de seny, pel que es veu aquí en el cos, 1589 01:13:11,420 --> 01:13:13,160 dir cos, HTML aquí. 1590 01:13:13,160 --> 01:13:14,080 Què ve primer? 1591 01:13:14,080 --> 01:13:16,864 Veig cos, HTML aquí, o què apareix l'alerta en primer lloc? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> AUDIÈNCIA: Alerta. 1594 01:13:20,820 --> 01:13:21,470 >> DAVIN: Correcte. 1595 01:13:21,470 --> 01:13:22,110 Diu alerta. 1596 01:13:22,110 --> 01:13:22,610 Per què? 1597 01:13:22,610 --> 01:13:24,470 >> AUDIÈNCIA: Perquè vostè anar de dalt a baix. 1598 01:13:24,470 --> 01:13:25,600 >> DAVIN: Sí. 1599 01:13:25,600 --> 01:13:26,100 Perfecte. 1600 01:13:26,100 --> 01:13:29,207 Pel que diu, que vagi de dalt inferior, que és absolutament correcte. 1601 01:13:29,207 --> 01:13:30,790 Vostè va a anar de dalt a baix. 1602 01:13:30,790 --> 01:13:34,790 I en JavaScript, jQuery, vostè té una funció que és onload similars, o llest, 1603 01:13:34,790 --> 01:13:38,030 i que diu, OK, espereu fins tot això HTML s'ha carregat. 1604 01:13:38,030 --> 01:13:39,580 I després, trucar al JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Perquè no tenim això aquí, el El primer que passarà 1606 01:13:42,190 --> 01:13:43,920 es va a anar de dalt a baix. 1607 01:13:43,920 --> 01:13:46,310 Es va a colpejar que JS trucar, que va a alertar. 1608 01:13:46,310 --> 01:13:49,510 Després que fa clic a D'acord, que alerta desapareix. 1609 01:13:49,510 --> 01:13:53,600 A continuació es mostrarà que el cos HTML aquí. 1610 01:13:53,600 --> 01:13:54,590 Niça. 1611 01:13:54,590 --> 01:14:00,880 >> Acceptar, de manera que només molt ràpid, l'escriptura en JavaScript és super ràpid. 1612 01:14:00,880 --> 01:14:02,710 Per declarar un nom variable var. 1613 01:14:02,710 --> 01:14:07,070 Així que en C, té int i, vostè té per declarar quin tipus de tipus que és. 1614 01:14:07,070 --> 01:14:08,040 PHP, $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript var. 1616 01:14:08,755 --> 01:14:09,630 Ja parlem d'això. 1617 01:14:09,630 --> 01:14:11,020 Molt bé, anirem. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, el mateix. 1619 01:14:12,510 --> 01:14:14,230 És el mateix. 1620 01:14:14,230 --> 01:14:18,165 Les declaracions de funcions, de manera que igual que ho has vist en C. 1621 01:14:18,165 --> 01:14:21,290 L'única diferent és així que quan s'arriba a altres llenguatges de programació, 1622 01:14:21,290 --> 01:14:24,780 com quan es pren 51 proper semestre i que estàs fent amb ocaml, 1623 01:14:24,780 --> 01:14:26,690 vostè pot ocupar-se de funcions anònimes. 1624 01:14:26,690 --> 01:14:28,240 Així que això és exactament el que tenim aquí. 1625 01:14:28,240 --> 01:14:31,560 Així que vostè vol posar en suma, algun tipus de valor de la suma. 1626 01:14:31,560 --> 01:14:33,870 Però només es podria estar fent un cop. 1627 01:14:33,870 --> 01:14:37,310 Pel que no vulguis dir funció resum, donar-li una declaració de la funció. 1628 01:14:37,310 --> 01:14:39,830 En canvi, només l'utilitzen com una funció anònima. 1629 01:14:39,830 --> 01:14:42,469 I ja has vist aquesta molt. 1630 01:14:42,469 --> 01:14:44,510 Vostè veurà un exemple de això en un parell de diapositives. 1631 01:14:44,510 --> 01:14:45,597 Sí, ja veurem. 1632 01:14:45,597 --> 01:14:46,430 Gabe: Bona pregunta. 1633 01:14:46,430 --> 01:14:50,660 Quan podria voler utilitzar una funció anònima aquí? 1634 01:14:50,660 --> 01:14:54,111 Bàsicament, quan vols alguna cosa, com un esdeveniment, a passar. 1635 01:14:54,111 --> 01:14:55,860 Així que quan el ratolí està fer clic, per exemple, 1636 01:14:55,860 --> 01:14:57,790 Vols una mica de funció anomenat. 1637 01:14:57,790 --> 01:15:00,570 Així es passa a l'esdeveniment manipulador, es passa a l'esdeveniment, 1638 01:15:00,570 --> 01:15:02,870 tipus de, la funció que desitja ser cridat. 1639 01:15:02,870 --> 01:15:04,710 I el que està passant és com, al final 1640 01:15:04,710 --> 01:15:08,757 del dia, només un punter a que la instrucció, a la funció. 1641 01:15:08,757 --> 01:15:11,090 Així que no és com si estiguessis passant tot el codi, tal com 1642 01:15:11,090 --> 01:15:12,173 un punter a la funció. 1643 01:15:12,173 --> 01:15:17,871 I llavors, quan algú fa clic al ratolí, a continuació, que es diu a la funció. 1644 01:15:17,871 --> 01:15:22,340 >> DAVIN: matrius, per la qual cosa tenir una declaració de matriu. 1645 01:15:22,340 --> 01:15:23,990 A continuació, una matriu per posar les coses en. 1646 01:15:23,990 --> 01:15:25,769 Molt ràpid, el que serà aquesta imprimir? 1647 01:15:25,769 --> 01:15:27,060 Quin serà el tercer element serà? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> AUDIÈNCIA: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> DAVIN: Dret, que seria "JS". 1651 01:15:33,940 --> 01:15:35,760 Esperi, tornar. 1652 01:15:35,760 --> 01:15:37,100 Quina és la longitud? 1653 01:15:37,100 --> 01:15:38,117 >> AUDIÈNCIA: Tres. 1654 01:15:38,117 --> 01:15:38,950 DAVIN: tres, no? 1655 01:15:38,950 --> 01:15:40,210 Exactament el que vostè pensa. 1656 01:15:40,210 --> 01:15:42,072 Bé, ara anar. 1657 01:15:42,072 --> 01:15:43,530 Arrays, pot afegir coses a ells. 1658 01:15:43,530 --> 01:15:45,395 Així que vostè pot anar més enllà els seus límits inicials. 1659 01:15:45,395 --> 01:15:46,740 Només és una cosa a tenir en compte. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, que estan una mica poc més indulgent en termes de coses 1661 01:15:49,760 --> 01:15:50,570 d'aquesta manera. 1662 01:15:50,570 --> 01:15:54,260 Objectes, molt semblant estructures en C, molt 1663 01:15:54,260 --> 01:15:56,590 com matrius associatives en PHP. 1664 01:15:56,590 --> 01:15:58,720 Tot el que has tingut experiència amb això. 1665 01:15:58,720 --> 01:16:01,880 Així JSON, quan estàs passant JSON anada i tornada en p-8 set, 1666 01:16:01,880 --> 01:16:03,260 aquest és el seu objecte. 1667 01:16:03,260 --> 01:16:06,290 >> Així que sí, exemple, exemple ràpid real. 1668 01:16:06,290 --> 01:16:07,880 Aquí és un objecte. 1669 01:16:07,880 --> 01:16:12,700 La forma en què fan referència a aquesta objecte, de manera que només molt ràpid, 1670 01:16:12,700 --> 01:16:18,630 diguem que jo volia trobar fora, bé, quin és el curs? 1671 01:16:18,630 --> 01:16:20,681 I pel que el nom de l'objecte aquí és CS50. 1672 01:16:20,681 --> 01:16:23,180 I després si tingués un associativa matriu, com vaig a fer això? 1673 01:16:23,180 --> 01:16:24,580 Vaig a estar utilitzant la clau, oi? 1674 01:16:24,580 --> 01:16:26,030 Així que tinc el nom de la matriu. 1675 01:16:26,030 --> 01:16:30,160 Tinc suport, cites, clau, cometes finals, suport final, 1676 01:16:30,160 --> 01:16:33,610 i que farà referència a aquest element dins del meu matriu associativa. 1677 01:16:33,610 --> 01:16:37,646 Com em vaig referir Per descomptat dins del meu objecte? 1678 01:16:37,646 --> 01:16:39,170 Algú sap? 1679 01:16:39,170 --> 01:16:40,622 >> AUDIÈNCIA: [inaudible]. 1680 01:16:40,622 --> 01:16:41,784 >> DAVIN: Què passa? 1681 01:16:41,784 --> 01:16:42,700 AUDIÈNCIA: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 DAVIN: Dret, si. 1683 01:16:43,510 --> 01:16:45,320 Així CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Així que la forma es fa referència a les coses dins d'un objecte JSON és amb un punt. 1685 01:16:48,770 --> 01:16:53,114 >> AUDIÈNCIA: També podeu utilitzar la sintaxi de matrius. 1686 01:16:53,114 --> 01:16:54,050 >> DAVIN: OK, està bé. 1687 01:16:54,050 --> 01:16:57,544 >> Gabe: També podeu fer servir el suport CS50, cadena, com les cometes. 1688 01:16:57,544 --> 01:16:59,210 AUDIÈNCIA: Crec que és idèntica a PHP. 1689 01:16:59,210 --> 01:17:00,293 Gabe: És el mateix. 1690 01:17:00,293 --> 01:17:02,487 DAVIN: Molt bé! 1691 01:17:02,487 --> 01:17:03,945 Però veurà aquest altres llocs. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Sí, així de seguir endavant. 1694 01:17:10,480 --> 01:17:13,330 Això és el que acabo de dir. 1695 01:17:13,330 --> 01:17:17,840 Així que en un exemple de JavaScript jQuery. 1696 01:17:17,840 --> 01:17:19,440 Així que aquest és el meu DOM, oi? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Molt ràpid, així que tinc una cap, hola món, cos. 1699 01:17:25,410 --> 01:17:26,160 Tinc un botó. 1700 01:17:26,160 --> 01:17:27,870 Diu que "em empenta", de manera que vull per empènyer. 1701 01:17:27,870 --> 01:17:29,745 I vull fer alguna cosa quan es fa clic en ell. 1702 01:17:29,745 --> 01:17:31,220 Dret, al costat. 1703 01:17:31,220 --> 01:17:34,630 >> Dret, de manera que aquest és el meu JavaScript. 1704 01:17:34,630 --> 01:17:37,790 Així que jQuery és només una més fàcil manera d'escriure JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Així que això, i el que vaig a mostrar el proper, serà jQuery, 1706 01:17:40,920 --> 01:17:41,930 són idèntics. 1707 01:17:41,930 --> 01:17:43,990 Així que van a fer les mateixes coses. 1708 01:17:43,990 --> 01:17:45,974 Només jQuery tendeix a ser una mica més fàcil. 1709 01:17:45,974 --> 01:17:47,140 La gent tendeix a agradar més. 1710 01:17:47,140 --> 01:17:48,390 Té un munt de funcionalitats. 1711 01:17:48,390 --> 01:17:49,830 Així que la gent tendeix a utilitzar jQuery. 1712 01:17:49,830 --> 01:17:53,270 Tots vostès acostumat jQuery en l'última p-set. 1713 01:17:53,270 --> 01:17:54,270 Llavors, què va a fer això? 1714 01:17:54,270 --> 01:17:56,580 Què farà aquest JavaScript-- així això és simplement JavaScript. 1715 01:17:56,580 --> 01:17:57,430 Què va a fer això? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 Què va a fer? 1718 01:18:03,450 --> 01:18:04,890 >> Així que primer, es veu la finestra onload. 1719 01:18:04,890 --> 01:18:05,390 Dret? 1720 01:18:05,390 --> 01:18:06,640 Així que no hem vist això abans. 1721 01:18:06,640 --> 01:18:09,380 Així que això va a esperar fins que tota la finestra de càrregues. 1722 01:18:09,380 --> 01:18:12,770 Així que va a esperar fins la càrrega d'HTML, totes les imatges 1723 01:18:12,770 --> 01:18:13,770 abans de fer res. 1724 01:18:13,770 --> 01:18:16,050 Així que diguem que el nostre DOM ha carregat. 1725 01:18:16,050 --> 01:18:17,270 Tot hi és. 1726 01:18:17,270 --> 01:18:19,080 Llavors, què passarà? 1727 01:18:19,080 --> 01:18:19,922 Sí? 1728 01:18:19,922 --> 01:18:22,880 >> AUDIÈNCIA: apareix Button. 1729 01:18:22,880 --> 01:18:25,201 >> DAVIN: El botó està ja allà. 1730 01:18:25,201 --> 01:18:26,700 Sí, això del botó ja hi és. 1731 01:18:26,700 --> 01:18:31,190 Però això dirà, Bé, si faig clic al botó, 1732 01:18:31,190 --> 01:18:33,650 de manera que el botó ja està allà, com l'etiqueta HTML. 1733 01:18:33,650 --> 01:18:35,980 Esperi, tornar molt ràpid. 1734 01:18:35,980 --> 01:18:39,470 Aquest avís de dret aquí és serà un botó ja. 1735 01:18:39,470 --> 01:18:40,810 Ja hi ha un botó. 1736 01:18:40,810 --> 01:18:44,120 Però llavors, el codi JavaScript etiqueta, aquí, 1737 01:18:44,120 --> 01:18:46,160 que diu, OK, vull aconseguir element per ID, 1738 01:18:46,160 --> 01:18:50,300 així botó de cerca es limita a dir, OK, vull per assignar aquesta variable a aquest botó. 1739 01:18:50,300 --> 01:18:53,120 Així que aquesta variable és només una manera més fàcil d'accedir a aquest botó. 1740 01:18:53,120 --> 01:18:57,300 I jo dic, està bé, si faig clic que botó, de manera que si faig clic en aquest element, 1741 01:18:57,300 --> 01:18:59,560 i aquest element es refereix a el botó, si faig clic, 1742 01:18:59,560 --> 01:19:00,875 llavors vull cridar a una funció. 1743 01:19:00,875 --> 01:19:03,500 Aquí està un dels anònims funcions que estàvem parlant. 1744 01:19:03,500 --> 01:19:04,840 >> Només ha de trucar alguna funció. 1745 01:19:04,840 --> 01:19:08,840 Dins d'aquesta funció, bàsicament, cosa que hem vist molt, alerta. 1746 01:19:08,840 --> 01:19:10,477 Fa clic al botó de cerca. 1747 01:19:10,477 --> 01:19:12,060 Va a tenir bàsicament un botó. 1748 01:19:12,060 --> 01:19:13,040 Fer clic. 1749 01:19:13,040 --> 01:19:14,040 Vostè aconsegueix aquesta alerta. 1750 01:19:14,040 --> 01:19:14,850 X terme. 1751 01:19:14,850 --> 01:19:15,754 Això és tot. 1752 01:19:15,754 --> 01:19:16,254 Sí? 1753 01:19:16,254 --> 01:19:21,980 >> AUDIÈNCIA: Així que si vostè posa el guió [Inaudible], etiqueta de script en el codi HTML? 1754 01:19:21,980 --> 01:19:24,300 >> DAVIN: Vostè pot posar el guió etiqueta directament al cap 1755 01:19:24,300 --> 01:19:30,667 perquè vostè té aquest onload. 1756 01:19:30,667 --> 01:19:32,000 És també que té un clic. 1757 01:19:32,000 --> 01:19:34,166 Així que va a esperar fins fa clic per alguna cosa. 1758 01:19:34,166 --> 01:19:37,470 Però onload és només per estar segur, per fer càrregues que tot està en el seu HTML 1759 01:19:37,470 --> 01:19:38,170 per endavant. 1760 01:19:38,170 --> 01:19:39,247 Sí? 1761 01:19:39,247 --> 01:19:40,330 Vols dir alguna cosa? 1762 01:19:40,330 --> 01:19:41,080 >> Gabe: [inaudible]. 1763 01:19:41,080 --> 01:19:42,485 DAVIN: Sí. 1764 01:19:42,485 --> 01:19:45,426 >> AUDIÈNCIA: evita Així onload definir el botó de cerca de variable 1765 01:19:45,426 --> 01:19:49,930 simplement dient document.getElementById botó de cerca de punts [inaudible]. 1766 01:19:49,930 --> 01:19:52,320 >> DAVIN: Definitivament, però després la seva cadena només es posa enorme. 1767 01:19:52,320 --> 01:19:55,553 Exactament, així que això és només per fer més fàcil per a vostè, si. 1768 01:19:55,553 --> 01:19:56,053 Sí? 1769 01:19:56,053 --> 01:19:57,886 >> AUDIÈNCIA: On ens crear window.onload? 1770 01:19:57,886 --> 01:19:58,951 O document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> DAVIN: Sí, n'hi ha. 1772 01:20:00,590 --> 01:20:02,094 Sí, es, ho he comprovat. 1773 01:20:02,094 --> 01:20:03,710 >> Gabe: no perquè es preocupen. 1774 01:20:03,710 --> 01:20:06,970 >> DAVIN: OK, així que em vaig per dir-li de totes maneres. 1775 01:20:06,970 --> 01:20:11,005 Així que, bàsicament, només en general, de manera que window.onload espera fins a la seva DOM, tot 1776 01:20:11,005 --> 01:20:12,180 el codi HTML, càrregues. 1777 01:20:12,180 --> 01:20:13,513 Espera fins que la seva càrrega d'imatges. 1778 01:20:13,513 --> 01:20:14,930 Espera fins que tot càrrega. 1779 01:20:14,930 --> 01:20:18,410 document.ready, només espera fins que les seves càrregues DOM. 1780 01:20:18,410 --> 01:20:22,190 Una vegada que l'HTML és tot el que hi ha, un cop DOM hi és, comença a funcionar. 1781 01:20:22,190 --> 01:20:23,400 Aquesta és l'única diferència. 1782 01:20:23,400 --> 01:20:24,700 >> Gabe: comprovar el seny ràpida aquí. 1783 01:20:24,700 --> 01:20:29,060 Així això pot ser vist tipus de com una línia de codi, no? 1784 01:20:29,060 --> 01:20:33,600 Perquè és window.onload és igual a un munt de coses. 1785 01:20:33,600 --> 01:20:39,030 Quan estigui habilitat llegeix això, cert o falsa, la funció s'executa. 1786 01:20:39,030 --> 01:20:40,020 Fals. 1787 01:20:40,020 --> 01:20:40,920 D'acord? 1788 01:20:40,920 --> 01:20:44,470 El que passa aquí, estàs de pas aquesta funció com una funcions anònimes 1789 01:20:44,470 --> 01:20:45,300 a window.onload. 1790 01:20:45,300 --> 01:20:48,480 I després quan es va per aconseguir realment executada? 1791 01:20:48,480 --> 01:20:49,600 Quan es carrega la finestra. 1792 01:20:49,600 --> 01:20:50,420 Això és un fet. 1793 01:20:50,420 --> 01:20:52,460 Així que això és jus t cosa estem parlant d'abans, no? 1794 01:20:52,460 --> 01:20:54,580 Així que quan passi l'esdeveniment, la funció passa. 1795 01:20:54,580 --> 01:20:55,746 El mateix amb el onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> DAVIN: OK, així que algú va prendre lluny del document.ready. 1798 01:21:03,130 --> 01:21:04,698 Però aquesta serà la same-- exacta 1799 01:21:04,698 --> 01:21:06,864 AUDIÈNCIA: El signe del dòlar, que és un document.ready. 1800 01:21:06,864 --> 01:21:07,710 Això és una drecera. 1801 01:21:07,710 --> 01:21:08,501 >> DAVIN: Oh, que és això? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 Ok, així que vol dir això? document.ready, accés directe. 1804 01:21:15,500 --> 01:21:19,660 Però aquest és el mateix que window.onload a excepció de la petita diferència 1805 01:21:19,660 --> 01:21:20,680 Del que et vaig parlar. 1806 01:21:20,680 --> 01:21:21,870 I això és jQuery. 1807 01:21:21,870 --> 01:21:25,190 Així que aquest és exactament el mateix cosa-- això és JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Això es sol-- algunes persones pensen d'ell com un pes més lleuger, versió elegant 1809 01:21:29,500 --> 01:21:32,370 que té un munt de funcionalitat que és probable que s'utilitzi. 1810 01:21:32,370 --> 01:21:34,500 Així que això fa exactament el mateix. 1811 01:21:34,500 --> 01:21:37,110 >> Així que el que assenyalen tipus de. 1812 01:21:37,110 --> 01:21:40,364 Així que en l'altre exemple, tingut document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 així que vam tenir aquesta llarga cadena que va a aconseguir 1814 01:21:42,280 --> 01:21:44,290 l'element pel que té ID. 1815 01:21:44,290 --> 01:21:46,470 Això es substitueix per aquesta crida aquí. 1816 01:21:46,470 --> 01:21:50,860 Així es veu el signe de dòlar, després veus cita, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag és sempre un selector. 1818 01:21:52,370 --> 01:21:54,730 Es diu, està bé, això té a veure amb un ID. 1819 01:21:54,730 --> 01:21:56,120 Quin és el selector per a una classe? 1820 01:21:56,120 --> 01:21:57,190 >> AUDIÈNCIA: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> DAVIN: Dot, dreta. 1822 01:21:57,960 --> 01:22:01,950 Si només vas a seleccionar una etiqueta, què és? 1823 01:22:01,950 --> 01:22:03,310 És només l'etiqueta, exactament. 1824 01:22:03,310 --> 01:22:05,560 I vostè podria utilitzar que aquí, també. 1825 01:22:05,560 --> 01:22:08,560 >> Gabe: I per etiqueta, ens referim com div, per exemple, o el cap. 1826 01:22:08,560 --> 01:22:11,500 >> DAVIN: O cos o p o res d'això, si. 1827 01:22:11,500 --> 01:22:14,390 Així que aquí, bé, en comptes de dir document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 això és només la mateixa cosa. 1829 01:22:16,500 --> 01:22:17,990 Només en jQuery, és més curt. 1830 01:22:17,990 --> 01:22:19,860 Així que és més simple. 1831 01:22:19,860 --> 01:22:23,420 Així doncs, no més onclick, només cal fer clic. 1832 01:22:23,420 --> 01:22:26,320 funció jQuery, trucar a aquesta funció. 1833 01:22:26,320 --> 01:22:27,580 Alerta és exactament el mateix. 1834 01:22:27,580 --> 01:22:29,452 Així que és una mica més petit, o poc 1835 01:22:29,452 --> 01:22:32,410 més curt, una mica de la gent pensa bit-- que és una mica més fàcil d'escriure, 1836 01:22:32,410 --> 01:22:34,600 una mica més fàcil d'entendre. 1837 01:22:34,600 --> 01:22:35,640 Però això és jQuery. 1838 01:22:35,640 --> 01:22:37,887 Un munt de gent una mica poc confós i preocupat 1839 01:22:37,887 --> 01:22:40,220 i pensen, OK, jQuery és diferent de JavaScript. 1840 01:22:40,220 --> 01:22:42,136 He de recordar aquests dues coses diferents. 1841 01:22:42,136 --> 01:22:42,740 Que no és. 1842 01:22:42,740 --> 01:22:45,315 Vull dir, és diferent sintaxi. 1843 01:22:45,315 --> 01:22:46,970 Però jQuery és JavaScript. 1844 01:22:46,970 --> 01:22:50,050 És només una aparença millor versió que 1845 01:22:50,050 --> 01:22:51,967 podria ser més fàcil entenen que la gent fa servir. 1846 01:22:51,967 --> 01:22:53,716 Gabe: Sí, per ser honest, que el signe de dòlar 1847 01:22:53,716 --> 01:22:57,240 que es veu en jQuery, això és només el nom d'una funció que defineix jQuery. 1848 01:22:57,240 --> 01:22:58,614 No té res d'especial. 1849 01:22:58,614 --> 01:23:03,140 És només el nom d'una funció, Igual que es podria definir el signe de dòlar. 1850 01:23:03,140 --> 01:23:05,670 >> DAVIN: Sí, així que parlem d'això. 1851 01:23:05,670 --> 01:23:06,680 Algunes coses útils. 1852 01:23:06,680 --> 01:23:10,414 Jo estava buscant tornar a les velles proves. 1853 01:23:10,414 --> 01:23:13,080 En els últims dos qüestionaris, que han va haver d'utilitzar aquest tipus de coses. 1854 01:23:13,080 --> 01:23:15,230 Així document.ready, per la qual fer que tot estigui 1855 01:23:15,230 --> 01:23:17,410 carregat abans de començar a fer les coses. 1856 01:23:17,410 --> 01:23:20,120 Seleccioneu un ID o seleccioneu una classe, que acabava de 1857 01:23:20,120 --> 01:23:24,020 ser cita dot alguna classe, fi de la cita. 1858 01:23:24,020 --> 01:23:26,580 Presentar, així que si estàs la presentació d'un formulari i trucada 1859 01:23:26,580 --> 01:23:28,830 aquesta funció després que el formulari envia. 1860 01:23:28,830 --> 01:23:34,210 Valor, així que anem a dir que tenia una forma presentació, com un nom d'usuari, un correu electrònic, 1861 01:23:34,210 --> 01:23:34,950 el que sigui. 1862 01:23:34,950 --> 01:23:36,010 Vaig tenir un quadre de text. 1863 01:23:36,010 --> 01:23:37,670 Així que estic escrivint en aquest quadre de text. 1864 01:23:37,670 --> 01:23:42,170 Bé, si vol aconseguir el valor fora d'aquest quadre de text, utilitzeu punt val. 1865 01:23:42,170 --> 01:23:44,050 I després, aquí baix, dot HTML és el mateix 1866 01:23:44,050 --> 01:23:47,710 és com a document de punt getElementById punt innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Així que això tornarà que el codi HTML d'aquest ID. 1868 01:23:50,890 --> 01:23:55,080 Aquí, vostè només ha d'utilitzar alguns ID o el que sigui dot HTML. 1869 01:23:55,080 --> 01:23:56,930 Això arribarà el codi HTML d'aquest element. 1870 01:23:56,930 --> 01:24:00,130 Si volies llavors canviar això HTML, pot passar alguna cosa. 1871 01:24:00,130 --> 01:24:05,600 Així que seria com HTML punt, i després a l'interior, de cites, de nou HTML o alguna cosa així. 1872 01:24:05,600 --> 01:24:07,490 >> Gabe: OK, així AJAX. 1873 01:24:07,490 --> 01:24:10,347 Realment m'agrada entendre AJAX molt bé. 1874 01:24:10,347 --> 01:24:12,430 Així que us vull nois a AJAX entendre molt bé. 1875 01:24:12,430 --> 01:24:14,221 Perquè si ho fas, que està bastant anar 1876 01:24:14,221 --> 01:24:16,810 per entendre tot el que té a veure amb HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript perquè tot es reuneix en AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX no és un llenguatge. 1879 01:24:25,130 --> 01:24:27,000 AJAX és una tècnica. 1880 01:24:27,000 --> 01:24:31,690 I utilitza un munt de diferents eines. 1881 01:24:31,690 --> 01:24:35,090 AJAX significa asíncron XML JavaScript. 1882 01:24:35,090 --> 01:24:36,730 Així el mètode, la llengua, les dades. 1883 01:24:36,730 --> 01:24:40,610 >> Així que l'idioma principal que utilitzem en AJAX per desencadenar tot 1884 01:24:40,610 --> 01:24:42,830 i per manejar tot més tard és JavaScript. 1885 01:24:42,830 --> 01:24:45,160 És per això que es relaciona molt a prop de JavaScript. 1886 01:24:45,160 --> 01:24:49,810 I llavors és asíncrona perquè nosaltres no ho fem 1887 01:24:49,810 --> 01:24:51,980 tots alhora quan ens estem carregant la pàgina. 1888 01:24:51,980 --> 01:24:57,190 Això és el que podem fer les coses una mica en paral·lel. 1889 01:24:57,190 --> 01:24:59,725 La idea principal darrere AJAX és que vols 1890 01:24:59,725 --> 01:25:02,170 per aconseguir una certa informació específica. 1891 01:25:02,170 --> 01:25:06,450 Per exemple, quan estàs escrivint nou nom d'usuari quan es registra un nom d'usuari, 1892 01:25:06,450 --> 01:25:08,520 el meu nom d'usuari és abc123. 1893 01:25:08,520 --> 01:25:11,671 I després, al final de la manera, has de fer clic a Envia. 1894 01:25:11,671 --> 01:25:14,420 I havia d'anar al servidor, i després verifiqui si a la base de dades, 1895 01:25:14,420 --> 01:25:15,594 abc123 que ja hi és. 1896 01:25:15,594 --> 01:25:18,510 I si ja hi és, diu, nom d'usuari ja a la base de dades. 1897 01:25:18,510 --> 01:25:21,010 I ells, que han d'omplir tot el formulari de nou. 1898 01:25:21,010 --> 01:25:23,110 I era molt, molt dolent. 1899 01:25:23,110 --> 01:25:25,440 >> I després la gent diu, Bé, per què no acabem de 1900 01:25:25,440 --> 01:25:29,560 fer una petita petició HTTP al xec just per veure si aquest usuari està a la base de dades 1901 01:25:29,560 --> 01:25:32,080 abans que l'usuari havia de presentar tot el formulari? 1902 01:25:32,080 --> 01:25:36,350 Així, per exemple, quan el usuari acabi d'escriure abc123, 1903 01:25:36,350 --> 01:25:39,660 anirem al servidor una mica poc i acaba d'obtenir un veritable o fals 1904 01:25:39,660 --> 01:25:43,080 des del servidor per veure si això és un nom d'usuari vàlid o no. 1905 01:25:43,080 --> 01:25:49,250 OK, així que això és una de les principals usos d'AJAX avui dia encara. 1906 01:25:49,250 --> 01:25:52,130 >> DAVIN: Així que realment ràpid, en una trucada Ajax a jQuery, 1907 01:25:52,130 --> 01:25:54,770 que podria significar que vostè vull que sigui síncrona. 1908 01:25:54,770 --> 01:25:56,330 Vostè no ha de fer això. 1909 01:25:56,330 --> 01:25:57,640 Però vostè pot fer això. 1910 01:25:57,640 --> 01:25:59,277 I si el que, què passaria? 1911 01:25:59,277 --> 01:26:01,610 Bé, per exemple, quan estàs fer arribar les notícies o el que sigui, 1912 01:26:01,610 --> 01:26:05,464 el seu navegador només va a esperar fins que tota aquesta crida s'ha completat 1913 01:26:05,464 --> 01:26:08,130 en lloc de deixar que facis una altra les coses bé després de fer clic. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> Gabe: No és passar mai més. 1916 01:26:17,115 --> 01:26:19,681 Déu meu. 1917 01:26:19,681 --> 01:26:20,180 Ho sento! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Sí. 1920 01:26:23,601 --> 01:26:25,350 "En el passat, el client necessitava petició 1921 01:26:25,350 --> 01:26:26,840 tot el contingut d'una pàgina web ". 1922 01:26:26,840 --> 01:26:28,210 Això és el que vaig dir. 1923 01:26:28,210 --> 01:26:30,070 Ens permet enviar GET o POST addicional 1924 01:26:30,070 --> 01:26:32,140 peticions sense tenir per recarregar el nostre navegador. 1925 01:26:32,140 --> 01:26:34,806 Així que al final del dia, estem realment fer una sol·licitud HTTP 1926 01:26:34,806 --> 01:26:35,740 aquí amb JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Perquè abans, només utilitzem JavaScript per canviar el codi HTML que ja va arribar. 1928 01:26:39,700 --> 01:26:43,110 I ara, podem utilitzar-lo per interactuar amb els servidors web, així. 1929 01:26:43,110 --> 01:26:46,140 La forma en què això succeeix és que tenim el client. 1930 01:26:46,140 --> 01:26:47,340 Davin és un client. 1931 01:26:47,340 --> 01:26:50,797 I té tot el codi JavaScript córrer perquè HTML està mut. 1932 01:26:50,797 --> 01:26:51,630 Javascript és intel·ligent. 1933 01:26:51,630 --> 01:26:54,690 Així Davin Davin té la seva intel·ligent part i la seva part mut. 1934 01:26:54,690 --> 01:26:57,590 Ell va a utilitzar la seva banda intel·ligent ara. 1935 01:26:57,590 --> 01:27:00,860 Ell va a utilitzar JavaScript a la sol·licitud, per exemple, 1936 01:27:00,860 --> 01:27:04,340 si està en abc123 la base de dades o no. 1937 01:27:04,340 --> 01:27:08,450 >> Així Davin, si us plau, només envieu-me una petició HTTP. 1938 01:27:08,450 --> 01:27:09,197 Gràcies. 1939 01:27:09,197 --> 01:27:10,530 Així que acaba d'enviar una petició HTTP. 1940 01:27:10,530 --> 01:27:11,270 Vostè veu això? 1941 01:27:11,270 --> 01:27:14,700 I això és només la mateixa manera que s'envia qualsevol sol·licitud HTTP. 1942 01:27:14,700 --> 01:27:16,830 El navegador, Google Chrome o alguna cosa així, és 1943 01:27:16,830 --> 01:27:19,570 anem a veure que Davin de tractant d'enviar una petició HTTP, 1944 01:27:19,570 --> 01:27:20,930 ajudarà hm una mica. 1945 01:27:20,930 --> 01:27:23,950 I això anirà tot el camí fins al servidor. 1946 01:27:23,950 --> 01:27:27,370 Ara, el servidor tindrà PHP aquí, o qualsevol altre idioma. 1947 01:27:27,370 --> 01:27:29,990 Igual que en una petició HTTP normal. 1948 01:27:29,990 --> 01:27:31,950 És més o menys una petició HTTP normal. 1949 01:27:31,950 --> 01:27:33,658 >> I després, el servidor es dirà, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin em vol comprovar si aquest abc123 està a la base de dades. 1951 01:27:37,270 --> 01:27:38,310 Vés a parlar amb el model. 1952 01:27:38,310 --> 01:27:41,310 El model diu que no és. abc123 és un bon nom d'usuari. 1953 01:27:41,310 --> 01:27:47,940 I llavors, el lloc web va a utilitzar PHP per fer algun tipus d'arxiu. 1954 01:27:47,940 --> 01:27:52,280 Podria ser, literalment, només un arxiu que conté "sí" en ella, o "no, 1955 01:27:52,280 --> 01:27:53,315 o alguna cosa per l'estil. 1956 01:27:53,315 --> 01:27:54,190 Podria ser qualsevol arxiu. 1957 01:27:54,190 --> 01:27:57,080 >> Podria ser que em vaig a Davin enviar una foto d'un ànec 1958 01:27:57,080 --> 01:28:01,200 si està a la base de dades i enviar una imatge d'un hàmster 1959 01:28:01,200 --> 01:28:02,420 si no està a la base de dades. 1960 01:28:02,420 --> 01:28:04,294 Això seria tipus de mut, però funcionarà. 1961 01:28:04,294 --> 01:28:07,030 OK, així que envio un ànec a Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin va aconseguir un ànec. 1963 01:28:08,150 --> 01:28:13,330 I ara, qui va per manejar l'ànec? 1964 01:28:13,330 --> 01:28:16,390 Part intel·ligent Davin nou, així JavaScript, oi? 1965 01:28:16,390 --> 01:28:18,620 JavaScript enviar el sol·licitud i JavaScript 1966 01:28:18,620 --> 01:28:22,300 que rebrà la sol·licitud i interpretar-la en alguna forma. 1967 01:28:22,300 --> 01:28:26,630 >> I en aquest sentit, que va a dir, OK, si ànec llavors estic bé. 1968 01:28:26,630 --> 01:28:30,770 Si hàmster, després vaig dir, no, nom d'usuari i 1969 01:28:30,770 --> 01:28:31,970 existeix a la base de dades. 1970 01:28:31,970 --> 01:28:33,845 Però en general, no ets va a enviar un ànec. 1971 01:28:33,845 --> 01:28:36,740 Vas a enviar cosa una mica més intel·ligent. 1972 01:28:36,740 --> 01:28:40,320 I el que fem servir és XML. 1973 01:28:40,320 --> 01:28:42,690 I més recentment, utilitzem JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON és JavaScript Object Notation, que 1975 01:28:45,629 --> 01:28:47,670 és bàsicament s'obté una tot objecte JavaScript. 1976 01:28:47,670 --> 01:28:50,820 I el poses en un arxiu, igual que aquest objecte CS50 que vostès van veure. 1977 01:28:50,820 --> 01:28:53,090 T'ho poses en un arxiu, i l'envia a Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Així que en aquest cas, ho faria fer un objecte JavaScript 1979 01:28:55,850 --> 01:28:59,570 i dir, hi ha l'usuari, si. 1980 01:28:59,570 --> 01:29:01,630 O hi ha l'usuari, no. 1981 01:29:01,630 --> 01:29:02,810 I enviar de nou a ell. 1982 01:29:02,810 --> 01:29:03,830 I per què JSON? 1983 01:29:03,830 --> 01:29:07,330 A causa de que la persona que està rebent aquest és 1984 01:29:07,330 --> 01:29:10,030 utilitzarà JavaScript per manejar la resposta. 1985 01:29:10,030 --> 01:29:14,970 I JavaScript funciona tan bé perquè es diu JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Dret? 1987 01:29:15,470 --> 01:29:19,660 Així que es pot cridar a una funció i obtenir aquest bonic objecte de la resposta. 1988 01:29:19,660 --> 01:29:22,890 I llavors, ell sabrà si que l'usuari està a la base de dades o no. 1989 01:29:22,890 --> 01:29:25,230 >> Així que ja veus, tot el que ve junts a la web, 1990 01:29:25,230 --> 01:29:28,450 i després hi ha una petició HTTP a i en una resposta HTTP i tot. 1991 01:29:28,450 --> 01:29:30,600 Així que assegureu-vos de nois entendre aquesta crida AJAX 1992 01:29:30,600 --> 01:29:37,260 perquè ajuda a entendre tot dels conceptes que estem parlant. 1993 01:29:37,260 --> 01:29:40,260 >> Així que aquí està un exemple d'AJAX amb jQuery. 1994 01:29:40,260 --> 01:29:42,130 I aquí, ho fem amb get JSON. 1995 01:29:42,130 --> 01:29:45,660 Així que no estem tractant d'obtenir una imatge d'un gat aquí, o un ànec. 1996 01:29:45,660 --> 01:29:48,110 Estem tractant d'obtenir un fitxer JSON. 1997 01:29:48,110 --> 01:29:51,184 I llavors esperem fins es fa, punt fet. 1998 01:29:51,184 --> 01:29:52,850 Això vol dir que estic esperant la resposta. 1999 01:29:52,850 --> 01:29:54,180 Pot ser que prengui una mica de temps. 2000 01:29:54,180 --> 01:29:56,360 Després, es veu una mica de càrrega. 2001 01:29:56,360 --> 01:29:59,340 Si vostè vol fer que al seu lloc web. 2002 01:29:59,340 --> 01:30:01,440 Així dot fer, i llavors, què que passa quan es fa? 2003 01:30:01,440 --> 01:30:04,040 Es passa d'un anònim funció, igual que vam veure abans. 2004 01:30:04,040 --> 01:30:07,800 A causa fet és un esdeveniment, només com fer clic a un ratolí o el que sigui, 2005 01:30:07,800 --> 01:30:08,710 per jQuery. 2006 01:30:08,710 --> 01:30:13,710 Així passa en aquesta funció amb dades, text, estat i jqXHR. 2007 01:30:13,710 --> 01:30:15,790 I en el fons, això és només algunes variables 2008 01:30:15,790 --> 01:30:22,160 que es pot utilitzar més endavant per tenir l'estat de la sol·licitud HTTP, 2009 01:30:22,160 --> 01:30:24,470 les dades que es va per enviar de nou a vostè. 2010 01:30:24,470 --> 01:30:28,740 Així que vostè pot més endavant interpretar i fer alguna cosa significativa amb ell. 2011 01:30:28,740 --> 01:30:30,240 I si falla, quan es podria fallar? 2012 01:30:30,240 --> 01:30:33,780 Bé, quan la petició HTTP dóna És vostè un 500 o alguna cosa així. 2013 01:30:33,780 --> 01:30:37,420 Llavors, dirà la estat, quin tipus de fallada que va ser, 2014 01:30:37,420 --> 01:30:38,420 i tot tipus de coses. 2015 01:30:38,420 --> 01:30:40,630 Vostè ha de assegurar- per manejar tots dos casos, 2016 01:30:40,630 --> 01:30:42,770 en cas contrari el programa es torna boig. 2017 01:30:42,770 --> 01:30:45,820 >> DAVIN: Així que sí, això és exactament el que va veure en la seva última p-set. 2018 01:30:45,820 --> 01:30:49,720 L'anomenada real AJAX està en el JSON get. 2019 01:30:49,720 --> 01:30:50,587 Aquesta és la trucada. 2020 01:30:50,587 --> 01:30:52,920 I després, punt fet és com comprova si té èxit. 2021 01:30:52,920 --> 01:30:55,620 Si té èxit, vol fer alguna cosa amb les dades. 2022 01:30:55,620 --> 01:30:59,290 Tens l'oportunitat de tornar que Sol·licitar dades JSON. 2023 01:30:59,290 --> 01:31:00,600 Això és el que rep. 2024 01:31:00,600 --> 01:31:04,470 Així que si vostè recorda de la seva p-set, molts de vostès eren com a suport de dades i 2025 01:31:04,470 --> 01:31:06,302 o el que sigui, enllaç punt o títol. 2026 01:31:06,302 --> 01:31:08,260 El que tornarà a partir d'aquest JSON, el 2027 01:31:08,260 --> 01:31:11,020 els camps es troben en aquest objecte JSON, això és el que està rebent de tornada. 2028 01:31:11,020 --> 01:31:12,394 Dades és el que està rebent de tornada. 2029 01:31:12,394 --> 01:31:15,510 Estat del text, cosa que li permet saber el que va passar. 2030 01:31:15,510 --> 01:31:20,570 I després, el jqXHR, que només la petició HTTP XML jQuery. 2031 01:31:20,570 --> 01:31:21,990 Això és com un objecte. 2032 01:31:21,990 --> 01:31:23,932 I després no, igual que Gabe va dir. 2033 01:31:23,932 --> 01:31:27,140 Gabe: En el nostre petit exemple de abc123 només per comprovar si això és a la base de dades 2034 01:31:27,140 --> 01:31:32,260 o no, les dades serien una cosa que faria, si existeix el nom d'usuari de punts de dades, 2035 01:31:32,260 --> 01:31:37,720 que és el que genera el seu PHP per que, si existeix el nom d'usuari de punts de dades, a continuació, 2036 01:31:37,720 --> 01:31:40,880 Vaig a avisar, usuari nom ja existeix. 2037 01:31:40,880 --> 01:31:44,300 Si no, jo només vaig a deixar que el usuari segueixi omplint el formulari. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 Acceptar, la seguretat, fresc. 2040 01:31:50,820 --> 01:31:52,060 >> DAVIN: Em Wanna? 2041 01:31:52,060 --> 01:31:54,500 >> Gabe: M'agrada aquesta. 2042 01:31:54,500 --> 01:31:57,680 Així que una cosa que em resulta familiar. 2043 01:31:57,680 --> 01:31:59,750 Ja gairebé hem acabat. 2044 01:31:59,750 --> 01:32:02,670 Així que això és només l'exemple vostès vam veure a classe. 2045 01:32:02,670 --> 01:32:04,860 Utilitzava argv1 aquí. 2046 01:32:04,860 --> 01:32:06,460 Això és com un argument de línia d'ordres. 2047 01:32:06,460 --> 01:32:09,270 I estem MEM còpia que en un buffer de cos 12. 2048 01:32:09,270 --> 01:32:12,560 Quin és el problema aquí? 2049 01:32:12,560 --> 01:32:13,660 Desbordament de memòria intermèdia! 2050 01:32:13,660 --> 01:32:15,400 Com que tenim un buffer de mida 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 podria tenir una mida de dos mil milions. 2052 01:32:18,400 --> 01:32:19,960 Nosaltres no fem cap comprovació de límits. 2053 01:32:19,960 --> 01:32:24,970 Així que podríem copiar una gran quantitat de memòria. 2054 01:32:24,970 --> 01:32:28,630 I estarem en particular malament per això. 2055 01:32:28,630 --> 01:32:32,600 Què podríem fer això molt, molt dolent en aquest cas? 2056 01:32:32,600 --> 01:32:33,278 Sí? 2057 01:32:33,278 --> 01:32:36,528 AUDIÈNCIA: Part dels dos mil milions d'coses conté codi executable que torna 2058 01:32:36,528 --> 01:32:38,127 [Inaudible]. 2059 01:32:38,127 --> 01:32:38,710 Gabe: Exactament. 2060 01:32:38,710 --> 01:32:41,110 Així que aquest és el tipus de El que la gent fa servir 2061 01:32:41,110 --> 01:32:43,344 fer jailbreak a un iPhone, per exemple. 2062 01:32:43,344 --> 01:32:44,260 Així que aquest tipus de coses. 2063 01:32:44,260 --> 01:32:48,610 Com que només pot fer que el dispositiu executar qualsevol codi que t'agrada. 2064 01:32:48,610 --> 01:32:50,247 La solució, de manera que la solució és fàcil. 2065 01:32:50,247 --> 01:32:51,330 Només has de comprovar els límits. 2066 01:32:51,330 --> 01:32:53,455 Tu passes per nul·la perquè sempre comprovar NULL 2067 01:32:53,455 --> 01:32:54,940 quan estem tractant amb cordes. 2068 01:32:54,940 --> 01:32:57,840 I llavors, es pren el longitud de la cadena abans. 2069 01:32:57,840 --> 01:33:00,150 I si la cadena la longitud és una cadena vàlida 2070 01:33:00,150 --> 01:33:03,700 longitud, que està dins 0 i 12, llavors estem bé. 2071 01:33:03,700 --> 01:33:07,144 >> DAVIN: Si no marca per null, molt ràpid, què passarà? 2072 01:33:07,144 --> 01:33:07,810 Va SEG culpa. 2073 01:33:07,810 --> 01:33:10,850 Per què serà SEG queixar? 2074 01:33:10,850 --> 01:33:12,510 A causa de que està trucant strlen en nul. 2075 01:33:12,510 --> 01:33:13,010 Gabe: Sí. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 Veritable o fals, fent servir un contrasenya és una bona idea. 2078 01:33:19,630 --> 01:33:20,430 >> AUDIÈNCIA: Fals. 2079 01:33:20,430 --> 01:33:21,150 >> Gabe: Fals. 2080 01:33:21,150 --> 01:33:23,870 Utilitzeu moltes contrasenyes i grans, els llargs. 2081 01:33:23,870 --> 01:33:26,050 Icones de cadenat garantir la seguretat. 2082 01:33:26,050 --> 01:33:27,080 >> AUDIÈNCIA: Fals. 2083 01:33:27,080 --> 01:33:27,749 >> Gabe: Fals. 2084 01:33:27,749 --> 01:33:28,790 Això no vol dir res. 2085 01:33:28,790 --> 01:33:30,480 És només una icona. 2086 01:33:30,480 --> 01:33:32,824 SSL protegeix contra una home enmig de l'atac. 2087 01:33:32,824 --> 01:33:33,490 AUDIÈNCIA: Fals. 2088 01:33:33,490 --> 01:33:34,110 Gabe: Fals. 2089 01:33:34,110 --> 01:33:35,355 OK, així que tots els que són falses. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Niça. 2092 01:33:39,490 --> 01:33:40,220 [Inaudible] 2093 01:33:40,220 --> 01:33:42,500 Vols parlar d'això? 2094 01:33:42,500 --> 01:33:43,259 El teu torn. 2095 01:33:43,259 --> 01:33:45,050 DAVIN: Tipus d'atacs, home en el medi. 2096 01:33:45,050 --> 01:33:47,134 Què és un home enmig de l'atac? 2097 01:33:47,134 --> 01:33:48,050 AUDIÈNCIA: [inaudible]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 DAVIN: Si envia un HTTP sol·licitud, que podria fer això, oi? 2100 01:33:54,020 --> 01:33:57,890 Però si vostè està enviant HTTPS, que probablement no serà capaç de fer això. 2101 01:33:57,890 --> 01:33:59,952 Hi ha un munt de punts al llarg de la seva connexió. 2102 01:33:59,952 --> 01:34:00,660 Vostè té routers. 2103 01:34:00,660 --> 01:34:01,746 Vostè té servidors DNS. 2104 01:34:01,746 --> 01:34:04,120 Si algú és capaç físicament veure el que vostè està enviant, 2105 01:34:04,120 --> 01:34:06,140 per la qual cosa algú és capaç de aconseguir realment entre vostè, 2106 01:34:06,140 --> 01:34:08,840 el client i el servidor, i és capaç de veure el que va a enviar, 2107 01:34:08,840 --> 01:34:10,298 es tracta d'un home enmig de l'atac. 2108 01:34:10,298 --> 01:34:14,287 Així que per veure el que estàs tractant d'obtenir de el servidor, o és capaç de veure- pitjor, 2109 01:34:14,287 --> 01:34:16,620 vostè podria ser capaç de veure galetes o alguna cosa per l'estil. 2110 01:34:16,620 --> 01:34:19,290 >> Així per exemple, si vostè no està utilitzant SSL, que 2111 01:34:19,290 --> 01:34:21,900 podria ser capaç de veure les galetes d'identificació de sessió. 2112 01:34:21,900 --> 01:34:25,460 I això es diu segrest de sessió perquè veu els seus galetes d'identificació, 2113 01:34:25,460 --> 01:34:28,317 i després és capaç d'anar a aquest lloc web i fer-se passar per vostè. 2114 01:34:28,317 --> 01:34:31,150 Perquè igual que en PHP, recordeu quan loguejat, què fem? 2115 01:34:31,150 --> 01:34:33,340 Establim ID de sessió igual a ID. 2116 01:34:33,340 --> 01:34:34,810 Així que l'identifiqui. 2117 01:34:34,810 --> 01:34:38,300 És per això que es pot veure la seva cartera i la cartera no de tots els altres. 2118 01:34:38,300 --> 01:34:42,320 >> Bé, si sóc capaç d'aconseguir aquesta galeta, llavors puc iniciar sessió en aquesta pàgina. 2119 01:34:42,320 --> 01:34:45,380 I llavors, jo només puc veure les teves coses i començar a comprar i vendre coses. 2120 01:34:45,380 --> 01:34:46,800 Així que això és segrest de sessió. 2121 01:34:46,800 --> 01:34:50,810 Però no ha de ser A-- poder perquè pot utilitzar l'home al mig de l'atac 2122 01:34:50,810 --> 01:34:52,290 fins i tot si estan usant SSL. 2123 01:34:52,290 --> 01:34:53,520 Però no s'ha de ser capaç de fer-ho. 2124 01:34:53,520 --> 01:34:56,580 Si estan usant SSL, no es pot sessió de segrest. 2125 01:34:56,580 --> 01:34:58,927 Per què? 2126 01:34:58,927 --> 01:35:01,135 Perquè tot està encriptat, Oi? si està encriptada, 2127 01:35:01,135 --> 01:35:03,509 i segueixo sent un home de la mitjà, segueixo tenint les seves dades. 2128 01:35:03,509 --> 01:35:04,279 Això està bé. 2129 01:35:04,279 --> 01:35:05,070 Però està encriptada. 2130 01:35:05,070 --> 01:35:07,750 Així que no puc usar-lo. 2131 01:35:07,750 --> 01:35:09,840 Així que això és dues. 2132 01:35:09,840 --> 01:35:11,544 >> Molt ràpid, cross site sol·licitud falsificació. 2133 01:35:11,544 --> 01:35:13,960 Això és només si hi ha un vincle i aquest vincle fa alguna cosa 2134 01:35:13,960 --> 01:35:14,890 que no creu que hauria de fer. 2135 01:35:14,890 --> 01:35:18,150 Així, per exemple, si l'enllaç era anar a comprar accions o vendre accions, 2136 01:35:18,150 --> 01:35:19,360 i no sabia això. 2137 01:35:19,360 --> 01:35:22,040 Va fer clic a l'enllaç, enviat una sol·licitud, va comprar 2138 01:35:22,040 --> 01:35:24,240 o venut alguna cosa que que no volies fer. 2139 01:35:24,240 --> 01:35:25,120 Això és tot. 2140 01:35:25,120 --> 01:35:30,720 >> Cross site scripting, així que aquí, estàs passant enmig de la variable q, 2141 01:35:30,720 --> 01:35:33,510 en lloc de passar a algun tipus de valor, potser q és com un nom. 2142 01:35:33,510 --> 01:35:36,560 Així que en lloc de passar q iguals Davin o alguna cosa per l'estil, 2143 01:35:36,560 --> 01:35:38,740 si vostè no utilitza HTML caràcters especials, si 2144 01:35:38,740 --> 01:35:43,100 no escapen a aquest per assegurar-se que és Bé, llavors jo podria passar en el seu lloc, 2145 01:35:43,100 --> 01:35:46,910 diguem que aquí estic dient impressió o alguna cosa per l'estil, 2146 01:35:46,910 --> 01:35:51,070 llavors jo podria passar aquí una trucada guió. 2147 01:35:51,070 --> 01:35:53,140 >> Així que, en lloc de només aconseguir una variable, 2148 01:35:53,140 --> 01:35:54,960 Jo després executar aquesta convocatòria guió. 2149 01:35:54,960 --> 01:35:57,065 Així que dins d'aquesta seqüència de comandaments cridar, què fer? 2150 01:35:57,065 --> 01:36:00,190 Ubicació de punts de document, que va a canviar la ubicació del document. 2151 01:36:00,190 --> 01:36:02,290 Així que vaig a redirigir a un altre lloc. 2152 01:36:02,290 --> 01:36:08,170 Es diu dolent de aquest exemple, molt bo. 2153 01:36:08,170 --> 01:36:10,536 No es pot pensar en la paraula. 2154 01:36:10,536 --> 01:36:12,410 I després, el que és encara pitjor és que em vaig 2155 01:36:12,410 --> 01:36:16,832 a continuació, establir la galeta, que és una mica variables que tinc en aquest lloc web. 2156 01:36:16,832 --> 01:36:19,040 Vaig a posar-igual a la galeta document punt. 2157 01:36:19,040 --> 01:36:20,660 Per tant, vaig robar el seu galeta. 2158 01:36:20,660 --> 01:36:22,951 I jo vaig a redirigir alguna informació a un lloc web 2159 01:36:22,951 --> 01:36:25,120 que no es deu a accedir-hi. 2160 01:36:25,120 --> 01:36:29,250 I tot això passa perquè ets no escapa el que has vist. 2161 01:36:29,250 --> 01:36:29,910 Sí? 2162 01:36:29,910 --> 01:36:32,160 >> AUDIÈNCIA: Així que per fer això en clar, és 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com que és vulnerable a aquest. 2164 01:36:37,550 --> 01:36:39,300 Així que pot semblar que enllaç en una determinada pàgina. 2165 01:36:39,300 --> 01:36:42,200 Algú fa clic, va a vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Vostè té una galeta per vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Diguem Facebook és vulnerable, tan facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Vostè té la seva galeta de Facebook. 2169 01:36:48,310 --> 01:36:50,925 El que això està fent, ets va a facebook.com, 2170 01:36:50,925 --> 01:36:53,990 que està immediatament redirigint a badguy.com, 2171 01:36:53,990 --> 01:36:57,182 però incloent la informació de la seva galeta. 2172 01:36:57,182 --> 01:36:59,310 Així que és una redirecció ràpida, però la seva galeta Facebook 2173 01:36:59,310 --> 01:37:02,572 s'inclou amb la redirecció, i això és el que [inaudible]. 2174 01:37:02,572 --> 01:37:04,280 Gabe: Sí, hi ha algunes coses molt mitjanes 2175 01:37:04,280 --> 01:37:06,070 que la gent pot fer si està això. 2176 01:37:06,070 --> 01:37:09,190 Per exemple, si Facebook va permetre tothom per canviar el nom d'usuari, 2177 01:37:09,190 --> 01:37:11,680 i no van fer cap comprovacions de validesa, de manera que 2178 01:37:11,680 --> 01:37:16,810 podria inserir una cosa que JavaScript canvia la seva imatge a un hàmster. 2179 01:37:16,810 --> 01:37:22,590 I que insereix la mateixa JavaScript a tot el món que veu la seva pàgina. 2180 01:37:22,590 --> 01:37:26,400 Així que tothom que veu al seu pàgina té la mateixa cosa al nom d'usuari. 2181 01:37:26,400 --> 01:37:30,104 I perquè és un virus, que s'estengui de manera exponencial. 2182 01:37:30,104 --> 01:37:32,270 DAVIN: Anem a saltar l'última un, i després hem acabat. 2183 01:37:32,270 --> 01:37:34,120 Així que aquest és només un altre exemple. 2184 01:37:34,120 --> 01:37:36,120 Així que això és que no són escapar de la seva taula de SQL. 2185 01:37:36,120 --> 01:37:37,090 Així que vostè pot caure. 2186 01:37:37,090 --> 01:37:38,805 ¿Així que vols escapar coses. 2187 01:37:38,805 --> 01:37:44,010 Aquest va ser l'exemple anterior amb el cross site scripting. 2188 01:37:44,010 --> 01:37:45,430 Ho sentim vam córrer una mica tard. 2189 01:37:45,430 --> 01:37:46,870 Demà, ho sento! 2190 01:37:46,870 --> 01:37:48,560 Demà, tenim horari d'oficina. 2191 01:37:48,560 --> 01:37:50,870 Així que les hores d'oficina a Cabbot 08: 00-11: 00. 2192 01:37:50,870 --> 01:37:55,240 Les hores d'oficina són estrictament per a preguntes de la prova. 2193 01:37:55,240 --> 01:37:56,587