1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [REPRODUCCIÓN DE MÚSICA] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: Hola a todos. 5 00:00:12,700 --> 00:00:15,866 Gracias chicos por venir a cabo en el clima desagradable para un concurso 6 00:00:15,866 --> 00:00:16,910 revisar sesión. 7 00:00:16,910 --> 00:00:20,020 Como ustedes saben, concurso uno es este miércoles. 8 00:00:20,020 --> 00:00:22,209 Así que vamos a ir a través de un montón de temas. 9 00:00:22,209 --> 00:00:24,000 DAVIN: Hey, puedo decir algo muy rápido? 10 00:00:24,000 --> 00:00:25,215 HANNAH: Sí, Davin va a decir algo muy rápido. 11 00:00:25,215 --> 00:00:25,780 DAVIN: Lo siento. 12 00:00:25,780 --> 00:00:29,490 Sólo muy rápido, si tiene preguntas sobre el concurso, puede conectarse a Internet. 13 00:00:29,490 --> 00:00:32,420 Ir a 2.014 cuestionario uno, sobre el cuestionario. 14 00:00:32,420 --> 00:00:34,680 Tiene la logística sobre dónde ir, cuándo ir. 15 00:00:34,680 --> 00:00:38,100 Si usted está inscrito simultáneamente, estamos va a tener un concurso de maquillaje a las 5:30. 16 00:00:38,100 --> 00:00:40,350 O si usted me envió un problema, usted tiene algún otro problema. 17 00:00:40,350 --> 00:00:42,640 Pero 05:30 es el maquillaje vez el miércoles. 18 00:00:42,640 --> 00:00:44,540 Pero si usted tiene preguntas, preguntas generales, 19 00:00:44,540 --> 00:00:45,748 línea tiene toda la logística. 20 00:00:45,748 --> 00:00:47,690 Así que echa primero. 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: Awesome. 22 00:00:49,070 --> 00:00:53,030 Así que aquí está la gran lista de temas que vamos a ir a través de la actualidad. 23 00:00:53,030 --> 00:00:57,390 Voy a cubrir la totalidad de la C cosas, que es la primera columna. 24 00:00:57,390 --> 00:01:00,710 Así las cosas C que cubierto después de concurso cero. 25 00:01:00,710 --> 00:01:05,459 A partir de una lista enlazada, que incluye punteros. 26 00:01:05,459 --> 00:01:07,668 >> Muy bien, así que vio esto en la última sesión de revisión, 27 00:01:07,668 --> 00:01:10,000 así que voy a ir a través de esto es un poco más rápido. 28 00:01:10,000 --> 00:01:13,500 Sólo levanta la mano si me quieres frenar o tratar algo más. 29 00:01:13,500 --> 00:01:17,150 Pero utilizamos listas enlazadas porque empezamos en C con matrices. 30 00:01:17,150 --> 00:01:20,920 Y matrices son grandes, pero la problema es que tienen un tamaño fijo. 31 00:01:20,920 --> 00:01:24,925 Las listas enlazadas nos permiten crear tamaño dinámicamente las estructuras de datos. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> Y tenemos nuestras operaciones básicas, insertar, eliminar y buscar. 34 00:01:32,320 --> 00:01:36,780 Y podemos hacerlo de inserción en peor caso de tiempo constante 35 00:01:36,780 --> 00:01:39,140 si nos ponemos en el comienzo mismo. 36 00:01:39,140 --> 00:01:45,220 Borrar y buscar, peor caso grande oh de tiempo n. 37 00:01:45,220 --> 00:01:47,140 Así que de nuevo, sólo para dar la vuelta a través de estas imágenes, 38 00:01:47,140 --> 00:01:50,860 Sé que vimos estos últimos tiempo, pero nosotros quiere estar al día de nuestra lista enlazada 39 00:01:50,860 --> 00:01:53,440 mediante el seguimiento de la cabeza de nuestra lista enlazada. 40 00:01:53,440 --> 00:01:55,580 Porque sabemos que cada uno de nuestros nodos 41 00:01:55,580 --> 00:01:58,610 sólo va a apuntar a la nodo siguiente en nuestra lista enlazada. 42 00:01:58,610 --> 00:02:00,460 >> Así que esa es la forma en que hacemos un seguimiento. 43 00:02:00,460 --> 00:02:02,910 A pesar de que estos no son piezas continuas de la memoria, 44 00:02:02,910 --> 00:02:07,410 los podemos encontrar por sólo siguiendo las flechas diferentes. 45 00:02:07,410 --> 00:02:09,800 Aquí está nuestra estructura para un nodo de lista enlazada. 46 00:02:09,800 --> 00:02:11,440 Lo vimos por última vez. 47 00:02:11,440 --> 00:02:13,080 Tenemos nuestro nodo de estructura. 48 00:02:13,080 --> 00:02:14,340 Y tiene dos propiedades. 49 00:02:14,340 --> 00:02:17,020 Número uno, el actual valor que desea almacenar. 50 00:02:17,020 --> 00:02:18,290 En este caso, se trata de un número entero. 51 00:02:18,290 --> 00:02:21,100 Podría ser una cadena, podría ser un char, lo que quieras. 52 00:02:21,100 --> 00:02:24,710 Y luego, tenemos que seguir la pista de el siguiente nodo en nuestra lista enlazada. 53 00:02:24,710 --> 00:02:29,797 Así que va a ser un puntero al siguiente nodo. 54 00:02:29,797 --> 00:02:31,880 Si estabas haciendo búsqueda, como he dicho antes, 55 00:02:31,880 --> 00:02:34,900 usted tendría que seguir sus flechas hacia abajo. 56 00:02:34,900 --> 00:02:40,720 Inserción, usted no perder de donde el resto de su lista es. 57 00:02:40,720 --> 00:02:44,150 Y desea redirigir la cabeza para que apunte a nuestro nuevo elemento, que 58 00:02:44,150 --> 00:02:46,640 en este caso es uno, y luego uno apuntará 59 00:02:46,640 --> 00:02:49,480 para el resto de la lista enlazada. 60 00:02:49,480 --> 00:02:52,996 Así que de nuevo, sé que esto es un poco poco de una repetición de la prueba de cero. 61 00:02:52,996 --> 00:02:55,370 Así que tenemos que tener mucho cuidado sobre el orden en el que se 62 00:02:55,370 --> 00:03:00,390 hacer estos señalamientos, así que no lo hacemos perder la pista de la parte posterior de la lista. 63 00:03:00,390 --> 00:03:04,122 OK, cualquier pregunta con simplemente enlazada listas? 64 00:03:04,122 --> 00:03:06,060 Impresionante, OK, fresco. 65 00:03:06,060 --> 00:03:09,410 >> Así que ahora, vamos a ir a algo sólo un poco más complicado, 66 00:03:09,410 --> 00:03:10,920 doblemente enlazada listas. 67 00:03:10,920 --> 00:03:13,680 Así que además de mantener pista de la siguiente nodo, 68 00:03:13,680 --> 00:03:16,220 también queremos hacer un seguimiento del nodo anterior. 69 00:03:16,220 --> 00:03:19,580 Y esto nos permite, si somos en algún momento de nuestra lista enlazada, 70 00:03:19,580 --> 00:03:23,110 no sólo ir hacia adelante, pero también recorrer hacia atrás. 71 00:03:23,110 --> 00:03:25,220 Porque como vimos en una lista simplemente enlazada, 72 00:03:25,220 --> 00:03:27,980 si estuviéramos en algún nodo, y de repente, decidimos, 73 00:03:27,980 --> 00:03:30,160 En realidad, yo quiero ir a el derecho nodo antes de mí, 74 00:03:30,160 --> 00:03:32,034 usted tendría que ir a por todas el camino de vuelta a la cabeza 75 00:03:32,034 --> 00:03:35,710 y recorrer hasta encontrar el nodo que estaba buscando. 76 00:03:35,710 --> 00:03:37,680 >> Así que esto hace que las cosas un poco más fácil que a nosotros 77 00:03:37,680 --> 00:03:39,670 tratando de repetir a través de nuestra lista enlazada. 78 00:03:39,670 --> 00:03:47,870 Pero nos obliga a realizar un seguimiento de uno más puntero, por lo que una estrella más nodo. 79 00:03:47,870 --> 00:03:50,830 Muy bien, así que aquí viene la parte divertida. 80 00:03:50,830 --> 00:03:55,600 Vamos a practicar la implementación eliminar las listas doblemente enlazadas. 81 00:03:55,600 --> 00:03:58,660 Así que esto es algo que es juego totalmente justo para el concurso. 82 00:03:58,660 --> 00:04:00,750 Apareció en las pruebas anteriores. 83 00:04:00,750 --> 00:04:04,220 Así que definitivamente estar preparado para codificar un poco en C. 84 00:04:04,220 --> 00:04:07,900 No olvides que con toda este divertido PHP y JavaScript, 85 00:04:07,900 --> 00:04:10,560 todavía tenemos que recordar hacer C. Así que poner al día que 86 00:04:10,560 --> 00:04:12,146 si te sientes oxidado. 87 00:04:12,146 --> 00:04:14,580 >> Muy bien, vamos a ver si podemos hacer esto. 88 00:04:14,580 --> 00:04:16,312 Aceptar, fresco. 89 00:04:16,312 --> 00:04:18,600 Así que vamos a tratar editar derecha aquí, 90 00:04:18,600 --> 00:04:20,707 y espero que esto va según lo previsto. 91 00:04:20,707 --> 00:04:23,915 Muy bien, ¿alguien quiere darme una sugerencia en cuanto a la forma en que debería empezar? 92 00:04:23,915 --> 00:04:27,030 El único supuesto que soy decisiones es que yo ya 93 00:04:27,030 --> 00:04:30,180 tienen una estructura definida, el uno que mostró en la última página, 94 00:04:30,180 --> 00:04:31,420 en la última diapositiva. 95 00:04:31,420 --> 00:04:39,250 Y estoy almacenando la cabeza de mi vinculado Lista de alguna puntero llama lista. 96 00:04:39,250 --> 00:04:42,190 ¿Alguien quiere me empezó? 97 00:04:42,190 --> 00:04:45,410 >> AUDIENCIA: ¿Puede crear una nueva nodo llamar a través de la lista? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: Awesome, por lo vamos a crear 99 00:04:46,410 --> 00:04:47,951 un nuevo nodo a arrastrarse por la lista. 100 00:04:47,951 --> 00:04:48,570 Me gusta eso. 101 00:04:48,570 --> 00:04:50,799 Voy a llamar ella puntero si eso está bien. 102 00:04:50,799 --> 00:04:52,340 Y ¿dónde debe comenzar originalmente? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> AUDIENCIA: Probablemente en la cabeza de la lista. 105 00:04:59,840 --> 00:05:00,590 HANNAH: Beautiful. 106 00:05:00,590 --> 00:05:03,670 Queremos empezar en la cabeza, que Le dije que va a ser almacenado en la lista. 107 00:05:03,670 --> 00:05:04,170 Impresionante. 108 00:05:04,170 --> 00:05:05,220 Hasta ahora, todo bien. 109 00:05:05,220 --> 00:05:08,260 Y ahora, nuestro objetivo es recorrer la lista 110 00:05:08,260 --> 00:05:12,870 hasta que encontremos el nodo con valor n que queremos eliminar. 111 00:05:12,870 --> 00:05:13,540 DE ACUERDO? 112 00:05:13,540 --> 00:05:15,910 >> Así que ahora es la parte donde queremos recorrer. 113 00:05:15,910 --> 00:05:19,488 ¿Puede alguien sugerir un manera de recorrer? 114 00:05:19,488 --> 00:05:20,979 >> AUDIENCIA: Un bucle. 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: Un bucle. 116 00:05:21,840 --> 00:05:22,620 Me encanta. 117 00:05:22,620 --> 00:05:25,550 En concreto, podemos intentar un bucle while. 118 00:05:25,550 --> 00:05:30,919 Aceptar, y sabemos que hemos llegado Al final de nuestra lista cuando qué? 119 00:05:30,919 --> 00:05:32,210 AUDIENCIA: Cuando puntero es nulo. 120 00:05:32,210 --> 00:05:33,418 HANNAH: Cuando puntero es nulo. 121 00:05:33,418 --> 00:05:34,320 Hermosa, me encanta. 122 00:05:34,320 --> 00:05:35,110 Aceptar, fresco. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 Así que lo siento si mi delimitador corsé es tipo de caer fuera de la pantalla. 125 00:05:43,190 --> 00:05:44,090 Lo trajimos de vuelta. 126 00:05:44,090 --> 00:05:46,610 Aceptar, fresco. 127 00:05:46,610 --> 00:05:48,690 ¿Qué sigue? 128 00:05:48,690 --> 00:05:51,950 >> Así que sabemos que queremos eliminar el nodo que tiene un valor n. 129 00:05:51,950 --> 00:05:56,340 Así que vamos a ver el caso en en realidad nos encontramos a nuestro nodo. 130 00:05:56,340 --> 00:05:57,840 Entonces, ¿cómo iba yo a comprobar que? 131 00:05:57,840 --> 00:06:02,210 Yo sólo diría que si puntero y, a continuación, si yo que desee obtener el valor de puntero, 132 00:06:02,210 --> 00:06:08,940 Acabo do flecha n, es igual a n, el parámetro 133 00:06:08,940 --> 00:06:14,490 que dimos a esta función, el nodo que queremos eliminar realidad. 134 00:06:14,490 --> 00:06:17,090 Cualquier pregunta de hasta hasta aquí? 135 00:06:17,090 --> 00:06:18,360 Bien. 136 00:06:18,360 --> 00:06:24,140 OK, así que ahora vamos a dibujar una imagen rápida en el tablero con el fin de visualizar esto. 137 00:06:24,140 --> 00:06:30,710 >> Así que digamos que no es nuestro nodo encantadora. 138 00:06:30,710 --> 00:06:34,480 Y tiene un valor, sólo voy a decir cuatro. 139 00:06:34,480 --> 00:06:40,340 Y apunta a la siguiente nodo en nuestra lista enlazada. 140 00:06:40,340 --> 00:06:42,220 Y no hay nada antes. 141 00:06:42,220 --> 00:06:45,800 Así que tenemos nuestro anterior apuntando a la nada. 142 00:06:45,800 --> 00:06:48,110 En este caso, apuntamos hacia atrás. 143 00:06:48,110 --> 00:06:50,960 Bien, sólo la creación de mi lista enlazada por aquí. 144 00:06:50,960 --> 00:06:53,630 Y tenemos una lista que apunta a esta estructura, para empezar. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 Voy a dibujar uno más para A mayor abundamiento. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 DE ACUERDO. 149 00:07:06,117 --> 00:07:07,480 Voy a señalar esto adelante. 150 00:07:07,480 --> 00:07:09,550 Y voy a señalar que uno de nuevo. 151 00:07:09,550 --> 00:07:10,360 Vaya, lo siento. 152 00:07:10,360 --> 00:07:12,710 Sí, tengo esto al revés. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 Hazlo de nuevo. 155 00:07:16,967 --> 00:07:18,330 Bueno, allá vamos. 156 00:07:18,330 --> 00:07:19,910 Muy bien, lo tengo. 157 00:07:19,910 --> 00:07:21,780 OK, aquí está nuestra imagen. 158 00:07:21,780 --> 00:07:24,860 >> Aceptar, por lo que queremos considerar dos casos. 159 00:07:24,860 --> 00:07:27,330 El primer caso es si el nodo que queremos eliminar 160 00:07:27,330 --> 00:07:29,420 es en el comienzo mismo de nuestra lista. 161 00:07:29,420 --> 00:07:34,070 Y entonces, el segundo caso que queremos a considerar es si se trata de cualquier otro lugar. 162 00:07:34,070 --> 00:07:37,660 Entiendo que esta totalmente desordenado dibujo con todo mi borrado, 163 00:07:37,660 --> 00:07:40,400 pero espero que vamos a tratar de aclarar esto con algo de código. 164 00:07:40,400 --> 00:07:45,450 >> OK, así que vamos a cubrir el caso donde encontramos nuestro nodo, 165 00:07:45,450 --> 00:07:48,900 y es por lo inicio de nuestra lista enlazada. 166 00:07:48,900 --> 00:07:50,810 Alguien me da un sugerencia aquí en cuanto a lo 167 00:07:50,810 --> 00:07:54,684 Que debo hacer para eliminar realmente nuestro nodo? 168 00:07:54,684 --> 00:07:55,970 Es un poco difícil. 169 00:07:55,970 --> 00:07:56,470 DE ACUERDO? 170 00:07:56,470 --> 00:07:59,628 >> AUDIENCIA: Usted tiene que tomar la nodo que sería antes de que se 171 00:07:59,628 --> 00:08:01,794 y hacer que apunte al uno que sería después de ella, 172 00:08:01,794 --> 00:08:03,004 y tomar el nodo que sería después de él y hacer 173 00:08:03,004 --> 00:08:04,554 que apunte al nodo antes de ella. 174 00:08:04,554 --> 00:08:05,220 HANNAH: Exactamente. 175 00:08:05,220 --> 00:08:10,640 OK, así que este es el caso where-- tenemos dos casos. 176 00:08:10,640 --> 00:08:14,100 Tenemos el caso de que el nodo que estamos buscando 177 00:08:14,100 --> 00:08:18,270 es la parte delantera de la lista. 178 00:08:18,270 --> 00:08:23,110 Aceptar y, a continuación el caso de que usted descrito es otra cosa, ¿no? 179 00:08:23,110 --> 00:08:24,500 Es otro lugar en la lista. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 Así que usted ha dicho, tenemos que mirar el nodo anterior, 182 00:08:32,840 --> 00:08:36,500 y hacer que el nodo anterior apuntar al siguiente nodo. 183 00:08:36,500 --> 00:08:40,510 Así que digamos que estamos tratando de sacar cinco 184 00:08:40,510 --> 00:08:43,059 en mi dibujo muy desordenado por aquí. 185 00:08:43,059 --> 00:08:47,530 Queremos asegurarnos de que cuatro ahora apunta a seis. 186 00:08:47,530 --> 00:08:49,590 De cuatro a seis puntos próximos. 187 00:08:49,590 --> 00:08:52,150 Y de los seis puntos anteriores a cuatro. 188 00:08:52,150 --> 00:08:53,960 Ese es nuestro objetivo aquí, ¿verdad? 189 00:08:53,960 --> 00:08:56,150 Esto es lo que creo que acaba de decir por allí. 190 00:08:56,150 --> 00:08:58,450 >> OK, así que vamos a conseguir esa primera pieza. 191 00:08:58,450 --> 00:09:02,300 Vamos a hacer lo que el puntero anterior anterior. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 Así debe señalar de cuatro junto a qué? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 Exactamente, en este caso, seis. 196 00:09:14,900 --> 00:09:18,470 Así que debemos decir puntero, al lado. 197 00:09:18,470 --> 00:09:20,600 DE ACUERDO? 198 00:09:20,600 --> 00:09:21,150 Bien. 199 00:09:21,150 --> 00:09:24,870 Así que vamos a deshacernos de esta imagen fea y tratar de dibujar un uno un poco más agradable. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 Tenemos nuestra cabeza lista aquí. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 Y que apunta al primer nodo nuestra lista enlazada, lo que hemos dicho es de cuatro. 204 00:09:42,740 --> 00:09:45,620 Aquí está nuestro segundo nodo, cinco. 205 00:09:45,620 --> 00:09:47,307 Y nuestro tercer nodo, seis. 206 00:09:47,307 --> 00:09:50,265 Sólo trato de dibujar el mismo exacto imagen, sólo un poco más limpia. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 OK, así que el próximo cuatro originalmente apunta a cinco. 209 00:09:56,280 --> 00:09:58,620 De cinco a seis puntos próximos. 210 00:09:58,620 --> 00:10:00,170 De seis puntos anteriores a cinco. 211 00:10:00,170 --> 00:10:02,470 Y de cinco puntos anteriores a cuatro. 212 00:10:02,470 --> 00:10:03,360 Así que mucho mejor! 213 00:10:03,360 --> 00:10:04,530 Aceptar, fresco. 214 00:10:04,530 --> 00:10:07,770 >> Así que ahora, lo que hicimos justo aquí, esta línea de código, 215 00:10:07,770 --> 00:10:12,680 que dice puntero anterior siguiente, así que ¿qué significa eso? 216 00:10:12,680 --> 00:10:17,540 Esto significa que si estamos viendo cinco, vaya al nodo anterior, 217 00:10:17,540 --> 00:10:21,970 y es el próximo debe ahora punto a cinco del próximo. 218 00:10:21,970 --> 00:10:27,840 Así que, esencialmente, lo que está haciendo es eso borrando esta flecha 219 00:10:27,840 --> 00:10:29,640 y lo que es saltar derecha sobre cinco. 220 00:10:29,640 --> 00:10:31,360 ¿Queda claro? 221 00:10:31,360 --> 00:10:33,200 Sé que puede ser un poco dudoso. 222 00:10:33,200 --> 00:10:34,480 Veo algunos movimientos de cabeza. 223 00:10:34,480 --> 00:10:35,390 Eso es bueno. 224 00:10:35,390 --> 00:10:36,670 Aceptar, fresco. 225 00:10:36,670 --> 00:10:39,590 Ahora, ¿cuál es el siguiente paso? 226 00:10:39,590 --> 00:10:42,060 >> He restablece la próxima. 227 00:10:42,060 --> 00:10:45,297 Ahora, que otra flecha Qué tengo que cambiar? 228 00:10:45,297 --> 00:10:46,130 Esta de aquí. 229 00:10:46,130 --> 00:10:47,560 De seis anteriores. 230 00:10:47,560 --> 00:10:50,620 No queremos seis del anterior para que apunte a cinco más. 231 00:10:50,620 --> 00:10:54,580 Queremos que apunte a cuatro. 232 00:10:54,580 --> 00:10:56,190 ¿Esa imagen tiene sentido? 233 00:10:56,190 --> 00:10:58,370 Así que ahora realmente podemos tener cinco. 234 00:10:58,370 --> 00:10:59,370 Así que vamos a esa pieza. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 ¿Qué debo hacer antes de que yo restablecer seis de anterior a cuatro? 237 00:11:11,180 --> 00:11:14,360 ¿Ideas allí? 238 00:11:14,360 --> 00:11:17,369 >> AUDIENCIA: Libertad para los nodos entre ellos estableciéndola en nulo? 239 00:11:17,369 --> 00:11:17,910 HANNAH: Cool. 240 00:11:17,910 --> 00:11:21,100 En definitiva, nuestro objetivo final es va a ser para liberar el nodo. 241 00:11:21,100 --> 00:11:22,490 Por lo que podemos hacer eso aquí. 242 00:11:22,490 --> 00:11:23,540 Puntero gratuito. 243 00:11:23,540 --> 00:11:24,810 Absolutamente. 244 00:11:24,810 --> 00:11:29,160 Pero incluso antes de eso, vamos a solo-- nuestro derecho gol 245 00:11:29,160 --> 00:11:38,730 aquí es fijar puntero próximo anterior igual al puntero anterior. 246 00:11:38,730 --> 00:11:40,760 Sé que esto se está cubierto. 247 00:11:40,760 --> 00:11:45,440 OK, vamos a take-- fresco. 248 00:11:45,440 --> 00:11:46,990 ¿Todo mundo puede ver esta línea de fondo? 249 00:11:46,990 --> 00:11:47,840 O es muy pequeña? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> Así que antes de que ejecutemos esta línea aquí, queremos 252 00:11:54,300 --> 00:11:58,375 para asegurarse de que puntero próximo no es nulo. 253 00:11:58,375 --> 00:12:00,500 Porque si puntero siguiente es null, qué tipo de error 254 00:12:00,500 --> 00:12:02,727 obtendré cuando intento referencia a un puntero nulo? 255 00:12:02,727 --> 00:12:03,560 AUDIENCIA: culpa Seg. 256 00:12:03,560 --> 00:12:05,660 HANNAH: Un fallo seg, hermoso. 257 00:12:05,660 --> 00:12:09,690 OK, así que si eso no es null, entonces podremos restablecer. 258 00:12:09,690 --> 00:12:14,420 Y tenemos seis puntos de nuevo a cuatro. 259 00:12:14,420 --> 00:12:17,440 Preguntas hasta este punto? 260 00:12:17,440 --> 00:12:17,940 ¿Sí? 261 00:12:17,940 --> 00:12:19,814 >> AUDIENCIA: En su primera if, ¿verdad 262 00:12:19,814 --> 00:12:23,817 significa tener la flecha siguiente, o [inaudible]? 263 00:12:23,817 --> 00:12:25,150 HANNAH: Yo quería decir puntero de flecha n. 264 00:12:25,150 --> 00:12:30,270 Así que, básicamente, lo que estoy tratando de hacer es decir, el nodo actual que soy 265 00:12:30,270 --> 00:12:34,100 iteración en el nodo actual que Estoy mirando, estoy almacenando en puntero. 266 00:12:34,100 --> 00:12:37,630 Y yo quiero saber puntero de valor, que en este caso es n. 267 00:12:37,630 --> 00:12:39,500 Y quiero ver, es el nodo que estoy buscando 268 00:12:39,500 --> 00:12:42,790 para el nodo que estoy con el objetivo de eliminar? 269 00:12:42,790 --> 00:12:47,657 Así que por eso tenemos aquí puntero n. 270 00:12:47,657 --> 00:12:49,857 >> AUDIENCIA: Así que la flecha que va a n, se establece el valor 271 00:12:49,857 --> 00:12:52,058 y guárdelo en un nodo llamado n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: Así que es como si yo soy pasando por esta lista enlazada 274 00:12:58,820 --> 00:13:00,310 y apuntando a cinco. 275 00:13:00,310 --> 00:13:03,600 Si quiero conseguir ese valor, si Quiero llegar a ese número, 5, 276 00:13:03,600 --> 00:13:06,400 Tengo que hacer puntero de flecha n. 277 00:13:06,400 --> 00:13:06,900 Enfriar? 278 00:13:06,900 --> 00:13:07,900 Sí. 279 00:13:07,900 --> 00:13:11,200 >> AUDIENCIA: es n el nombre de la variable? 280 00:13:11,200 --> 00:13:11,700 HANNAH: Sí. 281 00:13:11,700 --> 00:13:14,870 Así que si nos lanzamos de nuevo uno diapositiva, n es el nombre 282 00:13:14,870 --> 00:13:18,660 del valor dentro de la nodo en nuestra lista enlazada. 283 00:13:18,660 --> 00:13:21,510 Y sé que puede ser un poco poco confuso porque también 284 00:13:21,510 --> 00:13:24,680 están pidiendo la cosa que queremos borrar n. 285 00:13:24,680 --> 00:13:26,717 Así que ahí es donde que una línea viene. 286 00:13:26,717 --> 00:13:27,671 ¿Sí? 287 00:13:27,671 --> 00:13:31,010 >> AUDIENCIA: ¿Qué tienes [Inaudible] cómo funcionan? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 Un puntero [inaudible]? 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: Seguro. 291 00:13:37,520 --> 00:13:40,027 ¿Estás hablando de-- qué línea? 292 00:13:40,027 --> 00:13:41,526 AUDIENCIA: La última línea [inaudible]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: Claro, en Aceptar. 295 00:13:45,250 --> 00:13:48,540 Así que echemos un vistazo a la imagen en Para tratar de explicar esto. 296 00:13:48,540 --> 00:13:51,030 Lo siento, para el cámara, la pregunta era 297 00:13:51,030 --> 00:13:54,580 podemos explicar puntero flecha al lado del puntero anterior. 298 00:13:54,580 --> 00:14:01,510 OK, así que digamos que estamos en cinco y nuestro objetivo es eliminar cinco. 299 00:14:01,510 --> 00:14:07,240 Así puntero siguiente, que de éstos tres nodos nos da eso? 300 00:14:07,240 --> 00:14:10,840 Eso nos lleva a la sexta nodo, ¿verdad? 301 00:14:10,840 --> 00:14:16,490 >> OK, así que ahora estamos pidiendo para previa de los seis. 302 00:14:16,490 --> 00:14:17,060 DE ACUERDO? 303 00:14:17,060 --> 00:14:20,210 Y estamos restableciendo esta para que sea igual a cuatro, 304 00:14:20,210 --> 00:14:23,214 que pasó a ser de cinco del anterior. 305 00:14:23,214 --> 00:14:25,180 Lo sé, es super difícil seguir la pista. 306 00:14:25,180 --> 00:14:29,286 Realmente recomiendo dibujar imágenes si tienes una pregunta como ésta. 307 00:14:29,286 --> 00:14:30,242 ¿Sí? 308 00:14:30,242 --> 00:14:32,617 >> AUDIENCIA: ¿Es la razón por la que no tenemos un [inaudible]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: Exactamente. 311 00:14:38,570 --> 00:14:44,800 Así que la pregunta era, ¿por qué hacer nosotros no necesitamos comprobar aquí? 312 00:14:44,800 --> 00:14:48,160 ¿Por qué no tenemos que comprobar que puntero anterior no es igual a null? 313 00:14:48,160 --> 00:14:50,070 Y es porque hemos ya separada fuera 314 00:14:50,070 --> 00:14:52,490 el caso si el puntero en el comienzo mismo. 315 00:14:52,490 --> 00:14:54,060 Muy buena pregunta. 316 00:14:54,060 --> 00:14:56,880 ¿Algo más sobre esto? 317 00:14:56,880 --> 00:14:57,380 Aceptar, fresco. 318 00:14:57,380 --> 00:14:58,360 Así que vamos a terminar para arriba. 319 00:14:58,360 --> 00:14:59,890 Ya casi hemos llegado. 320 00:14:59,890 --> 00:15:01,310 >> ¿Y qué si está a la cabeza? 321 00:15:01,310 --> 00:15:03,360 ¿Y si en lugar de intentar eliminar cinco, 322 00:15:03,360 --> 00:15:06,240 que realmente queríamos eliminar cuatro? 323 00:15:06,240 --> 00:15:07,270 ¿Qué tendría que hacer? 324 00:15:07,270 --> 00:15:09,610 Bueno, quiero reiniciar mi cabeza para qué? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 Grito él hacia fuera? 327 00:15:15,585 --> 00:15:16,710 AUDIENCIA: El que después de ella. 328 00:15:16,710 --> 00:15:17,460 HANNAH: Beautiful. 329 00:15:17,460 --> 00:15:26,430 OK, así que queremos que enumeramos estar apuntando a lo que nuestro puntero siguiente nodo es. 330 00:15:26,430 --> 00:15:29,040 Bueno. 331 00:15:29,040 --> 00:15:30,810 Y sólo por la completitud bien, lo haríamos 332 00:15:30,810 --> 00:15:35,590 que desee comprobar que mientras nuestra lista no es nulo, mientras nuestra lista no es 333 00:15:35,590 --> 00:15:42,730 vacío, entonces queremos establecer nuestra anterior igual a cero. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 Pregunta hasta ahora? 336 00:15:50,230 --> 00:15:53,205 A un paso de--? 337 00:15:53,205 --> 00:15:55,530 >> AUDIENCIA: ¿Sería si lista no es igual a null? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: Sí, tienes toda la razón. 339 00:15:56,950 --> 00:15:58,130 Lo siento mucho. 340 00:15:58,130 --> 00:16:00,040 Está lista no es igual a null. 341 00:16:00,040 --> 00:16:01,915 Impresionante. 342 00:16:01,915 --> 00:16:04,245 Tratando de llevar todo esto en la pantalla. 343 00:16:04,245 --> 00:16:06,870 Es una especie de caerse. 344 00:16:06,870 --> 00:16:07,730 Lo siento, chicos. 345 00:16:07,730 --> 00:16:11,874 Y por último pero no menos importante, todo que tenemos que hacer es cambio. 346 00:16:11,874 --> 00:16:12,840 DE ACUERDO. 347 00:16:12,840 --> 00:16:15,400 Eso fue muy abarrotado en muy rápidamente. 348 00:16:15,400 --> 00:16:16,800 Tome un segundo para mirar esto otra vez. 349 00:16:16,800 --> 00:16:18,216 Dime si tienes 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 >> AUDIENCIA: Si la lista está en el cabeza, entonces-- esperar, no importa. 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: OK, bueno. 354 00:16:27,700 --> 00:16:30,987 Así que esto es si la lista está a la cabeza, lo removemos a lo insertamos. 355 00:16:30,987 --> 00:16:31,486 ¿Sí? 356 00:16:31,486 --> 00:16:33,777 >> AUDIENCIA: ¿Puede explicar la primera sentencia if nuevo? 357 00:16:33,777 --> 00:16:36,149 Si el puntero a n es igual a n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: Seguro. 359 00:16:36,690 --> 00:16:42,780 Por eso nuestro objetivo de toda esta función es para borrar el nodo que tiene valor n. 360 00:16:42,780 --> 00:16:47,460 Así que si nos encontramos, ya que estamos iteración a través de nuestra lista, 361 00:16:47,460 --> 00:16:51,770 el nodo con el valor de n, que es el que quiere eliminar. 362 00:16:51,770 --> 00:16:57,286 Así que todo el borrado sucede dentro de ese gran if. 363 00:16:57,286 --> 00:16:58,593 ¿Eso tiene sentido? 364 00:16:58,593 --> 00:16:59,480 Fresco. 365 00:16:59,480 --> 00:16:59,990 ¿Sí? 366 00:16:59,990 --> 00:17:02,864 >> AUDIENCIA: Tal vez lo que no se puede ver , pero no también necesita una línea 367 00:17:02,864 --> 00:17:06,024 para desplazarse por la lista? 368 00:17:06,024 --> 00:17:06,690 HANNAH: Awesome. 369 00:17:06,690 --> 00:17:10,896 Vamos a llevar esto un poco, y vamos a lanzar ese derecho en la parte inferior. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 Tal vez el consejo hubiera sido un poco mejor idea. 372 00:17:15,490 --> 00:17:17,829 Entonces, ¿cómo iba yo a mover el puntero hacia adelante? 373 00:17:17,829 --> 00:17:20,184 >> AUDIENCIA: Puntero iguales puntero más uno. 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: Beautiful. 375 00:17:21,599 --> 00:17:25,050 Así que nos permite continuar la iteración a través. 376 00:17:25,050 --> 00:17:26,251 DE ACUERDO. 377 00:17:26,251 --> 00:17:27,750 AUDIENCIA: ¿no habría una cosa? 378 00:17:27,750 --> 00:17:29,028 HANNAH: Una vez más? 379 00:17:29,028 --> 00:17:32,444 AUDIENCIA: No ¿Habría una cosa después de la gran edad si 380 00:17:32,444 --> 00:17:35,519 declaración [inaudible]? 381 00:17:35,519 --> 00:17:36,310 HANNAH: ¿Qué parte? 382 00:17:36,310 --> 00:17:38,350 Lo siento. 383 00:17:38,350 --> 00:17:41,800 >> AUDIENCIA: El recorrido, ¿no debería haber una cosa? 384 00:17:41,800 --> 00:17:43,550 HANNAH: Absolutamente podría tener un más. 385 00:17:43,550 --> 00:17:46,930 Porque tengo el derecho de retorno allí, usted no necesita una cosa. 386 00:17:46,930 --> 00:17:48,760 Pero sí, buena pregunta. 387 00:17:48,760 --> 00:17:50,170 Bien, ¿no? 388 00:17:50,170 --> 00:17:52,878 AUDIENCIA: ¿Podemos pensar puntero que se mueve a través de la lista 389 00:17:52,878 --> 00:17:56,610 como tomar en el valor de cada nodo en la lista? 390 00:17:56,610 --> 00:18:00,650 ¿O debemos pensar en él como tipo de externa a la lista? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: Cualquiera de los dos está bien, creo. 392 00:18:02,350 --> 00:18:05,880 La forma en que me imagino que es Digo, OK, estoy puntero. 393 00:18:05,880 --> 00:18:06,520 Y este soy yo. 394 00:18:06,520 --> 00:18:07,150 Esta es mi mano. 395 00:18:07,150 --> 00:18:09,960 Voy a señalar el diferente cosas que quiero para recorrer. 396 00:18:09,960 --> 00:18:12,270 En primer lugar, voy a señalar a la cabeza de la lista. 397 00:18:12,270 --> 00:18:14,144 Y eso me dice que soy va a apuntar a cuatro. 398 00:18:14,144 --> 00:18:18,060 Y así mí, ser externa a la lista, Puedo señalar a cada uno de estos elementos. 399 00:18:18,060 --> 00:18:19,520 Así que pienso en mí mismo como puntero. 400 00:18:19,520 --> 00:18:21,645 AUDIENCIA: Así que cuando se elimina uno de esos elementos, 401 00:18:21,645 --> 00:18:23,404 elimina a sí mismo, por así decirlo. 402 00:18:23,404 --> 00:18:24,070 HANNAH: Exactamente. 403 00:18:24,070 --> 00:18:25,920 Así se elimina la cosa usted está señalando. 404 00:18:25,920 --> 00:18:28,340 Así, en el ejemplo que vimos donde estamos 405 00:18:28,340 --> 00:18:31,670 intentar eliminar cinco, cuando estoy apuntando a cinco, 406 00:18:31,670 --> 00:18:34,200 Quiero borrar la Lo que estoy señalando. 407 00:18:34,200 --> 00:18:35,870 Exactamente. 408 00:18:35,870 --> 00:18:36,577 ¿Sí? 409 00:18:36,577 --> 00:18:39,410 AUDIENCIA: ¿Nos hemos hecho cargo de la caso en el que n no está en la lista? 410 00:18:39,410 --> 00:18:40,460 HANNAH: Si n no está en la lista? 411 00:18:40,460 --> 00:18:43,501 Todo lo que va a pasar es que eres va a recorrer y iterate 412 00:18:43,501 --> 00:18:47,616 a través, y luego, vas para llegar a ser puntero nulo, 413 00:18:47,616 --> 00:18:48,990 y luego vas a hacer. 414 00:18:48,990 --> 00:18:50,812 >> AUDIENCIA: Entonces, ¿tenemos para devolver algo? 415 00:18:50,812 --> 00:18:51,520 HANNAH: Podríamos. 416 00:18:51,520 --> 00:18:54,500 La manera que si se define este función, sólo digo que vuelva 417 00:18:54,500 --> 00:18:55,770 anulará independientemente. 418 00:18:55,770 --> 00:18:58,360 Pero usted podría tener algo como regresar un entero, 419 00:18:58,360 --> 00:19:00,920 y haga que sea volver 1 negativo si falla. 420 00:19:00,920 --> 00:19:03,070 Algo por el estilo. 421 00:19:03,070 --> 00:19:04,494 Preguntas con-- sí? 422 00:19:04,494 --> 00:19:05,410 AUDIENCIA: [inaudible]? 423 00:19:05,410 --> 00:19:05,993 HANNAH: Lo siento? 424 00:19:05,993 --> 00:19:07,419 AUDIENCIA: [inaudible]? 425 00:19:07,419 --> 00:19:07,960 HANNAH: Seguro. 426 00:19:07,960 --> 00:19:11,730 Así que esa es la actual-- una vez que hemos hecho todo este trabajo de mover 427 00:19:11,730 --> 00:19:16,530 todas estas flechas alrededor, todo nuestro objetivo era deshacerse del nodo 428 00:19:16,530 --> 00:19:18,230 que estamos buscando. 429 00:19:18,230 --> 00:19:21,610 Así que en este caso, liberando puntero, si estoy apuntando a cinco, 430 00:19:21,610 --> 00:19:24,670 es como borrar este nodo central. 431 00:19:24,670 --> 00:19:27,250 Esa es la parte puntero libre. 432 00:19:27,250 --> 00:19:29,090 Eso tiene sentido? 433 00:19:29,090 --> 00:19:31,390 >> AUDIENCIA: Así que incluso pensado Usted no [inaudible]? 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: Así que asumió al principio tuvimos alguna lista que fue ya-- 435 00:19:36,060 --> 00:19:37,220 habían puesto esto juntos. 436 00:19:37,220 --> 00:19:39,761 Así que con el fin de construir este lista, Debieron [inaudible]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 Fresco. 439 00:19:42,750 --> 00:19:44,490 Cualquier otra cosa con esto? 440 00:19:44,490 --> 00:19:46,386 ¿Sí? 441 00:19:46,386 --> 00:19:49,204 >> AUDIENCIA: ¿Qué pasa si la lista no es igual la línea nula? 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: Justo aquí? 445 00:19:53,080 --> 00:19:53,840 AUDIENCIA: Sí. 446 00:19:53,840 --> 00:19:57,370 HANNAH: OK, todo lo que estoy haciendo es que me estoy asegurando de 447 00:19:57,370 --> 00:20:03,250 que antes de tratar de eliminar la referencia de la lista, antes de intentar acceder a la anterior, 448 00:20:03,250 --> 00:20:07,210 Yo quiero estar seguro de que no es nula por lo que no entiendo un fallo seg. 449 00:20:07,210 --> 00:20:08,400 Fresco. 450 00:20:08,400 --> 00:20:10,820 >> OK, yo sé que esto era bastante mucho para pasar. 451 00:20:10,820 --> 00:20:14,950 Así que esta diapositiva será puesto a su disposición. 452 00:20:14,950 --> 00:20:17,341 Así que usted puede ir a través de él con más detalle. 453 00:20:17,341 --> 00:20:17,841 ¿Sí? 454 00:20:17,841 --> 00:20:19,749 >> AUDIENCIA: ¿Por qué la lista [inaudible]? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: Seguro. 457 00:20:24,670 --> 00:20:27,390 Así lista realmente apunta a este elemento aquí, 458 00:20:27,390 --> 00:20:29,200 el primer elemento de la lista. 459 00:20:29,200 --> 00:20:30,748 Por lo tanto, no puede tener una anterior. 460 00:20:30,748 --> 00:20:31,736 ¿Sí? 461 00:20:31,736 --> 00:20:35,194 >> AUDIENCIA: ¿La punta puntero a la misma dirección en la memoria? 462 00:20:35,194 --> 00:20:38,404 ¿Apunta a la misma dirección en la memoria como el nodo 463 00:20:38,404 --> 00:20:40,640 que está señalando? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: Sí, apunta a este nodo en la memoria. 465 00:20:43,865 --> 00:20:47,190 >> AUDIENCIA: Derecho, por lo cuando [inaudible]? 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: En cierto sentido, sí. 467 00:20:50,580 --> 00:20:51,280 DE ACUERDO. 468 00:20:51,280 --> 00:20:52,997 Muy bien, vamos a pasar con esto. 469 00:20:52,997 --> 00:20:55,330 Y si usted tiene más preguntas, quedarse en el extremo, 470 00:20:55,330 --> 00:20:57,130 y podemos pasar por eso otra vez. 471 00:20:57,130 --> 00:20:58,120 Aceptar, fresco. 472 00:20:58,120 --> 00:21:00,490 Ahora, tenemos que seguir adelante para discutir mesas, intentos, 473 00:21:00,490 --> 00:21:04,940 y árboles, que tienes súper familiarizados en p-set cinco, corrector ortográfico. 474 00:21:04,940 --> 00:21:11,020 >> Así tabla hash es sólo una matriz con listas ligadas sencillas 475 00:21:11,020 --> 00:21:14,050 o doblemente enlazada listas que salen de ella. 476 00:21:14,050 --> 00:21:16,380 Así que tenemos algún tipo de matriz asociativa. 477 00:21:16,380 --> 00:21:21,280 ¿Y cómo sabemos cuál de estos arrays baldes para entrar, 478 00:21:21,280 --> 00:21:24,137 utilizamos una función hash. 479 00:21:24,137 --> 00:21:26,470 Así que en este caso, puede alguien adivinar lo que la función hash 480 00:21:26,470 --> 00:21:28,636 sería sólo sobre la base de algunos de la entrada y salida? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> AUDIENCIA: Número Carta del alfabeto. 483 00:21:33,194 --> 00:21:33,860 HANNAH: Exactamente. 484 00:21:33,860 --> 00:21:36,160 Sólo los pone en orden alfabético. 485 00:21:36,160 --> 00:21:39,280 Todo lo que se inicia con una A se pone en la primera cubeta. 486 00:21:39,280 --> 00:21:43,340 Todo con un B se pone en el segundo cubo, etc., y así sucesivamente. 487 00:21:43,340 --> 00:21:45,620 Impresionante, OK. 488 00:21:45,620 --> 00:21:48,980 Y una función de hash es cualquier función que toma en una palabra 489 00:21:48,980 --> 00:21:51,910 y le dirá lo que cucharón que pertenece en. 490 00:21:51,910 --> 00:21:55,150 Así que la entrada en nuestro array que pertenece en. 491 00:21:55,150 --> 00:21:58,080 >> Así que cada vez que doy mi hash de funcionar una palabra, 492 00:21:58,080 --> 00:22:00,660 me debe contar la misma colocar cada vez. 493 00:22:00,660 --> 00:22:03,270 Así que si usamos la función hash de la diapositiva anterior 494 00:22:03,270 --> 00:22:05,950 donde estamos clasificación por la primera letra del alfabeto, 495 00:22:05,950 --> 00:22:08,230 cada vez que le doy a mi función hash "manzana" 496 00:22:08,230 --> 00:22:10,180 siempre me debe devolver 0. 497 00:22:10,180 --> 00:22:12,890 Así que si yo tengo una manzana para poner en mi tabla hash, 498 00:22:12,890 --> 00:22:17,700 si le doy "manzana" a mi función hash, debe decir, ir lo puso en balde 0. 499 00:22:17,700 --> 00:22:19,980 Si estoy en busca de una manzana en mi tabla hash 500 00:22:19,980 --> 00:22:24,340 y digo, donde Apple podría vivo, le pide a su función hash. 501 00:22:24,340 --> 00:22:26,900 Y dice, vaya a la cuchara 0. 502 00:22:26,900 --> 00:22:29,150 Bien? 503 00:22:29,150 --> 00:22:32,660 Preguntas con funciones hash? 504 00:22:32,660 --> 00:22:34,570 Impresionante. 505 00:22:34,570 --> 00:22:37,320 >> Aquí es un poco más explicación detallada 506 00:22:37,320 --> 00:22:39,570 de lo que una función hash podría ser similar. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 Bien. 509 00:22:42,960 --> 00:22:45,960 Ahora, el problema de almohadilla funciones es en un mundo ideal, 510 00:22:45,960 --> 00:22:48,870 sólo tendríamos una cosa en cada cubo. 511 00:22:48,870 --> 00:22:50,900 Pero, en realidad, no hay no sólo una palabra 512 00:22:50,900 --> 00:22:54,280 que empieza con A. No hay sólo una palabra que empieza por B. Así 513 00:22:54,280 --> 00:22:56,960 en este caso, si de repente conseguir "baya" 514 00:22:56,960 --> 00:22:58,710 y queremos ponerlo en nuestra tabla hash, 515 00:22:58,710 --> 00:23:03,640 y vemos, oh, no, el banano es ya está ahí, ¿qué vamos a hacer? 516 00:23:03,640 --> 00:23:05,900 >> Bueno, tenemos dos opciones. 517 00:23:05,900 --> 00:23:07,990 La primera opción es sondeo lineal, que 518 00:23:07,990 --> 00:23:11,100 sólo significa ir a buscar la siguiente cubo vacío. 519 00:23:11,100 --> 00:23:14,100 Ve a buscar la entrada siguiente matriz vacía. 520 00:23:14,100 --> 00:23:15,750 Y sólo hay que poner "baya" allí. 521 00:23:15,750 --> 00:23:18,880 Así que sé que se supone que ir con plátano en balde uno. 522 00:23:18,880 --> 00:23:22,155 Pero sólo hay que poner en un cubo de tres, porque balde tres es vacío. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 Otra opción es probablemente lo que se implementa 525 00:23:26,680 --> 00:23:29,220 en su p-set, en el que tenido encadenamiento separado. 526 00:23:29,220 --> 00:23:33,990 Así que cada uno de sus cubos, cada uno de los elementos de la matriz, 527 00:23:33,990 --> 00:23:38,410 no sólo mantiene una palabras, pero en realidad mantiene un puntero a una lista de palabras. 528 00:23:38,410 --> 00:23:41,880 Así que si usted tenía plátano en su tabla hash 529 00:23:41,880 --> 00:23:44,740 y de repente te querías añadir baya, no hay problema. 530 00:23:44,740 --> 00:23:51,110 Sólo tiene que añadir la baya en el final, o para Al principio de su lista enlazada. 531 00:23:51,110 --> 00:23:54,040 Aceptar, impresionante. 532 00:23:54,040 --> 00:23:58,490 Preguntas con hachís tablas antes de que siga? 533 00:23:58,490 --> 00:23:59,850 >> Bien. 534 00:23:59,850 --> 00:24:01,070 Los árboles y los tries. 535 00:24:01,070 --> 00:24:07,980 OK, así que esta era otra opción para la aplicación de diccionario. 536 00:24:07,980 --> 00:24:09,100 Se podría haber hecho un intento. 537 00:24:09,100 --> 00:24:13,420 Así que es un tipo especial de árbol que se comporta como una tabla hash de varios niveles. 538 00:24:13,420 --> 00:24:16,862 Así podrás ver el panorama donde se tiene una matriz que 539 00:24:16,862 --> 00:24:19,320 apunta a un montón de arrays que apuntan a un montón de arrays 540 00:24:19,320 --> 00:24:20,390 que apuntan a un montón de arreglos. 541 00:24:20,390 --> 00:24:23,140 Y vamos a ver exactamente lo que se vería en una diapositiva futuro. 542 00:24:23,140 --> 00:24:26,070 Y más en general, un árbol es cualquier estructura de datos 543 00:24:26,070 --> 00:24:29,710 en el que los datos son organizada en alguna jerarquía. 544 00:24:29,710 --> 00:24:32,610 Entonces, ¿dónde vimos que tenemos algún tipo de entendimiento 545 00:24:32,610 --> 00:24:36,130 de un nivel superior, un nivel superior, un siguiente nivel, un siguiente nivel. 546 00:24:36,130 --> 00:24:39,690 Así que este es probablemente el más claro con algunos ejemplos específicos. 547 00:24:39,690 --> 00:24:40,880 Así que aquí está nuestro árbol. 548 00:24:40,880 --> 00:24:42,970 Se puede ver que tiene niveles particulares 549 00:24:42,970 --> 00:24:45,480 que empezamos con ese nodo raíz, uno. 550 00:24:45,480 --> 00:24:47,640 Y podemos ir hacia abajo a través de nuestro árbol. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> Un árbol binario es una tipo particular de árbol. 553 00:24:53,910 --> 00:24:56,770 Y la única especificación para un árbol binario 554 00:24:56,770 --> 00:25:01,130 es que cada nodo tiene en la mayoría de dos hojas. 555 00:25:01,130 --> 00:25:03,960 Así que usted no va a ver ninguna de estos nodos tienen tres o cuatro 556 00:25:03,960 --> 00:25:06,880 o algún otro número de hojas. 557 00:25:06,880 --> 00:25:11,310 Y luego aún más específico es un árbol binario de búsqueda 558 00:25:11,310 --> 00:25:18,010 donde cada nodo a la izquierda de la nodo va a tener un valor más pequeño. 559 00:25:18,010 --> 00:25:21,180 Y cada valor a la derecho va a ser más grande. 560 00:25:21,180 --> 00:25:26,900 Así que si ves 44 es nuestra raíz, a la izquierda, 11, 22, y 33 561 00:25:26,900 --> 00:25:28,940 son todos menos de nuestra raíz. 562 00:25:28,940 --> 00:25:33,890 Y a la derecha son todos números bigger-- 66, 55 y 77. 563 00:25:33,890 --> 00:25:37,380 Y esta propiedad es válido en todos los niveles del árbol. 564 00:25:37,380 --> 00:25:42,690 >> Así que cuando vamos a 22, 11, y 33, siendo 11 565 00:25:42,690 --> 00:25:46,950 es menor que 22 y 33 es mayor que 22. 566 00:25:46,950 --> 00:25:50,160 Y esto hace que sea más fácil la búsqueda porque si estamos buscando un número, 567 00:25:50,160 --> 00:25:53,877 sabemos exactamente qué rama para seguir hacia abajo. 568 00:25:53,877 --> 00:25:56,210 Así que esto debe recordarle un poco de búsqueda binaria. 569 00:25:56,210 --> 00:25:56,967 ¿Sí? 570 00:25:56,967 --> 00:25:58,835 >> AUDIENCIA: Así que cuando estás describiendo binario, 571 00:25:58,835 --> 00:26:00,587 le dijo que tiene como máximo dos hojas? 572 00:26:00,587 --> 00:26:01,170 HANNAH: Mm-hm. 573 00:26:01,170 --> 00:26:02,580 AUDIENCIA: ¿Podría tener menos? 574 00:26:02,580 --> 00:26:03,121 HANNAH: Sí. 575 00:26:03,121 --> 00:26:06,720 Así que digamos, por ejemplo, no tener un número par de cosas 576 00:26:06,720 --> 00:26:11,791 y que no podía llenar todas sus hojas, que está bien si uno tiene uno. 577 00:26:11,791 --> 00:26:12,290 DE ACUERDO? 578 00:26:12,290 --> 00:26:12,789 Impresionante. 579 00:26:12,789 --> 00:26:15,930 ¿Alguna otra pregunta sobre los árboles? 580 00:26:15,930 --> 00:26:16,670 DE ACUERDO. 581 00:26:16,670 --> 00:26:20,110 >> Volver a nuestros países como yo estaba hablando alrededor de un poco más temprano, 582 00:26:20,110 --> 00:26:23,900 como tenemos estas matrices multi-nivel. 583 00:26:23,900 --> 00:26:26,280 Así que en este caso, empezamos en la parte superior. 584 00:26:26,280 --> 00:26:29,030 Y podemos seguir cualquier palabra dada abajo. 585 00:26:29,030 --> 00:26:30,780 Así que digamos que queríamos buscar Turing. 586 00:26:30,780 --> 00:26:34,380 Empezamos en T, seguir hacia abajo a un array que contiene U, 587 00:26:34,380 --> 00:26:37,350 y siga hacia abajo hasta que llegar a este pequeño delta que 588 00:26:37,350 --> 00:26:39,060 nos dice, sí, encontramos una palabra. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 Claro en intentos? 591 00:26:44,120 --> 00:26:48,138 Cualquier cosa para ir allá? 592 00:26:48,138 --> 00:26:48,908 ¿Sí? 593 00:26:48,908 --> 00:26:51,866 AUDIENCIA: ¿El símbolo del delta que ocupar espacio en el intento? 594 00:26:51,866 --> 00:26:54,532 HANNAH: Sí, así que no lo hace necesariamente siquiera necesita ser un delta. 595 00:26:54,532 --> 00:26:57,760 Pero necesitamos alguna manera de contar nuestra computer-- lo siento, 596 00:26:57,760 --> 00:27:01,130 para que sepamos que la RTU no es una palabra. 597 00:27:01,130 --> 00:27:04,180 Porque vamos a decir que no tenemos este concepto de un delta, este concepto 598 00:27:04,180 --> 00:27:09,850 de felicitaciones, has encontrado una palabra, sería ir a través y iterar T-U-R, 599 00:27:09,850 --> 00:27:11,300 y luego decir, impresionante, lo encontré! 600 00:27:11,300 --> 00:27:12,670 Debe ser una palabra. 601 00:27:12,670 --> 00:27:13,720 Pero en realidad no es. 602 00:27:13,720 --> 00:27:15,310 Queremos que todo Turing sea una palabra. 603 00:27:15,310 --> 00:27:17,760 Así que tenemos que tener algo en el final que dice, felicitaciones, 604 00:27:17,760 --> 00:27:19,051 que ha encontrado una palabra legítima. 605 00:27:19,051 --> 00:27:21,680 AUDIENCIA: Así que si usted tenía como 26 letras en el alfabeto, 606 00:27:21,680 --> 00:27:24,560 usted realmente tiene 27 teclas en su intento? 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: Awesome, sí. 608 00:27:26,010 --> 00:27:28,210 Así que en realidad, creo que será en la siguiente diapositiva. 609 00:27:28,210 --> 00:27:29,440 Ta-da! 610 00:27:29,440 --> 00:27:32,880 Donde si usted tiene un nodo en su intento, eres 611 00:27:32,880 --> 00:27:35,800 va a tener 27 hijos en lugar de 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 Cualquier pregunta con eso? 614 00:27:40,050 --> 00:27:40,550 ¿Sí? 615 00:27:40,550 --> 00:27:44,569 AUDIENCIA: ¿Por qué los países ocupan tan mucho espacio [inaudible] a medida que avanza? 616 00:27:44,569 --> 00:27:47,629 ¿Por qué se considera que [inaudible]? 617 00:27:47,629 --> 00:27:48,170 HANNAH: Seguro. 618 00:27:48,170 --> 00:27:48,790 Volvamos. 619 00:27:48,790 --> 00:27:52,350 La pregunta es, ¿por qué son países mucho más grandes 620 00:27:52,350 --> 00:27:54,620 que algo como una tabla hash. 621 00:27:54,620 --> 00:27:57,790 Así que para cada uno de estos niveles, incluso si no se dibujan aquí, 622 00:27:57,790 --> 00:28:01,250 tienes que tener los 26 caracteres. 623 00:28:01,250 --> 00:28:04,420 Y la razón por la que no se puede digo, oh, pero al igual que para Turing, I 624 00:28:04,420 --> 00:28:07,570 no es necesario tener cualquiera de los mismas cosas en el nivel de U. Bueno, 625 00:28:07,570 --> 00:28:11,390 si de repente quisiera agregar algo que era como T-H, 626 00:28:11,390 --> 00:28:14,800 que había necesidad de tener la capacidad de agregar la palabra. 627 00:28:14,800 --> 00:28:17,330 Así, por cada una sola letra, usted va a tener 628 00:28:17,330 --> 00:28:19,730 a tener un montón de matrices que salen de ella. 629 00:28:19,730 --> 00:28:24,060 Así que usted puede ver cómo se ponía muy grande, muy rápido. 630 00:28:24,060 --> 00:28:26,560 Alguna otra pregunta? 631 00:28:26,560 --> 00:28:28,980 Bien. 632 00:28:28,980 --> 00:28:29,832 ¿Sí? 633 00:28:29,832 --> 00:28:33,210 >> AUDIENCIA: ¿Cuándo es paí- más rápido que las tablas hash? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: Cuando son paí- más rápido que las tablas hash? 635 00:28:36,280 --> 00:28:39,120 Así que si has tenido una muy función hash malo. 636 00:28:39,120 --> 00:28:41,840 Así que digamos que yo estaba como, aquí está su función hash. 637 00:28:41,840 --> 00:28:43,660 No importa lo que la palabra me das, yo siempre estoy 638 00:28:43,660 --> 00:28:47,740 va a poner en orden la entrada 0. 639 00:28:47,740 --> 00:28:52,000 Y así terminamos con sólo poner todo en una lista larga vinculado grande. 640 00:28:52,000 --> 00:28:58,740 Y así, un tiempo de búsqueda tomaría en el peor n si es en el final de nuestra lista. 641 00:28:58,740 --> 00:29:03,150 Con el intento, sólo tenemos que iterar a través de las letras de la palabra. 642 00:29:03,150 --> 00:29:07,080 Así que incluso si hemos añadido un montón Más palabras para nuestro intento, 643 00:29:07,080 --> 00:29:09,620 no nos llevaría más tiempo para encontrar una palabra en particular. 644 00:29:09,620 --> 00:29:11,750 >> Todo lo que tenemos que hacer es, por ejemplo, en este caso, 645 00:29:11,750 --> 00:29:17,170 digamos que estamos buscando zoom, nos volveríamos a tener para repetir 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, cuatro letras. 647 00:29:19,840 --> 00:29:22,250 Así que eso es sólo el longitud de la palabra de zoom. 648 00:29:22,250 --> 00:29:25,400 No importa cuántos mas palabras que ponen en este intento. 649 00:29:25,400 --> 00:29:30,225 Siempre podemos conseguirlo en esos cuatro pasos. 650 00:29:30,225 --> 00:29:31,215 Impresionante. 651 00:29:31,215 --> 00:29:32,205 ¿Sí? 652 00:29:32,205 --> 00:29:34,185 >> AUDIENCIA: Entonces [inaudible] es una matriz, ¿no? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: Mm-hm. 654 00:29:35,322 --> 00:29:37,155 AUDIENCIA: Si eres en busca de [inaudible], 655 00:29:37,155 --> 00:29:40,929 tendrías que ir a través de su arsenal para encontrar [inaudible]? 656 00:29:40,929 --> 00:29:41,470 HANNAH: Seguro. 657 00:29:41,470 --> 00:29:44,000 AUDIENCIA: ¿Eso no toman más tiempo? 658 00:29:44,000 --> 00:29:46,370 HANNAH: Si voy a decir que mi matriz es siempre 659 00:29:46,370 --> 00:29:49,250 va a ser A, B, C, D, E, F, G, bla, bla, bla, 660 00:29:49,250 --> 00:29:51,630 así que si yo siempre sé que es en el mismo orden exacto, 661 00:29:51,630 --> 00:29:53,880 si yo siempre sé que es en orden alfabético, 662 00:29:53,880 --> 00:29:57,860 Yo sólo puedo decir que O es el número fulano de tal en el alfabeto. 663 00:29:57,860 --> 00:29:59,620 Sólo saltar a ese lugar. 664 00:29:59,620 --> 00:30:01,860 Porque recuerda, con matrices, podemos acceder 665 00:30:01,860 --> 00:30:06,590 cualquier elemento de esa matriz en constante tiempo si sabemos dónde estamos mirando. 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 >> AUDIENCIA: En la anterior deslice [inaudible] 27, 669 00:30:12,005 --> 00:30:14,430 pero 26 para el primero. 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: Lo siento? 671 00:30:15,400 --> 00:30:18,800 >> AUDIENCIA: ¿No es la primera un 0, por lo que no sería el 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: Claro, por eso cuando decimos que el 27, que es vamos a dar nosotros índices de 0 a 26. 673 00:30:24,900 --> 00:30:28,220 Pero si realmente contar ésos hacia fuera, que va a ser 27. 674 00:30:28,220 --> 00:30:30,007 Buena pregunta. 675 00:30:30,007 --> 00:30:30,590 Algo más? 676 00:30:30,590 --> 00:30:31,200 ¿Sí? 677 00:30:31,200 --> 00:30:34,420 >> AUDIENCIA: Así son paí- más lento que las tablas hash? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: Tries van a ser, en teoría, más rápido que las tablas hash 679 00:30:37,920 --> 00:30:39,760 pero ocupan más memoria. 680 00:30:39,760 --> 00:30:40,534 ¿Sí? 681 00:30:40,534 --> 00:30:41,450 AUDIENCIA: [inaudible]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: Lo siento, no te oigo. 684 00:30:47,484 --> 00:30:48,400 AUDIENCIA: [inaudible]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0 a 25 le da 26. 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: 0 a 25 haría darle 26, derecha. 688 00:30:56,958 --> 00:30:58,457 >> AUDIENCIA: ¿Y entonces [inaudible]. 689 00:30:58,457 --> 00:30:59,040 HANNAH: Correcto. 690 00:30:59,040 --> 00:31:04,760 Así que el número que estamos especificando es el número de cosas en nuestra matriz. 691 00:31:04,760 --> 00:31:07,260 Así que si tenemos 27, es nos va a dar 0 692 00:31:07,260 --> 00:31:10,620 hasta el 26, que dará nos espacio para, en este caso, 693 00:31:10,620 --> 00:31:12,770 No estoy incluyendo un apóstrofe. 694 00:31:12,770 --> 00:31:17,040 Así que estamos recibiendo del 0 al 25 son las primeras 26 letras del alfabeto, 695 00:31:17,040 --> 00:31:18,990 o las 26 letras del alfabeto. 696 00:31:18,990 --> 00:31:21,190 Y luego que el pasado cosa, en la entrada 26, es 697 00:31:21,190 --> 00:31:24,598 va a ser el cheque marca o el delta. 698 00:31:24,598 --> 00:31:26,960 Algo más? 699 00:31:26,960 --> 00:31:29,130 Impresionante. 700 00:31:29,130 --> 00:31:30,020 Perdí mi espacio. 701 00:31:30,020 --> 00:31:31,020 Aceptar, fresco. 702 00:31:31,020 --> 00:31:33,240 >> Así que ya tocamos en esto. 703 00:31:33,240 --> 00:31:37,430 Pero la gran compensación entre países y tablas hash 704 00:31:37,430 --> 00:31:39,720 es que intenta proporcionar, en teoría, constante mirar hacia arriba 705 00:31:39,720 --> 00:31:42,890 veces, pero utilizan una gran cantidad de memoria. 706 00:31:42,890 --> 00:31:46,495 Muy bien, ahora tenemos un poco estructuras menos complicadas, 707 00:31:46,495 --> 00:31:49,640 y habremos terminado con C, y vamos a mover hacia la derecha a lo largo. 708 00:31:49,640 --> 00:31:51,930 >> Así pilas, vimos este en la conferencia en la que 709 00:31:51,930 --> 00:31:55,020 tener algo como un pila de bandejas donde 710 00:31:55,020 --> 00:31:57,330 la última cosa que poner en la pila que está pasando 711 00:31:57,330 --> 00:31:59,500 para ser el primero que se quita. 712 00:31:59,500 --> 00:32:02,880 Así que eso es lo que realmente define una pila es que lo último que se puso en 713 00:32:02,880 --> 00:32:06,080 va a ser el primero cosa que despegar. 714 00:32:06,080 --> 00:32:09,279 Y la terminología que usamos si nos vamos a poner algo, 715 00:32:09,279 --> 00:32:12,070 si vamos a añadir algo a nuestra pila, lo llamamos que empujar. 716 00:32:12,070 --> 00:32:14,970 Y si tomamos algo apagado, lo llamamos popping. 717 00:32:14,970 --> 00:32:17,080 Y si vamos a aplicar una pila, nos 718 00:32:17,080 --> 00:32:20,660 necesita estar seguro de no perder de vista el tamaño y la capacidad. 719 00:32:20,660 --> 00:32:24,940 Así que el número total de elementos que podemos sostener y el número actual de elementos 720 00:32:24,940 --> 00:32:27,880 que estamos llevando a cabo. 721 00:32:27,880 --> 00:32:29,885 >> Y de forma muy similar, tenemos colas. 722 00:32:29,885 --> 00:32:34,510 Y la única diferencia es en lugar de con las pilas, 723 00:32:34,510 --> 00:32:37,630 dijimos la última cosa que ponemos en es lo primero que nos quitamos. 724 00:32:37,630 --> 00:32:40,940 Así que con las colas, la Lo primero que ponemos en 725 00:32:40,940 --> 00:32:43,129 va a ser el Lo primero que nos lleve a cabo. 726 00:32:43,129 --> 00:32:45,420 Así que esto es como si usted es realmente haciendo cola en una tienda 727 00:32:45,420 --> 00:32:48,140 y que está siendo ayudado, entonces la primera persona de la fila 728 00:32:48,140 --> 00:32:50,880 debería ser la primera persona en ser ayudado. 729 00:32:50,880 --> 00:32:52,220 Así que eso sería una cola. 730 00:32:52,220 --> 00:32:55,880 >> Así que tenemos que hacer un seguimiento de la tamaño, la capacidad, y la cabeza ya que estamos 731 00:32:55,880 --> 00:33:01,130 va a llevar a todos de la parte frontal de la lista en lugar de la parte posterior. 732 00:33:01,130 --> 00:33:03,480 Las preguntas sobre eso? 733 00:33:03,480 --> 00:33:06,330 Cualquier pregunta C que le están molestando? 734 00:33:06,330 --> 00:33:09,590 Las estructuras de datos, nada de eso divertido? 735 00:33:09,590 --> 00:33:10,530 Muy bien, fresco. 736 00:33:10,530 --> 00:33:14,120 Así que voy a entregarla a Alison a saltar en un poco más de la programación. 737 00:33:14,120 --> 00:33:15,965 >> ALISON: Oh, ya veremos. 738 00:33:15,965 --> 00:33:17,370 Vamos a ver lo bien que hago aquí. 739 00:33:17,370 --> 00:33:21,410 Bien, voy a tratar de volar a través de estas cosas, chicos. 740 00:33:21,410 --> 00:33:24,540 Hannah fue muy en fondo sobre todas sus cosas. 741 00:33:24,540 --> 00:33:26,900 Voy a tratar de dar que una visión general rápida ráfaga 742 00:33:26,900 --> 00:33:31,290 para que podamos llegar a Davin con todo las divertidas JavaScript y seguridad las cosas 743 00:33:31,290 --> 00:33:33,380 que tal vez en realidad quieren saber más acerca de. 744 00:33:33,380 --> 00:33:36,600 >> Bueno, como dijo Hannah, si usted tiene alguna pregunta, 745 00:33:36,600 --> 00:33:39,170 Voy demasiado rápido, por favor, hágamelo saber. 746 00:33:39,170 --> 00:33:42,114 Voy a responder a las preguntas que sean necesarias. 747 00:33:42,114 --> 00:33:45,280 Así que para empezar, vamos a empezar con probablemente una de las primeras cosas 748 00:33:45,280 --> 00:33:48,730 que aprendió con la web programación, permisos. 749 00:33:48,730 --> 00:33:52,720 Así chmod, chicos debería haber sido maestros en esto con toda la web 750 00:33:52,720 --> 00:33:54,870 programación que tienes estado haciendo últimamente. 751 00:33:54,870 --> 00:33:57,320 Es básicamente un comando que cambia los permisos 752 00:33:57,320 --> 00:34:00,779 o los permisos de acceso de nuestros objetos del sistema de archivos. 753 00:34:00,779 --> 00:34:02,570 Por supuesto, en realidad ver éstos, si estás 754 00:34:02,570 --> 00:34:04,910 tener ningún problema con ellos durante sus boletines de problemas, 755 00:34:04,910 --> 00:34:11,460 que pueda haber utilizado ls -l, que es largo, para obtener el tipo de vista de este tipo, 756 00:34:11,460 --> 00:34:14,209 donde realmente se visualizan todos los permisos para un archivo. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> Y en realidad, sólo vamos a ir a través bastante rápido sólo bonita 759 00:34:20,732 --> 00:34:21,940 mucho lo que cada uno de ellos significa. 760 00:34:21,940 --> 00:34:24,481 Así que hemos d aquí, que sólo representa el directorio. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 Obviamente aquí, vemos rwx, que es de lectura, escritura, y ejecutable. 763 00:34:31,739 --> 00:34:37,090 Estos también pueden ser representados en forma de bits, que vamos a entrar en la página siguiente. 764 00:34:37,090 --> 00:34:40,699 Así que cada tríada que vimos aquí, por lo que es tres tríadas. 765 00:34:40,699 --> 00:34:48,120 Hemos rwx, r nada x y r nada x para este primer archivo. 766 00:34:48,120 --> 00:34:49,690 Es esta estructura general. 767 00:34:49,690 --> 00:34:50,940 >> Así que tenemos algún directorio. 768 00:34:50,940 --> 00:34:53,999 Tenemos algunos grupos de usuarios con estos permisos. 769 00:34:53,999 --> 00:34:57,040 Algunos grupo que tiene estos permisos, y un mundo que tiene un permiso. 770 00:34:57,040 --> 00:34:59,420 Usted puede pensar en esto como una tríada. 771 00:34:59,420 --> 00:35:01,130 Usted puede pensar en esto como tres bits. 772 00:35:01,130 --> 00:35:04,060 Así que pueden contener valores en cualquier lugar desde 0 hasta 773 00:35:04,060 --> 00:35:07,350 a 7, que es por qué a veces tuvimos que haces chmod 774 00:35:07,350 --> 00:35:17,510 600 en vez de chmod rw lo que sea. 775 00:35:17,510 --> 00:35:19,170 Vamos a entrar en un ejemplo allí. 776 00:35:19,170 --> 00:35:24,260 Pero, básicamente, se puede pensar de éstos, ya sea como sólo rwx, 777 00:35:24,260 --> 00:35:28,520 o se puede pensar en ellos como algunos número donde este primero aquí 778 00:35:28,520 --> 00:35:31,480 representa un número entre 0 y 7, este segundo uno 779 00:35:31,480 --> 00:35:33,970 representa un número entre 0 y 7, y la tercera 780 00:35:33,970 --> 00:35:38,245 representa un número entre 0 y 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> r tiene un valor de 4. w tiene un valor de 2, y x 782 00:35:42,700 --> 00:35:49,230 tiene un valor de 1, por lo que este permiso aquí se chmod 700. 783 00:35:49,230 --> 00:35:53,520 Porque en este caso aquí, se dice que haber el primer bit no se volcó sobre. 784 00:35:53,520 --> 00:35:55,380 Así que tenemos 4 para lectura. 785 00:35:55,380 --> 00:35:58,730 El segundo bit se encendió para w, que es 2, por lo que ahora tenemos 6. 786 00:35:58,730 --> 00:36:02,070 Y el tercer bit se invierte en para x, que es 1, por lo que tenemos siete. 787 00:36:02,070 --> 00:36:04,820 Y, por supuesto, nuestro grupo y nuestro mundo son cada uno 0. 788 00:36:04,820 --> 00:36:07,770 Así que este es también el equivalente a chmod 700. 789 00:36:07,770 --> 00:36:12,081 Y sin duda prueba a comprender el mapeo entre ellos. 790 00:36:12,081 --> 00:36:14,080 No estoy seguro de si tiene subir en una prueba antes, 791 00:36:14,080 --> 00:36:18,590 pero sería una pregunta que yo podría pedir. 792 00:36:18,590 --> 00:36:22,110 >> Sólo un poco yendo aún más en chmod aquí, aquí 793 00:36:22,110 --> 00:36:27,730 es la muy general estructura de una llamada chmod. 794 00:36:27,730 --> 00:36:29,500 Así que por supuesto, hemos chmod aquí. 795 00:36:29,500 --> 00:36:34,410 Las referencias, lo que esto se refiere a que es que estamos dando estos permisos a 796 00:36:34,410 --> 00:36:36,570 o que estamos tomando estos Permisos de distancia de. 797 00:36:36,570 --> 00:36:44,330 Así que tenemos una aquí en los permisos, como le hemos dado a usted chmod a + X, 798 00:36:44,330 --> 00:36:45,440 como veremos pronto. 799 00:36:45,440 --> 00:36:48,460 un sólo significa dar a estos específicos permisos a todo el mundo. 800 00:36:48,460 --> 00:36:49,600 Darles a todos. 801 00:36:49,600 --> 00:36:55,370 Por lo que podría muy bien tener u plus x o más x g o o más x o múltiple 802 00:36:55,370 --> 00:36:55,870 de los mismos. 803 00:36:55,870 --> 00:36:59,280 Así que la primera parte es siempre va a ser referencias. 804 00:36:59,280 --> 00:37:03,220 ¿Quiénes somos nosotros dando estos permisos a, o que estamos tomando lejos de? 805 00:37:03,220 --> 00:37:04,850 >> El segundo es el operador. 806 00:37:04,850 --> 00:37:07,350 Así que ustedes han tratado sobre todo con ventaja. 807 00:37:07,350 --> 00:37:12,140 Esto da permisos a quienquiera que usted les está dando, 808 00:37:12,140 --> 00:37:14,840 mientras que menos, lógicamente, los elimina. 809 00:37:14,840 --> 00:37:16,880 Así que nada demasiado terrible allí. 810 00:37:16,880 --> 00:37:23,060 Y entonces los modos es lo que hablamos con la lectura, escritura o ejecución. 811 00:37:23,060 --> 00:37:29,070 Así que un plus x significa dar ejecutable permisos a todo el mundo. 812 00:37:29,070 --> 00:37:33,430 Y luego, por supuesto, en la que archivo o directorio específico. 813 00:37:33,430 --> 00:37:33,980 DE ACUERDO? 814 00:37:33,980 --> 00:37:36,010 Todo el mundo bueno con chmod? 815 00:37:36,010 --> 00:37:37,850 No está mal? 816 00:37:37,850 --> 00:37:42,417 >> OK, así HTML, alguno de ustedes está edad suficiente a-- edad MySpace? 817 00:37:42,417 --> 00:37:44,750 Envié esta a mi sección, y, literalmente, la mitad de las personas 818 00:37:44,750 --> 00:37:45,790 me miró como si estuviera loco. 819 00:37:45,790 --> 00:37:47,498 Y yo estaba como, chicos, no estamos tan viejo. 820 00:37:47,498 --> 00:37:48,910 Venga. 821 00:37:48,910 --> 00:37:53,360 Así HyperText Markup Language, sinceramente, es sólo una forma para usted 822 00:37:53,360 --> 00:37:57,990 para mostrar ciertas cosas en la web. 823 00:37:57,990 --> 00:37:59,210 Así que es un lenguaje de marcas. 824 00:37:59,210 --> 00:38:00,640 No es un lenguaje de script. 825 00:38:00,640 --> 00:38:02,160 No hay lógica en ella. 826 00:38:02,160 --> 00:38:05,710 Es simplemente para cambiar el Aparece manera algo. 827 00:38:05,710 --> 00:38:07,670 OK, así que eso es un importante distinción de hacer. 828 00:38:07,670 --> 00:38:12,030 Es considerado como un lenguaje de marcas, no es un lenguaje de scripting. 829 00:38:12,030 --> 00:38:15,100 >> Así que aquí tenemos nuestras etiquetas HTML. 830 00:38:15,100 --> 00:38:20,390 En esta diapositiva son probablemente la mayor parte del los que usted debe conocer 831 00:38:20,390 --> 00:38:22,390 y ser muy cómodo. 832 00:38:22,390 --> 00:38:25,700 Así que, obviamente, tenemos nuestra etiqueta HTML, que 833 00:38:25,700 --> 00:38:29,930 designa que todo en entre estos dos habrá HTML. 834 00:38:29,930 --> 00:38:33,070 Tenemos algo de enlace, que obviamente le dará 835 00:38:33,070 --> 00:38:34,990 un enlace a una página web externa. 836 00:38:34,990 --> 00:38:37,520 Algunos título, dentro de nuestra cabeza aquí. 837 00:38:37,520 --> 00:38:40,020 Y tenemos nuestro cuerpo con h1, que es una cabecera, 838 00:38:40,020 --> 00:38:42,260 por lo que va a hacer que sea agradable y en negrita y más grande. 839 00:38:42,260 --> 00:38:46,040 Y luego, tenemos algunos p, que es un párrafo. 840 00:38:46,040 --> 00:38:49,000 Probablemente debería saber y estar familiarizado con las cosas 841 00:38:49,000 --> 00:38:54,030 como la forma de insertar una imagen, son Hay otras clases de cabecera? 842 00:38:54,030 --> 00:38:57,240 Definitivamente, me gustaría ser cómodo con div. 843 00:38:57,240 --> 00:39:00,840 Así estos tienen la mayoría de las etiquetas que usted debe estar familiarizado. 844 00:39:00,840 --> 00:39:04,370 Pero, por supuesto, como todo en la CS 50, la lista no es exhaustiva. 845 00:39:04,370 --> 00:39:08,200 Así que asegúrese de poner al día eso. 846 00:39:08,200 --> 00:39:13,260 >> CSS, por lo CSS, si alguno de ustedes miran mi seminario de hace dos semanas, 847 00:39:13,260 --> 00:39:16,250 es en realidad una forma el estilo de su página web? 848 00:39:16,250 --> 00:39:18,950 OK, así que tenemos un lenguaje de marcas. 849 00:39:18,950 --> 00:39:23,220 HTML, que se encarga de sólo el texto y donde podría estar en la página. 850 00:39:23,220 --> 00:39:25,760 Pero CSS es realmente lo que hace que sea bonita. 851 00:39:25,760 --> 00:39:30,690 Usted podría tener estos en su HTML archivos, pero como vamos a hablar más tarde, 852 00:39:30,690 --> 00:39:32,660 Estoy bastante seguro de que podría ser la siguiente diapositiva, que 853 00:39:32,660 --> 00:39:35,620 Es una práctica común, y en realidad práctica que realmente nos animamos, 854 00:39:35,620 --> 00:39:40,670 para que usted mantenga los separaron cuando hablar de MVC y todo ese paradigma. 855 00:39:40,670 --> 00:39:42,490 Eso es realmente lo que esto alimenta. 856 00:39:42,490 --> 00:39:46,110 >> Así CSS es sólo una manera de hacen que las cosas se ven bastante. 857 00:39:46,110 --> 00:39:50,500 Las cosas aquí, como cuerpo y #title y .info, 858 00:39:50,500 --> 00:39:54,340 estos son llamados selectores y lo que hacen es seleccionar cosas específicas 859 00:39:54,340 --> 00:39:59,260 dentro de su archivo HTML y aplicar cualquier estilo, 860 00:39:59,260 --> 00:40:04,090 cualquier clase de cosas que desea, a ese elemento específico de su web 861 00:40:04,090 --> 00:40:04,590 página. 862 00:40:04,590 --> 00:40:08,820 Así que aquí tenemos una color de fondo y un color 863 00:40:08,820 --> 00:40:12,450 y una familia de fuentes que está siendo aplicado a lo que está en el cuerpo. 864 00:40:12,450 --> 00:40:15,530 Así que si miramos hacia atrás aquí, no se aplicaría al título. 865 00:40:15,530 --> 00:40:22,340 Sólo se aplicaría a lo que es en estos selectores cuerpo, ¿de acuerdo? 866 00:40:22,340 --> 00:40:25,250 >> Con el título aquí, esto es va a ser lo mismo, 867 00:40:25,250 --> 00:40:28,410 el color del texto siendo azul sólo va 868 00:40:28,410 --> 00:40:33,870 para afectar lo que está dentro los selectores de título. 869 00:40:33,870 --> 00:40:36,580 Así como información aquí, el texto será de color rosa, 870 00:40:36,580 --> 00:40:38,600 de cualquier información, que está justo aquí. 871 00:40:38,600 --> 00:40:40,860 Así que lo único que sería color de rosa en esta página 872 00:40:40,860 --> 00:40:44,100 es la fecha, Lunes, 17 de noviembre 2014. 873 00:40:44,100 --> 00:40:48,770 OK, así que CSS es sólo una manera de tener más control over-- sí? 874 00:40:48,770 --> 00:40:51,850 >> AUDIENCIA: ¿Por qué tienes utilizar el hash con el título? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: Diapositiva siguiente, prometo! 876 00:40:55,170 --> 00:40:56,810 Vamos a llegar allí. 877 00:40:56,810 --> 00:40:59,830 Así que es por eso que tenemos que usar hash. 878 00:40:59,830 --> 00:41:03,429 Así selectores asumen tres principales formas que hablar con ustedes acerca. 879 00:41:03,429 --> 00:41:05,595 Yo fyou quiero aprender más, hay mucho por ahí. 880 00:41:05,595 --> 00:41:07,540 Hay una gran documentación CSS. 881 00:41:07,540 --> 00:41:12,680 Hay un nombre de etiqueta, que tiene que ver con sólo sus etiquetas normales en HTML. 882 00:41:12,680 --> 00:41:17,210 Así h1, p, div, h2, ese tipo de cosas. 883 00:41:17,210 --> 00:41:20,320 Y sólo podemos nombrar aquellos como es. 884 00:41:20,320 --> 00:41:22,650 Así que como vemos aquí con cuerpo, es una etiqueta normal. 885 00:41:22,650 --> 00:41:26,660 Así que podemos cuerpo sólo hay que poner cuando estamos hablando en nuestro archivo CSS. 886 00:41:26,660 --> 00:41:29,730 >> Con título, toda la razón por la que tiene este hash es que tenemos lo que es 887 00:41:29,730 --> 00:41:31,010 considerado un ID. 888 00:41:31,010 --> 00:41:35,400 Así que una identificación debe ser siempre único en su página HTML 889 00:41:35,400 --> 00:41:37,930 de modo que cuando usted está refiriéndose a ella, 890 00:41:37,930 --> 00:41:41,990 sabes que sólo te refieres a una cosa específica. 891 00:41:41,990 --> 00:41:46,270 Así que en este caso aquí, con nuestro h1 aquí, CS 50 sesión de revisión, 892 00:41:46,270 --> 00:41:47,810 tenemos un id de título. 893 00:41:47,810 --> 00:41:54,280 Así pues, para referirse sólo a la pedazo de nuestro HTML, hacemos un título hash. 894 00:41:54,280 --> 00:41:58,080 Sólo por convenio, los ID se designan con un hash en frente de ellos. 895 00:41:58,080 --> 00:42:01,650 De la misma manera, vemos información que aquí hay una clase. 896 00:42:01,650 --> 00:42:06,070 Y así, la clase con CSS es designada como una clase de punto 897 00:42:06,070 --> 00:42:08,895 o dot lo que la clase es. 898 00:42:08,895 --> 00:42:10,850 Así que en este caso aquí, es información. 899 00:42:10,850 --> 00:42:13,090 >> Así que me retracto. 900 00:42:13,090 --> 00:42:16,200 Ambos de estos sería rosa para nuestro CSS aquí 901 00:42:16,200 --> 00:42:18,430 porque ambos tienen una clase de información. 902 00:42:18,430 --> 00:42:23,070 Y en nuestro archivo CSS, hemos designado que cualquier cosa con una clase de info 903 00:42:23,070 --> 00:42:24,120 deberá ser de color rosa. 904 00:42:24,120 --> 00:42:25,968 ¿Tiene eso sentido? 905 00:42:25,968 --> 00:42:27,435 ¿Sí? 906 00:42:27,435 --> 00:42:30,731 >> AUDIENCIA: Si se va a hacer todo en el cuerpo blanco, 907 00:42:30,731 --> 00:42:32,814 y luego intenta hacer algo en su interior azul, 908 00:42:32,814 --> 00:42:34,770 habría que causar problemas? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: Así es CSS hojas de estilo en cascada. 910 00:42:37,310 --> 00:42:40,730 Así que cualquier cosa es hacia el parte inferior tendrá prioridad. 911 00:42:40,730 --> 00:42:44,080 Así que si usted hace algo con el cuerpo, y haces todo lo blanco, 912 00:42:44,080 --> 00:42:49,300 y más tarde cambia el título o cambia el texto dentro del cuerpo, 913 00:42:49,300 --> 00:42:50,560 sobrescribe eso. 914 00:42:50,560 --> 00:42:55,360 Así que cualquier cosa hacia la parte inferior tendrá prioridad. 915 00:42:55,360 --> 00:42:56,730 ¿Sí? 916 00:42:56,730 --> 00:42:59,627 >> Audiencia: Y IDs son únicos, pero las clases pueden ser más? 917 00:42:59,627 --> 00:43:00,210 HANNAH: Correcto. 918 00:43:00,210 --> 00:43:06,320 Así que los ID deben ser únicos, y las clases pueden consulte tantas cosas como le gustaría. 919 00:43:06,320 --> 00:43:07,580 Alguna otra pregunta? 920 00:43:07,580 --> 00:43:09,800 Sí. 921 00:43:09,800 --> 00:43:11,210 >> AUDIENCIA: [inaudible]. 922 00:43:11,210 --> 00:43:13,509 Me pregunto si eso hace la diferencia. 923 00:43:13,509 --> 00:43:15,217 HANNAH: Lo siento, ¿cuál era la pregunta? 924 00:43:15,217 --> 00:43:18,960 AUDIENCIA: Hay pequeñas "F" y capital "F." 925 00:43:18,960 --> 00:43:21,440 HANNAH: Así que la diferencia entre los pequeños "f" y capital "F" 926 00:43:21,440 --> 00:43:22,606 no debe hacer una diferencia. 927 00:43:22,606 --> 00:43:26,330 Así que "f" será el 15 de cualquier manera. 928 00:43:26,330 --> 00:43:28,130 Fresco, todo lo demás? 929 00:43:28,130 --> 00:43:29,930 Todo el mundo bueno, CSS? 930 00:43:29,930 --> 00:43:30,850 ¿Sí? 931 00:43:30,850 --> 00:43:31,790 >> AUDIENCIA: Lo siento. 932 00:43:31,790 --> 00:43:35,550 ¿Se puede tener una clase y una identificación? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: Sí, se puede. 934 00:43:38,030 --> 00:43:40,420 Las cosas pueden tener tanto una clase y un ID. 935 00:43:40,420 --> 00:43:44,670 Y recomiendo encarecidamente probar estos por su cuenta. 936 00:43:44,670 --> 00:43:50,480 CSS usted aprenderá mejor con sólo hacer algo, la página web muy simple, 937 00:43:50,480 --> 00:43:53,440 la elaboración de un poco de CSS, y justo ver cómo interactúan. 938 00:43:53,440 --> 00:43:56,970 Y obtendrá una muy buena, sentido intuitivo de cómo funciona. 939 00:43:56,970 --> 00:43:58,810 >> Bueno, todo el mundo bueno con CSS? 940 00:43:58,810 --> 00:44:01,280 Eres todo va a hacer hermosos sitios web con CSS ahora. 941 00:44:01,280 --> 00:44:05,460 OK, mejores prácticas, sólo cosas a tener en cuenta, las cosas 942 00:44:05,460 --> 00:44:09,810 que-- es por eso que atraquemos que para el diseñador y todo eso. 943 00:44:09,810 --> 00:44:11,820 Así que cierra todas sus etiquetas HTML. 944 00:44:11,820 --> 00:44:14,840 Así que si usted tiene un cuerpo abierto, debe haber un cuerpo cerca. 945 00:44:14,840 --> 00:44:18,180 Si usted tiene un apartado abierto, debe haber un párrafo cerca. 946 00:44:18,180 --> 00:44:19,555 Revise para ver su página valida. 947 00:44:19,555 --> 00:44:23,330 Ustedes deben estar muy familiarizado con esto desde p-set siete 948 00:44:23,330 --> 00:44:26,350 con CS 50 finanzas con el validador W3. 949 00:44:26,350 --> 00:44:28,340 Y como dije antes, uno de nuestros grandes paradigmas 950 00:44:28,340 --> 00:44:33,780 se separa su estilo con CSS de su margen de beneficio, que es HTML. 951 00:44:33,780 --> 00:44:36,900 Y luego, por supuesto, tenemos este gran XKCD aquí abajo. 952 00:44:36,900 --> 00:44:38,280 Yay, alivio cómico! 953 00:44:38,280 --> 00:44:41,340 >> Aceptar, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 Entre estos y HTTP, básicamente son ambos protocolos. 955 00:44:44,650 --> 00:44:46,810 Así que usted podría pensar de ellos como un conjunto de reglas 956 00:44:46,810 --> 00:44:50,110 que rigen la forma en las cosas moverse a través de internet. 957 00:44:50,110 --> 00:44:53,410 Así de control de transmisión protocolo o protocolo de Internet, 958 00:44:53,410 --> 00:44:57,280 es sólo una manera de asegurarse de que que los datos se pone a dónde va 959 00:44:57,280 --> 00:45:00,030 y que sabemos si que nunca nos falta de datos. 960 00:45:00,030 --> 00:45:03,520 Así que si ustedes piensan volver a la conferencia hace un par de semanas con David 961 00:45:03,520 --> 00:45:06,980 donde tuvimos cuatro sobres, que fueron todos contados como uno de cuatro, 962 00:45:06,980 --> 00:45:11,300 dos de cuatro, tres de cuatro, cuatro de cuatro, esto es sólo un conjunto de reglas. 963 00:45:11,300 --> 00:45:13,830 Nosotros dijimos, OK, siempre que estamos el envío de más de un paquete, 964 00:45:13,830 --> 00:45:16,610 vamos a numerar con lo que el número es 965 00:45:16,610 --> 00:45:19,040 y cuántos total que se el usuario debe recibir. 966 00:45:19,040 --> 00:45:22,540 >> Y esto es sólo el que dice está recibiendo los datos si se 967 00:45:22,540 --> 00:45:26,120 han conseguido todo, o si algo se perdió en el camino. 968 00:45:26,120 --> 00:45:28,840 Y tienen que pedir otra vez. 969 00:45:28,840 --> 00:45:31,140 Esto es en realidad un conjunto de reglas. 970 00:45:31,140 --> 00:45:33,650 Así es como se puede pensar en él, ¿de acuerdo? 971 00:45:33,650 --> 00:45:37,700 Y también, que especifica el puerto, el cual ustedes can-- sé durante la conferencia, 972 00:45:37,700 --> 00:45:39,170 tenían toda una lista de puertos. 973 00:45:39,170 --> 00:45:41,630 Pero nosotros no los tenemos aquí ahora mismo. 974 00:45:41,630 --> 00:45:45,290 >> Protocolo de transferencia de hipertexto Así es, de nuevo, es otro protocolo. 975 00:45:45,290 --> 00:45:48,630 Así que es otro conjunto de reglas que gobernar, en este caso, 976 00:45:48,630 --> 00:45:51,130 cómo se transfiere el hipertexto. 977 00:45:51,130 --> 00:45:54,340 Así que sólo permite a los navegadores hablar con los servidores web. 978 00:45:54,340 --> 00:45:56,910 Y como hemos dicho aquí, es como toma de contacto humano. 979 00:45:56,910 --> 00:46:00,480 Es sólo una forma de gobernar cómo el servidor web es 980 00:46:00,480 --> 00:46:02,690 va a interactuar con el navegador. 981 00:46:02,690 --> 00:46:05,660 Y tenemos sólo un par de ejemplos. 982 00:46:05,660 --> 00:46:09,100 Tenemos algunas peticiones aquí donde GET es el método. 983 00:46:09,100 --> 00:46:13,760 Tenemos HTTP 1.1, que es versión de protocolo para nosotros. 984 00:46:13,760 --> 00:46:17,230 Y luego, el anfitrión, que es lo que en realidad estamos tratando de acceder. 985 00:46:17,230 --> 00:46:21,800 Y entonces, como se ve aquí, obtener alguna respuesta con este 200 986 00:46:21,800 --> 00:46:25,032 Aceptar como nuestro código de respuesta HTTP. 987 00:46:25,032 --> 00:46:27,240 Tenemos una gran lista que voy para levantar en un segundo 988 00:46:27,240 --> 00:46:29,430 que ustedes deben estar familiarizados con. 989 00:46:29,430 --> 00:46:35,750 Y nosotros tenemos este tipo de contenido de texto / HTML, que se limita a decir qué tipo de datos 990 00:46:35,750 --> 00:46:39,990 estamos recibiendo desde el servidor, ¿de acuerdo? 991 00:46:39,990 --> 00:46:44,230 Este anfitrión y este tipo de contenido son parte de las cabeceras HTTP. 992 00:46:44,230 --> 00:46:49,610 Usted puede tener pocos o tan poco como necesaria para el contexto de lo 993 00:46:49,610 --> 00:46:50,580 usted está tratando. 994 00:46:50,580 --> 00:46:53,371 A veces, usted tiene un montón de información procedente de su servidor. 995 00:46:53,371 --> 00:46:56,040 Tal vez están solicitando mucho de información del usuario. 996 00:46:56,040 --> 00:46:57,600 Varía en función del contexto. 997 00:46:57,600 --> 00:47:01,144 Si nos fijamos en CS 50 Estudio, hay mucho más en eso. 998 00:47:01,144 --> 00:47:03,060 Pero tenemos un montón de conseguir a través, así que me voy 999 00:47:03,060 --> 00:47:05,760 ir a la derecha por delante si eso está bien con ustedes? 1000 00:47:05,760 --> 00:47:07,960 Fresco. 1001 00:47:07,960 --> 00:47:08,460 Espere. 1002 00:47:08,460 --> 00:47:11,182 Definitivamente tengo que toda lista de-- eh! 1003 00:47:11,182 --> 00:47:13,140 No sé por qué esto es todo el camino hasta aquí. 1004 00:47:13,140 --> 00:47:15,660 Pensé que literalmente mudé mientras estaba sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> DAVIN: ¿Quieres enseñarlo? 1006 00:47:16,540 --> 00:47:17,420 ¿O quieres que te lo enseño? 1007 00:47:17,420 --> 00:47:20,010 >> AUDIENCIA: Pensé que podríamos simplemente mostrarles a empezar. 1008 00:47:20,010 --> 00:47:22,210 Quiero decir, usted puede entrar en aún más, pero yo 1009 00:47:22,210 --> 00:47:26,030 pensó que tenía más sentido desde que estaba hablando sólo de estados HTTP. 1010 00:47:26,030 --> 00:47:28,200 Así que aquí está la lista completa. 1011 00:47:28,200 --> 00:47:31,730 Supongo que lo que va a pasar es Davin va a ir a ellos más tarde. 1012 00:47:31,730 --> 00:47:35,330 Pero hay una lista completa, un Vista previa del gusto por venir. 1013 00:47:35,330 --> 00:47:41,640 Bien, vamos a blow-- esto va ser un curso intensivo de PHP como ningún otro. 1014 00:47:41,640 --> 00:47:44,874 >> Así PHP, preprocesador de hipertexto, es un backronym recursiva, 1015 00:47:44,874 --> 00:47:46,540 lo que significa que fue nombrado otra cosa. 1016 00:47:46,540 --> 00:47:49,050 Y luego estaban como, este en realidad no tiene sentido. 1017 00:47:49,050 --> 00:47:52,210 Así que sólo nombran it-- y era un acrónimo, 1018 00:47:52,210 --> 00:47:54,840 por lo que sólo lo hizo PHP preprocesador de hipertexto, que 1019 00:47:54,840 --> 00:47:55,980 simplemente no tiene sentido. 1020 00:47:55,980 --> 00:47:57,714 Historia divertida. 1021 00:47:57,714 --> 00:47:58,880 Es un lenguaje de programación. 1022 00:47:58,880 --> 00:48:02,360 Así que por mucho que hacer hincapié en que HTML no es un lenguaje de programación, 1023 00:48:02,360 --> 00:48:05,350 es un lenguaje de marcas, PHP es un lenguaje de programación. 1024 00:48:05,350 --> 00:48:07,422 ¿Cómo sabes que esto es porque no es lógica. 1025 00:48:07,422 --> 00:48:08,380 Hay condicionales. 1026 00:48:08,380 --> 00:48:12,750 Tenemos las variables, mientras que nosotros tener ninguna de esas cosas en HTML. 1027 00:48:12,750 --> 00:48:16,960 >> Muy bien, entonces tenemos esta pequeña poco aquí que es como un sabor de PHP. 1028 00:48:16,960 --> 00:48:20,510 Así lo básico, nombres de variables comenzar con un signo de dólar. 1029 00:48:20,510 --> 00:48:21,500 Hay mucha gente que le gusta. 1030 00:48:21,500 --> 00:48:22,371 Recuerda a nosotros dinero. 1031 00:48:22,371 --> 00:48:22,995 Todo es genial. 1032 00:48:22,995 --> 00:48:25,280 Todos queremos PHP. 1033 00:48:25,280 --> 00:48:28,020 Así que no especificamos un Tipo de más de variable. 1034 00:48:28,020 --> 00:48:29,995 Se determina en tiempo de ejecución. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 El intérprete será, oh, sólo tendremos que correr a través, 1037 00:48:35,890 --> 00:48:39,565 y de acuerdo con el contexto, Vamos a ver qué tipos de tipos 1038 00:48:39,565 --> 00:48:41,560 estas variables deben tener. 1039 00:48:41,560 --> 00:48:42,815 No hay función principal. 1040 00:48:42,815 --> 00:48:43,690 Las cosas van a funcionar. 1041 00:48:43,690 --> 00:48:47,851 Ustedes con su importación en su última p-set, te darás cuenta de esto. 1042 00:48:47,851 --> 00:48:49,350 No había realmente una función principal. 1043 00:48:49,350 --> 00:48:52,070 Usted acaba de escribir lo que que quería pasar. 1044 00:48:52,070 --> 00:48:53,280 Y sólo sucedió. 1045 00:48:53,280 --> 00:48:56,760 Así que eso es PHP para usted. 1046 00:48:56,760 --> 00:48:59,180 >> Las matrices son muy similares. 1047 00:48:59,180 --> 00:49:01,270 Todavía tenemos este soporte. 1048 00:49:01,270 --> 00:49:05,940 Aquí, tenemos alguna variable llama arr, y es igual 1049 00:49:05,940 --> 00:49:08,540 a-- tenemos nuestra normalidad notación de corchetes. 1050 00:49:08,540 --> 00:49:10,630 Y tenemos algún valor clave. 1051 00:49:10,630 --> 00:49:14,630 Y la gran diferencia entre C y PHP arrays 1052 00:49:14,630 --> 00:49:19,330 es que podemos tener este associate-- podemos asociar valores a las teclas. 1053 00:49:19,330 --> 00:49:22,440 Así que en lugar de sólo tener una matriz que está indexado 1054 00:49:22,440 --> 00:49:26,630 por el número o la posición de ese elemento de la matriz, 1055 00:49:26,630 --> 00:49:29,060 en realidad podemos asociarlo con una llave. 1056 00:49:29,060 --> 00:49:36,700 ¿Dónde podemos decir, OK, quiero lo que sea valor se asocia con la fruta. 1057 00:49:36,700 --> 00:49:39,280 Y tal vez tenemos la fruta fue a plátano. 1058 00:49:39,280 --> 00:49:41,760 Así que volvería plátano para nosotros. 1059 00:49:41,760 --> 00:49:44,100 >> Pero básicamente, el más cosa de gran alcance sobre este 1060 00:49:44,100 --> 00:49:47,960 es que si ustedes recuerden la demostración de la conferencia en la que, básicamente, 1061 00:49:47,960 --> 00:49:53,050 abecedario reescribió en PHP, y búsqueda era-- era realmente le gusta, 1062 00:49:53,050 --> 00:49:55,007 no existe esta clave? 1063 00:49:55,007 --> 00:49:56,590 Eso es muy amable de la potencia de la misma. 1064 00:49:56,590 --> 00:49:58,560 Usted no necesita iterar a través de su matriz. 1065 00:49:58,560 --> 00:50:00,311 Usted no necesita saber lo que el espacio que se encuentra. 1066 00:50:00,311 --> 00:50:01,976 Podría ser en el final o el principio. 1067 00:50:01,976 --> 00:50:04,790 Como siempre que se sepa la clave que está asociada con el valor, 1068 00:50:04,790 --> 00:50:09,740 PHP sólo puede escupir ese valor copia a la derecha en usted, ¿de acuerdo? 1069 00:50:09,740 --> 00:50:12,960 >> Y luego, también sólo tener sólo porque 1070 00:50:12,960 --> 00:50:16,750 puede tener pares de valores clave no significa que usted tenga que hacerlo. 1071 00:50:16,750 --> 00:50:19,180 También se puede simplemente crear una matriz normal, como aquí, 1072 00:50:19,180 --> 00:50:21,540 en la parte inferior, donde es sólo uno, dos, tres, cuatro. 1073 00:50:21,540 --> 00:50:22,510 Esos son nuestros valores. 1074 00:50:22,510 --> 00:50:25,320 Y de hecho, sus teclas son los índices. 1075 00:50:25,320 --> 00:50:26,830 Así que la clave para una sería cero. 1076 00:50:26,830 --> 00:50:28,610 La clave para dos sería uno. 1077 00:50:28,610 --> 00:50:31,910 Así sucesivamente y así sucesivamente, a menos asigna explícitamente una clave, 1078 00:50:31,910 --> 00:50:34,630 usted podría suponer que el valor es sólo su índice. 1079 00:50:34,630 --> 00:50:37,290 ¿Tiene eso sentido para todo el mundo? 1080 00:50:37,290 --> 00:50:38,070 No hay preguntas? 1081 00:50:38,070 --> 00:50:38,930 Impresionante. 1082 00:50:38,930 --> 00:50:44,420 >> Aceptar, foreach es una manera de iterar a través de sus matrices. 1083 00:50:44,420 --> 00:50:47,490 Así que tenemos algo aquí, sólo la estructura general. 1084 00:50:47,490 --> 00:50:51,020 Así foreach, el nombre de nuestra matriz, como lo 1085 00:50:51,020 --> 00:50:53,930 que desea llamar cada elemento en la matriz, 1086 00:50:53,930 --> 00:50:57,270 y podemos hacer algo con ese elemento o con ese valor. 1087 00:50:57,270 --> 00:50:58,680 Así que tenemos un ejemplo aquí. 1088 00:50:58,680 --> 00:51:05,770 Tenemos un asociativa matriz con estas dos entradas 1089 00:51:05,770 --> 00:51:10,080 con la barra está asociada con foo y QUX está asociado con baz. 1090 00:51:10,080 --> 00:51:12,180 Así teclas son foo y baz. 1091 00:51:12,180 --> 00:51:13,650 Los valores son bar y qux. 1092 00:51:13,650 --> 00:51:18,560 Así foreach, tenemos nuestra gama aquí, como el par de valores clave. 1093 00:51:18,560 --> 00:51:21,560 Esto nos permite el acceso la clave y valor. 1094 00:51:21,560 --> 00:51:23,680 Tal vez lo que desea que el valor, en cuyo caso 1095 00:51:23,680 --> 00:51:27,640 usted podría hacer como arr como $ valor, y entonces 1096 00:51:27,640 --> 00:51:30,640 se acaba de acceder al valor como iterar a través. 1097 00:51:30,640 --> 00:51:32,600 Pero tal vez, por alguna razón, desea que la clave, 1098 00:51:32,600 --> 00:51:35,460 que es por eso que elegí este ejemplo en su lugar. 1099 00:51:35,460 --> 00:51:40,240 Así que en realidad se puede manipular clave y el valor en este caso. 1100 00:51:40,240 --> 00:51:41,070 DE ACUERDO? 1101 00:51:41,070 --> 00:51:41,905 Pregunta? 1102 00:51:41,905 --> 00:51:44,279 >> AUDIENCIA: Si querías sólo manipular la llave, se 1103 00:51:44,279 --> 00:51:45,910 que tienes que hacer foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: Correcto. 1105 00:51:47,360 --> 00:51:50,560 Así que si querías manipular sólo la clave, 1106 00:51:50,560 --> 00:51:53,680 usted todavía necesita este sintaxis, porque si sólo 1107 00:51:53,680 --> 00:51:56,930 tener arr como algo, como una cosa, que es 1108 00:51:56,930 --> 00:52:00,070 va a suponer que desea el valor, no la clave. 1109 00:52:00,070 --> 00:52:06,780 Así que si alguna vez apenas tiene igual arr como, tal vez esto es como $ element, 1110 00:52:06,780 --> 00:52:11,670 que va a suponer que usted está pidiendo por sólo el valor en cada punto. 1111 00:52:11,670 --> 00:52:13,879 Si desea explícitamente a hacer algo con la llave, 1112 00:52:13,879 --> 00:52:16,170 incluso si usted no va a hacer cualquier cosa con el valor, 1113 00:52:16,170 --> 00:52:18,430 necesita esta estructura que tenemos aquí 1114 00:52:18,430 --> 00:52:22,330 donde usted está pidiendo explícitamente tanto para la clave y el valor. 1115 00:52:22,330 --> 00:52:24,170 Muy buena pregunta. 1116 00:52:24,170 --> 00:52:25,940 Algo más? 1117 00:52:25,940 --> 00:52:27,490 Fresco. 1118 00:52:27,490 --> 00:52:29,911 >> Muy bien, PHP y HTML. 1119 00:52:29,911 --> 00:52:31,410 Oh, estamos de vuelta a la p-set siete de nuevo. 1120 00:52:31,410 --> 00:52:35,380 Así que esto debe ser un poco familiar. 1121 00:52:35,380 --> 00:52:41,760 Así que esta es una forma simple de HTML que tiene un nombre de entrada de hola. 1122 00:52:41,760 --> 00:52:43,820 Y vemos que tenemos nuestro método de GET. 1123 00:52:43,820 --> 00:52:47,430 Y si recordamos de nuestra p-set, cuando se presente esta forma, 1124 00:52:47,430 --> 00:52:58,130 envía una matriz llamada $ _GET que tiene todos estos insumos o variables de 1125 00:52:58,130 --> 00:53:00,490 la forma que debe estar manipulado en nuestro PHP. 1126 00:53:00,490 --> 00:53:03,320 Así, en este caso, el usuario pondría en su nombre. 1127 00:53:03,320 --> 00:53:04,370 Sostienen que. 1128 00:53:04,370 --> 00:53:07,810 Y vemos que tenemos un poco de variedad aquí. 1129 00:53:07,810 --> 00:53:09,080 Tenemos nuestra gama GET. 1130 00:53:09,080 --> 00:53:11,510 Y estamos accediendo el nombre. 1131 00:53:11,510 --> 00:53:15,070 >> Así que dice, está bien, dame el valor que está asociada con el nombre, 1132 00:53:15,070 --> 00:53:16,550 nombrar a ser la clave aquí. 1133 00:53:16,550 --> 00:53:21,400 Y que los mapas directamente a lo que dijimos nuestro nombre de entrada es. 1134 00:53:21,400 --> 00:53:28,960 Así que esto le estaba dando la clave de lo va a estar en su arsenal aquí. 1135 00:53:28,960 --> 00:53:31,220 ¿Tiene eso sentido para todo el mundo? 1136 00:53:31,220 --> 00:53:32,070 ¿Sí? 1137 00:53:32,070 --> 00:53:36,240 >> AUDIENCIA: ¿El nombre en GET refieren a la línea morada en [inaudible]? 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: Se refiere a esto aquí. 1139 00:53:37,740 --> 00:53:43,840 Así que este campo aquí, se refiere a este nombre aquí. 1140 00:53:43,840 --> 00:53:47,800 Así que esto podría haber sido nombrado como el número de teléfono, o lo que sea. 1141 00:53:47,800 --> 00:53:51,790 Este nombre dice en realidad, lo que estás llamando este campo? 1142 00:53:51,790 --> 00:53:53,600 ¿Cómo se va a consulte este campo? 1143 00:53:53,600 --> 00:53:57,670 Y este nombre es como en realidad, estamos diciendo este campo se llama nombre. 1144 00:53:57,670 --> 00:53:59,224 Eso es lo que vamos a acceder a él. 1145 00:53:59,224 --> 00:54:02,070 >> AUDIENCIA: ¿Así se siente, nombre de entrada es igual a Bob, y- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: Correcto, entonces usted obtendría Bob ahí abajo. 1147 00:54:04,380 --> 00:54:06,090 Exactamente. 1148 00:54:06,090 --> 00:54:07,800 Todo el mundo cool? 1149 00:54:07,800 --> 00:54:10,990 Muy bien, así que realiza frente POST, estas son las dos formas principales 1150 00:54:10,990 --> 00:54:14,880 que pasamos los datos en una petición HTTP. 1151 00:54:14,880 --> 00:54:17,370 Ustedes deberían haber visto ambos con suerte. 1152 00:54:17,370 --> 00:54:20,940 Así que con GET, la información se hace pasar a través de la URL. 1153 00:54:20,940 --> 00:54:23,490 Así que si alguna vez Google búsquedas, YouTube, 1154 00:54:23,490 --> 00:54:25,130 probablemente notar algo de signo de interrogación. 1155 00:54:25,130 --> 00:54:28,230 Y entonces, todas las palabras que acaba de poner en allí. 1156 00:54:28,230 --> 00:54:31,410 Y POSTE pasa los datos en el cuerpo del mensaje HTTP. 1157 00:54:31,410 --> 00:54:36,922 Así que a diferencia GET, que tipo de cuenta que los datos se oculta para el usuario. 1158 00:54:36,922 --> 00:54:38,630 Pero lo que es realmente importante entender 1159 00:54:38,630 --> 00:54:44,040 es que esto sigue siendo tan inseguro como GET. 1160 00:54:44,040 --> 00:54:48,780 La analogía que me gusta usar es si que tenga su número de cuenta bancaria 1161 00:54:48,780 --> 00:54:52,795 y lo escribes en el exterior de un sobre, que es bastante inseguro. 1162 00:54:52,795 --> 00:54:55,920 Si tuviera que escribir en un pedazo de papel y lo puso dentro del sobre, 1163 00:54:55,920 --> 00:54:58,850 que sigue siendo muy inseguro porque todo lo que tienes que hacer es abrir que hasta 1164 00:54:58,850 --> 00:55:03,480 y mirar el contenido real del mensaje para ver eso. 1165 00:55:03,480 --> 00:55:08,310 Así que esto es "oculto", y la gente le gusta Creo que es seguro, pero no es verdad. 1166 00:55:08,310 --> 00:55:11,000 Y estoy seguro que lo hará Davin entrar en eso más, tal vez. 1167 00:55:11,000 --> 00:55:12,850 Pero es un importante distinción para hacer 1168 00:55:12,850 --> 00:55:15,820 y algo muy bueno para comprender. 1169 00:55:15,820 --> 00:55:19,220 >> Aceptar, SQL, Structured Query Language. 1170 00:55:19,220 --> 00:55:22,220 Todas las cosas que que hemos visto hasta hace poco! 1171 00:55:22,220 --> 00:55:25,400 Así que es básicamente diseñado, obviamente, para la gestión de datos. 1172 00:55:25,400 --> 00:55:30,560 Ustedes tenían mucha experiencia con esto en sus tablas con PHP MyAdmin. 1173 00:55:30,560 --> 00:55:34,100 Y hay cuatro consultas comunes que queremos que ustedes sepan. 1174 00:55:34,100 --> 00:55:37,304 Así que no hay actualización, inserción, seleccionar y borrar. 1175 00:55:37,304 --> 00:55:38,970 Así que asegúrate de saber los realmente bien. 1176 00:55:38,970 --> 00:55:40,960 Vamos a ir a través de ellos muy rápido. 1177 00:55:40,960 --> 00:55:44,340 >> Así que actualizar, de verdad, como lo se podría pensar que lo hace, 1178 00:55:44,340 --> 00:55:46,740 sólo actualiza los datos en su base de datos. 1179 00:55:46,740 --> 00:55:48,750 Así que tenemos algún ejemplo aquí. 1180 00:55:48,750 --> 00:55:53,310 Este es el general estructura de una consulta de actualización. 1181 00:55:53,310 --> 00:55:56,150 Así que actualizamos la tabla que estamos hablando. 1182 00:55:56,150 --> 00:56:00,520 Y queremos establecer cierta valores, ciertas columnas 1183 00:56:00,520 --> 00:56:02,600 igual a valores específicos. 1184 00:56:02,600 --> 00:56:07,500 Así que esto sólo actualiza la tabla, el cambio valores en todas las filas de este caso. 1185 00:56:07,500 --> 00:56:13,690 Así que en esta de aquí abajo, una real ejemplo, tenemos insert-- lo siento. 1186 00:56:13,690 --> 00:56:17,630 Eso diapositiva avanzado sin yo me diera cuenta. 1187 00:56:17,630 --> 00:56:22,230 >> Así que esta mesa de actualizaciones configurado col1 igual a Val1 dónde está la casa es igual a "curtidor". 1188 00:56:22,230 --> 00:56:25,300 Lo que éste hace es sólo cambia, sólo 1189 00:56:25,300 --> 00:56:28,130 actualiza estos valores en lugares específicos. 1190 00:56:28,130 --> 00:56:32,300 Así que en este primero, cambia estos valores de todo en su mesa, 1191 00:56:32,300 --> 00:56:32,860 DE ACUERDO? 1192 00:56:32,860 --> 00:56:35,820 Se va a cambiar esta columna para cada entrada única, 1193 00:56:35,820 --> 00:56:37,020 por cada hilera. 1194 00:56:37,020 --> 00:56:40,840 Pero esta donde, usted podría pensar en él como un calificador. 1195 00:56:40,840 --> 00:56:44,020 Así que sólo va a cambiar en lugares muy específicos. 1196 00:56:44,020 --> 00:56:47,840 Así que en p-set siete, cuando tal vez actualizada la cantidad de dinero en efectivo 1197 00:56:47,840 --> 00:56:53,050 que su usuario tenía, probablemente tenía algunos donde ID es igual de ID de sesión, ¿verdad? 1198 00:56:53,050 --> 00:56:55,280 >> Debido a que usted no quiere cambiar la cantidad de dinero en efectivo 1199 00:56:55,280 --> 00:56:57,630 por cada persona que fue el uso de su sitio web. 1200 00:56:57,630 --> 00:57:00,480 Usted quería cambiarlo por uno persona específica, siendo esa persona 1201 00:57:00,480 --> 00:57:02,410 quien estaba usando en ese momento. 1202 00:57:02,410 --> 00:57:04,320 Derecho? 1203 00:57:04,320 --> 00:57:07,510 OK, así que insertar, inserción ciertos valores en las tablas. 1204 00:57:07,510 --> 00:57:11,650 Esto es como cuando estás la creación de un nuevo usuario. 1205 00:57:11,650 --> 00:57:14,240 La estructura general aquí está insertar en cualquier mesa 1206 00:57:14,240 --> 00:57:15,680 estamos hablando. 1207 00:57:15,680 --> 00:57:18,910 Los valores, que son los valores que realmente queremos insertar. 1208 00:57:18,910 --> 00:57:23,060 OK, así como lo vemos aquí, han insertar en la tabla. 1209 00:57:23,060 --> 00:57:27,790 Esto es con columnas específicas sus valores correspondido. 1210 00:57:27,790 --> 00:57:29,940 Así que esto dice, inserto una nueva fila que contiene 1211 00:57:29,940 --> 00:57:33,660 valores val1 y val2 bajo estas columnas específicas. 1212 00:57:33,660 --> 00:57:39,240 >> Así que tal vez sólo quiere llenar a la mitad de las cosas en esta fila. 1213 00:57:39,240 --> 00:57:41,150 Eso es lo que esta parte aquí le permite hacer. 1214 00:57:41,150 --> 00:57:43,280 Te permite en realidad determinar qué parte. 1215 00:57:43,280 --> 00:57:44,244 ¿Sí? 1216 00:57:44,244 --> 00:57:52,150 >> AUDIENCIA: ¿Puede usted sólo [inaudible] celdas de la fila [inaudible]? 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: Si sólo rellene ciertas partes de su fila, 1218 00:57:55,000 --> 00:57:57,480 el resto de las células son sólo vacía. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 Siempre que les permitan estar vacío, no es un problema. 1221 00:58:05,660 --> 00:58:09,570 Si intenta acceder a ellos, es va a volver algún elemento vacío. 1222 00:58:09,570 --> 00:58:13,850 Pero es importante saber que en ciertas mesas, 1223 00:58:13,850 --> 00:58:16,690 Tienen que ser permitido a ser nulo. 1224 00:58:16,690 --> 00:58:18,890 Es posible que haya encontrado con un problema durante su p-set 1225 00:58:18,890 --> 00:58:21,320 porque no dejamos ninguna de sus valores sean nulos. 1226 00:58:21,320 --> 00:58:26,110 Pero usted puede especificar una valor opcional en su mesa. 1227 00:58:26,110 --> 00:58:29,640 >> OK, seleccione, por lo que este es sólo una forma de conseguir 1228 00:58:29,640 --> 00:58:33,790 datos específicos de una tabla en algún identificador que desee. 1229 00:58:33,790 --> 00:58:37,990 Así que seleccione estrella de la tabla donde col es igual a algo sólo significa, 1230 00:58:37,990 --> 00:58:43,820 dame todos los datos asociados donde esta columna específica es cierto. 1231 00:58:43,820 --> 00:58:49,020 Así que la estrella en este caso lo hará devolver toda la fila para usted, ¿de acuerdo? 1232 00:58:49,020 --> 00:58:54,880 >> Y entonces, en este caso, seleccione la estrella de tabla sólo te da toda la tabla. 1233 00:58:54,880 --> 00:58:58,940 Y luego, eliminar, obviamente, sólo borra la fila de la tabla. 1234 00:58:58,940 --> 00:59:01,320 Así que eliminar de la tabla, cualquier mesa que estamos 1235 00:59:01,320 --> 00:59:06,830 referencia, donde algunos específicos identificador o alguna condición es verdadera. 1236 00:59:06,830 --> 00:59:07,720 ¿Sí? 1237 00:59:07,720 --> 00:59:08,700 >> AUDIENCIA: Pregunta. 1238 00:59:08,700 --> 00:59:10,699 ¿Por qué utiliza doble cotizaciones, y si 1239 00:59:10,699 --> 00:59:13,600 hacer comillas simples o dobles cotizaciones, ¿hace alguna diferencia? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: Las comillas dobles o comillas simples no hace una diferencia en SQL. 1241 00:59:18,235 --> 00:59:19,610 Me pareció ver a otra pregunta. 1242 00:59:19,610 --> 00:59:20,814 ¿Sí? 1243 00:59:20,814 --> 00:59:25,070 >> AUDIENCIA: ¿No le afecta lo que consigue 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é entiende usted por escapado de la consulta? 1246 00:59:31,410 --> 00:59:36,870 >> AUDIENCIA: Si alguien tiene un consulta única en forma de-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: Si alguien poner una comilla simple en, 1248 00:59:39,862 --> 00:59:43,560 entonces todo el tiempo que estés desinfección su entrada, entonces no importa. 1249 00:59:43,560 --> 00:59:46,205 Pero si usted está usando un solo cita y usted está incorrectamente 1250 00:59:46,205 --> 00:59:47,914 escapar de sus insumos, entonces sí, necesitan 1251 00:59:47,914 --> 00:59:51,079 poner una comilla simple con el fin de romper su código. si usa comillas dobles, 1252 00:59:51,079 --> 00:59:53,580 que necesitan para poner un doble Citando a romper el código. 1253 00:59:53,580 --> 00:59:56,163 Pero mientras escapas cosas correctamente, no importa. 1254 00:59:56,163 --> 00:59:59,220 Sólo va a traducir para el símbolo correcto de todos modos. 1255 00:59:59,220 --> 01:00:02,332 >> AUDIENCIA: ¿Qué significa escape? 1256 01:00:02,332 --> 01:00:04,040 ALISON: Bueno, como desinfectante y escape. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 El examen que tenemos, el gran XKCD cómico que tire hacia arriba donde usted tiene, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: Es la última diapositiva. 1261 01:00:16,670 --> 01:00:18,500 ALISON: Es la última diapositiva, en realidad? 1262 01:00:18,500 --> 01:00:20,200 Dios mío. 1263 01:00:20,200 --> 01:00:21,780 Allá vamos, perfecto. 1264 01:00:21,780 --> 01:00:27,900 OK, así que básicamente, se puede inyectar algo en esta consulta SQL 1265 01:00:27,900 --> 01:00:30,560 donde se rompe su código, o como David mostró 1266 01:00:30,560 --> 01:00:38,460 en clase, si tenemos alguna sola cita 1 es igual a 1 y si en nuestro código, 1267 01:00:38,460 --> 01:00:41,230 simplemente copiamos directamente que en, y tenemos una comilla simple que termina, 1268 01:00:41,230 --> 01:00:44,740 lo que pasa es que obtenemos alguna expresión que 1269 01:00:44,740 --> 01:00:48,680 evalúa a cierto que lo hará dejar que alguien entre en nuestra base de datos 1270 01:00:48,680 --> 01:00:51,720 y obtener datos que nos no quieren que ellos reciben. 1271 01:00:51,720 --> 01:00:54,240 Así desinfección de las entradas sólo significa asegurándose 1272 01:00:54,240 --> 01:00:57,680 que estamos escapando éstos personajes y designándolos 1273 01:00:57,680 --> 01:01:01,720 como caracteres y no las cosas que se debe permitir 1274 01:01:01,720 --> 01:01:04,990 debe tomarse literalmente como nuestra sentencia SQL. 1275 01:01:04,990 --> 01:01:09,980 >> Así que lo más grande que hemos dicho que ustedes deben estar usando 1276 01:01:09,980 --> 01:01:13,650 eran HTML caracteres especiales, que es algo 1277 01:01:13,650 --> 01:01:15,730 que es posible que desee echar un vistazo a. 1278 01:01:15,730 --> 01:01:17,240 Aceptar, eliminar. 1279 01:01:17,240 --> 01:01:19,450 Los tipos de datos, todo esto será en línea. 1280 01:01:19,450 --> 01:01:23,510 Puesto que hemos dejado 15 minutos, estoy sólo va a ir a la derecha a través de este. 1281 01:01:23,510 --> 01:01:28,500 PHP y SQL, básicamente se trata de sólo tuvimos una función de consulta que 1282 01:01:28,500 --> 01:01:31,520 ayudó a proteger contra estos ataques maliciosos. 1283 01:01:31,520 --> 01:01:33,970 Así que cada vez que utilice consulta, nos aseguramos 1284 01:01:33,970 --> 01:01:36,560 que las cosas fueron desinfectados y otras cosas. 1285 01:01:36,560 --> 01:01:41,070 >> MVC es sólo un paradigma de diseño, así modelo, vista, controlador. 1286 01:01:41,070 --> 01:01:44,200 Es sólo una manera de mantener las cosas agradable y dividido de la misma manera 1287 01:01:44,200 --> 01:01:47,100 que tendemos a factorizar código hacia fuera en funciones. 1288 01:01:47,100 --> 01:01:53,390 Esto es sólo un marco de diseño web que le permite hacer lo mismo. 1289 01:01:53,390 --> 01:01:54,760 Voy a omitir este. 1290 01:01:54,760 --> 01:01:58,530 >> Esto es algo que yo sería súper cómoda con. 1291 01:01:58,530 --> 01:02:01,132 Es un pequeño gran mesa. 1292 01:02:01,132 --> 01:02:03,090 Te da la función ejemplo del modelo. 1293 01:02:03,090 --> 01:02:05,473 Sólo estoy pasando por esto porque yo realmente quieren Davin para poder hablar. 1294 01:02:05,473 --> 01:02:07,140 Si tiene alguna pregunta, por favor siéntase libre. 1295 01:02:07,140 --> 01:02:07,931 Voy a estar aquí después. 1296 01:02:07,931 --> 01:02:10,360 Solo tiene que venir a hablar conmigo. 1297 01:02:10,360 --> 01:02:13,380 Con eso, tenemos estados HTTP. 1298 01:02:13,380 --> 01:02:16,270 Y Davin va a soplar a través de este en 15 minutos. 1299 01:02:16,270 --> 01:02:17,560 Esto va a ser grande. 1300 01:02:17,560 --> 01:02:18,893 >> DAVIN: OK. 1301 01:02:18,893 --> 01:02:20,312 Uh, su micrófono? 1302 01:02:20,312 --> 01:02:22,210 Sí. 1303 01:02:22,210 --> 01:02:23,336 Lo siento. 1304 01:02:23,336 --> 01:02:24,460 ALISON: Manera de prepararse. 1305 01:02:24,460 --> 01:02:25,335 DAVIN: No, estoy listo. 1306 01:02:25,335 --> 01:02:25,860 Estoy listo. 1307 01:02:25,860 --> 01:02:28,790 Vamos a hacer esto. 1308 01:02:28,790 --> 01:02:29,290 Está listo. 1309 01:02:29,290 --> 01:02:30,041 DE ACUERDO. 1310 01:02:30,041 --> 01:02:30,540 Lo siento. 1311 01:02:30,540 --> 01:02:31,664 Derramé café en mí mismo. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 No sé si estoy más malestar que me veo tonto, 1314 01:02:38,210 --> 01:02:40,600 o que yo no tengo el café más. 1315 01:02:40,600 --> 01:02:44,480 De todos modos, sólo un anuncio rápido sobre la hoja que ustedes tienen. 1316 01:02:44,480 --> 01:02:47,994 Así que esta hoja que ustedes tienen no es el funcionario lo que hay en el cuestionario. 1317 01:02:47,994 --> 01:02:49,660 Este es el oficial de lo que hay en el cuestionario. 1318 01:02:49,660 --> 01:02:52,520 Además, en el sitio web, le decimos que, OK, esto estará en el cuestionario. 1319 01:02:52,520 --> 01:02:55,020 Así que en la pequeña hoja de trucos que tiene, no oficial. 1320 01:02:55,020 --> 01:02:56,690 Y hay errores en ella. 1321 01:02:56,690 --> 01:03:01,490 Así que mejor no sólo tiene que utilizar ciegamente. 1322 01:03:01,490 --> 01:03:04,390 Así que sí, eso es todo. 1323 01:03:04,390 --> 01:03:05,980 Así que vamos a entrar en esto muy rápido. 1324 01:03:05,980 --> 01:03:07,420 >> Así estados HTTP. 1325 01:03:07,420 --> 01:03:10,430 Entonces, ¿qué sucede cuando el página web, todo está bien. 1326 01:03:10,430 --> 01:03:11,144 Aceptar Todo está bien. 1327 01:03:11,144 --> 01:03:13,310 Todo vuelve a usted de la manera que lo desee. 1328 01:03:13,310 --> 01:03:15,370 Usted obtiene un 200 OK. 1329 01:03:15,370 --> 01:03:19,250 301, donde hemos visto que 301 antes? 1330 01:03:19,250 --> 01:03:20,890 Espera, ¿qué pasa? 1331 01:03:20,890 --> 01:03:23,250 Lo siento. 1332 01:03:23,250 --> 01:03:24,980 Vimos conferencia estaño i durante seguridad. 1333 01:03:24,980 --> 01:03:30,690 Así que durante la seguridad, por lo que si David tecleó http y luego contratar cs50.net, 1334 01:03:30,690 --> 01:03:31,940 vas a ver 301 se movió. 1335 01:03:31,940 --> 01:03:32,440 ¿Por qué? 1336 01:03:32,440 --> 01:03:35,570 Debido a que va a redirigir usted automáticamente a nuestro HTTPS. 1337 01:03:35,570 --> 01:03:38,649 >> Así que 301 se trasladaron, sólo es básicamente una redirección. 1338 01:03:38,649 --> 01:03:40,190 Y usted puede pensar en ello como este. 1339 01:03:40,190 --> 01:03:43,790 Cualquiera de los estados que comienzan con de 2, esos son como, OK, todo está bien. 1340 01:03:43,790 --> 01:03:46,530 Cualquiera de los estados que se inician con 3, esos son redirección. 1341 01:03:46,530 --> 01:03:49,571 Los estados que comienzan con 4, que los medios hay algún tipo de error de cliente. 1342 01:03:49,571 --> 01:03:52,440 Los estados que comienzan con 5, eso es algún tipo de error en el servidor. 1343 01:03:52,440 --> 01:03:54,680 Así que tipo de rompes los estados así. 1344 01:03:54,680 --> 01:03:59,120 Así que 304 no sin modificar, por lo que en su server.c p-sets, así que digamos que usted 1345 01:03:59,120 --> 01:04:00,600 cat.html cargado. 1346 01:04:00,600 --> 01:04:03,360 Todo vuelve, usted consigue 200s, OK, genial. 1347 01:04:03,360 --> 01:04:04,540 >> Digamos que usted es refrescado. 1348 01:04:04,540 --> 01:04:07,310 Bueno, dentro de ese cat.html, tienes un JPEG. 1349 01:04:07,310 --> 01:04:09,520 Bueno, eso no es JPEG va a poner a cargar. 1350 01:04:09,520 --> 01:04:12,140 Usted no va a publicar otro Solicitud GET al servidor, 1351 01:04:12,140 --> 01:04:13,980 y luego obtener toda esa información. 1352 01:04:13,980 --> 01:04:17,560 Se va a simplemente ser: esa imagen es va a ser almacenado en caché en el equipo. 1353 01:04:17,560 --> 01:04:19,540 Y para que la imagen será un 304. 1354 01:04:19,540 --> 01:04:20,720 Así que no ha sido modificado. 1355 01:04:20,720 --> 01:04:24,600 Si a continuación, cerrar, claro galletas y, a continuación, renueve 1356 01:04:24,600 --> 01:04:27,490 y tratar de cargar la página de nuevo, vas a ver 200s. 1357 01:04:27,490 --> 01:04:28,910 No vas a ver que 304. 1358 01:04:28,910 --> 01:04:32,340 >> 400, solicitud incorrecta, bienes rápido, como si 1359 01:04:32,340 --> 01:04:34,880 iban a enviar una JSON objeto al servidor 1360 01:04:34,880 --> 01:04:38,090 y su objeto JSON era incorrecta, verás algo así. 1361 01:04:38,090 --> 01:04:39,000 403, prohibido. 1362 01:04:39,000 --> 01:04:40,330 ¿Cuándo ver a un prohibido? 1363 01:04:40,330 --> 01:04:41,394 Probablemente Probablemente? 1364 01:04:41,394 --> 01:04:42,060 AUDIENCIA: Chmod. 1365 01:04:42,060 --> 01:04:42,950 DAVIN: Chmod, sí. 1366 01:04:42,950 --> 01:04:44,730 Así que usted no ha establecido permisos correctamente. 1367 01:04:44,730 --> 01:04:45,577 404, no hay ningun comentario. 1368 01:04:45,577 --> 01:04:46,410 Es que no hay. 1369 01:04:46,410 --> 01:04:48,670 Así que si usted escribe la URL equivocado. 1370 01:04:48,670 --> 01:04:53,500 500, error interno del servidor, el servidor probablemente no se configuró correctamente. 1371 01:04:53,500 --> 01:04:56,260 Algo no en su final, pero algo en el lado del servidor. 1372 01:04:56,260 --> 01:04:57,240 Y 503? 1373 01:04:57,240 --> 01:04:59,502 Mucha gente vio 503s en la última p-set. 1374 01:04:59,502 --> 01:05:00,460 ¿Cuándo ocurrirá? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 Escuché susurros. 1377 01:05:05,660 --> 01:05:07,767 >> AUDIENCIA: Cuando Google decide que eres un robot. 1378 01:05:07,767 --> 01:05:10,350 DAVIN: Sí, cuando Google decide usted es un robot, se obtiene 503s. 1379 01:05:10,350 --> 01:05:11,560 Así que eso es una sobrecarga. 1380 01:05:11,560 --> 01:05:14,620 Si ha solicitado desde el servidor demasiado, por lo general es temporal. 1381 01:05:14,620 --> 01:05:15,560 Y la mayoría de ustedes cuentan de él. 1382 01:05:15,560 --> 01:05:16,185 Así que viste 503. 1383 01:05:16,185 --> 01:05:19,282 Es posible que haya tomado un poco ruptura, entonces los 503s fueron, 1384 01:05:19,282 --> 01:05:20,490 y todo estaba bien. 1385 01:05:20,490 --> 01:05:26,640 >> GABE: Muy rápido, cuando se deje ustedes 500 en conjunto, probablemente, este último problema? 1386 01:05:26,640 --> 01:05:27,954 ¿Sí? 1387 01:05:27,954 --> 01:05:30,906 >> AUDIENCIA: Por lo general, si el servidor tiene un archivo extraviado 1388 01:05:30,906 --> 01:05:34,650 o [inaudible] su máquina [inaudible]. 1389 01:05:34,650 --> 01:05:38,870 >> GABE: Por lo que podría ser una configuración problema en su PHP en su servidor. 1390 01:05:38,870 --> 01:05:42,250 Pero podría ser algo como un punto y coma que su olvidó. 1391 01:05:42,250 --> 01:05:44,130 Si estás escribiendo PHP, una sintaxis incorrecta 1392 01:05:44,130 --> 01:05:46,000 podría conseguirle algo así. 1393 01:05:46,000 --> 01:05:46,960 DE ACUERDO? 1394 01:05:46,960 --> 01:05:48,610 >> DAVIN: Cool. 1395 01:05:48,610 --> 01:05:51,180 ¿Quieres que haga sólo hasta 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 ¿Entonces cuál es el DOM? 1399 01:05:54,230 --> 01:05:55,290 ¿Qué significa para DOM? 1400 01:05:55,290 --> 01:05:56,990 >> AUDIENCIA: modelo de objetos de documento. 1401 01:05:56,990 --> 01:05:57,490 DAVIN: Nice. 1402 01:05:57,490 --> 01:06:00,775 ¿Y por qué nos gusta? 1403 01:06:00,775 --> 01:06:02,670 Impresionante. 1404 01:06:02,670 --> 01:06:06,651 Derecho, por lo que sólo nos permite el acceso el HTML, acceda a nuestra página muy rápidamente. 1405 01:06:06,651 --> 01:06:07,150 ¿Por qué? 1406 01:06:07,150 --> 01:06:09,980 Debido a que estamos tratando a nuestro página, tratando a nuestros etiquetas HTML, 1407 01:06:09,980 --> 01:06:11,730 tratar todo como si fueran objetos. 1408 01:06:11,730 --> 01:06:13,710 Si los estamos tratando como son objetos, entonces, ¿qué podemos hacer? 1409 01:06:13,710 --> 01:06:15,210 Bueno, podemos llamar a funciones en ellos. 1410 01:06:15,210 --> 01:06:16,460 Y esto es importante por qué? 1411 01:06:16,460 --> 01:06:19,200 Bueno, pues vamos a utilizar JavaScript para actualizar nuestro HTML, 1412 01:06:19,200 --> 01:06:20,500 actualizar estos objetos. 1413 01:06:20,500 --> 01:06:23,869 Así que si los tratamos como objetos, entonces podemos llamar a funciones en ellos. 1414 01:06:23,869 --> 01:06:26,660 Voy a entrar en esto un poco más cuando voy a JavaScript 1415 01:06:26,660 --> 01:06:30,510 pero todos ustedes han visto como document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 Así que el documento es su elemento, consigue elemento de identificación, 1417 01:06:32,870 --> 01:06:35,087 por lo que vamos a buscar por alguna identificación en una etiqueta HTML. 1418 01:06:35,087 --> 01:06:36,920 Y luego, puede hacerlo algo más que eso. 1419 01:06:36,920 --> 01:06:40,089 Por ejemplo, como document.body, entonces usted puede añadir niño. 1420 01:06:40,089 --> 01:06:41,630 Así que vas a encontrar el documento. 1421 01:06:41,630 --> 01:06:42,340 Usted tiene el documento. 1422 01:06:42,340 --> 01:06:43,629 Vas a encontrar el cuerpo. 1423 01:06:43,629 --> 01:06:44,420 Usted encontró el cuerpo. 1424 01:06:44,420 --> 01:06:46,545 Y entonces, vas a llamar a alguna función en él. 1425 01:06:46,545 --> 01:06:50,312 Así anexar niño, y puede anexar algo de HTML en el extremo interior de su cuerpo. 1426 01:06:50,312 --> 01:06:52,520 Así que, básicamente, no eres más que tratarla como un objeto. 1427 01:06:52,520 --> 01:06:54,515 Usted está tratando HTML etiquetas como un objeto. 1428 01:06:54,515 --> 01:06:57,071 Y hace que sea muy fácil y rápido para ir a través de ellos. 1429 01:06:57,071 --> 01:06:59,070 Pero también le permite para llamar a funciones en ellos 1430 01:06:59,070 --> 01:07:04,410 así que usted puede manipular y cambiar los elementos. 1431 01:07:04,410 --> 01:07:10,162 >> GABE: Teniendo en cuenta esto, ¿por qué es tan JavaScript un lenguaje agradable para interactuar con HTML? 1432 01:07:10,162 --> 01:07:12,870 Las probabilidades son, cuando las personas elegían el idioma del navegador, 1433 01:07:12,870 --> 01:07:14,990 por el lado del cliente, JavaScript es realmente agradable, 1434 01:07:14,990 --> 01:07:16,765 que es muy bueno en la manipulación de objetos. 1435 01:07:16,765 --> 01:07:20,620 Y los objetos son una especie de los objetos que aparecen en el HTML, 1436 01:07:20,620 --> 01:07:23,940 así que es muy fácil para JavaScript hacer ese tipo de manipulación. 1437 01:07:23,940 --> 01:07:24,440 DAVIN: Nice. 1438 01:07:24,440 --> 01:07:25,670 Así que aquí es sólo un ejemplo. 1439 01:07:25,670 --> 01:07:29,020 Así que creo que en el concurso del año pasado, o tal vez hace dos años, 1440 01:07:29,020 --> 01:07:30,840 Le ha pedido para crear un árbol. 1441 01:07:30,840 --> 01:07:32,660 Así que esto es exactamente lo que hace. 1442 01:07:32,660 --> 01:07:34,255 Así se empieza con el documento. 1443 01:07:34,255 --> 01:07:36,130 Y luego que, básicamente, basta con ver las etiquetas. 1444 01:07:36,130 --> 01:07:38,100 Así que si nos fijamos, nos comenzar con una etiqueta HTML. 1445 01:07:38,100 --> 01:07:41,660 Y entonces, se obtiene pistas sobre cómo a hacer esto en base a la sangría. 1446 01:07:41,660 --> 01:07:43,870 Tan amable jefe de sucursales fuera. 1447 01:07:43,870 --> 01:07:46,242 Cabeza dentro, tenemos otra etiqueta de título. 1448 01:07:46,242 --> 01:07:47,450 Así pues, tenemos una etiqueta de título. 1449 01:07:47,450 --> 01:07:49,760 Y dentro de eso, tenemos un poco de cuerda. 1450 01:07:49,760 --> 01:07:52,210 Y así representamos una cadena en un círculo. 1451 01:07:52,210 --> 01:07:54,010 Y todas las etiquetas están en las plazas. 1452 01:07:54,010 --> 01:07:56,270 >> Y si nos fijamos, si pensar en esto como un árbol, 1453 01:07:56,270 --> 01:07:58,730 y digamos que es HTML un padre, entonces cabeza y el cuerpo 1454 01:07:58,730 --> 01:07:59,772 van a ser hermanos. 1455 01:07:59,772 --> 01:08:01,813 Ambos van a ser hijos de ese padre. 1456 01:08:01,813 --> 01:08:03,620 Así que porque son ambos hermanos, que son 1457 01:08:03,620 --> 01:08:06,590 va a ser una especie de lado entre sí en nuestro modelo de árbol. 1458 01:08:06,590 --> 01:08:08,590 Y luego, que, básicamente, hacer exactamente lo mismo. 1459 01:08:08,590 --> 01:08:13,512 Así que no es difícil, pero hemos pedido este tipo de preguntas antes de la prueba. 1460 01:08:13,512 --> 01:08:15,220 GABE: ¿Alguien tiene preguntas hasta ahora? 1461 01:08:15,220 --> 01:08:16,357 ¿Es bueno? 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 bien, las cosas buenas. 1465 01:08:21,600 --> 01:08:24,069 Así JavaScript, lo que es JavaScript? 1466 01:08:24,069 --> 01:08:28,370 Bueno, JavaScript es-- es complicado, pero estos 1467 01:08:28,370 --> 01:08:30,727 son algunos de los aspectos más destacados que usted debe tener en cuenta. 1468 01:08:30,727 --> 01:08:31,810 En primer lugar, está vagamente escribe. 1469 01:08:31,810 --> 01:08:33,529 Qué significa eso? 1470 01:08:33,529 --> 01:08:35,596 Así que PHP era-- sí, ¿qué pasa? 1471 01:08:35,596 --> 01:08:39,854 >> AUDIENCIA: Usted no tiene que explícitamente Estado del tipo de variable que es. 1472 01:08:39,854 --> 01:08:40,479 DAVIN: Perfecto. 1473 01:08:40,479 --> 01:08:43,270 Así que él dijo que usted no tiene que explicitar el tipo de variable. 1474 01:08:43,270 --> 01:08:44,160 Eso es exactamente correcto. 1475 01:08:44,160 --> 01:08:49,700 Así que en C, si tuviera int i es igual a 50, luego en PHP, es como este, $ i, 1476 01:08:49,700 --> 01:08:50,550 es igual a 50. 1477 01:08:50,550 --> 01:08:54,319 Luego, en JavaScript ¿cuál sería la llamada? 1478 01:08:54,319 --> 01:08:55,260 Var, ¿verdad? 1479 01:08:55,260 --> 01:08:56,566 Sería como var i es igual a 50. 1480 01:08:56,566 --> 01:08:58,649 Pero usted no tiene que ser como, OK, esto es un int. 1481 01:08:58,649 --> 01:09:00,350 OK, esto es una cadena. 1482 01:09:00,350 --> 01:09:01,731 No hay necesidad de hacer eso. 1483 01:09:01,731 --> 01:09:02,939 Es un lenguaje interpretado. 1484 01:09:02,939 --> 01:09:04,904 Entonces, ¿qué significa eso? 1485 01:09:04,904 --> 01:09:06,340 >> AUDIENCIA: No compilado. 1486 01:09:06,340 --> 01:09:10,470 >> DAVIN: ¿Qué no compila significa? 1487 01:09:10,470 --> 01:09:11,392 ¿Sí? 1488 01:09:11,392 --> 01:09:15,336 >> AUDIENCIA: Usted no tiene reestructurar el código 1489 01:09:15,336 --> 01:09:18,294 para que esté listo para el equipo para ejecutarlo. 1490 01:09:18,294 --> 01:09:23,144 Es sólo toma en el momento de la ejecución y el ordenador [inaudible]. 1491 01:09:23,144 --> 01:09:25,560 DAVIN: Sí, por lo que va a pasar a través de un intérprete. 1492 01:09:25,560 --> 01:09:26,750 Pero estás en lo cierto. 1493 01:09:26,750 --> 01:09:28,319 Así que usted nunca va compilarlo, ¿verdad? 1494 01:09:28,319 --> 01:09:30,399 Cuando usted estaba haciendo su PHP y JavaScript, 1495 01:09:30,399 --> 01:09:31,365 nunca llamaste compilación. 1496 01:09:31,365 --> 01:09:33,779 Nunca se llama algo así como hacer ni nada de eso. 1497 01:09:33,779 --> 01:09:34,800 Eso es porque se interpreta. 1498 01:09:34,800 --> 01:09:37,319 Así que cada vez que pasa por el navegador, que pasa a través de un intérprete. 1499 01:09:37,319 --> 01:09:40,370 Y eso va a interpretarlo justo a tiempo real de inmediato para usted. 1500 01:09:40,370 --> 01:09:43,770 ¿Cuáles son algunos aspectos positivos y negativos a tener un lenguaje interpretado 1501 01:09:43,770 --> 01:09:45,258 y que tiene un lenguaje compilado? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 Así compiling-- sí, ¿qué pasa? 1504 01:09:50,540 --> 01:09:52,444 >> AUDIENCIA: Interpretado es más lento. 1505 01:09:52,444 --> 01:09:53,319 DAVIN: ¿En qué sentido? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> AUDIENCIA: Después compilar, usted no tiene 1508 01:09:59,091 --> 01:10:04,400 hacer ningún paso adicional para ejecutar que, mientras que este [inaudible]. 1509 01:10:04,400 --> 01:10:05,570 >> DAVIN: Derecha, perfecto. 1510 01:10:05,570 --> 01:10:08,386 Así que lo que ha dicho es básicamente que la compilación, 1511 01:10:08,386 --> 01:10:10,760 al compilar, usted tiene una gran cantidad de costos iniciales, ¿verdad? 1512 01:10:10,760 --> 01:10:11,760 Vas a compilarlo. 1513 01:10:11,760 --> 01:10:13,750 Pero después de compilarlo, el compilador va a optimizarlo. 1514 01:10:13,750 --> 01:10:14,840 Va a ser rápido. 1515 01:10:14,840 --> 01:10:16,170 Se va a básicamente ser lo más rápido que puede ser. 1516 01:10:16,170 --> 01:10:18,830 Con la interpretación, nunca tener que costo inicial. 1517 01:10:18,830 --> 01:10:22,260 Más bien, va a ser un poco más lento cada vez que interpretas. 1518 01:10:22,260 --> 01:10:24,940 Y vas a tener que interpretarla cada vez. 1519 01:10:24,940 --> 01:10:27,114 Así que en lugar de tener este un costo de tiempo, ahora que eres 1520 01:10:27,114 --> 01:10:29,530 va a tener que interpretarlo cada vez que la página hace. 1521 01:10:29,530 --> 01:10:31,890 >> Así que los intérpretes son buenas porque usted no tiene que compilarlo, 1522 01:10:31,890 --> 01:10:33,980 pero son malos en que cada el tiempo se carga la página, es 1523 01:10:33,980 --> 01:10:35,771 va a tener que interpretar esta JavaScript. 1524 01:10:35,771 --> 01:10:40,520 Y se va a correr un poco más lento que si usted fuera a compilarlo. 1525 01:10:40,520 --> 01:10:43,044 Permite communicate-- Oh, espera. 1526 01:10:43,044 --> 01:10:44,960 Se utiliza para manipular el el contenido y la apariencia. 1527 01:10:44,960 --> 01:10:46,043 Acabamos de hablar sobre eso. 1528 01:10:46,043 --> 01:10:47,250 Utiliza el DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, vamos a entrar en AJAX en un poco. 1530 01:10:49,930 --> 01:10:51,520 Y entonces, es el lado del cliente. 1531 01:10:51,520 --> 01:10:53,110 Así que PHP es del lado del servidor. 1532 01:10:53,110 --> 01:10:54,360 JavaScript es el lado del cliente. 1533 01:10:54,360 --> 01:10:57,780 ¿Qué son positivos a eso? 1534 01:10:57,780 --> 01:10:58,280 Dice ella. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 Es más rápido, ¿verdad? 1537 01:11:02,780 --> 01:11:05,282 Porque usted no tiene a-- es más rápido. 1538 01:11:05,282 --> 01:11:07,490 Usted no tiene que comunicar con algún otro dispositivo. 1539 01:11:07,490 --> 01:11:08,790 Si no eres más que en su cliente, nunca estás 1540 01:11:08,790 --> 01:11:11,280 va a tener que ir a ver lo que hay en el servidor 1541 01:11:11,280 --> 01:11:13,150 y luego informar o algo por el estilo. 1542 01:11:13,150 --> 01:11:15,410 Así lado del cliente tiende a ser un poco más rápido. 1543 01:11:15,410 --> 01:11:17,910 >> GABE: Sí, pero esto no significa que PHP es 1544 01:11:17,910 --> 01:11:20,440 más rápido que JavaScript ni nada por el estilo. 1545 01:11:20,440 --> 01:11:23,270 Corren un poco en la misma velocidad, ya que ambos son 1546 01:11:23,270 --> 01:11:24,490 lenguajes interpretados. 1547 01:11:24,490 --> 01:11:26,680 Lo que es lento aquí está la petición. 1548 01:11:26,680 --> 01:11:28,870 Así que en realidad estás pasando todo el camino a Brasil 1549 01:11:28,870 --> 01:11:31,460 para obtener alguna información que vive allí. 1550 01:11:31,460 --> 01:11:34,590 Pero PHP y JavaScript, que tipo de correr en la misma velocidad. 1551 01:11:34,590 --> 01:11:37,930 No es que uno es más rápido que el otro. 1552 01:11:37,930 --> 01:11:40,600 Esto, también, pregunta con trampa aquí. 1553 01:11:40,600 --> 01:11:47,338 Así JavaScript nunca se convierte en código de máquina, verdadero o falso? 1554 01:11:47,338 --> 01:11:48,590 >> AUDIENCIA: Falso. 1555 01:11:48,590 --> 01:11:49,090 GABE: Falso. 1556 01:11:49,090 --> 01:11:51,298 Tiene que convertirse en máquina código porque el código máquina es 1557 01:11:51,298 --> 01:11:53,210 lo único que la máquina entiende. 1558 01:11:53,210 --> 01:11:55,800 A pesar de que no está compilado, todavía se convierte en código de máquina 1559 01:11:55,800 --> 01:11:59,120 porque el intérprete es sólo un programa que va línea por línea 1560 01:11:59,120 --> 01:12:02,170 y transforma esa línea en algo que la computadora entiende. 1561 01:12:02,170 --> 01:12:02,825 DE ACUERDO? 1562 01:12:02,825 --> 01:12:03,325 Fresco. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> DAVIN: Esta es sólo una muy básica hola programa JavaScript mundo. 1565 01:12:12,890 --> 01:12:15,590 Así que no sé si: usted ha visto esto. 1566 01:12:15,590 --> 01:12:17,630 Pero sólo tienes HTML aquí. 1567 01:12:17,630 --> 01:12:21,020 Y en lugar de tener que poner el código JavaScript en las etiquetas de script, 1568 01:12:21,020 --> 01:12:22,810 por lo que normalmente lo puso en la cabeza. 1569 01:12:22,810 --> 01:12:24,030 Usted tiene etiquetas de script. 1570 01:12:24,030 --> 01:12:24,870 Se le caen allí. 1571 01:12:24,870 --> 01:12:28,350 Todo lo que hemos hecho aquí es que hemos vinculado en-- así que nos hemos vinculado en un archivo JavaScript 1572 01:12:28,350 --> 01:12:29,137 como este. 1573 01:12:29,137 --> 01:12:30,470 Y que todos ustedes han hecho esto, ¿verdad? 1574 01:12:30,470 --> 01:12:34,740 Así que cuando lo estaba utilizando jQuery y underscore.js en la última p-set, 1575 01:12:34,740 --> 01:12:38,700 usted no tiene un montón de código en sus etiquetas de script, en su cabeza. 1576 01:12:38,700 --> 01:12:41,415 Usted podría hacer eso, pero en su lugar estás vinculándolo en. 1577 01:12:41,415 --> 01:12:43,540 Y va a asociar en tal como lo hace con CSS. 1578 01:12:43,540 --> 01:12:50,186 Por lo tanto, sólo hace que sea más fácil de leer por lo su código no es como 1.000 líneas de largo 1579 01:12:50,186 --> 01:12:52,310 con un montón de funciones que es posible que no esté utilizando. 1580 01:12:52,310 --> 01:12:53,518 >> En su lugar, simplemente enlazarlo en. 1581 01:12:53,518 --> 01:12:55,050 Se compartimenta ella. 1582 01:12:55,050 --> 01:13:00,110 Es como escribir algún fichero de cabecera, y a continuación, incluido el archivo de cabecera en C. 1583 01:13:00,110 --> 01:13:01,620 Piense en ello como este. 1584 01:13:01,620 --> 01:13:02,680 Entonces, ¿qué hace esto? 1585 01:13:02,680 --> 01:13:04,560 Bueno, esto va a funcionar. 1586 01:13:04,560 --> 01:13:05,410 Se va a alertar. 1587 01:13:05,410 --> 01:13:08,020 Así que vas a conseguir un poco pop-up llamada hola mundo. 1588 01:13:08,020 --> 01:13:11,420 Una pregunta rápida, apenas prueba de cordura, por lo que se ve aquí en el cuerpo, 1589 01:13:11,420 --> 01:13:13,160 decir cuerpo, HTML aquí. 1590 01:13:13,160 --> 01:13:14,080 ¿Qué viene primero? 1591 01:13:14,080 --> 01:13:16,864 ¿Veo cuerpo, HTML aquí, o qué aparece la alerta en primer lugar? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> AUDIENCIA: Alerta. 1594 01:13:20,820 --> 01:13:21,470 >> DAVIN: Correcto. 1595 01:13:21,470 --> 01:13:22,110 Dice alerta. 1596 01:13:22,110 --> 01:13:22,610 ¿Por qué? 1597 01:13:22,610 --> 01:13:24,470 >> AUDIENCIA: Porque usted ir de arriba a abajo. 1598 01:13:24,470 --> 01:13:25,600 >> DAVIN: Sí. 1599 01:13:25,600 --> 01:13:26,100 Perfecto. 1600 01:13:26,100 --> 01:13:29,207 Por lo que dice, que vaya de arriba inferior, que es absolutamente correcto. 1601 01:13:29,207 --> 01:13:30,790 Usted va a ir de arriba a abajo. 1602 01:13:30,790 --> 01:13:34,790 Y en JavaScript, jQuery, usted tiene una función que es onload similares, o listo, 1603 01:13:34,790 --> 01:13:38,030 y que dice, OK, espere hasta todo esto HTML se ha cargado. 1604 01:13:38,030 --> 01:13:39,580 Y luego, llamar al JavaScript. 1605 01:13:39,580 --> 01:13:42,190 Porque no tenemos eso aquí, el Lo primero que va a pasar 1606 01:13:42,190 --> 01:13:43,920 se va a ir de arriba a abajo. 1607 01:13:43,920 --> 01:13:46,310 Se va a golpear de que JS llamar, que va a alertar. 1608 01:13:46,310 --> 01:13:49,510 Después de que hace clic en Aceptar, que alerta desaparece. 1609 01:13:49,510 --> 01:13:53,600 A continuación se va a mostrar que el cuerpo HTML aquí. 1610 01:13:53,600 --> 01:13:54,590 Niza. 1611 01:13:54,590 --> 01:14:00,880 >> Aceptar, por lo que sólo muy rápido, la escritura en JavaScript es super rápido. 1612 01:14:00,880 --> 01:14:02,710 Para declarar un nombre variable var. 1613 01:14:02,710 --> 01:14:07,070 Así que en C, tiene int i, usted tiene para declarar qué tipo de tipo que es. 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 Ya hablamos de esto. 1617 01:14:09,630 --> 01:14:11,020 Muy bien, vamos a ir. 1618 01:14:11,020 --> 01:14:12,510 >> Loops, lo mismo. 1619 01:14:12,510 --> 01:14:14,230 Es lo mismo. 1620 01:14:14,230 --> 01:14:18,165 Las declaraciones de funciones, por lo que al igual que lo has visto en C. 1621 01:14:18,165 --> 01:14:21,290 Lo único diferente es así que cuando se llega a otros lenguajes de programación, 1622 01:14:21,290 --> 01:14:24,780 como cuando se toma 51 próximo semestre y que estás haciendo con ocaml, 1623 01:14:24,780 --> 01:14:26,690 usted puede ocuparse de funciones anónimas. 1624 01:14:26,690 --> 01:14:28,240 Así que eso es exactamente lo que tenemos aquí. 1625 01:14:28,240 --> 01:14:31,560 Así que usted quiere poner en suma, algún tipo de valor de la suma. 1626 01:14:31,560 --> 01:14:33,870 Pero sólo se podría estar haciendo una vez. 1627 01:14:33,870 --> 01:14:37,310 Por lo que no quieras llamarlo función suma, darle una declaración de la función. 1628 01:14:37,310 --> 01:14:39,830 En cambio, sólo lo utilizan como una función anónima. 1629 01:14:39,830 --> 01:14:42,469 Y ya has visto esta mucho. 1630 01:14:42,469 --> 01:14:44,510 Usted verá un ejemplo de esto en un par de diapositivas. 1631 01:14:44,510 --> 01:14:45,597 Sí, ya veremos. 1632 01:14:45,597 --> 01:14:46,430 GABE: Buena pregunta. 1633 01:14:46,430 --> 01:14:50,660 ¿Cuándo podría querer usar una función anónima aquí? 1634 01:14:50,660 --> 01:14:54,111 Básicamente, cuando quieres algo, como un evento, a pasar. 1635 01:14:54,111 --> 01:14:55,860 Así que cuando el ratón está hacer clic, por ejemplo, 1636 01:14:55,860 --> 01:14:57,790 Quieres un poco de función llamado. 1637 01:14:57,790 --> 01:15:00,570 Así se pasa al evento manipulador, se pasa al evento, 1638 01:15:00,570 --> 01:15:02,870 tipo de, la función que desea ser llamado. 1639 01:15:02,870 --> 01:15:04,710 Y lo que está pasando es como, al final 1640 01:15:04,710 --> 01:15:08,757 del día, sólo un puntero a que la instrucción, a la función. 1641 01:15:08,757 --> 01:15:11,090 Así que no es como si estuvieras pasando todo el código, tal como 1642 01:15:11,090 --> 01:15:12,173 un puntero a la función. 1643 01:15:12,173 --> 01:15:17,871 Y entonces, cuando alguien hace clic en el ratón, a continuación, que se llama a la función. 1644 01:15:17,871 --> 01:15:22,340 >> DAVIN: matrices, por lo que tener una declaración de matriz. 1645 01:15:22,340 --> 01:15:23,990 A continuación, una matriz para poner las cosas en. 1646 01:15:23,990 --> 01:15:25,769 Muy rápido, lo que será esta imprimir? 1647 01:15:25,769 --> 01:15:27,060 ¿Cuál será el tercer elemento será? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> AUDIENCIA: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> DAVIN: Derecho, que sería "JS". 1651 01:15:33,940 --> 01:15:35,760 Espere, volver. 1652 01:15:35,760 --> 01:15:37,100 ¿Cuál es la longitud? 1653 01:15:37,100 --> 01:15:38,117 >> AUDIENCIA: Tres. 1654 01:15:38,117 --> 01:15:38,950 DAVIN: tres, ¿no? 1655 01:15:38,950 --> 01:15:40,210 Exactamente lo que usted piensa. 1656 01:15:40,210 --> 01:15:42,072 Bien, ahora ir. 1657 01:15:42,072 --> 01:15:43,530 Arrays, puede añadir cosas a ellos. 1658 01:15:43,530 --> 01:15:45,395 Así que usted puede ir más allá sus límites iniciales. 1659 01:15:45,395 --> 01:15:46,740 Sólo es algo a tener en cuenta. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, que están un poco poco más indulgente en términos de cosas 1661 01:15:49,760 --> 01:15:50,570 de esa manera. 1662 01:15:50,570 --> 01:15:54,260 Objetos, muy parecido estructuras en C, mucho 1663 01:15:54,260 --> 01:15:56,590 como matrices asociativas en PHP. 1664 01:15:56,590 --> 01:15:58,720 Todo lo que has tenido experiencia con esto. 1665 01:15:58,720 --> 01:16:01,880 Así JSON, cuando estás pasando JSON ida y vuelta en p-set ocho, 1666 01:16:01,880 --> 01:16:03,260 ese es su objeto. 1667 01:16:03,260 --> 01:16:06,290 >> Así que sí, ejemplo, ejemplo rápido real. 1668 01:16:06,290 --> 01:16:07,880 Aquí es un objeto. 1669 01:16:07,880 --> 01:16:12,700 La forma en que hacen referencia a esta objeto, por lo que sólo muy rápido, 1670 01:16:12,700 --> 01:16:18,630 digamos que yo quería encontrar fuera, bien, ¿cuál es el curso? 1671 01:16:18,630 --> 01:16:20,681 Y por lo que el nombre del objeto aquí es CS50. 1672 01:16:20,681 --> 01:16:23,180 Y luego si tuviera un asociativa matriz, ¿cómo voy a hacer eso? 1673 01:16:23,180 --> 01:16:24,580 Voy a estar utilizando una clave, ¿verdad? 1674 01:16:24,580 --> 01:16:26,030 Así que tengo el nombre de la matriz. 1675 01:16:26,030 --> 01:16:30,160 Tengo soporte, citas, clave, comillas finales, soporte final, 1676 01:16:30,160 --> 01:16:33,610 y que va a hacer referencia a ese elemento dentro de mi matriz asociativa. 1677 01:16:33,610 --> 01:16:37,646 ¿Cómo me referí Por supuesto dentro de mi objeto? 1678 01:16:37,646 --> 01:16:39,170 ¿Alguien sabe? 1679 01:16:39,170 --> 01:16:40,622 >> AUDIENCIA: [inaudible]. 1680 01:16:40,622 --> 01:16:41,784 >> DAVIN: ¿Qué pasa? 1681 01:16:41,784 --> 01:16:42,700 AUDIENCIA: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 DAVIN: Derecho, sí. 1683 01:16:43,510 --> 01:16:45,320 Así CS50.course. 1684 01:16:45,320 --> 01:16:48,770 Así que la forma se hace referencia a las cosas dentro de un objeto JSON es con un punto. 1685 01:16:48,770 --> 01:16:53,114 >> AUDIENCIA: También puede utilizar la sintaxis de matrices. 1686 01:16:53,114 --> 01:16:54,050 >> DAVIN: OK, está bien. 1687 01:16:54,050 --> 01:16:57,544 >> GABE: También puede utilizar el soporte CS50, cadena, como las comillas. 1688 01:16:57,544 --> 01:16:59,210 AUDIENCIA: Creo que es idéntica a PHP. 1689 01:16:59,210 --> 01:17:00,293 GABE: Es lo mismo. 1690 01:17:00,293 --> 01:17:02,487 DAVIN: ¡Muy bien! 1691 01:17:02,487 --> 01:17:03,945 Pero verá este otros lugares. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 Sí, así que seguir adelante. 1694 01:17:10,480 --> 01:17:13,330 Esto es lo que acabo de decir. 1695 01:17:13,330 --> 01:17:17,840 Así que en un ejemplo de JavaScript jQuery. 1696 01:17:17,840 --> 01:17:19,440 Así que este es mi DOM, ¿verdad? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 Muy rápido, así que tengo una cabeza, hola mundo, cuerpo. 1699 01:17:25,410 --> 01:17:26,160 Tengo un botón. 1700 01:17:26,160 --> 01:17:27,870 Dice que "me empuje", por lo que quiero para empujarlo. 1701 01:17:27,870 --> 01:17:29,745 Y quiero hacer algo cuando se hace clic en él. 1702 01:17:29,745 --> 01:17:31,220 Derecho, al lado. 1703 01:17:31,220 --> 01:17:34,630 >> Derecho, por lo que este es mi JavaScript. 1704 01:17:34,630 --> 01:17:37,790 Así que jQuery es sólo una más fácil manera de escribir JavaScript. 1705 01:17:37,790 --> 01:17:40,920 Así que esto, y lo que voy a mostrar el próximo, va a ser jQuery, 1706 01:17:40,920 --> 01:17:41,930 son idénticos. 1707 01:17:41,930 --> 01:17:43,990 Así que van a hacer las mismas cosas. 1708 01:17:43,990 --> 01:17:45,974 Sólo jQuery tiende a ser un poco más fácil. 1709 01:17:45,974 --> 01:17:47,140 La gente tiende a gustar más. 1710 01:17:47,140 --> 01:17:48,390 Tiene un montón de funcionalidades. 1711 01:17:48,390 --> 01:17:49,830 Así que la gente tiende a usar jQuery. 1712 01:17:49,830 --> 01:17:53,270 Todos ustedes acostumbrado jQuery en la última p-set. 1713 01:17:53,270 --> 01:17:54,270 Entonces, ¿qué va a hacer esto? 1714 01:17:54,270 --> 01:17:56,580 ¿Qué hará este JavaScript-- así esto es simplemente JavaScript. 1715 01:17:56,580 --> 01:17:57,430 ¿Qué va a hacer esto? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 ¿Qué va a hacer? 1718 01:18:03,450 --> 01:18:04,890 >> Así que primero, se ve la ventana onload. 1719 01:18:04,890 --> 01:18:05,390 Derecho? 1720 01:18:05,390 --> 01:18:06,640 Así que no hemos visto eso antes. 1721 01:18:06,640 --> 01:18:09,380 Así que esto va a esperar hasta que toda la ventana de cargas. 1722 01:18:09,380 --> 01:18:12,770 Así que va a esperar hasta la carga de HTML, todas las imágenes 1723 01:18:12,770 --> 01:18:13,770 antes de hacer nada. 1724 01:18:13,770 --> 01:18:16,050 Así que digamos que nuestro DOM ha cargado. 1725 01:18:16,050 --> 01:18:17,270 Todo está ahí. 1726 01:18:17,270 --> 01:18:19,080 Entonces, ¿qué va a pasar? 1727 01:18:19,080 --> 01:18:19,922 ¿Sí? 1728 01:18:19,922 --> 01:18:22,880 >> AUDIENCIA: aparece Button. 1729 01:18:22,880 --> 01:18:25,201 >> DAVIN: El botón está ya allí. 1730 01:18:25,201 --> 01:18:26,700 Sí, lo del botón ya está ahí. 1731 01:18:26,700 --> 01:18:31,190 Pero esto va a decir, Bien, si hago clic en el botón, 1732 01:18:31,190 --> 01:18:33,650 por lo que el botón ya está allí, como la etiqueta HTML. 1733 01:18:33,650 --> 01:18:35,980 Espere, volver muy rápido. 1734 01:18:35,980 --> 01:18:39,470 Esta etiqueta de derecho aquí es va a ser un botón ya. 1735 01:18:39,470 --> 01:18:40,810 Ya existe un botón. 1736 01:18:40,810 --> 01:18:44,120 Pero entonces, el código JavaScript etiqueta, aquí, 1737 01:18:44,120 --> 01:18:46,160 que dice, OK, quiero conseguir elemento por ID, 1738 01:18:46,160 --> 01:18:50,300 así botón de búsqueda se limita a decir, OK, quiero para asignar esta variable a ese botón. 1739 01:18:50,300 --> 01:18:53,120 Así que esa variable es sólo una manera más fácil de acceder a ese botón. 1740 01:18:53,120 --> 01:18:57,300 Y yo digo, está bien, si hago clic que botón, por lo que si hago clic en ese elemento, 1741 01:18:57,300 --> 01:18:59,560 y este elemento se refiere a el botón, si hago clic en él, 1742 01:18:59,560 --> 01:19:00,875 entonces quiero llamar a una función. 1743 01:19:00,875 --> 01:19:03,500 Aquí está uno de los anónimos funciones que estábamos hablando. 1744 01:19:03,500 --> 01:19:04,840 >> Sólo tiene que llamar alguna función. 1745 01:19:04,840 --> 01:19:08,840 Dentro de esa función, básicamente, algo que hemos visto mucho, alerta. 1746 01:19:08,840 --> 01:19:10,477 Hace clic en el botón de búsqueda. 1747 01:19:10,477 --> 01:19:12,060 Va a tener básicamente un botón. 1748 01:19:12,060 --> 01:19:13,040 Hacer clic en él. 1749 01:19:13,040 --> 01:19:14,040 Usted consigue esa alerta. 1750 01:19:14,040 --> 01:19:14,850 X cabo. 1751 01:19:14,850 --> 01:19:15,754 Eso es todo. 1752 01:19:15,754 --> 01:19:16,254 ¿Sí? 1753 01:19:16,254 --> 01:19:21,980 >> AUDIENCIA: Así que si usted pone el guión [Inaudible], etiqueta de script en el código HTML? 1754 01:19:21,980 --> 01:19:24,300 >> DAVIN: Usted puede poner el guión etiqueta directamente en la cabeza 1755 01:19:24,300 --> 01:19:30,667 porque usted tiene este onload. 1756 01:19:30,667 --> 01:19:32,000 Es también de que tiene un clic. 1757 01:19:32,000 --> 01:19:34,166 Así que va a esperar hasta hace clic para algo. 1758 01:19:34,166 --> 01:19:37,470 Pero onload es sólo para estar seguro, para hacer cargas que todo está en su HTML 1759 01:19:37,470 --> 01:19:38,170 de antemano. 1760 01:19:38,170 --> 01:19:39,247 ¿Sí? 1761 01:19:39,247 --> 01:19:40,330 ¿Quieres decir algo? 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 >> AUDIENCIA: evita Así onload definir el botón de búsqueda de variable 1765 01:19:45,426 --> 01:19:49,930 simplemente diciendo document.getElementById botón de búsqueda de puntos [inaudible]. 1766 01:19:49,930 --> 01:19:52,320 >> DAVIN: Definitivamente, pero luego su cadena sólo se pone enorme. 1767 01:19:52,320 --> 01:19:55,553 Exactamente, así que esto es sólo para hacer más fácil para usted, sí. 1768 01:19:55,553 --> 01:19:56,053 ¿Sí? 1769 01:19:56,053 --> 01:19:57,886 >> AUDIENCIA: ¿Dónde nos 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í, lo hay. 1772 01:20:00,590 --> 01:20:02,094 Sí, se, lo he comprobado. 1773 01:20:02,094 --> 01:20:03,710 >> GABE: no para que se preocupan. 1774 01:20:03,710 --> 01:20:06,970 >> DAVIN: OK, así que me voy para decirle de todos modos. 1775 01:20:06,970 --> 01:20:11,005 Así que, básicamente, sólo en general, por lo que window.onload espera hasta su DOM, todo 1776 01:20:11,005 --> 01:20:12,180 el código HTML, cargas. 1777 01:20:12,180 --> 01:20:13,513 Espera hasta que su carga de imágenes. 1778 01:20:13,513 --> 01:20:14,930 Espera hasta que todo carga. 1779 01:20:14,930 --> 01:20:18,410 document.ready, sólo espera hasta que sus cargas DOM. 1780 01:20:18,410 --> 01:20:22,190 Una vez que el HTML es todo lo que hay, una vez el DOM está ahí, comienza a funcionar. 1781 01:20:22,190 --> 01:20:23,400 Esa es la única diferencia. 1782 01:20:23,400 --> 01:20:24,700 >> GABE: comprobar la cordura rápida aquí. 1783 01:20:24,700 --> 01:20:29,060 Así esto puede ser visto tipo de como una línea de código, ¿no? 1784 01:20:29,060 --> 01:20:33,600 Porque es window.onload es igual a un montón de cosas. 1785 01:20:33,600 --> 01:20:39,030 Cuando JavaScript lee esto, cierto o falsa, la función se ejecuta. 1786 01:20:39,030 --> 01:20:40,020 Falso. 1787 01:20:40,020 --> 01:20:40,920 DE ACUERDO? 1788 01:20:40,920 --> 01:20:44,470 Lo que sucede aquí, estás de paso esta función como una funciones anónimas 1789 01:20:44,470 --> 01:20:45,300 a window.onload. 1790 01:20:45,300 --> 01:20:48,480 Y luego cuando se va para conseguir realmente ejecutada? 1791 01:20:48,480 --> 01:20:49,600 Cuando se carga la ventana. 1792 01:20:49,600 --> 01:20:50,420 Eso es un hecho. 1793 01:20:50,420 --> 01:20:52,460 Así que eso es jus t cosa estamos hablando de antes, ¿no? 1794 01:20:52,460 --> 01:20:54,580 Así que cuando ocurra el evento, la función pasa. 1795 01:20:54,580 --> 01:20:55,746 Lo mismo con el onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> DAVIN: OK, así que alguien tomó lejos del document.ready. 1798 01:21:03,130 --> 01:21:04,698 Pero esta será la same-- exacta 1799 01:21:04,698 --> 01:21:06,864 AUDIENCIA: El signo del dólar, que es un document.ready. 1800 01:21:06,864 --> 01:21:07,710 Eso es un atajo. 1801 01:21:07,710 --> 01:21:08,501 >> DAVIN: Oh, que es eso? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 Ok, así que significa esto? document.ready, acceso directo. 1804 01:21:15,500 --> 01:21:19,660 Pero este es el mismo que window.onload a excepción de la pequeña diferencia 1805 01:21:19,660 --> 01:21:20,680 Del que te hablé. 1806 01:21:20,680 --> 01:21:21,870 Y esto es jQuery. 1807 01:21:21,870 --> 01:21:25,190 Así que este es exactamente el mismo cosa-- esto es JavaScript. 1808 01:21:25,190 --> 01:21:29,500 Esto se solo-- algunas personas piensan de él como un peso más ligero, versión elegante 1809 01:21:29,500 --> 01:21:32,370 que tiene un montón de funcionalidad que es probable que se utilice. 1810 01:21:32,370 --> 01:21:34,500 Así que esto hace exactamente lo mismo. 1811 01:21:34,500 --> 01:21:37,110 >> Así que lo que señalan tipo de. 1812 01:21:37,110 --> 01:21:40,364 Así que en el otro ejemplo, tenido document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 así que tuvimos esta larga cadena que va a conseguir 1814 01:21:42,280 --> 01:21:44,290 el elemento por lo que tiene ID. 1815 01:21:44,290 --> 01:21:46,470 Eso se sustituye por esta llamada aquí. 1816 01:21:46,470 --> 01:21:50,860 Así se ve el signo de dólar, luego ves cita, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag es siempre un selector. 1818 01:21:52,370 --> 01:21:54,730 Se dice, está bien, esto tiene que ver con un ID. 1819 01:21:54,730 --> 01:21:56,120 ¿Cuál es el selector para una clase? 1820 01:21:56,120 --> 01:21:57,190 >> AUDIENCIA: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> DAVIN: Dot, derecha. 1822 01:21:57,960 --> 01:22:01,950 Si sólo vas a seleccionar una etiqueta, ¿qué es? 1823 01:22:01,950 --> 01:22:03,310 Es sólo la etiqueta, exactamente. 1824 01:22:03,310 --> 01:22:05,560 Y usted podría utilizar que aquí, también. 1825 01:22:05,560 --> 01:22:08,560 >> GABE: Y por etiqueta, nos referimos como div, por ejemplo, o la cabeza. 1826 01:22:08,560 --> 01:22:11,500 >> DAVIN: O cuerpo o p o nada de eso, sí. 1827 01:22:11,500 --> 01:22:14,390 Así que aquí, bien, en vez de decir document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 esto es sólo la misma cosa. 1829 01:22:16,500 --> 01:22:17,990 Sólo en jQuery, es más corto. 1830 01:22:17,990 --> 01:22:19,860 Así que es más simple. 1831 01:22:19,860 --> 01:22:23,420 Así pues, no más onclick, basta con hacer clic. 1832 01:22:23,420 --> 01:22:26,320 función jQuery, llamar a esta función. 1833 01:22:26,320 --> 01:22:27,580 Alerta es exactamente el mismo. 1834 01:22:27,580 --> 01:22:29,452 Así que es un poco más pequeño, o poco 1835 01:22:29,452 --> 01:22:32,410 más corto, un poco de la gente piensa bit-- que es un poco más fácil de escribir, 1836 01:22:32,410 --> 01:22:34,600 un poco más fácil de entender. 1837 01:22:34,600 --> 01:22:35,640 Pero esto es jQuery. 1838 01:22:35,640 --> 01:22:37,887 Un montón de gente un poco poco confundido y preocupado 1839 01:22:37,887 --> 01:22:40,220 y piensan, OK, jQuery es diferente de JavaScript. 1840 01:22:40,220 --> 01:22:42,136 Tengo que recordar estos dos cosas diferentes. 1841 01:22:42,136 --> 01:22:42,740 Que no es. 1842 01:22:42,740 --> 01:22:45,315 Quiero decir, es diferente sintaxis. 1843 01:22:45,315 --> 01:22:46,970 Pero jQuery es JavaScript. 1844 01:22:46,970 --> 01:22:50,050 Es sólo una apariencia mejor versión que 1845 01:22:50,050 --> 01:22:51,967 podría ser más fácil entienden que la gente usa. 1846 01:22:51,967 --> 01:22:53,716 GABE: Sí, para ser honesto, que el signo de dólar 1847 01:22:53,716 --> 01:22:57,240 que se ve en jQuery, eso es sólo el nombre de una función que define jQuery. 1848 01:22:57,240 --> 01:22:58,614 No tiene nada de especial. 1849 01:22:58,614 --> 01:23:03,140 ¿Es sólo el nombre de una función, Al igual que se podría definir el signo de dólar. 1850 01:23:03,140 --> 01:23:05,670 >> DAVIN: Sí, así que hablamos de esto. 1851 01:23:05,670 --> 01:23:06,680 Algunas cosas útiles. 1852 01:23:06,680 --> 01:23:10,414 Yo estaba buscando volver a las viejas pruebas. 1853 01:23:10,414 --> 01:23:13,080 En los últimos dos cuestionarios, que han tuvo que utilizar este tipo de cosas. 1854 01:23:13,080 --> 01:23:15,230 Así document.ready, por lo hacer que todo esté 1855 01:23:15,230 --> 01:23:17,410 cargado antes de empezar a hacer las cosas. 1856 01:23:17,410 --> 01:23:20,120 Seleccione un ID o seleccione una clase, que acababa de 1857 01:23:20,120 --> 01:23:24,020 ser cita dot alguna clase, fin de la cita. 1858 01:23:24,020 --> 01:23:26,580 Presentar, así que si estás la presentación de un formulario y llamada 1859 01:23:26,580 --> 01:23:28,830 esta función después de que el formulario envía. 1860 01:23:28,830 --> 01:23:34,210 Valor, así que vamos a decir que tenía una forma presentación, como un nombre de usuario, un correo electrónico, 1861 01:23:34,210 --> 01:23:34,950 lo que sea. 1862 01:23:34,950 --> 01:23:36,010 Tuve un cuadro de texto. 1863 01:23:36,010 --> 01:23:37,670 Así que estoy escribiendo en ese cuadro de texto. 1864 01:23:37,670 --> 01:23:42,170 Bueno, si usted desea conseguir el valor fuera de ese cuadro de texto, utilice punto val. 1865 01:23:42,170 --> 01:23:44,050 Y luego, aquí abajo, dot HTML es el mismo 1866 01:23:44,050 --> 01:23:47,710 es como documento de punto getElementById punto innerHTML. 1867 01:23:47,710 --> 01:23:50,890 Así que eso va a volver que el código HTML de ese ID. 1868 01:23:50,890 --> 01:23:55,080 Aquí, usted sólo tiene que utilizar algunos ID o lo que sea dot HTML. 1869 01:23:55,080 --> 01:23:56,930 Eso va a llegar el código HTML de ese elemento. 1870 01:23:56,930 --> 01:24:00,130 Si querías entonces cambiar eso HTML, puede pasar algo. 1871 01:24:00,130 --> 01:24:05,600 Así que sería como HTML punto, y luego en el interior, de citas, de nuevo HTML o algo así. 1872 01:24:05,600 --> 01:24:07,490 >> GABE: OK, así AJAX. 1873 01:24:07,490 --> 01:24:10,347 Realmente me gusta entender AJAX muy bien. 1874 01:24:10,347 --> 01:24:12,430 Así que os quiero chicos a AJAX entender muy bien. 1875 01:24:12,430 --> 01:24:14,221 Porque si lo haces, que está bastante ir 1876 01:24:14,221 --> 01:24:16,810 para entender todo lo que tiene que ver con HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript porque todo se reúne en AJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX no es un lenguaje. 1879 01:24:25,130 --> 01:24:27,000 AJAX es una técnica. 1880 01:24:27,000 --> 01:24:31,690 Y utiliza un montón de diferentes herramientas. 1881 01:24:31,690 --> 01:24:35,090 AJAX significa asíncrono XML JavaScript. 1882 01:24:35,090 --> 01:24:36,730 Así el método, la lengua, los datos. 1883 01:24:36,730 --> 01:24:40,610 >> Así que el idioma principal que utilizamos en AJAX para desencadenar todo 1884 01:24:40,610 --> 01:24:42,830 y para manejar todo más tarde es JavaScript. 1885 01:24:42,830 --> 01:24:45,160 Es por eso que se relaciona muy cerca de JavaScript. 1886 01:24:45,160 --> 01:24:49,810 Y entonces es asíncrona porque nosotros no lo hacemos 1887 01:24:49,810 --> 01:24:51,980 todos a la vez cuando nos estamos cargando la página. 1888 01:24:51,980 --> 01:24:57,190 Esto es lo que podemos hacer las cosas un poco en paralelo. 1889 01:24:57,190 --> 01:24:59,725 La idea principal detrás AJAX es que quieres 1890 01:24:59,725 --> 01:25:02,170 para conseguir una cierta información específica. 1891 01:25:02,170 --> 01:25:06,450 Por ejemplo, cuando estás escribiendo nuevo nombre de usuario cuando se registra un nombre de usuario, 1892 01:25:06,450 --> 01:25:08,520 mi nombre de usuario es abc123. 1893 01:25:08,520 --> 01:25:11,671 Y luego, al final de la forma, tienes que hacer clic en Enviar. 1894 01:25:11,671 --> 01:25:14,420 Y tenía que ir al servidor, y luego verifique si en la base de datos, 1895 01:25:14,420 --> 01:25:15,594 abc123 que ya está ahí. 1896 01:25:15,594 --> 01:25:18,510 Y si ya está ahí, dice, nombre de usuario ya en la base de datos. 1897 01:25:18,510 --> 01:25:21,010 Y ellos, que tienen que llenar todo el formulario de nuevo. 1898 01:25:21,010 --> 01:25:23,110 Y era muy, muy malo. 1899 01:25:23,110 --> 01:25:25,440 >> Y luego la gente dice, Bien, ¿por qué no acabamos de 1900 01:25:25,440 --> 01:25:29,560 hacer una pequeña petición HTTP al cheque justo para ver si este usuario está en la base de datos 1901 01:25:29,560 --> 01:25:32,080 antes de que el usuario tenía que presentar todo el formulario? 1902 01:25:32,080 --> 01:25:36,350 Así, por ejemplo, cuando el usuario termine de escribir abc123, 1903 01:25:36,350 --> 01:25:39,660 vamos a ir al servidor un poco poco y acaba de obtener un verdadero o falso 1904 01:25:39,660 --> 01:25:43,080 desde el servidor para ver si eso es un nombre de usuario válido o no. 1905 01:25:43,080 --> 01:25:49,250 OK, así que eso es una de las principales usos de AJAX hoy en día todavía. 1906 01:25:49,250 --> 01:25:52,130 >> DAVIN: Así que realmente rápido, en una llamada Ajax en jQuery, 1907 01:25:52,130 --> 01:25:54,770 que podría significar que usted quiero que sea síncrona. 1908 01:25:54,770 --> 01:25:56,330 Usted no debe hacer esto. 1909 01:25:56,330 --> 01:25:57,640 Pero usted puede hacer eso. 1910 01:25:57,640 --> 01:25:59,277 Y si lo que, ¿qué pasaría? 1911 01:25:59,277 --> 01:26:01,610 Bueno, por ejemplo, cuando estás hacer llegar las noticias o lo que sea, 1912 01:26:01,610 --> 01:26:05,464 su navegador sólo va a esperar hasta que toda esa llamada se ha completado 1913 01:26:05,464 --> 01:26:08,130 en lugar de dejar que hagas otra las cosas bien después de hacer clic en él. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> GABE: No es pasar nunca más. 1916 01:26:17,115 --> 01:26:19,681 Dios mío. 1917 01:26:19,681 --> 01:26:20,180 ¡Lo siento! 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 pasado, el cliente necesitaba petición 1921 01:26:25,350 --> 01:26:26,840 todo el contenido de una página web ". 1922 01:26:26,840 --> 01:26:28,210 Eso es lo que dije. 1923 01:26:28,210 --> 01:26:30,070 Nos permite enviar GET o POST adicional 1924 01:26:30,070 --> 01:26:32,140 peticiones sin tener para recargar nuestro navegador. 1925 01:26:32,140 --> 01:26:34,806 Así que al final del día, estamos realmente hacer una solicitud HTTP 1926 01:26:34,806 --> 01:26:35,740 aquí usando JavaScript. 1927 01:26:35,740 --> 01:26:39,700 Porque antes, sólo utilizamos JavaScript para cambiar el código HTML que ya llegó. 1928 01:26:39,700 --> 01:26:43,110 Y ahora, podemos utilizarlo para interactuar con los servidores web, así. 1929 01:26:43,110 --> 01:26:46,140 La forma en que esto sucede es que tenemos el cliente. 1930 01:26:46,140 --> 01:26:47,340 Davin es un cliente. 1931 01:26:47,340 --> 01:26:50,797 Y tiene todo el código JavaScript correr porque HTML está mudo. 1932 01:26:50,797 --> 01:26:51,630 JavaScript es inteligente. 1933 01:26:51,630 --> 01:26:54,690 Así Davin Davin tiene su inteligente parte y su parte mudo. 1934 01:26:54,690 --> 01:26:57,590 Él va a utilizar su parte inteligente ahora. 1935 01:26:57,590 --> 01:27:00,860 Él va a usar JavaScript a la solicitud, por ejemplo, 1936 01:27:00,860 --> 01:27:04,340 si está en abc123 la base de datos o no. 1937 01:27:04,340 --> 01:27:08,450 >> Así Davin, por favor, sólo envíeme una petición HTTP. 1938 01:27:08,450 --> 01:27:09,197 Gracias. 1939 01:27:09,197 --> 01:27:10,530 Así que acaba de enviar una petición HTTP. 1940 01:27:10,530 --> 01:27:11,270 Usted ve eso? 1941 01:27:11,270 --> 01:27:14,700 Y eso es sólo la misma manera que se envía cualquier solicitud HTTP. 1942 01:27:14,700 --> 01:27:16,830 El navegador, Google Chrome o algo así, es 1943 01:27:16,830 --> 01:27:19,570 vamos a ver que Davin de tratando de enviar una petición HTTP, 1944 01:27:19,570 --> 01:27:20,930 va a ayudar hm un poco. 1945 01:27:20,930 --> 01:27:23,950 Y eso va a ir todo el camino hasta el servidor. 1946 01:27:23,950 --> 01:27:27,370 Ahora, el servidor va a tener PHP aquí, o cualquier otro idioma. 1947 01:27:27,370 --> 01:27:29,990 Al igual que en una petición HTTP normal. 1948 01:27:29,990 --> 01:27:31,950 Es más o menos una petición HTTP normal. 1949 01:27:31,950 --> 01:27:33,658 >> Y luego, el servidor se va a decir, OK, 1950 01:27:33,658 --> 01:27:37,270 Davin me quiere comprobar si este abc123 está en la base de datos. 1951 01:27:37,270 --> 01:27:38,310 Ve a hablar con el modelo. 1952 01:27:38,310 --> 01:27:41,310 El modelo dice que no es. abc123 es un buen nombre de usuario. 1953 01:27:41,310 --> 01:27:47,940 Y entonces, el servidor web va a usar PHP para hacer algún tipo de archivo. 1954 01:27:47,940 --> 01:27:52,280 Podría ser, literalmente, sólo un archivo que contiene "sí" en ella, o "no, 1955 01:27:52,280 --> 01:27:53,315 o algo por el estilo. 1956 01:27:53,315 --> 01:27:54,190 Podría ser cualquier archivo. 1957 01:27:54,190 --> 01:27:57,080 >> Podría ser que me voy a Davin enviar una foto de un pato 1958 01:27:57,080 --> 01:28:01,200 si está en la base de datos y enviar una imagen de un hámster 1959 01:28:01,200 --> 01:28:02,420 si no está en la base de datos. 1960 01:28:02,420 --> 01:28:04,294 Eso sería tipo de mudo, pero funcionará. 1961 01:28:04,294 --> 01:28:07,030 OK, así que envío un pato a Davin. 1962 01:28:07,030 --> 01:28:08,150 Davin consiguió un pato. 1963 01:28:08,150 --> 01:28:13,330 Y ahora, ¿quién va para manejar el pato? 1964 01:28:13,330 --> 01:28:16,390 Parte inteligente de Davin nuevo, así JavaScript, ¿verdad? 1965 01:28:16,390 --> 01:28:18,620 JavaScript envió el solicitud y JavaScript 1966 01:28:18,620 --> 01:28:22,300 que va a recibir la solicitud e interpretarla en alguna forma. 1967 01:28:22,300 --> 01:28:26,630 >> Y en este sentido, que va a decir, OK, si pato entonces estoy bien. 1968 01:28:26,630 --> 01:28:30,770 Si hámster, luego voy decir, no, nombre de usuario ya 1969 01:28:30,770 --> 01:28:31,970 existe en la base de datos. 1970 01:28:31,970 --> 01:28:33,845 Pero por lo general, no eres va a enviar un pato. 1971 01:28:33,845 --> 01:28:36,740 Vas a enviar algo un poco más inteligente. 1972 01:28:36,740 --> 01:28:40,320 Y lo que usamos es XML. 1973 01:28:40,320 --> 01:28:42,690 Y más recientemente, utilizamos JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON es JavaScript Object Notation, que 1975 01:28:45,629 --> 01:28:47,670 es básicamente se obtiene una todo objeto JavaScript. 1976 01:28:47,670 --> 01:28:50,820 Y lo pones en un archivo, al igual que ese objeto CS50 que ustedes vieron. 1977 01:28:50,820 --> 01:28:53,090 Te lo pones en un archivo, y lo envía a Davin. 1978 01:28:53,090 --> 01:28:55,850 >> Así que en este caso, lo haría hacer un objeto JavaScript 1979 01:28:55,850 --> 01:28:59,570 y decir, existe el usuario, sí. 1980 01:28:59,570 --> 01:29:01,630 O existe el usuario, no. 1981 01:29:01,630 --> 01:29:02,810 Y enviarlo de nuevo a él. 1982 01:29:02,810 --> 01:29:03,830 ¿Y por qué JSON? 1983 01:29:03,830 --> 01:29:07,330 Debido a que la persona que está recibiendo este es 1984 01:29:07,330 --> 01:29:10,030 va a utilizar JavaScript para manejar la respuesta. 1985 01:29:10,030 --> 01:29:14,970 Y JavaScript funciona tan bien porque se llama JavaScript Object Notation. 1986 01:29:14,970 --> 01:29:15,470 Derecho? 1987 01:29:15,470 --> 01:29:19,660 Así que se puede llamar a una función y obtener este bonito objeto de la respuesta. 1988 01:29:19,660 --> 01:29:22,890 Y entonces, él va a saber si que el usuario está en la base de datos o no. 1989 01:29:22,890 --> 01:29:25,230 >> Así que ya ves, todo lo que viene juntos en el servidor web, 1990 01:29:25,230 --> 01:29:28,450 y luego hay una petición HTTP a y en una respuesta HTTP y todo. 1991 01:29:28,450 --> 01:29:30,600 Así que asegúrese de chicos entender esta llamada AJAX 1992 01:29:30,600 --> 01:29:37,260 porque ayuda a entender todo de los conceptos que estamos hablando. 1993 01:29:37,260 --> 01:29:40,260 >> Así que aquí está un ejemplo de AJAX con jQuery. 1994 01:29:40,260 --> 01:29:42,130 Y aquí, lo hacemos con get JSON. 1995 01:29:42,130 --> 01:29:45,660 Así que no estamos tratando de obtener una imagen de un gato aquí, o un pato. 1996 01:29:45,660 --> 01:29:48,110 Estamos tratando de obtener un archivo JSON. 1997 01:29:48,110 --> 01:29:51,184 Y entonces esperamos hasta se hace, punto hecho. 1998 01:29:51,184 --> 01:29:52,850 Eso significa que estoy esperando la respuesta. 1999 01:29:52,850 --> 01:29:54,180 Puede ser que tome un poco de tiempo. 2000 01:29:54,180 --> 01:29:56,360 Luego, se ve un poco de carga. 2001 01:29:56,360 --> 01:29:59,340 Si usted quiere hacer que en su sitio web. 2002 01:29:59,340 --> 01:30:01,440 Así dot hacer, y entonces, ¿qué que ocurre cuando se hace? 2003 01:30:01,440 --> 01:30:04,040 Se pasa de un anónimo función, igual que vimos antes. 2004 01:30:04,040 --> 01:30:07,800 Debido hecho es un evento, sólo como hacer clic en un ratón o lo que sea, 2005 01:30:07,800 --> 01:30:08,710 para jQuery. 2006 01:30:08,710 --> 01:30:13,710 Así se pasa en esta función con datos, texto, estado y jqXHR. 2007 01:30:13,710 --> 01:30:15,790 Y en el fondo, eso es sólo algunas variables 2008 01:30:15,790 --> 01:30:22,160 que se puede utilizar más adelante para tener el estado de la solicitud HTTP, 2009 01:30:22,160 --> 01:30:24,470 los datos que se va para enviar de nuevo a usted. 2010 01:30:24,470 --> 01:30:28,740 Así que usted puede más adelante interpretarlo y hacer algo significativo con él. 2011 01:30:28,740 --> 01:30:30,240 Y si falla, cuando se podría fallar? 2012 01:30:30,240 --> 01:30:33,780 Bueno, cuando la petición HTTP da Es usted un 500 o algo así. 2013 01:30:33,780 --> 01:30:37,420 Entonces, va a decir la estado, ¿qué tipo de fallo que fue, 2014 01:30:37,420 --> 01:30:38,420 y todo tipo de cosas. 2015 01:30:38,420 --> 01:30:40,630 Usted tiene que asegurarse de para manejar ambos casos, 2016 01:30:40,630 --> 01:30:42,770 de lo contrario el programa se vuelve loco. 2017 01:30:42,770 --> 01:30:45,820 >> DAVIN: Así que sí, esto es exactamente lo que vio en su última p-set. 2018 01:30:45,820 --> 01:30:49,720 La llamada real AJAX está en el JSON get. 2019 01:30:49,720 --> 01:30:50,587 Esa es la llamada. 2020 01:30:50,587 --> 01:30:52,920 Y luego, punto hecho es como comprueba si tiene éxito. 2021 01:30:52,920 --> 01:30:55,620 Si tiene éxito, usted desea hacer algo con los datos. 2022 01:30:55,620 --> 01:30:59,290 Tienes la oportunidad de volver de que Solicitar datos JSON. 2023 01:30:59,290 --> 01:31:00,600 Eso es lo que recibe. 2024 01:31:00,600 --> 01:31:04,470 Así que si usted recuerda de su p-set, muchos de ustedes eran como soporte de datos i 2025 01:31:04,470 --> 01:31:06,302 o lo que sea, enlace punto o título. 2026 01:31:06,302 --> 01:31:08,260 Lo que va a volver a partir de ese JSON, lo 2027 01:31:08,260 --> 01:31:11,020 los campos se encuentran en ese objeto JSON, eso es lo que está recibiendo de vuelta. 2028 01:31:11,020 --> 01:31:12,394 Datos es lo que está recibiendo de vuelta. 2029 01:31:12,394 --> 01:31:15,510 Estado del texto, algo que le permite saber lo que pasó. 2030 01:31:15,510 --> 01:31:20,570 Y luego, el jqXHR, que sólo la petición HTTP XML jQuery. 2031 01:31:20,570 --> 01:31:21,990 Eso es como un objeto. 2032 01:31:21,990 --> 01:31:23,932 Y luego no, al igual que Gabe dijo. 2033 01:31:23,932 --> 01:31:27,140 GABE: En nuestro pequeño ejemplo de abc123 sólo para comprobar si eso es en la base de datos 2034 01:31:27,140 --> 01:31:32,260 o no, los datos serían algo que haría, si existe el nombre de usuario de puntos de datos, 2035 01:31:32,260 --> 01:31:37,720 que es lo que genera su PHP para que, si existe el nombre de usuario de puntos de datos, a continuación, 2036 01:31:37,720 --> 01:31:40,880 Voy a avisar, usuario nombre ya existe. 2037 01:31:40,880 --> 01:31:44,300 Si no, yo sólo voy a dejar que el usuario siga llenando el formulario. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 Aceptar, la seguridad, fresco. 2040 01:31:50,820 --> 01:31:52,060 >> DAVIN: Me Wanna? 2041 01:31:52,060 --> 01:31:54,500 >> GABE: Me gusta esta. 2042 01:31:54,500 --> 01:31:57,680 Así que algo que me resulta familiar. 2043 01:31:57,680 --> 01:31:59,750 Ya casi hemos terminado. 2044 01:31:59,750 --> 01:32:02,670 Así que esto es sólo el ejemplo ustedes vimos en clase. 2045 01:32:02,670 --> 01:32:04,860 Estaba utilizando argv1 aquí. 2046 01:32:04,860 --> 01:32:06,460 Eso es como un argumento de línea de comandos. 2047 01:32:06,460 --> 01:32:09,270 Y estamos MEM copia que en un búfer de tamaño 12. 2048 01:32:09,270 --> 01:32:12,560 ¿Cuál es el problema aquí? 2049 01:32:12,560 --> 01:32:13,660 Desbordamiento de búfer! 2050 01:32:13,660 --> 01:32:15,400 Debido a que tenemos un buffer de tamaño 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 podría tener un tamaño de dos mil millones. 2052 01:32:18,400 --> 01:32:19,960 Nosotros no hacemos ninguna comprobación de límites. 2053 01:32:19,960 --> 01:32:24,970 Así que podríamos copiar una gran cantidad de memoria. 2054 01:32:24,970 --> 01:32:28,630 Y estaremos en particular mal por esto. 2055 01:32:28,630 --> 01:32:32,600 ¿Qué podríamos hacer eso muy, muy malo en este caso? 2056 01:32:32,600 --> 01:32:33,278 ¿Sí? 2057 01:32:33,278 --> 01:32:36,528 AUDIENCIA: Parte de los dos mil millones de cosas contiene código ejecutable que devuelve 2058 01:32:36,528 --> 01:32:38,127 [Inaudible]. 2059 01:32:38,127 --> 01:32:38,710 GABE: Exactamente. 2060 01:32:38,710 --> 01:32:41,110 Así que ese es el tipo de Lo que la gente usa 2061 01:32:41,110 --> 01:32:43,344 hacer jailbreak a un iPhone, por ejemplo. 2062 01:32:43,344 --> 01:32:44,260 Así que ese tipo de cosas. 2063 01:32:44,260 --> 01:32:48,610 Debido a que sólo puede hacer que el dispositivo ejecutar cualquier código que te gusta. 2064 01:32:48,610 --> 01:32:50,247 La solución, por lo que la solución es fácil. 2065 01:32:50,247 --> 01:32:51,330 Sólo tienes que comprobar los límites. 2066 01:32:51,330 --> 01:32:53,455 Tú pasas por nula porque siempre comprobar NULL 2067 01:32:53,455 --> 01:32:54,940 cuando estamos tratando con cuerdas. 2068 01:32:54,940 --> 01:32:57,840 Y entonces, se toma el longitud de la cadena antes. 2069 01:32:57,840 --> 01:33:00,150 Y si la cadena la longitud es una cadena válida 2070 01:33:00,150 --> 01:33:03,700 longitud, que está dentro 0 y 12, entonces estamos bien. 2071 01:33:03,700 --> 01:33:07,144 >> DAVIN: Si usted no marca para null, muy rápido, ¿qué pasará? 2072 01:33:07,144 --> 01:33:07,810 Va SEG culpa. 2073 01:33:07,810 --> 01:33:10,850 ¿Por qué será SEG quejar? 2074 01:33:10,850 --> 01:33:12,510 Debido a que está llamando strlen en nulo. 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 Verdadero o falso, utilizando uno contraseña es una buena idea. 2078 01:33:19,630 --> 01:33:20,430 >> AUDIENCIA: Falso. 2079 01:33:20,430 --> 01:33:21,150 >> GABE: Falso. 2080 01:33:21,150 --> 01:33:23,870 Utilice muchas contraseñas y grandes, los largos. 2081 01:33:23,870 --> 01:33:26,050 Iconos de candado garantizar la seguridad. 2082 01:33:26,050 --> 01:33:27,080 >> AUDIENCIA: Falso. 2083 01:33:27,080 --> 01:33:27,749 >> GABE: Falso. 2084 01:33:27,749 --> 01:33:28,790 Esto no quiere decir nada. 2085 01:33:28,790 --> 01:33:30,480 Es sólo un icono. 2086 01:33:30,480 --> 01:33:32,824 SSL protege contra una hombre en medio del ataque. 2087 01:33:32,824 --> 01:33:33,490 AUDIENCIA: Falso. 2088 01:33:33,490 --> 01:33:34,110 GABE: Falso. 2089 01:33:34,110 --> 01:33:35,355 OK, así que todos los que son falsas. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 Niza. 2092 01:33:39,490 --> 01:33:40,220 [Inaudible] 2093 01:33:40,220 --> 01:33:42,500 ¿Quieres hablar de esto? 2094 01:33:42,500 --> 01:33:43,259 Tu turno. 2095 01:33:43,259 --> 01:33:45,050 DAVIN: Tipos de ataques, hombre en el medio. 2096 01:33:45,050 --> 01:33:47,134 ¿Qué es un hombre en medio del ataque? 2097 01:33:47,134 --> 01:33:48,050 AUDIENCIA: [inaudible]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 DAVIN: Si envía un HTTP solicitud, que podría hacer esto, ¿verdad? 2100 01:33:54,020 --> 01:33:57,890 Pero si usted está enviando HTTPS, que probablemente no será capaz de hacer esto. 2101 01:33:57,890 --> 01:33:59,952 Hay un montón de puntos a lo largo de su conexión. 2102 01:33:59,952 --> 01:34:00,660 Usted tiene routers. 2103 01:34:00,660 --> 01:34:01,746 Usted tiene servidores DNS. 2104 01:34:01,746 --> 01:34:04,120 Si alguien es capaz físicamente ver lo que usted está enviando, 2105 01:34:04,120 --> 01:34:06,140 por lo que alguien es capaz de conseguir realmente entre usted, 2106 01:34:06,140 --> 01:34:08,840 el cliente y el servidor, y es capaz de ver lo que va a enviar, 2107 01:34:08,840 --> 01:34:10,298 se trata de un hombre en medio del ataque. 2108 01:34:10,298 --> 01:34:14,287 Así que para ver lo que estás tratando de obtener de el servidor, o es capaz de ver-- peor, 2109 01:34:14,287 --> 01:34:16,620 usted podría ser capaz de ver galletas o algo por el estilo. 2110 01:34:16,620 --> 01:34:19,290 >> Así por ejemplo, si usted no está utilizando SSL, que 2111 01:34:19,290 --> 01:34:21,900 podría ser capaz de ver las cookies de identificación de sesión. 2112 01:34:21,900 --> 01:34:25,460 Y esto se llama secuestro de sesión porque ve sus cookies de identificación, 2113 01:34:25,460 --> 01:34:28,317 y luego es capaz de ir a ese sitio web y hacerse pasar por usted. 2114 01:34:28,317 --> 01:34:31,150 Porque al igual que en PHP, recuerde cuando logueado, ¿qué hacemos? 2115 01:34:31,150 --> 01:34:33,340 Establecemos ID de sesión igual a ID. 2116 01:34:33,340 --> 01:34:34,810 Así que lo identifique. 2117 01:34:34,810 --> 01:34:38,300 Es por eso que se puede ver su cartera y la cartera no de todos los demás. 2118 01:34:38,300 --> 01:34:42,320 >> Bueno, si soy capaz de conseguir esa cookie, entonces puedo iniciar sesión en esa página. 2119 01:34:42,320 --> 01:34:45,380 Y entonces, yo sólo puedo ver tus cosas y comenzar a comprar y vender cosas. 2120 01:34:45,380 --> 01:34:46,800 Así que eso es secuestro de sesión. 2121 01:34:46,800 --> 01:34:50,810 Pero no debe ser a-- poder para que puede utilizar el hombre en medio del ataque 2122 01:34:50,810 --> 01:34:52,290 incluso si están usando SSL. 2123 01:34:52,290 --> 01:34:53,520 Pero no se debe ser capaz de hacerlo. 2124 01:34:53,520 --> 01:34:56,580 Si están usando SSL, no se puede sesión de secuestro. 2125 01:34:56,580 --> 01:34:58,927 ¿Por qué? 2126 01:34:58,927 --> 01:35:01,135 Porque todo está encriptado, ¿verdad? si está encriptada, 2127 01:35:01,135 --> 01:35:03,509 y sigo siendo un hombre de la medio, sigo teniendo sus datos. 2128 01:35:03,509 --> 01:35:04,279 Eso está bien. 2129 01:35:04,279 --> 01:35:05,070 Pero está encriptada. 2130 01:35:05,070 --> 01:35:07,750 Así que no puedo usarlo. 2131 01:35:07,750 --> 01:35:09,840 Así que eso es dos. 2132 01:35:09,840 --> 01:35:11,544 >> Muy rápido, cross site solicitud falsificación. 2133 01:35:11,544 --> 01:35:13,960 Eso es sólo si hay un vínculo y ese vínculo hace algo 2134 01:35:13,960 --> 01:35:14,890 que no cree que debería hacer. 2135 01:35:14,890 --> 01:35:18,150 Así, por ejemplo, si el enlace era ir a comprar acciones o vender acciones, 2136 01:35:18,150 --> 01:35:19,360 y usted no sabía eso. 2137 01:35:19,360 --> 01:35:22,040 Hizo clic en el enlace, enviado una solicitud, compró 2138 01:35:22,040 --> 01:35:24,240 o vendido algo que que no querías hacer. 2139 01:35:24,240 --> 01:35:25,120 Eso es todo. 2140 01:35:25,120 --> 01:35:30,720 >> Cross site scripting, asi que aquí, estás pasando en medio de la variable q, 2141 01:35:30,720 --> 01:35:33,510 en lugar de pasar en algún tipo de valor, tal vez q es como un nombre. 2142 01:35:33,510 --> 01:35:36,560 Así que en lugar de pasar q iguales Davin o algo por el estilo, 2143 01:35:36,560 --> 01:35:38,740 si usted no utiliza HTML caracteres especiales, si 2144 01:35:38,740 --> 01:35:43,100 no escapan a este para asegurarse de que es Bien, entonces yo podría pasar en su lugar, 2145 01:35:43,100 --> 01:35:46,910 digamos que aquí estoy diciendo impresión o algo por el estilo, 2146 01:35:46,910 --> 01:35:51,070 entonces yo podría pasar aquí una llamada guión. 2147 01:35:51,070 --> 01:35:53,140 >> Así que, en lugar de sólo conseguir una variable, 2148 01:35:53,140 --> 01:35:54,960 Yo luego ejecutar esta convocatoria guión. 2149 01:35:54,960 --> 01:35:57,065 Así que dentro de esa secuencia de comandos llamar, ¿qué hacer? 2150 01:35:57,065 --> 01:36:00,190 Ubicación de puntos de documento, que va a cambiar la ubicación del documento. 2151 01:36:00,190 --> 01:36:02,290 Así que voy a redirigir a otro lugar. 2152 01:36:02,290 --> 01:36:08,170 Se llama malo de este ejemplo, muy bueno. 2153 01:36:08,170 --> 01:36:10,536 No se puede pensar en la palabra. 2154 01:36:10,536 --> 01:36:12,410 Y luego, lo que es aún peor es que me voy 2155 01:36:12,410 --> 01:36:16,832 a continuación, establecer la galleta, que es un poco variables que tengo en este sitio web. 2156 01:36:16,832 --> 01:36:19,040 Voy a ponerlo igual a la cookie documento punto. 2157 01:36:19,040 --> 01:36:20,660 Por lo tanto, voy robar su cookie. 2158 01:36:20,660 --> 01:36:22,951 Y yo voy a redirigir alguna información a un sitio web 2159 01:36:22,951 --> 01:36:25,120 que no se debe a acceder. 2160 01:36:25,120 --> 01:36:29,250 Y todo esto sucede porque eres no escapa lo que has visto. 2161 01:36:29,250 --> 01:36:29,910 ¿Sí? 2162 01:36:29,910 --> 01:36:32,160 >> AUDIENCIA: Así que para hacer eso en claro, es 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com que es vulnerable a este. 2164 01:36:37,550 --> 01:36:39,300 Así que puede parecer que enlace en una determinada página. 2165 01:36:39,300 --> 01:36:42,200 Alguien hace clic en él, va a vulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 Usted tiene una cookie para vulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 Digamos Facebook es vulnerable, tan facebook.com. 2168 01:36:46,670 --> 01:36:48,310 Usted tiene su cookie de Facebook. 2169 01:36:48,310 --> 01:36:50,925 Lo que esto está haciendo, eres va a facebook.com, 2170 01:36:50,925 --> 01:36:53,990 que está inmediatamente redirigiendo a badguy.com, 2171 01:36:53,990 --> 01:36:57,182 pero incluyendo la información de su cookie. 2172 01:36:57,182 --> 01:36:59,310 Así que es una redirección rápida, pero su cookie Facebook 2173 01:36:59,310 --> 01:37:02,572 se incluye con la redirección, y eso es lo que [inaudible]. 2174 01:37:02,572 --> 01:37:04,280 GABE: Sí, hay algunas cosas muy medias 2175 01:37:04,280 --> 01:37:06,070 que la gente puede hacer si está esto. 2176 01:37:06,070 --> 01:37:09,190 Por ejemplo, si Facebook permitió todo el mundo para cambiar el nombre de usuario, 2177 01:37:09,190 --> 01:37:11,680 y no hicieron ninguna comprobaciones de validez, por lo que 2178 01:37:11,680 --> 01:37:16,810 podría insertar una cosa que JavaScript cambia su imagen a un hámster. 2179 01:37:16,810 --> 01:37:22,590 Y que inserta la misma JavaScript en todo el mundo que ve a su página. 2180 01:37:22,590 --> 01:37:26,400 Así que todo el mundo que ve a su página tiene la misma cosa en el nombre de usuario. 2181 01:37:26,400 --> 01:37:30,104 Y porque es un virus, de que se extienda de manera exponencial. 2182 01:37:30,104 --> 01:37:32,270 DAVIN: Vamos a saltar la última uno, y luego hemos terminado. 2183 01:37:32,270 --> 01:37:34,120 Así que este es sólo otro ejemplo. 2184 01:37:34,120 --> 01:37:36,120 Así que esto es que no son escapar de su tabla de SQL. 2185 01:37:36,120 --> 01:37:37,090 Así que usted puede caer. 2186 01:37:37,090 --> 01:37:38,805 ¿Así que quieres escapar cosas. 2187 01:37:38,805 --> 01:37:44,010 Ese fue el ejemplo anterior con el cross site scripting. 2188 01:37:44,010 --> 01:37:45,430 Lo sentimos corrimos un poco tarde. 2189 01:37:45,430 --> 01:37:46,870 Mañana, lo siento! 2190 01:37:46,870 --> 01:37:48,560 Mañana, tenemos horario de oficina. 2191 01:37:48,560 --> 01:37:50,870 Así que las horas de oficina en Cabbot 08:00-11:00. 2192 01:37:50,870 --> 01:37:55,240 Las horas de oficina son estrictamente para preguntas de la prueba. 2193 01:37:55,240 --> 01:37:56,587