1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> HANNAH BLUMBERG: Hola a todos. 3 00:00:07,030 --> 00:00:09,530 Vamos a empezar sólo un par de minutos antes 4 00:00:09,530 --> 00:00:11,738 ya que tenemos mucho de material para pasar. 5 00:00:11,738 --> 00:00:12,790 Soy Hannah. 6 00:00:12,790 --> 00:00:13,865 Soy un TF. 7 00:00:13,865 --> 00:00:16,239 María se va a unir nosotros en sólo un par de minutos. 8 00:00:16,239 --> 00:00:17,560 Es profesora de la sección de la derecha antes. 9 00:00:17,560 --> 00:00:19,351 Enseño sección derecha después, por lo que vamos 10 00:00:19,351 --> 00:00:21,200 para mantenerlo a la hora y media. 11 00:00:21,200 --> 00:00:25,490 >> Así como se verá aquí, tenemos bastante algunos temas que tienen que pasar, 12 00:00:25,490 --> 00:00:27,200 así que vamos a ir un poco más rápido. 13 00:00:27,200 --> 00:00:31,140 Pero si en algún momento decimos algo demasiado rápido o no entiende, 14 00:00:31,140 --> 00:00:33,170 no dude en interrumpir con preguntas. 15 00:00:33,170 --> 00:00:36,610 Queremos ser capaces de hacer de esto una revisar sesión tan útil para todos ustedes 16 00:00:36,610 --> 00:00:37,973 como sea posible. 17 00:00:37,973 --> 00:00:38,920 Impresionante. 18 00:00:38,920 --> 00:00:41,650 >> Así que vamos a saltar a la derecha adentro con algunos temas que en realidad 19 00:00:41,650 --> 00:00:46,980 muy, muy brevemente cubierta para el cuestionario de 0 en la revisión sesión de prueba 0. 20 00:00:46,980 --> 00:00:48,840 Así que a partir de listas enlazadas. 21 00:00:48,840 --> 00:00:52,090 Así que asegúrese de que tiene alguna conocimientos básicos sobre listas enlazadas 22 00:00:52,090 --> 00:00:55,110 y se sienten cómodos haciendo algunas de las operaciones básicas. 23 00:00:55,110 --> 00:00:58,560 >> Así que para opinar, vinculado listas son mejores que las matrices 24 00:00:58,560 --> 00:01:01,020 porque pueden crecer de forma dinámica. 25 00:01:01,020 --> 00:01:03,300 Así que tenemos que gran ventaja. 26 00:01:03,300 --> 00:01:06,031 Hemos visto los usaban en tablas hash cuando 27 00:01:06,031 --> 00:01:08,280 no sé exactamente cuántos cosas que van a querer 28 00:01:08,280 --> 00:01:10,900 para insertar en nuestra estructura de datos. 29 00:01:10,900 --> 00:01:15,700 Por desgracia, tenemos piezas de la lista enlazada todo de memoria, 30 00:01:15,700 --> 00:01:20,820 así que no vamos a ser necesariamente capaz de hacer el acceso constante de tiempo 31 00:01:20,820 --> 00:01:22,502 a cualquier elemento de la lista enlazada. 32 00:01:22,502 --> 00:01:24,210 Con el fin de encontrar una particular, elemento, nos 33 00:01:24,210 --> 00:01:26,510 tener que repetir todo el así desde el principio. 34 00:01:26,510 --> 00:01:30,610 Así que tener en cuenta que la mayor parte del operaciones básicas son omega de 1. 35 00:01:30,610 --> 00:01:32,130 Así inserto es sólo va a tomar 1. 36 00:01:32,130 --> 00:01:37,520 Eliminar va a tomar n ya que tienen que ir a buscar en la lista. 37 00:01:37,520 --> 00:01:39,260 Y la búsqueda podría tomar, en el peor, n. 38 00:01:39,260 --> 00:01:42,330 No podemos hacer algo como búsqueda binaria en una lista enlazada 39 00:01:42,330 --> 00:01:45,101 Ya que no podemos simplemente saltar al azar para el medio. 40 00:01:45,101 --> 00:01:45,600 Guay. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 Impresionante. 43 00:01:48,960 --> 00:01:50,270 >> Un poco de pilas. 44 00:01:50,270 --> 00:01:53,980 Esto, de nuevo, apareció en concurso 0, por lo que debe ser súper cómodo con él. 45 00:01:53,980 --> 00:01:57,210 Pero para las pilas, le pedimos que recordar una pila de bandejas. 46 00:01:57,210 --> 00:01:59,940 Y va a ser primero en entrar, último en salir. 47 00:01:59,940 --> 00:02:02,272 Así apilamos las cosas en la pila, y luego 48 00:02:02,272 --> 00:02:04,980 si estamos tratando de tomar algo off-- que llamamos haciendo estallar fuera 49 00:02:04,980 --> 00:02:06,581 el stack-- venimos de la parte superior. 50 00:02:06,581 --> 00:02:09,289 Y si queremos poner algo en la pila, lo llamamos empujando. 51 00:02:09,289 --> 00:02:13,170 Por lo que siempre va a estar creciendo desde el fondo como una pila de bandejas. 52 00:02:13,170 --> 00:02:14,540 Impresionante. 53 00:02:14,540 --> 00:02:17,607 >> Hemos implementado pilas vistos con las dos listas enlazadas y matrices. 54 00:02:17,607 --> 00:02:19,440 Si está implementando con matrices, desea 55 00:02:19,440 --> 00:02:22,350 para asegurarse de no perder de vista tanto el tamaño y la capacidad. 56 00:02:22,350 --> 00:02:27,540 Así tamaño va a ser la corriente número de cosas en su pila, 57 00:02:27,540 --> 00:02:32,900 mientras que la capacidad es el número total de cosas que puede almacenar en su pila. 58 00:02:32,900 --> 00:02:34,220 Guay. 59 00:02:34,220 --> 00:02:35,767 >> Muy similar, tenemos colas. 60 00:02:35,767 --> 00:02:38,850 En este caso, en lugar de pensar una pila de bandejas, piensa en una línea. 61 00:02:38,850 --> 00:02:40,697 Esto va a ser primero en entrar, primero en salir. 62 00:02:40,697 --> 00:02:42,780 Así que si usted está haciendo cola para algo en la tienda, 63 00:02:42,780 --> 00:02:46,920 esperamos que la persona por primera vez en línea va a ser ayudado a primera. 64 00:02:46,920 --> 00:02:49,350 >> En lugar de decir empuje y pop como lo hacemos para la pila, 65 00:02:49,350 --> 00:02:52,000 nos limitamos a decir enqueue y quitar de la cola. 66 00:02:52,000 --> 00:02:54,970 Y de nuevo, si usted es implementar esto con una matriz, 67 00:02:54,970 --> 00:02:56,720 tenemos que seguir la pista de no sólo el tamaño 68 00:02:56,720 --> 00:03:02,390 y la capacidad, sino también la cabeza, que va a ser el frente de nuestra cola. 69 00:03:02,390 --> 00:03:03,010 Guay. 70 00:03:03,010 --> 00:03:05,770 ¿Tiene preguntas sobre nada de eso? 71 00:03:05,770 --> 00:03:06,320 Impresionante. 72 00:03:06,320 --> 00:03:07,640 La derecha móvil adelante. 73 00:03:07,640 --> 00:03:08,564 >> OK, tablas hash. 74 00:03:08,564 --> 00:03:10,605 Aquí es donde empieza a conseguir realmente interesante. 75 00:03:10,605 --> 00:03:14,150 Así que una tabla hash es una implementación de una matriz asociativa. 76 00:03:14,150 --> 00:03:16,700 Así que básicamente lo que pasó es que tenemos todo esto de entrada, 77 00:03:16,700 --> 00:03:18,750 y le damos a un hash función que dice, 78 00:03:18,750 --> 00:03:21,840 OK, aquí es donde en el tabla hash pertenece. 79 00:03:21,840 --> 00:03:24,860 >> Así que la función hash más simple que hemos visto está diciendo, 80 00:03:24,860 --> 00:03:28,170 OK, supongamos que queremos poner cadenas en nuestra tabla hash. 81 00:03:28,170 --> 00:03:30,870 Y una idea muy simple podía decir, OK, 82 00:03:30,870 --> 00:03:34,350 vamos a ordenar por el primera letra de la palabra. 83 00:03:34,350 --> 00:03:37,570 Así que usted puede ver aquí, tomamos el plátano, lo sometemos a una función hash, 84 00:03:37,570 --> 00:03:40,190 y dice, bueno, eso debe ir en el índice 1. 85 00:03:40,190 --> 00:03:45,120 >> Así podemos pensar esencialmente en un hash mesa como un montón de diferentes cubos. 86 00:03:45,120 --> 00:03:49,880 Y cada uno de esos cubos va para sostener la cabeza de una lista enlazada. 87 00:03:49,880 --> 00:03:55,030 Y en esa lista enlazada es donde podemos realmente poner diferentes piezas de datos. 88 00:03:55,030 --> 00:03:57,820 >> Así buceo un poco más en una función hash, aquí está 89 00:03:57,820 --> 00:03:59,870 el ejemplo que acabo de descrito en el que acaba de decir, 90 00:03:59,870 --> 00:04:02,460 OK, toma la primera letra de la palabra y estamos 91 00:04:02,460 --> 00:04:03,990 va a solucionar el problema en los cubos. 92 00:04:03,990 --> 00:04:08,490 Así que, presumiblemente, habrá 26 cubos, uno por cada letra del alfabeto. 93 00:04:08,490 --> 00:04:10,090 ¿Por qué no es esto una gran función hash? 94 00:04:10,090 --> 00:04:13,461 Lo que hace que este no ideal? 95 00:04:13,461 --> 00:04:13,960 Sí. 96 00:04:13,960 --> 00:04:15,790 >> AUDIENCIA: ¿Vas tener colisiones. 97 00:04:15,790 --> 00:04:16,390 >> HANNAH BLUMBERG: Sí, exactamente. 98 00:04:16,390 --> 00:04:18,000 Vas a tener colisiones. 99 00:04:18,000 --> 00:04:18,954 Así que eso es una cosa. 100 00:04:18,954 --> 00:04:21,620 Y hablaremos de cómo podemos arreglar las colisiones en tan sólo unos segundos. 101 00:04:21,620 --> 00:04:23,980 Otro problema con este en particular función hash 102 00:04:23,980 --> 00:04:25,980 es que nuestro diferente cubos van a ser 103 00:04:25,980 --> 00:04:28,960 de bastante drásticamente diferentes tamaños. 104 00:04:28,960 --> 00:04:33,840 >> Sabemos que hay mucho mas palabras que comienzan con A de X, 105 00:04:33,840 --> 00:04:38,980 así que vamos a tener muy cubos desequilibradas en nuestra tabla hash. 106 00:04:38,980 --> 00:04:40,050 Guay. 107 00:04:40,050 --> 00:04:41,340 Así que sí, vamos a volver a el punto de colisiones. 108 00:04:41,340 --> 00:04:42,900 ¿Qué hacemos si hay una colisión? 109 00:04:42,900 --> 00:04:44,490 >> Tenemos un par de opciones diferentes. 110 00:04:44,490 --> 00:04:47,600 Así que uno, por lo que suponemos que estamos tratando poner baya en nuestra tabla hash. 111 00:04:47,600 --> 00:04:50,370 Y vemos, oh, queremos para decirlo en el índice 1, 112 00:04:50,370 --> 00:04:52,070 pero plátano ya vive allí. 113 00:04:52,070 --> 00:04:53,110 ¿Qué vamos a hacer? 114 00:04:53,110 --> 00:04:54,560 Tenemos dos opciones principales. 115 00:04:54,560 --> 00:04:58,050 >> El número uno es lo que podemos decir, OK, no hay lugar en el índice 1, 116 00:04:58,050 --> 00:05:03,210 pero vamos a seguir buscando a través hasta que podamos encontrar otro lugar abierto. 117 00:05:03,210 --> 00:05:08,490 Así que vamos a decir, OK, vamos a ponerlo en el punto 3. 118 00:05:08,490 --> 00:05:09,240 Esa es una opción. 119 00:05:09,240 --> 00:05:11,470 Eso se llama sondeo lineal. 120 00:05:11,470 --> 00:05:15,500 >> Y una segunda opción está diciendo, bien, bien, vamos a hacer cada uno de estos cubos 121 00:05:15,500 --> 00:05:17,470 ser cabezas de listas enlazadas. 122 00:05:17,470 --> 00:05:21,910 Y está bien si hay más de una cosa en un cubo. 123 00:05:21,910 --> 00:05:23,820 Sólo vamos a anexarlo en la parte frontal. 124 00:05:23,820 --> 00:05:26,032 Así que aquí se puede ver, está bien, cuando insertamos baya, que 125 00:05:26,032 --> 00:05:28,240 acaba de tomar plátano, tipo de empujado sobre un poco 126 00:05:28,240 --> 00:05:29,842 y lanzó una baya allí. 127 00:05:29,842 --> 00:05:31,050 Y eso es también totalmente bien. 128 00:05:31,050 --> 00:05:32,830 Esto se conoce como encadenamiento separado. 129 00:05:32,830 --> 00:05:38,100 Usted puede pensar en esto como una especie de una serie de cabezas de listas enlazadas. 130 00:05:38,100 --> 00:05:41,950 ¿Tiene preguntas sobre picadillo tablas, funciones de hash? 131 00:05:41,950 --> 00:05:44,290 Impresionante. 132 00:05:44,290 --> 00:05:45,470 >> Los árboles y los intentos. 133 00:05:45,470 --> 00:05:47,287 Así que un árbol es cualquier tipo de la estructura de datos 134 00:05:47,287 --> 00:05:49,453 en la que hay una especie de la jerarquía o algún tipo 135 00:05:49,453 --> 00:05:51,247 de clasificar a sus diferentes objetos. 136 00:05:51,247 --> 00:05:53,580 Y esto se convertirá en súper claro cuando vemos un ejemplo. 137 00:05:53,580 --> 00:05:56,960 Y vimos intentos, a lo largo con tablas hash, en pset5-- 138 00:05:56,960 --> 00:06:00,700 que, de nuevo, juego totalmente justa para este quiz-- de datos como otro 139 00:06:00,700 --> 00:06:03,110 estructuras que podemos almacenar diferentes cosas. 140 00:06:03,110 --> 00:06:06,782 En el caso de diccionario, nos guardaron un montón de palabras. 141 00:06:06,782 --> 00:06:08,240 Así que echemos un vistazo a algunos árboles. 142 00:06:08,240 --> 00:06:10,190 Así que este es un ejemplo de un árbol. 143 00:06:10,190 --> 00:06:13,105 Tiene un tipo de estructura, que la estructura jerárquica, 144 00:06:13,105 --> 00:06:15,920 donde se puede ver que este nodo 1 en la parte superior 145 00:06:15,920 --> 00:06:20,750 tiene algún tipo de rango por encima de 2 y 3, que están por encima de 4, 5, y 6 y 7, 146 00:06:20,750 --> 00:06:22,860 que están por encima de 8 y 9. 147 00:06:22,860 --> 00:06:25,210 Así que eso es todo lo que queremos decir con un árbol, por lo que puede sólo tipo 148 00:06:25,210 --> 00:06:26,660 de imaginar esto en su cabeza. 149 00:06:26,660 --> 00:06:29,050 >> Ahora, tenemos un par de árboles más especializados. 150 00:06:29,050 --> 00:06:31,070 Así que un ejemplo es un árbol binario. 151 00:06:31,070 --> 00:06:33,290 Y un árbol binario es, de nuevo, sólo va a ser 152 00:06:33,290 --> 00:06:37,040 una estructura de datos con algún tipo de jerarquía, pero cada uno de los nodos 153 00:06:37,040 --> 00:06:38,650 puede tener como máximo dos hijos. 154 00:06:38,650 --> 00:06:41,530 Ahí es donde la palabra binaria viene. 155 00:06:41,530 --> 00:06:43,410 Así que este es un ejemplo de un árbol binario. 156 00:06:43,410 --> 00:06:45,720 Así que esa es una categoría más pequeña de árboles. 157 00:06:45,720 --> 00:06:48,960 >> Ahora vamos a llegar aún más específico y hablar binaria trees-- búsqueda binaria 158 00:06:48,960 --> 00:06:51,310 árboles, más bien. 159 00:06:51,310 --> 00:06:56,430 Así que aquí la idea es no sólo hace cada nodo tiene como máximo dos hijos, 160 00:06:56,430 --> 00:07:00,300 pero todos los niños a la izquierda van a ser más pequeños 161 00:07:00,300 --> 00:07:03,450 y todos los niños a la derecha van a ser más grande. 162 00:07:03,450 --> 00:07:05,890 Así notar en sólo nuestra árbol binario, hay 163 00:07:05,890 --> 00:07:08,650 ninguna relación entre los números. 164 00:07:08,650 --> 00:07:12,990 Pero en nuestra búsqueda binaria árbol, vemos, OK, aquí está 44. 165 00:07:12,990 --> 00:07:17,080 Y cada número a la izquierda de 44 es más pequeña y todo a la derecha 166 00:07:17,080 --> 00:07:17,920 es más grande. 167 00:07:17,920 --> 00:07:20,130 >> Y eso vale en cada nivel del árbol. 168 00:07:20,130 --> 00:07:24,810 Así que aquí, esta es menor que 22 y esto es mayor que 22. 169 00:07:24,810 --> 00:07:26,390 Y eso es árbol binario de búsqueda. 170 00:07:26,390 --> 00:07:28,900 ¿Por qué pensamos que se llama un árbol de búsqueda binaria? 171 00:07:28,900 --> 00:07:30,651 Qué algoritmo Qué te recuerda? 172 00:07:30,651 --> 00:07:31,650 AUDIENCIA: La búsqueda binaria. 173 00:07:31,650 --> 00:07:32,480 HANNAH BLUMBERG: La búsqueda binaria. 174 00:07:32,480 --> 00:07:35,150 Porque si usted está buscando un número particular en este árbol, 175 00:07:35,150 --> 00:07:38,800 en cada punto, sólo puede tocar medio fuera del árbol, lo cual es genial. 176 00:07:38,800 --> 00:07:43,800 Y para que nos va a dar algo que se parece mucho a la búsqueda binaria. 177 00:07:43,800 --> 00:07:45,870 ¿Alguna pregunta? 178 00:07:45,870 --> 00:07:47,570 Muy bien, fresco. 179 00:07:47,570 --> 00:07:48,560 >> Muy bien, lo intenta. 180 00:07:48,560 --> 00:07:49,657 Favorito de todos. 181 00:07:49,657 --> 00:07:51,990 Así que este es el ejemplo que hemos visto un montón de clase. 182 00:07:51,990 --> 00:07:54,710 Y de nuevo, esto es sólo otra manera que podemos almacenar datos. 183 00:07:54,710 --> 00:07:57,530 En el caso de diccionario, de nuevo, este es sólo va a ser cadenas. 184 00:07:57,530 --> 00:08:00,870 Así que vamos a ver lo que en realidad esto se parece a un nivel ligeramente inferior. 185 00:08:00,870 --> 00:08:03,690 >> Así que vamos a echar un vistazo en un nodo en un trie. 186 00:08:03,690 --> 00:08:07,532 Y vemos, está bien, no va ser un valor booleano y un nodo, 187 00:08:07,532 --> 00:08:09,170 un puntero a un nodo. 188 00:08:09,170 --> 00:08:11,400 Y vemos que la Boole se llama is_word. 189 00:08:11,400 --> 00:08:13,490 Así que, esencialmente, eso es va a corresponder 190 00:08:13,490 --> 00:08:16,750 a estos pequeños triángulos que dice, si usted ha llegado aquí, 191 00:08:16,750 --> 00:08:19,100 que ha encontrado una palabra completa. 192 00:08:19,100 --> 00:08:23,670 >> Sabemos que "Turing" sobre aquí hay una palabra completa, 193 00:08:23,670 --> 00:08:28,030 mientras que solo T-U-R no es una palabra porque no vemos ese pequeño delta. 194 00:08:28,030 --> 00:08:31,440 Y ese pequeño delta, de nuevo, corresponde a esta is_word, 195 00:08:31,440 --> 00:08:34,480 este is_word booleana. 196 00:08:34,480 --> 00:08:36,320 Y luego tenemos una gran variedad de los niños. 197 00:08:36,320 --> 00:08:39,860 Así que en cada nivel, tener un nodo en particular, 198 00:08:39,860 --> 00:08:42,470 y que los puntos de nodo a un conjunto de todo el alfabeto. 199 00:08:42,470 --> 00:08:44,346 >> Así se puede ver, de nuevo, en este picture-- estoy 200 00:08:44,346 --> 00:08:48,170 va a seguir saltando hacia atrás y forth-- que esa matriz en la parte superior 201 00:08:48,170 --> 00:08:51,640 tiene un montón de diferentes nodos que salen de ella. 202 00:08:51,640 --> 00:08:57,140 Tiene 26 años, o 27 si quieres para incluir un carácter adicional. 203 00:08:57,140 --> 00:09:01,320 Y esto nos da una manera de almacenar nuestros datos 204 00:09:01,320 --> 00:09:04,450 de manera que se pueden miraba que usted puede mirar hacia arriba súper rápido. 205 00:09:04,450 --> 00:09:06,650 ¿Cuál es el tiempo de búsqueda de un trie? 206 00:09:06,650 --> 00:09:07,970 >> AUDIENCIA: [inaudible]. 207 00:09:07,970 --> 00:09:08,300 >> HANNAH BLUMBERG: Sí. 208 00:09:08,300 --> 00:09:09,550 En teoría, es tiempo constante. 209 00:09:09,550 --> 00:09:13,230 Sólo va a ser del tamaño de la palabra que desea buscar. 210 00:09:13,230 --> 00:09:15,950 Incluso si añadimos un trillón Más palabras para nuestra trie, 211 00:09:15,950 --> 00:09:18,160 no va a llevarnos más tiempo para determinar 212 00:09:18,160 --> 00:09:19,690 si una palabra dada es en el trie. 213 00:09:19,690 --> 00:09:21,412 Así que eso es realmente agradable. 214 00:09:21,412 --> 00:09:23,697 >> AUDIENCIA: ¿Acabas inicializar esa matriz? 215 00:09:23,697 --> 00:09:24,780 Se ha perdido un punto o dos. 216 00:09:24,780 --> 00:09:26,130 ¿Puedes hablar eso por un segundo? 217 00:09:26,130 --> 00:09:26,680 >> HANNAH BLUMBERG: Claro, por supuesto. 218 00:09:26,680 --> 00:09:27,590 Buena pregunta. 219 00:09:27,590 --> 00:09:31,140 La pregunta era, nos tienen una matriz que es 220 00:09:31,140 --> 00:09:34,180 va a tener estrellas nodo como a diferencia de nodo solo, ¿verdad? 221 00:09:34,180 --> 00:09:35,180 Guay. 222 00:09:35,180 --> 00:09:37,990 Así que aquí lo que estamos diciendo es nuestra matriz es simplemente 223 00:09:37,990 --> 00:09:40,035 va a ser punteros a otras matrices. 224 00:09:40,035 --> 00:09:42,910 Así que ha essentially-- que tipo de se siente como una lista enlazada de esta manera 225 00:09:42,910 --> 00:09:46,620 donde cada uno de estos niños simplemente apunte al siguiente nodo. 226 00:09:46,620 --> 00:09:49,030 >> Y la forma en que nosotros determinar realmente, bueno, está bien, 227 00:09:49,030 --> 00:09:52,320 hemos itera a través de un entero palabra, es esta palabra en el diccionario, 228 00:09:52,320 --> 00:09:54,476 acabamos de comprobar esto is_word. 229 00:09:54,476 --> 00:09:55,100 Muy buena pregunta. 230 00:09:55,100 --> 00:09:55,675 Sí. 231 00:09:55,675 --> 00:09:56,216 AUDIENCIA: OK. 232 00:09:56,216 --> 00:09:57,470 Entonces, ¿cuál era el tiempo de ejecución para el trie? 233 00:09:57,470 --> 00:09:58,386 >> HANNAH BLUMBERG: Claro. 234 00:09:58,386 --> 00:10:01,852 Así que el tiempo de ejecución para un trie de búsqueda va a ser la constante de tiempo. 235 00:10:01,852 --> 00:10:04,310 Así que sólo va a ser el número de letras de la palabra. 236 00:10:04,310 --> 00:10:06,310 No es dependiente de la tamaño del diccionario 237 00:10:06,310 --> 00:10:09,510 o el tamaño de la estructura de datos. 238 00:10:09,510 --> 00:10:12,170 Así que aquí está un ejemplo un poco más simple. 239 00:10:12,170 --> 00:10:15,430 >> En este caso, se puede ver que la palabra murciélago está en el diccionario 240 00:10:15,430 --> 00:10:18,900 y usted tiene zoom, pero no tener algo como zoológico. 241 00:10:18,900 --> 00:10:20,050 ¿Cómo podríamos hacer zoológico? 242 00:10:20,050 --> 00:10:24,276 ¿Cómo nos sumamos a nuestro zoológico diccionario, a nuestro trie? 243 00:10:24,276 --> 00:10:24,776 Sí. 244 00:10:24,776 --> 00:10:27,014 >> AUDIENCIA: Hacer is_word cierto para el [inaudible]. 245 00:10:27,014 --> 00:10:27,930 HANNAH BLUMBERG: Good. 246 00:10:27,930 --> 00:10:31,731 Entonces diríamos Z-O-O, y entonces tendríamos que desee comprobar fuera de esa caja también. 247 00:10:31,731 --> 00:10:32,230 Excelente. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 Comparemos brevemente intenta frente tablas hash. 250 00:10:37,930 --> 00:10:39,770 Tries son realmente grandes porque, como hemos dicho, 251 00:10:39,770 --> 00:10:41,610 que proporcionan las operaciones de búsqueda en tiempo constante. 252 00:10:41,610 --> 00:10:44,285 Sin embargo, la gran desventaja es que son gigantescos. 253 00:10:44,285 --> 00:10:46,160 Usted puede obtener el sentido, incluso con sólo mirarlo, 254 00:10:46,160 --> 00:10:48,454 que va a tomar una enorme cantidad de memoria. 255 00:10:48,454 --> 00:10:50,620 Así que van a ser mucho más grande que las tablas hash, 256 00:10:50,620 --> 00:10:52,270 pero que van a dar nos tiempos de búsqueda mucho más rápido. 257 00:10:52,270 --> 00:10:54,478 Así que esa es la clase de su compensación, lo que te importa, 258 00:10:54,478 --> 00:10:57,350 si se trata de la velocidad o la memoria. 259 00:10:57,350 --> 00:11:02,251 ¿Tiene preguntas sobre nada de eso, todas las estructuras de datos C. 260 00:11:02,251 --> 00:11:02,750 Hermosa. 261 00:11:02,750 --> 00:11:03,250 OKAY. 262 00:11:03,250 --> 00:11:07,322 Vamos a pasar a un pequeño poco de desarrollo web con María. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: Lovely. 264 00:11:08,280 --> 00:11:09,036 OKAY. 265 00:11:09,036 --> 00:11:10,380 >> HANNAH BLUMBERG: Usted puede usar mi ordenador portátil. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: Niza. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 Vale, guay. 269 00:11:14,912 --> 00:11:17,120 A medida que avanzamos ahora a la web desarrollo, hablamos un poco 270 00:11:17,120 --> 00:11:20,680 sobre el cambio de permisos de archivos y directorios 271 00:11:20,680 --> 00:11:24,190 de modo que puede ser accesible a otros usuarios, para el mundo, 272 00:11:24,190 --> 00:11:28,640 y para que podamos ver cómo Básicamente podemos transmitirlas 273 00:11:28,640 --> 00:11:32,600 cuando desarrollamos cosas como sitios web que sobre todo hemos estado haciendo. 274 00:11:32,600 --> 00:11:36,400 >> Así vimos el comando chmod, que es el modo de cambio, básicamente. 275 00:11:36,400 --> 00:11:39,300 Eso es un comando Linux y modifica los permisos de acceso 276 00:11:39,300 --> 00:11:40,410 de los objetos del sistema de archivos. 277 00:11:40,410 --> 00:11:43,370 Y un objeto del sistema de archivos es sólo un directorio, un archivo, 278 00:11:43,370 --> 00:11:46,810 nada que pueda cambiar los permisos de. 279 00:11:46,810 --> 00:11:53,750 >> Así que para ver los permisos de archivos, tecleamos el comando ls, lista, -l. 280 00:11:53,750 --> 00:11:56,500 Y cuando escribimos eso, suele ver algunos permisos 281 00:11:56,500 --> 00:11:59,660 esa mirada algo así como este delante de un nombre de directorio. 282 00:11:59,660 --> 00:12:01,260 Así que d se refiere al directorio. 283 00:12:01,260 --> 00:12:05,930 Y luego tenemos tres tríadas que, básicamente, 284 00:12:05,930 --> 00:12:11,675 consulte los permisos de cualquiera un usuario, un grupo, o del mundo. 285 00:12:11,675 --> 00:12:16,490 >> Los tipos de permisos que podemos tener para estos tres grupos de personas 286 00:12:16,490 --> 00:12:20,830 son o bien r para lectura, w para escribir, y x para ejecutar. 287 00:12:20,830 --> 00:12:23,650 Y podemos tener las de el grupo y el mundo también. 288 00:12:23,650 --> 00:12:26,940 Lo complicado es que a veces cuando tecleamos el comando chmod, 289 00:12:26,940 --> 00:12:32,960 nos escriba algún número que consistía en tres bits. 290 00:12:32,960 --> 00:12:36,990 Así que podríamos hacer como 777 y que básicamente 291 00:12:36,990 --> 00:12:40,450 a que se refiere el valor añadido de cada una de estas tríadas 292 00:12:40,450 --> 00:12:45,060 porque r se referiría a 4, w haría se refieren a 2, y x se referirían a 1, 293 00:12:45,060 --> 00:12:50,020 así que cuando se suman, cada uno de los números vendría abajo a un número acumulado 294 00:12:50,020 --> 00:12:52,750 a un valor acumulado entre 0 y 7. 295 00:12:52,750 --> 00:12:55,150 Así también podríamos tener 0 de ningún permiso en absoluto. 296 00:12:55,150 --> 00:12:58,200 Y que en el fondo nos daría los permisos para el usuario, ya sea 297 00:12:58,200 --> 00:13:00,450 el grupo, o el mundo. 298 00:13:00,450 --> 00:13:02,620 ¿Tiene preguntas sobre este hasta el momento? 299 00:13:02,620 --> 00:13:05,331 >> AUDIENCIA: Usted dijo Read era 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: Sí. 301 00:13:06,164 --> 00:13:07,568 AUDIENCIA: [inaudible]. 302 00:13:07,568 --> 00:13:08,504 HANNAH BLUMBERG: Sí. 303 00:13:08,504 --> 00:13:11,790 AUDIENCIA: Y luego añadiendo todos aquellos otros lo indique su número. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: Sí. 305 00:13:12,665 --> 00:13:14,970 Sí. 306 00:13:14,970 --> 00:13:17,810 Estas son las grandes preguntas. 307 00:13:17,810 --> 00:13:20,490 Encantador. 308 00:13:20,490 --> 00:13:25,340 A continuación, nos metió en HTML y un poco más sobre el desarrollo web. 309 00:13:25,340 --> 00:13:27,990 Así HTML sólo significa HyperText Markup Language. 310 00:13:27,990 --> 00:13:30,460 Y ese es el margen de beneficio lenguaje que es una norma 311 00:13:30,460 --> 00:13:32,720 que se usa para crear páginas web. 312 00:13:32,720 --> 00:13:35,750 >> Se llama un lenguaje de marcas porque no es en realidad compilado. 313 00:13:35,750 --> 00:13:40,310 No dice cómo algún código debe ser ejecutado ni nada de eso. 314 00:13:40,310 --> 00:13:44,800 Simplemente delinea y describe cómo un web 315 00:13:44,800 --> 00:13:46,840 página debe configurarse con cada uno de sus elementos 316 00:13:46,840 --> 00:13:48,460 y cómo deben mirar hacia el usuario. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> Algunas de las etiquetas HTML que nos se fue por arriba son los siguientes. 319 00:13:57,110 --> 00:14:00,500 Todos nuestros documentos HTML comenzó con el DOCTYPE html. 320 00:14:00,500 --> 00:14:02,550 Entonces siempre tenemos la etiqueta html. 321 00:14:02,550 --> 00:14:03,930 Tenemos una cabeza y un cuerpo. 322 00:14:03,930 --> 00:14:07,890 Y es importante que HTML tiene este tipo de estructura anidada 323 00:14:07,890 --> 00:14:09,280 porque es muy claro. 324 00:14:09,280 --> 00:14:13,200 Y entonces se hace muy claro cuando deberá abrir y cerrar de hecho las etiquetas. 325 00:14:13,200 --> 00:14:18,400 Y siempre necesitamos para cerrar etiquetas que hemos abierto. 326 00:14:18,400 --> 00:14:23,170 >> Y aquí tenemos algunos de los tipos de las cosas por delante que queremos tener. 327 00:14:23,170 --> 00:14:26,580 Así tenemos, por ejemplo, el título de CS50. 328 00:14:26,580 --> 00:14:31,980 Y luego que en realidad puede vincular una hoja de estilo 329 00:14:31,980 --> 00:14:34,030 que define la forma en que estilo de nuestro sitio web. 330 00:14:34,030 --> 00:14:35,650 Es decir CSS. 331 00:14:35,650 --> 00:14:39,320 Vamos a ir sobre ella en el próximo par de diapositivas también. 332 00:14:39,320 --> 00:14:42,580 >> Dentro del cuerpo, establecemos algunas clases y los identificadores. 333 00:14:42,580 --> 00:14:45,860 Y como un recordatorio, una vez más, IDs son únicos y clases 334 00:14:45,860 --> 00:14:47,390 pueden ser asignados a varios elementos. 335 00:14:47,390 --> 00:14:52,110 Y eso sólo significa que podemos utilizar las clases y los identificadores 336 00:14:52,110 --> 00:14:55,860 dentro de otra structures-- así, por ejemplo, dentro de los archivos CSS o el estilo 337 00:14:55,860 --> 00:15:00,940 sheets-- para referirse a elementos específicos y básicamente decimos que queremos que el estilo 338 00:15:00,940 --> 00:15:03,280 o diseñar algún elemento de alguna manera en particular. 339 00:15:03,280 --> 00:15:06,440 Y nos referimos a ellos por sus identificadores y clases. 340 00:15:06,440 --> 00:15:09,870 Y también podemos hacer referencia a diferentes cosas por las etiquetas, así, 341 00:15:09,870 --> 00:15:13,830 pero identificadores y clases sólo nos dan una versatilidad y lo que específicamente nos 342 00:15:13,830 --> 00:15:15,850 quiera consultar. 343 00:15:15,850 --> 00:15:19,620 >> Tan sólo un ejemplo. 344 00:15:19,620 --> 00:15:22,730 Podemos, de nuevo, en el plazo un archivo CSS en el que 345 00:15:22,730 --> 00:15:25,770 desee definir algunos style-- lo colores, fuentes, 346 00:15:25,770 --> 00:15:30,340 y cosas así que-- podemos definir el estilo de un cuerpo. 347 00:15:30,340 --> 00:15:32,640 Así que lo definiría para todo el cuerpo de la etiqueta. 348 00:15:32,640 --> 00:15:36,160 Pero entonces también podemos definir un estilo para un #title. 349 00:15:36,160 --> 00:15:40,390 Y de nuevo, el hashtag se refiere a nuestra ID y el punto se refiere a nuestra clase. 350 00:15:40,390 --> 00:15:44,760 >> Y luego por los .info, nos También puede establecer algunos atributos. 351 00:15:44,760 --> 00:15:49,750 Y otra vez, cuando volvamos, tuvimos nuestra clase llamada información y nuestro título ID. 352 00:15:49,750 --> 00:15:53,422 Y podemos ver que nos referimos que les #title y .info. 353 00:15:53,422 --> 00:15:55,380 AUDIENCIA: ¿Dirías etiqueta [? ¿adoptarme? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: Lo siento? 355 00:15:55,725 --> 00:15:58,120 AUDIENCIA: ¿Dirías etiqueta [? ¿adoptarme? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: Hashtag significa ID, por lo #title 357 00:16:01,400 --> 00:16:07,890 se refiere a cualquier elementos tener este ID llamado título. 358 00:16:07,890 --> 00:16:10,735 Y entonces el punto se refiere a una clase. 359 00:16:10,735 --> 00:16:14,590 Así .info se refiere a este elemento porque tiene la información de clase. 360 00:16:14,590 --> 00:16:15,090 Sip. 361 00:16:15,090 --> 00:16:17,905 >> AUDIENCIA: ¿Por qué tienes distinguirlos en el HTML? 362 00:16:17,905 --> 00:16:20,985 ¿Por qué dice ciertas cosas son Identificaciones y ciertas cosas son de clase? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: Eso es sólo hasta usted-- 364 00:16:22,610 --> 00:16:24,151 HANNAH BLUMBERG: Repite la pregunta. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: Oh, lo siento. 366 00:16:25,370 --> 00:16:29,480 ¿Por qué nos distinguimos ciertos elementos como identificaciones y otros elementos como las clases? 367 00:16:29,480 --> 00:16:34,760 Eso es sólo porque es muy a menudo una opción de diseño. 368 00:16:34,760 --> 00:16:38,520 Le da una gran cantidad de versatilidad en ser 369 00:16:38,520 --> 00:16:43,250 capaz de decir quiero que este artículo específico tener este ID porque quieren 370 00:16:43,250 --> 00:16:45,300 que hacer un montón de cosas con él, y yo sólo 371 00:16:45,300 --> 00:16:50,010 desee definir un estilo, cierto estilo o color que sea para ese elemento. 372 00:16:50,010 --> 00:16:52,630 Y la manera de hacerlo es simplemente dándole un ID. 373 00:16:52,630 --> 00:16:55,060 >> Y luego si quiero tener un par de diferentes artículos 374 00:16:55,060 --> 00:16:58,940 que tiene que, en lugar de ir y establecer their-- 375 00:16:58,940 --> 00:17:03,840 en lugar de hacerlo por etiqueta porque la etiqueta haría 376 00:17:03,840 --> 00:17:07,369 establecer la célula para toda la etiqueta por cada vez que se usa esa etiqueta, 377 00:17:07,369 --> 00:17:09,740 puede definir una clase para varios elementos. 378 00:17:09,740 --> 00:17:15,109 Y luego simplemente acceder a esa clase y decir Quiero el estilo de esta clase de esa manera. 379 00:17:15,109 --> 00:17:17,579 >> Y de nuevo, la clase puede haber varios artículos diferentes 380 00:17:17,579 --> 00:17:21,150 y el ID tiene que ser único. 381 00:17:21,150 --> 00:17:21,849 Grandes preguntas. 382 00:17:21,849 --> 00:17:25,339 ¿Alguna otra pregunta? 383 00:17:25,339 --> 00:17:26,220 OK, impresionante. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 Una vez más, se trata de cómo estos selectores se hace referencia en CSS, con el hashtag, 386 00:17:35,330 --> 00:17:40,031 con el punto, o sin nada por asignando el estilo de alguna etiqueta, 387 00:17:40,031 --> 00:17:40,530 como el cuerpo. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 Y aquí tenemos al general sintaxis de cómo se hace esto. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> Para repetir algunas de las mejores prácticas para HTML y CSS, 392 00:17:55,680 --> 00:17:59,170 tenemos que, de nuevo, cerca de todo las etiquetas HTML que se pueden abrir. 393 00:17:59,170 --> 00:18:03,950 Y lo que te recomendamos hacer para sus proyectos finales, 394 00:18:03,950 --> 00:18:10,560 así como para CS50 Finanzas, es hacer Asegúrese de que todos los de su HTML valida. 395 00:18:10,560 --> 00:18:12,920 Y eso se hace con el W3 Validator. 396 00:18:12,920 --> 00:18:16,940 >> Y entonces lo que hicimos y lo que se recomienda hacer 397 00:18:16,940 --> 00:18:19,790 se separa el estilo, por lo CSS de HTML marcado. 398 00:18:19,790 --> 00:18:24,210 Así que cualquier cosa que se relaciona con cómo tu página se va a ver visualmente 399 00:18:24,210 --> 00:18:27,330 y cómo va a ser modificada debe ir en un documento CSS. 400 00:18:27,330 --> 00:18:33,880 Y entonces su margen de beneficio diciendo cómo las cosas están en relación entre sí es HTML, 401 00:18:33,880 --> 00:18:37,550 y que debe ir dentro de de los documentos HTML. 402 00:18:37,550 --> 00:18:38,590 ¿Alguna pregunta? 403 00:18:38,590 --> 00:18:39,226 Mhm. 404 00:18:39,226 --> 00:18:42,628 >> AUDIENCIA: ¿Qué es exactamente que está pasando con la validación página 405 00:18:42,628 --> 00:18:47,945 cuando estamos validando el HTML que [inaudible] creó? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: Así que-- piensas. 407 00:18:49,850 --> 00:18:53,020 Entonces, ¿qué está pasando con la validación de la página 408 00:18:53,020 --> 00:18:55,570 y ¿por qué tenemos que hacer eso? 409 00:18:55,570 --> 00:18:59,180 Básicamente, tenemos que hacer eso porque muchas veces, su navegador, 410 00:18:59,180 --> 00:19:01,390 si no cierras una etiqueta o algo así, 411 00:19:01,390 --> 00:19:05,680 tu navegador es todavía va a representar una página y todavía podría funcionar, 412 00:19:05,680 --> 00:19:10,840 pero es la mejor práctica para asegurarse de que usted tiene, de nuevo, cerró todas sus etiquetas, 413 00:19:10,840 --> 00:19:13,190 que todos sus elementos son la forma en que deberían ser, 414 00:19:13,190 --> 00:19:18,470 y, básicamente, que es por el convenciones que vienen predeterminados. 415 00:19:18,470 --> 00:19:21,970 >> Es, de nuevo, sólo un Lo que usted debe 416 00:19:21,970 --> 00:19:24,040 debe aprender a hacer, en lugar de tener 417 00:19:24,040 --> 00:19:25,696 código descuidado y cosas por el estilo. 418 00:19:25,696 --> 00:19:26,688 Sí. 419 00:19:26,688 --> 00:19:27,680 Oh, lo siento. 420 00:19:27,680 --> 00:19:29,221 Pensé que estaba criando a su mano. 421 00:19:29,221 --> 00:19:31,240 AUDIENCIA: No, yo era [inaudible]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: OK. 423 00:19:33,800 --> 00:19:34,640 >> AUDIENCIA: Gracias. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: Por supuesto, gracias. 425 00:19:36,181 --> 00:19:41,680 Así que de nuevo, pasando de cómo la información se transfiere 426 00:19:41,680 --> 00:19:44,630 y modelos de comunicación para transferir información. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP sólo significa Transmisión Protocolo de control e IP 429 00:19:48,600 --> 00:19:51,260 se refiere al Protocolo de Internet. 430 00:19:51,260 --> 00:19:54,275 Y eso solo se refiere a los datos de forma se entrega. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> Si tenemos algunos datos que necesita entregado a usted-- por lo 433 00:20:02,710 --> 00:20:06,770 usted hace una solicitud para un determinado servidor. 434 00:20:06,770 --> 00:20:09,800 Por ejemplo, cuando tratar de acceder cs50.net, 435 00:20:09,800 --> 00:20:12,420 hacemos una solicitud a el servidor CS50 y nos 436 00:20:12,420 --> 00:20:14,720 vemos que queremos llegar este tipo de información. 437 00:20:14,720 --> 00:20:19,294 Y a continuación, se basan en este protocolo para cómo se entrega esta información, 438 00:20:19,294 --> 00:20:21,460 el servidor proporciona información de nuevo a nosotros, el cliente. 439 00:20:21,460 --> 00:20:25,590 Y entonces somos capaces de ver la información de la página 440 00:20:25,590 --> 00:20:26,390 y luego usarlo. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> Entonces Protocolo de transferencia de hipertexto es sólo otro protocolo o conjunto 443 00:20:33,050 --> 00:20:37,470 de las convenciones que define cómo el navegador web y el servidor web 444 00:20:37,470 --> 00:20:38,890 debe comunicarse. 445 00:20:38,890 --> 00:20:43,730 Y poner todo esto juntos, HTTP, de nuevo, 446 00:20:43,730 --> 00:20:50,960 simplemente define cómo define este hipertexto por el HTML que hemos estado trabajando es, 447 00:20:50,960 --> 00:20:59,500 cómo debe ser entregado a usted y lo que los datos que se entrega a usted 448 00:20:59,500 --> 00:21:00,540 llega a ti. 449 00:21:00,540 --> 00:21:05,990 >> Y por eso, si ustedes recuerden de una clase, teníamos un montón de peticiones 450 00:21:05,990 --> 00:21:08,970 y teníamos un montón de sintaxis para estas solicitudes que estamos 451 00:21:08,970 --> 00:21:10,250 va a pasar ahora. 452 00:21:10,250 --> 00:21:13,270 Así que de nuevo, cuando enviamos una solicitud a un servidor, 453 00:21:13,270 --> 00:21:15,920 tenemos que definir un par de cosas. 454 00:21:15,920 --> 00:21:18,520 Así que tenemos que encontrar el tipo de la solicitud de que estamos configurando. 455 00:21:18,520 --> 00:21:22,180 Y de nuevo, tenemos, por ejemplo, GET es un tipo de método 456 00:21:22,180 --> 00:21:25,290 que tenemos en nuestra petición. 457 00:21:25,290 --> 00:21:31,710 >> Y luego HTTP / 1.1 es sólo el protocolo que estamos utilizando actualmente. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 La mayoría de las veces, eso va al protocolo que estamos utilizando. 460 00:21:36,890 --> 00:21:40,290 Así que si usted tiene una pregunta al igual que en el cuestionario. 461 00:21:40,290 --> 00:21:43,120 Eso es los convenios que tenemos hasta ahora. 462 00:21:43,120 --> 00:21:46,580 >> Barra invertida se refiere a qué tipo de las cosas que estamos solicitando. 463 00:21:46,580 --> 00:21:52,810 Entonces, nuestro anfitrión es, por ejemplo, en este caso, estamos tratando de ir a google.com. 464 00:21:52,810 --> 00:21:57,070 Así que este es el valor de un host. 465 00:21:57,070 --> 00:21:59,330 Este es un tipo de solicitud que podrían ser enviados. 466 00:21:59,330 --> 00:22:02,890 >> Y entonces un tipo de respuesta que podrían ser enviado, de nuevo, basado en este protocolo, 467 00:22:02,890 --> 00:22:05,190 es más, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 Así que esa es la versión HTTP de nuevo. 469 00:22:07,150 --> 00:22:09,730 200 OK es sólo el código de estado. 470 00:22:09,730 --> 00:22:12,860 Y eso bien es sólo una frase sobre la base de que el código de estado. 471 00:22:12,860 --> 00:22:15,520 >> Y entonces el Content-Type se refiere al tipo 472 00:22:15,520 --> 00:22:20,295 que se devuelve a usted que es para esa página web que usted recibe 473 00:22:20,295 --> 00:22:22,570 y que su navegador puede hacer después. 474 00:22:22,570 --> 00:22:24,401 Y eso es text / html. 475 00:22:24,401 --> 00:22:26,660 >> AUDIENCIA: ¿Qué significa 1.1? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: Eso es sólo el Versión de-- oh, ¿qué significa 1.1? 477 00:22:29,910 --> 00:22:37,075 Eso es sólo la versión, el HTTP versión de un protocolo que estamos utilizando. 478 00:22:37,075 --> 00:22:37,700 Muy buena pregunta. 479 00:22:37,700 --> 00:22:38,366 ¿Otras preguntas? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> AUDIENCIA: ¿Podrías resumir Content-Type muy rápido? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: Para que es lo que el servidor. 483 00:22:48,150 --> 00:22:51,020 el tipo de información-- lo es tipo de contenido fueron las preguntas. 484 00:22:51,020 --> 00:22:53,400 Así que era el tipo de información que se obtiene de vuelta 485 00:22:53,400 --> 00:22:58,200 desde el servidor, el tipo de datos que el navegador puede entonces 486 00:22:58,200 --> 00:23:00,604 rindes que está utilizando. 487 00:23:00,604 --> 00:23:03,020 AUDIENCIA: ¿Eso es lo que este protocolo que está diciendo que hacer? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: Lo siento? 489 00:23:03,390 --> 00:23:05,380 AUDIENCIA: ¿Es eso lo que dice el protocolo? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: El protocol-- 491 00:23:05,915 --> 00:23:07,940 AUDIENCIA: --¿Qué el Content-Type es o qué-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: El protocolo se basa en-- ¿cuál es el protocolo que le dice? 493 00:23:12,040 --> 00:23:16,070 Eso es sólo la forma que esta información 494 00:23:16,070 --> 00:23:18,610 fue entregado a usted, basado de qué tipo de protocolo 495 00:23:18,610 --> 00:23:21,830 Se obtuvo esta información entregado de nuevo a usted. 496 00:23:21,830 --> 00:23:23,500 ¿Eso tiene sentido una especie de? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 HANNAH BLUMBERG: Usted puede pensar en el protocolo 499 00:23:30,070 --> 00:23:33,300 como A-- Creo que el profesor Malan describió 500 00:23:33,300 --> 00:23:36,910 en la clase como una especie de A-- es como el equivalente de handshaking humano. 501 00:23:36,910 --> 00:23:44,930 Decir, como, hey, soy un pedido y yo saber manejar HTTP de la versión 1.1. 502 00:23:44,930 --> 00:23:48,770 Y entonces el servidor dice, oh, bien, existen yo-- y ambos. 503 00:23:48,770 --> 00:23:51,337 También sé cómo lidiar con HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 Y yo voy a dar hacer una copia de algún contenido. 505 00:23:53,170 --> 00:23:56,230 En este caso, se va al ser de tipo text / html. 506 00:23:56,230 --> 00:23:58,480 Así que es una especie de sólo una forma de ellos por communicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: Es sólo confirmando que eres 508 00:24:00,480 --> 00:24:03,290 tanto siguiendo el mismo protocolo y que tanto 509 00:24:03,290 --> 00:24:06,620 el cliente y el modo server-- su navegador y el server-- 510 00:24:06,620 --> 00:24:09,280 tipo de sabes lo que eres hablando y tienen 511 00:24:09,280 --> 00:24:12,557 la convención para el paso de datos. 512 00:24:12,557 --> 00:24:17,022 >> AUDIENCIA: Así que el Content-Type parcialmente: el texto Content-Type / html-- que es 513 00:24:17,022 --> 00:24:18,521 una parte separada del mismo mensaje? 514 00:24:18,521 --> 00:24:20,509 ¿O es parte de, digamos, 200? 515 00:24:20,509 --> 00:24:22,010 ¿Tiene 200 les digo que o es-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 dice todo ha ido bien. 517 00:24:23,770 --> 00:24:27,900 Y luego el tipo de contenido es una especie de parte separada del mismo mensaje, 518 00:24:27,900 --> 00:24:34,274 y diciendo lo que yo vuelto tiene este tipo de text / html. 519 00:24:34,274 --> 00:24:35,690 Es simplemente dar más información. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 Tiene algo que añadir? 522 00:24:39,995 --> 00:24:40,495 OKAY. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> ¿Alguna otra pregunta sobre esto? 525 00:24:46,530 --> 00:24:48,370 Impresionante. 526 00:24:48,370 --> 00:24:54,070 Así que algunos otros estados HTTP que que pudimos conseguir, además de 200 OK, 527 00:24:54,070 --> 00:24:59,500 Los que hemos visto tal vez posiblemente muchos son 403 y 404. 528 00:24:59,500 --> 00:25:05,190 Así que 404, si intentabas Acceso algo que no existe. 529 00:25:05,190 --> 00:25:10,460 Así, por ejemplo, en su Conjuntos de procesadores CS50 Finanzas, 530 00:25:10,460 --> 00:25:15,640 si hubieras estado rindiendo quote.html y usted no tiene ese archivo, 531 00:25:15,640 --> 00:25:19,740 sino que tenía quote.php, que daría lugar a un 404 no encontrado 532 00:25:19,740 --> 00:25:21,600 porque el archivo podría no existir. 533 00:25:21,600 --> 00:25:25,690 >> Para un 403 prohibido, que se refiere a los permisos. 534 00:25:25,690 --> 00:25:31,150 Así que si algún archivo no es legible por el mundo, usted puede ser que consiga un 403 regresado. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 Algunos otros que usted puede ser get-- 301 Movido permanentemente; 537 00:25:37,810 --> 00:25:41,300 302, que se encuentra; 304, modificado; 400 Petición Incorrecta; 538 00:25:41,300 --> 00:25:47,330 y Error interno del servidor para luego 500 y 503, Servicio no disponible. 539 00:25:47,330 --> 00:25:48,140 Sí. 540 00:25:48,140 --> 00:25:51,490 >> AUDIENCIA: ¿Será que nos espera memorizar todos esos estados? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: Tendría en tu hoja de trucos. 542 00:25:53,739 --> 00:25:55,146 [RISA] 543 00:25:55,146 --> 00:25:59,954 AUDIENCIA: ¿Estamos esperábamos saber lo que desencadena cada uno? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: ¿Lo son? 545 00:26:00,995 --> 00:26:03,870 HANNAH BLUMBERG: Para los que hemos ejecutar into-- así que la pregunta era-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: Son esperaban saber lo que cada uno de estos estados 547 00:26:08,010 --> 00:26:09,330 códigos podría ser desencadenada por? 548 00:26:09,330 --> 00:26:13,240 Así que para los que hemos usado y corrió hacia, yo diría que sí. 549 00:26:13,240 --> 00:26:16,610 Así que hemos visto definitivamente 200 Aceptar y dado conferencias en conjuntos de procesadores. 550 00:26:16,610 --> 00:26:19,071 Hemos visto 403, 404. 551 00:26:19,071 --> 00:26:20,550 Para otros? 552 00:26:20,550 --> 00:26:22,690 >> HANNAH BLUMBERG: lo haría dicen 500 parece un juego justo. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, sí. 554 00:26:23,330 --> 00:26:24,246 >> HANNAH BLUMBERG: Sí. 555 00:26:24,246 --> 00:26:27,006 Sólo tienen un sentido general de lo que los causa. 556 00:26:27,006 --> 00:26:28,880 Y también con sólo éstas nombres, puede tipo de 557 00:26:28,880 --> 00:26:32,890 como hacer una conjetura como a lo que realmente les causó. 558 00:26:32,890 --> 00:26:36,919 Por ejemplo, moverse de forma permanente, probablemente el archivo se ha movido de forma permanente. 559 00:26:36,919 --> 00:26:39,328 >> AUDIENCIA: Pero en un anterior examen, por lo que había una 560 00:26:39,328 --> 00:26:41,050 ¿cómo esperas que responder a eso? 561 00:26:41,050 --> 00:26:42,883 >> HANNAH BLUMBERG: Eso valía cero puntos. 562 00:26:42,883 --> 00:26:45,870 La pregunta sobre 418 en la tetera es técnicamente un estado HTTP, 563 00:26:45,870 --> 00:26:47,090 pero valió la pena cero puntos. 564 00:26:47,090 --> 00:26:48,320 Obviamente, usted no está espera que conocerlos. 565 00:26:48,320 --> 00:26:49,670 >> AUDIENCIA: ¿Es uno de verdad? 566 00:26:49,670 --> 00:26:51,970 >> HANNAH BLUMBERG: Es un verdadero uno, pero no quiere decir nada. 567 00:26:51,970 --> 00:26:52,700 Es sólo una broma. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 La gente de Internet son divertidos. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: Grandes preguntas, chicos. 571 00:26:59,680 --> 00:27:01,452 ¿Alguna otra pregunta? 572 00:27:01,452 --> 00:27:04,891 >> AUDIENCIA: ¿Cuál es el error interno del servidor? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: Interna error de servidor solo 574 00:27:06,640 --> 00:27:10,050 significa que ha sido incapaz de comunicarse 575 00:27:10,050 --> 00:27:13,400 con el servidor por alguna razón. 576 00:27:13,400 --> 00:27:15,400 Así que no es necesariamente algo que tiene que ver 577 00:27:15,400 --> 00:27:19,170 con el cliente o algo por el estilo. 578 00:27:19,170 --> 00:27:22,170 Yo no conozco ningún ejemplo específico que hemos ido a explicar, 579 00:27:22,170 --> 00:27:23,000 pero sí. 580 00:27:23,000 --> 00:27:23,250 >> HANNAH BLUMBERG: Claro. 581 00:27:23,250 --> 00:27:25,625 Así, por ejemplo, como vamos a dice que estaba trabajando mashup 582 00:27:25,625 --> 00:27:30,440 y un servidor de Google bajó para algunos razón, un corte de energía, digamos. 583 00:27:30,440 --> 00:27:33,400 Eso sería un servidor interno error o algún tipo de-- gustas 584 00:27:33,400 --> 00:27:34,630 no obtener una respuesta de vuelta. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: Sí. 586 00:27:35,260 --> 00:27:37,050 Es sólo cuando estás incapaz de comunicarse 587 00:27:37,050 --> 00:27:40,299 con el servidor por alguna razón porque de ella bajando o alguna otra razón. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 Así que saltar en PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, a diferencia de HTML, es un lenguaje de programación. 591 00:27:49,930 --> 00:27:54,820 Y empezamos a usarlo porque es muy útil para el desarrollo web. 592 00:27:54,820 --> 00:27:56,940 >> Primero usamos en CS50 Finanzas. 593 00:27:56,940 --> 00:28:02,240 Y, básicamente, nos ayuda a traer juntos esta marcado, el diseño, 594 00:28:02,240 --> 00:28:07,460 y la forma en que realmente utilizamos la información para mostrar las cosas en una página web. 595 00:28:07,460 --> 00:28:11,870 Así PHP en sí significa PHP Pre-procesador de hiper-texto, 596 00:28:11,870 --> 00:28:15,360 así que es una backnorym recursiva por sí mismo. 597 00:28:15,360 --> 00:28:22,330 Y la apertura de las etiquetas para PHP que la izquierda y flechas derecha con los signos de interrogación 598 00:28:22,330 --> 00:28:23,060 y php. 599 00:28:23,060 --> 00:28:25,890 >> Así que ya hemos visto un montón de él. 600 00:28:25,890 --> 00:28:29,150 Ahora, sólo vamos a ir algunas de las cosas básicas acerca de ella. 601 00:28:29,150 --> 00:28:32,280 Así que con PHP, la variable nombres comienzan con el signo de dólar. 602 00:28:32,280 --> 00:28:35,660 No especificamos, de nuevo, escriba más de una variable. 603 00:28:35,660 --> 00:28:38,450 Al igual que hicimos con C, no necesitamos hacer eso. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> Podemos hacer un montón de diferentes cosas con variables. 606 00:28:44,490 --> 00:28:47,750 Podemos ponerlos juntos concatenando ellos 607 00:28:47,750 --> 00:28:52,900 con la notación de puntos, lo que no podíamos hacer en C de nuevo. 608 00:28:52,900 --> 00:28:57,490 Una vez más, tenemos un poco más de versatilidad con PHP en términos de variables. 609 00:28:57,490 --> 00:29:00,080 Una vez más, no tenemos una función principal. 610 00:29:00,080 --> 00:29:03,370 >> Y PHP se interpreta en contraposición a compilado, 611 00:29:03,370 --> 00:29:09,970 Así que lo que hicimos para los archivos de C, no tenemos que hacer eso para PHP. 612 00:29:09,970 --> 00:29:15,440 Pero más bien, la forma en que el idioma se ejecuta por sí mismo, se interpreta. 613 00:29:15,440 --> 00:29:18,550 Y después se pasan libremente simplemente significa que tenemos 614 00:29:18,550 --> 00:29:22,490 no tiene que especificar una variable tipo y los tipos de variables 615 00:29:22,490 --> 00:29:25,415 se entienden en tiempo de ejecución. 616 00:29:25,415 --> 00:29:29,185 >> AUDIENCIA: Pero lo que hizo decir con la concatenación de puntos? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: Claro. 618 00:29:30,060 --> 00:29:37,660 Cuando queremos poner las cosas juntos-- por lo que si teníamos alguna variable que 619 00:29:37,660 --> 00:29:41,500 tenido el valor de 3 y tuvimos otra variable que tenía el valor de cadena, 620 00:29:41,500 --> 00:29:45,920 podríamos poner las variables juntas poniendo un punto en entre ellas 621 00:29:45,920 --> 00:29:46,970 y la concatenación de ellos. 622 00:29:46,970 --> 00:29:52,670 O podríamos crear un llamado nombre de la variable 623 00:29:52,670 --> 00:29:56,900 y poner juntos por concatenar dos cadenas. 624 00:29:56,900 --> 00:30:00,680 >> Así que si tuviéramos una cadena en doble cotizaciones y nos pusieron un punto después de que, 625 00:30:00,680 --> 00:30:03,660 y luego tuvimos otra cadena, que crearía una cadena por completo. 626 00:30:03,660 --> 00:30:05,242 >> AUDIENCIA: OK. 627 00:30:05,242 --> 00:30:06,450 MARIA LETONIA: Fue claro? 628 00:30:06,450 --> 00:30:07,099 AUDIENCIA: Sí. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: OK. 630 00:30:07,890 --> 00:30:08,766 Sí. 631 00:30:08,766 --> 00:30:11,146 >> AUDIENCIA: Cuando usted dice interpretado en lugar de compilado, 632 00:30:11,146 --> 00:30:14,160 estás hablando no lo hace tienen que ser lo más específico cuando 633 00:30:14,160 --> 00:30:15,906 se trata de PHP frente a C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: Cuando decimos interpretado en oposición a compilado, 636 00:30:20,710 --> 00:30:21,850 ¿qué queremos decir? 637 00:30:21,850 --> 00:30:26,220 Así que eso significa que no necesitamos archivos ejecutables para ejecutar PHP. 638 00:30:26,220 --> 00:30:29,870 Esto significa que se ejecuta como va. 639 00:30:29,870 --> 00:30:31,650 Tiene sentido? 640 00:30:31,650 --> 00:30:32,495 Un poco más. 641 00:30:32,495 --> 00:30:34,620 HANNAH BLUMBERG: ¿Así que puede pensar en un intérprete 642 00:30:34,620 --> 00:30:38,980 como otro programa que es responsable para ir línea por línea en PHP 643 00:30:38,980 --> 00:30:42,745 y en realidad ejecutarlo, en oposición a compilar todo abajo a binario. 644 00:30:42,745 --> 00:30:46,050 En realidad, no significa nada sobre cómo específica que tenemos que ser. 645 00:30:46,050 --> 00:30:49,470 Todavía tenemos que ser precisos, y no lo hacemos olvide su punto y coma, y ​​asegúrese 646 00:30:49,470 --> 00:30:51,470 usted tiene su signo de dólar, y cosas asi. 647 00:30:51,470 --> 00:30:52,240 Buena pregunta. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: Sí. 649 00:30:53,115 --> 00:30:55,590 Así línea por línea, como a diferencia de con los archivos de C, 650 00:30:55,590 --> 00:30:59,100 tenemos que hacer que toda la final antes de que realmente podemos ejecutarlo. 651 00:30:59,100 --> 00:31:00,360 Esa es la principal diferencia. 652 00:31:00,360 --> 00:31:02,655 Pero, de nuevo, no podemos realmente ser menos específico. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 Así matrices en PHP representan en realidad un mapa ordenado. 655 00:31:13,950 --> 00:31:17,550 >> Así que los valores de las matrices asociadas a las teclas. 656 00:31:17,550 --> 00:31:23,350 Las dos maneras de declarar una array, basado en esta sintaxis, 657 00:31:23,350 --> 00:31:26,380 podemos ser más explícita al decir que tenemos una matriz 658 00:31:26,380 --> 00:31:31,010 y tenemos este key1 que se asigna a este valor1, valor2 key2 que se asigna. 659 00:31:31,010 --> 00:31:34,660 O simplemente podemos crear una matriz que contiene los valores en sí 660 00:31:34,660 --> 00:31:38,360 y luego las teclas son entendida de una manera. 661 00:31:38,360 --> 00:31:40,000 Para cualquier duda sobre esto? 662 00:31:40,000 --> 00:31:42,500 >> Audiencia: ¿Cuáles serían las claves estar en el segundo ejemplo? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: Por ejemplo, es sólo las claves en esto no hacen necesariamente 667 00:31:55,780 --> 00:31:56,550 Hacer la diferencia. 668 00:31:56,550 --> 00:32:01,720 Ellos simplemente definir cómo se puede utilizar los valores dentro de ella. 669 00:32:01,720 --> 00:32:08,660 Así que si teníamos un foreach bucle en PHP que lo haría 670 00:32:08,660 --> 00:32:14,760 nos permite ir a través de todos los valores, podemos ir a través de todos los valores, 671 00:32:14,760 --> 00:32:19,570 incluso si teníamos o no habíamos definido una tecla específica en el sitio de 672 00:32:19,570 --> 00:32:20,820 sintaxis anterior. 673 00:32:20,820 --> 00:32:23,460 >> Así que incluso con este tipo de la matriz, que todavía podía 674 00:32:23,460 --> 00:32:26,260 tener un bucle foreach que va a través de cada 675 00:32:26,260 --> 00:32:31,240 de los valores de la clave en la matriz. 676 00:32:31,240 --> 00:32:36,180 Así que la sintaxis de un foreach lazo, empezamos con una matriz. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 Esta variable $ arr es nuestra gama actual que definimos en la diapositiva anterior 679 00:32:43,900 --> 00:32:47,550 como valor que va, literalmente, a través de cada uno de los valores, 680 00:32:47,550 --> 00:32:50,122 independientemente de si tuvimos una llave o no. 681 00:32:50,122 --> 00:32:53,080 Y entonces podemos hacer algo con el valor en el interior del bucle foreach. 682 00:32:53,080 --> 00:32:57,730 Así que de nuevo, si tuviéramos un arsenal como esto aquí created-- 683 00:32:57,730 --> 00:33:03,270 así que tenemos la clave de foo y el valor de bar, la clave de Baz y el valor de qux-- 684 00:33:03,270 --> 00:33:09,730 podemos tener un bucle foreach que pasa por matriz como valor clave 685 00:33:09,730 --> 00:33:11,900 y luego hacer algo con la llave y / o valor. 686 00:33:11,900 --> 00:33:15,980 Pero no lo hacemos siempre necesariamente tiene que tener un foreach bucles que 687 00:33:15,980 --> 00:33:19,410 pasa a través de la matriz como un mapa clave de valor. 688 00:33:19,410 --> 00:33:26,060 Podemos pasar por el array bucle foreach como valor. 689 00:33:26,060 --> 00:33:28,990 >> HANNAH BLUMBERG: Y creo que a-- era su pregunta, lo que 690 00:33:28,990 --> 00:33:31,229 es el índice implícito? 691 00:33:31,229 --> 00:33:31,895 AUDIENCIA: Un poco. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: Oh. 693 00:33:32,240 --> 00:33:33,406 HANNAH BLUMBERG: Sí, sí. 694 00:33:33,406 --> 00:33:36,150 Así que, básicamente, si no se especifica una clave, que va a ser 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: Sí. 696 00:33:37,140 --> 00:33:41,718 Al igual que con C, es cero indexados si no se especifica una clave. 697 00:33:41,718 --> 00:33:42,384 AUDIENCIA: Lo sentimos. 698 00:33:42,384 --> 00:33:43,827 ¿Podrías tratar de hablar un poco más fuerte? 699 00:33:43,827 --> 00:33:45,270 Estoy teniendo un poco de problemas para oír todo. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: lo siento mucho. 701 00:33:46,478 --> 00:33:48,439 Sí, por supuesto. 702 00:33:48,439 --> 00:33:50,230 Así que es lo que quieres de mí para repasar de nuevo? 703 00:33:50,230 --> 00:33:51,680 ¿O es esto-- 704 00:33:51,680 --> 00:33:54,930 AUDIENCIA: Así que en la anterior si slide-- usted podría volver para un segundo. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: Por supuesto, lo siento. 706 00:33:57,313 --> 00:33:59,237 AUDIENCIA: Así que el segundo array aquí no 707 00:33:59,237 --> 00:34:04,135 parecen tener un valor de clave, especie de [? causalidad. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: Cierto, cierto. 709 00:34:05,343 --> 00:34:07,608 AUDIENCIA: Entonces, ¿cómo funciona eso cuando usted dice que es todo o nada. 710 00:34:07,608 --> 00:34:08,969 Para mí, eso parece la [? foo?] ya. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: Sí, sí. 712 00:34:10,093 --> 00:34:12,969 Así que de nuevo, se trata de una mapa ordenado en este sentido 713 00:34:12,969 --> 00:34:15,639 que no se entienden, por ejemplo, los índices 714 00:34:15,639 --> 00:34:20,159 aquí puede entenderse como 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 Una vez más, eso es tener los índices es nuestro equivalente 716 00:34:25,929 --> 00:34:28,980 de tener teclas mapeadas en valores. 717 00:34:28,980 --> 00:34:34,710 Así que si nuestra clave fue 0-- lo siento. 718 00:34:34,710 --> 00:34:36,524 >> HANNAH BLUMBERG: No, Hay apuntarse aquí. 719 00:34:36,524 --> 00:34:36,929 En realidad es muy agradable. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: Eso es genial. 721 00:34:37,460 --> 00:34:38,260 OKAY. 722 00:34:38,260 --> 00:34:49,489 Así que de nuevo, $ arr 0 sería la clave para el valor 1. 723 00:34:49,489 --> 00:34:51,138 0 sería la clave para el valor 1. 724 00:34:51,138 --> 00:34:51,971 AUDIENCIA: Lo siento. 725 00:34:51,971 --> 00:34:53,190 Es invisible. 726 00:34:53,190 --> 00:34:53,659 >> HANNAH BLUMBERG: Muy bien, no importa. 727 00:34:53,659 --> 00:34:54,980 Chalk era una mala idea. 728 00:34:54,980 --> 00:34:58,030 Me retracto. 729 00:34:58,030 --> 00:35:01,425 Usted puede pensar en las teclas como mapas 0 al valor 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: Sí. 731 00:35:02,300 --> 00:35:04,630 Así que este es 0, esto es 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 Estas pueden ser las llaves. 733 00:35:05,760 --> 00:35:10,020 Usted puede pensar en ellos como-- sí. 734 00:35:10,020 --> 00:35:12,740 Así que en lugar de tener claves explícitas, son 735 00:35:12,740 --> 00:35:17,180 tipo de entenderse como siendo los índices a partir de 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 La tiza no ayudó. 738 00:35:24,820 --> 00:35:25,722 Sí. 739 00:35:25,722 --> 00:35:30,914 >> AUDIENCIA: Para el bucle foreach, si queríamos ver el como el valor, 740 00:35:30,914 --> 00:35:33,245 lo haría solo índice automáticamente a 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: Sí. 742 00:35:34,120 --> 00:35:35,745 Sería ir a través de cada uno de los valores. 743 00:35:35,745 --> 00:35:39,130 AUDIENCIA: [inaudible] como 0 o habría que acaba de hacer de 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: Tendrías decir, como signo de dólar y luego 745 00:35:43,710 --> 00:35:46,266 algún nombre de variable, el valor. 746 00:35:46,266 --> 00:35:47,182 AUDIENCIA: [inaudible]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: Lo siento? 749 00:35:50,964 --> 00:35:52,839 AUDIENCIA: Lo siento, estoy tratando de recordar. 750 00:35:52,839 --> 00:35:57,190 ¿Cómo usted que si usted puede hacerlo automáticamente la indexación es de 0? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: Entonces, ¿cómo lo harías si usted no tiene los nombres claves específicas? 752 00:36:00,780 --> 00:36:01,710 >> AUDIENCIA: Sí. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: usted acaba de define-- sólo decir a ti mismo como un nombre. 754 00:36:07,820 --> 00:36:17,950 Así que en sus conjuntos de procesadores, ustedes podrían recuerde $ row foreach como $ filas, 755 00:36:17,950 --> 00:36:24,610 hemos creado nosotros mismos estos $ fila diciendo queremos pasar por fila como $ filas. 756 00:36:24,610 --> 00:36:28,360 A pesar de que no teníamos esta $ explícita filas definidas, 757 00:36:28,360 --> 00:36:31,990 pudiéramos ir y dicen que esto puede ser la llave, 758 00:36:31,990 --> 00:36:33,615 y sólo tiene que ir a través de cada uno de los valores. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> AUDIENCIA: Así es el valor de una variable nueva estamos creando para almacenar [inaudible]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: Así que no es inherentemente una nueva variable. 763 00:36:49,990 --> 00:37:00,310 Es una variable que hace referencia a la en el interior de la matriz a cada uno de ellos. 764 00:37:00,310 --> 00:37:02,060 HANNAH BLUMBERG: Es un nuevo nombre de la variable. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: Sí, es un nuevo nombre de la variable, 766 00:37:04,018 --> 00:37:06,680 pero no es inherently-- sí. 767 00:37:06,680 --> 00:37:08,950 Es sólo una nueva variable que se puede hacer eso. 768 00:37:08,950 --> 00:37:12,680 Entonces, ¿cómo hacemos que hicimos $ remar como $ filas, filas 769 00:37:12,680 --> 00:37:17,980 era un nuevo nombre de la variable que podría crear en nuestro bucle foreach. 770 00:37:17,980 --> 00:37:22,065 No tiene que preexistir antes de eso. 771 00:37:22,065 --> 00:37:25,777 >> AUDIENCIA: ¿Podría pasar por el lógica para cada uno, utilizando el ejemplo allí? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: Mhm. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 Oh, lo siento. 775 00:37:32,080 --> 00:37:33,780 Aquí está el ejemplo. 776 00:37:33,780 --> 00:37:34,280 Por supuesto. 777 00:37:34,280 --> 00:37:38,950 Así que para cada array-- lo eso significa ir a esta matriz 778 00:37:38,950 --> 00:37:43,930 como clave value-- que está pasando que pasar por esta matriz 779 00:37:43,930 --> 00:37:49,480 y primero ir a buscar foo, la foo llave y la barra de valor. 780 00:37:49,480 --> 00:37:51,570 Y luego en el segundo iteración del bucle for, 781 00:37:51,570 --> 00:37:55,090 que va a pasar y tomar el baz clave y el QUX valor. 782 00:37:55,090 --> 00:38:00,512 Y entonces usted puede hacer algo con cualquiera de ellos o ambos de ellos. 783 00:38:00,512 --> 00:38:03,488 >> AUDIENCIA: Así que la idea detrás de que tiene un punto clave para el valor, 784 00:38:03,488 --> 00:38:07,470 ¿qué es lo que terminan el acceso? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: ¿Cuál es la idea de tener un señalador clave para valorar? 786 00:38:10,680 --> 00:38:16,400 Es sólo otra convención, otro forma de recorrer la matriz 787 00:38:16,400 --> 00:38:22,600 y ser capaz de acceder a cualquiera de los llave o el valor o ambos y utilizarlos. 788 00:38:22,600 --> 00:38:27,100 >> AUDIENCIA: ¿Cuál es el papel de la ordenar que el foreach se ejecuta en? 789 00:38:27,100 --> 00:38:29,250 Así que si tuviéramos que añadir elementos a la matriz después, 790 00:38:29,250 --> 00:38:32,140 habría quienes serán los primeros llamada en la matriz foreach, 791 00:38:32,140 --> 00:38:33,750 o sería más tarde? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: Entonces, ¿qué es el fin de que el foreach 793 00:38:37,770 --> 00:38:39,210 bucle pasa por una serie de? 794 00:38:39,210 --> 00:38:42,220 Pasa a través de la primera elemento para el último elemento, 795 00:38:42,220 --> 00:38:43,400 hasta el último elemento añadido. 796 00:38:43,400 --> 00:38:48,020 Si agrega elementos más tarde, lo harían accessed-- ser los primeros elementos serían 797 00:38:48,020 --> 00:38:51,410 ser visitada como la primera elementos de la matriz, 798 00:38:51,410 --> 00:38:57,620 y luego te gustaría ir a través de cada uno de los elementos como una especie de ordered-- 799 00:38:57,620 --> 00:39:02,930 no un ordenado, pero la forma en que que se han puesto en la matriz. 800 00:39:02,930 --> 00:39:06,855 >> AUDIENCIA: Entonces nuevos elementos se añaden más tarde? 801 00:39:06,855 --> 00:39:10,680 Así que están added-- van a ser el los últimos en el [? iteración. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: Nuevos elementos can-- Básicamente, cuando se añaden nuevos elementos, 803 00:39:14,280 --> 00:39:16,520 se añadieron a la final de la matriz? 804 00:39:16,520 --> 00:39:17,632 >> AUDIENCIA: Sí. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: Creo que sí. 806 00:39:18,840 --> 00:39:20,850 Sí. 807 00:39:20,850 --> 00:39:24,330 Y luego, con su bucle foreach, después de añadir nuevos elementos 808 00:39:24,330 --> 00:39:26,790 y usted va a través de ellos, los nuevos elementos haría 809 00:39:26,790 --> 00:39:30,930 ser accessed-- el nuevo elemento, si es agregado última, sería acceder pasado. 810 00:39:30,930 --> 00:39:34,416 >> AUDIENCIA: ¿Puedes dar un ejemplo de algo que haría [inaudible] 811 00:39:34,416 --> 00:39:37,404 con algo de valor como [inaudible] o el valor, 812 00:39:37,404 --> 00:39:38,910 gusta cómo te formatea eso? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: Claro. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 ¿Puedo dar un ejemplo de lo que que íbamos a hacer con el valor? 816 00:39:46,410 --> 00:39:52,440 Así que lo que ustedes podrían estar familiarizados con es que hemos pasado por una serie 817 00:39:52,440 --> 00:39:55,380 y básicamente impreso cada uno de los elementos, 818 00:39:55,380 --> 00:40:00,910 por ejemplo, como parte de una lista ordenada o algo de eso. 819 00:40:00,910 --> 00:40:02,674 ¿Eso tiene sentido o queremos a-- 820 00:40:02,674 --> 00:40:04,340 AUDIENCIA: ¿Podemos imprimir estos valores fuera? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: Sí, podríamos imprimir y luego básicamente $ valor porque en 822 00:40:13,220 --> 00:40:16,570 ese valor específico, que sería imprimir el valor dentro de ella. 823 00:40:16,570 --> 00:40:20,150 Así que si estábamos en nuestra primera iteración de la misma y imprimimos $ valor, 824 00:40:20,150 --> 00:40:23,775 estaríamos imprimiendo bar. 825 00:40:23,775 --> 00:40:27,020 >> AUDIENCIA: ¿Hay también son para bucles en PHP o simplemente bucles foreach? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: No también para bucles en PHP. 827 00:40:30,430 --> 00:40:33,399 Y su lógica es sobre todo el mismo que lo que usted ha estado acostumbrado. 828 00:40:33,399 --> 00:40:34,690 AUDIENCIA: Por lo que su valor es nulo. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: Es como el mismo. 830 00:40:35,090 --> 00:40:35,590 Sí. 831 00:40:35,590 --> 00:40:37,747 AUDIENCIA: sólo voy a preguntar. 832 00:40:37,747 --> 00:40:39,695 Así que cuando se declara un matriz, no es necesario 833 00:40:39,695 --> 00:40:42,617 para decirle lo que el tamaño que va a ser, lo que significa que usted puede simplemente 834 00:40:42,617 --> 00:40:44,417 agregar y quitar elementos de [inaudible]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: Sí. 836 00:40:45,250 --> 00:40:45,750 Sip. 837 00:40:45,750 --> 00:40:46,251 Exactamente. 838 00:40:46,251 --> 00:40:48,875 Cuando declaramos una matriz, que no es necesario decir qué tamaño es, 839 00:40:48,875 --> 00:40:51,022 así que sólo podemos añadir elementos en él más adelante también. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 ¿Más preguntas? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 Por lo tanto trayendo PHP y HTML juntos, lo que hemos seen-- así, 844 00:41:05,950 --> 00:41:15,130 Por ejemplo, en este ejemplo, tenemos un formulario HTML que tiene un campo de entrada. 845 00:41:15,130 --> 00:41:18,830 >> Y el campo de entrada es nombrar sólo y entonces tiene un botón Enviar. 846 00:41:18,830 --> 00:41:26,040 Y cuando se pulsa el Presentar botón, en nuestro fichero hello.php, 847 00:41:26,040 --> 00:41:32,130 porque el método para la forma es conseguir, podemos acceder a lo que esté a nombre de 848 00:41:32,130 --> 00:41:40,360 por esta obtener la variable global que es-- la sintaxis es $ _GET. 849 00:41:40,360 --> 00:41:44,520 Y luego podemos acceder a cualquiera que sea el entrada del usuario en el interior de esa forma para el nombre 850 00:41:44,520 --> 00:41:47,410 especificando el nombre de ese campo. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> ¿Alguna otra pregunta o cualquier preguntas sobre este ejemplo específico? 853 00:41:55,060 --> 00:41:58,275 >> AUDIENCIA: ¿Dónde está el PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: Aquí. 855 00:41:59,150 --> 00:42:01,150 Así que esta es nuestra etiqueta de apertura para el PHP. 856 00:42:01,150 --> 00:42:01,530 >> AUDIENCIA: ¡Oh, derecha. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: Sí. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> HANNAH BLUMBERG:? El = es la taquigrafía porque esta es PHP y apenas eco. 860 00:42:09,609 --> 00:42:10,150 AUDIENCIA: Oh. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: Sí, lo siento. 862 00:42:10,720 --> 00:42:12,040 Debería haber dejado claro. 863 00:42:12,040 --> 00:42:13,759 >> HANNAH BLUMBERG: Imprimir. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: Es sólo la función que nos permite imprimir algo. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 Muy buena pregunta. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 Así going-- sí. 869 00:42:25,495 --> 00:42:31,940 >> AUDIENCIA: ¿Va a ser bastante un poco de codificación manual de PHP y HTML 870 00:42:31,940 --> 00:42:33,450 el cuestionario 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: No puede ser un buena cantidad de interpretación 873 00:42:38,810 --> 00:42:43,330 de PHP y HTML, no necesariamente como una enorme cantidad de codificación, 874 00:42:43,330 --> 00:42:46,960 aunque puede que tenga que escribir una bucle foreach, sin embargo, un bucle for. 875 00:42:46,960 --> 00:42:49,790 Cualquiera de los bucles que nos cubrir aquí es un juego justo. 876 00:42:49,790 --> 00:42:51,889 Y eso es sobre todo ello. 877 00:42:51,889 --> 00:42:53,430 HANNAH BLUMBERG: Yo estaría preparado. 878 00:42:53,430 --> 00:42:57,010 De la misma manera que les pedimos que escribir un montón de funciones C en concurso 0, 879 00:42:57,010 --> 00:42:59,766 Yo estaría dispuesto a hacer lo misma en PHP y JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: Sí. 881 00:43:00,640 --> 00:43:03,210 HANNAH BLUMBERG: Yo diría que un poco-- como no estamos 882 00:43:03,210 --> 00:43:06,251 va a hacer que usted escribe un enorme HTML página porque eso es un poco 883 00:43:06,251 --> 00:43:08,240 tedioso, pero es posible que tenga partes. 884 00:43:08,240 --> 00:43:09,310 Eso es juego totalmente justo. 885 00:43:09,310 --> 00:43:11,082 Como pequeña página HTML, totalmente justo. 886 00:43:11,082 --> 00:43:11,623 AUDIENCIA: OK. 887 00:43:11,623 --> 00:43:13,814 ¿Qué tal en JavaScript también? 888 00:43:13,814 --> 00:43:14,730 HANNAH BLUMBERG: Sí. 889 00:43:14,730 --> 00:43:15,250 Presa fácil de JavaScript. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: Sí. 891 00:43:15,635 --> 00:43:16,801 Eso es juego completamente justo. 892 00:43:16,801 --> 00:43:19,280 HANNAH BLUMBERG: Vamos a llegar a la de como 10 minutos. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, de nuevo, Lenguaje de consulta estructurado. 894 00:43:23,750 --> 00:43:28,651 Básicamente nos permite gestionar los datos en una gestión de base de datos relacional 895 00:43:28,651 --> 00:43:29,150 sistema. 896 00:43:29,150 --> 00:43:31,149 Eso significa que sólo básicamente que tenemos en algún lugar 897 00:43:31,149 --> 00:43:37,980 para almacenar algunos datos que podríamos querer utilizar en un sitio web o en alguna otra forma. 898 00:43:37,980 --> 00:43:42,190 Y luego tenemos las consultas para obtener información de nuestra base de datos, 899 00:43:42,190 --> 00:43:44,320 o para insertar información en ellos. 900 00:43:44,320 --> 00:43:47,560 Gran parte de la ACTUALIZACIÓN ones-- común, INSERT, SELECT y DELETE. 901 00:43:47,560 --> 00:43:50,790 >> Así que para UPDATE, esta es la sintaxis para la actualización de datos en una base de datos. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 La actualización de esta tabla llamada mesa diciendo SET, 904 00:43:57,340 --> 00:44:04,170 podemos establecer algunos valores en todo filas a la igualdad de algo más. 905 00:44:04,170 --> 00:44:09,410 Así también podemos especificar algunas específicas entradas que queremos modificar 906 00:44:09,410 --> 00:44:11,240 y que puede ser utilizando WHERE. 907 00:44:11,240 --> 00:44:16,380 Y podemos especificar que sólo queremos modificar algunas filas donde la casa para, 908 00:44:16,380 --> 00:44:19,830 si tuviéramos una mesa de estudiantes y todos los estudiantes tenían casa, 909 00:44:19,830 --> 00:44:24,890 por lo que sólo sería modificar algunos valores donde una casa es igual Currier, 910 00:44:24,890 --> 00:44:25,430 por ejemplo. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> Para INSERT, podemos insertar ciertos valores en una tabla. 913 00:44:31,800 --> 00:44:35,150 Así INSERT INTO tabla, y luego los valores, 914 00:44:35,150 --> 00:44:39,080 y luego entre paréntesis, especificamos que los valores que desea insertar. 915 00:44:39,080 --> 00:44:43,220 Así INSERT INTO tabla, col1 y col2, el valor es val1 y val2. 916 00:44:43,220 --> 00:44:48,930 Así que esta inserta básicamente una nueva fila en una tabla que contiene los valores 1 y 2 917 00:44:48,930 --> 00:44:50,850 en las columnas 1 y 2. 918 00:44:50,850 --> 00:44:54,760 >> Y luego vamos a ir un ejemplo rápido de cómo se ve esto 919 00:44:54,760 --> 00:44:56,310 al igual que en nuestra base de datos un poco. 920 00:44:56,310 --> 00:44:58,685 Pero esta consulta final que I Creo que vamos a ir, 921 00:44:58,685 --> 00:45:01,450 SELECT, sólo nos permite para seleccionar datos de una tabla 922 00:45:01,450 --> 00:45:03,080 a la posibilidad de utilizarlo después. 923 00:45:03,080 --> 00:45:05,830 Y la forma en que hacemos esto es que simplemente guardarlo en alguna variable. 924 00:45:05,830 --> 00:45:07,780 Y entonces podemos posiblemente utilizarlo de nuevo. 925 00:45:07,780 --> 00:45:10,260 >> Así estrellas SELECT significa seleccionar todo. 926 00:45:10,260 --> 00:45:13,280 Eso es sólo una abreviatura para la selección de todos. 927 00:45:13,280 --> 00:45:19,760 FROM tabla WHERE, estamos buscando para algunas condiciones específicas, 928 00:45:19,760 --> 00:45:22,290 por lo que la columna es igual a algo, por ejemplo. 929 00:45:22,290 --> 00:45:24,410 Si lo único que queríamos seleccionar todo de la mesa, 930 00:45:24,410 --> 00:45:28,400 esto sólo selecciona todas las columnas y todas las filas de una tabla. 931 00:45:28,400 --> 00:45:32,040 >> Y luego DELETE FROM tabla DONDE col es igual a algo, 932 00:45:32,040 --> 00:45:36,440 esto sólo elimina algunos fila de nuestra tabla 933 00:45:36,440 --> 00:45:38,860 donde tenemos algunas condiciones específicas. 934 00:45:38,860 --> 00:45:41,870 En este caso, las condiciones son la columna es igual a algo. 935 00:45:41,870 --> 00:45:43,460 Tan sólo un ejemplo rápido de esto. 936 00:45:43,460 --> 00:45:49,100 Si tenemos esta tabla aquí y nosotros insertarlo en una tabla, estos valores, 937 00:45:49,100 --> 00:45:50,400 eso sería insertar una nueva fila. 938 00:45:50,400 --> 00:45:56,380 Y si tuviéramos incremento automático, esto sería acaba de incrementar nuestro ID de 0 a 1 a 2. 939 00:45:56,380 --> 00:46:00,010 >> Si seleccionamos todos de los estudiantes, que simplemente devuelve todos los campos y todas las filas. 940 00:46:00,010 --> 00:46:02,430 Dónde año es mayor o igual a 2.016, 941 00:46:02,430 --> 00:46:04,390 eso sería simplemente volver Hannah y yo. 942 00:46:04,390 --> 00:46:08,360 Y luego si sólo seleccionamos Identificación del año y el año de los estudiantes 943 00:46:08,360 --> 00:46:11,710 donde la casa es Cabot House, que sería, de nuevo, volver a Hannah y yo. 944 00:46:11,710 --> 00:46:14,430 >> Entonces, si hemos borrado de los estudiantes donde nombre es igual a Rob, 945 00:46:14,430 --> 00:46:16,760 eso sería eliminar toda la fila. 946 00:46:16,760 --> 00:46:19,696 Y luego, si nos fijamos el nombre, estudiantes ACTUALIZACIÓN 947 00:46:19,696 --> 00:46:21,570 Nombre del conjunto es igual a Daven DONDE casa es igual 948 00:46:21,570 --> 00:46:27,010 Cabot House, que va a ir a esas filas y luego actualizar el nombre. 949 00:46:27,010 --> 00:46:31,470 >> Y luego de unos tipos de datos SQL son CHAR, VARCHAR, INT, y flotar. 950 00:46:31,470 --> 00:46:32,760 Estos son juego justo. 951 00:46:32,760 --> 00:46:36,740 Me gustaría ir otra vez y asegúrese de que sabe 952 00:46:36,740 --> 00:46:40,930 y tenerlos en su hoja de trucos, lo que cada uno de esos personajes 953 00:46:40,930 --> 00:46:44,140 se han utilizado para, lo que los utilizó en sus conjuntos de procesadores, 954 00:46:44,140 --> 00:46:48,050 y asegúrese de que usted está familiarizado y cómodo con tener que elegir 955 00:46:48,050 --> 00:46:51,450 de diferentes tipos de datos en el conjunto de procesadores. 956 00:46:51,450 --> 00:46:51,950 Sí. 957 00:46:51,950 --> 00:46:54,300 >> AUDIENCIA: ¿Cuál fue almacenada esa mesa? 958 00:46:54,300 --> 00:46:57,119 Sí, donde se almacena este cuadro? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: Bueno, en este momento, no se almacena. 960 00:46:59,160 --> 00:47:00,700 De todos modos, donde se almacena este cuadro? 961 00:47:00,700 --> 00:47:04,503 Pero puede ser almacenada en una base de datos SQL. 962 00:47:04,503 --> 00:47:07,330 >> AUDIENCIA: ¿Y dónde está la base de datos SQL? 963 00:47:07,330 --> 00:47:11,200 En el ordenador, en línea en algún lugar, el servidor? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: Puede ser un serie de cosas diferentes. 965 00:47:15,000 --> 00:47:19,690 >> HANNAH BLUMBERG: Hemos interconectado con Tablas SQL mayoría con phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 Así que lo que podíamos pedir un servidor almacenarlos para nosotros. 967 00:47:22,060 --> 00:47:23,830 Podríamos almacenarlos en nuestro propio ordenador. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: Sólo depende de cómo quieres que lo haga por ti mismo. 969 00:47:27,950 --> 00:47:30,075 Pero hemos estado almacenando ellos, como se menciona Hannah, 970 00:47:30,075 --> 00:47:31,755 en phpMyAdmin, que es en línea. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 Y entonces la forma en que usamos PHP y SQL, que lo almacenan 973 00:47:39,280 --> 00:47:43,450 en alguna variable lo que hemos preguntado para. 974 00:47:43,450 --> 00:47:48,370 >> Así que si tenemos Seleccionar todo en la historia donde user_id es igual al identificador de sesión, 975 00:47:48,370 --> 00:47:53,900 eso sería seleccionar todas las filas para la persona específica que 976 00:47:53,900 --> 00:47:58,327 está conectado a partir de la historia mesa y las ordena en filas. 977 00:47:58,327 --> 00:48:00,410 Una cosa divertida saber es que la función de consulta del CS50 978 00:48:00,410 --> 00:48:02,180 protege contra etiquetas de inyección SQL. 979 00:48:02,180 --> 00:48:07,420 Eso sólo significa que se asegura la entrada que se introduce es correcto 980 00:48:07,420 --> 00:48:09,920 y que la persona que está entrando en la entrada 981 00:48:09,920 --> 00:48:15,100 No está tratando de entrada de alguna maliciosa código o bien caer nuestras mesas 982 00:48:15,100 --> 00:48:17,305 o borrar todo dentro de nuestra base de datos. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> Una visión rápida de la Modelo Model View Controller, 985 00:48:23,400 --> 00:48:27,360 es sólo una forma de organizar y pensando en código. 986 00:48:27,360 --> 00:48:29,100 Es más, un paradigma de diseño. 987 00:48:29,100 --> 00:48:33,380 Lo que esto significa es que can-- y es una buena práctica 988 00:48:33,380 --> 00:48:37,790 para separar las diferentes partes de nuestro código y lo que 989 00:48:37,790 --> 00:48:40,530 controlar en estas tres paradigmas. 990 00:48:40,530 --> 00:48:46,700 >> Así que nuestro punto de vista es lo más a menudo nuestra plantillas, nuestro diseño, la forma 991 00:48:46,700 --> 00:48:48,260 que establecemos cómo se ve nuestro código. 992 00:48:48,260 --> 00:48:55,190 Eso es sobre todo nuestros archivos CSS y la forma que definimos el diseño de nuestro código, 993 00:48:55,190 --> 00:48:55,710 básicamente. 994 00:48:55,710 --> 00:48:59,280 Nuestro controlador es sobre todo lo que que hemos estado haciendo con los archivos PHP. 995 00:48:59,280 --> 00:49:03,030 Así que de nuevo, en colaboración con la información que tenemos 996 00:49:03,030 --> 00:49:06,700 y definir cómo ese información se utiliza, 997 00:49:06,700 --> 00:49:10,660 y luego pasar esa información ya sea en la vista o el modelo. 998 00:49:10,660 --> 00:49:13,880 Y el modelo, la forma en que hemos estado utilizando es decir ha sido nuestra base de datos, 999 00:49:13,880 --> 00:49:17,510 por lo que nuestra información es almacenado por lo que tiene alguna parte 1000 00:49:17,510 --> 00:49:21,490 para vivir, y cualquiera de los código que se refiere a la forma 1001 00:49:21,490 --> 00:49:25,410 que obtenemos esa información o la forma que actualizamos esa información. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> Así que en el modelo MVC, HTTP las solicitudes se envían a un servidor web. 1004 00:49:33,200 --> 00:49:36,220 A continuación, el controlador interpreta la solicitud del usuario 1005 00:49:36,220 --> 00:49:38,260 y luego valida la entrada del usuario. 1006 00:49:38,260 --> 00:49:41,580 Es opcional que tenemos el controlador comunicarse 1007 00:49:41,580 --> 00:49:44,000 con un modelo, por lo que algo como nuestra base de datos 1008 00:49:44,000 --> 00:49:47,500 o alguna otra funcionalidad que transmite información. 1009 00:49:47,500 --> 00:49:50,340 Y finalmente, el controlador pasa la información a la vista 1010 00:49:50,340 --> 00:49:52,090 de modo que pueda ser rendido y que puede 1011 00:49:52,090 --> 00:49:55,860 se hacen visibles a cualquier persona el acceso a la página web. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> ¿Alguna pregunta? 1014 00:50:01,340 --> 00:50:01,840 Impresionante. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 Así que de nuevo, el modelo, su función, de nuevo, 1017 00:50:08,469 --> 00:50:11,260 es el almacenamiento persistente de la información, la gestión y organización de los datos. 1018 00:50:11,260 --> 00:50:13,890 Y lo que hemos visto hasta ahora es la base de datos MySQL 1019 00:50:13,890 --> 00:50:16,200 y los archivos de datos que se pueden utilizar. 1020 00:50:16,200 --> 00:50:20,580 >> Ver, presentación de información a el usuario, la interfaz de usuario, o interfaz de usuario. 1021 00:50:20,580 --> 00:50:22,350 Y el ejemplo de esto es HTML. 1022 00:50:22,350 --> 00:50:23,950 Y entonces podríamos tener PHP mínima. 1023 00:50:23,950 --> 00:50:28,360 Así que para un bucle que itera sobre los datos que se imprimen 1024 00:50:28,360 --> 00:50:30,720 es parte de la vista, como se en comparación con el controlador. 1025 00:50:30,720 --> 00:50:35,660 Y entonces muchos de nuestros archivos PHP caer en la categoría de controlador. 1026 00:50:35,660 --> 00:50:38,410 Simplemente maneja peticiones de los usuarios y obtiene información a partir del modelo. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> Saltando en el Documento Modelo de objetos, esto sólo 1029 00:50:45,590 --> 00:50:47,700 se refiere a la forma en HTML se organizan documentos. 1030 00:50:47,700 --> 00:50:51,600 Y están organizados en un árbol estructura que tiene una jerarquía. 1031 00:50:51,600 --> 00:50:56,720 Así que si tenemos acceso a [inaudible] la representación del documento, 1032 00:50:56,720 --> 00:51:02,750 podemos trabajar con el documento, al igual que manipulamos objetos básicamente. 1033 00:51:02,750 --> 00:51:06,630 >> Y para hacer esto una poco más clara, cuando 1034 00:51:06,630 --> 00:51:10,540 tenemos un montón de nuestra diferentes etiquetas responden 1035 00:51:10,540 --> 00:51:12,590 a diferentes rutas en nuestro árbol. 1036 00:51:12,590 --> 00:51:17,070 Y a continuación, para este ejemplo, tener el nodo de documento de partida. 1037 00:51:17,070 --> 00:51:20,010 Tenemos, entonces, nuestro nodo HTML que se divide en cabeza y cuerpo. 1038 00:51:20,010 --> 00:51:22,810 Head tiene título y luego título contiene hola, mundo. 1039 00:51:22,810 --> 00:51:24,860 Y nuestro cuerpo solo contiene hola, mundo también. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> Así que cualquier pregunta sobre cualquiera de los cosas que hemos cubierto hasta ahora? 1042 00:51:31,900 --> 00:51:35,891 Y si no, va a Hannah hacerse cargo con JavaScript. 1043 00:51:35,891 --> 00:51:36,390 Impresionante. 1044 00:51:36,390 --> 00:51:37,473 >> HANNAH BLUMBERG: OK, fresco. 1045 00:51:37,473 --> 00:51:40,980 Si hay algo que viene con PHP o HTML, o cualquiera de las cosas que María cubierto, 1046 00:51:40,980 --> 00:51:42,700 siempre podemos hacer una pausa. 1047 00:51:42,700 --> 00:51:46,430 Lo estamos haciendo mejor en otra vez, tan impresionante. 1048 00:51:46,430 --> 00:51:48,770 Y sólo para volver muy rápido a esta, 1049 00:51:48,770 --> 00:51:51,010 si nos fijamos en todos los examen del año pasado, esta 1050 00:51:51,010 --> 00:51:54,120 surge mismas: aquí es algo de HTML, hacen de este diagrama. 1051 00:51:54,120 --> 00:51:58,380 O aquí está este diagrama, hacer un poco de HTML, por lo que definitivamente practicar eso. 1052 00:51:58,380 --> 00:52:01,500 Y entonces esa es una GARANTIZADOS pregunta que usted puede hacerlo bien. 1053 00:52:01,500 --> 00:52:02,000 Guay. 1054 00:52:02,000 --> 00:52:04,510 Así que vamos a hablar de JavaScript y cómo es un poco 1055 00:52:04,510 --> 00:52:09,130 diferente de lenguajes como PHP y C, los dos idiomas que vimos antes. 1056 00:52:09,130 --> 00:52:10,780 Así que el número uno, está vagamente escrito. 1057 00:52:10,780 --> 00:52:14,630 Eso es como PHP, pero a diferencia de C. 1058 00:52:14,630 --> 00:52:15,890 >> Es un lenguaje interpretado. 1059 00:52:15,890 --> 00:52:19,870 Una vez más, eso es como PHP, a diferencia de C. Y esto 1060 00:52:19,870 --> 00:52:24,630 va a permitirnos servicio- que funciona muy bien con las páginas web. 1061 00:52:24,630 --> 00:52:28,350 Esto va a permitir que nosotros manipulamos el contenido y cómo se ve 1062 00:52:28,350 --> 00:52:30,300 y lo que hace. 1063 00:52:30,300 --> 00:52:32,330 >> Vamos a ver un poco de Ajax. 1064 00:52:32,330 --> 00:52:36,140 Nos permite comunicarnos de forma asíncrona con diferentes servidores 1065 00:52:36,140 --> 00:52:37,950 y obtener información. 1066 00:52:37,950 --> 00:52:42,820 Y esto es lo que realmente separa JavaScript desde PHP y C 1067 00:52:42,820 --> 00:52:45,590 es que es del lado del cliente. 1068 00:52:45,590 --> 00:52:49,860 Tanto PHP y C son normalmente del lado del servidor. 1069 00:52:49,860 --> 00:52:51,960 >> En su mayor parte y casi en su totalidad lo que 1070 00:52:51,960 --> 00:52:53,900 que hemos visto, al menos en esta clase, JavaScript 1071 00:52:53,900 --> 00:52:57,040 actúa sobre el lado del cliente, lo que significa que el navegador es en realidad 1072 00:52:57,040 --> 00:52:58,597 responsable de ejecutarlo. 1073 00:52:58,597 --> 00:53:01,180 Y eso significa que no lo hacemos necesidad de interactuar con el servidor. 1074 00:53:01,180 --> 00:53:04,380 Por lo que significa que puede ser mucho más rápido porque es en realidad sólo es Chrome, 1075 00:53:04,380 --> 00:53:10,420 es Safari, es Firefox, lo que utilizar realmente el funcionamiento de su JavaScript. 1076 00:53:10,420 --> 00:53:12,290 >> AUDIENCIA: ¿Qué significa asíncrona? 1077 00:53:12,290 --> 00:53:13,620 >> HANNAH BLUMBERG: Ah, lo Qué significa asíncrona? 1078 00:53:13,620 --> 00:53:14,250 Muy buena pregunta. 1079 00:53:14,250 --> 00:53:17,890 Asincrónicamente designa todas así, el contenido en el que 1080 00:53:17,890 --> 00:53:22,140 utilizamos es, OK, nos están creando una página web 1081 00:53:22,140 --> 00:53:23,860 y tenemos que conseguir un poco de información. 1082 00:53:23,860 --> 00:53:28,250 Así que con el ejemplo de mashup, alguna información que puede ser que deseemos 1083 00:53:28,250 --> 00:53:30,580 es títulos de los artículos. 1084 00:53:30,580 --> 00:53:33,330 Ahora, could-- una opción es hacerlo de forma sincrónica 1085 00:53:33,330 --> 00:53:37,940 y eso significa let de parar, ir a buscar el artículo, 1086 00:53:37,940 --> 00:53:41,275 conseguir el artículo de vuelta, y luego render, pero eso sería muy lento. 1087 00:53:41,275 --> 00:53:44,150 Eso sería una mala experiencia de usuario porque usted acaba de estar sentado 1088 00:53:44,150 --> 00:53:46,630 ahí esperando por algo que responder. 1089 00:53:46,630 --> 00:53:50,020 >> De forma asíncrona que significa vamos seguir yendo sobre nuestro negocio, 1090 00:53:50,020 --> 00:53:52,529 la prestación a la página, y le enviaremos una petición de 1091 00:53:52,529 --> 00:53:54,570 Eso es algo que va a suceder en el fondo. 1092 00:53:54,570 --> 00:53:57,610 Creo que utilizamos el ejemplo de conferencia de llamar a Rob y diciendo: 1093 00:53:57,610 --> 00:53:59,980 Hey, ¿puedes ver esto para mí y volver a mí, 1094 00:53:59,980 --> 00:54:02,870 en lugar de sólo me espera en el teléfono. 1095 00:54:02,870 --> 00:54:07,020 Así de forma asíncrona significa que sucede en el fondo de distancia de nosotros 1096 00:54:07,020 --> 00:54:08,676 en paralelo. 1097 00:54:08,676 --> 00:54:10,400 >> Muy buena pregunta. 1098 00:54:10,400 --> 00:54:11,830 ¿Algo más? 1099 00:54:11,830 --> 00:54:12,330 Excelente. 1100 00:54:12,330 --> 00:54:15,020 Vamos a saltar mucho más en peticiones asíncronas con Ajax. 1101 00:54:15,020 --> 00:54:18,287 >> AUDIENCIA: ¿El JavaScript-- ¿de dónde viene caer con el modelo-vista-controlador? 1102 00:54:18,287 --> 00:54:19,620 HANNAH BLUMBERG: Muy buena pregunta. 1103 00:54:19,620 --> 00:54:23,320 ¿De dónde viene el otoño JavaScript con el modelo-vista-controlador? 1104 00:54:23,320 --> 00:54:23,930 Hm. 1105 00:54:23,930 --> 00:54:28,350 Supongo que puede fall-- por lo que no suelen 1106 00:54:28,350 --> 00:54:31,340 gustaría aplastar en que paradigma, pero supongo que yo diría, 1107 00:54:31,340 --> 00:54:34,280 OK, así JavaScript en realidad va a permitir 1108 00:54:34,280 --> 00:54:37,587 nosotros para recopilar datos, interpretar los datos, en realidad hacer 1109 00:54:37,587 --> 00:54:38,920 cosas significativas con los datos. 1110 00:54:38,920 --> 00:54:41,100 De esa manera, es muy similar al de control. 1111 00:54:41,100 --> 00:54:43,900 >> Pero también nos va a permitir a mostrar cosas y cosas de impresión. 1112 00:54:43,900 --> 00:54:47,021 De esa manera, es muy similar a la vista. 1113 00:54:47,021 --> 00:54:47,520 Sí. 1114 00:54:47,520 --> 00:54:51,710 Así que es algo así como PHP en donde puede especie de ser a la vez. 1115 00:54:51,710 --> 00:54:53,330 Buena pregunta. 1116 00:54:53,330 --> 00:54:55,209 ¿Algo más? 1117 00:54:55,209 --> 00:54:56,000 Muy bien, impresionante. 1118 00:54:56,000 --> 00:54:57,120 La derecha móvil adelante. 1119 00:54:57,120 --> 00:54:59,110 >> Así que vamos a ver un ejemplo de cómo podemos utilizar 1120 00:54:59,110 --> 00:55:02,250 JavaScript en uno de nuestros programas web. 1121 00:55:02,250 --> 00:55:05,680 Así que voy a considerar esta index.html con un montón de HTML. 1122 00:55:05,680 --> 00:55:08,800 Y lo quiero centrarse en es esta etiqueta script. 1123 00:55:08,800 --> 00:55:13,280 Y esto lo dice, está bien, quiero correr algunos JavaScript y aquí es donde vive. 1124 00:55:13,280 --> 00:55:15,400 Vive en hello.js. 1125 00:55:15,400 --> 00:55:21,120 >> Y muy parecido a CSS, podríamos poner JavaScript en el HTML. 1126 00:55:21,120 --> 00:55:24,000 ¿Por qué podríamos querer separar a cabo? 1127 00:55:24,000 --> 00:55:24,500 Sí. 1128 00:55:24,500 --> 00:55:25,486 >> AUDIENCIA: Más fácil volver a escribir? 1129 00:55:25,486 --> 00:55:26,402 >> HANNAH BLUMBERG: Sí. 1130 00:55:26,402 --> 00:55:28,450 Es más fácil de utilizar a través de distintas páginas web. 1131 00:55:28,450 --> 00:55:29,980 Mantiene las cosas más limpio. 1132 00:55:29,980 --> 00:55:32,090 Es sólo una buena práctica. 1133 00:55:32,090 --> 00:55:32,590 Impresionante. 1134 00:55:32,590 --> 00:55:33,930 Buena respuesta. 1135 00:55:33,930 --> 00:55:36,690 Así que bueno, así que esto va para ser nuestro index.html. 1136 00:55:36,690 --> 00:55:39,430 Y entonces aquí es nuestra diminuto archivo JavaScript. 1137 00:55:39,430 --> 00:55:42,410 >> Y todo lo que dice es alerta Hola, mundo. 1138 00:55:42,410 --> 00:55:46,040 Así que lo que sucede es cuando esta página renders-- 1139 00:55:46,040 --> 00:55:49,680 así que si vas a cualquier sitio web este es-- todo lo que va a suceder 1140 00:55:49,680 --> 00:55:53,330 se va a decir, OK, estoy va a ejecutar el código JavaScript. 1141 00:55:53,330 --> 00:55:56,370 Y el código JavaScript sólo dice alerta Hola, mundo. 1142 00:55:56,370 --> 00:55:59,090 Así que voy a conseguir este pequeño y agradable emergente. 1143 00:55:59,090 --> 00:56:00,360 >> ¿Guay? 1144 00:56:00,360 --> 00:56:04,746 Eso es algo así como nuestro primer JavaScript programa, nuestra Hola, mundo. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 Veamos un poco más sobre lo que la sintaxis de JavaScript parece. 1147 00:56:12,190 --> 00:56:16,330 Y concretamente, vamos a comparar a C y PHP, lo que hemos visto antes. 1148 00:56:16,330 --> 00:56:20,610 >> En JavaScript, vamos a tener var, el nombre de la variable, y luego 1149 00:56:20,610 --> 00:56:21,690 su valor real. 1150 00:56:21,690 --> 00:56:26,170 Y no especificamos un tipo, simplemente como en PHP, pero muy al contrario que en C. 1151 00:56:26,170 --> 00:56:28,850 Así, por ejemplo, si queríamos para almacenar el valor 50, 1152 00:56:28,850 --> 00:56:32,490 en C, tendríamos que decir, oye, C, quiero un número entero, 1153 00:56:32,490 --> 00:56:35,076 Voy a llamarlo i, y su valor es 50. 1154 00:56:35,076 --> 00:56:36,450 En PHP, es un poco más fácil. 1155 00:56:36,450 --> 00:56:41,880 Nosotros decimos, oye, quiero una variable llama i y su valor es 50. 1156 00:56:41,880 --> 00:56:45,890 Muy similar, en JavaScript, que digo hey, yo quiero una variable llamada i, 1157 00:56:45,890 --> 00:56:47,080 su valor es 50. 1158 00:56:47,080 --> 00:56:52,140 Cada vez que uso posterior i, yo no necesito escribir var. 1159 00:56:52,140 --> 00:56:53,810 Es sólo que a partir de ese momento. 1160 00:56:53,810 --> 00:56:58,660 De la misma manera, en C, donde una vez que decimos int i, sólo tiene que utilizar i. 1161 00:56:58,660 --> 00:57:00,340 ¿Guay? 1162 00:57:00,340 --> 00:57:01,800 Correcto. 1163 00:57:01,800 --> 00:57:03,710 >> Pasando a los bucles, afortunadamente, éstos casi 1164 00:57:03,710 --> 00:57:06,720 miro exactly-- Creo que son exactamente lo mismo que lo 1165 00:57:06,720 --> 00:57:09,799 bucles van a parecer en algo así como C, donde el bucle for 1166 00:57:09,799 --> 00:57:11,840 va a tener de tres parts-- una inicialización, 1167 00:57:11,840 --> 00:57:13,640 una condición, y una actualización. 1168 00:57:13,640 --> 00:57:15,340 Un bucle while, se ve exactamente el mismo. 1169 00:57:15,340 --> 00:57:16,390 Nos damos una condición. 1170 00:57:16,390 --> 00:57:18,264 >> Y un do while, de nuevo, exactamente de la misma. 1171 00:57:18,264 --> 00:57:20,190 Le damos una condición. 1172 00:57:20,190 --> 00:57:24,510 Digamos que quería repetir over-- Yo quería hacer algo cinco veces. 1173 00:57:24,510 --> 00:57:27,840 En C, podríamos escribir para init i es igual a 0. 1174 00:57:27,840 --> 00:57:30,480 i es menor que 5, i ++. 1175 00:57:30,480 --> 00:57:34,240 La única diferencia, en JavaScript, en vez de decir int i es igual a 0, 1176 00:57:34,240 --> 00:57:36,820 decimos var i es igual a 0. 1177 00:57:36,820 --> 00:57:38,370 Hermosa. 1178 00:57:38,370 --> 00:57:41,320 Esa es la única diferencia. 1179 00:57:41,320 --> 00:57:43,200 ¿Tiene preguntas sobre nada de eso? 1180 00:57:43,200 --> 00:57:44,160 Sí. 1181 00:57:44,160 --> 00:57:48,480 >> AUDIENCIA: Entonces en PHP, que es el mismo cosa, a excepción sino como una variable? 1182 00:57:48,480 --> 00:57:49,564 ¿O era un ejemplo var? 1183 00:57:49,564 --> 00:57:50,480 HANNAH BLUMBERG: Sí. 1184 00:57:50,480 --> 00:57:52,310 Así que en PHP, que va ser un signo de dólar. 1185 00:57:52,310 --> 00:57:59,450 Así que va a $ i es igual 0, $ i es menor que 5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 Muy buena pregunta. 1187 00:58:02,490 --> 00:58:04,570 >> Ahora vamos a hablar de declaraciones de funciones. 1188 00:58:04,570 --> 00:58:07,010 En C, cuando declaramos un función, que le dimos un nombre 1189 00:58:07,010 --> 00:58:08,490 y le dimos algunos parámetros. 1190 00:58:08,490 --> 00:58:10,670 Y al principio, escribimos el tipo. 1191 00:58:10,670 --> 00:58:12,440 En JavaScript, todo lo que tienes que hacer es escribir 1192 00:58:12,440 --> 00:58:15,080 la función de palabra clave que dice, hey, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 Estoy a punto de definir una función. 1194 00:58:16,570 --> 00:58:18,520 >> En este caso, tiene nombre de suma. 1195 00:58:18,520 --> 00:58:20,820 Y toma dos argumentos, x e y. 1196 00:58:20,820 --> 00:58:23,280 Nótese que no nos importa sobre los tipos de xe y. 1197 00:58:23,280 --> 00:58:26,280 Y al igual que C, tenemos este retorno de palabras clave, 1198 00:58:26,280 --> 00:58:29,140 por lo que podemos hacer algo como return x e y. 1199 00:58:29,140 --> 00:58:32,540 >> Y ahora, una vez que hemos escrito esta primera función, se puede utilizar en cualquier suma. 1200 00:58:32,540 --> 00:58:34,740 Y eso es totalmente bien. 1201 00:58:34,740 --> 00:58:37,530 Una cosa realmente bueno de JavaScript que es muy a diferencia de C 1202 00:58:37,530 --> 00:58:40,770 es que las funciones se ser tratados como valores. 1203 00:58:40,770 --> 00:58:43,895 Por lo que podemos hacer algo así aquí donde supongo cubro este up-- 1204 00:58:43,895 --> 00:58:46,400 Me cubrí la suma var parcialmente: y que acabamos de decir 1205 00:58:46,400 --> 00:58:49,850 función de xy es igual de retorno x más y. 1206 00:58:49,850 --> 00:58:52,140 >> Eso es lo que se llamaría una función anónima. 1207 00:58:52,140 --> 00:58:53,920 Es una función sin nombre. 1208 00:58:53,920 --> 00:58:56,290 Mientras esta función dice suma, bla, bla, bla, 1209 00:58:56,290 --> 00:58:59,340 esto sería simplemente decir función. 1210 00:58:59,340 --> 00:59:02,020 Pero ahora a pesar de que tengo esta función anónima, 1211 00:59:02,020 --> 00:59:03,630 esa función es en realidad un valor. 1212 00:59:03,630 --> 00:59:05,160 Podemos tratarlo como un valor. 1213 00:59:05,160 --> 00:59:10,180 >> Así que podemos guardarlo en una variable de la misma manera podríamos almacenar 50 en una variable. 1214 00:59:10,180 --> 00:59:13,870 Así que podemos decir, OK, quiero una variables, se llama suma, 1215 00:59:13,870 --> 00:59:16,011 y es esta función. 1216 00:59:16,011 --> 00:59:18,760 Así que estas dos cosas son en realidad va a hacer exactamente lo mismo, 1217 00:59:18,760 --> 00:59:21,576 pero la sintaxis es un poco diferente y una especie de nota de la diversión. 1218 00:59:21,576 --> 00:59:22,076 Sí. 1219 00:59:22,076 --> 00:59:25,548 >> AUDIENCIA: Por lo que podría llamar a un función que fue anónima diciendo: 1220 00:59:25,548 --> 00:59:28,244 suma soportes 2, 5? 1221 00:59:28,244 --> 00:59:29,160 HANNAH BLUMBERG: Sí. 1222 00:59:29,160 --> 00:59:32,280 Usted puede llamar a este anónimo funcionan de la misma manera. 1223 00:59:32,280 --> 00:59:33,350 Harías suma (2, 5) ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 Eso sería totalmente bien. 1226 00:59:38,200 --> 00:59:41,575 >> Si yo no hice suma var es igual función, si me acaba de eliminar 1227 00:59:41,575 --> 00:59:45,480 esto-- Sé que es en mi mano, pero pretendo He eliminado esto-- continuación 1228 00:59:45,480 --> 00:59:46,964 esa función es una especie de simplemente desaparecido. 1229 00:59:46,964 --> 00:59:49,630 Nunca se puede utilizar de nuevo porque usted no tiene un nombre para él. 1230 00:59:49,630 --> 00:59:53,497 Es difícil referirse a algo usted no sabe cómo llamarlo. 1231 00:59:53,497 --> 00:59:54,080 Buena pregunta. 1232 00:59:54,080 --> 00:59:54,580 Sí. 1233 00:59:54,580 --> 00:59:59,580 >> AUDIENCIA: ¿Se puede hacer referencia a la suma de otros lugares con el valor de x más y? 1234 00:59:59,580 --> 01:00:01,940 >> HANNAH BLUMBERG: Puede usted suma de referencia en otros lugares 1235 01:00:01,940 --> 01:00:03,360 con el valor de x más y? 1236 01:00:03,360 --> 01:00:05,130 No estoy del todo seguro de lo que quieres decir. 1237 01:00:05,130 --> 01:00:10,582 >> AUDIENCIA: Así que tu pasado semi-anónimo función es la suma es igual a este 1238 01:00:10,582 --> 01:00:14,452 función anónima, por lo que suma es ahora una variable que can-- 1239 01:00:14,452 --> 01:00:15,410 HANNAH BLUMBERG: Correcto. 1240 01:00:15,410 --> 01:00:18,980 Así suma es la variable, pero es actually-- 1241 01:00:18,980 --> 01:00:23,770 así suma es una variable cuyo valor es la función. 1242 01:00:23,770 --> 01:00:27,030 Así que es una función, que es una especie de una cosa extraña para envolver su cabeza alrededor 1243 01:00:27,030 --> 01:00:29,880 desde que hemos estado jugando con C y no se puede hacer eso en C. 1244 01:00:29,880 --> 01:00:32,679 Pero ahora podemos llamar a sumar la misma manera que podríamos llamar suma aquí. 1245 01:00:32,679 --> 01:00:33,220 AUDIENCIA: OK. 1246 01:00:33,220 --> 01:00:33,970 HANNAH BLUMBERG: Sí. 1247 01:00:33,970 --> 01:00:34,553 Buena pregunta. 1248 01:00:34,553 --> 01:00:35,438 Sí. 1249 01:00:35,438 --> 01:00:39,862 >> AUDIENCIA: ¿Así que no usamos el prototipos en PHP o JavaScript? 1250 01:00:39,862 --> 01:00:42,070 HANNAH BLUMBERG: No, no es necesario utilizar prototipos, 1251 01:00:42,070 --> 01:00:43,880 especialmente en JavaScript. 1252 01:00:43,880 --> 01:00:49,380 Así que una cosa mala práctica que soy va a decir que usted no debe hacer 1253 01:00:49,380 --> 01:00:52,620 es que usted no tiene que escribir var i = 50. 1254 01:00:52,620 --> 01:00:54,840 Se podía empezar a hacer i = 50. 1255 01:00:54,840 --> 01:00:57,490 Y sólo haría que una variable global. 1256 01:00:57,490 --> 01:01:00,550 >> Es muy mala práctica Nunca digo explícitamente var i, 1257 01:01:00,550 --> 01:01:01,800 pero es algo que puede hacer. 1258 01:01:01,800 --> 01:01:03,591 El intérprete no es va a gritar a usted. 1259 01:01:03,591 --> 01:01:05,920 JavaScript es bastante similar, puedes hacer lo que quieras. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 Oh, lo siento. 1262 01:01:09,800 --> 01:01:10,300 Hay dos. 1263 01:01:10,300 --> 01:01:12,150 En los pantalones de color naranja. 1264 01:01:12,150 --> 01:01:13,190 Adelante. 1265 01:01:13,190 --> 01:01:14,390 >> AUDIENCIA: No, tú primero. 1266 01:01:14,390 --> 01:01:16,765 >> AUDIENCIA: No, yo estaba diciendo Yo no tenía mi mano. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 OKAY. 1269 01:01:20,748 --> 01:01:26,604 Así que si usted fuera a llamar esa primera vez, ahora resumir, 1270 01:01:26,604 --> 01:01:29,864 lo llamamos la misma manera, X, y, como cada vez? 1271 01:01:29,864 --> 01:01:30,780 HANNAH BLUMBERG: Sí. 1272 01:01:30,780 --> 01:01:32,572 Así que estos dos esencialmente hacer la misma cosa. 1273 01:01:32,572 --> 01:01:35,113 AUDIENCIA: ¿Y cuál es la ventaja de la utilización de uno u otro? 1274 01:01:35,113 --> 01:01:37,500 HANNAH BLUMBERG: Ninguna ventaja de la utilización de uno o el otro. 1275 01:01:37,500 --> 01:01:40,080 Sólo quería mostrarte de dos diferentes piezas de la sintaxis. 1276 01:01:40,080 --> 01:01:42,770 Muchas veces en el anonimato funciones tienen un propósito 1277 01:01:42,770 --> 01:01:48,220 es si el argumento a otro función debe ser una función. 1278 01:01:48,220 --> 01:01:50,600 Y veremos que, en sólo un segundo con el Ajax. 1279 01:01:50,600 --> 01:01:53,577 >> Así que si eso no tiene ningún sentido, guárdelo en la parte posterior de la cabeza. 1280 01:01:53,577 --> 01:01:55,660 Ahí es donde un anónimo función podría ser útil 1281 01:01:55,660 --> 01:01:58,284 porque no es realmente vale la pena dándole un nombre ya que estamos justo 1282 01:01:58,284 --> 01:01:59,443 va a utilizar una vez. 1283 01:01:59,443 --> 01:02:00,370 Sí. 1284 01:02:00,370 --> 01:02:03,635 >> AUDIENCIA: Si x e y cambio posterior en adelante, se resumen cambiar también? 1285 01:02:03,635 --> 01:02:06,510 HANNAH BLUMBERG: Si x y el cambio y más adelante, se resumen cambiar también? 1286 01:02:06,510 --> 01:02:08,840 Así que esto es en realidad yo pensar en algo que es, 1287 01:02:08,840 --> 01:02:12,260 de nuevo, sólo se siente muy diferente de C. Esto no es un valor. 1288 01:02:12,260 --> 01:02:13,620 No es 5. 1289 01:02:13,620 --> 01:02:15,550 Es sólo la propia función. 1290 01:02:15,550 --> 01:02:19,110 Así que tan pronto como usted le da los parámetros, entonces usted realmente va a calcular un valor. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: Y entonces usted puede llamar a la función 1292 01:02:21,193 --> 01:02:23,272 y lo utilizan para conseguir un poco de valor. 1293 01:02:23,272 --> 01:02:24,230 HANNAH BLUMBERG: Correcto. 1294 01:02:24,230 --> 01:02:25,250 Exactamente. 1295 01:02:25,250 --> 01:02:25,863 Sí. 1296 01:02:25,863 --> 01:02:27,946 >> AUDIENCIA: Entonces, si sólo almacenarlo en la variable, 1297 01:02:27,946 --> 01:02:31,430 como var x es igual a cantidad de dos values-- 1298 01:02:31,430 --> 01:02:32,420 >> HANNAH BLUMBERG: Sí. 1299 01:02:32,420 --> 01:02:35,320 Así que usted podría hacer var sum es igual a la suma de dos valores. 1300 01:02:35,320 --> 01:02:37,670 Sí. 1301 01:02:37,670 --> 01:02:38,680 ¿Alguna otra pregunta? 1302 01:02:38,680 --> 01:02:39,642 Sí. 1303 01:02:39,642 --> 01:02:42,047 >> AUDIENCIA: Pero haría que confundir suma y la suma? 1304 01:02:42,047 --> 01:02:45,062 Al igual que si usted llama a su suma variable Cómo llamaría usted a la suma función? 1305 01:02:45,062 --> 01:02:45,895 HANNAH BLUMBERG: Mm. 1306 01:02:45,895 --> 01:02:46,395 Mm. 1307 01:02:46,395 --> 01:02:51,253 Si usted hizo algo al igual que, la suma es igual a la suma de 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> AUDIENCIA: Sí. 1309 01:02:53,170 --> 01:02:56,465 >> HANNAH BLUMBERG: Creo que sería sobrescribir el valor de la suma. 1310 01:02:56,465 --> 01:02:59,290 Así que otra interesante Lo que pasa JavaScript 1311 01:02:59,290 --> 01:03:02,950 es que una sola variable puede tomar en un montón de diferentes tipos. 1312 01:03:02,950 --> 01:03:03,790 Las malas prácticas. 1313 01:03:03,790 --> 01:03:06,280 Usted no debe hacer algo como lo que acaba de decir. 1314 01:03:06,280 --> 01:03:10,240 >> Pero en C, si i es igual a un número entero, 1315 01:03:10,240 --> 01:03:13,570 sabemos que nunca es va a convertirse en una cadena. 1316 01:03:13,570 --> 01:03:15,670 Este no es el caso en JavaScript. 1317 01:03:15,670 --> 01:03:17,770 Sí, buena pregunta. 1318 01:03:17,770 --> 01:03:20,151 ¿Algo más? 1319 01:03:20,151 --> 01:03:20,650 Correcto. 1320 01:03:20,650 --> 01:03:21,850 Hacer todo justo a tiempo. 1321 01:03:21,850 --> 01:03:23,050 Mantener en marcha. 1322 01:03:23,050 --> 01:03:25,200 Correcto. 1323 01:03:25,200 --> 01:03:27,780 >> Si nos fijamos en un array en JavaScript, aquí está 1324 01:03:27,780 --> 01:03:30,250 un ejemplo rápido de una matriz de cadenas. 1325 01:03:30,250 --> 01:03:31,967 Y matrices pueden crecer dinámicamente. 1326 01:03:31,967 --> 01:03:33,675 No tienen una tamaño fijo de la misma manera 1327 01:03:33,675 --> 01:03:37,990 que lo hacen en C. Podemos acceder al elementos con sólo los corchetes. 1328 01:03:37,990 --> 01:03:41,720 >> Eso se ve muy parecido a PHP y mucho como C, en el que podemos decir que, en este caso, 1329 01:03:41,720 --> 01:03:48,360 si quería la palabra JavaScript, lo haría no arr corchetes con un 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 Y entonces, si usted recuerda en C cuando quería conseguir la longitud de una matriz, 1332 01:03:55,390 --> 01:03:56,820 que era realmente molesto. 1333 01:03:56,820 --> 01:03:58,460 Pero en JavaScript, super fácil. 1334 01:03:58,460 --> 01:03:59,910 Todo lo que hacemos, .length. 1335 01:03:59,910 --> 01:04:01,120 Le da las longitudes. 1336 01:04:01,120 --> 01:04:01,892 Eso es. 1337 01:04:01,892 --> 01:04:03,140 >> AUDIENCIA: Eso es simple. 1338 01:04:03,140 --> 01:04:05,306 >> HANNAH BLUMBERG: Sí, hace su vida mucho más fácil. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 OK, no objeto-- allí. 1341 01:04:11,560 --> 01:04:15,480 Objetos en JavaScript sensación mucho como estructuras en C 1342 01:04:15,480 --> 01:04:18,280 y matrices asociativas en PHP. 1343 01:04:18,280 --> 01:04:20,270 Así que lo que hemos visto una mucho es JSON, que 1344 01:04:20,270 --> 01:04:23,150 es sinónimo de JavaScript Object Notation. 1345 01:04:23,150 --> 01:04:25,550 Y es básicamente una manera de estructurar nuestros datos. 1346 01:04:25,550 --> 01:04:27,880 >> Así que vamos a ver un ejemplo, probablemente el más fácil. 1347 01:04:27,880 --> 01:04:32,540 Así que aquí está un ejemplo de un objeto que almacena la clase, CS50. 1348 01:04:32,540 --> 01:04:37,790 Y cuando digo clase, me refiero por supuesto, No como-- sí, el curso, CS50. 1349 01:04:37,790 --> 01:04:40,730 Y verás que todo en el objeto 1350 01:04:40,730 --> 01:04:43,526 va a ser contenida entre llaves. 1351 01:04:43,526 --> 01:04:48,260 >> Y empezamos a asociar nombres de campo o las teclas con los diferentes valores. 1352 01:04:48,260 --> 01:04:52,920 Así que usted puede comenzar a ver cómo este tipo de se siente como una matriz asociativa en PHP. 1353 01:04:52,920 --> 01:04:57,450 Así que vamos a asociar el campo o el nombre de clave, por supuesto, con la cadena, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> Vamos a tener un instructor. 1356 01:04:59,940 --> 01:05:00,940 Vamos a tener TFS. 1357 01:05:00,940 --> 01:05:05,240 Vamos a tener el número de conjuntos de procesadores y vamos haber grabado. 1358 01:05:05,240 --> 01:05:10,720 Y una cosa fresca a destacar es todo estas cosas tienen diferentes tipos, 1359 01:05:10,720 --> 01:05:12,020 y eso es totalmente bien. 1360 01:05:12,020 --> 01:05:15,330 >> Está bien para un objeto, de hecho, que probablemente lo esperado para un objeto 1361 01:05:15,330 --> 01:05:19,620 tener una combinación de cadenas y números y booleanos y arrays 1362 01:05:19,620 --> 01:05:23,420 y todo lo que podría quiere tener dentro de su objeto. 1363 01:05:23,420 --> 01:05:28,570 Y tenga en cuenta que estos van a ser los nombres o las llaves, y entonces sólo 1364 01:05:28,570 --> 01:05:30,300 configurarlo igual con un poco de colon. 1365 01:05:30,300 --> 01:05:32,015 >> AUDIENCIA: ¿Qué significa exactamente JSON? 1366 01:05:32,015 --> 01:05:33,890 HANNAH BLUMBERG: ¿Qué exactamente qué significa JSON? 1367 01:05:33,890 --> 01:05:36,470 JSON simplemente significa JavaScript Object Notation. 1368 01:05:36,470 --> 01:05:38,430 Es sólo una manera de formatear. 1369 01:05:38,430 --> 01:05:40,040 Sí. 1370 01:05:40,040 --> 01:05:41,800 Es una manera de formatear nuestros datos. 1371 01:05:41,800 --> 01:05:43,620 >> En C, es estructuras. 1372 01:05:43,620 --> 01:05:45,800 En PHP, es matrices asociativas. 1373 01:05:45,800 --> 01:05:47,120 En JavaScript, tenemos objetos. 1374 01:05:47,120 --> 01:05:48,969 >> AUDIENCIA: Entonces CS50 es un objeto? 1375 01:05:48,969 --> 01:05:51,010 HANNAH BLUMBERG: CS50 es el objeto en este caso. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 Ahora, ¿cómo hacer que realmente el acceso esos campos o cambiar esos campos. 1378 01:05:57,880 --> 01:06:03,920 Por ejemplo, supongamos que decidimos que querías uno menos pset este semestre. 1379 01:06:03,920 --> 01:06:06,300 En lugar de nueve, estamos sólo va a tener ocho. 1380 01:06:06,300 --> 01:06:08,240 ¿Cómo podemos cambiar esto? 1381 01:06:08,240 --> 01:06:09,436 >> Oh, de manera equivocada. 1382 01:06:09,436 --> 01:06:11,060 Hay dos maneras en que podemos hacer eso. 1383 01:06:11,060 --> 01:06:13,490 El número uno es con el punto notación y número dos 1384 01:06:13,490 --> 01:06:15,750 es con la notación de corchetes. 1385 01:06:15,750 --> 01:06:19,720 Así, por ejemplo, si querido cambiar o acceso 1386 01:06:19,720 --> 01:06:26,820 el campo de conjuntos de procesadores en nuestro objeto CS50, lo que yo haría es CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 por lo que el nombre del objeto dot el nombre del campo o la tecla. 1388 01:06:30,770 --> 01:06:37,120 >> Muy similar, es exactamente equivalente a hacer CS50, y luego 1389 01:06:37,120 --> 01:06:42,050 entre corchetes, conjuntos de procesadores. 1390 01:06:42,050 --> 01:06:42,837 ¿Guay? 1391 01:06:42,837 --> 01:06:44,298 Sí. 1392 01:06:44,298 --> 01:06:47,707 >> AUDIENCIA: Así es JSON técnicamente JavaScript, 1393 01:06:47,707 --> 01:06:51,814 a pesar de que en los conjuntos de procesadores que separarlo cabo [inaudible]? 1394 01:06:51,814 --> 01:06:52,730 HANNAH BLUMBERG: Claro. 1395 01:06:52,730 --> 01:06:56,290 Entonces la pregunta es, son JavaScript y JSON equivalente? 1396 01:06:56,290 --> 01:07:00,750 Así JSON es notación, básicamente, la forma en que escribimos 1397 01:07:00,750 --> 01:07:02,700 un objeto de JavaScript. 1398 01:07:02,700 --> 01:07:05,190 Así que no son exactamente lo mismo. 1399 01:07:05,190 --> 01:07:08,950 >> Yo diría JavaScript, hay son objetos en JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON toma esos objetos y los imprime y los muestra 1401 01:07:12,590 --> 01:07:15,160 o los almacena de una manera agradable. 1402 01:07:15,160 --> 01:07:18,110 Así que JSON no es una programación lenguaje de la forma en que JavaScript está. 1403 01:07:18,110 --> 01:07:20,900 Es sólo la notación para nuestros objetos en JavaScript. 1404 01:07:20,900 --> 01:07:21,400 Sí. 1405 01:07:21,400 --> 01:07:24,144 >> AUDIENCIA: Entonces, ¿qué [Inaudible] completar? 1406 01:07:24,144 --> 01:07:25,060 HANNAH BLUMBERG: Claro. 1407 01:07:25,060 --> 01:07:27,727 Así que esto en realidad no hace nada. 1408 01:07:27,727 --> 01:07:28,935 Esto es sólo una forma de acceder. 1409 01:07:28,935 --> 01:07:31,393 Así que digamos que queríamos cambiar el número de conjuntos de problemas 1410 01:07:31,393 --> 01:07:32,450 nueve-ocho. 1411 01:07:32,450 --> 01:07:34,383 Lo que hacemos es hacer algo como CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> Sí, buena pregunta. 1414 01:07:39,400 --> 01:07:40,733 Esto es sólo para mostrar que la sintaxis. 1415 01:07:40,733 --> 01:07:43,620 En realidad no hacer nada útil. 1416 01:07:43,620 --> 01:07:46,085 ¿Alguna pregunta? 1417 01:07:46,085 --> 01:07:48,210 La derecha móvil adelante. 1418 01:07:48,210 --> 01:07:51,960 >> Así que vamos a ver un ejemplo rápido de cómo Trabaja JavaScript porque te dije que 1419 01:07:51,960 --> 01:07:55,170 hace todas estas cosas geniales y nos permite modificar páginas web. 1420 01:07:55,170 --> 01:07:56,970 Vamos a ver realmente en acción. 1421 01:07:56,970 --> 01:07:59,850 Así que toma, por ejemplo, este archivo HTML. 1422 01:07:59,850 --> 01:08:04,350 >> Y lo que quiero le permite centrarse en es esta etiqueta particular, que es un botón, 1423 01:08:04,350 --> 01:08:06,182 con search_button Identificación. 1424 01:08:06,182 --> 01:08:08,670 Es sólo en la página. 1425 01:08:08,670 --> 01:08:10,690 Así que ahora vamos a ver qué en realidad podemos hacer. 1426 01:08:10,690 --> 01:08:12,560 >> Bueno, supongamos que cuando hacer clic en ese botón, 1427 01:08:12,560 --> 01:08:16,010 queremos hacer una alert-- ha hecho clic en el botón. 1428 01:08:16,010 --> 01:08:17,840 Vamos a ver cómo podemos hacer eso. 1429 01:08:17,840 --> 01:08:23,869 Así window.onload-- esto no es algo que has visto en clase, por lo tanto, 1430 01:08:23,869 --> 01:08:26,180 no se necesita saber para la prueba. 1431 01:08:26,180 --> 01:08:33,660 Pero esto básicamente dice, OK, llamada esta función cuando se carga la ventana. 1432 01:08:33,660 --> 01:08:35,080 >> Así que eso es sólo un poco de código de configuración. 1433 01:08:35,080 --> 01:08:36,390 No te preocupes tanto por eso. 1434 01:08:36,390 --> 01:08:39,170 Lo que quiero que permite centrarse en está aquí. 1435 01:08:39,170 --> 01:08:44,020 Decimos searchButton var es igual document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> Así como usted puede imaginar, lo que esto hace es que dice, 1437 01:08:46,450 --> 01:08:50,920 OK, ir a buscar el elemento con search_button ID. 1438 01:08:50,920 --> 01:08:52,790 Y ahora tenemos que elemento real y estoy 1439 01:08:52,790 --> 01:08:56,279 va a almacenar en un searchButton variable. 1440 01:08:56,279 --> 01:09:00,651 Y ahora podemos realmente utilizar ese elemento y cambiarlo, o acceder a sus valores, 1441 01:09:00,651 --> 01:09:01,359 cosas así. 1442 01:09:01,359 --> 01:09:04,649 De hecho, podemos empezar a comprometerse con la página web. 1443 01:09:04,649 --> 01:09:10,330 >> Así que aquí voy a decir, OK, ahora que tengo ese botón, cuando se hace clic, 1444 01:09:10,330 --> 01:09:12,859 llamar a esta función anónima. 1445 01:09:12,859 --> 01:09:16,811 Así que aquí es donde el anonimato funciones se vuelven útiles. 1446 01:09:16,811 --> 01:09:18,060 ¿Y qué hace la función? 1447 01:09:18,060 --> 01:09:20,529 Bueno, simplemente llama a esto función de alerta y dice, 1448 01:09:20,529 --> 01:09:22,910 ha hecho clic en el botón Buscar. 1449 01:09:22,910 --> 01:09:29,670 >> Entonces, ¿qué va a pasar si voy a donde quiera este código HTML vive y haga clic en el botón, 1450 01:09:29,670 --> 01:09:33,729 Voy a buscar un poco de alerta de lujo que dice que ha hecho clic en el botón. 1451 01:09:33,729 --> 01:09:40,710 Así que las cosas que se centran en aquí-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 consigue un HTML particular, elemento con el ID dado. 1453 01:09:44,960 --> 01:09:48,529 Y ahora podemos establecer lo que debería suceder cuando 1454 01:09:48,529 --> 01:09:50,702 ese elemento en particular se hace clic. 1455 01:09:50,702 --> 01:09:52,670 >> AUDIENCIA: Tenemos que poner todo eso en? 1456 01:09:52,670 --> 01:09:53,162 >> HANNAH BLUMBERG: Lo siento? 1457 01:09:53,162 --> 01:09:55,130 >> AUDIENCIA: ¿Tenemos que codificar físicamente todo eso? 1458 01:09:55,130 --> 01:09:56,340 >> HANNAH BLUMBERG: ¿Tenemos que codificar físicamente todo eso? 1459 01:09:56,340 --> 01:09:56,839 Sí. 1460 01:09:56,839 --> 01:09:58,120 ¿No es esto un poco molesto? 1461 01:09:58,120 --> 01:10:00,032 Se trata de una gran cantidad de código. 1462 01:10:00,032 --> 01:10:01,574 >> AUDIENCIA: Usted podría importar algo. 1463 01:10:01,574 --> 01:10:02,532 HANNAH BLUMBERG: Correcto. 1464 01:10:02,532 --> 01:10:03,610 Podríamos usar algo. 1465 01:10:03,610 --> 01:10:08,140 Y en particular: oh, es me dice que tengo que enseñar sección. 1466 01:10:08,140 --> 01:10:11,061 En particular, vamos a utilizar la biblioteca jQuery, 1467 01:10:11,061 --> 01:10:13,060 porque eso era realmente largo y muy molesto 1468 01:10:13,060 --> 01:10:16,860 y quiero ser capaz de simplificarlo y hacerlo más corto y más fácil de escribir. 1469 01:10:16,860 --> 01:10:19,810 >> Así que jQuery es una biblioteca JavaScript. 1470 01:10:19,810 --> 01:10:24,930 Así que JavaScript está la programación idioma; jQuery es una biblioteca. 1471 01:10:24,930 --> 01:10:27,190 Y hace un montón de cosas más fáciles. 1472 01:10:27,190 --> 01:10:33,230 Hace que cambiar y va a través de un documento HTML mucho más fácil. 1473 01:10:33,230 --> 01:10:35,030 >> Hace que los eventos de manipulación más fácil. 1474 01:10:35,030 --> 01:10:37,580 Esto hace más fácil la animación y hace más fácil el Ajax. 1475 01:10:37,580 --> 01:10:40,140 Así que vamos a saltar en dos de esas cosas ahora mismo. 1476 01:10:40,140 --> 01:10:40,900 Disculpe me. 1477 01:10:40,900 --> 01:10:42,620 Antes de hacerlo, algunas sintaxis básica. 1478 01:10:42,620 --> 01:10:46,870 >> Esto es lo que más llama a la biblioteca jQuery parece. 1479 01:10:46,870 --> 01:10:50,520 Utilizamos este dólar sign-- ninguna señal de conexión a PHP, 1480 01:10:50,520 --> 01:10:56,030 inconvenient-- simplemente el nombre de una selector, punto, y luego una acción. 1481 01:10:56,030 --> 01:10:58,860 Así que vamos a ver un poco de ejemplos concretos de eso. 1482 01:10:58,860 --> 01:11:02,980 >> Así que esta realidad es la misma código de la diapositiva evento. 1483 01:11:02,980 --> 01:11:08,740 Así que esta cosa larga, feo se convierte en esta mucho mejor, algo más pequeño. 1484 01:11:08,740 --> 01:11:10,370 Así que vamos a tratar de descomponerlo. 1485 01:11:10,370 --> 01:11:17,090 Esto dice, OK, jQuery-- este dólar sign-- jQuery, encontrarme la ventana. 1486 01:11:17,090 --> 01:11:18,480 Así que ese es el selector. 1487 01:11:18,480 --> 01:11:21,800 >> Cuando se carga, llame a esta función. 1488 01:11:21,800 --> 01:11:23,880 Así que eso es todo por dentro. 1489 01:11:23,880 --> 01:11:24,380 OKAY. 1490 01:11:24,380 --> 01:11:25,740 ¿Hasta ahora, todo bien? 1491 01:11:25,740 --> 01:11:26,750 Correcto. 1492 01:11:26,750 --> 01:11:32,970 >> Ahora, jQuery, me la encuentre cosa con search_button ID. 1493 01:11:32,970 --> 01:11:36,090 Y lo que se hace clic, llamar a esta función. 1494 01:11:36,090 --> 01:11:37,900 Y entonces esta función de exactamente lo mismo. 1495 01:11:37,900 --> 01:11:41,052 Solo hacer un poco de alerta, ha hecho clic en el botón Buscar. 1496 01:11:41,052 --> 01:11:42,650 >> Así que es muy agradable. 1497 01:11:42,650 --> 01:11:46,260 Realmente condensa y simplifica nuestro código. 1498 01:11:46,260 --> 01:11:49,030 ¿Cómo sé que es search_button ID 1499 01:11:49,030 --> 01:11:50,960 y no como clase search_button? 1500 01:11:50,960 --> 01:11:52,024 >> AUDIENCIA: Hashtag? 1501 01:11:52,024 --> 01:11:52,940 HANNAH BLUMBERG: Sí. 1502 01:11:52,940 --> 01:11:56,450 Este símbolo de hash, es como CSS. 1503 01:11:56,450 --> 01:12:00,080 Así que recuerda, con CSS, cuando querido seleccionar algo por ID, 1504 01:12:00,080 --> 01:12:01,590 hemos utilizado el signo libra. 1505 01:12:01,590 --> 01:12:05,400 Y cuando queríamos para seleccionar algo por clase, utilizamos el punto. 1506 01:12:05,400 --> 01:12:06,870 Excelente. 1507 01:12:06,870 --> 01:12:08,230 ¿Tener sentido? 1508 01:12:08,230 --> 01:12:11,500 Así que se supone que jQuery acaba de hacer nuestra vida más fácil. 1509 01:12:11,500 --> 01:12:12,000 Sí. 1510 01:12:12,000 --> 01:12:15,660 >> AUDIENCIA: Así que estoy un poco confundido en cuanto para el funcionamiento de la función anónima. 1511 01:12:15,660 --> 01:12:19,027 ¿Usted lo nombra este anonymouse función, la función? 1512 01:12:19,027 --> 01:12:20,594 ¿Como se llama? 1513 01:12:20,594 --> 01:12:21,510 HANNAH BLUMBERG: Claro. 1514 01:12:21,510 --> 01:12:25,812 Así que la función es sólo una palabra clave que dice: Estoy a punto de definir una función. 1515 01:12:25,812 --> 01:12:26,520 AUDIENCIA: ¡Oh, OK. 1516 01:12:26,520 --> 01:12:27,353 HANNAH BLUMBERG: OK? 1517 01:12:27,353 --> 01:12:32,120 Y luego le pasamos como argumento a-- echemos 1518 01:12:32,120 --> 01:12:37,040 este uno-- interior para la función de clic. 1519 01:12:37,040 --> 01:12:39,420 Así que sí, por lo que la función, esta función anónima, 1520 01:12:39,420 --> 01:12:40,910 se convierte en un argumento real. 1521 01:12:40,910 --> 01:12:43,632 Así que recuerde en JavaScript, que puede tratar funciones como valores. 1522 01:12:43,632 --> 01:12:44,340 AUDIENCIA: ¡Oh, OK. 1523 01:12:44,340 --> 01:12:45,256 HANNAH BLUMBERG: Sí. 1524 01:12:45,256 --> 01:12:46,035 Me gusta que "oh". 1525 01:12:46,035 --> 01:12:47,490 Agradable. 1526 01:12:47,490 --> 01:12:49,915 ¿Otras preguntas? 1527 01:12:49,915 --> 01:12:50,505 ¿Hora? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: Good. 1529 01:12:51,380 --> 01:12:52,760 Bueno. 1530 01:12:52,760 --> 01:12:54,210 >> HANNAH BLUMBERG: Awesome. 1531 01:12:54,210 --> 01:12:55,720 Algunos jQuery útil rápida. 1532 01:12:55,720 --> 01:12:57,559 Yo no voy a ir a través de todos ellos. 1533 01:12:57,559 --> 01:12:59,350 Estas diapositivas serán arriba en línea un poco 1534 01:12:59,350 --> 01:13:02,040 más tarde, para que pueda comprobar que fuera un poco más tarde. 1535 01:13:02,040 --> 01:13:07,120 Pero básicamente, el general patrón se mantiene en la que decimos, 1536 01:13:07,120 --> 01:13:11,510 OK, bueno, jQuery, aquí está mi selector y entonces aquí es una acción. 1537 01:13:11,510 --> 01:13:15,940 Y usted puede hacer cosas como el acceso al valor de un formulario, accede algo de HTML, 1538 01:13:15,940 --> 01:13:19,195 control de lo que sucede cuando el usuario presenta una forma, cosas así. 1539 01:13:19,195 --> 01:13:20,106 Sí. 1540 01:13:20,106 --> 01:13:22,090 >> AUDIENCIA: Así que en el examen, vamos a necesitar 1541 01:13:22,090 --> 01:13:25,066 saber bastante de la documentación de jQuery. 1542 01:13:25,066 --> 01:13:31,018 Así que dado que copiar / pegar el jQuery documentación para nuestra hoja de trucos, 1543 01:13:31,018 --> 01:13:32,506 ¿dónde está el límite? 1544 01:13:32,506 --> 01:13:33,957 Como cuántos qué necesitamos saber? 1545 01:13:33,957 --> 01:13:35,290 HANNAH BLUMBERG: Muy buena pregunta. 1546 01:13:35,290 --> 01:13:37,765 La pregunta es esencialmente dado que 1547 01:13:37,765 --> 01:13:41,330 no puede acceder a la documentación de jQuery durante la prueba, ¿cuánto debe 1548 01:13:41,330 --> 01:13:41,830 ¿saber? 1549 01:13:41,830 --> 01:13:45,540 No esperaríamos que vengas con alguna función aleatoria 1550 01:13:45,540 --> 01:13:47,240 que se puede esperar para Google. 1551 01:13:47,240 --> 01:13:52,930 >> Las cosas que son un blanco legítimo son lo haría decir sólo un poco de la sintaxis general, 1552 01:13:52,930 --> 01:13:58,310 ser capaz de seleccionar y por ID por class-- así como CSS. 1553 01:13:58,310 --> 01:14:01,876 Y entonces las funciones reales sí mismos, que lo más probable es que te dicen. 1554 01:14:01,876 --> 01:14:02,376 Sí. 1555 01:14:02,376 --> 01:14:05,591 >> AUDIENCIA: Entonces, cuando se selecciona por clase significaría punto. 1556 01:14:05,591 --> 01:14:06,840 HANNAH BLUMBERG: Sí, exactamente. 1557 01:14:06,840 --> 01:14:07,340 Bueno. 1558 01:14:07,340 --> 01:14:10,461 Cuando se selecciona por clase, que va que se salpican en lugar del signo libra. 1559 01:14:10,461 --> 01:14:10,960 Sí. 1560 01:14:10,960 --> 01:14:12,710 >> AUDIENCIA: ¿Quieres que repasar la diferencia 1561 01:14:12,710 --> 01:14:14,310 entre la selección por ID y por clase? 1562 01:14:14,310 --> 01:14:14,560 >> HANNAH BLUMBERG: Claro. 1563 01:14:14,560 --> 01:14:17,510 La diferencia entre seleccionar Identificación y seleccionando por clase. 1564 01:14:17,510 --> 01:14:20,685 Así como dijo Maria a poco antes, hay 1565 01:14:20,685 --> 01:14:26,280 Sólo puede haber un elemento HTML con una identificación dada, mientras que la clase, 1566 01:14:26,280 --> 01:14:29,740 nos permite agrupar un montón de diferentes elementos juntos, 1567 01:14:29,740 --> 01:14:34,300 así que las cosas que se relacionan, pero no exactamente lo mismo. 1568 01:14:34,300 --> 01:14:35,685 ¿Eso responde a la pregunta? 1569 01:14:35,685 --> 01:14:36,200 Impresionante. 1570 01:14:36,200 --> 01:14:37,194 Sí. 1571 01:14:37,194 --> 01:14:40,680 >> AUDIENCIA: ¿Qué pasa si usted tiene múltiples cosas que están en la misma clase? 1572 01:14:40,680 --> 01:14:42,150 >> HANNAH BLUMBERG: ¿Qué sucede si tiene varias cosas que 1573 01:14:42,150 --> 01:14:43,280 son la misma clase? 1574 01:14:43,280 --> 01:14:45,829 Así, por ejemplo, si estamos simplemente usando JavaScript puro, 1575 01:14:45,829 --> 01:14:48,120 nos gustaría hacer algo como document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 Y entonces lo que realmente hace es Devuelve una matriz de elementos. 1578 01:14:56,320 --> 01:14:59,517 >> Y hay que cualquiera iterar sobre ellos o encontrar cuál de ellos desea. 1579 01:14:59,517 --> 01:15:01,350 No va a dar que un solo elemento. 1580 01:15:01,350 --> 01:15:03,450 Se va a dar una matriz de elementos. 1581 01:15:03,450 --> 01:15:05,280 Muy buena pregunta. 1582 01:15:05,280 --> 01:15:07,700 ¿Algo más? 1583 01:15:07,700 --> 01:15:09,520 Impresionante. 1584 01:15:09,520 --> 01:15:12,860 >> Así que creo que si estás familiarizado con cualquier jQuery que viste en el conjunto de procesadores, 1585 01:15:12,860 --> 01:15:15,600 Usted debe ser bueno para ir. 1586 01:15:15,600 --> 01:15:16,325 ¿Pregunta? 1587 01:15:16,325 --> 01:15:17,610 Oh, no. 1588 01:15:17,610 --> 01:15:18,859 Realmente tengo que enseñar. 1589 01:15:18,859 --> 01:15:19,358 Relájese. 1590 01:15:19,358 --> 01:15:20,035 Estará bien. 1591 01:15:20,035 --> 01:15:20,660 Voy a llegar. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> Vamos a hablar de Ajax. 1594 01:15:26,870 --> 01:15:31,350 Así Ajax va a ser A-- así, vamos a empezar con lo que representa. 1595 01:15:31,350 --> 01:15:32,350 Es un acrónimo. 1596 01:15:32,350 --> 01:15:35,855 Significa asíncrona JavaScript y XML. 1597 01:15:35,855 --> 01:15:39,800 Y XML es básicamente va a ser [Inaudible] con un tipo de nuestros datos. 1598 01:15:39,800 --> 01:15:42,100 Pero no hemos realmente utilizado XML. 1599 01:15:42,100 --> 01:15:43,430 En lugar de ello, sólo tiene que utilizar JSON. 1600 01:15:43,430 --> 01:15:48,350 >> Así que, básicamente, es algunas data-- asíncrono, JavaScript, y datos, 1601 01:15:48,350 --> 01:15:50,040 en este caso, JSON. 1602 01:15:50,040 --> 01:15:52,820 Y nuestro objetivo, como hemos mencionado un poco antes, 1603 01:15:52,820 --> 01:15:56,880 es ser capaz de hacer una solicitud, ha hacer esa petición 1604 01:15:56,880 --> 01:16:00,700 su hora de la fondo, pero siguen 1605 01:16:00,700 --> 01:16:02,550 hacer lo que estábamos intención de hacer. 1606 01:16:02,550 --> 01:16:06,650 Y luego, cuando esa información es listo, entonces vamos a incorporarlo. 1607 01:16:06,650 --> 01:16:08,470 >> Así que vamos a ver lo que este en realidad parece. 1608 01:16:08,470 --> 01:16:11,210 Y esto, usted debería ser un poco familiarizado 1609 01:16:11,210 --> 01:16:13,680 desde pset8, el que usted acaba de cumplir en. 1610 01:16:13,680 --> 01:16:16,200 Así que aquí está un jQuery válida función que podríamos 1611 01:16:16,200 --> 01:16:18,250 quieren saber sobre-- este signo dólar. 1612 01:16:18,250 --> 01:16:21,500 Por lo que dice la función jQuery, .getJson. 1613 01:16:21,500 --> 01:16:25,020 >> ¿Y qué hace esta función es realiza un URL y algunos parameters-- 1614 01:16:25,020 --> 01:16:28,000 así que creo que en el caso de pset8, era como, 1615 01:16:28,000 --> 01:16:33,520 la URL era articles.php y la parámetros ha sido GO = algo de código postal. 1616 01:16:33,520 --> 01:16:41,580 Y dice, bien, hacer una petición a este URL con los parámetros dados. 1617 01:16:41,580 --> 01:16:43,480 Y eso sólo pasa. 1618 01:16:43,480 --> 01:16:47,730 >> Cuando termine, es ya sea va a completar con éxito 1619 01:16:47,730 --> 01:16:49,370 o que va a fallar. 1620 01:16:49,370 --> 01:16:53,480 Así que este es el equivalente de llamada Rob y le pide que haga algo. 1621 01:16:53,480 --> 01:17:00,260 Y luego, cuando vuelve a llamar, está bien va a decir que he terminado o fallé. 1622 01:17:00,260 --> 01:17:04,030 >> Así que en el caso de que usted es hecho, dices, OK, he terminado. 1623 01:17:04,030 --> 01:17:05,980 Y entonces se llama a esta función. 1624 01:17:05,980 --> 01:17:08,915 En este caso, va a ser un función que toma un poco de información. 1625 01:17:08,915 --> 01:17:12,890 El que nos preocupamos por lo general es de datos, los datos que en realidad estábamos volvimos 1626 01:17:12,890 --> 01:17:15,900 como resultado de la llamada .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> Y usted puede hacer algo con él. 1628 01:17:17,470 --> 01:17:23,670 Así que en el caso de pset8, exhibimos como una lista. 1629 01:17:23,670 --> 01:17:29,050 Falla va a ser una función eso se llama si falla la petición 1630 01:17:29,050 --> 01:17:30,450 por cualquier razón. 1631 01:17:30,450 --> 01:17:35,104 Y en el caso de pset8, acabamos console.log ella. 1632 01:17:35,104 --> 01:17:36,020 Para cualquier duda sobre eso? 1633 01:17:36,020 --> 01:17:36,300 Sí. 1634 01:17:36,300 --> 01:17:39,633 >> AUDIENCIA: ¿Podemos utilizar la función theta en lugar de la función, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 HANNAH BLUMBERG: Claro. 1637 01:17:44,380 --> 01:17:46,713 Así que sí, creo que en el conjunto de procesadores, que acabamos de ver los datos de la función. 1638 01:17:46,713 --> 01:17:48,700 Así que es sólo el-- sí, en Aceptar. 1639 01:17:48,700 --> 01:17:50,510 Eso es lo que vimos en el conjunto de procesadores. 1640 01:17:50,510 --> 01:17:51,480 Eso es totalmente bien. 1641 01:17:51,480 --> 01:17:54,210 >> Estos son sólo si querías para sacar más información, 1642 01:17:54,210 --> 01:17:57,190 estas son las cosas que usted podría conseguir de .getJSON. 1643 01:17:57,190 --> 01:17:59,040 Buena pregunta. 1644 01:17:59,040 --> 01:17:59,706 ¿Algo más? 1645 01:17:59,706 --> 01:18:00,206 Sí. 1646 01:18:00,206 --> 01:18:01,787 >> AUDIENCIA: Entonces .getJSON es Ajax? 1647 01:18:01,787 --> 01:18:02,620 HANNAH BLUMBERG: OK. 1648 01:18:02,620 --> 01:18:05,700 Así que este es el tipo de parte difícil. 1649 01:18:05,700 --> 01:18:12,390 Es una función jQuery que permite usted pueda hacer llamadas asíncronas. 1650 01:18:12,390 --> 01:18:16,080 Y esas llamadas asincrónicas, eso es lo que hemos estado refiriendo como Ajax. 1651 01:18:16,080 --> 01:18:16,850 Sí. 1652 01:18:16,850 --> 01:18:20,185 Eso me llevó un tiempo muy largo para separe cuando yo era un estudiante. 1653 01:18:20,185 --> 01:18:21,560 AUDIENCIA: ¿Puedes decir eso otra vez? 1654 01:18:21,560 --> 01:18:22,476 HANNAH BLUMBERG: Sí. 1655 01:18:22,476 --> 01:18:23,630 ¿Puedo decir eso otra vez? 1656 01:18:23,630 --> 01:18:29,010 Esta función .getJSON, es una función jQuery. 1657 01:18:29,010 --> 01:18:31,970 Y que va a hacer una llamada asincrónica. 1658 01:18:31,970 --> 01:18:35,700 Y estas llamadas asincrónicas, hemos se refiere a aquellos como el Ajax. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> ¿Alguna otra pregunta? 1661 01:18:41,872 --> 01:18:43,330 Tenemos sólo un par de minutos para el final. 1662 01:18:43,330 --> 01:18:45,080 Y María va a terminar con la seguridad 1663 01:18:45,080 --> 01:18:47,464 y luego nos vamos que se trata sólo de hacer. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: Awesome, OK. 1665 01:18:48,630 --> 01:18:54,030 Así que esto es-- sólo toma un par de segundos para mirar por encima de este. 1666 01:18:54,030 --> 01:18:56,750 Y esto no es algo realmente grande. 1667 01:18:56,750 --> 01:18:59,430 Y alguien puede decirme por qué? 1668 01:18:59,430 --> 01:19:05,650 ¿Qué está pasando en foo y podrá pudo potencialmente resultar en algo malo, 1669 01:19:05,650 --> 01:19:06,770 y cómo se llama? 1670 01:19:06,770 --> 01:19:07,270 Sí. 1671 01:19:07,270 --> 01:19:10,391 AUDIENCIA: Si el argumento de que es aprobada en más de 12 personajes, 1672 01:19:10,391 --> 01:19:11,454 podría desbordarse. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: Correcto. 1674 01:19:12,370 --> 01:19:14,180 Perfecto. 1675 01:19:14,180 --> 01:19:15,384 ¿Cómo se llama? 1676 01:19:15,384 --> 01:19:16,300 Usted acaba de mencionar que. 1677 01:19:16,300 --> 01:19:16,840 >> AUDIENCIA: Desbordamiento de búfer. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: Sí, buffer overflow. 1679 01:19:18,381 --> 01:19:21,230 Así que esto es algo que nosotros referirse como desbordamiento de búfer. 1680 01:19:21,230 --> 01:19:25,500 Y vemos que dentro de foo, hemos definido nuestro buffer, c, 1681 01:19:25,500 --> 01:19:27,240 con un tamaño de 12. 1682 01:19:27,240 --> 01:19:32,680 Sin embargo, en principal, no lo hacemos comprobar de ninguna manera en absoluto 1683 01:19:32,680 --> 01:19:36,480 si el argv1-- de manera que fue el segundo argumento. 1684 01:19:36,480 --> 01:19:39,630 No comprobamos si el tamaño de la misma es apropiada. 1685 01:19:39,630 --> 01:19:43,380 >> Así que si teníamos un usuario especialmente malicioso 1686 01:19:43,380 --> 01:19:47,170 que poner en un cierto argumento de que era más de 12, y luego potencialmente 1687 01:19:47,170 --> 01:19:50,850 más allá de los límites de esa argumento, tenía algo de código ejecutable 1688 01:19:50,850 --> 01:19:55,570 que él estaba tratando de hacer algo malo con ello; luego de esto, lo que sucedería, 1689 01:19:55,570 --> 01:19:59,310 anularía el retorno dirección de la función foo, 1690 01:19:59,310 --> 01:20:04,370 haciendo que la función para cuando volver a ejecutar ese código. 1691 01:20:04,370 --> 01:20:07,540 Y entonces las cosas malas pueden suceder. 1692 01:20:07,540 --> 01:20:09,850 ¿Tiene esto sentido para todo el mundo? 1693 01:20:09,850 --> 01:20:12,424 >> ¿Y cómo podemos proteger contra esto? 1694 01:20:12,424 --> 01:20:13,090 ¿Alguna sugerencia? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 Básicamente, en el interior de potencialmente foo, cómo 1697 01:20:21,890 --> 01:20:28,294 podemos comprobar para asegurarse que eso no puede suceder? 1698 01:20:28,294 --> 01:20:33,879 >> AUDIENCIA: Si se excede el tamaño 12, usted asignar memoria adicional? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: Sugerencia es, asignar memoria adicional del tamaño excedida. 1700 01:20:37,170 --> 01:20:39,800 En realidad, podemos hacer algo un mucho más simple que eso. 1701 01:20:39,800 --> 01:20:44,870 Sólo podemos obtener la longitud de la cadena del argumento que se introduce, 1702 01:20:44,870 --> 01:20:48,590 comprobar si es menos que o igual a 12-- 1703 01:20:48,590 --> 01:20:50,790 que es lo que queremos que ser porque no queremos 1704 01:20:50,790 --> 01:20:52,373 que exceda de los límites de nuestro buffer. 1705 01:20:52,373 --> 01:20:55,690 Y luego, si no lo hace, nos puede trabajar con el argumento. 1706 01:20:55,690 --> 01:21:00,296 Y luego, si lo hace, realmente queremos a Yello potencialmente en el usuario. 1707 01:21:00,296 --> 01:21:01,670 Pero así es como lo haríamos eso. 1708 01:21:01,670 --> 01:21:02,443 Sí. 1709 01:21:02,443 --> 01:21:04,360 >> AUDIENCIA: ¿Podría usted explicar rápida verdadera memcpy? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: Oh, lo siento. 1711 01:21:05,443 --> 01:21:06,040 Sí. 1712 01:21:06,040 --> 01:21:11,290 Memcpy toma lo es-- lo siento, OK. 1713 01:21:11,290 --> 01:21:15,850 Memcpy toma lo que sea en la barra, lo que sea se pasa 1714 01:21:15,850 --> 01:21:18,050 en foo como el argumento de la línea de comandos. 1715 01:21:18,050 --> 01:21:19,440 Así que va a tomar argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 se llama bar aquí. 1717 01:21:21,420 --> 01:21:24,453 Así que va a tomar bar y que va a copiar en c. 1718 01:21:24,453 --> 01:21:25,402 >> AUDIENCIA: OK. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: Y va a copy-- el tercer argumento simplemente se refiere 1720 01:21:28,360 --> 01:21:30,601 a lo mucho que va a copiar en c. 1721 01:21:30,601 --> 01:21:31,142 AUDIENCIA: Ah. 1722 01:21:31,142 --> 01:21:33,030 Así que de éste copia todos de la misma a continuación. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: Sí, está copiando todo. 1724 01:21:34,310 --> 01:21:34,810 Sí. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 En primer lugar, nos aseguramos de que la barra no es igual a NULL porque es un puntero. 1727 01:21:41,910 --> 01:21:44,680 Luego tenemos la longitud de la cadena de la barra. 1728 01:21:44,680 --> 01:21:47,530 Nos aseguramos de que es menos de o igual a 12. 1729 01:21:47,530 --> 01:21:50,070 Y luego porque hemos asegurado, podemos realidad 1730 01:21:50,070 --> 01:21:53,122 memcpy y estar seguro de que eso está bien. 1731 01:21:53,122 --> 01:21:53,705 ¿Alguna pregunta? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 Excelente. 1734 01:21:58,690 --> 01:22:00,400 Tengo dos preguntas de verdadero o falso. 1735 01:22:00,400 --> 01:22:05,470 ¿Puede alguien decirme de inmediato si son verdaderas o falsas? 1736 01:22:05,470 --> 01:22:07,460 Sí, es falso. 1737 01:22:07,460 --> 01:22:07,960 Exactamente. 1738 01:22:07,960 --> 01:22:09,330 Ambos son falsas. 1739 01:22:09,330 --> 01:22:12,682 Así, utilizando una sola contraseña Nunca es buena idea 1740 01:22:12,682 --> 01:22:14,890 porque si alguien sabe su contraseña, pueden simplemente 1741 01:22:14,890 --> 01:22:16,260 acceder a todas sus otras cuentas. 1742 01:22:16,260 --> 01:22:19,260 Y luego iconos hacen nada para garantizar la seguridad. 1743 01:22:19,260 --> 01:22:24,900 Generalmente Debemos buscar HTTPS en lugar de HTTP y la URL. 1744 01:22:24,900 --> 01:22:28,560 >> Y algunos otros tipos de ataques que hemos mencionado, 1745 01:22:28,560 --> 01:22:31,390 que David ha mencionado en dar una conferencia, los ataques de inyección SQL. 1746 01:22:31,390 --> 01:22:37,310 Ya vimos que si no-- la Función de consulta CS50 se asegura de que SQL 1747 01:22:37,310 --> 01:22:39,530 no pueden producirse ataques de inyección. 1748 01:22:39,530 --> 01:22:42,640 Pero si no estábamos usando CS50, Lo dijeron ellos "en consulta" 1749 01:22:42,640 --> 01:22:46,830 habría que asegurarse de que el la entrada del usuario no es en realidad algunos SQL 1750 01:22:46,830 --> 01:22:49,670 consulta que hará que todos los nuestras mesas que se retiren 1751 01:22:49,670 --> 01:22:54,070 o algo malo ocurrir con nuestra base de datos. 1752 01:22:54,070 --> 01:22:56,790 >> Secuestro de sesión es otro tipo de ataque 1753 01:22:56,790 --> 01:23:05,940 esto sucede cuando algún mal persona utiliza la sesión de alguna víctima 1754 01:23:05,940 --> 01:23:08,740 ID para acceder a la información de acceso. 1755 01:23:08,740 --> 01:23:13,620 Así, un ejemplo muy trivial de que es como si tenemos un ordenador público, 1756 01:23:13,620 --> 01:23:21,120 entonces la mala persona abre una sesión y después tienen galletas que se guardan. 1757 01:23:21,120 --> 01:23:23,380 Y las cookies no cambian para la sesión. 1758 01:23:23,380 --> 01:23:27,620 >> Luego tenemos la víctima entrar y luego iniciar sesión en el sitio web. 1759 01:23:27,620 --> 01:23:30,290 Las cookies no cambian durante un cierto período de sesiones. 1760 01:23:30,290 --> 01:23:33,060 Y entonces la víctima se registra en la página web y luego se va. 1761 01:23:33,060 --> 01:23:36,190 Y entonces la persona que se remonta a continuación, puede seguir utilizando su ID de sesión 1762 01:23:36,190 --> 01:23:37,430 para acceder a su información. 1763 01:23:37,430 --> 01:23:40,050 Así que eso es un ejemplo de lo que podría suceder. 1764 01:23:40,050 --> 01:23:45,570 >> Y entonces yo no me preocuparía demasiado sobre el código ni nada específico 1765 01:23:45,570 --> 01:23:49,270 así que podría causar esto, pero tener algún tipo de idea de lo que 1766 01:23:49,270 --> 01:23:51,400 las variables involucradas en esta son. 1767 01:23:51,400 --> 01:23:53,897 Y entonces la manipulación de cabecera datos es otro tipo de ataque 1768 01:23:53,897 --> 01:23:55,230 que tiene David ha hablado. 1769 01:23:55,230 --> 01:23:59,730 Y que sólo se refiere a lo que puede suceder cuando 1770 01:23:59,730 --> 01:24:04,300 la respuesta, el HTTP respuesta dentro de nuestra cabecera 1771 01:24:04,300 --> 01:24:05,720 no está desinfectado adecuadamente. 1772 01:24:05,720 --> 01:24:14,340 >> Y cualquiera de los fields-- por ejemplo, si alguien sobrescribe una de la cabecera 1773 01:24:14,340 --> 01:24:18,860 valores que contienen nada más lo que deben contain-- y realidad 1774 01:24:18,860 --> 01:24:22,720 contener, por ejemplo, un 200 Aceptar código de estado, entonces 1775 01:24:22,720 --> 01:24:26,890 podrían hacer malicioso cosas cuando no se supone que. 1776 01:24:26,890 --> 01:24:30,815 Pero yo no me preocuparía demasiado mucho sobre el código específico 1777 01:24:30,815 --> 01:24:34,110 que pueden implicar que esto, sólo una especie de entendimiento 1778 01:24:34,110 --> 01:24:37,290 cosas de alto nivel así. 1779 01:24:37,290 --> 01:24:39,570 >> Creo que esto es todo que tenemos que cubrir. 1780 01:24:39,570 --> 01:24:40,090 Impresionante. 1781 01:24:40,090 --> 01:24:43,310 ¿Alguien tiene alguna pregunta sobre cualquier de las cosas que cubrimos? 1782 01:24:43,310 --> 01:24:44,213 Sí. 1783 01:24:44,213 --> 01:24:48,077 >> AUDIENCIA: Así que una especie de pregunta más logístico. 1784 01:24:48,077 --> 01:24:53,400 ¿El contenido se centró principalmente en las cosas después de concurso 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: Así pregunta es, es el contenido 1786 01:24:55,730 --> 01:24:59,720 centrado principalmente en las cosas según cuestionario 1? 1787 01:24:59,720 --> 01:25:06,070 Por lo tanto el foco está en después de cuestionario 1, con la excepción 1788 01:25:06,070 --> 01:25:10,914 que tenemos que centrarnos en las cosas en pset5 y muchas de las estructuras de datos 1789 01:25:10,914 --> 01:25:11,580 que cubrimos. 1790 01:25:11,580 --> 01:25:14,300 Y no podemos decir que estamos puede ignorar nada antes 1791 01:25:14,300 --> 01:25:17,120 que debido a que se basa en ella también. 1792 01:25:17,120 --> 01:25:21,845 >> Así que concéntrate en eso, además de material de pset5 como incluir enlaces listas, pilas, 1793 01:25:21,845 --> 01:25:23,720 colas, y todo que Hannah se acercó. 1794 01:25:23,720 --> 01:25:24,050 >> HANNAH BLUMBERG: Correcto. 1795 01:25:24,050 --> 01:25:27,450 Sí, nos fuimos todas las cosas C en el principio, muy rápidamente. 1796 01:25:27,450 --> 01:25:29,090 Pero asegúrese de revisar eso. 1797 01:25:29,090 --> 01:25:32,700 Volver atrás y ver el cuestionario 0 opinión. 1798 01:25:32,700 --> 01:25:36,110 >> Un par notas más logísticos, solo mientras nosotros tenemos su atención. 1799 01:25:36,110 --> 01:25:39,100 Vamos a tener horas de oficina tanto el lunes y el martes por la noche. 1800 01:25:39,100 --> 01:25:41,540 Ellos van a estar en MD 119. 1801 01:25:41,540 --> 01:25:44,220 Esto es todo en el sitio web, por lo que si usted no oye, no se preocupe. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA 8:30 a 11:00. 1803 01:25:45,266 --> 01:25:46,260 >> HANNAH BLUMBERG: Sí, de 8:30 a 11:00. 1804 01:25:46,260 --> 01:25:46,910 Estaremos ahí. 1805 01:25:46,910 --> 01:25:48,368 Estaremos allí para responder preguntas. 1806 01:25:48,368 --> 01:25:49,480 Es bastante frío y divertido. 1807 01:25:49,480 --> 01:25:53,240 Ustedes pueden hacer cualquier pregunta que tiene en concurso 1. 1808 01:25:53,240 --> 01:25:55,740 Y prueba 1 está en Miércoles, así que buena suerte. 1809 01:25:55,740 --> 01:25:59,770 Si usted tiene alguna pregunta, tal vez venir a hablar con nosotros aquí uno a uno. 1810 01:25:59,770 --> 01:26:00,880 Guay. 1811 01:26:00,880 --> 01:26:01,630 Muchas gracias. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: Muchas gracias, chicos. 1813 01:26:02,880 --> 01:26:03,480 >> AUDIENCIA: Yay. 1814 01:26:03,480 --> 01:26:05,930 >> [APLAUSOS] 1815 01:26:05,930 --> 01:26:07,530