1 00:00:00,000 --> 00:00:02,916 2 00:00:02,916 --> 00:00:04,860 >> [REPRODUCCIÓN DE MÚSICA] 3 00:00:04,860 --> 00:00:10,210 4 00:00:10,210 --> 00:00:13,350 >> DAVID MALAN: Este es CS50, y este es el comienzo de la semana ocho. 5 00:00:13,350 --> 00:00:17,510 Y estamos tan emocionados de dar la bienvenida espalda, gran sorpresa, el propio Ramón CS50 6 00:00:17,510 --> 00:00:22,160 Galván, estudiante de último año en ascenso que ha sido pasar los últimos meses 7 00:00:22,160 --> 00:00:26,190 desde julio en Los Ángeles, en Hollywood, literalmente trabajando en un nuevo televisor de marca 8 00:00:26,190 --> 00:00:31,930 espectáculo llamado Colonia, el creador de los cuales es en realidad un alumbre de Harvard sí mismo. 9 00:00:31,930 --> 00:00:36,610 Y así que estamos muy contentos de ver este debut en la red EE.UU. este mes de enero. 10 00:00:36,610 --> 00:00:40,370 Así que estad atentos para eso, y para más Ramón para las semanas por venir. 11 00:00:40,370 --> 00:00:42,550 >> Ahora sé que el final está cerca. 12 00:00:42,550 --> 00:00:47,400 Y lo que esto significa es que no hay casi nada queda de CS50, es triste decirlo. 13 00:00:47,400 --> 00:00:49,400 Tenemos sólo tres problemas conjuntos izquierda- hay 14 00:00:49,400 --> 00:00:52,510 problema establece six-- que está en sus manos ahora o pronto serán, 15 00:00:52,510 --> 00:00:56,080 a finales de este week-- está destinado a salvar nuestros mundos de la línea de comandos, donde 16 00:00:56,080 --> 00:00:59,450 hemos pasado la mayor parte de nuestro tiempo utilizando C, y el mundo de la programación web. 17 00:00:59,450 --> 00:01:02,350 Bueno, verás un montón de ideas tomado de la obra de línea de comandos, 18 00:01:02,350 --> 00:01:04,560 sino también una gran cantidad de nuevo e ideas interesantes 19 00:01:04,560 --> 00:01:07,929 que también van a ser afín a aplicaciones móviles y la tecnología, 20 00:01:07,929 --> 00:01:10,470 más en general, con el que se chicos son todos conocemos hoy en día 21 00:01:10,470 --> 00:01:12,090 en las computadoras portátiles y los teléfonos y similares. 22 00:01:12,090 --> 00:01:15,220 >> Por lo que usted no implementa una página web o una página web 23 00:01:15,220 --> 00:01:17,620 per se, pero un servidor web real. 24 00:01:17,620 --> 00:01:21,590 Usted tendrá que escribir el resto de un servidor web escrito en C, cuyo propósito en la vida 25 00:01:21,590 --> 00:01:25,410 es recibir peticiones HTTP, esos sobres virtuales seguimos hablando 26 00:01:25,410 --> 00:01:29,780 sobre y responder realidad ya sea con algunos content-- estáticos como un punto HTML 27 00:01:29,780 --> 00:01:32,310 archivo, o un punto JPEG o cualquier otro número de archivos, 28 00:01:32,310 --> 00:01:37,070 o incluso un archivo PHP con lo que tu web servidor va a interpretar que PHP 29 00:01:37,070 --> 00:01:38,332 código y escupió los resultados. 30 00:01:38,332 --> 00:01:40,540 Ahora, le hemos proporcionado con un poco de marco 31 00:01:40,540 --> 00:01:43,100 para it-- hecho el código de distribución para el problema 32 00:01:43,100 --> 00:01:47,496 establece seis es más de 1.000 líneas de largo, un muchos de los cuales son los comentarios, para ser fair-- 33 00:01:47,496 --> 00:01:49,370 pero esto es realmente significaba ser una oportunidad 34 00:01:49,370 --> 00:01:52,570 para conseguir sus manos sucias de buceo en un proyecto bastante grande 35 00:01:52,570 --> 00:01:55,570 que hemos muy específica talladas en piezas de para usted, 36 00:01:55,570 --> 00:01:59,046 por lo que realmente al salir de CS50 y entrar en el mundo real de la programación 37 00:01:59,046 --> 00:02:00,920 y quieren incursionar en cualquier número de proyectos, 38 00:02:00,920 --> 00:02:03,253 tendrás mucho mayor confort descarga de alguna fuente 39 00:02:03,253 --> 00:02:05,020 código, algunos de código abierto proyectar en la web, 40 00:02:05,020 --> 00:02:08,174 y el buceo en y hacer cambios que se le parezca. 41 00:02:08,174 --> 00:02:11,340 Problema fijó siete va a ser acerca de hacer su propia aplicación basada en la web 42 00:02:11,340 --> 00:02:14,140 que toma la entrada dinámica y produce salida dinámica en la forma 43 00:02:14,140 --> 00:02:16,920 de un sitio web de etrade.com similares. 44 00:02:16,920 --> 00:02:20,800 Y un problema fijó ocho se centrará en todavía otro idioma conocido como JavaScript. 45 00:02:20,800 --> 00:02:24,170 >> Mientras tanto, la final proyecto está en el horizonte. 46 00:02:24,170 --> 00:02:26,800 El llamado pre-propuesta se debe a la semana a partir de hoy. 47 00:02:26,800 --> 00:02:29,930 Pre-proposal-- por la especificación, que está en website-- de CS50 48 00:02:29,930 --> 00:02:33,260 es una oportunidad bastante casual para que usted envíe un correo electrónico muy sucinta 49 00:02:33,260 --> 00:02:35,170 a su compañero de la enseñanza sólo para informar a 50 00:02:35,170 --> 00:02:38,250 o ella de lo que estás pensando, a él o ella utilice como caja de resonancia. 51 00:02:38,250 --> 00:02:40,980 Y tener una cordura check-- si usted está pensando 52 00:02:40,980 --> 00:02:43,210 acerca morder demasiado mucho o tal vez demasiado poco, 53 00:02:43,210 --> 00:02:46,480 o tal vez usted no tiene idea alguna y quiere participar en una conversación. 54 00:02:46,480 --> 00:02:48,480 >> A partir de entonces es una propuesta y el informe de estado, 55 00:02:48,480 --> 00:02:51,860 el denominado aquí en hackathon CS50 Cambridge para estudiantes de Harvard y Yale 56 00:02:51,860 --> 00:02:52,362 por igual. 57 00:02:52,362 --> 00:02:54,320 Del proyecto final aplicación es entonces debido. 58 00:02:54,320 --> 00:02:59,290 Y luego una feria CS50 aquí, en Cambridge, así como otro en New Haven. 59 00:02:59,290 --> 00:03:02,500 Así que la propuesta, eche un vistazo a la página web de esas menciones. 60 00:03:02,500 --> 00:03:06,530 >> Pero lo más emocionante, también, es un oportunidad de ensuciarse las manos, 61 00:03:06,530 --> 00:03:09,350 y sus mentes abiertas a un todo montón de temas y herramientas 62 00:03:09,350 --> 00:03:12,920 y técnicas que son auxiliares al plan de estudios básico del curso, 63 00:03:12,920 --> 00:03:14,810 pero no obstante relacionados. 64 00:03:14,810 --> 00:03:18,400 Y también maravillosa escalones para haciendo proyectos finales muy interesantes que 65 00:03:18,400 --> 00:03:22,020 van mucho más allá de material que hemos cubierto formalmente en problema fija o en conferencia. 66 00:03:22,020 --> 00:03:24,446 Así que ir a la página web del CS50 para toda la lista de seminarios. 67 00:03:24,446 --> 00:03:26,070 Si no se registra, sin embargo, eso está bien. 68 00:03:26,070 --> 00:03:29,860 Vaya por delante y regístrate quieto y lo haremos seguimiento con un enlace en vivo, 69 00:03:29,860 --> 00:03:31,844 el día y hora es en el sitio web. 70 00:03:31,844 --> 00:03:33,760 Y todo será grabado y puesto en línea 71 00:03:33,760 --> 00:03:35,800 si usted no puede hacer que el días y horarios determinados. 72 00:03:35,800 --> 00:03:39,380 >> En cuanto a lo que se avecina thereafter-- así, por supuesto, está el hackathon CS50. 73 00:03:39,380 --> 00:03:43,560 Esta foto, recuerdo, desde la semana cero tomada alrededor de las 4 am una noche en años anteriores. 74 00:03:43,560 --> 00:03:46,900 La feria CS50, que de nuevo se llevará a cabo en ambas ciudades. 75 00:03:46,900 --> 00:03:49,760 Y entonces, para plantar la semilla, a pesar de que todavía 76 00:03:49,760 --> 00:03:54,080 tener un mes más a la izquierda del semestre, si desea unirse a la propia enseñanza de CS50 77 00:03:54,080 --> 00:03:56,770 personal, y desea iniciar pensando en convertirse en una CA, 78 00:03:56,770 --> 00:03:59,550 o compañero de enseñanza, saber que vamos a empezar a hablar más sobre eso 79 00:03:59,550 --> 00:04:00,630 a finales de este semestre. 80 00:04:00,630 --> 00:04:03,470 Pero aquí está la foto la mayor parte de el equipo de este año. 81 00:04:03,470 --> 00:04:06,950 >> Y así, PHP-- y yo estaba tan triste la semana pasada que [? Allyse?] Amablemente 82 00:04:06,950 --> 00:04:09,370 fue al esfuerzo de llegar nosotros estos maravillosos accesorios 83 00:04:09,370 --> 00:04:11,720 que yo no las usamos, por lo que en realidad sólo parecía un poco estúpido 84 00:04:11,720 --> 00:04:15,160 que teníamos una pala sentado aquí todo día miércoles pasado, y un poco de cuchara. 85 00:04:15,160 --> 00:04:17,709 Pero esta fue mi metafórica manera de tratar de pintar 86 00:04:17,709 --> 00:04:21,600 la imagen de por qué estamos en transición de C a un lenguaje como PHP. 87 00:04:21,600 --> 00:04:25,480 Y lo mismo podría decirse de cualquier número de Las Lenguas Java, Python, Ruby 88 00:04:25,480 --> 00:04:31,270 o racimos de otros--, pero mientras que en C, por ejemplo, escribir un programa en C 89 00:04:31,270 --> 00:04:34,050 normalmente podría ser como teniendo una cuchara como esta 90 00:04:34,050 --> 00:04:36,770 y la excavación de un agujero en el tierra, en la arena o la suciedad. 91 00:04:36,770 --> 00:04:39,770 PHP le permite tomar mucho bocados más grandes fuera del problema, 92 00:04:39,770 --> 00:04:42,842 escribir código mucho menos utilizando una herramienta mucho más pequeño, 93 00:04:42,842 --> 00:04:45,050 porque hay mucho más funcionalidad reconstruido en. 94 00:04:45,050 --> 00:04:47,633 >> Ahora, si nos quedamos muy dramática, tendríamos algo para palear 95 00:04:47,633 --> 00:04:48,760 aquí, pero que así sea. 96 00:04:48,760 --> 00:04:51,370 Mientras tanto, el otro metáfora nos ocurrió 97 00:04:51,370 --> 00:04:53,770 es, por supuesto, usted podría usar algo como una llave 98 00:04:53,770 --> 00:04:56,610 a martillar en algo así como un clavo. 99 00:04:56,610 --> 00:04:58,980 Pero, por supuesto, el derecho herramienta para su uso va 100 00:04:58,980 --> 00:05:01,360 que no es tanto la lenguaje llamado C-- 101 00:05:01,360 --> 00:05:03,590 y ahora sólo molesto [? Sanders,?] Probablemente, 102 00:05:03,590 --> 00:05:07,890 lo arreglaremos lo que tarde-- la herramienta adecuada para utilizar con frecuencia 103 00:05:07,890 --> 00:05:09,640 No va a ser esta herramienta de nivel más bajo. 104 00:05:09,640 --> 00:05:13,720 Y, en efecto, C no es un lenguaje que la mayoría de ustedes alguna vez va a utilizar, 105 00:05:13,720 --> 00:05:15,590 o necesariamente deben utilizar de nuevo. 106 00:05:15,590 --> 00:05:18,350 >> Y de hecho, un poco secreto-- la única vez 107 00:05:18,350 --> 00:05:23,160 Yo uso C mí es más o menos entre Septiembre y diciembre de cada otoño 108 00:05:23,160 --> 00:05:23,870 semestre. 109 00:05:23,870 --> 00:05:25,790 Y eso se debe a que utilizarlo como una oportunidad 110 00:05:25,790 --> 00:05:27,852 para enseñar los fundamentos de la programación, 111 00:05:27,852 --> 00:05:29,810 y con ella la computadora fundamentos científicos, datos 112 00:05:29,810 --> 00:05:32,435 las estructuras, los algoritmos y la como-- pero muy rápidamente ¿verdad 113 00:05:32,435 --> 00:05:35,010 ver ahora que la sintaxis y las ideas que subyace C 114 00:05:35,010 --> 00:05:37,530 son tan maravillosamente transferible a más moderno 115 00:05:37,530 --> 00:05:41,130 lenguajes de alto nivel, como PHP y Python y Perl y Java 116 00:05:41,130 --> 00:05:46,750 y Objective-C- en realidad, no tanto Objetivo-C- pero Swift, estos nuevos 117 00:05:46,750 --> 00:05:50,010 lenguajes que muchos de ustedes luego incursionar con ustedes proyecto final. 118 00:05:50,010 --> 00:05:55,070 >> Así que sin más preámbulos, vamos a realidad usar PHP para resolver algunos problemas. 119 00:05:55,070 --> 00:06:00,230 Recordemos que desde el principio, la última semana, sólo utilizamos CS50 IDE, 120 00:06:00,230 --> 00:06:02,990 escribimos un pequeño programa dinky que acaba de decir, "Hola mundo". 121 00:06:02,990 --> 00:06:05,680 Y luego lo guardé en un archivo llamado hello.php. 122 00:06:05,680 --> 00:06:07,280 Y entonces me encontré con este comando. 123 00:06:07,280 --> 00:06:08,080 >> ¿Y por qué? 124 00:06:08,080 --> 00:06:09,900 En Inglés, ¿qué está pasando aquí? 125 00:06:09,900 --> 00:06:12,760 ¿Qué estaba haciendo cuando Corrí este comando? 126 00:06:12,760 --> 00:06:13,405 >> ¿Sí? 127 00:06:13,405 --> 00:06:16,572 >> AUDIENCIA: Hay un poco de PHP función que dice lo que está en-- entiende eso. 128 00:06:16,572 --> 00:06:19,696 DAVID MALAN: Bueno, hay alguna función PHP-- y déjame ser más específicos, 129 00:06:19,696 --> 00:06:21,810 hay un programa llamado PHP, alias 130 00:06:21,810 --> 00:06:25,872 El intérprete, que entiende el contenido de hello.php, 131 00:06:25,872 --> 00:06:27,830 y lo interpreta arriba abajo, de izquierda a derecha, 132 00:06:27,830 --> 00:06:29,590 y hace lo que dicen esos comandos. 133 00:06:29,590 --> 00:06:33,320 Los comandos de hello.php, por supuesto, es sólo la fuente code-- funciones 134 00:06:33,320 --> 00:06:35,750 y variables y bucles y similares, que nosotros mismos 135 00:06:35,750 --> 00:06:37,460 han comenzado a escribir en PHP. 136 00:06:37,460 --> 00:06:40,240 >> Pero a diferencia de C, la cual es un lenguaje compilado, 137 00:06:40,240 --> 00:06:42,810 PHP que acaba de escribir, y ejecutarlo. 138 00:06:42,810 --> 00:06:46,420 Se salta ese paso intermediario de convirtiéndola en ceros y unos, 139 00:06:46,420 --> 00:06:47,790 y luego ejecutarlo. 140 00:06:47,790 --> 00:06:50,510 Y así, lo que es una ventaja de esto? 141 00:06:50,510 --> 00:06:52,690 ¿Por qué estamos omitiendo el paso? 142 00:06:52,690 --> 00:06:55,238 ¿Por qué los lenguajes más modernos tienden a omitir este paso? 143 00:06:55,238 --> 00:06:58,880 144 00:06:58,880 --> 00:07:01,220 ¿Cuál fue el beneficio? 145 00:07:01,220 --> 00:07:02,080 >> O simplemente intuitivamente? 146 00:07:02,080 --> 00:07:04,200 Incluso si no has escrito mucho antes de PHP, 147 00:07:04,200 --> 00:07:07,210 lo que es beneficioso por no compilar el código qué te parece? 148 00:07:07,210 --> 00:07:08,520 ¿No? 149 00:07:08,520 --> 00:07:09,610 No cometer? 150 00:07:09,610 --> 00:07:11,350 Rascarse la cabeza? 151 00:07:11,350 --> 00:07:12,614 Sí. 152 00:07:12,614 --> 00:07:13,600 >> AUDIENCIA: Más dinámica. 153 00:07:13,600 --> 00:07:14,683 >> DAVID MALAN: Más dinámica? 154 00:07:14,683 --> 00:07:16,032 ¿A que te refieres? 155 00:07:16,032 --> 00:07:17,000 >> AUDIENCIA: [inaudible] 156 00:07:17,000 --> 00:07:20,349 157 00:07:20,349 --> 00:07:22,390 DAVID MALAN: OK, bueno, por lo dependiendo de la entrada, 158 00:07:22,390 --> 00:07:23,470 usted no tiene que compilar cada vez. 159 00:07:23,470 --> 00:07:24,990 Y realmente es tan simple como lo que-- 160 00:07:24,990 --> 00:07:26,990 es el punto de continuar para compilar el código? 161 00:07:26,990 --> 00:07:29,480 Esto es sólo un paso que es making-- esto está requiriendo, 162 00:07:29,480 --> 00:07:31,900 Durante los últimos semanas, el doble de los pasos 163 00:07:31,900 --> 00:07:33,820 como se acaba de ejecutar su programa. 164 00:07:33,820 --> 00:07:36,940 Ha sido útil para ver que ver algunos mensajes de error y así sucesivamente, 165 00:07:36,940 --> 00:07:38,720 pero sigue siendo sólo un paso molesto. 166 00:07:38,720 --> 00:07:41,810 >> Y así, los programadores se dieron cuenta con el tiempo, ¿por qué no lo hacemos 167 00:07:41,810 --> 00:07:45,327 empezar a escribir los idiomas que no lo hacen necesitará ese paso bastante mecánico, 168 00:07:45,327 --> 00:07:47,160 de manera que apenas puede escribir su código y ejecutarlo. 169 00:07:47,160 --> 00:07:48,920 Pero lo que era el precio que vimos que pagamos 170 00:07:48,920 --> 00:07:50,910 última semana, con un ejemplo concreto? 171 00:07:50,910 --> 00:07:51,650 ¿Sí? 172 00:07:51,650 --> 00:07:52,370 >> Velocidad. 173 00:07:52,370 --> 00:07:54,690 Asi que [? lo que es?] intérpretes un poco más lento, 174 00:07:54,690 --> 00:07:57,330 en ese ceros y unos son agradable y rápido para un ordenador 175 00:07:57,330 --> 00:08:00,070 de entender, debido a que la Intel CPU, o lo que sea, 176 00:08:00,070 --> 00:08:03,070 solo entiende lo que está pasando con aquellos patrones de bits. 177 00:08:03,070 --> 00:08:05,370 Mientras que un intérprete es un programa que realmente 178 00:08:05,370 --> 00:08:07,980 tiene que leer la fuente Ascii código que usted ha escrito, 179 00:08:07,980 --> 00:08:12,700 y la convierten, por así decirlo, o averiguar cómo se convierte en última instancia, 180 00:08:12,700 --> 00:08:13,525 de ceros y unos. 181 00:08:13,525 --> 00:08:15,650 Así que sólo se necesita un poco de poco de un impacto en el rendimiento. 182 00:08:15,650 --> 00:08:16,858 Así que es un poco de un trade-off. 183 00:08:16,858 --> 00:08:21,570 Ahora bien, si lo hacemos aquí, déjame seguir adelante y hacer un ejemplo de la siguiente manera. 184 00:08:21,570 --> 00:08:26,610 Si voy aquí, archivo nuevo, voy para guardar esta vez es hello.php. 185 00:08:26,610 --> 00:08:31,450 Y ahora voy a seguir adelante y decir: "print hola mundo" - 186 00:08:31,450 --> 00:08:35,130 y recuerdo que puedo usar de impresión, no lo hago que utilizar la impresión-F. Y ahora aquí, 187 00:08:35,130 --> 00:08:42,039 si lo hago de PHP de hello.php, me huh-- no parecen haber interpretado. 188 00:08:42,039 --> 00:08:43,412 ¿Qué hice mal? 189 00:08:43,412 --> 00:08:44,710 >> AUDIENCIA: Las pulseras en ángulo. 190 00:08:44,710 --> 00:08:47,015 >> DAVID MALAN: Sí, usted necesita que la parte superior del ángulo soporte hacia arriba. 191 00:08:47,015 --> 00:08:49,390 Así que es un poco molesto, pero te acostumbras a ella rápidamente. 192 00:08:49,390 --> 00:08:53,500 Si tengo que escribir código PHP, I general tendrá que decirle al programa, 193 00:08:53,500 --> 00:08:56,950 o decirle al intérprete, hey PHP, aquí viene algo de código PHP. 194 00:08:56,950 --> 00:09:00,440 Y a continuación, por si acaso, lo haría cerrar esta no con esto, sino 195 00:09:00,440 --> 00:09:03,740 con ángulo de marca simplemente pregunta soporte, de modo que ahora aquí abajo, 196 00:09:03,740 --> 00:09:06,840 si me quedo esto otra vez, ahora Me sale el resultado deseado. 197 00:09:06,840 --> 00:09:09,820 >> Ahora vamos a hacer una ligera optimización, sólo para que lo has visto antes. 198 00:09:09,820 --> 00:09:14,040 Esto es un poco molesto que me tiene que ejecutar PHP espacio hello.php, 199 00:09:14,040 --> 00:09:16,060 porque en el pasado I podría simplemente escribir slash dot 200 00:09:16,060 --> 00:09:17,560 nombre del programa, el cual es una especie de agradable. 201 00:09:17,560 --> 00:09:19,420 Es una especie de una mejor experiencia de usuario. 202 00:09:19,420 --> 00:09:24,160 >> Así que resulta que usted puede hacer esto en PHP con el I following-- 203 00:09:24,160 --> 00:09:28,780 puede utilizar esta bastante críptica encantamiento en la parte superior aquí, 204 00:09:28,780 --> 00:09:31,740 que generalmente se llama un shebang, mediante el cual se trata de un símbolo fuerte, 205 00:09:31,740 --> 00:09:34,270 por decirlo así, esto es una explosión o un signo de exclamación. 206 00:09:34,270 --> 00:09:38,490 Y esto ahora es la ruta de acceso a un programa en un típico sistema Linux que 207 00:09:38,490 --> 00:09:41,500 se llama medio ambiente, o env. 208 00:09:41,500 --> 00:09:43,920 Y esto line-- larga historia línea short-- uno justo 209 00:09:43,920 --> 00:09:48,710 dice, hey equipo, encontrar el PHP intérprete para mí en el medio ambiente, 210 00:09:48,710 --> 00:09:50,610 encontrar en su memoria, por así decirlo. 211 00:09:50,610 --> 00:09:54,130 >> Y lo que es agradable ahora, se que si voy por aquí, 212 00:09:54,130 --> 00:09:57,750 Yo puedo hacer slash dot hola php punto, o-- hmm. 213 00:09:57,750 --> 00:09:59,000 Permiso denegado. 214 00:09:59,000 --> 00:10:02,350 Bueno, verás aún más de esta con el problema de establecer siete, si 215 00:10:02,350 --> 00:10:04,060 tener no ya con los permisos. 216 00:10:04,060 --> 00:10:06,510 Resulta que necesito para ejecutar este comando 217 00:10:06,510 --> 00:10:10,779 llamado [? chamod?] para el cambio mode-- un plus x hello.php. 218 00:10:10,779 --> 00:10:13,820 Necesito [inaudible] éste adicional paso que está diciendo a mi equipo, 219 00:10:13,820 --> 00:10:16,400 hacer ejecutable hello.php. 220 00:10:16,400 --> 00:10:21,310 Y ahora ver lo happens-- dot slash hello.php, simplemente ejecuta. 221 00:10:21,310 --> 00:10:23,310 Yo no necesito especificar el intérprete más. 222 00:10:23,310 --> 00:10:26,680 Y puedo hacerlo aún más bonita, aún así, si puedo cambiar el nombre de esta cosa. 223 00:10:26,680 --> 00:10:30,570 Si me mudo hello.php sólo Hello-- lo notan en la parte superior izquierda, 224 00:10:30,570 --> 00:10:32,860 El nombre del programa es de hecho ahora sólo Hola. 225 00:10:32,860 --> 00:10:37,300 Ahora puedo hacer que se vea como un programa en C, a pesar de que está escrito en PHP-- 226 00:10:37,300 --> 00:10:39,210 o francamente cualquier número de otros idiomas. 227 00:10:39,210 --> 00:10:41,480 >> Así mejora marginal, ninguna diferencia funcional. 228 00:10:41,480 --> 00:10:44,460 Pero es sólo un poco de curiosidad ahora, para que usted pueda escribir programas 229 00:10:44,460 --> 00:10:48,989 en cualquier idioma, y ​​el usuario no lo hace tiene que saber o cuidar lo que son. 230 00:10:48,989 --> 00:10:51,030 Bueno, echemos un vistazo a una más ejemplo convincente ahora 231 00:10:51,030 --> 00:10:52,850 que azotaron por adelantado. 232 00:10:52,850 --> 00:10:54,955 Y esto se llama quote.php. 233 00:10:54,955 --> 00:10:56,740 Y está disponible en línea. 234 00:10:56,740 --> 00:11:00,299 Y se dio cuenta de que es bastante short-- pero es un programa de línea de comandos que es 235 00:11:00,299 --> 00:11:02,840 ir a buscar precios de las acciones para mí, lo que es en realidad va 236 00:11:02,840 --> 00:11:04,230 ser afín al problema establecido siete. 237 00:11:04,230 --> 00:11:05,396 >> Así que vamos a ver lo que estoy haciendo. 238 00:11:05,396 --> 00:11:08,640 En la parte superior Tengo la abierto abrazadera signo de interrogación PHP. 239 00:11:08,640 --> 00:11:13,372 Entonces yo tengo esta línea, con lo que soy que requiere un archivo llamado functions.php-- 240 00:11:13,372 --> 00:11:15,080 vamos a ver más sobre esto en un poco, 241 00:11:15,080 --> 00:11:17,340 pero esto es como C de versión de aguda incluyen, 242 00:11:17,340 --> 00:11:19,090 a dónde quieres ir incluir otro archivo. 243 00:11:19,090 --> 00:11:23,720 PHP llama requiere, aunque También tiene un include función. 244 00:11:23,720 --> 00:11:26,861 Y resulta que es function.php sólo algo que escribió antes de la clase. 245 00:11:26,861 --> 00:11:29,860 Lo puse en el mismo directorio, porque Quería factorizar algún código 246 00:11:29,860 --> 00:11:31,800 que lo que se quiere utilizar en otros lugares. 247 00:11:31,800 --> 00:11:34,560 >> Mientras tanto, usted puede probablemente inferir lo que está pasando aquí. 248 00:11:34,560 --> 00:11:39,200 Esto es un poco diferente de C-- pero lo que quiero decir con su uso apropiado? 249 00:11:39,200 --> 00:11:41,180 Traducir esta más técnico. 250 00:11:41,180 --> 00:11:45,950 ¿En qué circunstancias son yo salir del programa, o de salir? 251 00:11:45,950 --> 00:11:47,074 ¿Sí? 252 00:11:47,074 --> 00:11:47,990 >> AUDIENCIA: Cuando usted no tiene dos argumentos de la línea de comandos. 253 00:11:47,990 --> 00:11:49,480 >> DAVID MALAN: Cuando no tengo para ordenar los argumentos de línea. 254 00:11:49,480 --> 00:11:52,396 Y recuerda que uno de los argumentos es en sí mismo el nombre del programa. 255 00:11:52,396 --> 00:11:55,340 Y el segundo va a ser otra palabra que escribo después de la solicitud. 256 00:11:55,340 --> 00:11:57,460 Así que al igual que C, esta es mi manera de comprobar, 257 00:11:57,460 --> 00:12:00,022 cooperó el usuario y ejecutar el programa como era mi intención? 258 00:12:00,022 --> 00:12:01,730 Ahora, hay algo un poco diferente 259 00:12:01,730 --> 00:12:04,020 con C-- primero de todo lo que tener esta muestra de dólar, 260 00:12:04,020 --> 00:12:07,710 y lo que un dólar firmar denotar en PHP? 261 00:12:07,710 --> 00:12:08,440 Sólo una variable. 262 00:12:08,440 --> 00:12:11,731 Eso es todo-- simplemente una variable seguida de lo que quieras en realidad llamarlo. 263 00:12:11,731 --> 00:12:14,000 Observe que hay algo que falta de mi programa PHP, 264 00:12:14,000 --> 00:12:18,210 al igual que había desaparecido el pasado semana, frente a C, que es lo que? 265 00:12:18,210 --> 00:12:21,620 >> A tipos, pero también algo más. 266 00:12:21,620 --> 00:12:26,409 No hay algo function-- función principal. 267 00:12:26,409 --> 00:12:27,450 No hay función principal. 268 00:12:27,450 --> 00:12:29,680 Usted acaba de empezar a escribir su código sin tener 269 00:12:29,680 --> 00:12:32,790 que preocuparse bastante arbitraria convención de nombrar algún incumplimiento 270 00:12:32,790 --> 00:12:33,880 principal función. 271 00:12:33,880 --> 00:12:36,720 Así arg C es realmente una variable global 272 00:12:36,720 --> 00:12:39,049 que el intérprete pone a disposición de mí. 273 00:12:39,049 --> 00:12:40,090 Ahora, esto es interesante. 274 00:12:40,090 --> 00:12:41,140 Así que busque cosas. 275 00:12:41,140 --> 00:12:43,370 Signo de dólar de valores es en la a la izquierda, que es mi variable. 276 00:12:43,370 --> 00:12:45,120 Al lado derecho, hay al parecer 277 00:12:45,120 --> 00:12:50,270 una función en PHP llamada de búsqueda que Estoy pasando mi última línea de comandos 278 00:12:50,270 --> 00:12:51,902 argumento a-- cualquiera que sea la palabra es. 279 00:12:51,902 --> 00:12:53,610 Y veremos cómo esto funciona en un momento. 280 00:12:53,610 --> 00:12:55,380 >> Y luego, por último, estoy informar el precio. 281 00:12:55,380 --> 00:12:58,650 Estoy imprimiendo un solo participación en tal y tal. 282 00:12:58,650 --> 00:13:02,082 Y recuerde, este es el forma en PHP-- manera en PHP-- 283 00:13:02,082 --> 00:13:04,290 en el que no tienes que hacer el signo del dólar S más. 284 00:13:04,290 --> 00:13:06,782 Usted sólo puede usar llaves y conecte de alguna variable. 285 00:13:06,782 --> 00:13:09,240 Usted no tiene que preocuparse de usando printf de la misma manera. 286 00:13:09,240 --> 00:13:13,530 >> Y como un aparte, cuando se pone una variable dentro de comillas dobles como este, 287 00:13:13,530 --> 00:13:17,370 está utilizando una técnica de fantasía llamado interpolación de variables. 288 00:13:17,370 --> 00:13:20,380 Sólo significa conectar la variable aquí. 289 00:13:20,380 --> 00:13:23,760 Y como un aparte, algunos de ustedes que vienen de otros fondos de programación, 290 00:13:23,760 --> 00:13:26,960 usted no puede usar comillas simples alrededor de las cuerdas para hacer esto. 291 00:13:26,960 --> 00:13:30,290 Debe utilizar comillas dobles para interpolación de variables para trabajar. 292 00:13:30,290 --> 00:13:32,740 De lo contrario te literalmente ver esas llaves. 293 00:13:32,740 --> 00:13:34,500 >> Así que, por último, vamos a seguir adelante y ejecutar esto. 294 00:13:34,500 --> 00:13:36,690 Quiero dejar mi terminal un poco más grande. 295 00:13:36,690 --> 00:13:41,940 Déjame ir adelante y corro dentro de mi directorio de cotización. 296 00:13:41,940 --> 00:13:46,950 [? CDsource?] [? AM?] [? cotización?] dot cotización PHP PHP, 297 00:13:46,950 --> 00:13:50,290 y yo voy a buscar algo como GOOG, que es su símbolo, 298 00:13:50,290 --> 00:13:55,510 y una acción de su nuevo nombre, Alfabeto Inc, un costo de $ 717, a partir de hoy. 299 00:13:55,510 --> 00:13:58,680 Muy bien, si queremos ejecutar este nuevo, nadie 300 00:13:58,680 --> 00:14:02,600 tener otro tablero de cotizaciones quieren mirar hacia arriba? 301 00:14:02,600 --> 00:14:06,770 >> Microsoft creo que es éste, MSFT-- $ 53. 302 00:14:06,770 --> 00:14:09,720 Creo que Yahoo es quizás eso. 303 00:14:09,720 --> 00:14:12,130 Y es que Facebook. 304 00:14:12,130 --> 00:14:13,740 >> Entonces, ¿qué es este programa haciendo? 305 00:14:13,740 --> 00:14:16,306 La magia parece estar incrustado en que la función de búsqueda. 306 00:14:16,306 --> 00:14:17,430 Así que vamos a echar un vistazo rápido. 307 00:14:17,430 --> 00:14:21,815 >> Resulta que no viene con PHP, está en functions.php. 308 00:14:21,815 --> 00:14:23,690 Y no vamos a ir a través de esto en gran detalle, 309 00:14:23,690 --> 00:14:28,040 notar la palabra clave aquí es que en la línea seis de functions.php-- 310 00:14:28,040 --> 00:14:29,440 Yo, literalmente, digo función. 311 00:14:29,440 --> 00:14:31,050 Puedo especificar el nombre de mi función. 312 00:14:31,050 --> 00:14:34,330 Entonces puedo especificar ninguna argumentos o parámetros, 313 00:14:34,330 --> 00:14:36,480 Quiero esa función a take-- ningún tipo. 314 00:14:36,480 --> 00:14:37,580 Y luego ponerlo en práctica. 315 00:14:37,580 --> 00:14:39,240 >> Y voy a agito mi mano en la implementación, 316 00:14:39,240 --> 00:14:42,115 ya que está justo bastante avanzada ahora, pero vamos a ver de nuevo en realidad 317 00:14:42,115 --> 00:14:44,700 en una semana en el problema planteado siete. 318 00:14:44,700 --> 00:14:47,490 Pero puedo limpiar esto, también. 319 00:14:47,490 --> 00:14:49,590 También incluí en el código de hoy una versión 320 00:14:49,590 --> 00:14:52,340 de la cita, que no tiene archivo PHP punto. 321 00:14:52,340 --> 00:14:57,270 Porque lo que es, presumiblemente, en el parte superior del programa llamado simplemente citar? 322 00:14:57,270 --> 00:15:00,140 Que el llamado shebang-- la encantamiento bastante críptica 323 00:15:00,140 --> 00:15:04,590 que dice encontrar PHP y después ejecutarlo en mi código aquí. 324 00:15:04,590 --> 00:15:07,360 >> Muy bien, así que trae nosotros donde lo dejamos 325 00:15:07,360 --> 00:15:09,560 última tiempo-- aunque con algunos ejemplos más avanzados. 326 00:15:09,560 --> 00:15:13,980 Para cualquier duda hasta el momento acerca de PHP o lo que estamos haciendo? 327 00:15:13,980 --> 00:15:15,570 No-- bien. 328 00:15:15,570 --> 00:15:16,180 ¿Sí? 329 00:15:16,180 --> 00:15:19,610 >> AUDIENCIA: Dentro de la Archivos HTML, hacen usted-- 330 00:15:19,610 --> 00:15:22,226 [? Vos si ?] [? simplemente llamarlo?] un [inaudible] archivo PHP? 331 00:15:22,226 --> 00:15:23,350 DAVID MALAN: Buena pregunta. 332 00:15:23,350 --> 00:15:26,070 En un contexto web, que estamos literalmente a punto de transición a, 333 00:15:26,070 --> 00:15:28,028 no utiliza la llamada tinglado en la parte superior, 334 00:15:28,028 --> 00:15:31,980 porque el server-- web a menudo una programa llamado Apache o Microsoft 335 00:15:31,980 --> 00:15:37,470 IIS, Internet Information Server o cualquier número de otro software de servidor web, 336 00:15:37,470 --> 00:15:40,636 Sabe que cuando ve un archivo PHP punto, que 337 00:15:40,636 --> 00:15:42,010 debe ejecutar el intérprete en ella. 338 00:15:42,010 --> 00:15:43,468 No se ve en esa primera línea. 339 00:15:43,468 --> 00:15:45,580 Así que este primer truco línea es sólo cuando estás 340 00:15:45,580 --> 00:15:48,330 línea de comandos escribiendo programs-- que no vamos a hacer muy a menudo, 341 00:15:48,330 --> 00:15:52,510 pero es nuestra forma de puente nuestros ejemplos C a ahora nuestra PHP. 342 00:15:52,510 --> 00:16:00,680 >> Así que vamos a efecto Bridge Esta mundo Del mundo de la línea de comandos a la web 343 00:16:00,680 --> 00:16:02,230 haciendo lo siguiente. 344 00:16:02,230 --> 00:16:05,090 Déjame ir por delante y dibujar aquí sólo por un momento. 345 00:16:05,090 --> 00:16:09,940 Así que si tenemos un servidor web, o mejor dicho, si tenemos mi portátil por aquí, 346 00:16:09,940 --> 00:16:11,280 que voy a dibujar así. 347 00:16:11,280 --> 00:16:14,250 Y aquí tenemos el internet en alguna forma. 348 00:16:14,250 --> 00:16:18,210 Y luego aquí, tenemos un servidor en un building-- 349 00:16:18,210 --> 00:16:20,760 así es como el internet works-- y aquí 350 00:16:20,760 --> 00:16:23,120 es un servidor con algunas luces tal vez. 351 00:16:23,120 --> 00:16:27,530 Lo que realmente está pasando entre estas dos conexiones? 352 00:16:27,530 --> 00:16:29,240 >> Así que en este edificio es un servidor web. 353 00:16:29,240 --> 00:16:31,420 Eso es sólo un ordenador que se está ejecutando alguna operación 354 00:16:31,420 --> 00:16:34,561 system-- tal vez el software libre llamado Apache, que CS50 IDE está en marcha. 355 00:16:34,561 --> 00:16:36,310 Así que en realidad se puede pensar en este edificio 356 00:16:36,310 --> 00:16:38,579 como en el edificio que se almacena CSt0 IDE. 357 00:16:38,579 --> 00:16:40,870 Ahí es donde todos ustedes tienen cuentas, donde todos ustedes 358 00:16:40,870 --> 00:16:43,130 tener su propio servidor web correr, todos ustedes 359 00:16:43,130 --> 00:16:45,730 tener sus propias direcciones URL únicas, cuando empezamos a discutir, 360 00:16:45,730 --> 00:16:47,280 y verás más en P. establece seis. 361 00:16:47,280 --> 00:16:49,450 >> Aquí está mi portátil en algún lugar otra cosa en Internet. 362 00:16:49,450 --> 00:16:54,550 Y así, cuando visito un URL que pertenece a mí, que el tráfico de Internet va 363 00:16:54,550 --> 00:16:58,360 al servidor, el servidor de recibir una HTTP request-- 364 00:16:58,360 --> 00:17:02,900 como llegar index.html y es respondiendo a esa página web. 365 00:17:02,900 --> 00:17:04,280 Así que ese es el paradigma general. 366 00:17:04,280 --> 00:17:07,089 Mientras que todo lo que hasta hasta ahora hoy en día, todo 367 00:17:07,089 --> 00:17:09,660 que estaba ocurriendo sólo en el confines de este edificio. 368 00:17:09,660 --> 00:17:12,910 Yo estaba usando mi portátil, pero Me conecté con CS50 IDE, 369 00:17:12,910 --> 00:17:17,369 por lo que todos los programas que se ejecutan estaba dentro de ese servidor, sí. 370 00:17:17,369 --> 00:17:22,660 >> Pero ahora, vamos a empezar la reutilización de PHP escribir algunos programas reales que 371 00:17:22,660 --> 00:17:24,230 son servidos por un servidor web. 372 00:17:24,230 --> 00:17:30,320 Y para hacer esto, me voy a ir en un montón de ejemplos 373 00:17:30,320 --> 00:17:33,710 que introducir esta idea aquí. 374 00:17:33,710 --> 00:17:38,500 Así que esto es una especie de una forma elegante de que describe un paradigma de programación. 375 00:17:38,500 --> 00:17:41,540 >> Y de hecho, al salir CS50 o trabajar en proyectos finales, 376 00:17:41,540 --> 00:17:43,520 o tomar algunos siguen en clase, comenzarás 377 00:17:43,520 --> 00:17:45,740 al ver que el mundo-- especialmente después de haber crecido 378 00:17:45,740 --> 00:17:48,300 con lenguajes como C que son súper bajo level-- 379 00:17:48,300 --> 00:17:51,290 se dan cuenta de que no hay mejor formas de software de escritura. 380 00:17:51,290 --> 00:17:53,290 Hay cierta patrones que usted puede seguir, 381 00:17:53,290 --> 00:17:57,640 ciertas formas de organizar sus archivos y formas de nombrar a sus funciones, 382 00:17:57,640 --> 00:18:00,300 de manera que cuento largo, el mundo ha llegado 383 00:18:00,300 --> 00:18:04,340 con un montón de siglas y los nombres de las formas de programación. 384 00:18:04,340 --> 00:18:06,260 Estos son sólo técnicas que podría utilizar. 385 00:18:06,260 --> 00:18:09,660 >> Y uno de ellos se llama MVC, para el Modelo Vista Controlador. 386 00:18:09,660 --> 00:18:12,270 Y esto es sólo, por Ahora, una excesivamente complicado 387 00:18:12,270 --> 00:18:18,960 manera de decir cómo se debe diseñar un sitio web basado en PHP, en nuestro caso. 388 00:18:18,960 --> 00:18:22,140 ¿Cómo organizar sus archivos, ¿cómo organizar su lógica, 389 00:18:22,140 --> 00:18:26,220 de una manera que hace que sea más fácil escribir páginas web más complicadas? 390 00:18:26,220 --> 00:18:28,550 Y, en efecto, nos da gusto llegar con p-establecido siete. 391 00:18:28,550 --> 00:18:32,020 >> Así que en el mundo de la MVC, vas a ver que nuestro código puede general 392 00:18:32,020 --> 00:18:38,290 caracterizarse como sea código del modelo, o código del controlador, o vista de código. 393 00:18:38,290 --> 00:18:40,200 Y yo voy a simplificar en exceso como follows-- 394 00:18:40,200 --> 00:18:42,074 el controlador es el cerebro de su programa, 395 00:18:42,074 --> 00:18:44,100 que es donde todo el lógica interesante sucede. 396 00:18:44,100 --> 00:18:46,110 Así que todo lo que he estado escrito hasta ahora en la clase, 397 00:18:46,110 --> 00:18:48,210 es una especie de controlador code-- está controlando 398 00:18:48,210 --> 00:18:50,585 su programa, sus bucles, su condiciones, sus funciones 399 00:18:50,585 --> 00:18:52,100 y variables y todo eso. 400 00:18:52,100 --> 00:18:56,160 >> Vistas, ahora, van a ser un poco más evidente en el mundo de la web. 401 00:18:56,160 --> 00:18:59,360 Un punto de vista es la estética de su sitio web. 402 00:18:59,360 --> 00:19:04,080 Es lo que el usuario sees-- las imágenes, las tablas HTML, las etiquetas HTML, y todos 403 00:19:04,080 --> 00:19:08,220 de que, toda la estética esponjoso cosas que no es tan difícil de escribir, 404 00:19:08,220 --> 00:19:11,380 pero es justo lo que está generando, es el punto de vista de la llamada, la estética. 405 00:19:11,380 --> 00:19:13,880 Y el modelo, en última instancia, va ser stuff-- base de datos que 406 00:19:13,880 --> 00:19:16,510 vamos a empezar a bucear en todo cuanto más este miércoles. 407 00:19:16,510 --> 00:19:19,740 Así controlador es la lógica, vista es la materia estética, 408 00:19:19,740 --> 00:19:23,500 y el modelo va a ser donde almacenamos nuestros datos reales. 409 00:19:23,500 --> 00:19:26,410 >> Así que echemos un vistazo a esto más concretamente con el siguiente ejemplo. 410 00:19:26,410 --> 00:19:34,700 Voy a entrar en mi directorio aquí de la fuente de hoy code-- todos los cuales 411 00:19:34,700 --> 00:19:35,770 está disponible en línea. 412 00:19:35,770 --> 00:19:37,800 Y yo voy a ir a la versión cero. 413 00:19:37,800 --> 00:19:41,500 Y aquí es-- vamos a llamarlo el versión cero de la página web del CS50. 414 00:19:41,500 --> 00:19:43,010 No hay mucho aquí en absoluto. 415 00:19:43,010 --> 00:19:46,810 Es una página web muy simple que es probablemente usando lo HTML tags-- solo 416 00:19:46,810 --> 00:19:48,970 adivinar por ejemplos anteriores? 417 00:19:48,970 --> 00:19:49,890 >> ¿Que es eso? 418 00:19:49,890 --> 00:19:53,920 H1-- probablemente para ese gran negrita título, que el logotipo en la superior, CS50. 419 00:19:53,920 --> 00:19:55,080 ¿Y qué más está en juego? 420 00:19:55,080 --> 00:19:55,799 ¿Sí? 421 00:19:55,799 --> 00:19:56,840 AUDIENCIA: Lista desordenada. 422 00:19:56,840 --> 00:19:59,990 DAVID MALAN: películas-- desordenada por lo que el Etiqueta de UL y tal vez un par de etiquetas LI. 423 00:19:59,990 --> 00:20:01,840 Y si no te acuerdas de ellos, honestamente no importa. 424 00:20:01,840 --> 00:20:04,170 Estos son una especie de suave y esponjosa detalles de implementación de HTML 425 00:20:04,170 --> 00:20:06,378 que se mira rápidamente y que está de vuelta en su camino. 426 00:20:06,378 --> 00:20:10,040 Nos centraremos más en la programación ideas que son las piezas más jugosas. 427 00:20:10,040 --> 00:20:12,890 >> Así que vamos a echar un rápido mirar el HTML-- y de hecho 428 00:20:12,890 --> 00:20:16,880 si abro la fuente de la vista aquí, yup, Eso es exactamente lo que está pasando aquí. 429 00:20:16,880 --> 00:20:18,440 Hay una etiqueta de UL. 430 00:20:18,440 --> 00:20:20,630 Anidado dentro de eso es que las etiquetas LI. 431 00:20:20,630 --> 00:20:24,470 Y entonces tomé prestado de la URL del plan de estudios real aquí. 432 00:20:24,470 --> 00:20:27,570 >> Y luego en el lectures.php es aparentemente 433 00:20:27,570 --> 00:20:31,640 otra página generado dinámicamente eso va a tener, vamos a ver-- ah, 434 00:20:31,640 --> 00:20:33,170 las dos primeras semanas de la conferencia. 435 00:20:33,170 --> 00:20:36,600 Así que la semana cero y la semana uno, vamos a mira esto- si veo fuente de la página, 436 00:20:36,600 --> 00:20:38,120 también es súper simple. 437 00:20:38,120 --> 00:20:42,430 Estos están dando lugar a dos páginas week0.php llamada, y week1.php. 438 00:20:42,430 --> 00:20:44,040 Así que considera ahora lo que está sucediendo. 439 00:20:44,040 --> 00:20:50,630 >> Cuando hago clic en week0.php, mi portátil está haciendo una solicitud de week0.php. 440 00:20:50,630 --> 00:20:53,700 441 00:20:53,700 --> 00:20:58,110 El servidor web, alias, CS50 IDE, está recibiendo el sobre virtual. 442 00:20:58,110 --> 00:21:01,040 Es ver un mensaje como, obtener week0.php. 443 00:21:01,040 --> 00:21:05,060 Luego está interpretando el archivo, la parte superior a abajo, de izquierda a derecha- el archivo 444 00:21:05,060 --> 00:21:07,720 llamada week0.php-- y escupiendo los resultados. 445 00:21:07,720 --> 00:21:10,510 Así que dentro de este archivo, week0.php, debe ser 446 00:21:10,510 --> 00:21:15,410 la lógica del controlador que está generando este código HTML, y pronto veremos eso. 447 00:21:15,410 --> 00:21:19,340 >> Pero por ahora, permítanme clic en la semana cero, y ahora tenemos los miércoles y viernes, 448 00:21:19,340 --> 00:21:25,260 y ahora tenemos las diapositivas lentamente de semana cero. 449 00:21:25,260 --> 00:21:27,400 Y se puede recordar esto desde camino de regreso cuando. 450 00:21:27,400 --> 00:21:29,340 Así que eso es todo lo que este sitio web está haciendo. 451 00:21:29,340 --> 00:21:31,120 >> Así que vamos a considerar cómo se hace esto. 452 00:21:31,120 --> 00:21:34,290 Voy a volver a la código fuente aquí, en CS50 IDE, 453 00:21:34,290 --> 00:21:36,660 y voy a abrir index.php. 454 00:21:36,660 --> 00:21:38,910 En la parte superior de este archivo es un montón de comentarios. 455 00:21:38,910 --> 00:21:43,000 Y luego, en el medio de este archivo, Resulta, no es código PHP que sea. 456 00:21:43,000 --> 00:21:47,380 Porque si usted no tiene ninguno de los etiquetas signo de interrogación PHP soporte abierto, 457 00:21:47,380 --> 00:21:49,180 usted es libre de poner sólo HTML. 458 00:21:49,180 --> 00:21:51,480 >> Porque lo que el PHP intérprete se supone que debe hacer, 459 00:21:51,480 --> 00:21:53,938 es cuando se lee este file-- arriba a abajo, de izquierda a derecha- 460 00:21:53,938 --> 00:21:59,100 sólo interpreta el código que ve entre los paréntesis angulares cuestionan marca. 461 00:21:59,100 --> 00:22:02,380 Y cualquier otra cosa que no es así reconocer como PHP, sólo escupe. 462 00:22:02,380 --> 00:22:05,080 Y HTML está entre las cosas se acaba de escupir. 463 00:22:05,080 --> 00:22:09,090 >> Así que este archivo podría tener ha llamado index.html, 464 00:22:09,090 --> 00:22:11,690 pero estoy nombrando todo dot PHP como un trampolín. 465 00:22:11,690 --> 00:22:15,960 Lectures.php-- similar decepcionante, es sólo algo de HTML. 466 00:22:15,960 --> 00:22:19,840 Week0.php, de manera similar sólo algunas HTML. 467 00:22:19,840 --> 00:22:22,300 >> Pero ahora vamos a poner en el sombrero de la ingeniería proverbial, 468 00:22:22,300 --> 00:22:24,400 y considerar cómo podemos mejorar esto. 469 00:22:24,400 --> 00:22:28,541 No es difícil de hacer esto, pero yo tipo de degenerado en copiar y pegar. 470 00:22:28,541 --> 00:22:31,540 Y de hecho, si hago la semana dos, Sé lo que estoy probablemente va a hacer? 471 00:22:31,540 --> 00:22:34,940 Voy a ir a week1.php, estoy va a poner de relieve todo. 472 00:22:34,940 --> 00:22:39,110 Voy a copiarla, pegarla en un nuevo archivo llamado week2.php, 473 00:22:39,110 --> 00:22:42,440 ajustar algunas direcciones URL, y estar en mi camino. 474 00:22:42,440 --> 00:22:45,240 >> Así que en base a lo que hemos visto en C ya, 475 00:22:45,240 --> 00:22:46,860 este no se siente bien, es de esperar. 476 00:22:46,860 --> 00:22:49,610 Copiar, pegar raramente la solución correcta. 477 00:22:49,610 --> 00:22:51,429 Entonces, ¿qué podemos empezar que hacer para mejorar esto? 478 00:22:51,429 --> 00:22:53,345 ¿Dónde están las oportunidades para un mejor diseño? 479 00:22:53,345 --> 00:22:56,890 480 00:22:56,890 --> 00:22:58,760 >> Por el momento tengo la oportunidad de semana ocho, que va 481 00:22:58,760 --> 00:23:00,910 para ser realmente molesto si quiero cambiar 482 00:23:00,910 --> 00:23:03,930 la fuente de cada uno de mis páginas, o si quiero 483 00:23:03,930 --> 00:23:06,522 para cambiar la estructura de la distribución. 484 00:23:06,522 --> 00:23:08,396 Entonces, ¿dónde está la oportunidad para un mejor diseño? 485 00:23:08,396 --> 00:23:11,990 486 00:23:11,990 --> 00:23:15,160 Bueno, vamos a considerar lo que es compartida a través de todos estos archivos. 487 00:23:15,160 --> 00:23:21,696 >> He aquí la semana uno, aquí está semana cero, aquí está lectures.php, 488 00:23:21,696 --> 00:23:25,790 aquí está index.php-- lo que es lo mismo y Lo que es diferente, en términos generales, 489 00:23:25,790 --> 00:23:26,760 en cada uno de estos archivos? 490 00:23:26,760 --> 00:23:30,560 491 00:23:30,560 --> 00:23:32,060 ¿Sí? 492 00:23:32,060 --> 00:23:34,560 >> AUDIENCIA: [inaudible] 493 00:23:34,560 --> 00:23:41,244 494 00:23:41,244 --> 00:23:42,160 DAVID MALAN: OK, bueno. 495 00:23:42,160 --> 00:23:46,115 Así que hay un patrón, sin duda, por el que cada vez que elijo conferencia que, 496 00:23:46,115 --> 00:23:48,250 Que debería estar generando un página de aspecto muy similar. 497 00:23:48,250 --> 00:23:50,375 Y así tal vez pueda aprovechar el hecho de que en realidad, 498 00:23:50,375 --> 00:23:53,060 deliberadamente numéricamente indexados nuestra lectures-- 499 00:23:53,060 --> 00:23:55,290 si puedo poner aún más palabras en su respuesta. 500 00:23:55,290 --> 00:23:59,984 Y lo que es lo único que, de verdad, eso está cambiando entre semana uno-- 501 00:23:59,984 --> 00:24:02,400 y déjame desplácese hacia abajo por lo que es más o menos en el mismo lugar-- 502 00:24:02,400 --> 00:24:05,480 asi que aquí hay semanas cero, más o menos en la parte superior. 503 00:24:05,480 --> 00:24:12,370 Aquí está la primera semana, semana cero, la primera semana, la semana cero. 504 00:24:12,370 --> 00:24:14,370 OK, literalmente, si usted sabe hay un programa que sea, 505 00:24:14,370 --> 00:24:16,286 esto es ahora como un juego de correspondencias patrón. 506 00:24:16,286 --> 00:24:17,200 Entonces, ¿cuál es la diferencia? 507 00:24:17,200 --> 00:24:18,765 ¿Sí? 508 00:24:18,765 --> 00:24:19,777 >> AUDIENCIA: [inaudible] 509 00:24:19,777 --> 00:24:22,360 DAVID MALAN: Bueno, por lo que el título está cambiando, muy ligeramente. 510 00:24:22,360 --> 00:24:24,010 Zero va, por supuesto, a uno. 511 00:24:24,010 --> 00:24:25,570 Lo mismo está sucediendo en la etiqueta H1. 512 00:24:25,570 --> 00:24:28,790 Y ni bien lo vemos con la misma facilidad, debido a que las URL son un poco largo. 513 00:24:28,790 --> 00:24:30,670 Pero esas URLs están cambiando ligeramente. 514 00:24:30,670 --> 00:24:34,490 >> Pero lo que no cambia es, me atrevo decir, la mayor parte de los contenidos de la page-- 515 00:24:34,490 --> 00:24:38,530 la etiqueta HTML es lo mismo, la cabeza es el mismo, el título es casi el mismo, 516 00:24:38,530 --> 00:24:40,659 el cuerpo es la misma, y casi todo lo demás 517 00:24:40,659 --> 00:24:42,450 que es lo mismo a excepción de esos pequeños retoques. 518 00:24:42,450 --> 00:24:45,310 Entonces, ¿cómo podemos ir sobre factoring algo de esto a cabo? 519 00:24:45,310 --> 00:24:48,740 >> Pues déjame propongo exactamente que en la próxima versión. 520 00:24:48,740 --> 00:24:53,890 Así que aquí en la versión uno, tengo el exacto mismos archivos, además de un par de los demás. 521 00:24:53,890 --> 00:24:59,730 He aquí index.php-- e incluso si que nunca has visto antes de PHP, 522 00:24:59,730 --> 00:25:05,511 ¿qué estoy haciendo, probablemente, para resolver este problema-- basado en lo que ves aquí? 523 00:25:05,511 --> 00:25:11,300 524 00:25:11,300 --> 00:25:12,760 Sí, es que un leve compromiso? 525 00:25:12,760 --> 00:25:13,450 ¿No? 526 00:25:13,450 --> 00:25:16,020 Sí continuar. 527 00:25:16,020 --> 00:25:17,380 >> AUDIENCIA: [inaudible] 528 00:25:17,380 --> 00:25:18,380 >> DAVID MALAN: Sí. 529 00:25:18,380 --> 00:25:20,380 >> AUDIENCIA: [inaudible] 530 00:25:20,380 --> 00:25:26,090 531 00:25:26,090 --> 00:25:28,669 >> DAVID MALAN: te necesito a hablar sólo un poco más fuerte. 532 00:25:28,669 --> 00:25:31,084 >> AUDIENCIA: [inaudible] 533 00:25:31,084 --> 00:25:35,744 534 00:25:35,744 --> 00:25:36,660 DAVID MALAN: OK, bueno. 535 00:25:36,660 --> 00:25:38,620 Y yo think-- era difícil de escuchar usted-- pero 536 00:25:38,620 --> 00:25:42,690 piensa en lo que quieres decir es que las etiquetas que eran comunes en la superior, 537 00:25:42,690 --> 00:25:47,710 y las etiquetas que eran comunes en el abajo, ahora han sido un factor fuera, 538 00:25:47,710 --> 00:25:51,140 o relegado a qué archivos? 539 00:25:51,140 --> 00:25:53,476 Header.php y footer.php-- y vamos 540 00:25:53,476 --> 00:25:55,600 hacer algunos ajustes para abordar la preocupación que acaba de 541 00:25:55,600 --> 00:25:59,370 planteado sobre el cambio números, por ejemplo, si te he oído correctamente. 542 00:25:59,370 --> 00:26:02,060 >> Pero eso parece ser la esencia de la misma. 543 00:26:02,060 --> 00:26:04,820 Si había una enorme cantidad de redundancia en la parte superior de la página, 544 00:26:04,820 --> 00:26:06,736 y una enorme cantidad de redundancia en la parte inferior, 545 00:26:06,736 --> 00:26:09,280 vamos a literalmente a más destacado y cortar ese contenido a cabo, 546 00:26:09,280 --> 00:26:13,270 ponerlo en un file-- separado al igual que la idea de la CSS, donde un factor fuera 547 00:26:13,270 --> 00:26:16,710 estética muy similares, presentados en un archivo PHP punto aparte, 548 00:26:16,710 --> 00:26:20,340 utilice la requieren mechanism-- que es como incluyen- do sostenido que 549 00:26:20,340 --> 00:26:23,570 es esencialmente como decir ir agarrar el contenido de header.php, 550 00:26:23,570 --> 00:26:25,370 y copiar y pegar aquí. 551 00:26:25,370 --> 00:26:29,490 >> Pero lo que esto significa es que ahora en index.php, tengo esas dos líneas. 552 00:26:29,490 --> 00:26:32,130 En lectures.php, yo también tener esas dos líneas. 553 00:26:32,130 --> 00:26:35,230 En week0.php, yo también tener esas dos líneas. 554 00:26:35,230 --> 00:26:38,380 >> Así que ahora, si quiero cambiar el título de todas mis páginas, 555 00:26:38,380 --> 00:26:40,530 o quiero cambiar la estructura fundamental, 556 00:26:40,530 --> 00:26:44,380 Puedo cambiar ahora en un solo lugar, o dos de encabezado y pie de página places--, 557 00:26:44,380 --> 00:26:45,429 respectivamente. 558 00:26:45,429 --> 00:26:47,970 Ahora partida del código que debe buscar un poco más críptica, ¿verdad? 559 00:26:47,970 --> 00:26:53,590 Pero si se piensa en lo que la página se doing-- si estoy solicitando week0.php, 560 00:26:53,590 --> 00:26:59,880 al igual que en el dibujo más aquí-- cuando se solicita week0.php, 561 00:26:59,880 --> 00:27:00,960 ¿que significa eso? 562 00:27:00,960 --> 00:27:04,410 >> Literalmente, este archivo es solicitada por el navegador. 563 00:27:04,410 --> 00:27:06,240 El alias web server-- 564 00:27:06,240 --> 00:27:09,250 CS50 ID-- agarra este archivo, week0.php, y lee 565 00:27:09,250 --> 00:27:10,780 se arriba a abajo, de izquierda a derecha. 566 00:27:10,780 --> 00:27:15,400 En la línea uno, encuentra inmediatamente corchete abierto signo de interrogación PHP, requieren 567 00:27:15,400 --> 00:27:17,872 encabezado punto PHP, etc. lo que el intérprete de PHP 568 00:27:17,872 --> 00:27:20,580 does-- que se construye en la web servidor, porque preconfigurado 569 00:27:20,580 --> 00:27:24,580 por usted-- pasa automáticamente en header.php, copia el contenido, 570 00:27:24,580 --> 00:27:25,640 las pega aquí. 571 00:27:25,640 --> 00:27:28,790 >> Pero entonces los encuentros de intérprete signo de interrogación cerca del soporte, 572 00:27:28,790 --> 00:27:30,320 por lo que todo se hace pensando. 573 00:27:30,320 --> 00:27:33,400 Ahora que escupe a ciegas las líneas del dos al siete, 574 00:27:33,400 --> 00:27:35,240 porque es sólo HTML puro. 575 00:27:35,240 --> 00:27:38,470 Obtiene a la línea ocho, y hace que misma magia nuevo-- abrir el archivo, 576 00:27:38,470 --> 00:27:41,460 el acaparamiento de los contenidos, y exigiéndoles o pegándolos 577 00:27:41,460 --> 00:27:42,480 en ese momento o no. 578 00:27:42,480 --> 00:27:44,210 >> Pero yo sólo aludía a un error. 579 00:27:44,210 --> 00:27:48,610 Este es un paso parcial hacia atrás, porque si nos fijamos en header.php, 580 00:27:48,610 --> 00:27:50,850 He especie de cortar una esquina. 581 00:27:50,850 --> 00:27:56,250 ¿Qué característica le doy hasta el fin para ganar esto mejor diseño discutible? 582 00:27:56,250 --> 00:27:57,305 ¿Sí? 583 00:27:57,305 --> 00:27:58,180 AUDIENCIA: [inaudible] 584 00:27:58,180 --> 00:28:00,570 DAVID MALAN: Sí, tipo de cortar una esquina no trivial. 585 00:28:00,570 --> 00:28:04,489 Usted ha señalado que lo que estaba cambiando fue el título, el número en el título, 586 00:28:04,489 --> 00:28:05,530 y el número en el H1. 587 00:28:05,530 --> 00:28:08,170 Así que mi solución fue, está bien, vamos a cambiar el nombre de la página, 588 00:28:08,170 --> 00:28:10,080 y no lidiar con eso problema alguno. 589 00:28:10,080 --> 00:28:12,130 Así que eso es un parcial de paso hacia atrás con seguridad. 590 00:28:12,130 --> 00:28:14,300 >> Pero lo que es digno de mención aquí es que lo que he hecho 591 00:28:14,300 --> 00:28:17,200 aparece como un factor de otro modo toda la cosa común. 592 00:28:17,200 --> 00:28:21,520 Y en footer.php, noto que factorizada fuera de todo eso, aunque sea menor, 593 00:28:21,520 --> 00:28:22,790 cosas comunes. 594 00:28:22,790 --> 00:28:26,070 Así que tengo que de alguna manera ahora podrán dar un paso más, y fijar 595 00:28:26,070 --> 00:28:27,160 que las cuestiones de título. 596 00:28:27,160 --> 00:28:28,180 Así que vamos a hacer eso. 597 00:28:28,180 --> 00:28:35,060 >> Déjame ir a mi segunda versión aquí, que, de nuevo, tiene los mismos archivos 598 00:28:35,060 --> 00:28:36,825 a excepción de una nueva adición. 599 00:28:36,825 --> 00:28:38,950 Y es un poco más detallado, pero vamos a ver si nos 600 00:28:38,950 --> 00:28:40,550 puede desmenuzar lo que está pasando aquí. 601 00:28:40,550 --> 00:28:45,370 Así que en lugar de exigir header.php y footer.php, 602 00:28:45,370 --> 00:28:50,180 Parece que estoy sólo requieren un file-- llamada, por supuesto, helpers.php. 603 00:28:50,180 --> 00:28:52,560 Y permítanme estipulo ahora, lo que hay dentro de helpers.php 604 00:28:52,560 --> 00:28:55,330 es sólo un montón de funciones que me escribió, al igual que antes. 605 00:28:55,330 --> 00:28:57,550 Pero lo llamé helpers.php. 606 00:28:57,550 --> 00:29:00,370 >> Ahora, aparentemente, en línea de tres y 10, estoy 607 00:29:00,370 --> 00:29:02,840 llamar dos functions-- render cabecera, render pie de página. 608 00:29:02,840 --> 00:29:05,040 Aquellos no vienen con PHP, escribí aquellos mí mismo. 609 00:29:05,040 --> 00:29:07,880 Y yo los puse en helpers.php. 610 00:29:07,880 --> 00:29:11,210 >> Ahora, sólo hemos visto esta sintaxis una vez, y fue muy breve. 611 00:29:11,210 --> 00:29:15,330 Pero esto es al parecer un argumento para hacer de cabecera, la función. 612 00:29:15,330 --> 00:29:16,450 ¿Por qué lo sé? 613 00:29:16,450 --> 00:29:18,522 Bueno aquí hay un cierre paren, he aquí un paren abierta. 614 00:29:18,522 --> 00:29:21,230 Y, por supuesto, al igual que en C, cualquier cosa entre los paréntesis 615 00:29:21,230 --> 00:29:23,350 es un input-- o un argumento de la función. 616 00:29:23,350 --> 00:29:26,710 >> ¿Cuál es el tipo de datos de este argumento, basándome en lo que he destacado? 617 00:29:26,710 --> 00:29:30,820 ¿Qué hacen los corchetes indicar, sobre la base de la semana pasada? 618 00:29:30,820 --> 00:29:33,390 Sí, es una array-- específicamente una matriz asociativa. 619 00:29:33,390 --> 00:29:35,700 Y esta sintaxis es cierto es un poco raro, 620 00:29:35,700 --> 00:29:38,860 pero esto es sólo pasando en un par de valores clave. 621 00:29:38,860 --> 00:29:43,530 La clave es, entre comillas título, y el valor es CS50. 622 00:29:43,530 --> 00:29:46,220 >> Si hubiéramos hecho esto en C, puede ser que en lugar 623 00:29:46,220 --> 00:29:49,400 mira más bién esto, simplemente entre comillas CS50-- 624 00:29:49,400 --> 00:29:52,460 o en realidad sería rizado llaves, o algo por el estilo en C, 625 00:29:52,460 --> 00:29:55,580 donde la clave es cero, y el valor es CS50. 626 00:29:55,580 --> 00:29:59,840 Pero, de nuevo, en PHP, aunque el sintaxis es, de nuevo, un poco raro, 627 00:29:59,840 --> 00:30:02,860 que le permite pasar de palabras en lugar de números 628 00:30:02,860 --> 00:30:05,120 asociar teclas con los valores. 629 00:30:05,120 --> 00:30:06,390 >> Entonces, ¿qué significa todo esto? 630 00:30:06,390 --> 00:30:09,750 Si entro en helpers.php, echemos un vistazo a esta función. 631 00:30:09,750 --> 00:30:13,620 renderHeader.php, en vez renderHeader es mi función, 632 00:30:13,620 --> 00:30:16,220 y sé que porque veo la palabra clave function aquí. 633 00:30:16,220 --> 00:30:19,450 Esto es nuevo desde C-- aparentemente toma un argumento llamado data-- 634 00:30:19,450 --> 00:30:22,400 pero podría haber llamado a este nada, pero lo llamé de datos, 635 00:30:22,400 --> 00:30:25,090 sólo para ser un poco clean-- y simplemente tomar una conjetura, especialmente 636 00:30:25,090 --> 00:30:28,173 si usted ha programado en alguna otra alto nivel de lenguaje de antes, algo 637 00:30:28,173 --> 00:30:29,820 por encima de C, conceptualmente. 638 00:30:29,820 --> 00:30:33,820 >> ¿Qué soporte abierto iguales corchete probablemente significa? 639 00:30:33,820 --> 00:30:35,540 O ¿qué puede significar? 640 00:30:35,540 --> 00:30:39,660 No hemos visto esto en C. Sí? 641 00:30:39,660 --> 00:30:40,480 >> Una matriz vacía. 642 00:30:40,480 --> 00:30:45,440 Específicamente, esto significa que si el usuario no llama renderHeader 643 00:30:45,440 --> 00:30:49,340 con un argumento, todavía voy tener una discusión llamada de datos, 644 00:30:49,340 --> 00:30:52,327 pero su valor por defecto es va a ser una matriz vacía. 645 00:30:52,327 --> 00:30:53,660 Así que es sólo un bonito conveniencia. 646 00:30:53,660 --> 00:30:56,493 Yo no tengo que gritar en el usuario, o decir que utilizó mi función equivocada. 647 00:30:56,493 --> 00:30:59,849 Yo sólo puedo dar al usuario una forma predeterminada valor, si no sobre todo importa. 648 00:30:59,849 --> 00:31:01,890 Ahora esta función, estoy va a agitar las manos en. 649 00:31:01,890 --> 00:31:07,620 Pero esta función extracto permite que pasemos estas variables en los datos 650 00:31:07,620 --> 00:31:10,360 en header.php de la siguiente manera. 651 00:31:10,360 --> 00:31:13,100 Y esta es la última pieza, Creo que, de la sintaxis funky. 652 00:31:13,100 --> 00:31:15,860 Aquí está mi nueva versión de header.php-- que 653 00:31:15,860 --> 00:31:20,140 solía decir, literalmente, abierta título soporte CS50, y eso fue todo. 654 00:31:20,140 --> 00:31:21,766 Y lo mismo para el H1. 655 00:31:21,766 --> 00:31:24,310 >> Ahora, al parecer, dice algo bastante cobarde. 656 00:31:24,310 --> 00:31:28,030 Y permítanme simplificar este por un momento de la siguiente manera. 657 00:31:28,030 --> 00:31:31,020 Esto es lo que tengo cambiado mi título de ser. 658 00:31:31,020 --> 00:31:35,140 Sin embargo, se está haciendo un poco fea a los soportes permanentemente abiertos con PHP, 659 00:31:35,140 --> 00:31:36,610 y luego usar la función de impresión. 660 00:31:36,610 --> 00:31:40,810 Resulta que PHP tiene una taquigrafía notación para esto, que es justo 661 00:31:40,810 --> 00:31:45,050 un signo igual, que es técnicamente una función llamada eco en lugar de impresión, 662 00:31:45,050 --> 00:31:46,800 pero es la misma cosa, con eficacia. 663 00:31:46,800 --> 00:31:48,440 >> Eso sólo se ve mejor. 664 00:31:48,440 --> 00:31:50,510 Es sólo una sintáctica azúcar, si se quiere, 665 00:31:50,510 --> 00:31:52,260 eso hace que mi código de mirar un poco mejor. 666 00:31:52,260 --> 00:31:54,010 Pero resulta, y vamos a ver esto de nuevo 667 00:31:54,010 --> 00:31:57,420 en poco tiempo, tenemos que llamar a este molestamente función a largo llama 668 00:31:57,420 --> 00:32:00,582 HTML caracteres especiales en PHP, porque resulta que 669 00:32:00,582 --> 00:32:02,790 hay ciertos insumos que el usuario podría darnos, 670 00:32:02,790 --> 00:32:05,160 o que los usuarios nos pueden dar, que van a romper nuestro sitio. 671 00:32:05,160 --> 00:32:07,035 Pero vamos a ver que el próximo semana con JavaScript. 672 00:32:07,035 --> 00:32:10,740 Pero, por ahora, sólo sé que este archivo, headers.php, simplemente 673 00:32:10,740 --> 00:32:13,040 toma el título que Pasé en, que hacen 674 00:32:13,040 --> 00:32:17,380 asegurarse de que es seguro para ser inyectada en una web página, y lo escupe como mi título 675 00:32:17,380 --> 00:32:18,640 y como mi H1. 676 00:32:18,640 --> 00:32:24,440 Así que si entro en esta versión ahora, notar que las conferencias tiene su título de nuevo, 677 00:32:24,440 --> 00:32:28,630 semana cero tiene su título de nuevo, y de hecho, el HTML estoy generando 678 00:32:28,630 --> 00:32:32,110 es idéntico a lo que mi primera versión era-- excepción de mi espacio en blanco, 679 00:32:32,110 --> 00:32:35,150 porque yo he empezado a formatear mi código un poco diferente. 680 00:32:35,150 --> 00:32:38,082 Pero he generado todo el código que me importa. 681 00:32:38,082 --> 00:32:39,790 Así que permítanme hacer una pausa para un momento y ver 682 00:32:39,790 --> 00:32:42,200 si hay alguna pregunta o confusión que he creado. 683 00:32:42,200 --> 00:32:44,970 684 00:32:44,970 --> 00:32:48,150 Muy bien, así que vamos a torcer un poco más difícil aquí 685 00:32:48,150 --> 00:32:51,500 para ver si hay una oportunidad de mejora. 686 00:32:51,500 --> 00:32:56,130 Helpers.php también tenía este función, llamada renderFooter. 687 00:32:56,130 --> 00:32:59,652 Y lo que es digno de mención acerca de renderHeader, y renderFooter? 688 00:32:59,652 --> 00:33:02,610 Y de nuevo, para los propósitos de hoy, saber que la función extracto es sólo 689 00:33:02,610 --> 00:33:08,280 mi manera de pasar argumentos en header.php y footer.php. 690 00:33:08,280 --> 00:33:10,900 691 00:33:10,900 --> 00:33:11,780 >> ¿Apenado? 692 00:33:11,780 --> 00:33:13,056 >> AUDIENCIA: [inaudible] 693 00:33:13,056 --> 00:33:15,180 DAVID MALAN: Sí, yo sólo cambiaron la requieren línea. 694 00:33:15,180 --> 00:33:19,410 Así que, literalmente, he cometido el pecado de copiar y pegar, una vez más. 695 00:33:19,410 --> 00:33:21,920 No es un número enorme de líneas, pero vienen en-- 696 00:33:21,920 --> 00:33:25,220 si estoy copiando y pegando todo sólo para cambiar una pequeña palabra, 697 00:33:25,220 --> 00:33:28,610 y la pequeña palabra que señala Alan out es pie de página aquí, frente a la cabecera aquí. 698 00:33:28,610 --> 00:33:30,670 De lo contrario, todo es idéntica, a excepción de, 699 00:33:30,670 --> 00:33:32,180 por supuesto, los nombres de la función. 700 00:33:32,180 --> 00:33:33,690 Entonces, ¿qué podríamos hacer mejor? 701 00:33:33,690 --> 00:33:39,810 >> Pues déjame abro esta versión aquí, por lo que en helpers.php, 702 00:33:39,810 --> 00:33:42,300 ¿por qué no acaba de obtener un poco más inteligente sobre esto? 703 00:33:42,300 --> 00:33:46,410 Escribir un poco más complicado código, pero lo llaman render? 704 00:33:46,410 --> 00:33:48,470 Así que ¿qué he cambiado fundamentalmente? 705 00:33:48,470 --> 00:33:51,770 >> Se necesita un argumento ahora-- dos argumentos, los datos todavía. 706 00:33:51,770 --> 00:33:54,444 Y entonces, ¿qué es lo primero nombre probablemente se utiliza para, 707 00:33:54,444 --> 00:33:55,860 sobre la base de lo que estás leyendo aquí? 708 00:33:55,860 --> 00:33:58,452 Incluso si algunos de la sintaxis es todavía nuevo. 709 00:33:58,452 --> 00:33:59,660 ¿Qué es el dólar plantilla de señal? 710 00:33:59,660 --> 00:34:02,400 711 00:34:02,400 --> 00:34:03,016 >> ¿Apenado? 712 00:34:03,016 --> 00:34:03,710 >> AUDIENCIA: Encabezado o pie de página. 713 00:34:03,710 --> 00:34:04,510 >> DAVID MALAN: Encabezado o pie de página. 714 00:34:04,510 --> 00:34:07,134 Así que al parecer, decidí que si lo único que está cambiando 715 00:34:07,134 --> 00:34:10,159 es lo que la plantilla que quiero a print-- y por la plantilla 716 00:34:10,159 --> 00:34:13,100 Quiero decir que es modelo para código que quiero de salida, 717 00:34:13,100 --> 00:34:16,350 pero quiero conectar de alguna values-- por lo que si es sólo la cabecera 718 00:34:16,350 --> 00:34:20,440 o pie de página, ¿por qué no parametrizar eso y llamar el signo argumento dólar 719 00:34:20,440 --> 00:34:21,409 ¿modelo? 720 00:34:21,409 --> 00:34:26,250 Y luego esta sintaxis cobarde me permite para crear un camino en una variable aquí. 721 00:34:26,250 --> 00:34:28,030 >> Así senda signo del dólar es una variable. 722 00:34:28,030 --> 00:34:31,120 ¿Qué significa esta sintaxis hacer, si está familiarizado? 723 00:34:31,120 --> 00:34:32,512 ¿Sí? 724 00:34:32,512 --> 00:34:34,065 >> AUDIENCIA: [inaudible] 725 00:34:34,065 --> 00:34:34,940 DAVID MALAN: Exactamente. 726 00:34:34,940 --> 00:34:37,600 Si la plantilla es, entre comillas, cabecera, o si la plantilla es, 727 00:34:37,600 --> 00:34:41,170 entre comillas, pie de página, esa línea no que yo he destacado, la línea ocho, 728 00:34:41,170 --> 00:34:46,330 es simplemente tomar ese nombre, como cabecera, y concatenar con PHP punto. 729 00:34:46,330 --> 00:34:49,750 Así que no teníamos este operador en C. Este operador punto es 730 00:34:49,750 --> 00:34:54,520 una cosa increíble en PHP-- si estás familiarizado con JavaScript o Java, 731 00:34:54,520 --> 00:34:56,949 puede utilizar el signo más firmar hacer concatenación. 732 00:34:56,949 --> 00:34:59,974 >> En C, que es un dolor en el neck-- y lo siento mucho, en el set-p seis, 733 00:34:59,974 --> 00:35:02,390 usted va a tener que hacer esto-- es un dolor en el cuello 734 00:35:02,390 --> 00:35:03,930 para concatenar cadenas. 735 00:35:03,930 --> 00:35:04,670 ¿Por qué? 736 00:35:04,670 --> 00:35:06,580 Bueno, porque si tienes una cadena que es este largo, 737 00:35:06,580 --> 00:35:09,538 y otra cadena que es este largo, no se puede simplemente conectarlos juntos. 738 00:35:09,538 --> 00:35:11,070 ¿Qué lugar tiene que hacer en C? 739 00:35:11,070 --> 00:35:11,680 ¿Sí? 740 00:35:11,680 --> 00:35:12,380 >> AUDIENCIA: [inaudible] 741 00:35:12,380 --> 00:35:15,090 >> DAVID MALAN: Tienes que malloc memoria, o utiliza una matriz en la pila. 742 00:35:15,090 --> 00:35:17,214 Y de hecho tienes que hacer esa serie lo suficientemente grande 743 00:35:17,214 --> 00:35:20,940 para adaptarse a esto además de esto, además de la barra invertida cero. 744 00:35:20,940 --> 00:35:24,994 Entonces concatenar juntos utilizando revuelva gato o de forma manual con un bucle for, 745 00:35:24,994 --> 00:35:26,160 o cualquier número de técnicas. 746 00:35:26,160 --> 00:35:27,760 Y te mostramos un par de p-set seis. 747 00:35:27,760 --> 00:35:29,080 >> Es un dolor en el cuello. 748 00:35:29,080 --> 00:35:34,190 Y esto es realmente lo que quiero decir acerca de este frente esto-- como C en comparación con PHP. 749 00:35:34,190 --> 00:35:36,870 Usted acaba de conseguir mucho más funcionalidad de forma gratuita, 750 00:35:36,870 --> 00:35:39,030 de modo que usted pueda centrarse, idealmente, en la diversión 751 00:35:39,030 --> 00:35:41,190 parte de codificación, el proyecto que desea resolver, 752 00:35:41,190 --> 00:35:43,190 más que el bajo nivel de minucias. 753 00:35:43,190 --> 00:35:49,840 >> Así que esto sólo genera header.php o footer.php basado en cuál me llamo. 754 00:35:49,840 --> 00:35:52,280 Y de hecho si me voy en index.php, previo aviso 755 00:35:52,280 --> 00:35:56,230 todo lo que se transformados, en lugar de llamando render encabezado o pie de página render, 756 00:35:56,230 --> 00:36:00,230 Voy a llamar a rendir, seguido por el nombre de la plantilla que yo quiero hacer. 757 00:36:00,230 --> 00:36:02,370 Y verás esto, también, en el problema de establecer siete, 758 00:36:02,370 --> 00:36:05,530 por el que permitimos que le permite utilizar el misma función para hacer racimos 759 00:36:05,530 --> 00:36:07,550 y racimos de diferentes páginas web. 760 00:36:07,550 --> 00:36:10,570 >> Así que en lugar de insistir demasiado mucho más en esos details-- 761 00:36:10,570 --> 00:36:13,210 que verá de nuevo en conjunto de problemas seven-- veamos 762 00:36:13,210 --> 00:36:16,850 en ahora el comienzo de una solución de a un problema más interesante. 763 00:36:16,850 --> 00:36:19,310 Hasta aquí, nada que hemos hecho tiene datos guardados. 764 00:36:19,310 --> 00:36:22,920 De hecho, la única vez que he jamás salvó algo que hemos hecho en esta clase 765 00:36:22,920 --> 00:36:31,030 es cuando tuvimos una demostración muy simple rato espalda, por el que se utilizó el archivo IO en C, 766 00:36:31,030 --> 00:36:34,520 y creo que he escrito en mi nombre, y El nombre de Hannah, y el nombre de María, 767 00:36:34,520 --> 00:36:37,610 o tal vez el nombre de Andy, y entonces nos ahorramos un file-- CSV 768 00:36:37,610 --> 00:36:39,430 separados por comas archivo de valores. 769 00:36:39,430 --> 00:36:43,530 >> Y utilizamos fopen-- Creo utilizamos fprintf por lo que recuerdo, 770 00:36:43,530 --> 00:36:44,910 y nos ahorramos un archivo. 771 00:36:44,910 --> 00:36:46,920 Ahora, que es el más simple forma de una base de datos. 772 00:36:46,920 --> 00:36:50,230 Si usted quiere hacer un sitio web para la Programa Frosh mensajes instantáneos, mediante el cual estudiantes de primer año 773 00:36:50,230 --> 00:36:53,390 puede inscribirse en un deporte, lo ideal querer hacer algo con esos datos. 774 00:36:53,390 --> 00:36:55,370 La semana pasada, no hicimos nada con el data-- que acabamos de decir, 775 00:36:55,370 --> 00:36:56,661 está registrado, no realmente. 776 00:36:56,661 --> 00:36:58,950 O tal vez me escrito el supervisor, y eso fue todo. 777 00:36:58,950 --> 00:37:02,110 >> Pero sería bueno si pudiera dar ese supervisor un archivo CSV, 778 00:37:02,110 --> 00:37:03,340 como un archivo de Excel. 779 00:37:03,340 --> 00:37:05,090 O mejor aún, que lo haría sería bueno si pudiera 780 00:37:05,090 --> 00:37:08,830 poner los nombres de los usuarios y dorm nombres y todo eso 781 00:37:08,830 --> 00:37:11,740 en una base de datos que Sólo vive para siempre, 782 00:37:11,740 --> 00:37:13,530 hasta que yo decida eliminar los datos. 783 00:37:13,530 --> 00:37:15,645 Una base de datos que permite mí para consultar información. 784 00:37:15,645 --> 00:37:18,070 Y de hecho, eso es lo que es una base de datos. 785 00:37:18,070 --> 00:37:20,470 >> Introducimos hoy, y la semana que viene, también, una tecnología 786 00:37:20,470 --> 00:37:25,020 llamada SQL-- una consulta estructurado El lenguaje, que es otra lengua. 787 00:37:25,020 --> 00:37:28,750 Básicamente se trata de una programación idioma, pero para bases de datos. 788 00:37:28,750 --> 00:37:31,760 Y una base de datos por ahora, sólo pensar como una versión super lujoso 789 00:37:31,760 --> 00:37:35,710 de Microsoft Excel o Google Las hojas de cálculo, o números de Apple. 790 00:37:35,710 --> 00:37:39,950 Por lo general es un programa que permite que le permite almacenar un montón de datos 791 00:37:39,950 --> 00:37:43,960 en filas y columnas, bastante como usted puede ser que en Excel. 792 00:37:43,960 --> 00:37:47,100 >> Pero lo que es bueno, especialmente si no estamos muy familiarizados con Excel, 793 00:37:47,100 --> 00:37:52,040 lo SQL le permite hacer es esta consulta información escribiendo líneas de código 794 00:37:52,040 --> 00:37:55,220 donde se puede, incluso si su base de datos tiene un millón de filas en el mismo, 795 00:37:55,220 --> 00:37:57,190 se pueden encontrar cosas muy rápido. 796 00:37:57,190 --> 00:37:59,950 De hecho, Excel es particularmente malo en grandes conjuntos de datos. 797 00:37:59,950 --> 00:38:02,460 Y de hecho, hasta unos pocos Hace años, resultó 798 00:38:02,460 --> 00:38:08,890 Excel sólo permitirá almacenar hasta 65.535 filas de data-- que 799 00:38:08,890 --> 00:38:12,020 suena como mucho, pero al tiempo yo era un estudiante de posgrado, 800 00:38:12,020 --> 00:38:14,920 y recuerdo tropezar esto porque me estaba generando 801 00:38:14,920 --> 00:38:17,900 Archivos CSV para mi investigación y me querido analizar de forma rápida 802 00:38:17,900 --> 00:38:19,530 con sólo abrir en Excel. 803 00:38:19,530 --> 00:38:23,730 Por supuesto, mi equipo simplemente se estrelló, porque tenía más de 65.000 filas. 804 00:38:23,730 --> 00:38:27,210 >> Pero ¿de dónde la 65535 viene? 805 00:38:27,210 --> 00:38:29,670 ¿Qué estaba haciendo Microsoft, es de suponer? 806 00:38:29,670 --> 00:38:32,430 Si eres bueno con las potencias de dos? 807 00:38:32,430 --> 00:38:37,160 Sí, ellos estaban usando una de 16 bits valor para representar el número de fila. 808 00:38:37,160 --> 00:38:41,310 Y dos a 16 es 65,536-- menos uno, porque si 809 00:38:41,310 --> 00:38:45,414 índice cero significa que fue el mayor número de filas que pudiera tener. 810 00:38:45,414 --> 00:38:46,830 Y fue una decisión de diseño. 811 00:38:46,830 --> 00:38:52,760 Al ahorrar 16 bits, me limitan 16.000 filas, en lugar de 4 mil millones, 812 00:38:52,760 --> 00:38:54,322 que podría haber tenido idealmente. 813 00:38:54,322 --> 00:38:57,030 Pero por ahora, vamos a introducir esta más en un contexto web. 814 00:38:57,030 --> 00:39:00,390 Y lo que es bueno de SQL es que incluso aunque es bastante potente y bastante 815 00:39:00,390 --> 00:39:04,050 sofisticado, que realmente se reduce hasta cuatro operaciones fundamentales, cuatro 816 00:39:04,050 --> 00:39:08,060 funciones clave, si Voluntad-- seleccione, para la recuperación de datos, la búsqueda 817 00:39:08,060 --> 00:39:12,510 para los datos; borrar o eliminar datos; inserte para añadir filas a la base de datos; 818 00:39:12,510 --> 00:39:13,410 y actualización. 819 00:39:13,410 --> 00:39:17,010 Así que si alguna vez has usado Google Hojas de cálculo, números de Apple, Microsoft 820 00:39:17,010 --> 00:39:19,310 Excel, se ha ejecutado, lo más probable, todo 821 00:39:19,310 --> 00:39:22,530 de estas operaciones como un ser humano por simplemente usando el teclado y mouse-- 822 00:39:22,530 --> 00:39:26,050 la inserción de datos, el uso de sus ojos para seleccionar o buscar datos, 823 00:39:26,050 --> 00:39:28,360 o los datos de actualización o supresión de datos. 824 00:39:28,360 --> 00:39:29,870 >> Entonces, ¿qué significa esto? 825 00:39:29,870 --> 00:39:34,300 Bueno, pre-instalado en CS50 IDE es un programa llamado MySQL. 826 00:39:34,300 --> 00:39:37,050 Es una, libre de código abierto base de datos que es súper popular. 827 00:39:37,050 --> 00:39:40,590 Facebook, por ejemplo, la utiliza para este día, entre otras herramientas que utilizan. 828 00:39:40,590 --> 00:39:44,300 Y un montón de sitios web muy populares utilice en gran parte porque es rápido, 829 00:39:44,300 --> 00:39:45,230 y porque es gratis. 830 00:39:45,230 --> 00:39:46,820 Aunque sin duda existen alternativas. 831 00:39:46,820 --> 00:39:49,580 Y algunos de ustedes podrían incursionar con alternativas para los proyectos finales. 832 00:39:49,580 --> 00:39:55,330 >> Esta es una captura de pantalla, por su parte, de una herramienta basada en la web llamada phpMyAdmin. 833 00:39:55,330 --> 00:39:58,260 Es una coincidencia que esta herramienta basada en la web es también 834 00:39:58,260 --> 00:40:01,720 escrito en un lenguaje, PHP, pero, ¿qué se supone que debe hacer 835 00:40:01,720 --> 00:40:04,620 es darnos una basada en la web interfaz a una base de datos. 836 00:40:04,620 --> 00:40:07,180 Debido a que MySQL es típicamente algo, históricamente, se 837 00:40:07,180 --> 00:40:08,770 sería interactuar con solamente con una línea de comandos. 838 00:40:08,770 --> 00:40:10,811 Y sería estupendo molesto y arcana tener 839 00:40:10,811 --> 00:40:14,487 teclear comandos de texto para seleccionar datos, insertar datos y eliminar datos. 840 00:40:14,487 --> 00:40:16,820 Así que algunas personas en la internet escribió un programa basado en la web 841 00:40:16,820 --> 00:40:18,900 que sólo háganoslo gestionamos los datos en nuestra base de datos. 842 00:40:18,900 --> 00:40:23,040 Es como hacer doble clic en Excel y que ejecuta una versión basada en la web de la misma. 843 00:40:23,040 --> 00:40:26,370 >> ¿Y qué vas a utilizar esto para en última instancia, la próxima semana, no en p-set de seis, 844 00:40:26,370 --> 00:40:28,680 sino que es para construir algo llamada CS50 Finanzas, que 845 00:40:28,680 --> 00:40:32,630 va a tener una base de datos usuarios, con los nombres de usuario y contraseñas, 846 00:40:32,630 --> 00:40:34,860 cantidades de dinero que tienen en sus cuentas bancarias. 847 00:40:34,860 --> 00:40:37,280 Va a ser algo que se utiliza para almacenar 848 00:40:37,280 --> 00:40:39,910 los símbolos y las cantidades de las poblaciones que los usuarios de 849 00:40:39,910 --> 00:40:42,567 han comprado usando virtuales dólares que le vas a dar a ellos. 850 00:40:42,567 --> 00:40:44,900 Y que va a permitir a los usuarios para registrarse en su sitio, 851 00:40:44,900 --> 00:40:47,190 por lo que incluso sus amigos puede sintonizar a su sitio web 852 00:40:47,190 --> 00:40:49,360 y en realidad inscribirse, tienes que entrar y jugar 853 00:40:49,360 --> 00:40:52,807 y tratar de encontrar fallos en su código, y tratar de encontrar errores en su sitio web. 854 00:40:52,807 --> 00:40:55,390 Y ellos simplemente van a registrar por añadiendo a sí mismos, de manera efectiva, 855 00:40:55,390 --> 00:40:58,120 a través de código que se escribe en la base de datos. 856 00:40:58,120 --> 00:41:02,470 >> Por ejemplo, esta es una captura de pantalla rápida de lo que una base de datos podría ser similar. 857 00:41:02,470 --> 00:41:05,190 Esto era de una de solutions-- del año pasado 858 00:41:05,190 --> 00:41:07,760 esto es como un mini Excel presentar, almacenada en nuestra base de datos, 859 00:41:07,760 --> 00:41:09,950 almacenada en este software llamado MySQL. 860 00:41:09,950 --> 00:41:13,260 Por el lado de la mano izquierda, tengo aparentemente dado a cada usuario un número único. 861 00:41:13,260 --> 00:41:16,200 En la segunda columna, me he dado todos un usuario nombre-- mi propia 862 00:41:16,200 --> 00:41:16,880 entre ellos. 863 00:41:16,880 --> 00:41:21,430 Y en el lado derecho, Yo les he dado un hash. 864 00:41:21,430 --> 00:41:26,760 >> Ahora bien, esto es en realidad una contraseña, pero no es una contraseña de texto sin formato. 865 00:41:26,760 --> 00:41:30,160 Es una contraseña encriptada, si se quiere, o un hash de la contraseña. 866 00:41:30,160 --> 00:41:32,000 ¿Qué vamos a volver al poco tiempo. 867 00:41:32,000 --> 00:41:34,340 >> Pero si alguna vez has leído un artículo sobre cómo 868 00:41:34,340 --> 00:41:37,950 su contraseña en algún banco o alguna página web podría haber sido comprometida, 869 00:41:37,950 --> 00:41:39,630 por lo general, puede significar una de dos cosas. 870 00:41:39,630 --> 00:41:42,780 Así que esto es sólo un extracto de seis usuarios. 871 00:41:42,780 --> 00:41:45,460 Todos ustedes pueden ahora calcular a cabo a través de la piratería o formación de grietas 872 00:41:45,460 --> 00:41:47,690 lo contraseñas nuestros seis de la gente son. 873 00:41:47,690 --> 00:41:49,720 Pero si alguna vez has conseguido una alerta o una disculpa 874 00:41:49,720 --> 00:41:52,803 de una empresa o sitio web refrán, lo siento, un hacker entró en nuestra base de datos, 875 00:41:52,803 --> 00:41:56,360 probablemente debería cambiar su contraseña, lo que podría significar eso? 876 00:41:56,360 --> 00:41:59,670 >> Bueno, uno, podría significar la empresa ha sido más estúpido, 877 00:41:59,670 --> 00:42:03,630 y ha sido el almacenamiento de la contraseña en una columna de este tipo, sin cifrar. 878 00:42:03,630 --> 00:42:05,840 Lo que significa adversario, que robó la base de datos, 879 00:42:05,840 --> 00:42:07,440 sabe, literalmente, su nombre de usuario y contraseña. 880 00:42:07,440 --> 00:42:08,960 Ese es el peor escenario posible. 881 00:42:08,960 --> 00:42:11,710 Y como se verá en el p-set siete, tan fácil de evitar. 882 00:42:11,710 --> 00:42:15,624 No hay absolutamente ninguna excusa para que forma de estupidez en el Internet de hoy. 883 00:42:15,624 --> 00:42:18,540 Dos-- y lo encontraremos algunos artículos para dar testimonio del hecho de que esto todavía 884 00:42:18,540 --> 00:42:21,710 sucede, nonetheless-- dos, tal vez el adversario 885 00:42:21,710 --> 00:42:23,840 robó esta versión de la base de datos. 886 00:42:23,840 --> 00:42:27,110 Que todavía está un poco mal, porque ahora ellos saben que yo tengo seis clientes, 887 00:42:27,110 --> 00:42:29,270 Conozco los nombres de usuario de esos seis clientes, 888 00:42:29,270 --> 00:42:32,910 y sé que el cifrado versiones, o las versiones hash, 889 00:42:32,910 --> 00:42:34,340 de contraseñas esos seis de los clientes. 890 00:42:34,340 --> 00:42:37,010 Pero cualquiera de ustedes que podría haber hecho [? Hacker 2?] 891 00:42:37,010 --> 00:42:41,150 donde agrietado contraseñas, o tomaste Una mirada a esa versión del problema 892 00:42:41,150 --> 00:42:46,280 set, ¿por qué es todavía un poco preocupante si el adversario sabe su picadillo 893 00:42:46,280 --> 00:42:47,435 contraseñas? 894 00:42:47,435 --> 00:42:49,732 >> AUDIENCIA: Debido a que pudieron entrar en todo el diccionario 895 00:42:49,732 --> 00:42:50,690 en la función de hash. 896 00:42:50,690 --> 00:42:54,520 Y si la contraseña es un diccionario palabra, [? que sólo puede match--?] 897 00:42:54,520 --> 00:42:57,640 >> DAVID MALAN: Exactamente, el adversario puede simplemente escribir código, al igual que algunos de ustedes 898 00:42:57,640 --> 00:43:00,526 hizo por [? Hacker?] 2, por el que usted iterar sobre 899 00:43:00,526 --> 00:43:03,400 todas las palabras en el diccionario, o todas las posibles combinaciones de A 900 00:43:03,400 --> 00:43:06,610 a la Z y uno a través nine-- que suena a mucho, y lo es. 901 00:43:06,610 --> 00:43:08,361 Pero para un equipo, es bastante maldito rápido. 902 00:43:08,361 --> 00:43:10,610 Y, de hecho, esa fue la Punto de [? Hacker 2,?] Era 903 00:43:10,610 --> 00:43:12,540 tomar las cosas que se ve literalmente así, 904 00:43:12,540 --> 00:43:14,900 y técnicas de ingeniería inversa lo que realmente era. 905 00:43:14,900 --> 00:43:17,270 >> Así que vamos a ver cómo podemos almacenar esta manera más eficiente. 906 00:43:17,270 --> 00:43:20,210 Resulta que, por suerte en MySQL, no van a ser los tipos de datos. 907 00:43:20,210 --> 00:43:22,800 Y una de las partes divertidas sobre diseño de base de datos, para ser honesto, 908 00:43:22,800 --> 00:43:25,810 es en realidad decidir por sí mismo ¿cómo debe representar los datos? 909 00:43:25,810 --> 00:43:29,630 En caso de que representan un número de teléfono como un int, al igual que un número grande, o un largo? 910 00:43:29,630 --> 00:43:31,630 ¿O es que en realidad lo hace como una secuencia de caracteres? 911 00:43:31,630 --> 00:43:33,780 Y no puede ser muy impactos no triviales de este. 912 00:43:33,780 --> 00:43:36,714 >> De hecho, una de las primeros, historias divertidas germano 913 00:43:36,714 --> 00:43:39,880 es cuando Mark Zuckerberg estaba construyendo Facebook, que fue escrito originalmente en, 914 00:43:39,880 --> 00:43:42,300 y aún así está escrito principalmente en PHP. 915 00:43:42,300 --> 00:43:45,400 Y uno de los mayores retos se enfrentaron desde el principio fue la ampliación. 916 00:43:45,400 --> 00:43:48,820 Cuando siguieron añadiendo escuela después la escuela después de la escuela, que yo sepa, 917 00:43:48,820 --> 00:43:51,639 una de las soluciones originales era esencialmente para copiar y pegar 918 00:43:51,639 --> 00:43:53,430 algunas de las bases de datos y una parte del código, 919 00:43:53,430 --> 00:43:55,346 de manera que era Harvard que se ejecuta en su propio servidor, 920 00:43:55,346 --> 00:43:56,995 y el MIT se ejecuta en su propio servidor. 921 00:43:56,995 --> 00:43:59,120 Y esta era la razón, para algunos de ustedes que puedan recordar, 922 00:43:59,120 --> 00:44:01,510 no se podía tener amigos en otras redes. 923 00:44:01,510 --> 00:44:05,050 >> Es probable que no tiene amigos en MIT o Harvard hace 10 años más o menos, 924 00:44:05,050 --> 00:44:07,467 pero no se podía abarcar redes por parte esa razón. 925 00:44:07,467 --> 00:44:10,550 Y uno de los mayores retos para Mark y para empresas como Facebook 926 00:44:10,550 --> 00:44:13,460 es en realidad el manejo de cientos y miles y millones 927 00:44:13,460 --> 00:44:14,460 de solicitudes por segundo. 928 00:44:14,460 --> 00:44:16,501 Así las cosas vamos a empezar hablando de esta semana 929 00:44:16,501 --> 00:44:19,860 son realmente va a ser afín a escribir buen software, y popularmente 930 00:44:19,860 --> 00:44:23,040 herramientas exitosas que puede manejar una gran cantidad de usuarios. 931 00:44:23,040 --> 00:44:25,460 >> Así que vamos a hablar de las cosas como la indexación y búsqueda, 932 00:44:25,460 --> 00:44:26,910 pero eso es todo por hoy. 933 00:44:26,910 --> 00:44:28,780 Veremos por más el miércoles ti. 934 00:44:28,780 --> 00:44:31,780 935 00:44:31,780 --> 00:44:33,902 >> [MÚSICA - TEMA "Seinfeld"] 936 00:44:33,902 --> 00:44:35,943 DAVID MALAN: Usted puede a , y restar de ella. 937 00:44:35,943 --> 00:44:38,859 Y usted no tiene que pegarse con una cierta cantidad predeterminada de memoria. 938 00:44:38,859 --> 00:44:40,580 Bueno, ¿qué es eso va a llamar? 939 00:44:40,580 --> 00:44:42,369 >> ALTAVOZ 1: Bueno, ¿qué está pasando? 940 00:44:42,369 --> 00:44:43,535 ALTAVOZ 2: ¿Qué quieres decir? 941 00:44:43,535 --> 00:44:44,451 Él está dando una conferencia. 942 00:44:44,451 --> 00:44:47,650 DAVID MALAN: Y podemos utilizar un función llamada malloc a memory-- 943 00:44:47,650 --> 00:44:50,050 >> ALTAVOZ 1: ¿Por qué no se están moviendo sus brazos? 944 00:44:50,050 --> 00:44:52,450 >> ALTAVOZ 2: Bueno Eso es-- ya sabes, eso es normal. 945 00:44:52,450 --> 00:44:57,162 Es igual que él acaba de grandes salchichas colgando allí. 946 00:44:57,162 --> 00:44:59,040 >> ALTAVOZ 1: Eso es normal? 947 00:44:59,040 --> 00:45:03,096 >> ALTAVOZ 2: Sí, creo que simplemente asumir que accidentalmente 948 00:45:03,096 --> 00:45:06,840 reemplazado su desodorante con superglue. 949 00:45:06,840 --> 00:45:07,608